设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6465|回复: 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'
( ?8 r. h% T# D*/8 Z$ Q, i: R) J3 w4 o
is! [: y& U. e1 x% v. F5 J2 m* G
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- l3 O2 i' q2 j% o
do  F% V/ B5 b2 p
        Lan := rootfolder.Internal.Tools.AOLlanguage;9 W8 X( l" ~* {" k; P
        if current = @.Destination -- else return
; H* @9 ^  k- a3 s! @2 l) L        then0 d( u' w) ^% H3 q
                @.Destination := void;% E. n2 e1 g6 F+ G( d8 y# G
                if @.occupied then
! J2 S3 i' U7 k$ N7 S6 I* \8 Q; {                        part := @.cont;
1 A0 n! c: Q% j& j7 c/ u                        @.transpOrder := void;
) L0 N8 i2 b9 O; c+ G2 p; A9 U                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,) q/ [7 v2 z* E8 F9 {- x
                                @,root.eventcontroller.simTime);& b" a0 ^% k7 O  G( \6 X
                        @.HasOrder := false;0 `) [1 M- B2 s, {% i, I& C/ a
                        @.DrivingHome := true;
" o7 {$ V6 M* _3 a5 U                        rgManager.tryToStartTransOrder;- C, @! k- y3 @/ S9 o# C& n
                        if @.Destination = void
/ t. q5 b2 t  T& h+ V. G                        then -- no transport order for vehicle @
, V) s0 F9 e( j: l+ a$ z                                @.Destination :=
# Q# r0 @; s' }7 m                                rgManager.nearestFreeStation(@,track.~);: P& A* m, }6 T+ o. G
                                newDirection(@);   * o$ C7 I. @; a( v
                                if @.Destination /= void then. z" T* }/ {( X8 \
                                        @.Destination.NumReservation :=1 p9 z" b7 b$ ?( s5 V
                                        @.Destination.NumReservation + 1;
, n  G/ ^+ a& K& w, j) S& G9 w8 Y                                end;7 D9 W, T0 h$ \6 L% [
                                @.CurrIcon := "drivingHome";$ s/ D$ v8 H' c6 j% [+ p1 {
                                @.DrivingHome := true;
" ~, s# A7 S4 N5 I3 M! W; z: }                        end;# W4 o" Z9 a. u: z. U6 q
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station/ _1 f) E( t6 u* e* o
                        part := @.transpOrder;' M' Y! T( u$ R
                        part.move(@);-- load part  _1 r2 N4 L- X3 t3 _7 z" Y2 W
                        @.CurrIcon := "load";
. m& z  [$ i. L& ]3 G                        GlobalDistObj := part.globDestination;# b& l% Z6 B9 H5 s
                        assignLObj := rgmanager.rgAssignL;2 d  o" m8 r( U/ [- J* \* S6 |
                        row := assignLObj.getRowNo(GlobalDistObj);1 n$ Q, |" P% }7 |. U7 k7 N
                        if Row = -1 then -- since 70
0 s! o6 L( m  i: B                                if lan=1 then( G: R- B/ z0 E
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),# [* \, Q) q& G7 ^
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
; C' N1 k/ c! b                                else
+ H' ^& n& W, O3 L! Z! R# D; p7 ^                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\"")," H. f8 [. M- N2 U' @: V/ z
                                                to_str("in docking station: \"",?.~.name,"\""));                               
" Z# R6 F- ~: u8 C) b# q0 J                                end;
/ D* X, p& \, p2 F6 U. D                        else0 [9 v# `4 t" h4 ~
                                @.Destination := assignLObj[1,row];- ^! f/ g# _1 ?( `/ |$ Y; @# o, b" Z
                        end;                        + t5 N( X$ K  ]$ \* m/ w
                        newDirection(@);
) C; r( A3 d' S, V5 s+ M" ?: i                        @.HasOrder := true;! d' u: l9 g( D8 ]4 l
                end;9 s+ L) W5 [* {0 \$ ^/ e9 i1 ^5 J
        end;  J8 @' X( f1 w+ e# W! Y- C+ p  Q
end;        -- of the method
; V, [. {/ S: u9 ]7 r
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ' s7 i6 c3 F4 C+ o3 u. R

  g$ e9 r8 p9 l这是AGV_putin中arrive的method。3 q; l1 f! ]+ y% x

: g8 u+ Y8 D9 ?, ?: V0 c0 A当到达物料速度越高时,这个报警更多,
% D" W* v) D% e可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。+ ?1 ^' I% P( z' u
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 n5 U) T5 F. e, n1 E! C! k% ]# K+ ?4 d9 o
另外一个小建议,就是move,所有的move都可以这样
3 ^' y: s- D' x. O' @# k! K6 H$ d  p8 qif not move() then debug end
  }! B5 W% f3 R* H0 r9 |8 s这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 Q0 d0 r3 j6 K* E% F& g0 xplant simulation中的free libraries有AGV模板,/ e7 x( z7 G$ `6 y* j; Y
里面也有案例。& e3 _  s( H% x. j: s2 }
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。# V0 U% j9 G& c% x) X# f
1 R) _4 [$ \- u7 o# V4 k
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 : b6 t3 O; I; K

8 @" H/ i3 _+ C* }那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
( \1 W4 n: ~- m7 y$ k+ T- k这是AGV_putin中arrive的method。* _# A! @- E( B' _1 ^2 J) S+ i
; v' j3 F. l' L
当到达物料速度越高时,这个报警更多,
3 X  U3 T+ x4 J; Y- @
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-8 08:38 , Processed in 6.752694 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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