9. Tank 储罐元素
9.1 元素定义
Tank储罐元素是用来描述现实生产运作系统中的连续流体的存储装置。在模型的仿真运行过程中,它不对其存储的流体进行加工处理操作。
虽然储罐只是一个存储装置,但它仍具备有输入、输出流程逻辑按钮,用来描述流体的注入和排空操作。通过使用这些流程规则,它可以一次性从多个输入源同时输入流体,也可以一次性向多个目的地同时输出流体。在模型的仿真运行过程中Tank储罐元素具有多个不同的形态:等待流体输入的空闲状态、输送状态、故障状态、维护状态、输出阻塞状态、报警状态等等。
9.2 通用选项卡
在模型结构树上,鼠标双击Tank储罐元素节点,系统弹出Tank元素属性对话框如下,缺省的状态下,系统首先展示出的是“通用”选项卡的属性界面。它有两个流程逻辑定义按钮和两个行为逻辑定义按钮。

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

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

- 属性参数
如图,从左至右,元素“故障”选项卡中的属性参数有:故障模式、时间间隔、修复时长。当前系统使用“Available Time”故障模式,涵义如下:
“Available Time”:当模型开始仿真运行时,每经历“时间间隔”参数所输入的时间间隔,Tank元素实例就被触发一次设备故障,接着设备经历“修复时长”参数所输入的时间间隔后,设备恢复正常工作。“Availabe Time”故障模式,用来描述生产线上那些当班的设备的故障行为,即只要这台设备处于“当班”状态(或者“加电”状态),不论它是否进行加工处理操作,系统都按照固定的时间间隔去触发该设备的故障状态。
- 行为逻辑
Tank元素的“故障”选项卡中有两个行为逻辑定义按钮:“Action On Start”、“Action On Resume”。 这两个按钮下的“行为逻辑”代码的执行条件与含义如下:
- “Action On Start”:Tank元素实例,在每次故障状态开始时,该按钮下的代码就被激活执行一次;
- “Action On Resume”:Tank元素实例,在每次故障修复完成时,该按钮下的代码就被激活执行一次;
一条完整的故障工况由“故障模式”、“时间间隔”、“修复时长”、“Action On Start”行为逻辑代码、“Action On Resume”行为逻辑代码等五项内容构成。完成这些内容的定义后点击“故障”选项卡中的“增加”按钮,这一故障工况便记录在故障工况列表中,根据实际流程的需要,可以为Tank元素实例建立多个故障工况。如随着建模工作的进行,需要修改之前定义好的故障工况,则点击“故障”选项卡中的“工况列表”下拉菜单选中要修改的故障工况序号,则属性输入框中的内容,被该故障工况信息刷新,接下来,用户可直接修改这些内容,修改完成后,点击“修改”按钮,则系统记录的故障工况列表中的信息被更新。
如果要删除某条故障工况,则点击“故障”选项卡中的“工况列表”下拉菜单,选中要修改的故障工况序号,然后再点击“删除”按钮,该条故障工况的内容即从故障工况列表中删除掉。
9.5 报警选项卡
点击通用选项卡页面左上角的“报警”按钮,系统将属性页面切换至“报警”选项卡的属性界面。“报警”选项卡用来定义Tank元素实例在仿真运行过程的报警工况,它有两个行为逻辑定义按钮,如下图所示:

- 属性参数
如图,从左至右,元素“报警”选项卡中的属性参数有:高液面位置、低液面位置,分别对应着系统的两种报警模式:
液面升高报警:当Tank元素中当前液面位置高于“高液面位置”设定值时,触发系统报警,激活并执行“Rising Action”按钮下的代码。
液面降低报警:当Tank元素中当前液面位置低于“低液面位置”设定值时,触发系统报警,激活并执行“Falling Action”按钮下的代码。
液面位置是由当前液面距储罐底部的容量界定的,即在报警液面位置输入框输入的是距储罐底部的容量数值而非高度数值。
一条完整的报警工况由“液面位置”、“Rising Action”或者“Falling Action”报警行为逻辑代码等两项内容构成。完成这些内容的定义后点击每种报警属性框中的“增加”按钮,这一报警工况便记录在该报警工况列表中,根据实际流程的需要,可以为Tank元素实例建立多个报警工况。如随着建模工作的进行,需要修改之前定义好报警工况,则点击“报警”选项卡中的“工况列表”下拉菜单选中要修改的报警工况序号,则属性输入框中的内容,被该报警工况信息刷新,接下来,用户可直接修改这些内容,修改完成后,点击“修改”按钮,则系统记录的报警工况列表中的信息被更新。
如果要删除某条报警工况,则点击“报警”选项卡中的“工况列表”下拉菜单,选中要修改的报警工况序号,然后再点击“删除”按钮,该条报警工况的内容即从报警工况列表中删除掉。
9.6 内部函数
点击系统模型结构树“System”节点,然后再点击其下的“Tank”子节点,系统展开Tank元素有关的内部函数节点。在流程代码编辑阶段,用户可通过鼠标双击这些函数节点来引用它们。Tank元素有关的内部函数定义如下:
- 函数名称: Status(TankName)
函数功能: 计算Tank元素当前的运行状态。
输入参数 1: TankName,Tank元素名称。
函数返回值:Tank元素当前状运行态值。
-1 函数未成功执行。
0 等待流体注入状态。
1 储罐同时处于注入和排空状态。
2仅流体注入状态。
3仅流体排空状态。
4 储罐处于维护状态。
5 储罐处于故障状态。
- 函数名称: fillStatus(TankName)
函数功能: 计算Tank元素当前的填充状态。
输入参数 1: TankName,Tank元素名称。
函数返回值:Tank元素当前填充状态值。
-1 函数未成功执行。
0 储罐处于排空状态。
1 储罐处于半空状态。
2 储罐处于充满。
- 函数名称: freeSpace (TankName)
函数功能: 计算Tank元素当前的剩余空间。
输入参数 1: TankName,Tank元素名称。
函数返回值:Tank元素当前填充状态值。
-1 函数未成功执行。
> 0 Tank元素当前的剩余空间。
9.7 元素报表
当模型仿真运行完成后,鼠标右键单击在模型结构树Tank元素节点,系统弹出“模型编辑”菜单,然后鼠标点击选择上面的“统计元素”菜单,系统在屏幕右侧的模型布局区域里,以表格的形式展示出Tank元素的运行状态统计信息。表头名称及取值含义如下:
| Tank储罐名称 | Volume In | Volume Out | Volume Now | 满罐时间占比 | 空罐时间占比 | 半满时间占比 | 工作时间占比 | Setup时间占比 | BreakDwn时间占比 |
✤ Volume In:截止到仿真停止时刻,储罐内共计进入的流体总量。
✤ Volume Out :截止到仿真停止时刻,储罐内共计流出的流体总量。
✤ VVolume Now :截止到仿真停止时刻,当前储罐内存有的流体总量。
✤ 满罐时间占比 :在仿真周期内,总计储罐处于满罐的时间占比。
✤ 空罐时间占比 :在仿真周期内,总计储罐处于空罐的时间占比。
✤ 半罐时间占比 :在仿真周期内,总计储罐处于非空、非满罐的时间占比。
✤ 工作时间占比 :在仿真周期内,总计储罐处于正常工作时间占比。
✤ Setup时间占比 :在仿真周期内,总计储罐进行维护操作的时间占比。
✤ BreakDwn时间占比 :在仿真周期内,总计储罐故障修复的时间占比。
