Tutorial Task 2.2 - Customize the Task Sequence
任务概述
在本教程的此阶段,您实际上已经重新创建了任务执行器在模型中装卸3D对象时使用的标准运输逻辑。您无需创建流程流来实现此逻辑,因为仅使用3D对象上已有的逻辑即可实现。
流程流的真正强大之处在于,当您需要为任务执行器创建自定义任务序列时。流程流使得为仿真模型创建自定义任务序列变得更加容易。在本教程任务中,您将自定义先前教程任务中创建的基本任务序列,以添加自定义逻辑。您将构建一个自定义任务序列,其中操作员将在每个物品被处理和运输后,前往供应柜获取清洁用品并清洁处理器。
完成后,您的仿真模型的外观和功能将类似于下图:

步骤 1向任务序列添加额外任务
在此步骤中,您将编辑任务序列以使其稍微复杂一些。您将添加额外的任务活动,使操作员在完成将流程物品运输到下一个目的地后清洁处理器。
如果您查看库中可用的流程流活动,您会注意到有许多可能的逻辑功能可供选择。但这些活动仅是FlexSim中最常见的逻辑功能类型。您可以使用自定义代码活动来实现FlexSim中已有的任何其他预编程逻辑。如果需要,您还可以使用它创建自定义的FlexScript代码。在此步骤中,您将使用自定义代码活动在清洁前后打开和关闭处理器。
您目前只需添加并重命名新的任务活动。您将在后续步骤中编辑其属性。完成后,您的流程流应类似于下图:

添加活动的步骤如下:
- 按下重置仿真控制栏上的按钮以停止当前仿真运行。
- 为避免混淆,请关闭这两个流程实例,以便只打开TransportItems流程。
- 在流程中,点击堆叠的活动块以选中它。
- 点击剪刀按钮
在启动子流程和装载物品活动之间,将它们分开。同样地,分开卸载物品和完成子流程活动。 - 从库中,在基础组下,拖拽一个自定义代码活动到启动子流程活动之后,形成一个堆叠块。
- 拖拽包含装载物品和卸载物品活动的堆叠块,将其添加到自定义代码活动的末尾。
- 在卸载活动之后,将以下活动添加到堆叠块中(按此顺序):
- 一个移动活动(在任务序列组)
- 一个获取资源活动(位于共享资产组下)
- 一个移动活动(位于任务序列组下)
- 一个延迟活动(位于基础组下)
- 一个自定义代码活动(位于基础组下)
- 一个移动活动(位于任务序列组下)
- 一个释放资源活动(位于共享资产组下)
- 将结束子流程活动拖拽到堆叠块的末尾。
- 添加一个资源活动到堆叠块旁边,但不要连接它。
- 为清晰起见,请将新活动重命名如下:


