设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7526|回复: 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'0 l8 w$ V9 y/ D% \/ s
*/
! O: x, }: G7 H4 |is/ s+ K+ y! o8 L7 d& f- X
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
  A% }/ s3 B+ [( {. J4 W. X( Zdo
+ F) O5 Y3 p3 q) M        Lan := rootfolder.Internal.Tools.AOLlanguage;3 S3 s, V9 i" [
        if current = @.Destination -- else return
# t2 |1 h& n0 T! D/ W        then6 v8 h* |! V" y" D
                @.Destination := void;
1 ^& {5 F9 p* ~) m                if @.occupied then
! u0 F( T: K5 ~  B                        part := @.cont;; L' f' K( e8 T: c
                        @.transpOrder := void;
- F: b- u. \6 e3 i( |& R3 p                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,- g5 J, q9 w4 n, C
                                @,root.eventcontroller.simTime);7 i3 p& G; N2 Y# A+ B
                        @.HasOrder := false;
0 p+ r# n9 ?" P) F                        @.DrivingHome := true;
2 L3 W$ d4 k9 t: N0 G, U% Y5 l2 g& k                        rgManager.tryToStartTransOrder;
+ W4 L6 D% D# r6 |/ k/ W) }                        if @.Destination = void
5 E6 `! H- m/ W5 d5 K& F+ H                        then -- no transport order for vehicle @
/ c8 C9 q% e8 h% b! R/ Y" N& p# d. ~% E                                @.Destination :=6 v* ^8 k; u* p8 y7 E6 F0 d3 Y: I
                                rgManager.nearestFreeStation(@,track.~);& h4 V! u5 m/ r  Z( y3 h6 Q: Q
                                newDirection(@);   & Q4 K/ [/ a; A$ s8 R
                                if @.Destination /= void then( I: W* t8 @; W. |; `1 z2 T
                                        @.Destination.NumReservation :=$ U( q7 X3 }1 l( b* H3 n
                                        @.Destination.NumReservation + 1;
3 w+ i6 k. ], r% C                                end;
$ i( ?, T  p: _6 f0 [. l                                @.CurrIcon := "drivingHome";8 W& J' X) E% d2 c
                                @.DrivingHome := true;: C: _" t+ m8 f5 Z( x
                        end;8 a% r% ~# K( |$ @" ]
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station+ d7 m& p. X2 T4 j: Q) J
                        part := @.transpOrder;
6 v+ E; ^' Z) I: l( e  Z                        part.move(@);-- load part8 A: W0 C1 s, C6 h" j
                        @.CurrIcon := "load";
7 ]% B; U2 v8 b5 B4 u: s! f  @3 q                        GlobalDistObj := part.globDestination;
! B% ^  I8 Z7 F' N3 y                        assignLObj := rgmanager.rgAssignL;& P, V5 u' f' u2 m; q" Q
                        row := assignLObj.getRowNo(GlobalDistObj);4 b* O  Z/ F' V) R( R! {+ J3 X
                        if Row = -1 then -- since 70
5 q. i4 ~' N  R1 l/ A  ?5 b0 g1 _9 s                                if lan=1 then& T- Z8 u) ^4 {- t
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
* F4 z& n$ r* s! i* I2 J0 i: D                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ i8 N2 Z% a& _+ o6 C                                else
2 _7 p- `  ^7 m" c                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; {1 l" u5 n& m4 |) z5 U
                                                to_str("in docking station: \"",?.~.name,"\""));                                9 ~* a4 f5 B# Y/ C. ]( m1 b
                                end;
- u6 ~/ w% _4 `: ]% b                        else# k8 ?  j' Y; K! `: H& E
                                @.Destination := assignLObj[1,row];
# q( F5 o7 g% _4 w* t  I8 x                        end;                       
" p# U3 O2 W1 }* f# _8 ~9 l6 G( b                        newDirection(@);
% E8 y- }! D/ [  a% T( A; E7 l) f                        @.HasOrder := true;4 O/ X8 ]+ [8 g0 B5 g# ^. [# ]
                end;9 N, R+ R2 C( O4 D
        end;. X& ]: `! X" Q5 z4 y
end;        -- of the method
/ z4 `  Y/ |* {1 Y! q0 t5 S
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
5 b* z6 U: e) f1 k2 ^: f0 u9 O! H1 M
这是AGV_putin中arrive的method。# F: _( G' G0 N- |
' v2 z  r4 p( m, Q
当到达物料速度越高时,这个报警更多,
- x! Z. |1 [/ \0 a可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
  h1 n& Y0 |% J! p% E3 q* w: n& v0 L程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?% q) y5 n/ M" S1 L7 b

; e& V2 F7 |) i; p2 V另外一个小建议,就是move,所有的move都可以这样
, S* O% ^' \# Y/ ]' y5 M3 s- Vif not move() then debug end
) D/ t4 b4 H: Y, ?8 g& b' {这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。/ l- E* p  h( P* G
plant simulation中的free libraries有AGV模板,
9 b9 s' t0 j# Q+ P2 \里面也有案例。$ r6 Q. D3 U; l8 G, |8 p: O) f& u: u
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
0 _2 M- l, o; i$ g
1 n  g& g& N, F我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
+ Z/ C7 X9 a' f! ~
% e+ B1 b# c) N+ G: F& C: N: G那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# ^9 e; L# q* f+ ?这是AGV_putin中arrive的method。& Y: `$ D$ u8 x6 C! p; I

# d  D4 R/ t+ Z9 H当到达物料速度越高时,这个报警更多,

- i1 ^: g4 K; z9 x( I: C9 S另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-16 16:18 , Processed in 0.018255 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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