设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8185|回复: 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': \  a1 v& o& }1 y2 ~/ N* o* Y
*/
7 S- m" R( y2 X3 I+ dis( O+ C1 v) Q' v
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# U9 i. F' U. G3 F2 V1 U
do% Q! a: w8 V- N9 ?4 I: w2 a0 m
        Lan := rootfolder.Internal.Tools.AOLlanguage;
5 z* Z0 W/ ?9 k# A        if current = @.Destination -- else return
% U; e  K8 }3 w        then# z0 ~2 C: q9 K- h
                @.Destination := void;: V% m3 H2 ~4 {
                if @.occupied then
1 u2 L0 X: h+ I                        part := @.cont;
$ e( o/ |5 r$ @) C/ Z+ B' O                        @.transpOrder := void;0 z' c+ D* C: n! d  Z* _
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
; |" n; I2 I6 m  d, E  h: ?. i7 B0 w                                @,root.eventcontroller.simTime);
" [% l( e. O. U+ ?                        @.HasOrder := false;
9 y6 a- `, ]; \                        @.DrivingHome := true;' w! b, V6 E+ B7 V  _
                        rgManager.tryToStartTransOrder;' |5 s  u" D& C2 |: o6 y3 m# s9 l
                        if @.Destination = void1 G) V" Y' O1 v! y6 ]
                        then -- no transport order for vehicle @
- O: ]* D( k5 j) L                                @.Destination :=( R. l8 q$ |2 n7 D8 d
                                rgManager.nearestFreeStation(@,track.~);
: ~( q- R; E* f+ ~% n* k4 ?) f                                newDirection(@);   
) [# _! w4 p0 D+ `4 \5 e: h, [                                if @.Destination /= void then  a! y+ Q0 x1 d
                                        @.Destination.NumReservation :=
- j/ _# C) z9 c2 Y5 \  E2 z                                        @.Destination.NumReservation + 1;
3 ]4 v1 w! A4 ~+ d# Q0 |+ I% q8 ^                                end;# a* L" ^/ ^1 d5 w3 }' i
                                @.CurrIcon := "drivingHome";
8 X2 Y8 T1 \# |$ T! r6 z                                @.DrivingHome := true;
/ P9 K0 H$ A( {% e* k                        end;
% s% i% d4 a/ d; z* x% i1 g( b. K% [                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
0 A* G4 F5 f, N" N: c+ W                        part := @.transpOrder;. y3 q0 i7 _) ?6 z# l! X
                        part.move(@);-- load part
5 J2 O1 E/ D# }) u                        @.CurrIcon := "load";
4 ~3 Y$ ]5 i7 a! m. b# \2 Y1 |                        GlobalDistObj := part.globDestination;- e" ?* W; Z0 b7 X
                        assignLObj := rgmanager.rgAssignL;
2 D; T) G! u/ z+ h                        row := assignLObj.getRowNo(GlobalDistObj);
* ?$ E* i$ M* L7 q( d. A# e                        if Row = -1 then -- since 70
3 s; f9 c$ E) B$ l                                if lan=1 then
+ \5 N' X3 r0 x1 x3 g8 Q( r                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),3 f5 e3 D5 [/ {% j( {# k2 F
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
2 o  I4 p: ~$ H8 k1 u) u: k: g                                else
# X4 ~# i, u: [. Y# q9 q                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),( _5 E& v9 W0 L3 J" b+ |+ S  Y
                                                to_str("in docking station: \"",?.~.name,"\""));                               
  A- S. B! R0 c4 a/ \; D* W                                end;9 N' W: b+ K' h9 K/ K9 I6 V
                        else
* F# i2 N! [1 X0 c% {; `                                @.Destination := assignLObj[1,row];
$ E: S6 M. n. Q5 s                        end;                        , o  [) v, X4 S$ g
                        newDirection(@);
4 K% h; f: r6 c% F3 U0 W) E7 `                        @.HasOrder := true;
; Q) g+ f& [/ n                end;8 B- i- U5 p- g% D
        end;* ~9 Z# c/ W1 y1 l
end;        -- of the method
+ U* |+ x5 `! P$ F7 g
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
& o' ]# T: v+ K$ }& H% D& V5 n
. N- r8 g8 m( l2 o5 ]) S# ?这是AGV_putin中arrive的method。
5 M7 v3 `2 [. y" y  j# H, w/ b; F
当到达物料速度越高时,这个报警更多,
' K9 W: e  x9 |6 M可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。' r. _8 ]3 x/ G! Z
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?4 H5 R3 _( r. c7 w

7 E( ]' w4 W5 I另外一个小建议,就是move,所有的move都可以这样
: P; g" a) e, j% Kif not move() then debug end
/ G7 K# ^/ N( O7 F- m/ i这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。& A8 k4 K9 B% y9 q
plant simulation中的free libraries有AGV模板,6 L' d; S: K5 T: m( W- g
里面也有案例。
8 }' S+ G( b" o  h4 U$ _我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
0 i1 q, s6 A1 x, M; s( |# Z1 g. W: E+ i+ X7 T
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 + U  ~: l% ?5 x( P, o% T) U- q8 m+ U
; Y% H! ?8 \0 [( B+ G$ p
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# K$ v( o0 B- A0 C. g# o这是AGV_putin中arrive的method。5 c6 H5 d/ ~1 p" \
& W& @: t6 b+ ^( n# U; ~, {$ ^
当到达物料速度越高时,这个报警更多,

. o, n3 l: m" L9 j另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-19 16:13 , Processed in 0.018735 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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