设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9486|回复: 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'2 ~; S: G5 ?1 S3 p) ~9 P  x
*/
. X' F( G: V# X  _( }* R3 ]; \is6 j' I( P; b6 k/ N+ M2 O0 S8 C
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
7 V$ h# L( ^% o1 e+ \. ?4 e0 H$ Gdo
7 |6 `7 }. v4 R  M) c# t9 F        Lan := rootfolder.Internal.Tools.AOLlanguage;
6 s2 O  a# X* [- [; R- u7 [        if current = @.Destination -- else return
) s& j) N3 Q2 ^8 B        then
) F8 D+ z6 n/ k8 p5 N                @.Destination := void;
. x) B3 C3 M7 V0 K8 Q                if @.occupied then6 N- C  c' D# E1 i( c
                        part := @.cont;- }( f6 f! x. Z' c% y
                        @.transpOrder := void;/ U4 p+ N- E7 m9 J% R1 |/ u9 Q0 B8 N
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,- U9 a) G6 k+ n
                                @,root.eventcontroller.simTime);! r  o3 `$ T- X. }# g" D2 U: v
                        @.HasOrder := false;
0 h7 N- ]3 C0 j0 b# i) m& M                        @.DrivingHome := true;4 I* G7 @( q6 t1 z: i3 M% g
                        rgManager.tryToStartTransOrder;: Z2 ~# u! `* k  i: K
                        if @.Destination = void+ k8 H% `2 G, ?7 N
                        then -- no transport order for vehicle @
- ?( ?" G- |% |2 t5 e                                @.Destination :=- Y% ^5 |! d6 B
                                rgManager.nearestFreeStation(@,track.~);
/ h6 x  ^/ H# N( X+ I                                newDirection(@);   
, Y9 C0 V" b; E                                if @.Destination /= void then1 j9 N0 }) D# S1 M
                                        @.Destination.NumReservation :=
! f6 Y: X$ q4 `3 B/ y$ l- D# ]- a3 o                                        @.Destination.NumReservation + 1;
5 _% m6 |: i' a4 `2 T! m                                end;
' A0 @9 R; Z6 n7 c/ }. v                                @.CurrIcon := "drivingHome";4 a1 f: L' F8 q" K2 V1 F
                                @.DrivingHome := true;" }  F1 `7 A- ^: v) `
                        end;4 c" l. n$ [, O+ _1 w
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station% \9 r9 B7 ^( b7 ~9 L
                        part := @.transpOrder;
/ f9 ^2 a9 G9 F/ s0 S  o/ b                        part.move(@);-- load part
# G9 {2 P, q6 H/ c                        @.CurrIcon := "load";
; z0 n# {; s5 V5 ~# G: n# L+ y                        GlobalDistObj := part.globDestination;% U& X! S5 d0 r1 J
                        assignLObj := rgmanager.rgAssignL;' u  B& {  D$ O
                        row := assignLObj.getRowNo(GlobalDistObj);
) S; ~- k: K" u9 c- Y4 j$ c                        if Row = -1 then -- since 70' K! Z8 E$ ]' |2 @; H9 W
                                if lan=1 then
6 z) C$ N8 v' F2 h  n                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),! x& N4 v5 {3 a& |2 q
                                                to_str("in der Andockstation: \"",?.~.name,"\""));+ o( F3 f+ Q) e2 O) `2 r' m
                                else% y& H( D6 b" u4 |- q6 |
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),5 A# S8 y6 f7 y: t
                                                to_str("in docking station: \"",?.~.name,"\""));                               
3 P1 @7 ~# {8 c6 W2 m                                end;
5 F/ s+ t, |) B9 s, \" Q9 A1 O0 r8 x                        else; b/ O% k! M" b0 b+ v% y+ S8 l8 c, R
                                @.Destination := assignLObj[1,row];! {6 h/ k1 ^) }- T1 m# |
                        end;                       
8 @4 `2 _1 @* \6 t7 s                        newDirection(@);4 ^/ \  G* Z+ D: S! m+ U
                        @.HasOrder := true;4 s3 `' u, A/ c' }; }
                end;
! r3 h" h" `- e+ M        end;
: j( n# R0 s: ?* P: Hend;        -- of the method: c( f8 y$ }* Z0 s5 `5 t- o
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
: z7 q+ b9 C. Q! A( y. A, H' w6 W, |, Y7 F
这是AGV_putin中arrive的method。4 v3 m, h- G# m( W8 y- Y9 R( J5 \- p
9 p9 T% X" s; j1 x. R5 ]
当到达物料速度越高时,这个报警更多,
+ J( L) ]: n9 ]* s' d2 K' X! ^可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
1 ]# V% ~+ m0 H; r1 f5 A程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 p5 M, u; |+ M# S0 h6 {
6 T. S0 F( ~5 j" V! `& C另外一个小建议,就是move,所有的move都可以这样- V/ o; G; _$ C" D
if not move() then debug end( S* e& j- b& ^7 l; i
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。( L1 ^6 I7 m' N' I$ S. U
plant simulation中的free libraries有AGV模板,% Z& Q& j  p* \7 @) v$ @: O
里面也有案例。
2 G- J" a% ?( e0 E( i3 G我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
% |" x+ H2 F/ a; v
4 h9 Q- Y. u* x7 F我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
6 n7 f- z4 n; F9 ?* ?1 h- x" D3 j
4 z5 q7 k* s, ^7 h) W$ R# L那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
/ H# h7 L" r% X这是AGV_putin中arrive的method。4 o% m  n, |8 f

) X% c& `$ C6 C7 R当到达物料速度越高时,这个报警更多,

6 n7 ~5 T) ], `: _3 W; s4 m另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-3 18:53 , Processed in 0.016070 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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