设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9625|回复: 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'
/ y' c6 F' p$ K( I- ^" q*/
( `( Z. s$ t1 Q9 f- `4 r  |is
4 B- b) W8 F+ t- s0 L5 |1 l8 c        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
1 q$ Z# f6 a! L+ Zdo
7 j3 }: c/ j' f( U6 n5 v$ ~        Lan := rootfolder.Internal.Tools.AOLlanguage;* T$ M6 U' G/ O& x7 p  o
        if current = @.Destination -- else return( V+ H8 b  |2 t2 f$ `6 F' y( k$ x
        then8 V6 }( k1 s) m! {( |
                @.Destination := void;0 [: x, H) K+ p. ?
                if @.occupied then
1 U( Y: V- H5 b, Y* W! N7 q                        part := @.cont;' I% v( ?& ]$ S& [% \
                        @.transpOrder := void;$ s% M  Y6 F! ~) D9 L* Q; H* w) E
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,# {. q; b* p9 U1 L' R
                                @,root.eventcontroller.simTime);9 w" P& k" q% \* a0 E" u
                        @.HasOrder := false;
: H* Y0 n0 Y$ R$ _8 w, \                        @.DrivingHome := true;& }* W4 F3 X, V4 l9 V/ |
                        rgManager.tryToStartTransOrder;
. U. K* _, o& e1 l                        if @.Destination = void
1 _% Q/ ]' R2 r5 \! R6 L( }4 @                        then -- no transport order for vehicle @% ^' x7 {( ^2 |
                                @.Destination :=2 ^$ w! C& d: j9 ^% u
                                rgManager.nearestFreeStation(@,track.~);
- W+ x. d, F2 E3 I2 i+ B" m4 w                                newDirection(@);   ' ^1 L, d& K( O( f- g
                                if @.Destination /= void then9 f/ {* T) C0 ^) I
                                        @.Destination.NumReservation :=. @: r- h& _" r$ d) v3 M" T
                                        @.Destination.NumReservation + 1;+ V; N9 m; A; v
                                end;
: S9 l  V' F6 L                                @.CurrIcon := "drivingHome";
' \# S9 q, c8 x; G( S1 R                                @.DrivingHome := true;( I; i+ a9 B( Z
                        end;9 ]! x1 H  Z% k  `: e
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station% A/ l8 q* F7 ]* g% ]7 m
                        part := @.transpOrder;/ F0 H6 b9 D' L- E0 t0 ]
                        part.move(@);-- load part
3 @, z8 E4 l& z( N* x8 G                        @.CurrIcon := "load";
8 Y) \* S- j" x7 s0 u& S& K  l                        GlobalDistObj := part.globDestination;3 d& V) ]$ a# \0 Q" m# o
                        assignLObj := rgmanager.rgAssignL;* D" ~/ \' k$ c: x$ n: c/ b
                        row := assignLObj.getRowNo(GlobalDistObj);
3 O1 ~5 Z( D+ w' J; @# x                        if Row = -1 then -- since 70
$ r1 m! O! x' k; Z                                if lan=1 then
+ d, E. V* T5 Q                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\"")," q2 _7 L# `" Q, a9 N- g' p
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
8 w& y. V5 c5 [& U" M/ C3 s5 H: f/ ^                                else
' y0 w2 ~: Y1 e) w7 e4 s% ~                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),- }% M9 {2 V8 R- y$ [3 ?7 J
                                                to_str("in docking station: \"",?.~.name,"\""));                                0 c+ q0 }5 k& o* g1 [$ H" E6 r) {
                                end;5 c( _  U7 C1 ]3 m2 q
                        else
+ q& l; y$ V4 c1 s8 s                                @.Destination := assignLObj[1,row];
6 B4 ^1 M3 b7 o/ p                        end;                       
" }0 N+ G5 A6 _/ {                        newDirection(@);: e; H. p& g- f& V1 ?
                        @.HasOrder := true;$ \5 W5 L# |' Y, I2 }: |
                end;
: g/ }; ~8 b( ~4 N# e* l        end;0 t! f, h% b& a% k7 e; {9 p
end;        -- of the method1 O& E2 y# K( J( L+ p% p
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ' [' l" S7 j+ ~
$ B0 q5 q5 v% j3 J7 b8 `5 m
这是AGV_putin中arrive的method。
+ N1 X6 x; x) i) q* b) y
+ c( Q, C- |% \. \% C5 p* \" [! ]当到达物料速度越高时,这个报警更多,
/ [" B: Y; W% @可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。/ ]) D; ~& Y! s/ |5 R
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
& w8 n; k# O3 g* |2 H; O
, k1 t2 q: ?1 s4 M( ?# r另外一个小建议,就是move,所有的move都可以这样4 h2 n/ t# k) N
if not move() then debug end
" ]2 E6 V1 C4 k, H这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
8 U; t; I" l* uplant simulation中的free libraries有AGV模板,
/ v2 |  o" s% q( ]1 U$ L& ]. i, {里面也有案例。
& [9 `: u+ b- S2 w3 |3 x) b我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。( B8 ?: V* C( n0 O0 U- W

' m. i6 n3 ^" V5 V* v. v我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
+ |* K& [( i/ @& u5 }$ t7 M: I& Q6 m, T+ A. O* b
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 . B! ^, p$ X* `5 r; \
这是AGV_putin中arrive的method。
1 G4 b; ]( t: F! L; r, B$ g9 g& c0 ?
. x$ u9 @* U1 j% _2 S8 T当到达物料速度越高时,这个报警更多,

+ j, \. Q% c+ H! b" F另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-12 14:09 , Processed in 0.017297 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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