设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6201|回复: 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'
. f8 ^% e7 Q* ?  X8 s*/) k& w+ V# G% H
is$ e! M" a* n5 \" i
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;+ f7 r4 v; M. z. R' K9 q; O
do/ i6 O1 H3 l1 k2 b, I, y$ U9 r$ M
        Lan := rootfolder.Internal.Tools.AOLlanguage;
' x- d$ r9 t, C        if current = @.Destination -- else return
* L3 t/ ~! g3 L        then& P2 {9 G! O. M. \" ]; e8 Q
                @.Destination := void;4 y1 L4 q. e. g7 W
                if @.occupied then: l" u( O# ~% t
                        part := @.cont;4 Z7 l5 J5 p+ ~7 ^+ ^9 G
                        @.transpOrder := void;
- S% k  s7 h8 I  Z0 v( r) Q                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,; J- u# i6 N: j
                                @,root.eventcontroller.simTime);
$ A2 p- b% O7 s6 v                        @.HasOrder := false;' u% P( K$ {4 z4 {+ M
                        @.DrivingHome := true;
: V( K# H/ R# t8 I0 Q7 S1 }                        rgManager.tryToStartTransOrder;
$ k9 @; p2 ~' x. f                        if @.Destination = void
3 e3 x8 g7 K/ t6 u' h                        then -- no transport order for vehicle @
: H' j% x" W6 o6 t' Z9 V( G8 X                                @.Destination :=
$ h( X4 C: D& H. B  f$ a7 m4 `) B                                rgManager.nearestFreeStation(@,track.~);
' g% B" O( l: M0 D                                newDirection(@);   5 f+ t9 `6 e4 {7 R* ^' b
                                if @.Destination /= void then
0 H6 D, _( v8 l) c6 b                                        @.Destination.NumReservation :=6 s2 P8 ~1 a3 J. h, X
                                        @.Destination.NumReservation + 1;' {" b& u" l* g" O6 r: T  A) ~
                                end;7 A# Z6 ^' w' N' Q+ G
                                @.CurrIcon := "drivingHome";
6 [# L/ Y$ ?( c; f! U                                @.DrivingHome := true;
3 T4 G; w6 O+ d- J$ c, s                        end;
. ~9 s5 i0 r: Y                else -- the vehicle @ is empty, both vehicle and part are in the same dock station) q3 B' d3 B; R8 d$ v6 }) w
                        part := @.transpOrder;6 L; q; T( e' _& e# p6 P& D( `9 B
                        part.move(@);-- load part3 l, ]5 \5 p% X+ l+ A/ T: }
                        @.CurrIcon := "load";5 P. k' y# g2 m6 e0 c
                        GlobalDistObj := part.globDestination;+ h# x+ n8 `+ {8 g
                        assignLObj := rgmanager.rgAssignL;
0 R. s% J7 Y% z5 c( p                        row := assignLObj.getRowNo(GlobalDistObj);
2 x- F7 L  B; ^5 W0 _                        if Row = -1 then -- since 70
# l( m4 O% U6 B                                if lan=1 then
. j7 f, Z& D" h! j, \                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),. W3 P- Q' ~  y' g) A( P! T# O% Y. M
                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 y6 \* U# ~" R& t3 Z. V
                                else
( i+ \$ l8 t  }% a2 b                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; `& T- w' d7 ~7 ^! P# u) ]
                                                to_str("in docking station: \"",?.~.name,"\""));                                8 G- ~7 W2 s  @; e/ `! O' \
                                end;
% H& c7 y. r' N+ w! O                        else
! U7 [) y8 Q9 I; o                                @.Destination := assignLObj[1,row];
" c2 z: x- p; H) U4 s                        end;                       
0 }. J  y% [6 g- d7 s                        newDirection(@);8 u9 n: U: q4 s
                        @.HasOrder := true;; @. W' [4 F" y; v' P& H2 ^7 `
                end;
$ n( j! x0 e7 A5 @) R$ A+ H! k        end;1 I. F2 j. o+ z0 O
end;        -- of the method: f: ^# Q" P0 M. `6 Z1 S4 Q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
1 U5 L) h5 k( x8 L: c0 r
2 U& s; F% q1 M这是AGV_putin中arrive的method。
: q! ?! N2 W9 U$ g9 k6 w9 y& u* p+ S1 o, V& W  F' h, L
当到达物料速度越高时,这个报警更多,' i0 R; G2 b8 G# N
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
, C; ~9 R3 L9 e$ g程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?  w# g4 W% h2 R1 m" o
1 a9 H1 ]) V& J# u5 O
另外一个小建议,就是move,所有的move都可以这样
' x1 c3 Y2 A& j8 iif not move() then debug end
; n' r! A( J7 N$ j  L# o这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。* s& e7 }$ m5 ?9 r0 V8 d
plant simulation中的free libraries有AGV模板,  _. n& d, H" G# j
里面也有案例。, h0 [% x/ \. O
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
+ |; Q$ O! n0 k9 k
9 @* n4 b8 t9 [我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
0 L5 P# D' e5 p5 H9 p$ y$ z
1 _: o+ u8 _5 K9 S# m8 c那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
8 _. ?* }9 E. U* y这是AGV_putin中arrive的method。/ a4 i; x+ X+ {0 [

! W' E) \+ y! E$ B9 D当到达物料速度越高时,这个报警更多,
* p& I% i; M7 z1 M$ W6 ^4 _  V
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-24 15:06 , Processed in 0.017962 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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