设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6237|回复: 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'4 ^( h$ k8 P3 S" p5 w
*/
6 m) r8 e& y& J" P* [5 l  q. Ois  o6 u3 D9 w4 {
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
/ ?; d: M* q  d+ U; x- Xdo4 t2 ], z$ e) p; ?% Z. D: y+ Y
        Lan := rootfolder.Internal.Tools.AOLlanguage;" R( u) W  Q: \  |
        if current = @.Destination -- else return
" K' d& w/ r) q3 @0 J        then
0 V; p3 o1 V9 ^" R1 k                @.Destination := void;( k0 y2 L2 o" v5 W* ^2 c/ @
                if @.occupied then
7 [" A( s* u0 S$ {                        part := @.cont;
; j) {) _/ q8 q$ c6 l( P/ ^8 \                        @.transpOrder := void;) i0 i" }& o. X: R' d9 f, H. R. O
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,: e. f, I: Z( \' r8 X9 \
                                @,root.eventcontroller.simTime);4 j* r# {: p8 g' T4 D
                        @.HasOrder := false;/ B) @1 C; D( G+ @
                        @.DrivingHome := true;
( k; p$ J) o5 Q) q! x                        rgManager.tryToStartTransOrder;
0 W* u+ {: r' w% \* ?5 x$ f- k/ B                        if @.Destination = void% Q; U: P3 U; |8 t; ]5 `
                        then -- no transport order for vehicle @$ E2 G2 J- W% t- b
                                @.Destination :=
9 F4 x% a4 o. J; j. P6 X                                rgManager.nearestFreeStation(@,track.~);
* B, r, |4 K. B                                newDirection(@);   
) c9 U5 B; M  s$ s" s: u                                if @.Destination /= void then
6 w: b3 @- m: W2 n( D" ^9 L                                        @.Destination.NumReservation :=
% ?( X, g3 v; q! U( a" Y* s                                        @.Destination.NumReservation + 1;+ }5 R8 U9 b, y* A) z& M2 j
                                end;3 K4 ]3 C  E. R' C; D; F& ]
                                @.CurrIcon := "drivingHome";+ j) h' D0 z  D) s; I
                                @.DrivingHome := true;
3 m2 w1 a# j1 i+ A                        end;
, o6 T6 T! c# D  @                else -- the vehicle @ is empty, both vehicle and part are in the same dock station5 a' y6 a& R8 _' l1 b
                        part := @.transpOrder;
, t1 T6 h, _9 h! ?8 V3 a6 D  T                        part.move(@);-- load part
+ g) y6 h+ y5 U9 w                        @.CurrIcon := "load";* T$ d, H6 E$ a9 }, J8 g; H
                        GlobalDistObj := part.globDestination;
( U3 V: L7 h$ q* B( _                        assignLObj := rgmanager.rgAssignL;
3 V$ k% h1 K1 M. ^7 O                        row := assignLObj.getRowNo(GlobalDistObj);
7 ^2 t/ ~1 y6 G% e                        if Row = -1 then -- since 70
" d4 l$ U, [, a                                if lan=1 then
' W; X3 P) o/ x6 q8 z+ h                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
  G* j! r- U* O/ T& c* V                                                to_str("in der Andockstation: \"",?.~.name,"\""));: H' E5 O; X- H! B
                                else
8 {/ i5 J; F  k) c, t0 W                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),7 @* v( C0 A" Q3 `8 F2 M
                                                to_str("in docking station: \"",?.~.name,"\""));                                + ?; v2 G8 {' E- ]  Y) e
                                end;! w+ h# Y' c; H+ K
                        else
- l5 O$ \* k4 z8 j+ ]. x                                @.Destination := assignLObj[1,row];
3 V( a+ C: Q5 }1 d  [/ U5 l: s                        end;                        ; A% R( n& ?" ]6 X. J
                        newDirection(@);* s' B( i" Z" `! q, q. N
                        @.HasOrder := true;
& L' F2 H7 a4 [3 g1 Z  D! ]6 O                end;$ o# R' x) s8 E- B' K
        end;
4 j+ b9 |- L5 r) W: p' k. hend;        -- of the method, W$ d; J- H/ e
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
1 ^' l6 l# P' v+ }6 z
2 F% O5 j/ e2 g' U, R) Y! I+ V这是AGV_putin中arrive的method。" E/ E6 p  f, H
7 }7 m& ]' C6 e0 x' v- s9 T
当到达物料速度越高时,这个报警更多,
, {: s! W! K$ y/ o- q  Z4 i& T  E可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
* j7 `, m; D. D2 y9 H8 A. ]程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
1 K, I6 i" B7 \% V! Q' N8 i6 H4 m
另外一个小建议,就是move,所有的move都可以这样* @$ t/ G0 ~: U6 N& L& u8 r: W
if not move() then debug end3 j" o0 H2 Q1 Y% g" A1 K/ g7 T3 g0 q
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
: M- J) K. @, {plant simulation中的free libraries有AGV模板,
' s- I. r! @$ f6 F$ y  n2 x9 Q里面也有案例。/ E& M6 Q6 O; p, V" C% w$ z5 O0 O; L
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
5 e" |! I% _* F# s9 [7 ]/ ~+ K5 U) l8 f% Y
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 / v* B. F. E! J  h- c9 q2 \

: A+ e8 Z7 r& i' }( R那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
- `2 ^. D% B4 Y. k这是AGV_putin中arrive的method。, i1 t8 Q; l7 i* U$ g2 B4 j$ i

: }# V6 s6 [7 i当到达物料速度越高时,这个报警更多,

" l) U! r+ R- ~  U& Y( ^, h9 w另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-26 13:10 , Processed in 0.024558 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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