设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7281|回复: 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'
* y6 a3 W7 E( a1 ]& a; D*/. e2 w3 B- Y5 z) c4 J' T
is( {, I/ r% v( M/ N
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
# M$ h2 S- R, `9 R# ^2 Edo
1 ~7 k: E5 ]% q$ w: W+ X: e& D        Lan := rootfolder.Internal.Tools.AOLlanguage;. p3 n" g. V& r* e& y
        if current = @.Destination -- else return! I. _; p& \( _! p8 E* s6 M6 c
        then
& [4 K( D9 D# M5 [! B) A: @: v6 F                @.Destination := void;7 b& \: F0 B' K. G, Q: e7 |  H; Q4 i# T
                if @.occupied then2 i6 m4 O* `# F. S3 t2 S
                        part := @.cont;6 M; [0 l8 N1 J$ P6 s. ?7 @) M
                        @.transpOrder := void;* S  W7 K  Y( B/ |% {6 H6 b
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,4 o9 e, E8 j! I& O- h5 _6 [2 h
                                @,root.eventcontroller.simTime);
) }, p( G8 V+ r$ u+ `- T8 p                        @.HasOrder := false;& Z- p+ u& c% ~1 L  j" ~% b- s
                        @.DrivingHome := true;/ V2 ]+ U1 I; s
                        rgManager.tryToStartTransOrder;3 k) P7 U4 N1 u& V9 P# T! o
                        if @.Destination = void& {( L& J- |% O/ |
                        then -- no transport order for vehicle @
' s' Q! o  E9 }3 b* Y) O+ u                                @.Destination :=- i4 q& F$ J/ I# n% @4 s
                                rgManager.nearestFreeStation(@,track.~);. q, i" F% N1 F2 C
                                newDirection(@);   ' a+ Y- V8 H, A" f2 `" p% V
                                if @.Destination /= void then
0 b- T, H( j" \1 `7 O3 F                                        @.Destination.NumReservation :=: P$ V9 K6 |; e: u+ i7 y" f# {( c
                                        @.Destination.NumReservation + 1;2 {2 W' z, E6 @* q
                                end;
: @5 Y" s1 I4 g5 ~" @1 _6 K4 W5 P9 E                                @.CurrIcon := "drivingHome";
  G" X3 D( [! ^                                @.DrivingHome := true;
% W! [4 [' ~# f                        end;7 o1 s% u9 f$ }* S/ c" O9 H: l
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
4 j& D2 u  u$ C4 T                        part := @.transpOrder;" r! e8 ^9 n3 b- [
                        part.move(@);-- load part% n7 z" S1 }& R1 A5 g
                        @.CurrIcon := "load";! p( N) D3 Y- q4 p' [0 Y( c% x
                        GlobalDistObj := part.globDestination;0 ~! }8 n& l& ~% x" j2 t$ w
                        assignLObj := rgmanager.rgAssignL;
: H7 Z' T* @( o' t4 H                        row := assignLObj.getRowNo(GlobalDistObj);
/ d" w0 [3 B3 u+ l                        if Row = -1 then -- since 70
: h9 @3 P2 W2 Q9 b  K                                if lan=1 then& l7 P, b( }9 w" ?1 \
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
- Q0 u* u& U. U  t4 q                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( p8 c1 ^9 U+ z4 m6 _) n, j! o                                else  y/ [; a0 g  W6 d' W1 d5 a
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),  @7 A4 L" o- R0 [, V8 E
                                                to_str("in docking station: \"",?.~.name,"\""));                               
6 x: C9 l) E; V9 C  a6 q                                end;
( \2 q, B9 W$ d) S/ B                        else
* C5 R3 M' ^+ A; y                                @.Destination := assignLObj[1,row];
. w6 o5 q2 V5 z                        end;                        ) o" ]5 X% }2 Y$ Q& C
                        newDirection(@);
' C( [$ N; g" U# }+ n( Y                        @.HasOrder := true;
  J1 Q- g' h9 ~9 v8 b  _                end;" o* L% x# ]$ j; L
        end;: J( y  d, I5 Q/ p. Y+ K
end;        -- of the method
4 {8 w; }' Q9 B5 s* t
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 $ D5 T9 c# Z0 J8 n, H. ]" O

- C0 z. A) H8 ?这是AGV_putin中arrive的method。- x6 t6 y8 \5 d
( b7 Y& `" N, o, h# C
当到达物料速度越高时,这个报警更多,) H0 `, c. l' s8 N
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。0 t, D# z! x, A
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?- c. Y9 `2 }5 n$ U
2 [+ B2 E& h: x1 q* Z/ R: V, A' f- ^
另外一个小建议,就是move,所有的move都可以这样" B) `; n4 d3 f4 m
if not move() then debug end. ^+ I2 s. a, e% [3 K
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
. W* Q! i# p# [" y2 }+ \plant simulation中的free libraries有AGV模板,
7 C% F" e1 i7 x- X2 r* x. `里面也有案例。
" e- h; t, i3 @+ T5 M. ?我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
+ \2 @' Q1 x* u% x! i6 V+ ?& P' b) O1 o% p8 p' t6 J. o. O
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
5 v; M; P4 _5 `0 e7 |) b" ]5 D2 N& E; \  f* {
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
7 ~! e. s- {1 z  M. d# p7 i这是AGV_putin中arrive的method。' m# @0 `, r8 f$ }& m7 U: a2 L
) b9 U+ m: k" M% }) C4 z
当到达物料速度越高时,这个报警更多,

( E  J% {1 B1 O* ~+ o; ^. k另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-1 16:05 , Processed in 0.022101 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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