设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5878|回复: 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'
3 g: W7 I* \0 y' n1 D  M0 M+ J*/
; M  u( s7 ^4 ?8 H3 yis
. ?' P9 m1 f/ Z6 R        part, GlobalDistObj, assignLObj:object;row,Lan:integer;. e( k5 Y. `- x
do! O" [4 l6 o" e6 k1 I
        Lan := rootfolder.Internal.Tools.AOLlanguage;
4 @2 _$ \/ N4 ?  i# H2 [        if current = @.Destination -- else return
$ s- Y) \( u  t        then
: S9 x7 B' A# ^7 K                @.Destination := void;( W5 m# ~: v$ b; h8 G5 k
                if @.occupied then
0 k, h, Y0 Y- D8 c7 I                        part := @.cont;: v2 U# q" e- ^
                        @.transpOrder := void;( v5 v- |0 g- g. t- k) w0 l
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
. r' H* k; ~1 B9 a$ o                                @,root.eventcontroller.simTime);
- y4 L; ]) A8 r; u4 |3 t                        @.HasOrder := false;
2 g/ T8 J/ j$ M" ]" e" e                        @.DrivingHome := true;
; J4 ]5 J; f; l% ^, L, e                        rgManager.tryToStartTransOrder;
4 B: l  r* p. E3 e$ G. P4 z                        if @.Destination = void
$ R4 [$ i/ @6 F9 r% l$ Y5 S                        then -- no transport order for vehicle @
/ l3 e. h5 g  x9 [/ _                                @.Destination :=
8 D2 v# }3 g& j0 i6 a' e                                rgManager.nearestFreeStation(@,track.~);
; z+ A+ m' m! w$ L, M  D1 E7 c5 r                                newDirection(@);     L1 \6 m$ i, ]
                                if @.Destination /= void then6 ~0 h8 S" S( I/ I# m: e) ^6 Z2 b7 i, m
                                        @.Destination.NumReservation :=
9 b9 x1 X3 W" h+ t                                        @.Destination.NumReservation + 1;2 c+ g  X$ l. |) M( Q
                                end;
+ P7 l- c. e9 \                                @.CurrIcon := "drivingHome";) _. d/ C* @/ K6 W  K9 j/ V1 l! _, k6 S
                                @.DrivingHome := true;
, D$ g; R0 T/ D7 ~+ B                        end;6 w! \" r7 {; S6 k- o+ N. C( d
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 F* p) \6 j5 R
                        part := @.transpOrder;
9 R: \3 ]7 i; u: a1 X& f                        part.move(@);-- load part! }2 F$ j$ O3 g* e
                        @.CurrIcon := "load";
2 @+ |0 b' L5 Z" ~. x                        GlobalDistObj := part.globDestination;
+ i+ [! D" i  @$ A8 \4 h+ q! S, Q                        assignLObj := rgmanager.rgAssignL;
. L7 Z; w/ b% x* Z0 a0 ^                        row := assignLObj.getRowNo(GlobalDistObj);
- P* Z, L- |0 h! x7 P& b. n$ ~. H8 d                        if Row = -1 then -- since 70' y4 w2 q$ u3 a! e5 }" s1 j
                                if lan=1 then
+ D& Q( A- k% x& M% N# ?                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),( c* }9 K' l* @: k& s& |  @5 X5 z
                                                to_str("in der Andockstation: \"",?.~.name,"\""));8 n! T% }+ N8 \) \7 D6 [+ i
                                else
7 ^- d6 Q: ^1 F, T% v                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),7 h' G4 j% ~  U6 A4 F* E
                                                to_str("in docking station: \"",?.~.name,"\""));                               
9 \: f( z( J* _% t9 u2 d9 |, E) [                                end;
" [; z  R5 z" d* P; A7 `- [: p. c                        else
5 c2 i3 A6 i/ `                                @.Destination := assignLObj[1,row];
( R5 C% v& j: x- m                        end;                       
& L2 t& H/ A; C( ~' V# W4 t2 V                        newDirection(@);
9 B3 d, x1 R2 h+ h                        @.HasOrder := true;
2 C5 d  N; v( a* g  ?+ L0 Z% a$ g                end;
* c7 d" [7 H" o        end;4 D' o: k& _) F$ O
end;        -- of the method
# N+ y4 w4 G  z8 Z4 u; C! B% ^
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
* Y4 t$ I8 P! W" W1 |& @
6 b& u: {% C+ d; {7 q: {, C这是AGV_putin中arrive的method。, s0 J6 s2 S* q! {9 @
& G, z! k( \! L5 K
当到达物料速度越高时,这个报警更多,
0 F: X0 B3 w9 p1 g! j. y可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
- P. {& ~3 M( s8 R' B  t程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 Q8 K* d8 j, ~' F4 y$ M8 A: i% ]( t
另外一个小建议,就是move,所有的move都可以这样" x3 }7 y# v3 H
if not move() then debug end
$ n6 f/ h# f' w1 e这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
# T$ x9 E& |7 r1 f& Q0 f' Lplant simulation中的free libraries有AGV模板,
+ u. q/ v9 m" U& J* O里面也有案例。
* i% S. o0 H" y0 a- x' o我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
, c2 ]1 g( g* x$ e+ O% S3 ?: D. Y! R
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 3 I7 X  h) ~7 ~

0 w' y2 i; p5 a那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
7 S) c) |! a4 L: h/ s/ M3 z! s, R这是AGV_putin中arrive的method。
( j* H' `! V3 Y( k4 X/ }; j' M3 k+ w: m( Z3 K% |
当到达物料速度越高时,这个报警更多,
3 t: v: _4 A+ s4 R
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-29 04:25 , Processed in 0.015331 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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