设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8098|回复: 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'
1 p, P, B' i9 t7 ]" `*/3 J( }9 W. ^& q, D9 q5 p
is' e/ C2 ~$ Y' Z. @0 S) E: k
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
/ @8 h& A3 z0 }: ], a2 c9 F6 O/ [do- X: y- R6 q/ V
        Lan := rootfolder.Internal.Tools.AOLlanguage;
3 p" A, f  N: E- W; D8 z4 c9 F        if current = @.Destination -- else return
4 _! K6 `' Y  m        then1 t, @, m$ K* Z9 F( Q- s) n
                @.Destination := void;
2 z* p* o7 X( [                if @.occupied then
) W9 M) f8 N- O% }; |  r! L. p                        part := @.cont;  w2 U6 m+ \! ]# n$ m' G
                        @.transpOrder := void;
3 I: J1 h+ p" a                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
2 L8 U! G& o0 U1 c: Y                                @,root.eventcontroller.simTime);
: O' t" t: p) _1 U& g$ D                        @.HasOrder := false;
* D8 M6 I) U& z; ~" Q9 ~                        @.DrivingHome := true;8 Z7 |7 H; ~; F) g/ E1 f; K
                        rgManager.tryToStartTransOrder;' _& a# W  n8 U; B. f
                        if @.Destination = void
1 ^/ [7 t1 k* ~% e& P( Z; c9 T7 i                        then -- no transport order for vehicle @
& f) \+ L" X7 n: q- `, w& J1 }                                @.Destination :=
2 ]0 b5 F0 J8 U) c1 Z                                rgManager.nearestFreeStation(@,track.~);
! G" u% ]) U3 B+ \4 Z# {1 W$ j                                newDirection(@);   
2 k. h4 N, h8 `( A$ \1 }                                if @.Destination /= void then
" c9 z" s" Q/ K: R/ e* n                                        @.Destination.NumReservation :=' Z- A; n; i) P- U6 ~
                                        @.Destination.NumReservation + 1;+ P$ w9 c$ o4 l) x# [& P
                                end;
- \  B: Q  N+ O2 e3 Y                                @.CurrIcon := "drivingHome";
+ Q: }' Y6 O: R$ ^                                @.DrivingHome := true;
9 I% H$ j6 b) }* Y* L, }& O2 T* ]                        end;% {; Z4 @9 S: g4 }, l  M% g( e9 `
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
# b; `1 r1 i6 n. y. R4 ^                        part := @.transpOrder;
6 M3 K# i1 k$ Z6 q3 r, _/ w                        part.move(@);-- load part
+ \, i' I  r" t# V                        @.CurrIcon := "load";
& n' ]4 \& y; M2 s5 H, j                        GlobalDistObj := part.globDestination;
6 j2 p" q$ ]" y: G- d  S: y                        assignLObj := rgmanager.rgAssignL;3 g5 g9 i2 h5 _! O
                        row := assignLObj.getRowNo(GlobalDistObj);
) s  J0 p3 P" e8 y/ c- n; Y/ n9 {                        if Row = -1 then -- since 70
! j- I. M. n2 f: J" r                                if lan=1 then- @6 y4 a2 p. }! }) r, Y
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),) M5 _0 d( P: S: Y( B
                                                to_str("in der Andockstation: \"",?.~.name,"\""));2 d/ C: q7 F1 B+ `! R4 ]
                                else
& n* d. j0 @' ]9 E) c- `4 l                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),6 o2 l9 a0 W" o, ]6 ], }7 n
                                                to_str("in docking station: \"",?.~.name,"\""));                                / B( a; }9 Z$ r( m) P
                                end;* C3 V& o0 {4 |6 M6 M: [
                        else. p9 ?" `3 Q2 D, i4 r
                                @.Destination := assignLObj[1,row];, Y- l" O0 H/ `1 f2 ?: j% Z% [: b6 a
                        end;                        ! p: P3 n  M3 `8 ^
                        newDirection(@);( c- d( G+ z! d: W: M# |
                        @.HasOrder := true;
: n- h+ \4 ~7 a% k# p) m; l                end;
8 K1 M) t* }4 ]8 W        end;
+ r5 S* I& H2 [% |$ g7 B% [end;        -- of the method
' u5 a9 B6 @* Y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 9 |/ t5 F) {- n

+ T. l2 Q  O+ X: W这是AGV_putin中arrive的method。
3 D2 \# T+ f$ y5 {
; l: ?) p! g1 j, U3 R% }8 Q当到达物料速度越高时,这个报警更多,
, \- g9 y, W5 g/ Q可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。" U2 c6 L* I1 I4 X. I
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 r4 u9 h$ ], i1 u/ t8 A6 F: C5 k8 k6 ~
另外一个小建议,就是move,所有的move都可以这样
4 D+ l, `+ ^9 |) Y$ ^if not move() then debug end
) j+ B8 O! @& v1 L. k这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。' p8 N( j! Y9 d* k# n0 p: L; D
plant simulation中的free libraries有AGV模板,/ P) ?7 I1 z2 z4 g/ l* S( X& O
里面也有案例。: m6 [1 U. q' ]/ N5 |, G" I! K/ D
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
1 f. h- c6 i) v0 ], ~! h1 T/ h' d7 \- p0 x& r; D. B. i
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 $ B$ R) }/ n1 \2 g, h7 M* v

. v! v0 k! ~; }7 Y7 Q那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 7 k1 w3 n1 ]2 |. A5 X$ v
这是AGV_putin中arrive的method。* J+ L0 E! h" N* b$ {
3 G; @2 z5 O8 o
当到达物料速度越高时,这个报警更多,

' q) W( C! t  Y  |另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-14 16:26 , Processed in 0.016941 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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