设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8161|回复: 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'; p% J9 s1 e) d% B( D3 ~
*/
* B* l, V* Q$ J  U  F/ Fis
6 s, ~+ y; ]3 M3 A' g5 c8 R& n        part, GlobalDistObj, assignLObj:object;row,Lan:integer;! m! m  r5 b4 k( p
do
( U0 D% X  t3 M. n0 n        Lan := rootfolder.Internal.Tools.AOLlanguage;
$ f) `- V7 e% y4 Y6 g) P2 j' c* o        if current = @.Destination -- else return. `8 `% B9 u/ N* n" F
        then/ p9 s/ Q+ X" |( K" u% n/ d
                @.Destination := void;8 |1 t+ E1 ^6 ]
                if @.occupied then& x7 A+ O1 I: g: S
                        part := @.cont;. E" O. ]9 B- _0 v0 e
                        @.transpOrder := void;
$ s* D4 l  {' e, H4 v) D+ J                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,9 u" V/ f8 @  L+ a0 R& w# i
                                @,root.eventcontroller.simTime);
" w: o, s. H" V) c2 v                        @.HasOrder := false;8 }6 R* u7 t& h% j/ _% N
                        @.DrivingHome := true;
" I: o( y  {" H' x                        rgManager.tryToStartTransOrder;
8 L/ m  W: e  h2 w                        if @.Destination = void
4 u* C! u4 R6 M                        then -- no transport order for vehicle @; d3 x6 B7 R: u2 Y6 Q! W
                                @.Destination :=
- |  U: G5 r% M                                rgManager.nearestFreeStation(@,track.~);
& A& {/ b2 ~, K# ^, y& _6 C1 b                                newDirection(@);   ! Y5 V3 ^. k: _  n3 ]
                                if @.Destination /= void then% q9 M  O. n3 v
                                        @.Destination.NumReservation :=
- p0 E9 B5 u" B" {2 l                                        @.Destination.NumReservation + 1;0 D  ^1 E. V0 @0 Q
                                end;# X: Q" O7 F/ ^4 J5 u0 s# ]
                                @.CurrIcon := "drivingHome";- M  j9 l1 }' Z0 }, ?/ {
                                @.DrivingHome := true;' a7 F5 e# w2 X/ H
                        end;
! K" N; L# _* t, V                else -- the vehicle @ is empty, both vehicle and part are in the same dock station- {- P2 P* @1 O6 b3 x' U+ T
                        part := @.transpOrder;
0 K" |, q1 B$ k. e2 q$ ]                        part.move(@);-- load part, T3 x. e+ m' U
                        @.CurrIcon := "load";
4 B- z+ A8 \7 E6 j/ |                        GlobalDistObj := part.globDestination;
- p' K  |/ ~9 e5 {                        assignLObj := rgmanager.rgAssignL;+ f5 E7 ^- t5 a
                        row := assignLObj.getRowNo(GlobalDistObj);
/ s) M7 F. s! `$ Q                        if Row = -1 then -- since 70
& G; K- f) I, Y- Q! U  ~' F& c                                if lan=1 then
1 t; J7 x0 b. G& q- f9 M+ n                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
5 Z3 h6 c, p* M9 P: N                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( T. m* h* y0 K4 D  p                                else
! C2 v- _* c8 ~" N  b- d5 Y                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
) I7 V) Q  A7 i# b& V: S) Y/ C                                                to_str("in docking station: \"",?.~.name,"\""));                                * L/ \- W. e% Z
                                end;4 Q+ P& N. P% v/ B% D1 o" ]
                        else9 }! U4 s$ }2 E1 B( K# m3 q5 Y/ L
                                @.Destination := assignLObj[1,row];
& A0 M! r& B) s5 F$ N/ z0 _' p                        end;                       
9 B) y5 W6 a" O1 h* u                        newDirection(@);
  U5 p. J: _% Q( k- f                        @.HasOrder := true;" _. T* [$ {5 U2 |8 `8 x9 `
                end;! h4 X- j- t) o3 c3 w
        end;4 z: s' K9 d) \
end;        -- of the method; {) P! ]' i4 J
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
6 a/ x% i% D; l1 |# N- I+ J& S5 x  C. \4 |$ z( M
这是AGV_putin中arrive的method。2 Q) P, i0 @8 l- W& y. r

8 a6 E2 _; N# s4 Z' u2 D4 J当到达物料速度越高时,这个报警更多,' K- `% @2 w* y2 ]
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。) A1 r+ p; ^( S; @/ n' }8 {5 F- K
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
+ G0 H- Y2 H. p' j
0 B7 T8 X" w% Q8 B9 q7 B另外一个小建议,就是move,所有的move都可以这样% x% W7 Q) _5 W& D7 b# C
if not move() then debug end
- u3 \) U" p3 b- x/ K) G这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
" v* C) {; r# H& L' P7 s! kplant simulation中的free libraries有AGV模板,) i5 u) t2 v, F5 Y
里面也有案例。; q4 e# W% C7 O5 W( f3 `
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。# d. F, x. L6 v+ ?6 N

9 [/ p0 b+ V/ w3 q4 ?8 L9 e# H我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ( C- r  j. C/ p7 O  V5 m6 V

  M; _2 c1 p1 ^6 {8 S) @那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
& u  d* f+ \  ^& x这是AGV_putin中arrive的method。
1 F: {' B+ @" ?* F3 p" M: H8 q
- ?5 H3 h8 r* t! Q$ N6 P当到达物料速度越高时,这个报警更多,

( Z0 G' c4 Z6 z; Y) S0 S另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-18 05:38 , Processed in 1.111089 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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