第5章:信息流——TableFiles、属性与SimTalk方法实践
本章将介绍Plant Simulation中的信息流对象和用户自定义控制功能。学习本章后,您将能够:
- 在表格文件中存储信息并在仿真中调用
- 理解Plant Simulation编程语言SimTalk
- 通过用户自定义控制功能扩展模型
表格文件
Plant Simulation提供多种列表和表格对象用于存储信息。这些对象既可为仿真运行提供输入数据,也可用于记录仿真结果。
TableFile
是一种多列列表。表格中的每个单元格通过行号和列号进行索引,支持独立访问。此外,TableFile中的表格还能包含嵌套表格。
CardFile
、QueueFile
以及StackFile
与TableFile类似,但它们仅包含一列。
练习:从 TableFile 设置 MU 属性
在本练习中,我们将使用TableFile扩展之前的模拟。我们将在 TableFile 中定义三种不同类型的 MU,并将 Source 连接到 TableFile,使其根据表中定义的属性生成 MU。与之前的练习类似,强烈建议您仅对文件夹中的框架进行更改。**设施区域**在类库中。
**逐步操作:**
- 打开**工厂**导航到**信息流**在工具箱中的选项卡。插入一个TableFile对象从工具箱拖放到Source旁边的框架中,并将其重命名为“SourceTable”。
-
如果双击SourceTable,您会看到当前每一列的数据类型都相同。您可以通过列表
功能区选项卡中的数据类型图标来显示/隐藏列和行的数据类型。
- 在Plant框架中,将SourceTable拖放到Source上以建立链接。
- 双击Source要打开它。在属性选项卡中,您会发现,现在不再直接引用物料单元,而是通过引用源表来创建物料单元。将物料单元选择更改为“百分比”。
- 双击源表将其打开。您会注意到表格的结构已经改变。当表格文件链接到另一个对象时,表格的结构及其数据类型将根据链接的对象自动格式化。
- 从类库中的物料单元文件夹中,将钣金件实体拖放到第一列下方的行中。在比例和数量如图所示,将其命名为名称。该源应在50%的时间内生成一个原始部件A,30%的时间内生成一个原始部件B,以及20%的时间内生成一个原始部件C。
- 对于Attributes列的每一行,将值设置为“x”。这将自动为每一行创建子表,以便进一步指定MU属性。请设置属性名称修改为“Type”并在第四列输入对应的字符串类型属性。
图 29:用于定义 MU 属性的 TableFile
- 打开装配文件夹中的框架设施区域在类库中。双击第一条生产线该生产线将零件从进料缓冲区运输到装配工位。
- 导航至出口将策略更改为“物料单元属性”并点击应用。您将能够通过列表进一步指定属性类型。将属性类型设置为“字符串”并点击应用。
- 点击按钮打开列表。我们希望将属性类型为“A”的零件分配到第一个后续工位(装配工位1) 以及具有属性类型的部件“B”或“C”传送到第二个后续工位 (装配2)。在表中输入属性“类型”,并根据下图设置数值。点击应用/确定。
- 返回工厂框架并运行仿真。您注意到有什么不同吗?
图30:基于移动单元属性的退出策略
下载:
本练习到此为止的仿真模型最终状态可在此处下载教程模型_06。
方法
方法
代表一个在仿真运行期间执行的控制对象。您可以使用方法编程特定的操作或定义自定义行为。方法也可以作为入口或出口控制内置在物料流对象中。在这种情况下,每次有移动单元进入或离开物料流对象时,该操作都会被执行。
还有特殊类型的方法,由事件控制器调用。它们通过特殊图标表示:
-
初始化方法
在重置仿真模型后启动时执行。
-
仿真结束方法
在仿真运行结束时执行。
-
重置方法
在您点击事件控制器中的重置仿真按钮时执行。
方法包含用SimTalk编程语言编写的源代码。一个方法的结构通常包括参数声明、返回值的数据类型、局部变量以及操作本身的源代码。
您可以使用SimTalk 1.0语法或更新的SimTalk 2.0语法编写代码语法。一个模型可以同时包含使用 SimTalk 1.0 或 SimTalk 2.0 编写的多个方法,因为它们可以并行运行。也可以将使用旧语法编写的方法转换为新语法。在 SimTalk 2.0 中,is-do-end 结构已过时,这使得代码更加简洁和简单。下图展示了 SimTalk 1.0 和 SimTalk 2.0 的语法示例。
图 31:SimTalk 1.0(左)与 SimTalk 2.0(右)的语法对比
SimTalk 包含内置方法和标准结构,例如循环和条件分支。为了引用仿真中的对象或查询对象的路径,SimTalk 提供了以下匿名标识符:
- “@”指触发控制的移动单元(MU)。这可能是进入对象的 MU 或准备退出对象的 MU。
- “root”指模型框架层次结构中最顶层的(根)框架。
- “current”指被调用的Method对象所在的当前框架。
- “?”指触发控制的物流对象或Method。
- “self”指当前正在执行的Method。
练习:使用Method设置MU属性
在本练习中,我们将扩展之前的模拟,并基于通过Method创建的MU属性来建模流程控制。在之前的练习中,我们在QualityGate中模拟了制造区域,以区分次品和良品,并仅允许良品通过。这次我们将不再使用QualityGate现在,我们需要随机分配一个属性,以确定物料单元(MU)是否满足质量要求,并根据物料单元当前的属性做出决策。
与之前的练习类似,强烈建议您仅对类库中以下文件夹内的框架进行修改:设施区域(FacilityArea)在类库中。
分步指南:
- 打开类库中设施区域(FacilityArea)文件夹下的制造(Manufacturing)框架。在工具箱中导航到信息流(Information Flow)选项卡。从工具箱中插入一个方法(Method)对象到框架中,并将其重命名为“CheckPartOK”。
- 将CheckPartOK方法拖放到清洗(Washing)工位上。该方法(Method)的图标应变为出口控制方法(Method)的图标。双击清洗(Washing)工位,并导航到控制(Controls)选项卡。确保在出口(Exit)字段中正确输入了CheckPartOK方法。
- 双击CheckPartOK方法,并输入以下 SimTalk 源代码,如下图所示。每当有物料单元离开该工位时,该方法(Method)都会被执行。
图 32:出口控制方法的源代码
- 双击质量门(QualityGate)流控制对象。导航到……退出策略将策略更改为“MU属性”并点击应用。将属性类型设置为“布尔值”并点击应用。
- 点击按钮打开列表。我们希望将属性“PartOK”为真的零件分配到后续装配区域,而将属性“PartOK”为假的零件分配到废品排放口。如下图中所示,在表格中输入数值。点击应用/确定。
图33:流量控制的退出策略
- 双击质量门流量控制对象。导航到退出策略将策略更改为“MU属性”并点击应用。将属性类型设置为“布尔值”并点击应用。
- 打开工厂框架并运行仿真。您是否注意到与之前仿真运行的不同之处?
- 尝试为if-else条件设置不同的阈值,观察其对仿真结果的影响。您可以打开控制台窗口,查看模拟生成的随机值。
下载:
本练习的模拟模型最终状态可在此处下载Tutorial_Model_07。您的模拟模型应类似于下图。
图28:本章最终模型


微信扫一扫,打赏作者吧~


