设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6561|回复: 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'" y. W/ `3 {" u, X$ e
*/
6 |3 d5 v' l4 n; H9 yis' H- j4 ]8 G" S9 w9 ]( i
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;& v( Y' ^  H# m4 i, D
do
( s- T* H# x" @$ K6 _        Lan := rootfolder.Internal.Tools.AOLlanguage;
* P- b. ~' j  n- f2 ~0 W% N3 H        if current = @.Destination -- else return" I3 [4 P4 p, U7 Y& A5 n
        then3 F* d# S/ k2 C2 Y! J
                @.Destination := void;$ L+ t  X/ O# w2 c
                if @.occupied then
6 B& P0 M* }0 I" W                        part := @.cont;1 o+ _: k! J6 o2 f: m" u
                        @.transpOrder := void;' z- V4 \1 J. r4 s4 ^
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,* ]; ?# u( s/ y6 c; n
                                @,root.eventcontroller.simTime);# ^1 l" B% Q7 l7 l' C5 a
                        @.HasOrder := false;3 i9 d6 ^8 p3 M
                        @.DrivingHome := true;
3 G, y* q8 I0 M1 v2 Y* ^                        rgManager.tryToStartTransOrder;* {7 {5 ~" I' s7 b- W7 D5 s6 c
                        if @.Destination = void8 Y( A2 j( ^/ e# f+ E& b
                        then -- no transport order for vehicle @
/ s; I' U! C3 A3 y3 T# Q9 h, g                                @.Destination :=3 @& M/ \5 L7 A# V' e
                                rgManager.nearestFreeStation(@,track.~);2 m9 a; {4 ~& k$ A  Q
                                newDirection(@);   * p3 |3 S( y9 |8 {- _, G! [3 H  J
                                if @.Destination /= void then
' u, d' b: R6 A0 c  `; T" u8 k7 a                                        @.Destination.NumReservation :=6 a/ ~6 a1 u+ ?
                                        @.Destination.NumReservation + 1;+ I% t6 c$ J) T
                                end;
! a7 d/ }/ c4 g                                @.CurrIcon := "drivingHome";4 {  ?. r' B/ @+ t: Y
                                @.DrivingHome := true;
1 D/ v: R* c& J! r( y" A7 v1 c" c                        end;; a) p  r! j) _* Z8 c5 ]
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station2 d) ?8 p% o6 |! z' u
                        part := @.transpOrder;
- k# F+ D0 w) Z                        part.move(@);-- load part* z% G* _2 I+ p" M$ S% f, A
                        @.CurrIcon := "load";4 ?) M5 P/ e8 e0 s  L9 ^
                        GlobalDistObj := part.globDestination;: g) |1 J( Y& c* Z* R
                        assignLObj := rgmanager.rgAssignL;$ k- t* C# E9 X+ J8 k, [
                        row := assignLObj.getRowNo(GlobalDistObj);0 C% s4 J& X2 D
                        if Row = -1 then -- since 702 H1 \& p$ J# a$ a
                                if lan=1 then: V, [: c4 d1 D6 Y
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& Y( v3 }4 |5 }  y) ?) j. D% V                                                to_str("in der Andockstation: \"",?.~.name,"\""));
: V' j/ q  ~* n" B! D5 ?% E0 V, a1 \                                else4 f3 H6 v( `0 z. k2 W0 A
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
; e+ ^, C; A9 G0 v* Y                                                to_str("in docking station: \"",?.~.name,"\""));                                2 t, w" b! ?# X/ ~2 _/ d9 u" i! a; F
                                end;
8 d6 F. z! e6 A0 V5 V' j                        else1 f) a. T# M7 w$ Y# \
                                @.Destination := assignLObj[1,row];
# f# o6 G& M5 r, n& ]                        end;                       
& }0 H5 H0 k* \                        newDirection(@);
: n- A, e2 n' C+ [# ?5 h0 h                        @.HasOrder := true;3 ~6 c; v) g- w  J
                end;  P. Y6 n6 x  h: n4 C7 s- |
        end;
0 a" Q* n3 \: a! M0 u% ^end;        -- of the method
5 r1 X. B- j9 n
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
9 [' E) m( W2 L' ~; P8 T: k6 j+ z& h
这是AGV_putin中arrive的method。, u' {% ~/ D( @

0 f& S3 A* [2 q% x  V) D当到达物料速度越高时,这个报警更多,; M) ?+ {2 H& j& L) j5 [+ D
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。3 A: l. m  I2 o$ A: `
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
" W! `( c' J) t" w& F. ~. I1 G! y2 u0 s5 C
另外一个小建议,就是move,所有的move都可以这样
# v9 i# t7 |8 g8 o* h" U1 Oif not move() then debug end
: d4 r% E/ O+ ]1 s( A3 b这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。! H7 i0 z, w  u
plant simulation中的free libraries有AGV模板,( ?9 r' {: T5 @2 ^
里面也有案例。
$ |' _, u1 x0 @7 T& d/ ?我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! Z3 M1 a8 F' ^- C, G5 c8 Y/ [% Y9 j$ }& q
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
0 L1 d5 b7 H5 \# @$ p$ D3 |8 z+ e" a7 @' p. Z) `* d, A* A0 v+ o
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 # z& Y/ i# K7 B4 A# O% U6 [7 y2 F, t: J
这是AGV_putin中arrive的method。$ }8 s3 V% r  g8 ]) b' T

# x7 N' K+ n9 {; [0 d3 T4 m当到达物料速度越高时,这个报警更多,
/ s! u; |8 |* w- L
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-13 02:41 , Processed in 0.020030 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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