设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7654|回复: 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'
( T( r$ u7 M) @! C5 Z*/
" m# A( m- e5 h  \: F; sis: P* k# H$ T2 C* Y7 m. B8 ]' ]
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;1 Y- f" y4 ~8 j# `! `
do
5 N* e3 o8 ], `  \# u        Lan := rootfolder.Internal.Tools.AOLlanguage;
4 ^! \/ Z' g7 D1 L( `+ t$ _# {        if current = @.Destination -- else return" s) H- [7 p0 o% d, P2 D
        then
: U- ?6 o1 t' W2 k# r& [4 {                @.Destination := void;9 P/ k  X5 K& j/ I8 a! D, ^
                if @.occupied then
  M" L/ E+ J8 K& X                        part := @.cont;
* p0 U. ~: C4 i5 W' X4 F% {                        @.transpOrder := void;
1 W) h& E+ s7 O                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,* F' n, g2 \1 p! a
                                @,root.eventcontroller.simTime);
+ a- D4 I8 ]5 a7 n7 k+ b                        @.HasOrder := false;( z% E7 E5 Y! ]; O/ x
                        @.DrivingHome := true;+ c) s( s5 t$ M' I9 s' F& T
                        rgManager.tryToStartTransOrder;
7 h' e; t; _5 O7 _6 `$ E) Y% f" k+ p; _2 `                        if @.Destination = void
$ y( Q# X  H# V7 W                        then -- no transport order for vehicle @3 ^. Q6 K  ^2 c/ W: g( V
                                @.Destination :=
1 D9 f5 ~  `" O( i4 r                                rgManager.nearestFreeStation(@,track.~);! n, k3 y1 T7 o2 R4 V+ R+ z( C0 j
                                newDirection(@);   
" a$ ?: Q1 ?5 P* w3 @; b3 h                                if @.Destination /= void then
# p; m; B7 h4 f0 e2 F+ K+ H                                        @.Destination.NumReservation :=
2 i: x$ R- j9 J( e$ k; H: }                                        @.Destination.NumReservation + 1;' f  L! \# O! [+ u1 U/ t
                                end;
3 r+ O% v$ R8 o# g                                @.CurrIcon := "drivingHome";
/ G) d, _4 K. c" c6 `; i( l- ]6 H                                @.DrivingHome := true;7 j# M, p* G# K$ R! ~1 ^
                        end;& X: F$ Q9 g3 r7 Z$ o  h% F
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
* v0 M0 X0 w( X: l/ ?. C( ^' k                        part := @.transpOrder;7 j0 a, |. Q3 I6 X- M! `
                        part.move(@);-- load part
  t1 F' r7 ]& r# n# E                        @.CurrIcon := "load";3 R" g7 s* d4 u0 K5 d4 b3 t4 j
                        GlobalDistObj := part.globDestination;7 k' o; q) u: y# T
                        assignLObj := rgmanager.rgAssignL;8 w- y) g! X9 |0 o+ L4 ]# ]/ t
                        row := assignLObj.getRowNo(GlobalDistObj);
6 w8 m" a4 C1 m) p$ L5 q                        if Row = -1 then -- since 703 |; b7 H4 }, u6 e3 X: z' }
                                if lan=1 then! F& _3 w; O8 e/ ]7 K# @) f
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
1 u7 J. S, y* D; W2 R/ q0 I0 \                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 l3 R& c( s# a9 J& ]0 @
                                else0 `( N% p8 ?+ l4 c, N
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),& ^" L! ~6 y, G* K
                                                to_str("in docking station: \"",?.~.name,"\""));                                ; \2 \  s7 ~& V- U
                                end;
: S4 x& K0 F: h9 q7 \                        else- a6 N1 d3 T# w6 ?, A4 ]6 J
                                @.Destination := assignLObj[1,row];" P( Y! y0 `! y3 r! Y
                        end;                        " c! f1 K/ V% V& k
                        newDirection(@);# f1 D+ e3 O& a; t9 [
                        @.HasOrder := true;+ j; H6 Z- @+ C9 g4 j- w
                end;
0 @3 A0 y/ t& d2 ^+ O2 j        end;
% K' }  Q8 D: Cend;        -- of the method3 j. Z$ Q; }6 p7 F% W  L2 y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ( k/ E4 C1 e0 N1 m$ ^+ k" E, e8 P

  W" J9 ?$ E4 _' z这是AGV_putin中arrive的method。( f, n% J+ ~! ]
; g7 ~4 T% g1 E8 r4 Q8 [+ g
当到达物料速度越高时,这个报警更多,
6 D8 g9 w7 d. V% P2 q可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。' K! i+ E& k$ y& ?9 _5 Y
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?5 d( q: z( c; [- J

) M" \6 Z0 z0 ~; h/ G另外一个小建议,就是move,所有的move都可以这样/ W( I4 i) Q( Z3 G# b% h
if not move() then debug end
: }2 u, R% ^) s* E! [. C0 `这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。1 @, J+ N5 l0 a( w! W
plant simulation中的free libraries有AGV模板,
- {8 q% X% h* Z8 X6 t! e里面也有案例。
# `2 j. Q: v! z3 D! V: R我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。7 R7 d8 ?7 \9 N. A+ e
1 ^8 L! t% ]& Y; r& j# S
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 " E" D4 f1 s- f

: H. a4 J; G1 z) q8 f' c那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
* k) q8 M9 [0 }/ F+ ]5 s$ H这是AGV_putin中arrive的method。# ~: G& F' v. \( x( _
8 _2 c# x, z. S+ Z- Q7 h
当到达物料速度越高时,这个报警更多,
0 d; x- y, f( Q: ?% c4 T6 ^
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-22 18:08 , Processed in 0.021127 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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