4. 自定义模型元素

在案例1中,我们使用设计元素模版,来创建所需要的模型元素节点,在这种方法中,系统事先定义好了每一种仿真元素的可视化内容,这样建模过程简便快捷。比如本例中,每一个模型元素的可视化内容有:元素名称、元素图标。另一方面,在很多情况下,创建模型元素,只是为了实现模型的运作逻辑,而不需要在“模型布局区域”里,建立其可视化表示,进一步,即使需要对该模型元素进行可视化表达,用户希望能自己来定义模型元素的可视化显示内容,因此,BHTC Simulation提供了用户自定义模型元素的方法,此时,用户可以自行为自己所创建的模型元素添加、勾画需要的可视化内容,如文字、图形、图标等等。用户自定义模型元素,由以下三个步骤构成:定义元素,可视化元素、逻辑化元素。具体内容如下:

【 步骤一:定义元素 】

首先在模型结构树上产生出代表该模型元素的结构树节点。如上所述,用户使用BHTC Simulation软件所建立流程模型的元素节点全部都连接在Model节点下面,因此用户自定义模型元素,就是从Model节点开始,鼠标右键点击“Model”节点,弹出系统快捷菜单,点击上面的“创建模型元素”按钮

弹出“模型创建”对话框,点击“选择元素类型”下拉菜单,选择当前要创建的元素类型,如下图所示:

输入自定义模型元素的名称,单击“确定”按钮,则在模型结构树上定义出一个“part1”节点,如下图所示:

BHTC Simulation提供了大量的描述工业生产流程、供应链运作流程的仿真模型元素,如生产线上的加工中心,传送设备、缓冲存贮装置、物流设施、车辆以及逻辑控制元素,如流程的倒班机制,事件发生的时间序列,统计分布等,用户可方便的使用这些建模元素建立其所规划或运营管理的生产流程系统的计算机仿真模型。在“选择元素类型”下拉菜单,列出了这些元素类型如下:

Module:模组元素

Part:动态实体元素

Machine:设备元素

Buffer:库存元素

Variable:变量元素

Function:自定义函数元素

Fluid:流体元素

Pipe:管道元素

Tank:储罐元素

Processor:反应器元素

Pie Chart:饼图元素

Time Series:时间序列图元素

Vehicle:运载工具元素

Track:轨道元素

Conveyor:传送带元素

Attribute:属性元素

Labor:人工元素

Shift:班次元素

Path:路径元素

仿真元素的定义与应用场景,详见“建模元素”一章的内容。

【 步骤二:可视化元素 】

这一步就是在“模型布局区域”中,勾画出,用户自定义模型元素的几何表示。点击选中结构树上的“part1”节点,右键单击弹出模型编辑菜单,点击上面的“图形编辑”按钮。

这时,在主菜单栏区域弹出“图形绘制”快捷菜栏和“图形编辑”快捷菜单栏,如下图所示。“绘制图形”快捷菜单,提供了给模型元素绘制各种可视化内容的功能按钮,如文字、图标、图形等,这些按钮,由于模型元素的类型不同,模型元素可视化的内容也不相同,比如流体管道、传送带,作为有不同工业用途的元素类型,其各自需要可视化展示的内容也不相同,BHTC Simulation系统 ,会根据当前用户所选择的模型元素的类型,在“图形绘制”快捷菜单区呈现出不同的、可用的绘制功能按钮,有些绘制按钮只在某些元素类型下是激活的。

点击相应的绘制功能按钮,在“模型布局区域”,绘制出当前模型元素的各种可视化呈现内容,具体操作,详见“图形绘制”一节的内容;

点击“图形编辑”菜单区中相应的功能按钮,对已绘制的可视化图形内容,进行编辑与修改,具体操作详见“图形编辑”一节的内容。

【 步骤三:逻辑化元素 】

这一步就是定义该模型元素在仿真运行时的行为逻辑。这包含以下三个方面:模型元素的属性参数、流程逻辑、行为逻辑。下面以Part类型的模型元素为例加以说明。双击模型结构树上的“part1”节点,弹出Part类型元素的属性定义对话框如下:

  • 属性参数

如图,Part类型元素的属性参数有:到达时间间隔、最大可用数、初始到达时刻。这些参数描述了在仿真运行时,用户所定义的这个Part元素,是以怎样的规律到达系统的。在属性文本框中,输入不同的数值,代表不同的到达规律。进一步,属性文本框中还可输入函数,在仿真运行时,系统会实时调用这些函数,通过函数的返回值,来确定Part元素的到达规律。

  • 流程逻辑

