设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6910|回复: 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'
6 Q1 X1 @' U6 }; a" O*/
. T8 M2 U5 n1 f  qis, Q0 @0 @6 d) f+ _
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;, D& m* k' f' a% a( |5 a7 f- z
do
! S' R. D3 @3 a* j        Lan := rootfolder.Internal.Tools.AOLlanguage;- [. F. u7 p( a2 {9 F' k# g
        if current = @.Destination -- else return. \) n- ^/ _: J6 s# J% u
        then
6 ~+ f! K2 W' c; i                @.Destination := void;9 Q' j0 p* @0 Q2 Q6 Y8 Q' B3 C
                if @.occupied then
! @/ R3 F! |, A( s  y, I/ `. K) x                        part := @.cont;
6 Y& S7 r9 a) J: Y                        @.transpOrder := void;
& |2 Q& U4 |  ~# L* `# Y                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
5 Z( n0 S5 L/ a( o; H# Y                                @,root.eventcontroller.simTime);
+ @5 [6 A6 a* s" Z: U                        @.HasOrder := false;
* B% A* Q: Q+ X                        @.DrivingHome := true;; Z: {6 ^8 M6 h' o" z) E
                        rgManager.tryToStartTransOrder;! F. x1 M8 Q/ F4 ^5 X- C
                        if @.Destination = void
$ N5 w3 a/ v; P6 G8 V# L                        then -- no transport order for vehicle @
" Q8 h. Q, l8 s: O5 t                                @.Destination :=
: {' p/ B$ s% o4 ~" ^$ P                                rgManager.nearestFreeStation(@,track.~);
) M9 Y+ E# g. G* u! n3 a; p" z                                newDirection(@);   8 ^# W- s4 v' W7 v- A" |" @
                                if @.Destination /= void then$ X8 j6 X7 l$ l  G( B
                                        @.Destination.NumReservation :=2 h6 i$ G0 T2 t# P1 W2 j  N
                                        @.Destination.NumReservation + 1;5 F1 s8 u8 }) w. `) U6 d1 j9 t9 V) R
                                end;
( V, r, Z7 Z! }0 R# B. P( P                                @.CurrIcon := "drivingHome";% D% E: x# L3 j5 t: \$ x
                                @.DrivingHome := true;( V3 X7 m& `, C/ A+ b- Z
                        end;
& ]  B. a( F- L" M                else -- the vehicle @ is empty, both vehicle and part are in the same dock station  c5 l0 u+ R+ ^# [; T
                        part := @.transpOrder;
+ u) B( u1 b0 V0 o, {" R1 N                        part.move(@);-- load part! `. e5 U- I6 N6 W1 c" [, F
                        @.CurrIcon := "load";- I" Q, L+ c  a2 Q! S  F
                        GlobalDistObj := part.globDestination;
7 u/ t# x7 k' [* f* R' I                        assignLObj := rgmanager.rgAssignL;
% e! M. Z) o" T4 L! v# W                        row := assignLObj.getRowNo(GlobalDistObj);% R! i0 T. R: |; W# Q, J( N
                        if Row = -1 then -- since 701 M  k  }- M. x" p
                                if lan=1 then
; A; `* X  L* T# t                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),7 z. A% o# G0 Q6 F5 X
                                                to_str("in der Andockstation: \"",?.~.name,"\""));; Z- W1 ~5 t' P8 `4 _
                                else
* C, k9 b+ @" o2 U5 w                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\"")," Z( {# W8 ]: v6 H0 ~0 \: S% U) ?
                                                to_str("in docking station: \"",?.~.name,"\""));                                2 Y; k1 ^9 M9 t2 l4 u
                                end;
* ?/ Z6 [# c& y) w                        else& G( |) y, c9 G$ g( C& }
                                @.Destination := assignLObj[1,row];4 Q' T; v. Y3 _" e5 W- c5 }
                        end;                        " _" O- M0 O( p% V
                        newDirection(@);
4 K3 _7 R$ J: T; a- p6 G& K  _                        @.HasOrder := true;# \$ Z2 k3 Y* @% }4 W$ g
                end;
/ U/ m3 O# n1 U5 O. c" q& h        end;8 ]- z9 b: z, \& B8 w
end;        -- of the method! S: ]% e3 z! [9 t0 W
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 * B1 p  J1 J. J! [3 M$ D+ J, \- F

; n+ ~9 b! f  {这是AGV_putin中arrive的method。
: E$ c8 y. y8 [; f+ {  k1 y8 T0 F! ~" T+ \0 ^8 j* c
当到达物料速度越高时,这个报警更多,4 A1 I: M: a* ?8 p
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。  r3 |, C4 n& F, ?1 o% [
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
- z, B: Y' I+ o& t% w' [  |- b2 [/ b1 [
另外一个小建议,就是move,所有的move都可以这样3 e  i; t# c: y/ A
if not move() then debug end
! O0 D, Y3 Y3 T2 L- L" [这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
* b9 D, R- d5 i7 B0 {" w- a/ U2 }plant simulation中的free libraries有AGV模板,4 N# T. I9 m1 s: j! i( T8 ^
里面也有案例。
& K3 u- @5 O) s$ G, |我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。8 d8 r% z3 E: a) p/ f6 \5 y

9 a0 I# f5 b% u- S: a% B我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 6 p+ S; W1 ~1 `% F) U; p
: M4 {# n1 D% m2 S
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
: h, E. w3 m2 X+ T这是AGV_putin中arrive的method。
. o+ c% m) s/ O7 |2 f7 c" U9 v
' ?, x5 G; g+ T! r, v0 K* ]当到达物料速度越高时,这个报警更多,

+ P+ ?( ]; x& H1 b9 T$ }; ^另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-6 08:37 , Processed in 0.021395 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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