设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6792|回复: 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 G2 C) S% M% Y; R; A
*/" Y0 }( j& o! n3 Y/ f
is6 m( b. z5 _4 O# K6 \
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;0 F1 v' w  T3 N/ V7 O
do* g. \  z3 B% \
        Lan := rootfolder.Internal.Tools.AOLlanguage;, d7 b" u, p4 a
        if current = @.Destination -- else return( {' W# g! ^4 N( R! c8 A5 Q
        then
+ @# t2 M' o- q1 S& r                @.Destination := void;
3 y  _% X6 L; B, M& Z0 V# h                if @.occupied then8 C+ J) t" B9 l4 A4 y- r2 p, n
                        part := @.cont;8 U+ A1 S0 g& q4 r! I3 p
                        @.transpOrder := void;
( }" n# u1 D$ u2 ^' ^4 X                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
3 {) J/ N" U- o1 \& \3 V  {                                @,root.eventcontroller.simTime);
% M  w" f( H/ L* Y! |                        @.HasOrder := false;
& d4 `) R' z5 s7 U6 s: ^8 K                        @.DrivingHome := true;" d' w  F( |- h* Z) U
                        rgManager.tryToStartTransOrder;
+ ]3 h; N  s& i& w' c# k                        if @.Destination = void
5 W: t% B. ^! K: L' A                        then -- no transport order for vehicle @1 `* a( _$ v6 Z9 v3 q$ T
                                @.Destination :=
5 ~5 Q$ U9 f: _- e+ Q4 X4 Y0 m$ @                                rgManager.nearestFreeStation(@,track.~);! n. O) Q- P! ?# `$ A  g; `
                                newDirection(@);   # }9 g1 p' b3 b& |" P8 N
                                if @.Destination /= void then1 S, ~' D9 D0 E2 K+ H: I
                                        @.Destination.NumReservation :=
/ ^) D; W) F* g% f1 f                                        @.Destination.NumReservation + 1;
/ Q+ q, n9 P4 |- b4 n                                end;
4 o  }( C/ a( W( H4 k8 t7 r' B4 b                                @.CurrIcon := "drivingHome";8 K& Y- i% c0 G9 B! {
                                @.DrivingHome := true;
  @6 f' N. P* T                        end;/ C! @: g8 F4 l7 A2 |9 _+ A7 Y
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station) w3 i; ~# O! u5 M
                        part := @.transpOrder;1 M( u6 _# P: Z2 H! E' W# k; M
                        part.move(@);-- load part- P7 G1 ?8 |# K$ {4 t( h& L' O
                        @.CurrIcon := "load";' B4 g3 M  S: U2 e( _% D2 Z2 I
                        GlobalDistObj := part.globDestination;
/ V7 s* V6 [* [' a                        assignLObj := rgmanager.rgAssignL;  S9 m) a& c0 a8 t+ O
                        row := assignLObj.getRowNo(GlobalDistObj);3 W7 W3 ?3 i0 P3 p: k
                        if Row = -1 then -- since 70+ y; a4 e5 Z+ D5 {3 h: \: ^8 w
                                if lan=1 then9 H! t- {& n, T* o' U
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
9 e# I2 |( D! @5 |4 D8 R' ^* [/ u                                                to_str("in der Andockstation: \"",?.~.name,"\""));
, k) D0 K( s( j& m                                else
" Z9 q8 F8 [$ T5 v                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
# i2 o5 G& c  W, _1 J4 O2 r8 q                                                to_str("in docking station: \"",?.~.name,"\""));                               
; z4 i% Q' `: I2 {4 D                                end;) E; j# E0 m7 f; Z# S4 T$ _
                        else* w: s+ h. h, s1 i/ r7 Z$ O
                                @.Destination := assignLObj[1,row];
2 i6 X* ]3 m+ [                        end;                        ! [+ }. a, ?7 f; ?* D  V: Q9 N
                        newDirection(@);
6 g# a+ M' X, H% m                        @.HasOrder := true;
" V, ~* T& w2 p# s# z- d                end;
9 k. J/ j0 d* R; K5 ~# j" ], F; I        end;$ l/ d: h6 @: p0 w8 m7 S* D" d
end;        -- of the method- y  N1 ~- s% `, r
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
% k2 e8 I$ |# H- G- m9 k" N+ D  t: j
这是AGV_putin中arrive的method。9 t2 B* ^+ v) ^" S8 }

! ~8 N( T- X# O3 R3 i6 o& Z当到达物料速度越高时,这个报警更多,
! Q+ I* ]9 P! i可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。7 y6 D% R/ C$ ?. @9 r4 B6 z9 V
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?. ^2 D5 F, e7 l; u- k

( }+ O0 F: D1 ~. S9 M3 M另外一个小建议,就是move,所有的move都可以这样
" n# J) X7 t# i: L) ]if not move() then debug end
4 {+ h6 B) C( Z5 u2 W5 j这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。5 ]6 M' I# Q  A9 ~! V+ ?
plant simulation中的free libraries有AGV模板,
/ n  w: k4 a* F) B2 }里面也有案例。% j+ E: l* {4 V. ^' g/ e: W- K
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
/ x  ?, K9 I7 z1 R/ \; [" y1 f7 R4 g1 U1 U+ Z' J
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
& n* Y# Z6 W1 E) n% O: A' ]& g5 b$ g  S
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
' Z6 x# P8 O# @: U这是AGV_putin中arrive的method。' }9 ^' |& t: W/ b, ]+ r
/ T) l9 u8 W. B* q" z
当到达物料速度越高时,这个报警更多,
5 r- Q( a& n6 Q) V8 j5 a. N
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-27 03:09 , Processed in 0.020887 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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