设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6882|回复: 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'
: Z; y# d; e5 Q! K+ \4 r*/+ p1 z# e1 X2 t5 Z6 k, b  |
is
- j0 h/ |) ?" l0 d' @        part, GlobalDistObj, assignLObj:object;row,Lan:integer;/ E5 `/ V1 u7 g1 h. E. v
do
+ g  U3 @8 s# Y/ w6 T+ v        Lan := rootfolder.Internal.Tools.AOLlanguage;
4 F9 L. ]5 J& B5 i* V/ H        if current = @.Destination -- else return
/ S" U( U( d. v" ]4 u        then9 ]7 s/ l; k* _" p
                @.Destination := void;
( r, Z3 I9 m7 E8 `- b. E                if @.occupied then
+ z# Q# ~8 N: }+ n                        part := @.cont;+ @' R7 A0 ^! w& F5 k/ i
                        @.transpOrder := void;
8 C4 @) F0 ?5 ]7 L. `) ?                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,& F) S3 v# P9 @' G2 \
                                @,root.eventcontroller.simTime);6 d# V4 \1 R# }9 V# ?
                        @.HasOrder := false;
- ~5 F& `2 K- X3 N                        @.DrivingHome := true;3 ?( ^# t7 B: R
                        rgManager.tryToStartTransOrder;4 u% z( S4 q- O9 p8 F$ _
                        if @.Destination = void
% l$ O6 U& z7 `* q. I0 z( M3 O                        then -- no transport order for vehicle @2 q) B" O" o& n" @3 t
                                @.Destination :=1 C# ]2 q1 z! J+ n  Q& I. j
                                rgManager.nearestFreeStation(@,track.~);& S8 P# B6 }( r3 n  C( m  t
                                newDirection(@);   
8 \& ]& Q* Z3 q                                if @.Destination /= void then$ n; X, u6 x" M6 B7 J  k
                                        @.Destination.NumReservation :=
# I! a, j( V+ p3 Y1 t% m( p                                        @.Destination.NumReservation + 1;4 d! T) u; `' @4 \1 ~
                                end;
- }3 x0 N% u9 k/ |, m- g                                @.CurrIcon := "drivingHome";' J, e% e" u% }  u( Z
                                @.DrivingHome := true;
$ Q( R3 r' n/ G( O5 P+ v% o/ |                        end;
. d# g9 t/ ^6 s) `/ U                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
: c: l3 _3 ]# r                        part := @.transpOrder;5 _" w5 Z& p9 [: v+ U
                        part.move(@);-- load part$ |+ w" X% }" ], V, I$ m8 O  Q% h
                        @.CurrIcon := "load";
% e! _: w% ?/ D( D                        GlobalDistObj := part.globDestination;  Z7 q! x& E0 Z5 l2 S) o
                        assignLObj := rgmanager.rgAssignL;/ f3 A5 h% Z' O/ v$ a8 b# m
                        row := assignLObj.getRowNo(GlobalDistObj);
0 v1 I* e3 G! u9 _+ d: m                        if Row = -1 then -- since 70# ?" Z4 \2 `/ I5 s( `$ f
                                if lan=1 then9 H, [: E4 l! z7 X6 Z
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
" Q0 O0 G/ m$ x' g3 l                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 Q+ J! x: \) `. ]9 N2 K6 r2 w# O
                                else" `2 y5 s+ }8 ^$ O$ u
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\"")," {% F5 ]9 ^; |9 d7 j$ C7 F
                                                to_str("in docking station: \"",?.~.name,"\""));                                ( ]) a1 k; L8 \1 ]. a
                                end;
% F$ @8 z. e+ u! P                        else
/ {' K8 g% D0 m; m8 C                                @.Destination := assignLObj[1,row];
7 E: i' i* ]3 A                        end;                        1 w4 ^0 I! E/ a4 o
                        newDirection(@);
# L5 Z! {. h6 Q& a( R5 C                        @.HasOrder := true;
  I( Q0 C- q& F* y# ^0 ]                end;% O( D8 M: y2 I( U
        end;
2 h) T2 O( z, t" \% J! v) A- m4 Zend;        -- of the method
  I' B: C0 G# ~4 Y! q; H6 M
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
1 X, ~' |0 m5 l; Z) _6 A% D5 j- ~( n; u0 V& {
这是AGV_putin中arrive的method。5 q& h( S6 n( {+ r' n
6 ~9 ]  @8 l+ t
当到达物料速度越高时,这个报警更多,9 S! G. f" Q2 w9 T  L
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
8 D8 v( R! j0 t' F程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?# r9 u3 y- d9 B6 w: S2 o

# A1 S8 @) c, Y0 b" B! Y  N, D另外一个小建议,就是move,所有的move都可以这样+ ]- H8 P+ Y  L
if not move() then debug end2 Q# ~6 O7 r! C
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。$ O8 I0 L1 U3 t& [2 `
plant simulation中的free libraries有AGV模板,8 A1 ]) ?0 C* Z/ [
里面也有案例。
0 f; s( d/ v) J我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。: G  |4 S" |: J% P, w
9 T% F  K0 w, n/ ^/ {
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 . t8 m) M5 U. f

% E  h9 Z' h5 f% |) M9 x. W2 C那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 + P" B' J$ Y3 N7 x
这是AGV_putin中arrive的method。
7 K+ F: R# M( x! ^* s
& F, W3 [# r. W: V0 C, y当到达物料速度越高时,这个报警更多,
/ @9 _) O* M0 G# F6 k0 P6 j) @
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-4 12:30 , Processed in 0.019890 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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