全球FlexSim系统仿真中文论坛
标题:
关于叉车工作原理的探讨
[打印本页]
作者:
zorsite
时间:
2013-3-26 13:18
标题:
关于叉车工作原理的探讨
本帖最后由 zorsite 于 2013-3-26 13:41 编辑
- O8 j( `* E: I% L' J- H
/ Z2 j3 E7 ^- f' Q7 {! J5 ~% @
建立以下模型:
; a/ \3 l/ k" m% a; T2 A
发生器-->上游暂存区-->5个下游暂存区。
" H' ]# B7 \+ u0 M V8 i( N
发生器与上游暂存区A连接
, A+ o+ E" O0 n! t1 o9 F6 k% T
上游暂存区依次与下游5个暂存区A连接
+ U' N) P, E4 I
[attach]1292[/attach]
0 m7 O) `! \6 @; |' }( P
( n7 Y( D( Q' g. e3 _8 t# W
1.设置发生器一次性到达100个货物。运行结果如下:
" s- y2 _- J/ w
[attach]1293[/attach]
j6 R6 q% `4 u( W" _0 y
因为上游暂存区的输出端口默认为“第一个可用”,所以所有货物都被输出至下游第一个暂存区。
9 \2 k, {4 b9 _7 ^
如果第一个暂存区满,再向第二个暂存区输出。
" i( X( C; A. p! g) g
% c4 G6 |7 L3 f& `
2.添加叉车,设置上游暂存区“使用运输工具”。运行结果如下:
/ \! p4 ^6 e' b2 q$ N$ I( V1 ~( i
[attach]1294[/attach]
* @0 g0 g6 I* u% F, L
叉车每次运输一个,依次运送至下游每一个暂存区。why?
9 w$ a- j( r& f
此时上游暂存区的输出仍然为“第一个可用端口”,但为什么不像1那样,先把下游的第一个暂存区装满,第一输出端口堵塞,然后再输出到下游的第二个暂存区?叉车是怎样的工作机制?
4 k) \* {) `6 I* z. m
& d' v; {- X; g' O( G
3.设置上游暂存区“成批操作”,目标批量为30,运行结果不变。
0 x( t: Y6 ?+ \# C' c' R
; a# F3 z3 s& ]
4.继续设置叉车容量为30,奇怪的事情发生了!
: V! o" ]# O$ _1 ~
[attach]1295[/attach]
8 {9 H1 v7 W, q
叉车一次性拾取30个货物(这很正常),但是却从下游的最后一个暂存区开始卸载!what happened?
$ J* B: t; `0 c" a4 F5 [7 f, v2 M: W) T7 s
3 Z% Q3 ` o+ Q; D* d8 [
5.设置叉车卸载触发:
. X, C( _& u! q! R9 B9 h' Y
选择第一项:到其他站点卸载之前,将所有以此工作站为目标的临时实体卸载
( o0 G& ~* u6 V
[attach]1296[/attach]
4 O9 d! |; L8 J% V( \
如果不进行此项设置,则叉车装载30个货物之后,依次到下游没一暂存区每次卸载1个货物,轮番在下游5个暂存区进行卸载,直至下游每个暂存区都有30/5=6个货物,此时叉车上所有货物卸载完毕,返回至上游暂存区重新装载,见第4步图。
: ? a& x5 q. {
' _5 O- b9 P7 r/ g: P* A
进行此项设置之后,行进至下游暂存区之后,在每一暂存区一次性卸载6个货物。
! U/ R) G+ i% N8 {+ S7 v' k7 s
[attach]1297[/attach]
7 Y! s. O+ ]& e N
1 L* C! K ?0 O K1 ^" ^
6.如果想让叉车每次都卸载10个货物,应该从叉车入手呢?还是从货物入手,对货物进行打包?如果不设置上游暂存区成批操作,又希望叉车每次装载30个货物之后再走,又该如何设置?
/ T- ^3 o+ }% m# G
" X4 U5 \( Z& v; {& X* Z
to be continued...zzZZ
作者:
天性518
时间:
2013-3-26 19:48
加老师,我看了按照你步骤去看了一下,再把任务执行器的参数设定看了,很遗憾,还是未能找到答案,期待高手来吧。
作者:
missman
时间:
2013-3-27 10:55
我用英文版做了一次也是一样的结果。期待高手
作者:
Rosalyn
时间:
2013-3-27 18:02
建议可以在运行时看看菜单栏中Debug>Event Log,如果想让叉车每次都卸载10个货物,可以在send to port里控制输出端口
作者:
king
时间:
2013-3-28 23:42
静求答案
作者:
蓝桥书生
时间:
2013-12-16 13:06
[attach]1675[/attach] 真奇怪。。。。
作者:
a445608540
时间:
2013-12-16 14:43
好像是呀,可以直接在群里问问,看什么原因呀
作者:
a445608540
时间:
2013-12-16 16:11
使用代码可以实现,但是还有个问题,怎么设置的是第一个暂存区,结果叉车一直往最后一个运输
作者:
慧娴亚伦
时间:
2013-12-16 17:23
我按楼主的方式做了一下模型,发现了这样一个问题:
# R1 e1 g' Y$ l R
item到达之后就给叉车下达了搬运这个100个item的所有任务,顺序是从ts1到ts100;
. ]7 ]: N- r2 N3 M0 d
但是,当叉车拾取了规定数量的item之后(本例中是10个),就会重新排序任务,而且是倒着排序(但是原来的任务指令不变);
2 ^ K# x R( v$ ], F4 K8 N
也就是说,一开始就指定好了ts1去queue1,ts2去queue2……以此类推,ts10去queue5;
& C$ h6 F# o+ Z: t6 E
但是由于重新排序了任务,此时第一个任务就是ts10,第二个任务是ts9,导致结果就是先去queue5,再去queue4……
) J/ g# ^( W2 i) L0 E% \
至于为什么装载实体之后就会重新排序任务呢?
% `5 o9 |8 `/ k& o& t* P
现在我也不懂为什么。。。。
, _3 o) p; f8 p
楼主这个发现真的比较有意思的,感觉确实涉及到了任务执行器工作的某些原理(不仅是叉车,其他任务执行器也会有同样现象)当然希望大家再深入一下,看看能否有更多的发现。
作者:
大摸鱼
时间:
2013-12-16 19:49
9#
慧娴亚伦
作者:
xiexiaoch134
时间:
2013-12-24 14:24
这个与任务序列中的break任务执行有关。
作者:
657776724
时间:
2015-12-12 22:05
这个帖子不能沉啊,静待高手解密!
作者:
慧娴亚伦
时间:
2015-12-14 13:24
哈哈,其实11楼的高手已经告诉大家答案了。这个跟break任务有关。
作者:
ldl89772962
时间:
2016-4-12 22:26
长姿势
作者:
Kimver
时间:
2016-4-13 02:57
我研究了一下
9 |/ W5 F" ^% Q
1、首先,要明确叉车为什么可以一次性装载30个实体,很多人以为,叉车的容量为30就可以了,,其实不然。容量30当然是条件之一,还有一个必要条件是任务序列中必须有break任务(试着把叉车容量保持在30,把任务序列中的break任务删掉,会出现什么情况?结果是,叉车每次只会搬运一个实体)。
: c0 w$ q( l9 a1 Q/ g$ t
2、break任务被执行之后,新的任务会请求叉车去执行,请求被叉车接受之后,前一个还没完成的任务就会放在新任务的后面,等到新的任务完成,再去执行原来的任务。
! U* @+ J: W+ F2 w) r1 Y
3、基于第二点举例说明,现在假设该叉车的容量为5,实体到达之后,产生了100个任务在排队,ts1、ts2、ts3、ts4、ts5......ts99、ts100,叉车先去执行ts1,ts1包含5个任务序列(t1,t2,t3(break),t4,t5),当执行到t3时中断了,任务队列中的第一个任务就会请求叉车去执行,也就是ts2发出了被执行的请求,这时叉车还有能力(容量决定能力)去执行,接收了ts2的请求,那么,既然ts1还没执行完,不可能把它销毁的(除非设置了先占值),所以应该把ts1重新放到tasksequence中,等到ts2执行完之后,再去执行ts1,所以现在tasksequence的排序变成了ts1、ts3、ts4、ts5......ts99、ts100。同理,ts2被执行到t3时同样中断,ts3发出了被执行的请求(这时问题来了,为什么先发出请求的是ts3而不是排在tasksequence中的第一个ts1呢?因为被中断的任务需要任务完成一个finish TS来触发),这时tasksequence的排序就变成了ts2、ts1、ts4、ts5......ts99、ts100。以此类推,ts3中断后接收ts4的请求,tasksequence的排序就变成了ts3、ts2、ts1、ts5、ts6......ts99、ts100;ts4中断后接收ts5的请求,tasksequence的排序就变成了ts4、ts3、ts2、ts1、ts6......ts99、ts100。装载完第五个实体(即执行ts5),当执行到t3,中断了,但是拒绝了ts6的请求(因为已经到达5个容量了),这时就会继续完成当前的任务(即ts5),之后就会在逐个去执行tasksequence的剩余任务。
, r" k$ y0 N, U# P# l2 g
3、所以,我想,这就是为什么会出现叉车从下游的最后一个暂存区开始卸载的原因。
欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/)
Powered by Discuz! X3.3