设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6983|回复: 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'
, M) x3 z2 V8 y: F4 ~3 u*/1 a. {/ A6 D: T: @& Z0 r! V
is
2 D. i2 I/ R/ p        part, GlobalDistObj, assignLObj:object;row,Lan:integer;( J  e+ y  ?/ q& V" U' n9 K' s
do. C2 ?  u6 g8 v. g- B  n3 N+ T7 D3 |
        Lan := rootfolder.Internal.Tools.AOLlanguage;5 |& `3 X) w5 j: O: W, ^
        if current = @.Destination -- else return+ H6 X2 N# l2 |+ i7 N
        then  `( r: g3 g; O0 r6 d7 C
                @.Destination := void;
# P$ k. x( y/ L1 H. Q+ s+ T                if @.occupied then7 `, H  T6 Y% |) A) q
                        part := @.cont;& E- ^5 \3 S& ~  e4 r
                        @.transpOrder := void;
# B7 j' e8 ~9 R! M! _4 J                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,4 F& C, r$ `0 r5 L8 H8 u* k) K) \
                                @,root.eventcontroller.simTime);
0 u/ H6 x* D: O4 ?, d+ o3 M                        @.HasOrder := false;
/ S; K" s- Y! T9 v                        @.DrivingHome := true;0 a3 V; [0 i: R. c+ p- f
                        rgManager.tryToStartTransOrder;
+ |+ Y- l( J$ u  R" S                        if @.Destination = void5 K+ U" O' n) ?+ ^! o+ w
                        then -- no transport order for vehicle @5 m+ G; I+ {, H# Z) ?( V2 R* j7 h
                                @.Destination :=
. x$ W( G- R: k  ], n, p% E( C                                rgManager.nearestFreeStation(@,track.~);
  z7 E  T- g& O* j                                newDirection(@);   
8 @) v1 v4 Y& m8 X                                if @.Destination /= void then, f8 d: {- ~6 a- a/ F
                                        @.Destination.NumReservation :=
0 G  V6 {# x9 a# i% M% q/ D                                        @.Destination.NumReservation + 1;. d  ]. O( S9 t9 J1 R, C- G0 q9 T
                                end;; F+ J! z/ b, x9 u5 i2 W
                                @.CurrIcon := "drivingHome";
) }- v' }  g- x5 A. R: R" O                                @.DrivingHome := true;
" V9 `, ]% n+ k* b5 H: p8 u- ?/ q                        end;
5 u  \0 u, X, {; [                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
4 H, C: Z% O+ v1 X                        part := @.transpOrder;
: j" a$ f3 Q3 K# C+ N' i! E                        part.move(@);-- load part
- B- s' A" C: O                        @.CurrIcon := "load";+ [6 n' ]3 [: }& n, V+ o+ X
                        GlobalDistObj := part.globDestination;
. m7 x. g/ d( {                        assignLObj := rgmanager.rgAssignL;6 }. D" X% z5 N: r, J9 p8 B( X7 @0 [
                        row := assignLObj.getRowNo(GlobalDistObj);* k4 I$ n# {# p* ^1 y
                        if Row = -1 then -- since 70
; G% Y2 _2 V9 m( D4 {9 C                                if lan=1 then
1 ]" i. H. f, r+ l                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
. [* m7 ^$ g+ i  t; s. k                                                to_str("in der Andockstation: \"",?.~.name,"\""));) |1 ~; v5 Z7 K1 ^  }5 Q
                                else
* ?% g. W$ U# W+ s( ~                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),6 m) W" t! u- O1 J
                                                to_str("in docking station: \"",?.~.name,"\""));                               
+ j4 r- B3 e' L  n: r( |, \4 R  O. U                                end;- a; D: M% r1 Q1 l! Y8 k
                        else# v# g# I, G& ]  {
                                @.Destination := assignLObj[1,row];8 x* k% z2 T0 l5 @
                        end;                       
: I4 i  b3 ?6 M! K* ~- a                        newDirection(@);
: V# j* h! J0 \8 h0 s1 T                        @.HasOrder := true;
6 E. `1 \9 B* f  d- N) F6 `8 K                end;3 a& y$ T* l4 t2 D
        end;
1 s3 ?- }) b0 q8 q5 H. W/ _- X3 dend;        -- of the method2 }0 \/ m$ R' k
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 - j' s/ m2 x3 g
* v+ k6 c1 c+ N. w% g1 _; t
这是AGV_putin中arrive的method。
1 ~/ K' ?* u0 a& }6 U- d3 O9 Z3 {, X& x7 J* S
当到达物料速度越高时,这个报警更多,
3 c* ~% x# _) F  {6 U3 C可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
4 @7 ?/ h. n/ k3 k- o程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
- f: L% `* B$ A) W9 N" ^- t' S# s6 w, v
另外一个小建议,就是move,所有的move都可以这样
* ]  n8 w/ `* z+ m) w4 Lif not move() then debug end# P: ]* t+ H( [: i8 M; i( j( e0 x; B
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。7 d# D9 V( v* D5 a5 F( ~4 w
plant simulation中的free libraries有AGV模板,# ?2 i* l% p7 i# H2 q
里面也有案例。' C$ V+ s( y0 b. t% q  O6 Q: F* F
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! D* G, v" [! F# _; I. M
& J$ K0 K7 l& o8 @我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
0 K9 t8 f9 z% t! L1 J9 j0 f  @  {
4 @) Y1 k; Y2 g那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
5 R5 R  R3 n' T6 {0 ^这是AGV_putin中arrive的method。
9 J* @9 Y0 X8 f9 X
6 Q! A" V: I0 O* Z2 \  C: s+ K当到达物料速度越高时,这个报警更多,
  w' `9 `9 d' V) [) v7 F
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-9 16:57 , Processed in 0.019364 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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