设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9506|回复: 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'1 s4 e! l! j7 y# e. }% ?9 G# L
*/
# Y9 y, V" \/ W4 U( f! gis
& Y! U' S$ ?- K" o# P) j  n        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
8 i, w1 G; n& ado* e( y7 D; t5 ]$ S/ M: w
        Lan := rootfolder.Internal.Tools.AOLlanguage;
# q3 O$ y( h0 A: h! U, B        if current = @.Destination -- else return* Q% x* d. |, M& c3 i/ Y5 m4 Y
        then
: m7 k. B  N) F. p$ J9 k- C1 K! Z                @.Destination := void;7 a6 J0 \, u, K" j8 _' H1 M& Y% z
                if @.occupied then
/ G6 O' l' x* J9 M8 f- a, i                        part := @.cont;/ U8 i% L2 a$ X* y7 z$ }# Q5 @
                        @.transpOrder := void;+ {4 N4 s' N( G8 p$ ^
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,8 B0 g) C2 ^+ S4 L
                                @,root.eventcontroller.simTime);( A6 p8 p0 r  L4 k( k
                        @.HasOrder := false;
" `! f4 o0 i' h4 h                        @.DrivingHome := true;/ U. L- M/ |6 j+ G4 p
                        rgManager.tryToStartTransOrder;" U9 m/ m7 a$ `, s
                        if @.Destination = void
/ X0 s. [& ]8 K" O/ p3 C                        then -- no transport order for vehicle @" M# @8 y  |! y2 k9 E) D( t
                                @.Destination :=
/ ~' D4 k* E$ c5 a                                rgManager.nearestFreeStation(@,track.~);
2 f3 t# `. q& E5 M5 I$ O9 r                                newDirection(@);   7 L( n2 A  X, O$ }7 `7 K
                                if @.Destination /= void then
& G# W7 ]( g5 q  ?1 n. \                                        @.Destination.NumReservation :=* f, J6 E2 u% q1 R+ H4 ]$ M
                                        @.Destination.NumReservation + 1;
% n* A. Q0 N% a7 J) J8 I2 l                                end;% }1 S* G& j, o# A  M# Y
                                @.CurrIcon := "drivingHome";1 X9 M: E3 X% W4 C' l9 f' ?
                                @.DrivingHome := true;
! ^8 X* f" W& E. E: A                        end;1 ?7 K: F+ D2 z- e7 F( s! M  M$ b
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station2 x8 r: l' }) [. X2 I$ \
                        part := @.transpOrder;
  X; t4 a4 i6 V- r! r                        part.move(@);-- load part
" m3 Y$ Q8 i5 E; U2 y                        @.CurrIcon := "load";6 a9 }+ u# ~9 T) `' O9 ~1 D7 {! ]
                        GlobalDistObj := part.globDestination;
& r1 }4 t. ]' k( I* R                        assignLObj := rgmanager.rgAssignL;
4 ?3 g; ^" h/ h5 ~1 x. N5 L- M/ }3 m                        row := assignLObj.getRowNo(GlobalDistObj);9 u4 i' E3 r7 |& A/ g( t" H( R
                        if Row = -1 then -- since 707 u8 n6 V3 Y$ n
                                if lan=1 then
7 g% G, d/ w; {                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
! b: V: a) A% `* h2 S2 Z0 y                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 b! f9 f7 `  u, }8 H" h( N
                                else' `. o7 |3 ]& S6 h0 M
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),& h2 B0 q3 Y8 p" C  X
                                                to_str("in docking station: \"",?.~.name,"\""));                                ( R7 \' g. P' w$ {+ p/ N9 T! u8 C
                                end;
) E8 P3 n- F1 ]5 w, b9 y. ~                        else
1 c. W' g6 S, \5 e6 m2 ^                                @.Destination := assignLObj[1,row];0 t: k: M( n6 j- g( |. ^$ S0 i
                        end;                       
4 \& x; z! T0 o                        newDirection(@);
9 D0 I6 n5 H/ v  U2 N' `                        @.HasOrder := true;* N# F) e& L" ?+ X, h
                end;
' ?: W1 n0 F  a& v# F; l        end;6 z$ \( m* j9 [- n# o
end;        -- of the method& d3 d2 q3 w2 F# g% H
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , z/ o6 {) ]: d8 A1 Y

& j8 _4 R- n; @- j+ v/ j这是AGV_putin中arrive的method。
; R- @7 j; A9 a- v: i) S
/ {/ `1 k) x, `  @& m' J/ s2 T) ~8 e当到达物料速度越高时,这个报警更多,! K* C& R( L( f+ ^, Q
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。' K' D0 z% U" ]8 j$ L
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?4 y) O! @8 W8 U6 S( |

5 r1 w" f/ H+ g: \6 @# ~另外一个小建议,就是move,所有的move都可以这样
( q4 h4 v  y; ~8 Eif not move() then debug end# W) Y; F  K2 ]
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。/ p6 w) E8 l" w
plant simulation中的free libraries有AGV模板,* G+ [% ?4 e! R: d7 b8 [; n
里面也有案例。
" j2 `$ R* D1 X/ @; j我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
$ y. n9 h# k# A5 T* l8 F7 M4 T7 H' r  ^2 d9 ^3 b
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
2 H3 r, h8 n6 b" N( @1 ~7 j3 W7 y
" [5 Y8 _) y1 r% H- C6 ?2 v那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 , N' a8 z) ^  p  v- U
这是AGV_putin中arrive的method。
6 @% P, |) Y# x6 D7 a* Y7 s. |: r' m
当到达物料速度越高时,这个报警更多,

9 S0 H( y- n/ t4 B另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-5 01:48 , Processed in 0.017010 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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