设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8929|回复: 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'
" w4 X5 ?$ e6 E  J" q& S& L4 y*/
) h* u: W0 c7 I# c6 Uis
' G& b+ e/ C; Q5 y6 ]        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
( H- S  ^2 d9 w* H* G. Sdo! R$ L/ w4 x( n( X0 D4 S2 r) P2 }
        Lan := rootfolder.Internal.Tools.AOLlanguage;# u! K& y) ~0 f6 p" a' t  R) ?
        if current = @.Destination -- else return! p: y- I1 D8 m4 V8 t& M
        then5 l* D' H* h  e, ]; j9 A
                @.Destination := void;
' I6 P7 R2 E! O% }& b3 r                if @.occupied then0 t/ ^1 q# @' T9 [. a, h) l
                        part := @.cont;' E8 p1 M( H4 O4 }2 ]+ r- H" V
                        @.transpOrder := void;
- K: U, O- o2 n& u                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
  J" W* o+ d, @                                @,root.eventcontroller.simTime);
+ x1 V5 T& Q9 k' Y- y                        @.HasOrder := false;4 t- s( J% A' j7 w. U
                        @.DrivingHome := true;
3 Z' u  b0 q/ @3 m9 D4 x+ W                        rgManager.tryToStartTransOrder;
; c' n: `7 m) K* a; n                        if @.Destination = void
. I$ ^2 l3 E0 Z! A( N                        then -- no transport order for vehicle @8 E; w+ J4 h- p% B6 Y2 B' \
                                @.Destination :=
/ N/ ~; |, U; j% K; U! r                                rgManager.nearestFreeStation(@,track.~);: K0 E, V- B6 k7 q
                                newDirection(@);   
' t  d& U5 f% t9 _! `                                if @.Destination /= void then' L. T3 `2 @3 N
                                        @.Destination.NumReservation :=' ^( b) m3 f1 V, |
                                        @.Destination.NumReservation + 1;8 U7 ]9 _# E2 \) [6 c
                                end;
( Z8 ?1 t+ Z0 F; ?                                @.CurrIcon := "drivingHome";! o. ?. C. U# `- r0 M3 H# U4 O
                                @.DrivingHome := true;
/ F: y$ }' f* K  r4 E% M5 `                        end;0 r: g) o* ]4 T9 c& ]7 G
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station, _; R# s* L0 @: n* w% {- b0 l
                        part := @.transpOrder;. y* i3 i9 S2 Y1 ?
                        part.move(@);-- load part( H4 T. O4 I# h+ a; L
                        @.CurrIcon := "load";7 V( ~- v; X4 R3 \3 P" y
                        GlobalDistObj := part.globDestination;+ p! r# _4 n/ \& M
                        assignLObj := rgmanager.rgAssignL;
1 i1 t$ d% i7 A5 \. D; P, j; i& T                        row := assignLObj.getRowNo(GlobalDistObj);  B+ |) b: @! f  m. b2 U1 ]
                        if Row = -1 then -- since 70
6 L1 x6 y# U( @8 d: l/ d                                if lan=1 then
% H9 u: ~, M  `, Y; Z5 ~" I                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
" T( j! G+ V2 u! O% \; x( B" u9 d                                                to_str("in der Andockstation: \"",?.~.name,"\""));
+ W+ J% @  w& |9 t6 T                                else! U% P3 A' [7 I* v9 s* I, Q, O
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
; b  E/ p# @/ ?) {4 [# h9 y) o! u                                                to_str("in docking station: \"",?.~.name,"\""));                                ; O! U- v; e) _
                                end;( J) M, [; g, R' }8 C! ^
                        else
# J0 u0 Q. g2 q" G* @  Z  ~& ~                                @.Destination := assignLObj[1,row];
' P0 R6 k& ^! W6 I                        end;                       
3 E( T8 I9 I+ ^/ g% j9 g$ d                        newDirection(@);
1 }6 B& d1 C. E& p8 m0 a' ?                        @.HasOrder := true;8 ]7 [' i& W$ D- e' V& _% I" B
                end;
0 f5 ^+ T0 V* d3 C5 _        end;
" l. y2 ?$ n; _2 c' D3 bend;        -- of the method; f- x  c: O- ^
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ' t2 i) `* c5 E# T
4 Y- K' L  u& {: d3 `$ |
这是AGV_putin中arrive的method。
$ c2 j8 L6 W+ F5 G0 i) n4 A
$ }' E3 M+ @) s8 H当到达物料速度越高时,这个报警更多,
6 [$ k( z6 X! m0 G; l可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
8 G( w7 W" f1 Y1 J. A程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?% U4 C' ]+ E" d, ]
$ k6 J( w+ I# e5 q' _# F; c
另外一个小建议,就是move,所有的move都可以这样, N$ t* ^, q# p/ h  ]- L; y
if not move() then debug end( O* A. ]5 |0 g2 T' C
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。- E2 m8 r9 B7 V! G! F
plant simulation中的free libraries有AGV模板,
3 D% ~+ t  f$ m+ Q# b4 D里面也有案例。
: }- k/ G/ j+ |  {0 i. S  U4 F9 o我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 S5 K' s8 o6 ^6 ?- M6 O4 D8 S0 z' D7 u5 a9 x) g# H5 t- Y6 b
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ; D& f0 G) J6 l7 d/ f

( ~; b8 ]6 T  m那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
  y9 l7 G, B% R1 Z& w% B这是AGV_putin中arrive的method。
7 N% D( B( M0 O1 t. R7 d8 {
( K! S2 d# ?9 }2 ]- ?' T- }当到达物料速度越高时,这个报警更多,
+ z; d7 k1 E  j- l
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-4 20:09 , Processed in 0.016243 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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