设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9582|回复: 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'
6 R7 |. x  b2 _" v) w& M5 X' c*/
5 [. K  b8 y; \5 @: ois
) ^, U7 ]; x/ x4 O) Y  a$ r* {! z        part, GlobalDistObj, assignLObj:object;row,Lan:integer;/ `- J0 {& P7 {/ K; W( v3 F3 K
do
4 J0 m" j8 Z* a8 _# U1 h        Lan := rootfolder.Internal.Tools.AOLlanguage;
' U% k  L" s. a$ T( V        if current = @.Destination -- else return
& F0 ~+ @4 i. a9 ?/ c8 Q$ s/ n  ~        then
. D$ J) L- _& S8 m- h+ x                @.Destination := void;9 i5 m) R3 W. q, [! i% w8 W: p
                if @.occupied then
  {2 N) [) k" S' h# t6 P( [                        part := @.cont;
. E6 n! w/ @; m$ Y                        @.transpOrder := void;
) m) |2 {9 C% E' z( S                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,2 h/ m( N& o1 p( z) W, z* ]
                                @,root.eventcontroller.simTime);" c0 Z, m' j& M. I
                        @.HasOrder := false;
  \* l: Q, Y0 C% j5 m  v2 @+ f/ ~                        @.DrivingHome := true;' J9 i( e. B. t' y7 _) X2 A6 H
                        rgManager.tryToStartTransOrder;
: Z  i2 d' b' u8 X% J$ k$ [5 S                        if @.Destination = void
8 R* T& I, U1 y                        then -- no transport order for vehicle @
. L% W% x& w- ]4 D: |5 n  ?                                @.Destination :=, c* J* \* X9 q/ E
                                rgManager.nearestFreeStation(@,track.~);/ \# G' v5 \7 e' J% h& |
                                newDirection(@);   
. Z, X5 k5 `) ^' c6 `                                if @.Destination /= void then% q6 {* I$ a) d! n
                                        @.Destination.NumReservation :=8 A8 a* ~+ [9 d2 w5 P! [* p
                                        @.Destination.NumReservation + 1;* x% H0 F" F( S7 W, S5 D$ B
                                end;
( r+ J  Y& E; w7 R. Y* e( z) l                                @.CurrIcon := "drivingHome";1 @3 F3 `( d7 Z
                                @.DrivingHome := true;
, V" q9 F, ?. n5 J4 V, `                        end;
& L% |- U9 x2 j0 V, v. I& Y) Q- H                else -- the vehicle @ is empty, both vehicle and part are in the same dock station1 t3 T2 x0 J  T5 N7 }0 J* T! C2 e- ]
                        part := @.transpOrder;2 }% N) [, l: a, M8 A7 |
                        part.move(@);-- load part. u/ D* V" N1 h& U! D( P
                        @.CurrIcon := "load";0 B0 C2 \% `. w! h( f9 C- p
                        GlobalDistObj := part.globDestination;$ w& i+ P' A# F
                        assignLObj := rgmanager.rgAssignL;
* J1 {* {* O& n, q' h3 h) J3 I: b                        row := assignLObj.getRowNo(GlobalDistObj);
5 e  h3 ^* h/ a0 h" Z                        if Row = -1 then -- since 70( s9 X. m6 u" v) x) H1 U
                                if lan=1 then
) ^% e' q5 Z/ }. m                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),! V% _9 _9 p3 E9 \& v4 L# _  C" `( G
                                                to_str("in der Andockstation: \"",?.~.name,"\""));2 j7 _2 E$ c9 x, _# X
                                else& S) ]0 O* v! d; h" s! U& z- k) r
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
7 l6 C. U) b3 D, \8 o: @4 T8 T                                                to_str("in docking station: \"",?.~.name,"\""));                                * _* c- [0 n/ v3 Z. c, _6 O# G
                                end;
1 }5 [& ]. f8 H3 @                        else
6 O, ?; c: g/ W8 l% q                                @.Destination := assignLObj[1,row];( G1 s* K# t( `! u
                        end;                        3 |  L8 b: I- c- w- M
                        newDirection(@);
1 K$ `: p0 F! ~                        @.HasOrder := true;
/ k. p2 |" @" g: h0 X& O0 _4 Y                end;
0 ]( u: p' Q: g+ {$ z7 b: `        end;
4 b& H# l8 }) E) C( n- S! c* gend;        -- of the method
5 ]1 h! X% v* c1 V) A9 t
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 8 m* }0 ^& D7 j/ V6 C  G
) U* r! T* p. S0 ]2 c8 O
这是AGV_putin中arrive的method。
3 _5 ~8 T- P" @1 e! j& p/ D7 w. L3 F, R
当到达物料速度越高时,这个报警更多,1 i# F$ f6 m9 t, X4 r$ c6 l3 g
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
" W$ D. [: L9 P& V# @# ]' m程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?: v& V9 ~6 j! O2 p
! W% c- |$ K8 t
另外一个小建议,就是move,所有的move都可以这样5 b' T8 K# S2 o$ Y( p8 P' M+ h* |
if not move() then debug end
( A8 c3 Q# A; W/ b% Z这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。" V( y. o' R% ^! h
plant simulation中的free libraries有AGV模板,6 a- H6 r/ V* _" s6 G$ _
里面也有案例。3 P; K( W1 a  r( Z
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。6 X( }2 M% y. l9 I

! Q1 ~6 F& j* W# C, W" }我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 - [! R+ j& [# d; {* p% w

" U% I( s7 X1 E2 `! P6 S1 P) t那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 3 p3 U3 J3 u7 C; k3 z
这是AGV_putin中arrive的method。
+ {. a6 n1 n% X0 I5 F+ ^3 [2 s* p( f$ ^6 |2 R2 k
当到达物料速度越高时,这个报警更多,

  R' @& m; t  J6 W3 o1 ?2 P1 G另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-9 17:20 , Processed in 0.018685 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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