在元素属性对话框中,凡是标记有“Push”、“Pull”、“Connect”、“Flow”等字样的按钮,都是模型元素的“流程逻辑”定义按钮,“流程逻辑”的内容决定了,该模型元素在仿真运行时与其他模型元素之间的交互行为,比如当前这一元素是来自哪一个元素,下一时刻又去往哪一个元素。“流程逻辑”定义的具体内容,是由用户使用计算机程序代码调用系统的“流程规则语句”代码构成,(本系统采用Visual Basic Script语言作为模型的流程逻辑、行为逻辑定义语言。)点击图中的“Push to”按钮,弹出“流程逻辑”定义的程序代码对话框,用户根据建模需要使用程序代码,编写该模型元素的“流程逻辑”代码段,如下图示例所示。

这段流程逻辑代码由常用的VBS语句成分构成。其中有变量声明语句、赋值语句、条件分支语句,还有对VBS内部三角函数cos、sin的调用等等。这里的“流程规则语句”也是VBS的赋值语句,所谓“流程规则”就是对仿真运行时模型元素与其他模型元素之间的交互行为的定义。比如当前这一元素是来自哪一个元素,下一时刻又去往哪一个元素。示例中“流程规则语句”中赋值变量:“push_to”就是BHTC Simulation系统内部定义变量,称之为“流程变量”,因此所谓“流程规则语句”就是一条对“流程变量”的赋值语句。这里的“push_to”流程变量的涵义是确定该模型元素下一个被送达的目的地。因为可能有多个目的地,因此,系统的“流程变量”是一个一维数组变量,我们使用一个枚举类型的数组来给它赋值,等式右边的枚举数组中列举了流程变量“push_to”的可能取值。在本例中,它只有1个取值即“ship”代表的外部世界,或离开系统。因此本例中的流程逻辑就是:当条件满足时(cos(a) > sin(b))当前这个模型元素实例就被送往“ship”即离开系统,否则条件不满足时当前这个模型元素实例就被送往“Buffer1”元素中去。

“push_to”的流程规则语句的语法规则表述为:

push_to = array(location1, location2, …)

这里的location就是流程模型中“Machine元素”、“Buffer元素”、“ship”元素、“Track元素”、“Conveyor元素”节点的名称。如果该模型节点是一个成组设备节点,可用设备节点名加上设备序号即location(ii)的形式,来标记要前往的目的地,是成组设备中的哪一台。

因为“流程规则语句”在建立元素的流程逻辑时经常用到,为提高编码效率,本系统将所有的流程规则语句的输入集成到代码编辑模块中,使用时,在流程代码窗口需要输入“流程规则语句”的光标位置处单击鼠标右键,系统弹出文本编辑快捷菜单,将鼠标移动至“插入规则”菜单,系统弹出“插入规则”的下拉菜单,展示出系统所有的规则语句,如下图:

点击选择所需要的规则语句,系统即自动的将规则语句插入到流程代码中。如下图所示选择“push_to_ship”规则语句:

当选择模型结构树上的节点元素作为“push_to”流程变量的目的地,如结构树上“Buffer1”节点给它赋值时,首选点击选用“插入规则下”的“push_to”规则语句,代码窗口如下所示:

然后将输入光标置于枚举数组array参数框中,鼠标双击模型结构树上的“Buffer1”节点,“Buffer1”节点名称自动录入array数组参数表中,如下图所示:

【提示1】

“MM_Model_Buffer1”是“Buffer1”节点的全称或者说是这一节点的“大名”而“Buffer1”则是这一节点的“小名”。在BHTC Simulation系统中,模型节点的命名规则如下:所有模型结构树节点元素的“大名”是不重复的,处于同级父节点下的子节点的“小名”也是不重复的。“小名”名称由字母 + 数字的形式构成,中间可以带有下划线,且区分大小写。“大名”名称 = “MM_” + “Model_” + “父节点名1_” + “父节点名2_” + “父节点名3_” + … + “小名”构成。为方便代码阅读,当再次打开流程代码编辑时,系统做如下简化处理:

  • 行为逻辑

在属性对话框中,凡是标记有“Action”等字样的按钮,都是模型元素的“行为逻辑”定义按钮,“行为逻辑”的内容决定了,该模型元素在仿真运行时自身在某些特定时刻的行为。同样的,“行为逻辑”定义的具体内容,是由用户使用Visual Basic Script语言代码调用系统的内部函数代码构成。 Part类元素的“行为逻辑按钮”有“Action On Create”,该按钮下的程序代码段,在该Part元素一旦被产生出来时激活执行;“Action On Exit”,该按钮下的程序代码段,在该Part元素一旦结束其在模型内的生命周期而离开系统时被激活执行。用户可根据需要,点击相应的“Action”按钮,弹出“行为逻辑”定义的程序代码对话框,用户根据建模需要,编写该模型元素的在该特定时刻的“行为逻辑”代码段。编辑过程与“流程逻辑”代码编写类似。