设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7433|回复: 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'0 f1 O1 l; P7 \3 e
*/
8 f" E2 k( Y" w4 [is
! O6 K* J. {9 p8 C1 W/ t9 d% H        part, GlobalDistObj, assignLObj:object;row,Lan:integer;2 _6 i' [% _) u
do
$ x6 ^8 M* k9 e        Lan := rootfolder.Internal.Tools.AOLlanguage;
% c4 X0 U3 M0 T5 k* W* r0 K        if current = @.Destination -- else return
' Z, X& e* t# a+ y        then
% y* i- [# ?7 I7 c) g; o  H, O                @.Destination := void;; y2 V, T' R7 S! T& x" c+ K
                if @.occupied then
7 J! [7 J; C: j0 {                        part := @.cont;
) d; {  _5 a7 U8 q! t                        @.transpOrder := void;
0 k% s: F8 H0 J) B% j3 U& s% p' O                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,1 j2 V' f, n4 Y, d- I2 i! b6 x
                                @,root.eventcontroller.simTime);
" R+ l) T/ L) A+ H                        @.HasOrder := false;
0 N! t: T, x1 K2 O( o, O                        @.DrivingHome := true;6 f6 B. F( y  U7 G1 ^
                        rgManager.tryToStartTransOrder;, i  Y: F# P$ i7 w4 c3 h) A1 b' A
                        if @.Destination = void
3 @% X7 Q: l; r3 Q                        then -- no transport order for vehicle @, F  A: K+ }1 B5 o& B( `9 x
                                @.Destination :=
3 a6 b" \+ S0 {; l! e                                rgManager.nearestFreeStation(@,track.~);* Z2 H7 N: b* P
                                newDirection(@);   
: i7 o+ A3 l, v: _                                if @.Destination /= void then
; `3 p2 k; \* j2 u. y4 r' l                                        @.Destination.NumReservation :=9 [* W  e- g7 \& k" y9 |
                                        @.Destination.NumReservation + 1;  R" _# E# Z! y" r# j9 q
                                end;+ i+ Y. z& d1 v8 H- a: ]: D
                                @.CurrIcon := "drivingHome";! n. g7 q8 }( w6 R
                                @.DrivingHome := true;
- K! o8 G) W, Y4 a* _                        end;( a, U8 P& H5 C+ d# K
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
9 u% e6 K; l$ U9 E; g                        part := @.transpOrder;2 c: ?- E# ?! ~. o4 }" m! V; B
                        part.move(@);-- load part
4 d! W& r" t- L7 Q6 F: ]                        @.CurrIcon := "load";
" g3 u. o: U, p" c( h                        GlobalDistObj := part.globDestination;
3 V# a: I$ j3 F. w5 T                        assignLObj := rgmanager.rgAssignL;2 J. c( Y6 U  E! n3 z& O1 M
                        row := assignLObj.getRowNo(GlobalDistObj);
5 A' _3 `+ I* ^6 o7 u( q! D0 \; i3 b                        if Row = -1 then -- since 70' Y2 U2 W* s$ U6 f
                                if lan=1 then) Z# l5 _, p3 I( D( |! u
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 L4 n- {0 E7 g( N                                                to_str("in der Andockstation: \"",?.~.name,"\""));5 b% n# d& `; Z4 ~, y1 Y; f
                                else; p3 @# L. \- N1 {
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),6 z" C5 L, m* j- C$ `# S0 T
                                                to_str("in docking station: \"",?.~.name,"\""));                               
( d4 H$ c: x5 F6 I: \                                end;& c( a9 W) A4 A5 @) i
                        else, b. ?5 G: |, Z
                                @.Destination := assignLObj[1,row];
0 t6 N& }( V+ a0 L3 m/ G/ P" \# d) B                        end;                        # V2 t+ X2 g0 H( m2 [7 z1 x) z$ C
                        newDirection(@);  h4 K) g0 b( ^! {5 @
                        @.HasOrder := true;
: O- Y% c0 [4 f# K, j/ U  i                end;
5 I7 x2 @4 \: N. |+ ]( ?" B        end;
+ A3 R, ^% j, Z0 oend;        -- of the method
& T  u1 ~: C0 s# @
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
. g* \+ C* B: [  b
! ^9 z1 ?' H; W5 ?+ p. M- Y这是AGV_putin中arrive的method。
# e9 Z/ n" m: [2 q3 g9 S
: q7 T4 Y& N$ z% S/ ^; Z" V, M当到达物料速度越高时,这个报警更多,( p  A) l; x! e! k
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。, m- R9 U+ m  G) y% X
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
) r/ B! z! m1 N4 l. ?6 n2 f4 T$ ?& X" I6 a$ m# D; z0 A
另外一个小建议,就是move,所有的move都可以这样: p4 Y# n: x- s5 f2 v( Q
if not move() then debug end
, C3 a: g6 c5 Y$ |7 V; T这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
7 }) y0 [6 o$ s: M/ V8 m% r( dplant simulation中的free libraries有AGV模板,( y: H! l0 }/ X/ m3 ?; n
里面也有案例。6 N- D. m6 f2 B0 ?0 U
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! ?8 C- M* ?$ |- R9 O( i9 S$ w
/ q0 m/ K0 t5 J" K. G. _( _我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! \; M, H! x" j# G+ p  d

3 {6 K( u% o! ]那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ; z! y: X& X" i/ m* M; d
这是AGV_putin中arrive的method。
  I  Q" I! B! M# U% [+ Y0 k! E; V/ N2 F9 e
当到达物料速度越高时,这个报警更多,

, _+ X+ z; ?1 Q+ c另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-11 04:19 , Processed in 0.019475 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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