|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢+ E/ t* a% {( J6 j% t" E( J
4 K! ~7 \3 J" g
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
6 e* Z3 {. G2 p
' n; b% F1 C- ]) M( Ubegin P_read arriving
3 c5 V/ d& i( _, A while 1=1 do begin
+ s. `9 o" N* v) Q read A_tote from "data.txt" with delimiter "\n"; b9 @% ^8 |" i/ h) V. m/ h
read A_time from "data.txt" with delimiter "\n"* x6 k/ B9 ]1 n$ g0 a+ E
read A_leave from "data.txt" with delimiter "\n"
9 n6 {. P" X: f/ Q; ?5 E" ~ read A_picks from "data.txt" with delimiter "\n"# `. m3 @" I$ b" _* G
set load type to A_tote, J- \) r w( y% d# Z5 b
if A_tote="tote 1" then set A_induct to 1
9 D0 _# g1 x/ G else if A_tote="tote 2" then set A_induct to 2
; A0 }7 {5 g3 ` else set A_induct to 3 * N" d: C8 p6 n
set A_i to 0
8 l/ J, E; ~% I2 R clone 1 load to P_induction8 q! D( r+ }: F/ x
wait for A_time sec2 M& B+ g: `2 g$ e8 r6 J
end
0 }: z9 T1 j2 d7 X7 g& x% k% Hend. D5 ^* @0 R! d$ F5 _
5 }+ J5 K* V3 m
begin P_induction arriving' d: f: K" q" F t# a
if A_induct=1 then clone 1 load to P_pick1
; u1 _. n" h* p* s" D else if A_induct=2 then clone 1 load to P_pick2! M+ a' Y7 a$ D" v" z
else clone 1 load to P_pick3% T' M( t) Q& [/ N* @8 i
end
* A- B; N' n- j7 S4 C" E& m$ a1 _7 b, B8 G# I5 i# k0 p4 m1 m- m
begin P_pick1 arriving
( S) r4 Y; ]7 j set A_i to 1
$ T4 V$ f2 J- B) S& J5 t K! W move into Q_induct19 d) [5 Q0 N' B C
move into pickaisle.induct1
8 z% c, R1 i& ^- b/ ] while A_i<=30 do begin% u. C3 F) k1 _- l
travel to pickaisle.con(A_i)
' U6 {* X# M/ ?3 U+ k \ if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
; Q( ^3 {* E) ? else wait for 10 sec/ S$ I2 Q! v' d- f6 u+ }+ j
if A_i=A_leave then send to die
1 @2 k8 Y( \* }+ n9 H3 r6 C. U) \ else inc A_i by 11 [0 t9 b5 d& j1 Q/ e
end
6 T' e5 r5 D' |end% l0 l7 D" d: Y
' o& \, u# G0 H( Y+ @begin P_pick2 arriving
. j: {* c8 \ S1 ` set A_i to 11
& W: Y' {% Y2 g- E9 J move into Q_induct2
- T; c, ]2 z, x* s move into pickaisle.induct2
" O4 W( K5 s! Q+ D4 L3 ^ while A_i<=30 do begin
# E1 T, d6 ~- x0 [5 x travel to pickaisle.con(A_i)) X$ @: ?/ s7 B% W) c- y
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
! C1 y; G$ E. v N2 K$ L# v else wait for 10 sec/ E; S3 u7 B/ u' X' m
if A_i=A_leave then send to die9 O0 x1 L% l2 Y* n, T
else inc A_i by 1
/ N* U& h& a+ O4 W. S7 P; j end3 o3 V: g1 B- O- k. S8 K
end1 c( u( a) o5 L( D# x
7 t1 z2 a- n1 n! `0 V4 mbegin P_pick3 arriving
( H2 L7 |* Y4 u/ w e. y set A_i to 21
5 c5 c; I" E& d) C0 |$ } move into Q_induct36 `2 v. Q2 t& ]% h: f# u
move into pickaisle.induct3
8 j( [' f n9 w2 v& s" c2 k while A_i<=30 do begin
- Y# j% V5 w- |) w travel to pickaisle.con(A_i)
, m- C6 B# S+ A8 t% g if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
: ~# L/ b8 s7 }" R) O4 y. @ else wait for 10 sec
4 e2 d' K8 s" R5 a if A_i=A_leave then send to die) l7 w' G0 v) t I% C- I3 M7 a& Y
else inc A_i by 1! \' | B" v3 X6 V0 D8 E
end* z9 H" K) s! 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,其它按你的 ...
|