设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7950|回复: 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'
: R9 p8 w  |  Q- U*/
7 j* S3 Q( ?: J7 r  Z" Q) n8 his# y) u$ F( Y; J* D3 Z
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
1 N( ]  F9 M* D* A; y* ?do
2 t1 x8 m& v& z$ x1 z% Z" Q5 t8 G5 ]        Lan := rootfolder.Internal.Tools.AOLlanguage;$ n- k9 E. ]$ k5 `( f4 t& S1 `
        if current = @.Destination -- else return
4 G# _* x- h9 E" _        then) U6 H. ]  K8 u7 }  J" u
                @.Destination := void;. _# u5 V' X2 _5 P
                if @.occupied then" i- w( Q! h6 x5 G
                        part := @.cont;. }7 b4 M6 m+ m8 K' w- D: w
                        @.transpOrder := void;; C" H/ n, o7 v8 ~+ `
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
: ?- E) h- r' N% c" I                                @,root.eventcontroller.simTime);
$ |& U. F/ }" X8 b. H* {$ P                        @.HasOrder := false;2 ]( N1 x( Z% u0 ^* x6 U
                        @.DrivingHome := true;
7 ?" b. g" K/ U# }                        rgManager.tryToStartTransOrder;
. O& V8 E6 x5 t3 e7 |                        if @.Destination = void- h# v$ q" x* `) G3 ]- S
                        then -- no transport order for vehicle @' c) R$ B9 a2 C) F! ]  v+ m
                                @.Destination :=# \2 j! W# L- @* {+ E
                                rgManager.nearestFreeStation(@,track.~);
! W1 Y* K+ H8 a                                newDirection(@);   
5 B. w6 o% I5 Q7 m7 J4 O. h% F                                if @.Destination /= void then( H' Q; P5 i5 U, {' T
                                        @.Destination.NumReservation :=& |0 ~: e! V, d7 ^( ]* O& N
                                        @.Destination.NumReservation + 1;, f  l+ x  V& V6 N4 ?& `
                                end;( V! t! j, l; A6 r
                                @.CurrIcon := "drivingHome";
% G# t/ b$ ~; C, c) j( [                                @.DrivingHome := true;8 Q. S( r, D! W  X2 x' S+ v" n
                        end;' U( w2 D9 J1 j+ v2 e7 K
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station, G# P# ^2 Y' @; o2 h9 N4 J
                        part := @.transpOrder;
% |$ w3 r6 r$ c& r/ v" c' ^  m, s                        part.move(@);-- load part$ m8 ?. \- M7 C" d+ @7 E; W* z
                        @.CurrIcon := "load";
$ i6 ]& w2 f2 Y% Z: X* J                        GlobalDistObj := part.globDestination;  P/ S" O9 z6 h" ^4 t9 H
                        assignLObj := rgmanager.rgAssignL;
+ n  \, \" n* j& Q                        row := assignLObj.getRowNo(GlobalDistObj);
$ A, k  Q8 j1 V0 E1 D, A+ a                        if Row = -1 then -- since 709 \  l, e0 T# c. I
                                if lan=1 then1 v* d+ \, }2 ?( o
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),9 J+ Z, `9 [3 [5 a- I# Y, B
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
- |* B' p+ O% w0 M' l                                else6 _# o7 G8 }' ]
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),$ l9 p; r: P* S# h- r
                                                to_str("in docking station: \"",?.~.name,"\""));                               
, S0 S0 ?& ]+ i/ p% e                                end;
3 `2 |; w4 k$ O) S                        else6 w: G1 a4 K. d* `: n3 g7 q. B
                                @.Destination := assignLObj[1,row];) h8 P% w5 a; h5 }% ~/ O; O
                        end;                          q* b# K) u2 n  n9 ]+ j! J
                        newDirection(@);5 s3 i- p  z! \, H
                        @.HasOrder := true;1 V/ A4 R' b7 {; D
                end;
6 @: D1 k1 b0 t5 X: x        end;1 \$ Y) t8 R# T; A
end;        -- of the method9 @$ G4 G) \6 N* M/ c
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
5 h3 z" O/ u0 J* O% j
3 z# r+ x( K. P6 N  O这是AGV_putin中arrive的method。( \) K7 {) }! }% l

+ u7 [+ s# `# _, l. F* |当到达物料速度越高时,这个报警更多,$ J/ X. T& Q9 v1 r
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
$ i0 @3 K9 W/ v6 q/ t2 S  n程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?* N1 a& H9 ]( Y3 p7 A- v3 T

( z* o9 Y, `2 @5 D另外一个小建议,就是move,所有的move都可以这样
' [, q6 l* l2 [5 U& F  }" h. t  L# P8 yif not move() then debug end
# A! G6 U# C3 L; T' R这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。, P! X5 Q$ S* z( ^0 @
plant simulation中的free libraries有AGV模板,  {  _0 G& I' n( Y# F' |- u
里面也有案例。
3 `% d5 @# P$ S* J& x- O我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。( ^' b" r8 q4 B: w3 J/ z/ ]

3 A7 K* G+ G  e, q3 ^我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ P1 ?# a* T( @
$ T1 y& H* }& K/ O那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 $ k0 d" ^1 _$ U$ e
这是AGV_putin中arrive的method。
+ p! M$ \2 X* I' A! G% ]% Z( M) y' i" e! Y% o- c- z" D
当到达物料速度越高时,这个报警更多,

8 L1 V5 w; w8 Q) |( D! Y. Q另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-7 05:36 , Processed in 0.015878 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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