|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢- t5 ~0 L; n z8 O" l
/ P) y) b0 b# Q我的问题是,在每个P_pick的process中的while循环内,总显示错误Expecting QueuePtr or Location, but found PathPtr. 在我定义所有的attribute的时候,从来没有定义过任何QueuePtr or location or PathPtr,为什么会出现这种错误呢。 我这里面A_picks是一个30x1的array的load attribute,我想用A_i这个load attribute来读取这个array中的数值,不知道会不会有什么不妥。- Z0 a' ^; m" k, h1 k5 z
0 X, Y* I6 n7 B. Q1 S+ a3 h+ L1 vbegin P_read arriving7 m8 [' b0 `# W
while 1=1 do begin
* k# Y" I. ?7 |6 j% m- A( x! [ read A_tote from "data.txt" with delimiter "\n"6 e+ \1 {5 L4 D' h; @: w
read A_time from "data.txt" with delimiter "\n"
]( L( O: ^3 Q# I- C5 c Y read A_leave from "data.txt" with delimiter "\n"6 o# X, u8 _6 ^7 Q1 ^3 ^
read A_picks from "data.txt" with delimiter "\n"% A* K5 z. Z% p4 R: X) |9 B
set load type to A_tote
, v2 U1 \ z/ m- D, M# { if A_tote="tote 1" then set A_induct to 1) D) O8 L/ n/ {7 z8 k1 @
else if A_tote="tote 2" then set A_induct to 2& y0 d' @" D: z+ E) N
else set A_induct to 3
/ e) s" h- B# I6 H; V set A_i to 0: W6 f5 o, \# W9 A+ P3 `) H
clone 1 load to P_induction+ D4 }5 E/ ^# E- e( b2 z& g; n
wait for A_time sec
% k c2 X: c3 J; B9 N5 Z9 E" k end/ q# k- C0 T. o
end/ y' T1 h5 m( Y4 ^. t3 l7 z
3 h, L! l0 c* x& w' B# r4 s
begin P_induction arriving
- ^: X2 p* {0 A* b. v if A_induct=1 then clone 1 load to P_pick1
4 Y1 J X4 y+ A/ U& k! R else if A_induct=2 then clone 1 load to P_pick25 L; J2 p$ Z9 X1 l: ~4 Y- x6 q
else clone 1 load to P_pick3
) T+ w9 _0 L4 e! X& _3 I" a& lend
: l6 w$ `1 T K ]1 a, O0 V' J: z$ `" ~
begin P_pick1 arriving
6 R0 D. f/ t7 h4 {1 A# e% q set A_i to 1 f8 X( i: v5 O: ]2 Y
move into Q_induct1
( e3 H+ H1 ~' u7 e5 j0 _: y- f move into pickaisle.induct1
/ }; f* C" `! L7 @* o8 |4 g; q. Q while A_i<=30 do begin; r0 z! L% v& k/ L' @4 T
travel to pickaisle.con(A_i), D' {: f: L% w0 z F# ]+ p$ h& ]9 a. j
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
/ X, ^: U ]4 l! w, X3 N) |" [ else wait for 10 sec5 }) c$ |; w# }9 u8 N) p
if A_i=A_leave then send to die
+ s9 Q8 H4 Y( ^9 h: v6 A else inc A_i by 1
3 K! B4 e* r) {# m end$ i8 x3 W; k& A! P% A1 |4 b
end
2 i. O, f, X8 w2 s# r! G1 G O- o3 T- V" ~
begin P_pick2 arriving4 C% Z5 o0 _! i' _% I$ o: `* ?' V
set A_i to 11
. ?: Z' ]3 @ t move into Q_induct2
1 a8 }$ S" G- s0 z8 I5 t7 i8 d! [ move into pickaisle.induct22 h9 c5 b& I! D) l
while A_i<=30 do begin
- K2 i7 E6 l& d: C! ~ travel to pickaisle.con(A_i)
9 a. Z2 G7 K7 ^/ ^8 j2 l+ N* a: d if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec0 L; {7 p; u6 i M q( T7 G
else wait for 10 sec0 K5 x# o1 Q- c5 r: k' r
if A_i=A_leave then send to die
9 G# y# z1 V& ?! @2 K# c' E+ N# c else inc A_i by 1: E; L) o8 J3 `% N! V$ `% o; x8 `
end; \7 Q8 q. |$ Z& F0 H
end) Y; {9 d, A: e/ O, O8 ~" k3 Y
: J& \) V$ K r
begin P_pick3 arriving
6 r% x! Z! N, {0 { set A_i to 21
5 C* @+ m1 d' z @( [( o' h8 d0 u move into Q_induct3
" a8 g0 \3 ~- l4 o move into pickaisle.induct3
' ^4 w4 D+ E+ g v, u while A_i<=30 do begin- N* z) M; Q; r* U7 Z
travel to pickaisle.con(A_i), l. b- e3 E6 \" {
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec, a6 J* O% b% J8 p3 s# c
else wait for 10 sec& m6 M P( f# A7 B) Z0 N
if A_i=A_leave then send to die
: \ ]! N! `) [1 j y: O5 f else inc A_i by 1
9 A) X+ E4 n& X; \! I end
% ]% }) ~$ e3 W8 J4 q2 X6 Aend |
最佳答案
查看完整内容
pickaisle.induct1/2/3是个什么东东?
move into后面,应该是一个station或control point,或者Queue/Container/Vehicle/Segment之类的东西。看你的报错信息,这个induct是个path么?
AutoMod Editor的语法报错信息,有时候会指在下一行,必要的时候要把上下几行都看一下。
另外,你的几个P_pick是完全重复的,建议以如下方式修改,可以减少代码编写量:
1. 创建一个Process:名称为P_pick,number of Processes为3,其它按你的 ...
|