抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > (FlexSim 学习笔记)合成器打包的工作机制分析和实现

(FlexSim 学习笔记)合成器打包的工作机制分析和实现

时间:2024-01-10 05:32:41

相关推荐

在之前文章《“(FlexSim 学习笔记)案例1:不合格产品二次优先加工,两次不合格作废》中简单描述了下 flexsim 合成器的合成打包工作原理,并在该文“3.3、合成器合成打包选择“这节内容中,通过直接修改“更新合成器组件列表”事件的代码,以适应实际要求。

言犹未尽。直接修改“更新合成器组件列表”事件的总代码量虽然只有几行,但涉及到树节点操作,不太方便理解。故本文尝试再仔细阐述flexsim的合成器工作机制,并采取不用代码的方式来实现其工作过程。

一、合成器打包工作机制

首先我们来看合成器的组件列表。合成器始终会先接收来自输入端口1的货品(并把它当作容器),然后再按下图所示的组件列表,分别接收其他输入端口的货物进行组合打包。例如下图表示合成器从输入端口1接收到容器后,再从输入端口2/3/4分别接收2、3、2个货物,然后进行打包。也即打包完成后,该容器中共有7个货物。

上图的数量设置多少无所谓,因为实际案例中往往需要按订单,设法动态更新此表的数量。

如何更新呢?方法就是在合成器的On Entry触发器中,设置动态更新合成器组件表。这样的话,只要合成器从输入端口1收到某个容器,就会立刻执行更新合成器的组件列表。

上图涉及的order表是全局表,需要预先创建,例如下图(3行5列)。是不是与3行1列的合成器组件表非常相像,除了列多了点?

order全局表有5列,要用它去更新合成器组件列表,那么究竟该取那列值呢?这就涉及利用某个标签值了。例如下图的流程,某个标签值 item.orderID=3(左图),就是取全局表order(中图)的第3列值的意思,再用此列值去更新合成器组件表(右图)的相应数量。

那么标签orderID 又从哪来呢?可以考虑给容器定义orderID标签。这样的话,按合成器的工作机制,合成器会先从输入端口1接收容器,紧接着触发On Entry 事件,因为我们在该事件中设置了更新合成器组件,那么flexsim就可利用此容器的orderID标签值,去执行更新合成器组件列表的一系列操作。

二、案例

接下来我们用一个案例来具体实现合成器的打包工作机制。

如上图,有4个发生器,第1个是托盘发生器产生托盘容器(与合成器A连接时,应保证是合成器的第一个输入端口),其他是货物发生器,分别产生红/绿/蓝货物。托盘离开发生器时,将生成订单信息。合成器接收到托盘后,按订单要求进行打包(即合成器最终在此托盘中分别放置红/绿/蓝货物若干数量,进行打包)。

三、解决方案

1、创建order订单全局表,3行1列

2、托盘

在工具箱临时实体栏中选择托盘,新增4个数值标签,名称及值分别为 r=0,g=0,b=0,orderID=1

r 表示订单中的红色货物数量,g 表示绿色货物数量,b 表示蓝色货物数量,orderID 对应订单全局表 order 的第几列(列索引) ,因为order表只有1列,故orderID初始值设置为1,表示取订单表order的第1列。

3、托盘发生器

3.1、托盘发生器的临时实体栏选托盘,表示该发生器产生托盘。

3.2、在托盘发生器的On Creation触发器分别设置托盘的 r,g,b 标签值为1~5的随机数。

这样的话,每产生1个托盘,托盘的 r/g/b 分别就有随机值,比如 r=3,g=5,b=2,表示此托盘要对应的订单为红色货物3个,绿色货物5个,蓝色货物2个。

3.3、在托盘发生器的On Exit 触发器中,设置”写入全局表“3次,分别将托盘的 r,g,b 数量写入订单全局表order的第1行第1列,第2行第1列,第3行第1列。

4、红色货物发生器/绿色货物发生器/蓝色货物发生器

在红色货物发送器的On Creation 触发器中,设置Type标签和颜色为1,产生类型为1的红色货物。

其他颜色货物发生器的设置类推。

5、合成器

在合成器的On Entry触发器中,设置”更新合成器组件列表“,表为order,标签为orderID,表示通过托盘的orderID值,来取order表的对应列,去更新组件表。这里托盘的orderID值已经有初始值=1,所以更新取的是order表的第1列。

6、全部完成。

四、最终效果

五、小结

1、定义一个订单全局表;

2、对托盘容器,定义和订单数量相关的标签,以及和订单列索引相关的标签;

3、在某个合适的触发器中,利用托盘标签值去修改订单全局表;

4、在合成器的进入触发器中,用订单全局表去更新合成器组件表。

如果觉得《(FlexSim 学习笔记)合成器打包的工作机制分析和实现》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。