设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10245|回复: 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'
/ \( w1 S! r  ^; C1 i! W*/" p4 o" m1 n2 g
is9 ]( X$ U4 l, B7 f% B: w
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;& |2 d  e1 I9 w# b  g
do
/ t0 E+ m6 V' W        Lan := rootfolder.Internal.Tools.AOLlanguage;
; u+ Y8 P2 n7 s+ j        if current = @.Destination -- else return- a) k' V" D1 ~4 T
        then# T: i9 h  X1 M
                @.Destination := void;/ t7 N, V) I6 ~1 V
                if @.occupied then/ I) v/ N6 ~# l5 u3 r; P9 J
                        part := @.cont;4 o. Y: y9 ?9 o8 }4 b/ v- F
                        @.transpOrder := void;
7 F, u) ~* X3 |2 e% v# F$ ]                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,; X* d5 @; F# ?) |- K( k9 |7 @
                                @,root.eventcontroller.simTime);: P, g4 t3 h0 Q4 u9 m7 u
                        @.HasOrder := false;: r0 g: @6 _- I9 o9 @5 s
                        @.DrivingHome := true;  _0 i4 |, W3 T2 ^+ c
                        rgManager.tryToStartTransOrder;" i! x' ?1 T2 m) \  N; \
                        if @.Destination = void" z1 j; _6 r* E- T2 N) t6 T3 W/ f
                        then -- no transport order for vehicle @- H5 n7 V1 e8 _+ k9 V
                                @.Destination :=
, a- k% h. D! e+ X                                rgManager.nearestFreeStation(@,track.~);1 u, E' i2 g1 L. n$ S% b
                                newDirection(@);   
4 ^' a* ~7 p, H/ p; O2 Y+ F5 _                                if @.Destination /= void then
% I  n$ N/ I# t( k. U                                        @.Destination.NumReservation :=. t# Q! w( @6 k4 s' Q+ r0 @
                                        @.Destination.NumReservation + 1;
. I  ]/ M% x: _                                end;
' e' h- g3 F7 m+ K# G5 g8 _+ P; x                                @.CurrIcon := "drivingHome";2 ]+ v# X3 g+ S6 `
                                @.DrivingHome := true;! ]0 e; K# b3 K. P+ M# w! v
                        end;4 w: P; W) `+ z" J- a) P/ y
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station0 Z1 c) |8 Y" x# n# B0 G
                        part := @.transpOrder;
) J$ @/ Q( r" [: d+ X                        part.move(@);-- load part0 i& e% c5 I$ O3 n
                        @.CurrIcon := "load";
  c& {) Q& i- z                        GlobalDistObj := part.globDestination;
; V+ F" X' J# u; @                        assignLObj := rgmanager.rgAssignL;
2 o8 I4 X2 o7 M8 J                        row := assignLObj.getRowNo(GlobalDistObj);  n( w% Q- W! h1 [' ^
                        if Row = -1 then -- since 70% |5 ?, H4 A7 w5 _9 v) m
                                if lan=1 then
' b$ B) K1 w/ x/ ?                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& @7 S2 t; C8 e; y                                                to_str("in der Andockstation: \"",?.~.name,"\""));
+ T6 S* _, U. Z& X7 y8 X                                else- S8 Y" X) E& E* u% d' u% m' @
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
; O$ ]9 O/ I5 s# z                                                to_str("in docking station: \"",?.~.name,"\""));                               
4 U5 o6 \% C9 ~* v; J, ~                                end;
8 e4 J' I+ g+ d# W& A                        else
" N5 T- s+ H3 ?: j0 O5 E                                @.Destination := assignLObj[1,row];
$ h0 O! L, z. U4 z0 O6 B0 Z! O% O                        end;                        + b. H! u8 w3 R8 D0 b
                        newDirection(@);
# I: r) w4 I! g! T7 D! U  O                        @.HasOrder := true;  r' n4 T- I& }  ~( |: U# B. Q
                end;
/ N3 D  D5 ?9 F& a( i$ A        end;
9 R: W2 Q- _/ L# g6 W/ b  H* Aend;        -- of the method, t+ V) {( k+ E4 ]  w) ]
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
$ }) `& a( C# Q/ S7 I" W/ g
* x' u; i" C* h这是AGV_putin中arrive的method。
  {4 S% Y( G0 E+ t* }1 y6 p! }- |
当到达物料速度越高时,这个报警更多,
$ ?7 x! P7 ^2 B* b' U可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。# I: h& d2 d) x3 K+ E) ^1 H% t- x' P
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
  o& J( g+ O# @# ]* l/ Q1 k) `# ?  s- ]; c! n3 h; C7 b
另外一个小建议,就是move,所有的move都可以这样9 Y; D+ \& g, q8 n
if not move() then debug end" \4 e7 P( k% r( M& ]/ s
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。3 n- ^6 F. B0 i0 n: H  U
plant simulation中的free libraries有AGV模板,3 o7 g% J# T( D* A1 X5 r1 Z
里面也有案例。! x9 \+ U5 T+ z0 T' `8 o  G4 Z& q8 F, L
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。# a$ X1 S, q. q

0 ^6 u$ P5 z/ D我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 0 R* b+ k: s. d7 l2 O6 s
0 @9 k8 J% m1 ~, H! A$ L
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 # `$ N6 X6 k5 }' n5 Z7 h
这是AGV_putin中arrive的method。
' m# U3 C2 |- G0 F, H
9 k& |7 d% F5 H) z; h7 x5 `4 w当到达物料速度越高时,这个报警更多,
+ ~0 e$ t% S" E! {
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-22 07:20 , Processed in 0.017819 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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