设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6421|回复: 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 q+ t. T: j4 Y' n6 `0 v& R*/) {2 {* q6 J1 J& D3 b+ T
is/ J' Z- M/ }9 ^& V1 ^
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;: U* z  z& ^" r( ^6 L4 f
do8 u+ v6 g& W- w; A, }
        Lan := rootfolder.Internal.Tools.AOLlanguage;
4 b' Q3 n1 C1 b1 u1 c0 r        if current = @.Destination -- else return
$ L2 y1 x" N1 w8 U/ A5 D* O$ m2 C        then  v9 h9 s; ]' ^" A5 D5 x
                @.Destination := void;3 d+ ~, _0 d# H! p3 d
                if @.occupied then/ x( Z: q1 K0 Q: `' C9 l1 r
                        part := @.cont;! m! E1 L$ H, P/ {2 K. }
                        @.transpOrder := void;
2 H- K4 N% l) b$ H4 u                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
/ L% g$ R$ W) l! V; Q+ D                                @,root.eventcontroller.simTime);
. R2 E6 a3 Q5 j% f/ ^+ E. d) f                        @.HasOrder := false;
) L$ P: L" F, r! |3 {                        @.DrivingHome := true;
, \) d2 r) n, a/ V3 T5 m  g  X                        rgManager.tryToStartTransOrder;) v# G4 ^7 d2 H9 X$ m1 K# v
                        if @.Destination = void
1 @" L. [9 V1 C' ?( ]3 E% u                        then -- no transport order for vehicle @" A+ N( O" C# V3 i
                                @.Destination :=  n4 i/ ^1 [) x; ~8 g
                                rgManager.nearestFreeStation(@,track.~);
: I- C' ~- @  M8 u; b                                newDirection(@);     ^" A+ t: J3 @% \* ?# s0 I
                                if @.Destination /= void then
0 X- B& a! q7 j                                        @.Destination.NumReservation :=
* A9 E4 ~# i% {+ c; B                                        @.Destination.NumReservation + 1;7 d! |: `" r1 o8 Z( F$ R; L/ E5 _
                                end;0 m/ P2 w# O/ h# u$ n
                                @.CurrIcon := "drivingHome";
& Z, t" @+ ^/ G0 e: q4 `3 Q                                @.DrivingHome := true;6 n6 i, {7 p+ n: {) e) e
                        end;' L) F& x1 N! y( r+ e
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
& Y8 Q0 R( f4 @5 Y# z+ x& [  o                        part := @.transpOrder;
- F/ H, x' `. H                        part.move(@);-- load part/ F6 F% j" N$ V5 |: n, j
                        @.CurrIcon := "load";% U0 `9 n& L, Y& Q5 {4 _
                        GlobalDistObj := part.globDestination;% Z+ A  L9 V! {+ y8 I
                        assignLObj := rgmanager.rgAssignL;0 B5 y9 q6 S" j& f8 y
                        row := assignLObj.getRowNo(GlobalDistObj);
: F8 y" }' z6 B6 x; r8 q                        if Row = -1 then -- since 704 t3 H9 n+ T1 r8 q1 R2 h1 ?
                                if lan=1 then
/ p) D5 w4 k0 y. B. c                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
* C$ L1 v/ V6 `                                                to_str("in der Andockstation: \"",?.~.name,"\""));; X  d- t5 M" k
                                else$ R  n5 t" C, ?( A: Q# U0 e
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
9 ]6 y( p& |" z! r* ^                                                to_str("in docking station: \"",?.~.name,"\""));                                5 {( D$ q) r$ I, z
                                end;, @) H; R4 {- p6 o
                        else
$ T5 [0 X7 a' U" K9 C                                @.Destination := assignLObj[1,row];
0 I2 X7 a1 @5 o1 B                        end;                       
& X7 J' f5 L% d                        newDirection(@);
6 N" |: V7 Q5 E! r                        @.HasOrder := true;
2 o2 m4 B* o: s+ z                end;2 [0 q3 N4 g" X: Q
        end;
1 X5 D1 c' n/ nend;        -- of the method
& z9 `. o( c; q# I3 A; t
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑   X- A2 Q6 {9 R* W, w
) {7 _6 B' G* n1 ^
这是AGV_putin中arrive的method。7 m* M% o! M# ?4 J( g" d

; z  c; O7 p0 U# e) l1 K1 ^) ]当到达物料速度越高时,这个报警更多,
$ q( E6 i0 H7 J4 A可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。1 S7 H; V9 B" b/ I
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?( k1 M- g# `; y# U

0 x6 N0 t- }" ^* {& y另外一个小建议,就是move,所有的move都可以这样
" g. u& k- |/ f5 x5 @. ?if not move() then debug end! n( m' u) [* Q# ?0 Q) \) d9 X8 L
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。5 U5 }: N* d9 i6 I$ R
plant simulation中的free libraries有AGV模板,# j/ o  y$ f. ^% w5 _
里面也有案例。( Y, C0 u; T6 |8 W3 l- ]) q# _
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
1 i. z  \' ?9 |7 ^
9 @, }: V5 x# `5 F我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! @. P# }) Q+ u7 w$ A& ?7 t/ e( H

/ ~. w4 Z) m7 B2 W" A6 M那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
+ j3 v- U$ K# I$ m这是AGV_putin中arrive的method。& T; I% J5 W* R' p( L

! x0 |. P1 [3 Z+ @: p当到达物料速度越高时,这个报警更多,
$ ]1 G, G, O8 ]% |- i0 t2 A
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-5 19:40 , Processed in 0.019218 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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