设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9993|回复: 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'+ f/ Z7 d2 T8 O# j  H( N; a
*/
; u5 k7 q! b$ }, z! W9 sis# d/ D7 G* h0 ?+ E# h
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;4 S8 K. w/ _/ `# x5 x( m) b8 `' s
do3 m4 o/ [/ e2 C$ j
        Lan := rootfolder.Internal.Tools.AOLlanguage;+ N1 u! M! [2 l
        if current = @.Destination -- else return/ M, x; ~* {. O* |
        then5 ^! g$ ?5 \6 e- N6 w! h
                @.Destination := void;
0 X2 v! O! X( o% d; T                if @.occupied then
- O- U5 G/ x6 f5 U9 ]                        part := @.cont;+ e- U7 C/ L' O) Q4 L/ s
                        @.transpOrder := void;7 K3 H* Q. Q) ^2 {3 ^) l; Y
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,' I7 d$ O& s) x$ U1 Q3 Q
                                @,root.eventcontroller.simTime);
. T8 [- L- A% d/ J1 H                        @.HasOrder := false;7 I/ [3 [0 b! d* e2 Z5 ?. w3 f) }
                        @.DrivingHome := true;
1 S% H4 A$ o3 [% f$ H) H                        rgManager.tryToStartTransOrder;( g" a  @7 t  h+ ^; O2 a4 F4 k
                        if @.Destination = void
4 j( t+ r5 p* u, ~# a5 Q: L: t: q                        then -- no transport order for vehicle @5 _9 d* S, L. Y$ \2 e4 r6 \2 Q
                                @.Destination :=5 h7 J9 x2 ~$ z2 e
                                rgManager.nearestFreeStation(@,track.~);( H( K+ c: f" {' j6 E# g9 i
                                newDirection(@);   
8 ?% n+ v4 x' \; V8 h' i2 a                                if @.Destination /= void then
$ d0 `: e/ W/ b$ N                                        @.Destination.NumReservation :=
; |5 V2 Z+ }9 D; K2 V                                        @.Destination.NumReservation + 1;; W- q/ o, F4 b$ d$ D+ x
                                end;
( ~" s0 e% r! F9 X0 n                                @.CurrIcon := "drivingHome";% P1 F7 B; ?$ v, n8 ?- Q& j8 d
                                @.DrivingHome := true;
2 H  {6 H+ V6 r0 P                        end;2 l1 ?: t. p9 h7 r8 k
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station1 l6 T4 e; Z" Y( W
                        part := @.transpOrder;
7 N3 N" e, \' y! c                        part.move(@);-- load part
" Q6 D/ O, o- B( X                        @.CurrIcon := "load";2 Z7 l1 ?( p# j) e" T+ E
                        GlobalDistObj := part.globDestination;% X* i& F9 y8 A0 ~. R
                        assignLObj := rgmanager.rgAssignL;$ P7 p, P/ `( t6 g- y0 F, z8 ~
                        row := assignLObj.getRowNo(GlobalDistObj);  X7 g3 e! K3 u/ Z' D+ C4 }
                        if Row = -1 then -- since 70
, b+ W9 X) L/ }; o" o                                if lan=1 then
, f% K, T4 Q+ h  R                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
9 f5 E/ O+ {2 L6 t- e" {3 k$ h. S4 `$ ?                                                to_str("in der Andockstation: \"",?.~.name,"\""));
* `) V: e% n6 A                                else
* q" \! t5 D( Z4 I( w                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),* a7 E3 J$ J' H7 x" M4 z+ y3 ?. r
                                                to_str("in docking station: \"",?.~.name,"\""));                               
. e  [0 R) c7 o1 y" _                                end;9 @: v6 c5 J( a; p) i. X
                        else' p' a6 ~' w+ a8 E; y
                                @.Destination := assignLObj[1,row];
8 E& S9 [# t1 {" M3 }                        end;                        . t1 E6 Z1 `& g
                        newDirection(@);, E* c7 }% `" \! y! d0 Y) {
                        @.HasOrder := true;
$ T, n1 x! F& e$ j* C                end;
, M& k+ v  r3 W, U, [. p        end;: x- T* y( }4 ]7 ]2 s/ s
end;        -- of the method) {3 H8 s6 g1 o
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 - T5 ^( o! ]1 d4 F+ s
2 {3 b: n8 }. o" V' w) A
这是AGV_putin中arrive的method。7 u1 O7 v1 F4 Y; D6 r& a/ L
0 z0 O6 j7 E' r" A
当到达物料速度越高时,这个报警更多,6 l3 ]& d0 D! [1 o( W% t5 [; Q
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
! }" d- @$ g9 R/ Y3 o) v, ?- f0 p. m程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 E' a" Z* z+ F! N( R/ k
0 {6 N% F7 \% F9 S: h8 _& I) o另外一个小建议,就是move,所有的move都可以这样
1 |' g" b$ H0 Z6 Mif not move() then debug end
4 j: l- e* \$ k" N; a这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。; }$ w) M1 C) [! G
plant simulation中的free libraries有AGV模板,
2 @+ ]: l( {8 T1 I/ a9 c( y里面也有案例。+ n, C4 j! D0 ?  [& ?: d* H
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
( B6 N. l( m6 `  F7 K( K3 t+ y( U) j9 p8 i( ?
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 0 b1 m0 @4 _" Y

1 r2 z4 u) s( [9 e( w. [; l( H那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
9 H3 C3 x' J& |% O; h这是AGV_putin中arrive的method。
% U# i5 i! S: H. m2 g
5 S7 K( V! s( x6 F' Q, T3 g0 b* r当到达物料速度越高时,这个报警更多,
$ F- o& g$ `6 \: u- `8 S
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-6 10:55 , Processed in 0.019248 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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