全球FlexSim系统仿真中文论坛
标题:
关于叉车工作原理的探讨
[打印本页]
作者:
zorsite
时间:
2013-3-26 13:18
标题:
关于叉车工作原理的探讨
本帖最后由 zorsite 于 2013-3-26 13:41 编辑
$ o, O A0 L% U8 A) H# f
9 @) Y( `$ q" _7 g
建立以下模型:
4 [) g8 S# I. y* |8 C1 n2 m( d4 U
发生器-->上游暂存区-->5个下游暂存区。
; H2 n# q# n! k" p
发生器与上游暂存区A连接
* B; B" _$ T- w/ z
上游暂存区依次与下游5个暂存区A连接
; R! s( Q0 _/ S: Q0 a9 k
[attach]1292[/attach]
+ c1 T. U1 N! X
# C5 L/ Y5 b6 X- a8 A
1.设置发生器一次性到达100个货物。运行结果如下:
. k8 z( Q2 }/ x/ e0 v2 Z$ [
[attach]1293[/attach]
6 _/ Z( o, b. j( Y6 @ C! F7 x% B
因为上游暂存区的输出端口默认为“第一个可用”,所以所有货物都被输出至下游第一个暂存区。
& z' \ o3 t. L. U6 C9 x3 ^4 a
如果第一个暂存区满,再向第二个暂存区输出。
4 }# F# I7 Z1 `1 l6 E9 ` B& Q
1 L& p3 {+ s) M- \6 U, H
2.添加叉车,设置上游暂存区“使用运输工具”。运行结果如下:
: z5 y$ I6 y/ \0 r
[attach]1294[/attach]
+ o# R# ?. b* Z( }7 l
叉车每次运输一个,依次运送至下游每一个暂存区。why?
8 h8 o% B+ r. J1 _8 J# B
此时上游暂存区的输出仍然为“第一个可用端口”,但为什么不像1那样,先把下游的第一个暂存区装满,第一输出端口堵塞,然后再输出到下游的第二个暂存区?叉车是怎样的工作机制?
# A1 |1 L8 I4 U! E; X8 k' g2 W* U1 ]
& a, E5 S, Q% `
3.设置上游暂存区“成批操作”,目标批量为30,运行结果不变。
- [+ I7 j" W/ r9 Q* i
! {( D& d1 }1 b: |0 |! }
4.继续设置叉车容量为30,奇怪的事情发生了!
' d4 z# x: X' ?" k3 \3 U; e1 @
[attach]1295[/attach]
2 ^3 J+ W" e- b
叉车一次性拾取30个货物(这很正常),但是却从下游的最后一个暂存区开始卸载!what happened?
! g0 i- I3 ]/ U/ A2 T3 ^: i
' O6 R* g) Q; g6 [
5.设置叉车卸载触发:
2 Y4 ^0 |( G V6 B& y
选择第一项:到其他站点卸载之前,将所有以此工作站为目标的临时实体卸载
1 z$ s( ` s, S$ J2 d$ N0 n; m
[attach]1296[/attach]
0 B9 p! j0 L7 s3 d G. P1 t
如果不进行此项设置,则叉车装载30个货物之后,依次到下游没一暂存区每次卸载1个货物,轮番在下游5个暂存区进行卸载,直至下游每个暂存区都有30/5=6个货物,此时叉车上所有货物卸载完毕,返回至上游暂存区重新装载,见第4步图。
; |6 W/ c: Y" A# R& h
5 I+ `/ {2 O6 k2 V* I) F* V& C
进行此项设置之后,行进至下游暂存区之后,在每一暂存区一次性卸载6个货物。
3 T# T6 E2 g6 X5 [
[attach]1297[/attach]
1 P/ V! |* D: N+ H
1 g _% J. l* b4 Y) Y) \
6.如果想让叉车每次都卸载10个货物,应该从叉车入手呢?还是从货物入手,对货物进行打包?如果不设置上游暂存区成批操作,又希望叉车每次装载30个货物之后再走,又该如何设置?
, G# s2 Z- E# {. l& ^
# g- k* d, [$ M* ~+ J
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
我按楼主的方式做了一下模型,发现了这样一个问题:
0 V$ D5 _5 ] p" r- Q$ P9 z: p3 @
item到达之后就给叉车下达了搬运这个100个item的所有任务,顺序是从ts1到ts100;
. s- f$ h1 O" {8 A% e
但是,当叉车拾取了规定数量的item之后(本例中是10个),就会重新排序任务,而且是倒着排序(但是原来的任务指令不变);
8 i! ]' b" B( P8 L; w2 P; `
也就是说,一开始就指定好了ts1去queue1,ts2去queue2……以此类推,ts10去queue5;
8 Z* D$ ~6 N* r4 ^: P
但是由于重新排序了任务,此时第一个任务就是ts10,第二个任务是ts9,导致结果就是先去queue5,再去queue4……
; Q: `" A/ S) c1 g4 p: `
至于为什么装载实体之后就会重新排序任务呢?
+ k# w% r2 b- t ~9 R
现在我也不懂为什么。。。。
# Y5 F* f/ [$ f4 K% n8 j
楼主这个发现真的比较有意思的,感觉确实涉及到了任务执行器工作的某些原理(不仅是叉车,其他任务执行器也会有同样现象)当然希望大家再深入一下,看看能否有更多的发现。
作者:
大摸鱼
时间:
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
我研究了一下
4 F. r- X7 U+ n, P8 i! B# E6 E5 u# e
1、首先,要明确叉车为什么可以一次性装载30个实体,很多人以为,叉车的容量为30就可以了,,其实不然。容量30当然是条件之一,还有一个必要条件是任务序列中必须有break任务(试着把叉车容量保持在30,把任务序列中的break任务删掉,会出现什么情况?结果是,叉车每次只会搬运一个实体)。
9 L) M. H f4 i: a0 l* Z
2、break任务被执行之后,新的任务会请求叉车去执行,请求被叉车接受之后,前一个还没完成的任务就会放在新任务的后面,等到新的任务完成,再去执行原来的任务。
) b) o1 `; R2 s5 F
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的剩余任务。
% h; L5 S& I v. ~
3、所以,我想,这就是为什么会出现叉车从下游的最后一个暂存区开始卸载的原因。
欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/)
Powered by Discuz! X3.3