设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6150|回复: 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') O# V4 {% x! b
*/9 O1 J; `; A9 L& t
is
7 R' z/ O* k( U. q! d        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
" Q1 W2 W/ i2 W) m* x4 Ldo
' e- a5 c& z# K        Lan := rootfolder.Internal.Tools.AOLlanguage;. U5 E9 K9 ?. m, B
        if current = @.Destination -- else return
: K: q% p6 A6 n! O3 `. F8 T8 [        then
7 V' X( p' n0 l                @.Destination := void;' a- B6 u) W( l& i
                if @.occupied then# l8 ~& h/ A4 o+ s
                        part := @.cont;
. Q' ^" j  q8 z. I$ P: p% `1 d' F                        @.transpOrder := void;3 c: P. {; i1 c! Z
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
; \! i% f8 k  f* j5 a7 |6 s                                @,root.eventcontroller.simTime);
% J% p# C+ Q5 Z0 t( j" `0 J; }0 F                        @.HasOrder := false;. T, e+ }8 Q0 m/ P+ r. z- j+ J2 K
                        @.DrivingHome := true;8 X9 q# o+ {3 d- C% Y
                        rgManager.tryToStartTransOrder;
& H* }% h4 h4 ?                        if @.Destination = void! s. D3 E: @) {7 s
                        then -- no transport order for vehicle @
: u0 z1 k* S- P% T3 v; T                                @.Destination :=
' s$ R% G, V- M* y& _0 c                                rgManager.nearestFreeStation(@,track.~);0 m3 m5 B2 Y9 Z+ h$ y! Q3 M6 N
                                newDirection(@);   
# u7 _& D  M: e6 s4 q2 K. B                                if @.Destination /= void then# w) ~/ r8 ?# C$ {5 {9 A2 z# V
                                        @.Destination.NumReservation :=
( |2 O* h& M) e: B                                        @.Destination.NumReservation + 1;& X% A+ J7 }+ Z: ^) }7 }
                                end;
  d, K9 `! z; u5 z                                @.CurrIcon := "drivingHome";
1 |% S- z- h# @2 g- q                                @.DrivingHome := true;
0 Z+ N; H9 X/ V5 e$ V                        end;( K1 s/ \, `( p' Q" _1 L
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station+ V2 X$ W3 r/ X4 L/ o# |. R  S
                        part := @.transpOrder;
! s( m7 A6 t, n! i4 J9 H                        part.move(@);-- load part
  d: `3 G, b/ T( V) {0 v  H# T                        @.CurrIcon := "load";2 k0 w6 r" [* C& ]9 ]) C% n  R
                        GlobalDistObj := part.globDestination;4 W) Z, @: _5 N# e/ _: A
                        assignLObj := rgmanager.rgAssignL;! [+ W2 u  y9 D6 [  }
                        row := assignLObj.getRowNo(GlobalDistObj);, x) b: c' t. e' [4 u6 E
                        if Row = -1 then -- since 707 L5 f& \$ ]' y8 S' a
                                if lan=1 then% u$ x6 ~% }7 C8 ?2 _9 {
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),4 L* Z) x+ l6 I2 V
                                                to_str("in der Andockstation: \"",?.~.name,"\""));" S2 L% U! F+ }* N4 ]8 @
                                else2 T5 k3 {. y/ e- t1 v  t: H# j
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 @4 Z% J" k/ P& W4 E. U1 B; K- q7 i                                                to_str("in docking station: \"",?.~.name,"\""));                                " q; }4 o# x: }( u4 L0 v
                                end;! @4 w2 `+ @" `+ i- R$ h6 R6 {$ z
                        else
% t% P0 c  D9 [: P7 ~$ I5 e) V                                @.Destination := assignLObj[1,row];% U9 \4 m, `6 b( l$ v& h
                        end;                          i6 C9 t8 F& U4 H( z
                        newDirection(@);
* S4 A" ~0 R- v4 P) c                        @.HasOrder := true;# N% K( W9 o# x! ?0 `+ B/ l
                end;$ D) }' m1 T7 b% |4 H# z( P
        end;0 g7 c- c% u% n
end;        -- of the method
; l0 y- l, u' V: C  {
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ( n( S* x6 B  X/ }# g4 t' K

# m% x" i4 w8 \" q这是AGV_putin中arrive的method。; ], g; o0 u% r/ b" i8 d
0 u$ @& J7 ?+ L( E2 x& X7 Y
当到达物料速度越高时,这个报警更多,
: n) V* n& C8 J' i' I可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。0 w3 V! Q6 s* N
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
8 K& H8 M9 F+ A3 e9 l
7 a0 r( _! D! M9 h另外一个小建议,就是move,所有的move都可以这样) j' `) ^4 D1 v+ Y) @8 Q, F
if not move() then debug end
: z0 U! K% [/ H这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。, W1 H% w6 c' v* @- U$ _
plant simulation中的free libraries有AGV模板,
" Z* j/ w6 d/ X9 A  Y里面也有案例。
# ~# Z" r5 B/ l我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。! D8 i, s# }" U* W

7 @9 A7 Z* X5 K9 k8 p2 g我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 4 S' s3 v1 G" G1 u+ v' T  B0 T

% E2 N3 t% L1 l$ W; O: w" V/ @那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
2 J; K$ l! G4 C' {' R这是AGV_putin中arrive的method。" q; q- o1 v; j$ p/ [. g& C
8 W. d  m* t4 f
当到达物料速度越高时,这个报警更多,

; h; r) d2 S9 R0 ?% _另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-21 19:35 , Processed in 0.019691 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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