| 活动 | 新名称 |
|---|---|
| 第一个自定义代码 | 自定义代码:关闭端口 |
| 第一次移动 | 前往供应柜 |
| 获取 | 获取清洁用品 |
| 第二次移动 | 前往处理器 |
| 延迟 | 延迟:清洁处理器 |
| 第二个自定义代码 | 自定义代码:打开端口 |
| 第三次移动 | 前往供应柜 |
| 释放 | 释放:归还用品 |
| 资源 | 资源:清洁用品 |
完成后,请检查以确保您的流程流看起来与本步骤开头的图像相似。
步骤 2编辑活动属性
在此步骤中,您将编辑添加到任务序列中的所有新活动的属性。下表概述了此流程流中各项活动的功能:
| 活动 | 说明 |
|---|---|
| 启动子流程 | 处理器生成的所有新任务都将创建一个令牌,该令牌在此处启动流程流。 |
| 自定义代码:关闭端口 | 此活动将关闭处理器的端口,使其在清洁完成前停止接收流程项目。 |
| 加载项目 | 操作员将通过连接至处理器中心端口的路径装载流程物。 |
| 卸载物品 | 操作员将把流程物送至连接至处理器输出端口的下游固定资源。 |
| 前往物料间 | 操作员将前往物料间。 |
| 获取清洁用品 | 操作员将从物料间取得清洁用品。 |
| 前往处理器 | 操作员将返回处理器处。 |
| 延迟时间:清洁处理器 | 此活动将模拟清洁处理器所需的时间。 |
| 前往物料间 | 操作员将返回物料间。 |
| 释放:归还用品 | 操作员将把清洁用品归还至物料间。 |
| 结束 | 当子流程完成时,令牌将进入此活动并被销毁,表示任务现已完成。 |
| 资源:清洁用品 | 此资源代表用于清洁处理器的清洁用品。您需将此资源设置为全局可访问,这意味着两名操作员(两个实例)将共用同一资源。每次仅有一组清洁用品可供使用。 |
步骤将按活动类型而非任务序列中的出现顺序进行逻辑组织。
- 单击活动块以选中它。
- 您需要先编辑两个自定义代码活动,使它们能在任务序列的适当时机关闭和打开处理器的端口。请在属性面板的自定义代码:关闭端口组,点击添加按钮
旁边的自定义代码框以打开可用选项列表的菜单。指向控制,然后关闭和打开端口以打开其选项列表。 - 保持操作菜单设置为关闭输入,以便它将关闭当前处理器的传入端口。
- 点击对象框旁边的箭头以打开菜单。选择token.labelName。在此框中,将labelName更改为fromObject。此设置将对令牌中fromObject标签所列对象进行动态引用。(此标签将当前处理器分配给此属性。请参阅教程1.1的第4步作为提醒。)换句话说,来自当前处理器的传入端口将被关闭。
- 对自定义代码:打开端口活动重复步骤2-4,但有一个小改动:在选项列表中,选择打开输入在操作菜单。 这将打开当前处理器在操作员完成清洁后的进料端口。
- 现在您将编辑所有“移动”活动的属性,以便将它们分配给正确的操作员。在“前往供应柜”活动的属性中,点击“执行者/任务序列”框旁边的箭头打开菜单。选择“当前(实例对象)”。前往供应柜活动,点击执行者/任务序列框旁边的箭头以打开菜单。选择当前(实例对象)。
- 对前往处理器和第二个前往供应柜活动重复上一步。
- 现在您将编辑所有“移动”活动的属性,以便将它们分配给正确的目的地。在第一个“前往供应柜”组的属性中,点击“目的地”旁边的“采样器”按钮进入采样模式。前往供应柜组,在目的地旁边点击采样器按钮
进入采样模式。 - 在3D模型中选择供应柜对象以打开菜单。从菜单中选择供应柜。
- 对第二个前往供应柜活动重复步骤8-9。
- 在前往处理器活动,请在目标框中点击并输入
token.fromObject以动态引用 token的fromObject标签中列出的对象。(此标签将当前处理器指定为目标。作为提示,请参考教程1.1的第4步。) - 接下来,您将把资源:清洁用品共享资产链接到流程中。在仍选中堆叠块的情况下,点击感叹号图标
旁边的获取清洁用品活动以进入采样模式,
然后点击资源:清洁用品共享
资产。 - 点击资源:清洁用品共享资产以 选中它。点击类型菜单并选择全局。


请考虑保存您的模型。
第4步运行仿真模型
现在是时候运行仿真模型,以查看自定义任务序列的实际效果了。 重置并运行仿真模型:

随着模型运行,你将看到两名操作员除了搬运流动实体外,还会前往物料间清洁处理器。流程中的令牌会显示每位操作员当前正在执行的任务。
此时,你可以尝试准备两套清洁用具,观察是否能提升系统整体吞吐量。或者也可以设计一种逻辑,让操作员仅在每处理完五个流动实体后才清洁处理器。
结语
至此已完成任务序列流程的教程。建议继续学习其他教程,以便更深入地理解流程实例、子流程及其他重要主题。


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