8. Pipe 管道元素
8.1 元素定义
Pipe管道元素是用来描述现实生产运作系统中的连续流体的转运装置。它将连续流体的存贮设备(Tank元素)、处理设备(Processor元素)连结成化工、油气行业中的管网生产系统。一个管道有一个输入端、一个输出端,流体在管道中的输送是单向的,即从输入端流向输出端。在勾画管道几何形状时,用户在模型布局区域鼠标左键点击的第一个点即为管道的输入端,经过若干段管道路径的勾画,最后点击鼠标右键结束管道勾画时的点为管道的输出端。
虽然管道只有一个输入端和一个输出端,但通过使用流程规则,它可以一次性从多个输入源同时输入流体,也可以一次性向多个目的地同时输出流体。在模型的仿真运行过程中Pipe管道元素具有多个不同的形态:等待流体输入的空闲状态、输送状态、故障状态、维护状态、输出阻塞状态等等。
8.2 通用选项卡
在模型结构树上,鼠标双击Pipe管道元素节点,系统弹出Pipe元素属性对话框如下,缺省的状态下,系统首先展示出的是“通用”选项卡的属性界面。它有两个流程逻辑定义按钮和两个行为逻辑定义按钮。

- 属性参数
如图,从左至右,Pipe管道元素“通用”选项卡中的属性参数有:初始流体、管道容量、管道额定流速。
- fill_from 流程逻辑
“fill_from”按钮下附着的流程逻辑代码,描述了该Pipe元素中转运的连续流体来源逻辑。如前所述,“流程逻辑”定义的具体内容,就是由用户使用计算机程序代码(VBS语言)调用系统的“流程规则语句”代码构成。这里为定义Pipe元素的流体来源逻辑可使用多个“流程规则语句”语法如下:
- flow_from = array(location1, v1, location2, v2, location3, v3…)
这条规则语句的涵义就是从多个输入源输入流体到当前的Pipe管道元素中。这里的locationi就是流程模型中“Tank储罐元素”、“Pipe管道元素”、“Processor处理器”元素、“Fluid元素”节点的名称,代表的第i个输入源;vi即是从第i个输入源输入流体的速度。
如果输入源是Fluid元素,则要求该Fluid是“Passive”类型流体元素。
建模时用户可以使用该规则语句为Pipe元素设定多个如果输入源,在模型仿真运行时,系统会实时依次检测输入源列表中的各个元素可供输入的元素,如该元素可提供输入,从该元素获得输入量不超过vi,且累计总量不超过管道的额定流速。
- connect_with = array(location1, location2, location3…)
这条规则语句的涵义就是从多个输入源输入流体到当前的Pipe管道元素中。这里的locationi就是流程模型中“Tank储罐元素”、“Pipe管道元素”、“Processor处理器”元素、“Fluid元素”节点的名称,代表的第i个输入源。
使用该规则语句为Pipe元素设定多个如果输入源,在模型仿真运行时,系统会实时依次检测输入源列表中的各个元素可供输入的元素,每找到一个,总是在累计总量不超过管道的额定流速的前提下,尽可能多的从该输入源获得输入量。
- flow_to 流程逻辑
“flow_to”按钮下附着的流程逻辑代码,描述了该Pipe元素将管道内的流体运往下一个目的地输送逻辑。如前所述,“流程逻辑”定义的具体内容,就是由用户使用计算机程序代码(VBS语言)调用系统的“流程规则语句”代码构成。Pipe元素建立输送逻辑的“流程规则语句”语法如下:
- flow_to = array(location1, v1, location2, v2, location3, v3, …)
这条规则语句的涵义就是将管道内的流体向多个目的地输送。这里的locationi就是流程模型中“Tank储罐元素”、“Pipe管道元素”、“Processor处理器”元素、“ship”元素节点的名称,代表的第i个输出目的地;vi是向第i个目的地输送流体的速度。
- connect_with = array(location1, location2, location3…)
这条规则语句的涵义就是将管道内的流体向多个目的地输送。这里的locationi就是流程模型中“Tank储罐元素”、“Pipe管道元素”、“Processor处理器”元素、“ship”元素节点的名称,代表的第i个输出目的地。
系统在往下一个目的地输送物料时,是逐个进行处理的。建模时用户可以使用该规则语句为Pipe元素设定多个输出目的地。系统会实时检测该规则语句是否能被成功执行,如能执行,各输出分量是多少。
- 行为逻辑
Pipe元素的在“通用”选项卡中有两个行为逻辑定义按钮:“Action On Input”、“Action On Output”。它们分别对应着Pipe元素实例,在仿真进行到不同状态所激发的行为逻辑。“行为逻辑”代码的编写,是由用户使用VBS语言调用系统的内部函数、自定义函数、模型变量等代码等构成。 这两个按钮下的“行为逻辑”代码的执行条件与含义如下:
- “Action On Input”:当Pipe元素开始流体的输入时,该按钮下的代码就被激活执行一次;
- “Action On Output”:当Pipe元素往下一个目的地输送物料时,该按钮下的代码就会被激活执行一次;
8.3 维护选项卡
点击通用选项卡页面左上角的“维护”按钮,系统将属性页面切换至“维护”选项卡的属性界面。“维护”选项卡用来定义Pipe元素实例在仿真运行过程的维护工况,它有两个行为逻辑定义按钮,如下图所示:

