设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6527|回复: 9

[求助] 用AGV模板发生了以下错误,请解!

  [复制链接]
发表于 2011-11-5 16:38:28 | 显示全部楼层 |阅读模式
问题在哪里?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2011-11-14 10:37:54 | 显示全部楼层
没有解决,再顶一下。
 楼主| 发表于 2011-11-17 11:03:27 | 显示全部楼层
/* called by:        entrance ctrl of the object 'track'
: A$ R+ w' v6 ~*/
3 Q$ y& Y% t2 t. x) Sis
) F" i6 z0 H* p: }        part, GlobalDistObj, assignLObj:object;row,Lan:integer;/ z- Y7 F4 Z& u& F% y6 d
do
7 R3 v! B; c' e- u! ^, y' A' v        Lan := rootfolder.Internal.Tools.AOLlanguage;
" z( `4 i  b4 g" j. `3 y6 N        if current = @.Destination -- else return# e$ Q0 S7 ^' A
        then
9 E! L, [. q$ r" w                @.Destination := void;5 z/ M0 I9 b% ~! m3 ?. J7 u' i
                if @.occupied then
7 Z3 p! }1 Y! q) \: z8 m                        part := @.cont;
  Q# b) P& P- o! @% _7 r                        @.transpOrder := void;
& _, g* A" a! B. r) Z                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,% c' w, ?( x- o& R, l# N% Q9 H
                                @,root.eventcontroller.simTime);
4 H* O- Z0 x  b2 d0 e1 b                        @.HasOrder := false;
7 ]# O/ K0 x6 o0 O$ O                        @.DrivingHome := true;( H# e. T+ |1 R4 S( C  W
                        rgManager.tryToStartTransOrder;6 N& j$ r- e( b+ t+ ]
                        if @.Destination = void' b: O; n- K- [4 S* N
                        then -- no transport order for vehicle @
- y: e+ i, {/ C, X                                @.Destination :=! P1 V9 O! N$ J5 O& W, k
                                rgManager.nearestFreeStation(@,track.~);
3 @8 e6 [. G7 i                                newDirection(@);   
7 o- c3 v  x* |( b' A/ ~$ C7 p9 A) f: E                                if @.Destination /= void then
- z. X3 [+ n* d                                        @.Destination.NumReservation :=2 k( {9 E! D8 s
                                        @.Destination.NumReservation + 1;
5 ~, F% X9 R0 d7 v& |, ]                                end;
1 s+ z0 x, w# }/ D( r0 ^                                @.CurrIcon := "drivingHome";
- Q3 n, _' p! v" W+ ^/ B4 `/ E                                @.DrivingHome := true;
3 F2 V3 `( }! V& A, [                        end;" ]7 I$ p3 X: _/ v' e( o  O) v
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
# X; ^4 Z' M9 ^) B                        part := @.transpOrder;, q9 S6 m0 e9 I, W; p
                        part.move(@);-- load part- |7 i3 C+ J4 j. [9 V
                        @.CurrIcon := "load";3 V# ]1 t% ]' J$ I
                        GlobalDistObj := part.globDestination;4 D9 H6 A5 s6 U0 R
                        assignLObj := rgmanager.rgAssignL;5 E4 U1 m8 _0 ~. P0 y
                        row := assignLObj.getRowNo(GlobalDistObj);
0 a# X* W7 y* H; n$ m" @9 z( m                        if Row = -1 then -- since 70
9 C7 k' A& ]; s2 _/ Y$ R, f                                if lan=1 then4 A1 j! w' s1 B: J
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
0 A4 y& A  U* o& A  d                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ p1 A/ z3 M; M( y5 [* Z                                else4 Z- w2 A" q( E2 Z
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
. ?; R$ k9 b5 A: V% Q+ ~                                                to_str("in docking station: \"",?.~.name,"\""));                               
5 `  c. T9 k+ o3 s  i1 q* n3 `                                end;
: ?/ x# J- L0 Q( o                        else
: R% I/ g) t2 @! R& p                                @.Destination := assignLObj[1,row];
  p' |3 R( ^, V" k- D                        end;                        - U8 ^9 Q" g8 J" B
                        newDirection(@);; L' U% T% h5 D
                        @.HasOrder := true;8 B5 m; [+ C% H( [( x7 j
                end;! R5 A* O" s9 p0 B3 K0 R* R
        end;" X/ c4 b( _  b8 C2 k
end;        -- of the method
1 T: B6 j* c% A( x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
. B# G$ P+ U" [+ S( P/ [7 Q) c5 J/ C3 ^5 X" U7 F
这是AGV_putin中arrive的method。3 f7 g7 ?- K3 H4 F5 ^. ?1 U- a3 Y

6 K& r) V- m  `% h当到达物料速度越高时,这个报警更多,$ {1 P, a6 j, ^0 `
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。$ g) F9 ?9 i, a, W) Y$ n! N
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
, Q! ^1 D# f* D: K# t$ O% x: u' e2 F, E2 E8 Q7 D
另外一个小建议,就是move,所有的move都可以这样5 e3 k4 p9 ^+ z( z7 t" s
if not move() then debug end$ N2 B0 A, K8 u3 G2 N8 s
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。7 r* `+ D8 ~* r' N0 N
plant simulation中的free libraries有AGV模板,1 M5 E: }; d% {
里面也有案例。
0 q4 b/ ~" v# p: [8 Q我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
2 Z2 e% t' u; W, X
# |$ y+ g% u; a/ D我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" j3 \( f7 k$ A. O1 o* Z* }( w/ m* X, M- O6 Y
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 : B+ m' R# c8 }2 G
这是AGV_putin中arrive的method。
; e/ t4 L1 ~0 F7 }1 N( n- y2 Z1 R, @7 A: T; d* d( K
当到达物料速度越高时,这个报警更多,
! c7 @' `. |: P3 d
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真   

GMT+8, 2026-2-11 00:11 , Processed in 0.021700 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表