设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6612|回复: 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'
& ~8 |( d  t6 y4 h*/
; u- B1 d; Y' _9 S5 ^' {6 eis
9 s' L. u* o6 {4 j, |9 {2 c' r        part, GlobalDistObj, assignLObj:object;row,Lan:integer;3 n2 k9 v% p4 n$ k
do
" N) Z' i/ ?7 V& l        Lan := rootfolder.Internal.Tools.AOLlanguage;4 j: ~; P' i+ t* F; S
        if current = @.Destination -- else return
/ H5 r0 m+ F' g3 N        then9 J5 b) [- u. K4 D5 r
                @.Destination := void;+ e" z9 H( _6 i  s1 W
                if @.occupied then
1 g. n: G/ E# F- @                        part := @.cont;: u- {" ]2 i2 [5 L- J
                        @.transpOrder := void;) z( W! q- N# h  d% |: y
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,/ a( o1 n! U6 o+ m, d
                                @,root.eventcontroller.simTime);
7 P) ~; p, s% W                        @.HasOrder := false;: L# N( D: z5 U& [
                        @.DrivingHome := true;: U4 t5 I7 Y# E6 [+ m9 T
                        rgManager.tryToStartTransOrder;' s, l& O. j4 R* {# [  a* F  j
                        if @.Destination = void
" R) W* h8 B  b0 \* B  f' N                        then -- no transport order for vehicle @
9 z# T. Q1 c$ ^2 D7 z                                @.Destination :=2 M1 k# H. S; P1 }
                                rgManager.nearestFreeStation(@,track.~);6 d, g7 Q' v! a/ L- V% Z
                                newDirection(@);   ) Q* n- z) D% `
                                if @.Destination /= void then7 Z+ C( B$ w5 {% N" N; l
                                        @.Destination.NumReservation :=
" U* f& {! U% @3 F' o! G3 C                                        @.Destination.NumReservation + 1;: o: _% _2 _) n' s$ M
                                end;  g+ Q8 |& {1 c$ a+ c3 h
                                @.CurrIcon := "drivingHome";: q+ g; d8 R5 U5 a
                                @.DrivingHome := true;: m7 o' k; B* k% k  K
                        end;" S- o) ]1 ?" w3 e/ P1 Q
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
" @" z: Y* ]8 J( M( R" x                        part := @.transpOrder;6 W/ j4 W. Q* I6 [0 C: P
                        part.move(@);-- load part1 u. e3 {4 v6 J* Y
                        @.CurrIcon := "load";
4 x) w3 _. t! R# N% B  y                        GlobalDistObj := part.globDestination;
: i# m. _5 V+ s2 M) |$ F$ _                        assignLObj := rgmanager.rgAssignL;; r0 u% d# K! ]" ?4 M: R0 O
                        row := assignLObj.getRowNo(GlobalDistObj);
) e; c( ?- p4 d3 A                        if Row = -1 then -- since 70* m2 b; X$ a% C# e1 m! ?) O' ^
                                if lan=1 then
8 B$ W3 q) _2 d, P( S                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
9 `, I( p" v/ o: Y$ c; z- i                                                to_str("in der Andockstation: \"",?.~.name,"\""));
: n' d: z! F( O4 a: \  a                                else
. h: s. s* G" ~                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),& D/ y* _, F2 k, C
                                                to_str("in docking station: \"",?.~.name,"\""));                               
, K" `5 a/ c( R# ^' N8 W                                end;
5 w+ W% @2 X5 [' n( J8 G                        else2 x% R4 _* Z* i% x3 k+ ~
                                @.Destination := assignLObj[1,row];
0 x+ v9 a2 r( T+ E! R9 m$ [2 n                        end;                        0 L7 A3 b# r7 _5 t8 J5 m
                        newDirection(@);
$ @2 o% U0 ^0 X: [- P) o; |" D" P                        @.HasOrder := true;. Q+ f' G+ B' n- z+ Z$ b& i. E1 ~5 O
                end;' D% O% X% y9 S
        end;, B5 Q8 v# V$ b4 H: q5 ]. @1 f
end;        -- of the method( B& Z1 L0 a. Y% r; Z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 - O. v3 s* h0 q9 m+ n

- B9 b& j& @. N; t这是AGV_putin中arrive的method。5 z, w! a0 i& h$ C) b
7 }- V" m% a7 b5 o4 l
当到达物料速度越高时,这个报警更多,
* e5 W" p6 H% \6 @可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。5 K7 ?3 g9 |8 b' J9 b
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
/ q7 W8 v% ~3 C$ H6 B$ _0 G: n" u
; q5 I2 y6 @  I  T2 {& @另外一个小建议,就是move,所有的move都可以这样. ^( j  ?( C0 p& d/ l, d
if not move() then debug end, |9 M0 B7 Y3 a( C3 b5 G
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
. I# I. q8 s( @# ]% wplant simulation中的free libraries有AGV模板,
! m$ @4 C! ?+ B5 ^! f里面也有案例。) {- U5 ~6 v4 d  e; b! ]0 j' ^
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! b$ d0 Q9 D/ S' x* L9 E6 P' B4 A! V: {" C
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
+ J1 i) y% R& E3 u4 x% Q3 W
, @0 e( F4 P" }& a- j那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ' B8 `- C6 N5 L) K
这是AGV_putin中arrive的method。' I  `* Q( \' U$ ?
& j7 t* h& c1 q' r) [  C( I
当到达物料速度越高时,这个报警更多,
) I, J9 h' O$ m* `6 f7 b: U; K
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-16 07:09 , Processed in 0.021583 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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