设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8378|回复: 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 v2 @/ j  c* f9 |, V2 m
*/" [4 |, ^3 y0 G5 w) n
is$ u- J: l5 ~! g/ O9 B# y
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;: K( ?/ H  G9 ^3 v! i! F
do
, I4 Z+ t5 ?4 \* U# d( a        Lan := rootfolder.Internal.Tools.AOLlanguage;
1 M4 W' G6 n- f8 a! d4 W        if current = @.Destination -- else return
; J4 D+ F' q4 H        then
  c/ o% Q: h& Z8 |( d0 k                @.Destination := void;
/ R9 i% g! C! \                if @.occupied then' [9 ]" U0 X! z9 a0 P: t
                        part := @.cont;
# K& t: S3 n3 b  C5 h  n                        @.transpOrder := void;8 ^2 W, l, W$ J/ ^, f8 O& E
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
- l9 C) x5 w3 \8 O                                @,root.eventcontroller.simTime);. x9 F. j- s# p; C+ I& p6 {
                        @.HasOrder := false;- Z2 o- g4 Q) j; L( I
                        @.DrivingHome := true;
% q# n. s4 O" l5 q* n9 a                        rgManager.tryToStartTransOrder;
+ o4 x# y; y% D4 R4 c                        if @.Destination = void" ?& R1 m  m% o2 ~$ f
                        then -- no transport order for vehicle @$ F6 u: V' ^5 C: i- n5 a+ x1 p. Z
                                @.Destination :=
2 ~% A$ n* w% _  U( c                                rgManager.nearestFreeStation(@,track.~);% z* F4 x4 {  a. H( F3 o% y& f
                                newDirection(@);   ) {* A- k9 t: p
                                if @.Destination /= void then, `5 m0 R+ I/ |( Y. O
                                        @.Destination.NumReservation :=
2 W+ I7 _. N# }# o                                        @.Destination.NumReservation + 1;
3 e9 k/ r6 r8 ]1 b6 i                                end;
0 p4 }4 t/ ?% j, _                                @.CurrIcon := "drivingHome";4 B% k) `2 E) T, z& W
                                @.DrivingHome := true;
( K& a# U. `: B( q; Z                        end;  x# C- U+ N. m4 K( ^% r
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- D5 D( |# t6 X" s9 E1 O4 H                        part := @.transpOrder;
' R! W, F3 }4 m& \: V. P0 ]6 l1 ~                        part.move(@);-- load part
3 k: [/ Y, a- V1 j% `7 z9 c                        @.CurrIcon := "load";  X" x# ?( N' Q' A
                        GlobalDistObj := part.globDestination;
9 ?! V" q7 C+ p+ r) X; u( E* D9 q                        assignLObj := rgmanager.rgAssignL;; A2 I+ l) d" f* v, m. T9 l
                        row := assignLObj.getRowNo(GlobalDistObj);' f; o# z% N6 V1 Z7 Q; a' Z
                        if Row = -1 then -- since 70' w5 }: i8 M- h8 E, P
                                if lan=1 then, Z! z" k0 Q: ?5 K- ~
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),- V  Y9 H; u  g) N8 t
                                                to_str("in der Andockstation: \"",?.~.name,"\""));# R% N7 S; R' F8 }$ E) B
                                else
* w. n0 s) q+ `% Q# Q, Q! t( x                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),7 |! X7 e& N4 M
                                                to_str("in docking station: \"",?.~.name,"\""));                               
: a) L% Y4 o# {+ N) I5 f                                end;
5 m! K0 d8 ~* S/ X                        else
& h% c$ h8 {. n: w7 ~                                @.Destination := assignLObj[1,row];
, k4 K. U( u2 z. {                        end;                       
  s( r1 G/ M5 ^9 o, N9 K5 [% h* {                        newDirection(@);
4 t' g0 a8 U/ {. y$ |                        @.HasOrder := true;# O- t5 i% x  t) Y# O+ `
                end;
9 r: f6 \8 }  M& n, ]2 V3 K        end;/ m0 _2 B5 ]) J2 @" W  w3 U
end;        -- of the method3 I2 ^# W  E! L7 x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 + N2 H) _( d* G5 b$ v& L

* B( |# P; g0 B3 q3 _' P这是AGV_putin中arrive的method。, ?2 J2 [, [& I& h
% f& j; M/ z4 E
当到达物料速度越高时,这个报警更多,
8 r9 }0 [* l% O, m; h可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
  ]% e+ I) V! _# u/ L程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?6 t2 c4 r! U1 L6 Z8 O: ^6 L) h7 H* T9 Z
) Y3 c0 p  H0 Z; E% Y
另外一个小建议,就是move,所有的move都可以这样
! y" b7 H* I, b: G  }, q1 v0 m- Fif not move() then debug end
) f6 e; `) n+ W! d这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
$ T1 m6 B4 l" m& N' h0 K  K6 _plant simulation中的free libraries有AGV模板,
$ ]7 ?  o) a# L' m; B# ?- A里面也有案例。/ K( c" g4 N1 }
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
/ r: `& F- D4 M3 Y2 u! n) U* {6 c* |" m9 K. V
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
( x6 M: }8 d% m: F6 j0 U
- _7 a( v6 E# m0 V: M那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
. s+ o, E, M' t. Z这是AGV_putin中arrive的method。
4 s1 ?$ h( E" r$ m0 E4 Z* o( H! }8 b) q/ ]) B+ O3 S2 P7 k" Z" b
当到达物料速度越高时,这个报警更多,

* |' i- u% T; x/ O" e% }# q! p另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-31 11:21 , Processed in 0.015876 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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