设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6446|回复: 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# a% I) q" c" c& t9 c+ @*/' n$ Z1 V( r7 A, ^; z
is
& _. ]7 ]7 a! Z! I8 ^% V        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# A/ j: _& B, u7 |
do
5 v6 a, D$ @4 X* @8 k- r        Lan := rootfolder.Internal.Tools.AOLlanguage;
5 y; {5 M& T/ Y# {        if current = @.Destination -- else return
% M3 @' _" y$ E) ~        then+ w/ |  x$ z% S( `6 f' y. I) E
                @.Destination := void;
, R# ]" U& S( A5 d' b                if @.occupied then
" t3 E" I6 `3 a1 }8 \                        part := @.cont;! p5 C) R; O2 N' o% D$ F
                        @.transpOrder := void;& ~: x) O: e( j4 p' u& d2 y
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,6 |  r5 m5 O' x/ ], l( T" B
                                @,root.eventcontroller.simTime);6 @# i8 ^( h% i+ X
                        @.HasOrder := false;" O% q9 Q, a" y# v7 k, i, P
                        @.DrivingHome := true;* \4 l( R# b7 \, M' D! f& L
                        rgManager.tryToStartTransOrder;
6 N/ ?' a* K. R; H+ `$ e0 e                        if @.Destination = void0 j5 I/ @3 }" v2 i. I8 Q3 ]; {
                        then -- no transport order for vehicle @
6 G$ x! T3 U/ [: r; N! i                                @.Destination :=, R; q. `8 U8 S
                                rgManager.nearestFreeStation(@,track.~);2 ^; c/ g" _- c4 K3 g1 L
                                newDirection(@);   / I4 g9 g+ J& c# }0 M' A
                                if @.Destination /= void then
# ^( A& A( V" j2 n$ p" @                                        @.Destination.NumReservation :=+ L0 X2 R8 z$ k- p
                                        @.Destination.NumReservation + 1;
* O( f9 B9 D& r4 S" G                                end;- J' Y$ m9 M, [$ L/ n2 m
                                @.CurrIcon := "drivingHome";0 A1 H3 K" z$ P, i# h9 x9 J
                                @.DrivingHome := true;" c4 ~8 `7 E* `8 J# ~
                        end;
% r: h" M: g4 A                else -- the vehicle @ is empty, both vehicle and part are in the same dock station0 V( K5 A2 `7 X! ^6 L2 c# \" X; B+ S4 n
                        part := @.transpOrder;0 p( W. e$ s- ]: U  t4 r
                        part.move(@);-- load part0 U3 i, `2 J, A$ i
                        @.CurrIcon := "load";5 k5 ^% G6 T/ O% t; R/ ^9 Q# m! P
                        GlobalDistObj := part.globDestination;
# `9 T, E/ n' J/ P  Z1 Z                        assignLObj := rgmanager.rgAssignL;) m6 Q/ m1 E% W
                        row := assignLObj.getRowNo(GlobalDistObj);
6 n1 ]. f/ `: ^+ j+ m: K& d                        if Row = -1 then -- since 70( R' Z  S4 t2 D; P* K: n5 ?
                                if lan=1 then
9 ~/ |% B) o; T8 O, f                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),1 e) o; V& D/ a9 e* ~% o
                                                to_str("in der Andockstation: \"",?.~.name,"\""));5 j9 X) i7 G" |8 ?8 F  _
                                else! M6 g4 [* x7 |& F! \
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
* `6 B* P0 P- D3 m" U% a4 ^                                                to_str("in docking station: \"",?.~.name,"\""));                               
- n2 L  Y/ n2 ]                                end;/ \7 W8 @' P4 v- K3 E: ~$ \/ G
                        else
  b* C) T( n3 e' t8 N                                @.Destination := assignLObj[1,row];, j& K9 p/ M  [
                        end;                        8 n3 G9 R) s& L& d) t3 `9 n
                        newDirection(@);
& N8 j6 W* D9 q5 B- }                        @.HasOrder := true;3 ^2 N, u: z8 J8 x
                end;! `3 W6 ~. C; l
        end;+ T7 m, b' d% `# H* z1 j8 t/ y1 G
end;        -- of the method5 E8 j8 ~) u( u- R8 h$ D
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 C! s: u- ~; m. R: x' ^% b( d+ t
. z7 x0 k: t5 n
这是AGV_putin中arrive的method。+ s- X3 `9 k) M  v% ?

4 W+ @1 s+ s/ G  ?0 y当到达物料速度越高时,这个报警更多,
2 O' N  n( S; N5 c可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。7 u* r6 P4 E5 C2 q: R6 f2 `
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
$ p% J7 E' o/ y, N
+ A, X. q/ U% d1 T7 X另外一个小建议,就是move,所有的move都可以这样/ v- p/ E) W7 j* b: W
if not move() then debug end
: {: l; ?* Q! I1 j8 {' ]( |这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
. s! J/ i4 y( b* Tplant simulation中的free libraries有AGV模板,
0 X6 g2 D! Y3 h6 ~& }& i0 \  u( U里面也有案例。
, @2 s6 y8 T6 l. y我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 }, u' n+ w0 i- _
9 i3 i: Y. p6 n( [# H- m. s$ _我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ; o2 F  z% C8 Z& D% M" H. j$ `

; x, G- l) i& Y/ R6 }; W那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 / {) o8 l6 f( |0 F
这是AGV_putin中arrive的method。/ F% p1 o+ S% n  ?# n0 P
/ K6 r% f# d% B1 r; \& Q: ]
当到达物料速度越高时,这个报警更多,

3 g( a3 E6 n' \7 O$ Y* _& W% Z另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-7 07:33 , Processed in 2.313936 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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