全球FlexSim系统仿真中文论坛

标题: 【求助】关于货物的流向与拉入问题 [打印本页]

作者: liuzhifan    时间: 2017-8-13 12:15
标题: 【求助】关于货物的流向与拉入问题
简化模型描述:前端集配20个轮胎(16个主胎,4个备胎),完成后转运至中间暂存区,进行人工二次集配(4个主胎,1个备胎上线)。( j2 M- Q7 T# l' Z- `* d: Y' m
[attach]3872[/attach]
6 @" s: t4 A, c6 l模型构建思路一- U6 I0 o5 E- Y8 x0 w! e
为了实现二次集配作业,我采用在第二个合成器进入触发时发生消息给作业员,作业员在收到消息后,消息触发器触发,执行编写好的任务序列。
  v2 |! k7 b; l( k; l, F: ~" ~& D问题:实现了集配4个主胎,1个备胎的作业,但是如果中间暂存区没货了,操作员执行消息触发器的任务序列就会报错了。- D6 y- G5 C/ B9 w  u* A' v
解决办法:采用判定中间暂存区的货物量,来控制虚拟订单是否流入合成器4 i: b( ?' M% z' E/ u- @. L' ~+ M
思考:在中间暂存区缺货状态下,如何把取货任务序列先暂存起来(如暂存于操作员的任务序列队列,而不激活任务)。2 d% l1 @/ _/ i1 [2 b7 a
[attach]3873[/attach]
) v9 O5 s7 P  y0 d6 o- y* U" ]. v$ T0 a; M; {
模型构建思路二0 |( b1 F7 T7 s" d0 x4 x0 B
采用合成器的拉入条件来进行拉入(4个主胎,1个备胎),这样的话只有在暂存区有货时,操作员就会去进行搬运,没货时就不搬运,从而不会发生上面的报错。
. ~% O: z5 _. _& \" J% E) b[attach]3876[/attach]
% k& v1 n( ]3 o$ r& A[attach]3874[/attach]* S+ s9 S3 z! H6 r5 z- w
问题:(这个问题也是我经常弄不清楚的),模型运行时候只进行了一次拉入(4个主胎,1个备胎),
/ s4 i; d# ^" O. d7 }1 ^$ P: ~& p拉入的时候需要上游与下游同时准备好就可以进行拉入的触发,我理解的上游准备好就是触发了“发送至端口”触发器,- E3 X7 P# l2 C. [" B8 t
如果暂存区(上游)只进入了一个实体,就只触发了一次“发送至端口”触发器,那么是不是就意味着只能进行一次拉入的触发。, Q" f" f  W$ _! k* W0 H
[attach]3875[/attach]
1 X) ?3 v7 y! v# a: J1 y4 d1 y & M9 |& {# B/ z% B% z

作者: 蓝桥书生    时间: 2017-8-17 10:11

" a" o7 w* f& e6 S思路一:在暂存区容量为零的时候,是不能创建任务序列的,此时搬运物的指向空,执行任务序列的时候会因为找不到临时实体而报错。我这里写了一种解决方案:在操作员上加一个“state”标签,初始值为0,下游合成器进入托盘的时候先判断暂存区的容量,如果非零才向操作员发送消息,并将操作员标签值设为0;如暂存区容量为零则将操作员标签纸更改为1,表示操作员出于等待任务的状态。同时,当暂存区每进入一个托盘的时候读取操作员的标签值,如果为1,则向操作员发送消息启动任务。此外你的模型还需完善的地方有:你的模型只是产生了一个托盘,若是上游托盘源源不断的产生,则代码有些地方需要作改变,比如暂存区里item的引用方式再用first就会出错了,或者是一个托盘还未装载完时进入了一个新的托盘等等。$ E9 b1 o/ F0 Y5 g8 F3 N# J2 e& `

. d$ A8 e  r/ J! Y" A1 k思路二:你仔细读读你选择的临时实体类型数组的拉入方式代码,它的功能并不是按照数组临时实体类型的比例拉入item。你的模型只拉一次并不是这部分代码起的作用,而是暂存区使用运输工具里的代码的作用。对于拉入方式,我也在默认代码的基础上做了一些更改,可以达到你的要求。
( e! t, ]2 y9 b9 e' Fps:第一个模型版本是2017.1.4,第二个模型版本是7.3.6.
" E$ V; L4 j& C( O7 T8 g  M




欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) Powered by Discuz! X3.3