设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7837|回复: 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'
2 \. s' O  K# g. w3 F7 s*/
/ A8 g& H. M: eis3 I; F) \2 A1 e5 b# x  N- k
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# O5 ]. q1 h  ]+ m- o; ~; F
do
1 L6 W3 R1 b8 c7 S        Lan := rootfolder.Internal.Tools.AOLlanguage;: d7 [8 h# J3 t
        if current = @.Destination -- else return( }1 V, v5 \  X
        then' ^& \6 r, m! m' Y: g
                @.Destination := void;
" L( Y# D0 u9 N                if @.occupied then
5 Q8 b, j5 S" c9 ^% t                        part := @.cont;
; j) P* L  o  X* _0 Y) R. ?                        @.transpOrder := void;
9 |3 w2 s+ k' @% B/ e3 o                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,2 u; t) p, E' i  t0 h
                                @,root.eventcontroller.simTime);' V" ?$ n: C+ t8 O/ S# Q
                        @.HasOrder := false;
# ~) ]+ y. b. c* T- U                        @.DrivingHome := true;
' L7 ]  s3 N9 l* j' `+ f; q                        rgManager.tryToStartTransOrder;
. ^& P; I, n, m, Q                        if @.Destination = void5 I6 k5 t0 [: v' Z* v9 E/ S
                        then -- no transport order for vehicle @
  _/ V8 O, e, m+ M+ A5 Z; T& M                                @.Destination :=5 P* ]# V' w: e3 m
                                rgManager.nearestFreeStation(@,track.~);4 c( C3 ^" T& ~
                                newDirection(@);   7 Y/ i2 t$ c5 N
                                if @.Destination /= void then& _2 `% H/ T* d) @2 l: ~
                                        @.Destination.NumReservation :=. D+ h: O( g1 K, p( Q" a' D
                                        @.Destination.NumReservation + 1;' Q: @# Q+ q0 T- h& }9 y
                                end;5 t! O( R# f8 ^
                                @.CurrIcon := "drivingHome";5 c. f4 e5 g& ~4 X) R- ^
                                @.DrivingHome := true;
- U, ]; B, ~/ m                        end;
& D/ D" G% \5 W# Q( U                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- y* A0 W4 p3 ^& f) h                        part := @.transpOrder;& D2 r+ Y( S* u! G
                        part.move(@);-- load part
* z/ I2 S# S& f- O% i                        @.CurrIcon := "load";1 H( r3 _. ?( j- z
                        GlobalDistObj := part.globDestination;
! r6 m: y" f9 b/ ]' a: J; b                        assignLObj := rgmanager.rgAssignL;9 p" _( b. h. F9 a
                        row := assignLObj.getRowNo(GlobalDistObj);: z4 ]" d& s: ~7 z8 S7 Z* g" W. }
                        if Row = -1 then -- since 70# w6 q4 z) Y4 F' A' a) M2 D1 O+ L$ X
                                if lan=1 then
  W* k, q, h8 f* Q2 S" K+ t                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
0 F& Z- e, {7 _5 o, i7 g6 Q2 t% y                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ s( R3 l! n3 G2 |2 x% o0 m                                else" ~7 i- f5 Q: T: C' q' ^
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),3 Q/ b; \" _4 R% ^+ s& L
                                                to_str("in docking station: \"",?.~.name,"\""));                                ; b) a) q- s) H+ Z% j
                                end;& h+ J9 W5 x& r$ w3 y
                        else
$ H- l6 P# m3 m5 k                                @.Destination := assignLObj[1,row];
7 S* y* t8 n0 p% w' ]  C1 n                        end;                        9 ~: I5 J6 S3 t' h
                        newDirection(@);
* `' ?( S% Z0 t                        @.HasOrder := true;
& D. d4 Y( q) b( I3 B                end;, p+ p# e5 v2 a0 {" _4 Y* u
        end;
+ v( m, C9 T( I- I* Z6 I" eend;        -- of the method/ R  W' \$ V8 j1 Z( d' Y# c3 w* {
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
+ z% y. K- s* V( ^- G
% Y6 @# Y& U" w9 @% S这是AGV_putin中arrive的method。
* `6 f% r* t7 d' I, Z) [) j' b, E8 i, [0 E6 y% }2 d
当到达物料速度越高时,这个报警更多,
' g0 p) o  Q/ R; g% ?* ?可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。" M9 ]1 Q( g% C9 ]# [
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
- j+ Z; Z8 Y1 `2 J2 R8 I4 _% z  |% f* g4 {
另外一个小建议,就是move,所有的move都可以这样
' \3 i# e0 H6 H" o# uif not move() then debug end
  Z/ C1 [9 r1 U3 M/ I" A这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
  B. x! M2 g8 Qplant simulation中的free libraries有AGV模板,
- O: `3 X( B, g6 c; J里面也有案例。: _9 p# o5 L! Y! T0 O7 E+ I" H* ^- f7 [
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。$ Z: [! c: v, Y  C" l

0 l3 j4 R: m8 X4 n6 m我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
! K/ W6 T1 M/ [, [# A
5 H& i% w- ~8 @. T, g& _3 g+ e. m, d7 ^那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 : v  Q4 j& E& o  `1 }
这是AGV_putin中arrive的method。
# m1 ?2 R5 ?! P5 _
, J8 v+ @  W6 P/ \$ [# J当到达物料速度越高时,这个报警更多,

5 t. \2 e- r9 _7 V另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-1 06:49 , Processed in 0.018883 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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