设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6927|回复: 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# ?2 y0 g6 y
*/. T3 d5 C; @- k4 p) Y+ v$ |) K
is
% Y: M0 J8 o1 A        part, GlobalDistObj, assignLObj:object;row,Lan:integer;+ O. `3 l! i2 i2 d- F
do6 m( x+ k, @% t  u! ]" V* Q
        Lan := rootfolder.Internal.Tools.AOLlanguage;
. y+ ?' J1 [% r( s        if current = @.Destination -- else return
- e) R% y5 D: J% x; c        then2 c3 }2 C" ?" E0 f' _5 \( `% P' R
                @.Destination := void;  [* s* x0 B# [; g* U
                if @.occupied then( W8 K! {$ [7 P2 F5 {5 [0 _
                        part := @.cont;
0 Q& k8 L7 p3 V                        @.transpOrder := void;
8 _6 O( ^& D) E# J                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
$ q% i* U5 g* r( E! @. w, e. `! D5 }                                @,root.eventcontroller.simTime);
$ Z$ {; ~' f6 T. Q                        @.HasOrder := false;
% ^+ s, t/ B6 x- n. G2 S0 R                        @.DrivingHome := true;$ q5 r3 }2 ]! l
                        rgManager.tryToStartTransOrder;7 A0 i- p$ \( e6 A: W
                        if @.Destination = void. U9 g9 m5 _0 M, n) G4 {
                        then -- no transport order for vehicle @
* r+ V% j; o7 U( [& p4 m                                @.Destination :=
; ]$ q' R1 N8 }( K; @9 `4 N+ ~                                rgManager.nearestFreeStation(@,track.~);6 c' l8 D# ^0 W
                                newDirection(@);   
/ a5 j: z  t9 |3 Y: O% ~! {                                if @.Destination /= void then, }% W0 g) `) Q6 X
                                        @.Destination.NumReservation :=6 d( M  S+ z4 Y2 \+ M2 n+ y: k- w, n
                                        @.Destination.NumReservation + 1;
. K( k- N# S( _  h% W" }4 t                                end;
; X3 Y8 p7 p+ L  E# b: m  e                                @.CurrIcon := "drivingHome";9 w: b: N8 P9 P- n
                                @.DrivingHome := true;+ y! c. Z! W  [) D1 E
                        end;
, W5 f+ I" ]& A5 b- Q- W                else -- the vehicle @ is empty, both vehicle and part are in the same dock station" S) K" S  o0 }# M1 Z0 h
                        part := @.transpOrder;  ?' {2 g  K/ i8 a
                        part.move(@);-- load part
. o1 _; u& M9 E! T+ M                        @.CurrIcon := "load";5 x( h! B" A+ z' g/ Q% z" [
                        GlobalDistObj := part.globDestination;
! E. e0 N9 c) p                        assignLObj := rgmanager.rgAssignL;8 A; c" N4 a; \1 v. m- W% p
                        row := assignLObj.getRowNo(GlobalDistObj);
( `: V  ~$ z( ?( p3 l                        if Row = -1 then -- since 701 t5 A2 P9 w0 M, R. E
                                if lan=1 then
* m5 ]0 ^! U. h2 R( i' q                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
) C/ j" O. O6 l2 |6 k- b                                                to_str("in der Andockstation: \"",?.~.name,"\""));6 O- ?% P! [" T: v8 h
                                else
; u/ x( d4 f( I3 n" R9 V                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),% t% ]9 O4 K, Y7 ]- l" H% j
                                                to_str("in docking station: \"",?.~.name,"\""));                                1 w. C; {5 N+ g9 O7 c$ {
                                end;
) n( k( n6 G3 z2 D" H/ W                        else
0 M# H" F+ `& z; j6 @" m                                @.Destination := assignLObj[1,row];* b, W; U* R2 B0 C
                        end;                        1 {* e) j1 R. [; V
                        newDirection(@);
' r) v4 Z9 t. ?- X& m                        @.HasOrder := true;: ?0 M! A# Z0 P& y
                end;) d  N* y. ]  M
        end;( }# a% E* d. R+ i6 x
end;        -- of the method( C0 L$ `* M$ b* O
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 M3 \' g( `, v  N' J' T- B9 K
4 Y$ [. U( _) v0 P$ k
这是AGV_putin中arrive的method。
1 _/ |' |0 |7 t9 ^! j
! f4 K; a! l2 u/ ~当到达物料速度越高时,这个报警更多,! p3 a9 @# Q0 @+ }
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。0 H) I+ p! ]! o/ i: s, D" ?! R0 X
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
' l0 ^) s$ a7 W# Q  r3 q0 D: J) v* s0 |
另外一个小建议,就是move,所有的move都可以这样4 a+ Q  M+ i6 y, }4 J$ U
if not move() then debug end8 ?9 [/ L& }  X' F
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
6 M8 d1 y  J1 b, M9 x0 W8 {$ Wplant simulation中的free libraries有AGV模板,
& U* q- c8 \( c' o2 F, K里面也有案例。5 M6 f! r6 H- F3 r/ ~) G' N
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。, Y) h* ?4 ]. m/ ?  i/ g
* b' m( j; g9 j# N% _
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ; \" w2 t2 k% ?: E3 f6 z; q2 l

- e, Z. F/ H! R* Y5 w) L' x: u那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
) ^$ Q- ^9 C! u* f0 @9 K这是AGV_putin中arrive的method。
& v. M  O& _. T/ ?
* j# j1 u8 [% X& y3 i* U当到达物料速度越高时,这个报警更多,

, T1 X' J/ e& j- o* t# N/ C% I" z2 \另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-7 02:46 , Processed in 0.017685 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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