设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7862|回复: 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'# a3 T; P; b  C- w, h3 I0 Z
*// c* T0 d$ ?" }7 _
is. `' M' K- Y) x) j; O- E
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
7 G2 g0 `$ l4 N/ e3 [0 Mdo
% n3 L- n! O7 e9 k* ?# _1 \7 ^        Lan := rootfolder.Internal.Tools.AOLlanguage;
: y# A' h' t5 M3 S! |' M  ]        if current = @.Destination -- else return
5 A" o0 E* [8 M# L/ |) v& {        then
/ z2 H6 M. y2 i5 v& c3 z; a                @.Destination := void;# h3 y$ q$ K& E, B
                if @.occupied then
6 b4 c: w  P& L$ Q# ]+ W: i                        part := @.cont;3 u. Z# @% `# e3 @/ E5 ^* V, N
                        @.transpOrder := void;
1 J( _0 z$ m9 {9 V# c$ B                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,9 X/ w$ [8 T6 Z" c: A) A4 s
                                @,root.eventcontroller.simTime);
1 Y2 h  D8 C! t9 f                        @.HasOrder := false;. @+ o2 K5 q+ p7 f9 W& d# N% m
                        @.DrivingHome := true;
' b0 P7 N4 }; a+ G                        rgManager.tryToStartTransOrder;+ z$ B( O! f# z% W$ y6 a
                        if @.Destination = void
: h/ N8 s" F9 \% x4 J( B# w; s+ z" l                        then -- no transport order for vehicle @
  C" f; I. G$ |' J6 J                                @.Destination :=, y6 M3 n  _0 N# {# ~& E, \
                                rgManager.nearestFreeStation(@,track.~);
5 J" S5 Z$ \4 e( T: V1 u                                newDirection(@);   8 b( a! \8 C5 E, Q0 t; L
                                if @.Destination /= void then8 _/ d! u# u0 f$ X
                                        @.Destination.NumReservation :=
8 m3 p5 o, m5 B6 [  _                                        @.Destination.NumReservation + 1;) d) ]$ J* l/ d: w6 a, D+ v
                                end;
$ ^, `+ A4 ?2 ~3 Y& ^, t$ R                                @.CurrIcon := "drivingHome";- s; F0 g. G- y) C5 E* Z+ W
                                @.DrivingHome := true;
( f" S: x: W" T+ B                        end;
& ^0 _( f" E. p+ U6 c) n                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
* M4 M6 G  t* [$ _- M* {) N% V0 |                        part := @.transpOrder;
8 G( b3 F3 y) g* p6 Y1 a; m0 @                        part.move(@);-- load part
$ z5 v+ o& m0 |- M                        @.CurrIcon := "load";* s3 M' L6 ?% G: E( t( }
                        GlobalDistObj := part.globDestination;, `7 B# [  ~3 c( w# ]9 |: y
                        assignLObj := rgmanager.rgAssignL;/ c" b/ a( R1 x  d
                        row := assignLObj.getRowNo(GlobalDistObj);
) t  Q3 l; \. _0 A; \                        if Row = -1 then -- since 700 E- W7 @) Z* v
                                if lan=1 then
8 g, F# {1 t9 G8 {* n" @7 [# Z                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
9 Q& T$ T: _+ R4 K- Z6 C                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( o7 r/ }5 q5 z$ t                                else
5 Q: i& M& w# [% w                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),/ b3 d: [" ^/ P, S; L% T$ c
                                                to_str("in docking station: \"",?.~.name,"\""));                               
, D5 H/ v# M" ?5 X/ x/ h4 U& ?                                end;- j3 J" e1 B3 c* X9 X/ j! c, k
                        else
. u- g6 K/ j0 D                                @.Destination := assignLObj[1,row];
6 F; M7 a8 c$ Y5 d" ?                        end;                       
# h  f2 b& a' j& z1 G                        newDirection(@);
+ U- }3 ?$ S6 X) G+ \+ L1 S2 B                        @.HasOrder := true;* E- w! U" _* M0 s0 I! w
                end;1 j+ W6 |2 E! d' K* ?
        end;
3 g, D/ P7 c& H) {+ {end;        -- of the method
: _% g4 ?7 U4 U2 ?* ]
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
: L" B# P! T5 T: i, F" T7 G  j, m- x# C. {4 P: c; T( o
这是AGV_putin中arrive的method。
5 y0 s3 }2 l% m/ i+ ?4 e% M7 v/ p6 i9 D' K3 \2 `3 u4 h1 x
当到达物料速度越高时,这个报警更多,( s* S% @# ?+ o
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。! ?5 _* y9 ?+ f0 l6 }
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?% z' D$ Y4 B- n, M
( U8 j% d: E/ B5 J. t# y3 e* `5 w
另外一个小建议,就是move,所有的move都可以这样
1 L8 X! {1 r# F$ W- Hif not move() then debug end
) G' d# n6 p2 S6 C这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
& N( ~. V7 I' D; I9 C6 F! K& y) `plant simulation中的free libraries有AGV模板,
2 `% k+ c$ L/ b* T里面也有案例。; q4 S0 y% Z$ o/ D! f2 N
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
0 `: A% F9 c6 W$ T- O" Q. v, j2 F7 Q3 e! M& E) K0 w0 H
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
6 J* ]. t8 K" z- l
/ z( L* @+ e; r: @0 q( N( x1 g那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# `: s" [/ L3 c; f  I+ G这是AGV_putin中arrive的method。4 B' I- J7 q+ j( Z/ U7 I9 L
) W' F$ m( @& \
当到达物料速度越高时,这个报警更多,
# ~1 w+ p2 i1 i
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-2 09:23 , Processed in 0.022901 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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