- 属性参数
如图,从左至右,Pipe元素“维护”选项卡中的属性参数有:维护模式、值表达式、维护时长。当前系统使用“Value changed”维护模式,“值表达式”涵义如下:
在模型的仿真运行过程中,当值表达式输入框中录入的表达式的“值”发生改变时便触发一次Pipe元素实例的维护操作。值表达式输入框中录入的是模型变量表达式。一旦Pipe元素处于维护工况,在排空管道内流体后不再接收新的流体,直至维护工况时间结束。
- 行为逻辑
Pipe元素的“维护”选项卡中有两个行为逻辑定义按钮:“Action On Start”、“Action On Resume”。 这两个按钮下的“行为逻辑”代码的执行条件与含义如下:
- “Action On Start”:Pipe元素实例,在每次维护开始时,该按钮下的代码就被激活执行一次;
- “Action On Resume”:Pipe元素实例,在每次维护完成时,该按钮下的代码就被激活执行一次;
一条完整的维护工况由“维护模式”、“值表达式”、“维护时长”、“Action On Start”行为逻辑代码、“Action On Resume”行为逻辑代码等五项内容构成。完成这些内容的定义后点击“维护”选项卡中的“增加”按钮,这一维护工况便记录在维护工况列表中,根据实际流程的需要,可以为Pipe元素实例建立多个维护工况。如随着建模工作的进行,需要修改之前定义好的维护工况,则点击“维护”选项卡中的“工况列表”下拉菜单选中要修改的工况序号,则属性输入框中的内容,被该维护工况信息刷新,接下来,用户可直接修改这些内容,修改完成后,点击“修改”按钮,则系统记录的维护工况列表中的信息被更新。
如果要删除某条维护工况,则点击“维护”选项卡中的“工况列表”下拉菜单,选中要修改的维护工况序号,然后再点击“删除”按钮,该条维护工况的内容即从工况列表中删除掉。
8.4 故障选项卡
点击通用选项卡页面左上角的“故障”按钮,系统将属性页面切换至“故障”选项卡的属性界面。“故障”选项卡用来定义Pipe元素实例在仿真运行过程的故障工况,它有两个行为逻辑定义按钮,如下图所示:

