|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
0 v2 T6 m1 [: D- m# }: y1 r! e( H! f8 l% C' i% k( l( r( I
我的问题是,在每个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中的数值,不知道会不会有什么不妥。& X% O( I2 `# F! Y3 _
. D ` H- ~# Y/ y
begin P_read arriving
8 B- Q* S- u$ O while 1=1 do begin
$ A6 A( h* k- |/ [) x. P read A_tote from "data.txt" with delimiter "\n"
8 p% l, ~6 r6 j9 }0 G read A_time from "data.txt" with delimiter "\n"
7 B* Z1 z$ |' g' M read A_leave from "data.txt" with delimiter "\n"
" m( B+ t4 m8 i" V0 r0 d5 ?! L# | read A_picks from "data.txt" with delimiter "\n"' r) D/ q2 f# u( o# b: ]
set load type to A_tote! d$ {" b. V6 H+ J( u4 j# r" W
if A_tote="tote 1" then set A_induct to 1
( C* a% h9 e4 z9 p% E else if A_tote="tote 2" then set A_induct to 2
# O, F/ Z6 M5 W else set A_induct to 3 2 F1 [2 c2 E, `5 Y9 a$ L1 v! z
set A_i to 0
4 w) L M5 }5 b! q1 |2 ? clone 1 load to P_induction. ]- M$ q$ q4 V+ F
wait for A_time sec* @: y) |! E. g6 a
end
; g! x+ |. F2 kend5 T" {, b9 Z+ D% b% ~6 n
1 J; e3 g E8 [+ L! ? z4 t) D2 l+ Hbegin P_induction arriving Z2 R5 z$ W4 I" J/ a
if A_induct=1 then clone 1 load to P_pick1
; c/ v% t6 Z& Q5 m+ g' H else if A_induct=2 then clone 1 load to P_pick2
: A5 h; z$ \* x$ o8 u) {5 K, U else clone 1 load to P_pick3 @! {3 B8 y8 _* X, X% f
end0 Z$ J4 x& B2 I a: p
( i; `# H1 a1 J9 b0 q
begin P_pick1 arriving
' ?& S3 Z) h- D" |0 k: M% n' A set A_i to 1
8 [9 `8 s* ^2 T4 o1 Z move into Q_induct1
0 ]5 C( R$ [! a$ B: @+ u9 _7 x move into pickaisle.induct1
( }' A2 k. E! U" ?0 v- v- G( U1 `( w while A_i<=30 do begin
1 L/ _& A; ^- Q travel to pickaisle.con(A_i)
8 M6 ~. k$ I) C) f. Z& L3 x& J( ?. ? if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
- K3 _: c* r3 _4 P2 ~3 F5 u' E" ^% \ else wait for 10 sec6 A& k5 T' }8 A5 w, W& j9 q
if A_i=A_leave then send to die4 ~7 L% ^0 j5 t. b3 E, ]2 k) \ a
else inc A_i by 1
1 [6 n9 V5 E h6 M( Y, C, p' ^ end+ g4 w$ G! g6 H& q6 {, d
end
4 h) T8 L8 O4 |0 s
! b8 x8 I# g1 x0 s6 ]begin P_pick2 arriving
. T. v7 G# }4 N7 y. Q, C' c set A_i to 11' J9 [5 c3 K% A3 x) y
move into Q_induct2
9 E& D Z2 ~1 C8 |( }! l! e2 r move into pickaisle.induct2+ p( p8 n& |7 j5 y5 R; _. x( r% X4 n3 E
while A_i<=30 do begin
( p5 H. B3 t+ n8 v9 ] c6 [: i travel to pickaisle.con(A_i)* `7 V- S- Q! n, r, p: X
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec8 ]2 n9 V5 ~% P+ v o. W
else wait for 10 sec2 k- S# C3 A& C! P* m& G
if A_i=A_leave then send to die* b# F! P X; Y: I; n! R
else inc A_i by 1 ~) u6 a, O5 M K# y
end) S, ~. n# K6 ?2 H
end
* t6 R" _ N1 T: c8 P3 |) b3 K$ M& I* R% Y
begin P_pick3 arriving+ M9 w; M I3 ]9 B
set A_i to 21
P+ e- Y# p7 e. u5 \6 U8 f1 C0 h move into Q_induct3
2 |# G: J# I9 k0 q( Q move into pickaisle.induct3
7 C% F. A/ N- b7 l9 B9 G while A_i<=30 do begin
1 r; y0 F: P9 X5 O, q4 v travel to pickaisle.con(A_i) w. G4 P! w! q7 q1 _- Y5 ]
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec6 r5 A* R5 _6 g: a+ |
else wait for 10 sec5 |) ~% o3 ]4 s
if A_i=A_leave then send to die& E' m. U4 s) n/ B
else inc A_i by 11 g. p9 [3 G7 N; v0 U) c3 ^0 I' r
end7 y$ d- s& m* l) W6 N
end |
最佳答案
查看完整内容
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,其它按你的 ...
|