慧娴亚伦 发表于 2015-8-25 21:19:20

【官网翻译】实现自定义搬运效果的小贴士

以下内容转自美国flexsim官网论坛,原帖地址:
https://www.flexsim.com/community/forum/showthread.php?t=3138
原作者Jörg(5#)

在flexsim的仿真引擎中,运输选项首先是一个简易的系统用于自动创建任务序列来实现搬运流程。

由于这个系统本身的简易性,你需要知道的是,任务序列何时产生以及任务执行器何时开始执行任务序列。有时任务执行的顺序不符合你的要求,你可以改变这个顺序,另一个改变任务序列的方法,就是自己建立一个控制表现的任务序列。然而这个方法可能有一定的局限性,如果模型(的其他部分)发生改变你可能也要改变任务序列。

至于第一种改变任务序列顺序的方法。要知道flexsim中存在很多触发器和功能,如果你想要在一个站点装载超过1个实体,通常可以使用任务执行器中的BreakTo 触发器。你而已找到许多默认的选项,有时为了结合两种功能你可能还会修改默认代码,但要注意的是,只有在触发breakto触发器时(想要调用的)任务序列已经存在才会正确执行你想要的效果。

看起来任务执行器是接收任务序列的实体,然而其实是其父节点的任务分配器接收了任务序列。每个任务执行器自己也是任务分配器。在OnReceiveTaskSequence触发器中,你可以修改接受的任务序列的参数。例如你可以修改优先级、卸载任务指引目的地的任务参数,或者插入其他的任务。在任务执行器的首个“任务执行器”选项卡中可以找到其他的指引分配功能“PassTo”(传递给)和“QueueStrategy”(排队策略)。PassTo决定了任务序列在哪里储存。通常默认将存储在任务分配器(任务执行器),但是你可以自行改变。QueueStrategy是将任务分配器(任务执行器)队列里的所有任务序列进行排序,通常的做法是根据任务的优先级。

其他的解决办法是利用任务序列的不同任务,在你修改或者重新创建任务序列时可以用这个办法。任务的类型是CALLSUBTASK或BREAK。BREAK(中断任务)在标准搬运任务中就有,他会触发任务执行器中的BreakTo功能。当然这也是一个很重要的功能,如果你要修改里面的参数,请仔细阅读用户手册或者论坛中的其他帖子。CALLSUBTASK(子任务)是用在当任务执行到某个任务时,可以反馈当时的模型运行情况。

无论是创建自定义的任务序列,或者通过插入新任务来改变任务序列,亦或是改变任务序列的排序、使用中断任务或子任务。最重要的一点就是当任务序列创建的瞬间与其执行的瞬间模型实体及其属性的变化。很可能出现任务在执行的时候临时实体已经不在创建时的位置了(导致引用出错等问题出现)

FFFrenk 发表于 2015-8-26 09:11:06

:lol学习了!

flexsimseer 发表于 2015-11-21 10:47:42

谢谢版主的推荐和翻译!

657776724 发表于 2015-11-21 22:02:07

赞!
页: [1]
查看完整版本: 【官网翻译】实现自定义搬运效果的小贴士