设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8509|回复: 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'
' J% N/ E% \' M4 V*/
9 R! R8 K- W; j9 W7 e5 b$ {is9 L. O) E. C% ~, H" z& n- }3 T7 c1 a
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
7 p% q9 W* @/ S' {, ]do& S3 q, _* |; b5 p8 _! H9 b5 i) Z+ G
        Lan := rootfolder.Internal.Tools.AOLlanguage;% m/ ~! y; n  T, M# z/ B7 J
        if current = @.Destination -- else return- v" Q2 i+ o# e9 u( D0 c: d1 |
        then5 p0 D9 R2 s& M, k) a9 N
                @.Destination := void;* E$ x) U9 ^7 I# _! F$ O
                if @.occupied then
6 m: r9 `' |1 e2 V3 }& p                        part := @.cont;
) g) N$ x: B8 I2 w. Z                        @.transpOrder := void;/ c( y9 [, h  t5 q! G
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,# F+ @! B0 E$ ?+ q
                                @,root.eventcontroller.simTime);
# t2 V- ]- `3 K- G7 p7 N- m                        @.HasOrder := false;" I5 J% ?, U, ^! Z& [: ]  h
                        @.DrivingHome := true;
# Y- Z# W$ q* U                        rgManager.tryToStartTransOrder;
3 I9 K7 J5 y3 N: ^$ f% A                        if @.Destination = void: F2 T5 `, ]: n
                        then -- no transport order for vehicle @; N2 c) ~' ~$ `+ q  {  l6 {6 p; C
                                @.Destination :=
( v/ F# W( t- d( |' ?6 Q                                rgManager.nearestFreeStation(@,track.~);' S" l+ l" g+ h$ X6 W
                                newDirection(@);   
" L1 Z5 @2 T! O/ c                                if @.Destination /= void then
3 ]8 j5 ?" h) n; v# Q                                        @.Destination.NumReservation :=
3 U' W: u; `; z9 Y9 x5 T                                        @.Destination.NumReservation + 1;  f- G) D5 e0 e% |3 m) V8 T# @
                                end;4 ]1 C/ R6 a$ r' K
                                @.CurrIcon := "drivingHome";5 R$ x: D0 n. W+ E" S& G+ f6 Q4 e
                                @.DrivingHome := true;% U" c1 w- D; u) Z
                        end;/ Y! g9 p* l; ]
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station2 t9 G/ `3 A2 [+ f1 O
                        part := @.transpOrder;6 t* P6 K/ K- j' v4 s4 |
                        part.move(@);-- load part  j* j9 J$ S' H" F3 @) n& D
                        @.CurrIcon := "load";8 G" B* i$ w9 ?# b
                        GlobalDistObj := part.globDestination;
( Q+ A$ A& M4 _8 u1 i3 H                        assignLObj := rgmanager.rgAssignL;+ r! M4 a- n2 T1 j& @+ m2 {
                        row := assignLObj.getRowNo(GlobalDistObj);3 U7 o5 l4 C3 L
                        if Row = -1 then -- since 704 L( O1 x. t; ?- B
                                if lan=1 then
; g( S3 L$ |3 E& ]                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),. }/ D4 J" d. X: G2 l6 ~5 }$ H
                                                to_str("in der Andockstation: \"",?.~.name,"\""));! d, r1 y7 X) s1 t# w# b* L6 I
                                else
% {( J+ C) V0 A  w                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),% x- K) p3 _; G0 }
                                                to_str("in docking station: \"",?.~.name,"\""));                               
1 s( n3 S2 m* g+ D. {5 _/ E                                end;
- f3 C* T. p7 e! g                        else
/ j- P0 h; {6 b, U: H$ U                                @.Destination := assignLObj[1,row];. o8 p/ `$ S" z+ H$ \' {! ?2 z
                        end;                       
+ Q. H" y, l4 Z+ t( {* Z                        newDirection(@);
9 x1 c8 K2 B3 W. t4 _4 r8 R                        @.HasOrder := true;
8 V4 L  p+ ?( D! ~7 ~                end;
: k" s6 _+ Z" E' M& O! `5 }- m; D( ]        end;5 O  f$ |) F9 a; L5 Z. R
end;        -- of the method# T" G8 F: r; P6 D& Z+ u! E! P+ H
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 9 z& [8 C- Y* @# |

+ A0 l: H! G' O; A! B这是AGV_putin中arrive的method。  _" n# @1 R2 G) D7 @0 u

( g, Q  n/ A$ Z- C& J/ R$ ]当到达物料速度越高时,这个报警更多,
( k( `% z0 h* E% h, y可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
5 |& o! }- y: n6 l% H# T$ v程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?& ~+ {0 C! l2 y& ~" W
3 j- N+ N: m0 d: C8 z
另外一个小建议,就是move,所有的move都可以这样$ e* s$ h( }, P* Z
if not move() then debug end+ E) F% S" m; z2 n. p* q8 `
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
  a: a# X' r9 b8 S6 O0 H5 v9 Rplant simulation中的free libraries有AGV模板,
0 P( c& `& l: W里面也有案例。" _2 d! J; J% s& Z2 S* b
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。7 v' x/ B1 P  G2 D$ W. Y, U

) l) q& G" r! H! Y2 [& u我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ( h' H. v( }' x8 O& w

  F7 G" }; Q: z9 G9 F. _- T那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ) Z, E( {4 c$ L5 p4 Q, k
这是AGV_putin中arrive的method。
$ [0 x' f& q7 A6 q* Y# {/ R7 _) M1 b& [1 D, N) e6 I7 [
当到达物料速度越高时,这个报警更多,

9 h8 U# b- h+ a+ _' C! e( i另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-8 13:26 , Processed in 0.016824 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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