|
|
遇见一个难题,请教各位高手。# w% r$ Y+ j( C
1 f5 y; b/ S/ D3 ~
使用transporter将物料从A点运送到B点,通常情况下,每次运输100件,但是运输几次后,剩余的产品不够100件(例如订单总数是220件,第一次运输100件,第二次运输100件,第三次只有 20件可以运了),当运行到第三次的时候,仿真就停滞了,无法继续下去。不知道如何修改程序(我现在的程序如下)。9 D# M2 v3 m% C9 \# `5 ]
( S6 X6 M6 z/ |- S( W$ s9 ]需要说明的是,A点的运输量不是固定的,因为有两台并联的机器,因此我无法通过表格直接得出已运送量和未运送量。1 U7 F- c! i) Z! m2 G }
. z7 u! h H0 H$ u3 J is6 I( C/ c6 {3 G# m# O6 w
i,m: integer; -- 整数变量
4 a( ^; k, k+ E; S! a: | Name:string; -- 字符串变量0 A( W B. t \# M6 K* S
Obj:Object; -- 对象类型变量
9 i6 x# Y# H2 H+ L3 f B$ y, v- j- Y2 W' s) F* r- f$ o
do
7 c7 }0 _) D2 _ m := str_to_num(omit(?.Name,1,1)); -- 先取Drain*后面的数字,在转换成整数类型
" D2 C2 t* p: C Name := sprint("BA", m); -- 生产线名称+ A/ j, R8 F5 X- \* R& u- k
Obj := str_to_obj(Name); -- 转换成对象变量+ {, o5 ]( C; M1 H" f7 `/ ]& i
6 j# N2 }0 l6 z7 Z, U, u FOR i:=1 to 100 LOOP
. O0 h3 q7 `: S6 r, m1 f waituntil OBJ.occupied prio 1;1 R5 V7 `$ o/ K- u' L6 [5 M
OBJ.cont.move(@); ! \6 B* W t! i5 c' Y8 q' P- s. g8 P
% d, O7 s% ^- s6 _( S: L- c: q7 J+ w NEXT;8 v8 A1 }; O, d7 n- x
@.backwards:=false;. u# e! ]4 A6 N
end;: p1 ~0 ~3 t% X+ q0 F" i
|
|