全球FlexSim系统仿真中文论坛
标题:
releaseitem命令简介
[打印本页]
作者:
zorsite
时间:
2017-5-13 12:11
标题:
releaseitem命令简介
本帖最后由 zorsite 于 2017-5-13 12:25 编辑
/ a/ k4 X8 \- E
" i- s2 O' c3 I' y- L9 |: q
releaseitem(obj flowitem [, num port ])
7 ]% g9 L0 }/ {4 }1 V# [( C
释放指定的临时实体。
: W: P; z+ x( h
releaseitem命令仅用于以下两种情况;
, F, m$ k- Z7 R0 B
1.临时实体在基础固定实体(BasicFR)之中并且尚未被释放。
$ o' N, n' p; m: p/ K' y
2.临时实体在任意固定实体之中,并被holditem命令控制。
4 e D* ?4 I3 w. i
第二参数为可选参数,用于指定临时实体的输出端口。如果指定此参数,临时实体被释放时直接由指定端口离开,并不激活“发送至端口”(Send to Port)触发。如果省略该参数,将由“Send to Port”来确定输出端口。
. K7 _: R6 l1 [0 }
本命令执行后将返回一个整数。如果第一参数中指定的临时实体存在,命令执行后将返回1,否则返回0.
1 v! X* }- L( g& T) G( M2 v
* e$ A; Z1 |9 Y8 x5 W
命令示范:
# \9 G* _$ q( Y A1 E. s
releaseitem(item);
1 h' P" z+ F& d9 Q8 g9 d
releaseitem(rank(current,1),1);
: r& A0 U; a$ h
releaseitem(last(current),getitemtype(item));
4 Q9 Q. J3 Y2 h
3 P6 b- {) I1 ~. c6 S
实际使用中发现,如果要释放的临时实体不存在,程序将报错。
0 y& \* |& ^: X" f2 i8 `
使用该命令时需要注意,确保第一参数flowitem指向正确。
! s" R/ d2 u0 [1 _6 e8 i- _% {
' D% O* f: a2 V: { v
1 L, s/ z; M% f; p2 d8 C5 C( _
案例1:
& h& G! r. V7 I, ]$ Q5 z" n7 W
使用releaseitem命令释放货架中的2个临时实体,在货架的“发送至端口”中设置“不释放临时实体”(Do Not Release Item)。
% F E2 ?5 T4 f& e
1.如果命令执行时货架中没有2个临时实体,程序将报错。
$ K8 j3 a# h8 G; n% f$ B
% D, x. b0 ?" u; Z
2.假设货架存在2个临时实体。
4 K; H- j* e5 Q2 ?
! {1 d- j3 m! Z _& N/ Y
8 C# T9 W! e: [! B1 y) q: X
(1)不使用运输工具。
2 D; B! q+ P$ r$ j' v
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1)。一旦命令被执行,第一个临时实体将立刻离开货架,此时货架剩下1个临时实体。在第二次执行releaseitem时,第一参数该如何写?是releaseitem(rank(current,1),1);还是releaseitem(rank(current,2),1);?
4 I9 j) X S h% d, ]: {. O
第一个临时实体离开后,原来的第二个临时实体现在变成了第一个。如果要释放原来排序为2的临时实体,仍然要使用releaseitem(rank(current,1),1);
$ Y8 Z$ |) G; s, s; I2 u2 t
. `" Q9 z$ }% q$ t" _- T
9 v1 J: m* C5 q: H2 R' T
(2)使用运输工具。
) t2 O1 T, V5 j
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1);一旦命令被执行,货架将调用运输工具,运输工具先执行travel命令,行进到当前货架。也就是说,此时虽然releaseitem已被执行,但是flowitem尚未被运输工具取走,并未离开货架,此时货架仍有2个临时实体。在第二次执行releaseitem时,应写为releaseitem(rank(current,2),1);
5 J0 P7 b6 [8 q r% }- i1 Q. x
& ~/ ]) V( B+ S4 K; K/ x5 g
d% m6 l6 ]5 o5 }8 `
3.在上述代码中,第二参数输出端口均未省略。因为在“发送至端口”中设置的是“不释放临时实体”,也就是说,临时实体如果要离开货架,将无法从此段代码中获取输出端口号,因此必须指定输出端口。可以尝试着删除第二参数,看看模型运行效果。
& j' [2 Q0 ?4 J& e; w# Y0 E4 x6 R
7 I0 k% z8 U+ X, U+ ~- y
- r$ g7 Z0 D# n2 o
案例2:
$ H; M/ @" | H+ ^8 ~- j/ e
假设货架上现有10个临时实体,并且仍在不断补充新的临时实体。
( M/ ]5 ~0 k; v
下游实体发送请求,需要5个临时实体。货架调用运输工具,已经发送了3个。
. G" M7 K; c2 i& V5 ^8 m
现在下游实体发送了新的请求,需要3个临时实体。此时货架应释放哪几个临时实体?如何实现?
作者:
李锋
时间:
2022-2-28 13:16
请问,不使用运输工具这种情况在哪里编写代码呢?
欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/)
Powered by Discuz! X3.3