设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7461|回复: 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'5 ~9 `# @+ z+ T1 d+ Y
*/$ B: u5 y2 f2 t5 ~, |
is
$ G5 Q. O# s+ e        part, GlobalDistObj, assignLObj:object;row,Lan:integer;0 {6 d+ z2 _/ N9 V; U) r/ A) ~
do& L1 s0 f6 Z% V. G# ], v
        Lan := rootfolder.Internal.Tools.AOLlanguage;! P; i  k' R) T% O% W
        if current = @.Destination -- else return
' d/ W! x, ^" Z+ T/ n        then
1 f. G: `# ]! N3 \" I, p! H                @.Destination := void;7 x# ]; ^. w$ q  X0 _$ ]
                if @.occupied then
: R1 C5 a! O" |% y, V2 k                        part := @.cont;
7 ^. c5 N# [4 r3 y                        @.transpOrder := void;
. i$ a4 S: O' i# n                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,% y1 q6 }5 n1 K: O) `% y0 y0 A3 \* l
                                @,root.eventcontroller.simTime);6 h' O5 U  U# \
                        @.HasOrder := false;
7 l5 i+ u5 C, A6 ^3 F                        @.DrivingHome := true;
1 F8 h' C/ d- Y+ T; o                        rgManager.tryToStartTransOrder;
4 N6 O# q8 n! t! Y& ?3 h+ z                        if @.Destination = void
: q. l* T9 n& x( u0 R% d                        then -- no transport order for vehicle @& s' k+ l% ?+ k: C1 ?& v5 s9 m& Q
                                @.Destination :=
/ z- I" j6 q0 _                                rgManager.nearestFreeStation(@,track.~);
+ @: u" V4 o1 L9 c- S# M4 z& Y                                newDirection(@);   
( V' Q9 n+ F3 `" d                                if @.Destination /= void then
! n2 d  z, x& j! i* l                                        @.Destination.NumReservation :=
+ I, d, c: Y1 A' }( T4 Z                                        @.Destination.NumReservation + 1;
# p9 b5 u! G  \4 d6 [: j' l                                end;
% ~6 W" |, a/ W" b+ d( W1 r                                @.CurrIcon := "drivingHome";
7 Q0 ]8 m$ ?- I                                @.DrivingHome := true;
) b8 ?  Z+ \/ B% g                        end;) h& J* y) |9 o5 ^1 s
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 ?( y: Q" X7 S" z& ]* A
                        part := @.transpOrder;* X3 |' N# @$ C  R7 w  Z
                        part.move(@);-- load part
' m0 }& @8 Q6 B                        @.CurrIcon := "load";
& q# ^. B6 S5 G3 g1 }6 O2 q                        GlobalDistObj := part.globDestination;: n  S% f, g2 T7 `5 z
                        assignLObj := rgmanager.rgAssignL;( V/ A* \2 m& F6 r! S. \
                        row := assignLObj.getRowNo(GlobalDistObj);
4 f( H/ a; }6 A. J3 p2 {                        if Row = -1 then -- since 70
" V9 S( m3 X- ]  g8 ^                                if lan=1 then
" k9 l+ e0 I% ]' x% w                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
1 x& Y& T  F: t, v  j9 G                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( K/ ^4 S8 ~8 S9 \6 D, m                                else# X1 v/ B! ~9 g
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
% D+ ^( M. @, t( I! @                                                to_str("in docking station: \"",?.~.name,"\""));                               
% f- W8 z* {( E' K. z1 |0 i                                end;8 g5 e0 F: B2 i) a7 r+ F9 r) }
                        else
5 ?; ^) m, G. h* c                                @.Destination := assignLObj[1,row];
9 Z" t& z, d8 P6 T3 \. f                        end;                        / Q& v( i0 Z$ T' q+ ]
                        newDirection(@);
3 l" N) y  J7 R. o7 l: W/ @                        @.HasOrder := true;
5 D1 C. |3 Q/ K5 y/ C                end;% j& K' p: D: V/ A$ M; {
        end;
& U: M' r4 h5 V1 |, ^- ]end;        -- of the method6 ?( Q6 K; w1 V. L% G7 y' z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 5 p, Z! u5 D3 W9 E/ U
4 @# l1 m& s4 E2 g
这是AGV_putin中arrive的method。
$ D7 j% k( R$ o6 J* k4 d+ P+ V: X) H3 M3 @! x4 j0 \
当到达物料速度越高时,这个报警更多,) [' S% _4 }% v( u' q; [( w1 K6 @
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
, z% Y7 l' }% ?程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
0 B' E$ ^+ Y# n( ~7 k' I. }2 D3 s2 K; S
另外一个小建议,就是move,所有的move都可以这样. H! w0 h/ f: r9 t3 j1 m6 i+ x
if not move() then debug end1 h& h% k5 M  p1 N( ?6 z& z
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
9 S. |3 u' W- P+ P- C! i6 e6 Gplant simulation中的free libraries有AGV模板,
4 O0 p+ P) n8 q7 _5 @3 N: y里面也有案例。1 ], r# N! i" `/ b, o
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。( `) v2 f' ]4 U: K7 ~* C9 K

1 z' W% Z8 o8 H3 m! i3 @7 I我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 , g, F2 i$ v% k4 t3 Z
+ c- B$ m$ y, I
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 . h% Z1 I' f3 A! Y+ x
这是AGV_putin中arrive的method。2 s9 _0 i5 T. z3 X& R8 c! V

( d1 p( @5 [. h2 k: g- m当到达物料速度越高时,这个报警更多,
0 \! O3 S7 U" C- R
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-12 20:18 , Processed in 0.018928 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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