设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9562|回复: 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'- b6 m$ d* J# J3 \" H' B) k
*/
1 X0 R7 ^. r: x) \0 ais( N) }: H' j% j, w
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;$ q3 L! }! V, \9 N: [: [
do  I) J5 h# @) ~2 c$ A/ U7 ~$ L8 G& `
        Lan := rootfolder.Internal.Tools.AOLlanguage;
$ t! e  p) n% o; r7 }4 [        if current = @.Destination -- else return
: w) M, l' l0 g) ^- j        then
$ ?3 b" t% ^( |- `% _                @.Destination := void;  z: p+ r5 _. {/ B' I) P
                if @.occupied then
) v: w3 ~; D/ ?% _  G) Z0 k- R# b                        part := @.cont;- W' x4 D8 d1 t" c& X# ?5 V
                        @.transpOrder := void;
; T6 h% }) h. k8 Z; L                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,, R6 Y9 K5 M' ^4 L1 t6 o
                                @,root.eventcontroller.simTime);9 b  k( W2 j8 |' O' U
                        @.HasOrder := false;
& J6 W9 o# I; j/ f" X! w3 U                        @.DrivingHome := true;
' }; J* s6 i& q; F7 Y' e( C% ]0 y6 b                        rgManager.tryToStartTransOrder;
) n1 f( P8 D, N- ~# J& z+ ]                        if @.Destination = void
! k4 Q9 P7 ~4 \$ `# j1 e                        then -- no transport order for vehicle @4 q3 B; @. T0 _, P
                                @.Destination :=' \. l3 K2 ]' N& h. ]
                                rgManager.nearestFreeStation(@,track.~);
# C+ y$ x" y- f# S                                newDirection(@);   
$ S1 N6 M1 t. C: ?5 f  u                                if @.Destination /= void then( {4 d3 Y8 S8 l! T. f' |
                                        @.Destination.NumReservation :=
% ]- g; R4 ^* h8 T/ l                                        @.Destination.NumReservation + 1;
3 n- k& a! s0 c) E( I5 C( t                                end;
+ a! p, {4 I: T+ J                                @.CurrIcon := "drivingHome";
1 [% m/ C* K: g& Z7 ^% v' s                                @.DrivingHome := true;$ g. |+ D+ N  B8 y0 n6 ?4 c
                        end;: m0 K& W' Z7 G$ g" g! E
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
5 U3 m& ^" [" z. B) K6 Z2 y  e                        part := @.transpOrder;! I6 y( b! y- _9 R6 Z1 d0 g8 R
                        part.move(@);-- load part
2 Y8 B) W6 ?3 K  z$ f% m                        @.CurrIcon := "load";
! A; C* u1 x) Z: U! u7 c; {5 t                        GlobalDistObj := part.globDestination;
- o! q' t7 ]7 i6 n                        assignLObj := rgmanager.rgAssignL;
  l8 Q4 u) ~, h6 p. d; K% }                        row := assignLObj.getRowNo(GlobalDistObj);5 j+ v5 [) Y8 e# f+ O1 _
                        if Row = -1 then -- since 70. I- Z2 z3 I- s6 Q: Z5 G
                                if lan=1 then
+ d  G- V# |  u7 M4 u8 f                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
4 @; N# I* Q) B! m. E* @! C; Z$ p                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 v4 S; D) c% g' `                                else
- B% G9 p7 N7 B9 h2 q7 u                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),6 P9 q* A1 E# N9 U" v
                                                to_str("in docking station: \"",?.~.name,"\""));                               
2 B+ o1 w4 V+ b0 |+ P6 Y' J9 g                                end;8 f5 k8 a0 A& D2 z! I
                        else
% _' j- I( z6 ^7 |+ y5 h                                @.Destination := assignLObj[1,row];: _5 V) z& L7 t  `
                        end;                       
! U. w0 _$ V* Y4 [) l9 `                        newDirection(@);
* t- T' u4 v3 ]8 Y8 V. a* x4 C                        @.HasOrder := true;
+ E. A$ V; p* ]) Z                end;
6 S! [5 P4 D$ ?5 v$ V  r1 z9 ]        end;/ _$ E6 s- @4 [* f! A
end;        -- of the method
+ d4 A6 @  S) F( i1 F
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
& ]  R; m8 [+ r% U7 V; f$ n+ r6 s# n1 ?0 g; s7 H
这是AGV_putin中arrive的method。( h9 S: G% _1 I1 L. \

0 Z! N, q' O/ A# Y) h3 o4 ~当到达物料速度越高时,这个报警更多,
6 n& \  M2 r3 {. x+ Y可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。5 S2 }: y% G: U, z) N2 `! L
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?6 |& k0 F, N( U# o: m
  Q+ }- o$ I, S
另外一个小建议,就是move,所有的move都可以这样4 i, l/ g5 C8 [
if not move() then debug end& I) D" R3 u. O2 p( R
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。8 K7 G$ Y8 d- I) O; ^
plant simulation中的free libraries有AGV模板,1 Q3 ~3 Y4 k/ b4 `
里面也有案例。/ D& i( f: s; W+ q% ^3 A8 f7 j
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
6 |4 T( j  o' F" j/ j5 ^8 L: ~# j/ r. o" v( L$ Q
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
  Z0 h, H$ p4 u3 L, }0 J% r: @! x" L! V
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
( @) P2 E( K2 [' h4 u3 ]这是AGV_putin中arrive的method。5 `% M; u7 _! w% }0 `' O" R" U

5 ^: P0 @* `# U- L0 _) t当到达物料速度越高时,这个报警更多,

; i) {( G8 N0 U2 x另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-8 06:14 , Processed in 0.017391 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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