设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7794|回复: 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'5 A9 D/ F0 f0 S2 X! u
*/
$ c  h  t7 q% D' t) h) C& {is
7 c( Q- X9 k0 P- j" V, N        part, GlobalDistObj, assignLObj:object;row,Lan:integer;  S5 M. E' h/ P- h' k0 u
do
. J  }: T2 n& Q( W3 Y        Lan := rootfolder.Internal.Tools.AOLlanguage;
- M; }6 m% W6 \$ t        if current = @.Destination -- else return- J. t  m+ _/ Y3 \! r# u1 s. Z/ M% z
        then
  N2 z* ~9 r1 g' u* u- y/ m                @.Destination := void;# s9 ^! ^8 g  h& U
                if @.occupied then* k* @( ?. m  ?% C/ m/ \5 v2 h' E
                        part := @.cont;8 _6 H9 ^. B3 y# ~3 \
                        @.transpOrder := void;
# r0 [1 b' K$ V3 q4 q! B% w1 V: n                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
& h1 {7 i' {% j) C- |$ f                                @,root.eventcontroller.simTime);
  q8 y% j+ U' k7 p  M0 I; j                        @.HasOrder := false;
7 [  B  d( f: J5 q                        @.DrivingHome := true;; F) O. Q% P# Y5 R6 s  M6 h
                        rgManager.tryToStartTransOrder;
9 G  y8 I9 ?  k) I) g! k                        if @.Destination = void
1 f+ @- J9 D( x  f                        then -- no transport order for vehicle @0 ^- b- c- z1 U
                                @.Destination :=
* n9 V3 F# M- ]9 A8 Q  q                                rgManager.nearestFreeStation(@,track.~);3 x8 s5 f& b3 ?( A0 O$ {0 M. d
                                newDirection(@);   
# F! z8 ~. w  U3 R                                if @.Destination /= void then
& i% j0 D( u3 Z% ~' E                                        @.Destination.NumReservation :=
6 T3 i" G/ L/ u1 v4 |                                        @.Destination.NumReservation + 1;8 o( w& T7 }: K% `6 z
                                end;% p5 [/ L6 K7 m: c2 n
                                @.CurrIcon := "drivingHome";+ {& U6 h! u. G- L- u! I
                                @.DrivingHome := true;
2 C9 H* P3 V+ t# n9 V                        end;. t9 n+ L4 v  P4 C
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station0 Y$ G# x3 _' V. W" T- ~
                        part := @.transpOrder;
, h0 F' K4 L- B% @9 X' |                        part.move(@);-- load part7 N+ w4 t- s% T$ N
                        @.CurrIcon := "load";
' x& u9 x# D+ O. Y8 T& f% U2 S- D1 k3 \                        GlobalDistObj := part.globDestination;
7 X* @3 t- [' \" n  ]8 T                        assignLObj := rgmanager.rgAssignL;
& R1 y2 K2 c( s. G9 r                        row := assignLObj.getRowNo(GlobalDistObj);
6 F" c, X7 V" n3 m                        if Row = -1 then -- since 70
! v" h4 o/ |5 m! l8 H! w                                if lan=1 then
1 d5 H% D* h( {/ Y0 H+ Z, R: ^$ Z                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
+ R8 p* c. `5 F9 n, P0 G                                                to_str("in der Andockstation: \"",?.~.name,"\""));
% B, X6 z- q4 d' y( X) o                                else7 R( q" v# ^  P  T, V, g: \
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),, W7 {- D  S" m  y
                                                to_str("in docking station: \"",?.~.name,"\""));                               
1 d6 M% i9 _) b9 g6 r9 a                                end;
6 p2 G* b" e4 Q6 v                        else2 s) e1 I' y& w3 k+ V
                                @.Destination := assignLObj[1,row];
0 c  C1 ]; a7 }% X+ @                        end;                       
+ L/ }: _6 Z% `6 O6 G& B                        newDirection(@);, M+ X. v, n3 r" m, O$ k0 ^/ p1 c
                        @.HasOrder := true;2 Q. B9 ^  X5 P! P  c: O% A
                end;" _% B- T. ?8 `2 N, b/ M  ^
        end;
& j0 [' @: d( S3 W+ qend;        -- of the method3 E% |( j8 Q2 V+ K9 Y+ Y2 c
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
- z8 K5 b" I/ p# p7 B. T
7 U0 S9 L# l% ?2 x$ Y  i, A这是AGV_putin中arrive的method。
( p6 }. |2 I) _& f: q2 Q& ]+ s0 C: ^& L
当到达物料速度越高时,这个报警更多,
$ H- Q+ C6 j4 b* V  ^2 O可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。8 P- p9 p) t$ W* t4 N# b7 g# J* ~
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
: J+ }; [3 j* Q! k4 g% l9 U; n* _9 z( N% W4 d; h& O( C
另外一个小建议,就是move,所有的move都可以这样
7 Y$ }& ?& f; p1 h% pif not move() then debug end
6 Z& v: J/ h( o. t这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- n6 s' o, Y+ h5 T+ Tplant simulation中的free libraries有AGV模板,2 Y& H) ?  s* p8 o" D
里面也有案例。
  @( q/ h8 t% s* z我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。7 W0 p' K( E% n) E
; b! f( ?7 h4 ~, g( R
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ) ?7 z5 @/ R) l' U

: ~4 _% K/ Q, i, `" x  V) h. H: y( {那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 : @$ a+ r7 S- J
这是AGV_putin中arrive的method。
  p! h1 f/ {$ b& J" _" ]4 W" B
- C* G  e3 e4 e; B. D当到达物料速度越高时,这个报警更多,

1 B! S7 D# d2 l) H! m- r6 g另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-29 15:44 , Processed in 0.018223 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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