设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7756|回复: 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'- U) X! W3 M- S
*/5 @4 r) n$ i, b6 {" ^
is
3 d3 r5 r* I) q2 b9 J8 k        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
$ d' _8 i* w! H) n0 }) edo" }  ~' I8 o6 X# A( L
        Lan := rootfolder.Internal.Tools.AOLlanguage;
+ W% g2 \; k# }        if current = @.Destination -- else return. u6 C& W7 x4 K* M- ^! f
        then
9 E9 N7 H& v3 Q+ i                @.Destination := void;) [+ Z. t0 Z* q
                if @.occupied then8 g6 A. l1 a$ S. k4 a- O% Z
                        part := @.cont;' B  r4 N# Q; q0 G2 }
                        @.transpOrder := void;0 a; ]! F2 d% U' J
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
! W7 A1 L/ j$ V1 r" l                                @,root.eventcontroller.simTime);1 Y/ w- {) l. y, K: U7 p
                        @.HasOrder := false;$ a. y& C+ i/ m+ l. V
                        @.DrivingHome := true;
2 a) f# o- A0 A6 G- G% m                        rgManager.tryToStartTransOrder;
1 b' U5 R8 t* t# `                        if @.Destination = void9 p/ q9 V, h: a8 S6 ^1 C7 O
                        then -- no transport order for vehicle @
: l3 U9 k/ ?9 P* z- }                                @.Destination :=
" L- P  M, g0 Y                                rgManager.nearestFreeStation(@,track.~);5 @! l9 W. |8 r1 C! s
                                newDirection(@);   
7 E% g& N6 U" K6 f8 A3 X                                if @.Destination /= void then
+ h8 ~1 F( R3 v& G                                        @.Destination.NumReservation :=3 T: Z" V% V! H4 N' `9 w9 r4 \: J
                                        @.Destination.NumReservation + 1;
/ L2 ]- Y4 H; Q) ?0 C- t                                end;& i2 z8 {& n/ U1 L) p
                                @.CurrIcon := "drivingHome";
* W4 E- r+ Z. S) o! g% ^( E5 P, x5 q                                @.DrivingHome := true;  }' R. ~; l6 Q6 Y; D: G
                        end;1 _1 D! q! V' q  d+ ^2 f) {  W
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station# E. @7 K! K" |5 _) X
                        part := @.transpOrder;
* @  }' Z3 G  x  z9 h# h8 W                        part.move(@);-- load part
: @# l4 I/ r/ [% x. L' Z                        @.CurrIcon := "load";
2 c. i; t4 i! X' b2 y. X2 n2 X1 k. O  e                        GlobalDistObj := part.globDestination;( |5 n- P; c% {5 Y$ [) \+ p
                        assignLObj := rgmanager.rgAssignL;
9 W. b( J) Z# a6 t- Y( s                        row := assignLObj.getRowNo(GlobalDistObj);7 B) w7 \- Y; a0 k! [" g1 g
                        if Row = -1 then -- since 702 d* v! a5 a. O! W, o( H  p
                                if lan=1 then0 }; l# b+ Z: \* ~
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
* J; r! k; H$ n2 `9 c. c+ T                                                to_str("in der Andockstation: \"",?.~.name,"\""));. z6 K$ p2 F/ h4 P! Z6 N
                                else$ [  Q6 ?0 u1 ?: P; w* e0 F
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),  `. [* c5 E7 T3 o: E) T
                                                to_str("in docking station: \"",?.~.name,"\""));                                2 b: b8 C/ j$ @! v1 s
                                end;# n2 T' ]0 w0 z7 }) Y  S3 M& W+ \
                        else4 z' ~* L+ O+ Q9 \! {1 V
                                @.Destination := assignLObj[1,row];( h* d7 C# ^1 }4 e! ^; P
                        end;                       
$ i/ V2 [, i) ^1 z4 s2 x9 m; `* H                        newDirection(@);6 @3 {: {+ _' g7 ?# p! F) r: b, Y9 v" Q
                        @.HasOrder := true;
0 u6 L: x1 [. h4 E& |                end;4 P% p3 f) K0 L0 }
        end;
: a; @  v; c- Y# |4 [/ Uend;        -- of the method! U  s9 d0 z1 X
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
1 I0 A' m! r, O4 L% [: h7 P7 I0 L( h# _
这是AGV_putin中arrive的method。( ^$ ^, Z% W! X4 t3 n& U

+ o1 _! i. n% Z! T$ F/ p# w当到达物料速度越高时,这个报警更多,$ f1 Y) i/ v! b; g" k; Q
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( E' P- L0 ^: D! N9 j' F+ P
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?& E0 S7 r0 z+ e

* `3 U6 b2 @& M: Y. f9 L另外一个小建议,就是move,所有的move都可以这样
/ o; ?; e/ Q. E  y1 s+ e1 Fif not move() then debug end
. V$ s% h' b2 K* L- {这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
5 z/ N4 t3 s: N, `" S6 v, m1 Yplant simulation中的free libraries有AGV模板,
  z' y* O( U4 i& o4 ?/ l% E里面也有案例。& ~  v5 T! A  l0 ^
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。6 M" U4 m' [/ y% B
2 Q8 n  L; r7 y  R0 c
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
- z7 ^2 m6 _1 Y1 ?$ U9 R
6 x( ^* p6 E  s  v0 U那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 / ?% E9 F( ~$ r; m1 K
这是AGV_putin中arrive的method。
* ^; O/ x6 G; t- f. m) z9 ^6 z2 i; W, A
当到达物料速度越高时,这个报警更多,
' _# F( X6 N& ^, `$ N
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-28 03:07 , Processed in 0.017727 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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