设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7085|回复: 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 f! E, P0 n  I  f*/$ g/ r; M/ D" s. w/ g9 ]# w* @
is
- g0 t. t2 r! r4 [        part, GlobalDistObj, assignLObj:object;row,Lan:integer;) R6 ~& _+ x' n1 [1 d/ U
do
1 I% b2 v9 n, B6 Z  k        Lan := rootfolder.Internal.Tools.AOLlanguage;
0 n1 o! s. z  J3 J& o: ]* n        if current = @.Destination -- else return) B  \, h  R6 g. a( ~% y
        then
6 Z2 J# ?( U! V, c9 q                @.Destination := void;
; F: E6 ^. O$ B                if @.occupied then6 L+ p) _- R$ _  \4 G6 z' p, o
                        part := @.cont;
: k/ h. g. _4 {" d; F# B                        @.transpOrder := void;
# ]+ S8 L4 j- _: v, T' \  Z                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
5 j) A* H5 m  c7 n9 Q4 e5 @                                @,root.eventcontroller.simTime);& v& Z+ W' r4 Z. _9 _
                        @.HasOrder := false;
" j& d+ b1 R- }5 s/ N& J                        @.DrivingHome := true;
/ _! _. F9 m2 K& m* O                        rgManager.tryToStartTransOrder;+ u$ J( a- s2 I: n# O' t
                        if @.Destination = void. _$ N  m/ d; ^$ [1 [
                        then -- no transport order for vehicle @
: I& P* S6 W& U4 `                                @.Destination :=
0 C/ y4 G) h* N1 J* m                                rgManager.nearestFreeStation(@,track.~);
) @% Y* a, `$ P& e' I6 e1 Z7 w1 U8 ?, v. y                                newDirection(@);   
- H5 a& y+ Y" A5 Z, |' ?8 H                                if @.Destination /= void then
' K, U0 M0 q& e3 v* z                                        @.Destination.NumReservation :=
( q: Y. ]  k' A, m5 O& n) u8 v                                        @.Destination.NumReservation + 1;4 M; _) x, l( V; Q
                                end;
" \8 b8 u+ x+ @2 i: {                                @.CurrIcon := "drivingHome";
# A# r: X  O* \# s/ E0 R: L                                @.DrivingHome := true;
1 P) i# ^) V& i# |1 \9 |                        end;
3 e3 `6 ~/ L; D  G  k3 X                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 u) G& K( ^9 a) U/ s8 f# y
                        part := @.transpOrder;
+ a# X/ p4 C% g7 o! o                        part.move(@);-- load part
4 R  ]$ j1 n2 T  \8 ]0 _/ R                        @.CurrIcon := "load";) q8 {) m4 v2 U5 ^8 `1 ^; r  \
                        GlobalDistObj := part.globDestination;/ V. Y) P+ N- G) R0 y8 P0 V' p$ p
                        assignLObj := rgmanager.rgAssignL;
1 K3 P1 ~, r6 e' V                        row := assignLObj.getRowNo(GlobalDistObj);# m* J4 Z8 ]* l$ n6 w2 z
                        if Row = -1 then -- since 70
2 V1 r8 {' Q- S                                if lan=1 then' y1 C+ w: V5 G! |! [2 l
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),4 X. a5 K# H1 E3 D$ O
                                                to_str("in der Andockstation: \"",?.~.name,"\""));5 V& c  V- m! J9 B! I
                                else
% o' B7 ]5 P5 V) v( B                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),  Q# N; C% q8 P& F, [/ s
                                                to_str("in docking station: \"",?.~.name,"\""));                                " |2 ?, D0 F6 `4 \3 y8 K- U
                                end;& H& e9 r* f$ H) P1 D9 `- V: ?& T0 w, `7 A
                        else+ c! G3 f% A4 Z, w  b
                                @.Destination := assignLObj[1,row];% V$ b' o& C' x! i
                        end;                        8 u( G# h9 R4 ~- t8 \; j$ A# N6 z
                        newDirection(@);
' h. f0 X+ w. a2 B2 [                        @.HasOrder := true;
# u5 ^7 S, _6 }                end;/ J9 _; D0 o1 @0 i! K1 s0 x
        end;
- l! m+ W) D7 J$ W/ j$ Yend;        -- of the method. Y% A5 t* n, e1 E
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
) B. n+ C" U3 K( T8 P! U
# {( E& V8 x8 l7 [8 y6 x7 a这是AGV_putin中arrive的method。! d9 W1 z6 w. B' |/ s: c7 p/ t
) d, x1 S$ B) G+ Q: O2 Y
当到达物料速度越高时,这个报警更多,; F! M- C) U7 y# |! I. {, \
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 N# k6 L, f( c8 [; f
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
8 ~4 y7 }* W3 I& z+ I! i
. L4 ]5 f% ]! y另外一个小建议,就是move,所有的move都可以这样
7 H* L% w0 `$ X1 Gif not move() then debug end. }4 Y  Z& [" b) I0 L
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。6 [. `; a3 K( n1 G1 w0 [
plant simulation中的free libraries有AGV模板,
& Y. F+ N  }8 f$ u里面也有案例。
0 W1 W( W8 U9 I$ a; j( a我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
2 ?# U# V; {* l4 c! Y1 y- v* z" ]" n
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 4 a  G* R% d* ~4 O- K
) e0 k( s5 I& [2 L* Z
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
2 R" \8 S0 G* M( e( q" O9 `! M% j这是AGV_putin中arrive的method。
8 J. v) [8 w1 `# z& a
5 z' W% J2 D; W  M当到达物料速度越高时,这个报警更多,

5 Y* q1 a+ Y. T! D8 z另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-16 01:59 , Processed in 0.022614 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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