设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9287|回复: 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') u0 Y/ w' j' L5 m7 x
*/
  L0 ^; `- ]. G0 d6 P! U9 Dis0 Q! c& w5 L% f
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;1 U+ R1 N) `. C- M# T
do; ]; t& u1 r- u
        Lan := rootfolder.Internal.Tools.AOLlanguage;$ D( F* m8 q8 |/ E4 u8 W
        if current = @.Destination -- else return& n$ V* i6 B0 K, O1 h. U
        then/ u9 J$ _- T  y' E9 B0 _$ ~
                @.Destination := void;
5 f+ w- J, n5 P7 T9 e9 _                if @.occupied then
3 W: K5 c8 Y% n- W                        part := @.cont;+ @* S* p! `& @0 K3 z( R1 G
                        @.transpOrder := void;* F6 I. _, d$ ^+ B& s/ w1 ^$ m5 _; o
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
& q2 ^# E2 _1 s2 [8 t                                @,root.eventcontroller.simTime);0 o# z; N3 Q6 o0 z
                        @.HasOrder := false;
1 U' ^6 j3 A/ v2 y8 L                        @.DrivingHome := true;
3 h: y$ c% X: R4 G& H                        rgManager.tryToStartTransOrder;
  Z: M" ^* P) x% q, M                        if @.Destination = void; {, C, T$ I8 A1 i) r# B3 `
                        then -- no transport order for vehicle @
4 \  I5 ?1 [0 I& P2 q2 P4 U  g                                @.Destination :=
4 Z# y2 S! C' |" @4 e2 G& d                                rgManager.nearestFreeStation(@,track.~);
+ Q9 f, r( m, U- |- b4 [/ N. e                                newDirection(@);   
0 s; t2 k' r+ R  w                                if @.Destination /= void then" h- K0 j" T' s- o) l
                                        @.Destination.NumReservation :=
  u6 J" [2 I' b2 U  U( w, u                                        @.Destination.NumReservation + 1;- H/ `. `. Q/ p9 t! b/ U! e
                                end;0 Y& d+ _+ ?9 d1 s7 k8 t$ j
                                @.CurrIcon := "drivingHome";8 [2 A' ^( f! ^+ h* |! d) ]& v9 o/ E
                                @.DrivingHome := true;
# W4 q: i1 p' a% a3 b                        end;. i, y6 q6 {: _0 ^1 m' ~0 r+ d$ E
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
. p+ K4 M  n) ]: i+ [% E                        part := @.transpOrder;
1 K6 _0 S( u' [4 I; i0 `1 Z6 R6 O+ W# W                        part.move(@);-- load part9 S; M  r2 g" b& c6 D: N
                        @.CurrIcon := "load";( ~/ |- `4 ^0 v' z+ @
                        GlobalDistObj := part.globDestination;
+ }0 r8 f+ `4 W6 M( ?                        assignLObj := rgmanager.rgAssignL;
- C2 C0 z$ T% B, D  ^% y3 F$ d+ j                        row := assignLObj.getRowNo(GlobalDistObj);
+ v; ^7 a" D# C! L" }; x) R                        if Row = -1 then -- since 70( c. B! {" _, y9 O) i: Z5 G
                                if lan=1 then
7 d! j8 h  i9 O6 H                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
' h! M' N* H5 Z                                                to_str("in der Andockstation: \"",?.~.name,"\""));
) m7 F4 S6 w( N6 ^( f& S: q                                else
0 D! H1 D* }  e' U' y5 ?, Y                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),* m9 n* I3 k4 I$ Y
                                                to_str("in docking station: \"",?.~.name,"\""));                                2 Z4 f/ T; O( C3 P$ L) S5 B
                                end;0 s& _# v4 o6 O. H
                        else5 S+ Z! f1 W6 ?# K
                                @.Destination := assignLObj[1,row];
$ E# B5 t( e+ |6 v, _. l" s1 U                        end;                       
, z3 p7 P( `# d; u                        newDirection(@);
5 q1 F: o7 g9 g! O# t* E                        @.HasOrder := true;  f% w  K; S# ]
                end;
+ s' |/ z% R' A+ E1 Y        end;
& H  J4 Q  S  u' fend;        -- of the method: i% C2 P& [9 p; H
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
# d3 x3 r* U- G8 o6 E" F$ |+ |0 r0 k9 S+ M- o$ l
这是AGV_putin中arrive的method。2 y( U- b# N. l0 t
/ R3 g% O8 O$ L% q
当到达物料速度越高时,这个报警更多,' {% U. }0 m9 Z; E7 _
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
7 A" |1 _; Z6 A+ s0 |3 N程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
; ~3 L$ a) ^& j0 `, X+ |& z' A/ Q  G  q% M3 H( p+ y- R
另外一个小建议,就是move,所有的move都可以这样
" R+ M. p/ v  u! r: l( Uif not move() then debug end7 m" j3 M; L/ B2 _
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
. C1 T" V; p2 Q9 _plant simulation中的free libraries有AGV模板,/ a" f* X8 ]6 \+ T. [
里面也有案例。
5 B/ R' {  Y/ \' m1 C, n) v我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。, @) j# ^8 z1 y. f' I
/ `6 }1 z) B0 A' u3 y
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
- t9 K) `9 M7 D" L! f5 F& a0 i, i$ N1 I' H  e4 E
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
$ y% f! q4 K  K这是AGV_putin中arrive的method。
+ G) U5 d+ b& x0 `) V" N' Y+ d* t7 D3 n# M) q3 V' n. e
当到达物料速度越高时,这个报警更多,

( ^% e- z4 v3 t6 X2 J7 V另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-22 22:10 , Processed in 0.018952 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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