|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
- N* a- a7 ~' i9 z3 U' X0 u( ^" [. y- c
我的问题是,在每个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中的数值,不知道会不会有什么不妥。( ~4 f, y8 O) v
6 h) Y2 w# z4 [: S n+ c u
begin P_read arriving
) h# v5 y+ P0 ^0 ^& A7 X! y7 r while 1=1 do begin% h- f( J. n7 O1 v0 H/ u8 W0 z
read A_tote from "data.txt" with delimiter "\n"
8 h$ ]: _1 c1 l' Z read A_time from "data.txt" with delimiter "\n"7 K2 Q, ]6 v$ T
read A_leave from "data.txt" with delimiter "\n"
8 c0 h. m3 [6 u3 _& I6 i% L0 H read A_picks from "data.txt" with delimiter "\n"" Z% T* w; C8 @4 V: {( N
set load type to A_tote' T. k! |- d4 Y
if A_tote="tote 1" then set A_induct to 1- n, b- M) O! ^9 g' r0 _
else if A_tote="tote 2" then set A_induct to 2
1 |; Z6 X+ o+ e+ U( H6 P4 i4 N else set A_induct to 3 . y8 v' g5 f. g Q
set A_i to 0
7 Z) k# x1 v5 B* k2 n: S clone 1 load to P_induction$ _5 g) A+ ^! [2 x4 T! i2 y7 p
wait for A_time sec# {/ G( V! c$ z4 [ c, D
end
3 B* w6 o3 F9 ^end/ H7 G3 h( e# S. g# T
5 b0 x6 S/ j" @! C; U/ Bbegin P_induction arriving
! O" H2 y% ]# {" j4 \ M# z if A_induct=1 then clone 1 load to P_pick1
" N- a) B- L. R else if A_induct=2 then clone 1 load to P_pick2$ }. e+ V$ B' D f
else clone 1 load to P_pick3* z9 c8 D. K ]* P
end
& h, J, i* p& \5 o: l5 [% _' ?& N& P* i4 c4 N
begin P_pick1 arriving
* y( u L+ x6 w) g: e0 { set A_i to 1
w: }6 B+ u+ J, I move into Q_induct1/ @ v7 e9 {0 v0 I9 L3 q( a$ S9 L
move into pickaisle.induct1
6 K# I- \/ s: ?( R2 e while A_i<=30 do begin
0 t# s5 P+ O4 S% y% c3 W. D* _! } travel to pickaisle.con(A_i)
7 q* x) Q% B0 ?# b if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
' g* {8 k' J" Y2 H) c1 B" e+ S" t else wait for 10 sec7 G( o7 B; m& f' y
if A_i=A_leave then send to die
5 U$ O. Z. [ D else inc A_i by 1
! |# ^6 A! u8 Z" D end
8 C |( u: \# a3 a$ K- A; E/ rend5 {, A9 j( `! s& `* A: X. ]
6 ]* G/ m" ?) s4 h. o5 k- M, z1 gbegin P_pick2 arriving
0 E+ W5 @& E* z9 M! e. I3 k set A_i to 11
% g; n! B$ e5 W" |: | move into Q_induct2
0 F6 F( G8 W8 R5 F0 F7 m move into pickaisle.induct2
0 n& i4 ~* G5 x4 v while A_i<=30 do begin. ]' O& g6 e( A9 {+ @
travel to pickaisle.con(A_i)* Z) E5 T! p2 `* l
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec+ U# E W/ D: c) s1 D# N- b; `
else wait for 10 sec4 A8 w. t5 x1 O {8 k. K' u* j
if A_i=A_leave then send to die0 n1 E$ T0 e3 p! ]* h/ Q0 E
else inc A_i by 1
; n; t- j# i, J; F& c end* s) x7 E5 e7 F# K/ J' `, n' _
end
+ e7 c. J* d, {. G" [* x! Z
' Q, r1 {9 U3 C0 G* N3 rbegin P_pick3 arriving/ A' e: i" J; t
set A_i to 218 i* F$ G( P2 n2 [8 t
move into Q_induct3
8 v6 U- ^1 E+ r7 x move into pickaisle.induct3# ?! T7 F1 T+ s4 K2 O: }$ [. A
while A_i<=30 do begin, @; Q4 R/ Q+ M: y& f r. i
travel to pickaisle.con(A_i)' }. i, g4 ^5 h- V- O5 X/ I
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
: I3 P# c. d$ w) ~# X6 M; k% V else wait for 10 sec
; E+ n4 `6 r* G if A_i=A_leave then send to die
: d* L7 f. ?% d2 @ else inc A_i by 1
! E) ^0 W( r& d% H; z end- i% P) D, d8 E; \
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,其它按你的 ...
|