- 属性参数
如图,从左至右,元素“故障”选项卡中的属性参数有:故障模式、时间间隔、修复时长。当前系统对Pipe管道元素使用“Available Time”故障模式,涵义如下:
“Available Time”:当模型开始仿真运行时,每经历“时间间隔”参数所输入的时间间隔,Pipe元素实例就被触发一次设备故障,接着设备经历“修复时长”参数所输入的时间间隔后,设备恢复正常工作。“Availabe Time”故障模式,用来描述生产线上那些当班的设备的故障行为,即只要这台设备处于“当班”状态(或者“加电”状态),不论它是否进行加工处理操作,系统都按照固定的时间间隔去触发该设备的故障状态。
- 行为逻辑
Pipe元素的“故障”选项卡中有两个行为逻辑定义按钮:“Action On Start”、“Action On Resume”。 这两个按钮下的“行为逻辑”代码的执行条件与含义如下:
- “Action On Start”:Pipe元素实例,在每次故障状态开始时,该按钮下的代码就被激活执行一次;
- “Action On Resume”:Pipe元素实例,在每次故障修复完成时,该按钮下的代码就被激活执行一次;
一条完整的故障工况由“故障模式”、“时间间隔”、“修复时长”、“Action On Start”行为逻辑代码、“Action On Resume”行为逻辑代码等五项内容构成。完成这些内容的定义后点击“故障”选项卡中的“增加”按钮,这一故障工况便记录在故障工况列表中,根据实际流程的需要,可以为Pipe元素实例建立多个故障工况。如随着建模工作的进行,需要修改之前定义好的故障工况,则点击“故障”选项卡中的“工况列表”下拉菜单选中要修改的故障工况序号,则属性输入框中的内容,被该故障工况信息刷新,接下来,用户可直接修改这些内容,修改完成后,点击“修改”按钮,则系统记录的故障工况列表中的信息被更新。
如果要删除某条故障工况,则点击“故障”选项卡中的“工况列表”下拉菜单,选中要修改的故障工况序号,然后再点击“删除”按钮,该条故障工况的内容即从故障工况列表中删除掉。
8.5 内部函数
点击系统模型结构树“System”节点,然后再点击其下的“Pipe”子节点,系统展开Pipe元素有关的内部函数节点。在流程代码编辑阶段,用户可通过鼠标双击这些函数节点来引用它们。Pipe元素有关的内部函数定义如下:
- 函数名称: FTYPE(pipeName, VOL)
函数功能: 计算距管道输入端口体积为VOL处的流体的类型。
输入参数 1: pipeName,管道设备名。
输入参数 2: VOL,从要返回流体类型的位置处距管道输入端口的体
积。
函数返回值:VOL位置处,流体的类型(流体名称)
- 函数名称: Status(pipeName)
函数功能: 返回Pipe元素当前的运行状态。
输入参数 1: pipeName,Pipe元素名称。
函数返回值:Pipe元素当前状运行态值。
-1 函数未成功执行。
0 管道停止流动。
1 管道正在流动。
4 管道处于维护状态。
5 管道处于故障状态。
- 函数名称: fillStatus(pipeName)
函数功能: 计算Pipe元素当前的填充状态。
输入参数 1: pipeName,Pipe元素名称。
函数返回值:Pipe元素当前填充状态值。
-1 函数未成功执行。
0 管道处于排空状态。
1 管道处于半空状态。
2 管道处于充满。
8.6 元素报表
当模型仿真运行完成后,鼠标右键单击在模型结构树Pipe元素节点,系统弹出“模型编辑”菜单,然后鼠标点击选择上面的“统计元素”菜单,系统在屏幕右侧的模型布局区域里,以表格的形式展示出Pipe元素的运行状态统计信息。表头名称及取值含义如下:
| Pipe管道名称 | Volume In | Volume Out | Volume Now | Idle时间占比 | Flow时间占比 | Setup时间占比 | BreakDwn时间占比 |
✤ Volume In:截止到仿真停止时刻,管道内共计进入的流体总量。
✤ Volume Out :截止到仿真停止时刻,管道内共计流出的流体总量。
✤ Volume Now :截止到仿真停止时刻,当前管道内存有的流体总量。
✤ Idle时间占比 :在仿真周期内,总计管道等待流体输入的时间占比。
✤ Setup时间占比 :在仿真周期内,总计管道进行维护操作的时间占比。
✤ BreakDwn时间占比 :在仿真周期内,总计管道故障修复的时间占比。
