|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢
; t& [- X+ N& i$ z6 R7 Y* p/ k3 Z/ Y4 n% c' P
我的问题是,在每个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中的数值,不知道会不会有什么不妥。' I6 ^# U; P- E1 \4 O
7 U+ J o5 J0 d9 V# d' l
begin P_read arriving$ j- Y' T3 ?2 P
while 1=1 do begin
# `5 v, L4 c, l4 D/ D c- D read A_tote from "data.txt" with delimiter "\n"
' I+ e) ?3 l8 D: t read A_time from "data.txt" with delimiter "\n"& [$ t7 R: n* J* ]4 u1 `
read A_leave from "data.txt" with delimiter "\n"8 P8 k9 V! x4 a1 }
read A_picks from "data.txt" with delimiter "\n"8 z$ i3 F8 ^* o
set load type to A_tote
; D/ {" p, ^8 u& [; H; V if A_tote="tote 1" then set A_induct to 1
6 M1 p1 A" F* W% O& ^ else if A_tote="tote 2" then set A_induct to 2/ u `- t; B" x `* O2 C
else set A_induct to 3 ; J. Q2 _# X/ M4 D$ ~5 n1 l: t% I7 d8 c. a5 ^
set A_i to 0
- u( V& b, C1 Z% R8 o9 b$ f clone 1 load to P_induction
3 G2 U [% I! D, r wait for A_time sec
% q1 ?" M3 [+ Q$ P* ~5 Q$ ^! F& _ end; I8 q1 K( H' s7 Y3 G* J- d, }
end
3 r9 J+ Z! a- Q( s1 A; a2 O2 L% X7 j7 @5 I, U# D$ ?/ d
begin P_induction arriving5 l! W# i) E( Z9 [- ~
if A_induct=1 then clone 1 load to P_pick12 a+ B! ]3 J# z+ }$ X0 a" q
else if A_induct=2 then clone 1 load to P_pick2
$ f; ]' D+ Y' m$ W a) U else clone 1 load to P_pick3
9 j J: R/ @0 E5 O2 P6 vend
% X2 `3 Z0 A0 H; b f4 E- D6 \; I/ R. z1 \' n
begin P_pick1 arriving) M( U' b. d& z. [, S& A
set A_i to 1
6 `: I1 r/ Q! }( T: z. h move into Q_induct1
+ _) R9 c. D4 D5 X3 W move into pickaisle.induct1
0 j0 c T' {% w' o while A_i<=30 do begin
9 C& A" t# g; K8 ^* k7 h/ v travel to pickaisle.con(A_i)( g+ P3 b9 x( ^0 s5 B7 ~
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
& V( M, K+ e6 G6 T else wait for 10 sec
- k `7 `4 t' }! p if A_i=A_leave then send to die
! [2 K/ m0 \5 k9 Q" f& x. ] else inc A_i by 19 R* k/ C- A1 g# v/ |
end
$ n( S3 n/ ^. I2 ?" ^$ |end* T% I7 n9 L* x
5 {5 J$ T; h% Z" u
begin P_pick2 arriving
- g; \- I* ], F0 D$ t set A_i to 11' [1 d. C+ ~) z- s% k
move into Q_induct2: W6 i C: I, N6 ?0 f, r2 ]
move into pickaisle.induct2
% Q; n4 O- \/ _' f- r/ T while A_i<=30 do begin
! ~4 D6 }/ C4 D( W6 A, H( ? travel to pickaisle.con(A_i)/ I# o' f2 C. T- H) ]
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec2 O, f1 I. X# p8 h' U( o
else wait for 10 sec6 Q9 v( G$ \: n" d* d6 A& I4 x+ @
if A_i=A_leave then send to die3 Q2 D+ b) p% T$ w; H
else inc A_i by 1
( }* E6 v, U" U' k' G4 z: `- ? end6 g( Q* Q" f* d% i; k
end
3 o3 J2 Q) l6 D, K* ~0 f1 l+ q& l2 h& |/ y
begin P_pick3 arriving- s. R2 |2 t+ ^: h/ `9 m
set A_i to 21
8 }! n; m4 j# k8 K" F/ A, j move into Q_induct3. {6 D8 u- p6 {; b* g" |/ L4 P
move into pickaisle.induct3
7 k* _4 d( Y$ o6 @& K; u: r while A_i<=30 do begin
' G# v* b# d' w/ e! x travel to pickaisle.con(A_i)
7 o' ^/ n0 S( m9 { if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec1 C4 V* N& A# P* Z3 G; U& L
else wait for 10 sec
# h& r7 @8 I* {. w$ t. ~% T1 v; H/ ~6 x if A_i=A_leave then send to die0 p1 B. D6 M2 t+ Q0 \6 {/ G! V, Q$ V
else inc A_i by 1' _; X( V6 S# W* d8 d1 H5 |
end2 m) T; G7 B" K! t J, O6 Z( P
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,其它按你的 ...
|