设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6604|回复: 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'6 r- |# }3 d# [+ @- _
*/. `/ v' R* G# O
is
3 {9 e, w& h. _7 d% C1 @" u        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
( v2 J* ], N: @% b# N  \do$ g) r7 I$ ~3 c
        Lan := rootfolder.Internal.Tools.AOLlanguage;
8 {: C8 ]  u% L& O        if current = @.Destination -- else return% F/ m$ o1 u/ Y# k- P" [/ i
        then
6 X% h" z1 Z1 H) w' ?                @.Destination := void;" \- B- S8 I' N" r9 P
                if @.occupied then) d% i0 ^$ a) t# T- d$ _
                        part := @.cont;
) W* f* V6 V; V# G1 s/ j! `  e                        @.transpOrder := void;- W9 P/ y7 t! Q2 n8 [0 ]7 J7 N" N
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
9 |9 z  v$ Y6 ~                                @,root.eventcontroller.simTime);
# h/ h. q+ u+ b) \. i- V( H% {                        @.HasOrder := false;) O6 `+ }5 v) Z( ~$ H
                        @.DrivingHome := true;
3 \) V+ Z/ p5 \% l& U                        rgManager.tryToStartTransOrder;+ B: `; p9 \1 S, Z0 e7 `( P2 S* U- i
                        if @.Destination = void/ j* `9 u" ^! V2 e: J% W3 p7 T
                        then -- no transport order for vehicle @
7 u& B  ^) V4 W% j( U                                @.Destination :=
4 x% k9 M6 L  Q% u/ P                                rgManager.nearestFreeStation(@,track.~);
. o1 E3 Q6 J2 e4 z! U3 G% O                                newDirection(@);   
% R- Z; \5 Y  ^. W                                if @.Destination /= void then
3 p! F4 }9 E" H* X; Q                                        @.Destination.NumReservation :=4 U4 h( W5 g4 a  B! `* O7 p$ [: @
                                        @.Destination.NumReservation + 1;
2 _4 t1 o  A& l3 s                                end;
1 q1 e7 Y- U- F' k( b& a7 K                                @.CurrIcon := "drivingHome";
1 u2 v( J" J2 [& E1 c3 g$ |                                @.DrivingHome := true;
- x# f% d/ |2 J3 |% J                        end;6 |- t5 y% N7 Z1 o
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station6 o% d* e* y  t$ w1 ^% Q' R
                        part := @.transpOrder;
) P* _4 H# |$ q: b1 u                        part.move(@);-- load part" `" g2 f1 ~1 E" {/ }$ o4 V* _' `, |; [
                        @.CurrIcon := "load";
2 g, }  R8 C7 y+ I" Q* }                        GlobalDistObj := part.globDestination;/ [, H. J" g* E
                        assignLObj := rgmanager.rgAssignL;+ J  K' }$ v6 a7 Q5 k" C( \! y- M$ j
                        row := assignLObj.getRowNo(GlobalDistObj);0 a6 l. n" D7 t8 G. e1 L
                        if Row = -1 then -- since 704 l. f( _2 A& R% b  e
                                if lan=1 then
0 ^, N$ z$ v7 O% S9 r0 B                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
6 G. u' c4 F* Q- J                                                to_str("in der Andockstation: \"",?.~.name,"\""));$ o' J: i3 q( u9 J. ^) w$ n
                                else6 C, K1 p! K1 u- l% S
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),1 b$ j! R& h0 S4 s9 S7 `% _- U8 j
                                                to_str("in docking station: \"",?.~.name,"\""));                               
' q7 P) v3 O5 \; f, s                                end;
) B9 x/ v% F7 i                        else/ S, z0 h. q! d. j) Y- L) J* v
                                @.Destination := assignLObj[1,row];9 h+ x( W2 ~3 r
                        end;                        # f# r! o4 Z5 h2 E6 t
                        newDirection(@);
! d5 j' r4 o/ U) G7 y: k                        @.HasOrder := true;
9 L* W7 \9 E+ C                end;! G& k7 K* R0 r) g
        end;
# J+ H9 r9 K! P" s- a9 Jend;        -- of the method
4 t/ l# N/ Q( |  v( Y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
. H, T, g3 e. }2 E- r( p+ p% X2 z0 E. m+ h, L( s; R. D
这是AGV_putin中arrive的method。* Y9 @, e3 I/ _  S, R
) {# t4 z0 G4 D0 z) @
当到达物料速度越高时,这个报警更多,
/ ?; C) {6 P. d8 Y2 h' n可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。/ u* D+ w- @0 W, A2 w
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?/ z+ N: c2 R" B# L8 L

5 {' t3 Y" F$ H! E1 Z, l. R# \另外一个小建议,就是move,所有的move都可以这样
- x" U8 Z- a; w( m; Z0 Aif not move() then debug end
: V" o6 ~! i* t  F6 @" q这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。- H  Q, [" Y1 d% m
plant simulation中的free libraries有AGV模板,
/ Y( A4 _& k- [6 g" E里面也有案例。
6 Y, |& K  _. f) [5 W我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
+ l+ r' K3 I2 k  _% n& R& q# |, K" _8 d
, F  z. I* s3 J1 s3 I9 [我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 . }5 K7 W3 f! a
7 ?# T6 m5 ?( d+ D2 M
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
$ ~( [4 z+ t' k# S/ X9 T这是AGV_putin中arrive的method。
( X5 {( ]! @3 x% }% ^& Q' P- p1 Q! `3 X6 m6 F5 p4 B7 T% U0 X- b
当到达物料速度越高时,这个报警更多,

4 e2 O6 F6 N  t$ ?8 e4 f1 d, c另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-15 19:39 , Processed in 0.025643 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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