|
这个案例来自于一位仿真爱好者的微信公众号,地址如下:
6 k+ }2 ^' s7 ]; z2 nhttp://mp.weixin.qq.com/s/trB5-ArHIwnaXMg50A2-_g: L+ g% Z! h, K+ K7 X' O1 `6 j
' v5 W6 @# M! Q4 E3 t( s7 }4 a
诚如公众号文章所说,该问题的关键在于如何生成反复循环装载和卸载的任务序列,原文中采用的做法是通过消息触发来生成每一次的装载任务,并在装载触发中根据装载的数量来判断执行卸载任务。7 J* q% M; a1 q% n
该方法能够很好地实现问题要求,然而个人认为本身装卸的流程并没有跳出默认装卸任务的范围,因此,除了第一个载运空箱的流程外,其他的所有任务可以借助FlexSim自动生成,此题的关键在于两个装货站生成item的目的地问题。
/ Y- h O* r+ N, J4 k) S; B6 E. {7 l7 W我采用的方法,除了在空箱创建触发中编写装载空箱的任务之外,只需要在两个装货点的发送至端口触发器进行发送端口控制即可:每一次发送任务都会触发“发送至端口”触发器,使用一个标签“num”来显示当前载货数量(除了空箱之外的数量),再用一个标签“port”来统计前一个发送端口的序号,如果超出目标要求,则更新发送至下一个卸货点(使用fmod()取余函数来循环),同时更新标签“port”和“num”的值。最后使用inc()函数来增加统计载货数量。. t9 V7 T0 P4 s2 L8 A
本方法主要借助了FlexSim本身break任务来先满足装运数量再进行卸货的方法,代码使用量上要精简不少,逻辑调试过程中容易减少错误和调试的时间。1 F# ^( |/ l) [7 [- P
+ N, M7 ]4 a. ]5 T0 h P希望对大家有帮助,欢迎更多的讨论~
# d6 t* H0 N" o4 U
+ W8 f9 J6 @6 C$ y' p K; X! `/ A模型描述:4 P; f m4 I+ k; c
AGV在取一个空箱后,在装货点1和装货点2循环取货,直到AGV取满5个货物后,送到第一个暂存区取货,然后继续到装货点1和装货点2循环取货,每次AGV取满5个货物后送到下一个暂存区,依次类推,直到第五个暂存区,之后又从第一个暂存区开始卸货,一直往复循环。7 K' v1 z, Y$ W' a5 J( Z5 |. I
- V5 e8 W) u2 z7 P我的运作模型截图:
$ c* H5 S( K* B3 [. v |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|