设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6023|回复: 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'7 {" @( b0 o: W/ J4 n4 I. w
*/5 ~3 F5 X9 e- O
is
7 g1 Q& y! Y6 O! b* N+ Y4 B        part, GlobalDistObj, assignLObj:object;row,Lan:integer;9 r" Q- B+ W( I  ]5 ]6 G
do
& O! D' w. T0 K4 ?9 F        Lan := rootfolder.Internal.Tools.AOLlanguage;4 \: E4 o. G* q+ `5 o1 _! Y, \4 u3 p
        if current = @.Destination -- else return1 d/ x, f; S. O1 T; C$ i
        then
0 I) R3 Q  b( q: L3 ^, \. @                @.Destination := void;$ O- i9 ?/ y& S
                if @.occupied then' C, t& S6 e8 R6 [8 v! _9 ?, F* v5 f% ~: Z
                        part := @.cont;
6 @) R: p! s* K4 ]  d- e) G  T                        @.transpOrder := void;
: X2 s9 v, B1 ~; z( H( ^                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
% ~2 F" Q. q* g# r                                @,root.eventcontroller.simTime);
' U% I7 s# ^% c- z                        @.HasOrder := false;, a* X1 k5 c3 g' d+ U5 W
                        @.DrivingHome := true;! l- x# k! J6 d3 ^. w
                        rgManager.tryToStartTransOrder;# D: Z. y9 ?0 Y7 h: o( t3 r& o% P5 Q
                        if @.Destination = void# t7 Y. K1 ^: X# L& ]
                        then -- no transport order for vehicle @4 t# z* g3 }5 y$ ]
                                @.Destination :=
/ I7 j( `6 M3 A! s                                rgManager.nearestFreeStation(@,track.~);
% x2 I5 [/ C' {0 y, k                                newDirection(@);   
9 k+ p7 M% e6 O* o1 x0 U                                if @.Destination /= void then8 l' G. Y" Y; N6 @: e
                                        @.Destination.NumReservation :=; V6 }3 e# x; q# l" C( O% }
                                        @.Destination.NumReservation + 1;+ b+ o) ?2 G+ Z6 f$ }# l
                                end;2 W2 |0 l% {" z
                                @.CurrIcon := "drivingHome";& Q2 s$ A. C3 l0 W0 t
                                @.DrivingHome := true;9 C1 F+ |9 m7 m$ e8 |" }: v
                        end;
( [" l% T% E1 S7 g                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
: @1 A+ J0 k5 u  v. j, G1 A' m1 k                        part := @.transpOrder;
- ~3 }; y: m7 E% w. a% c8 ?. B: u                        part.move(@);-- load part
, ^3 E5 y. b. [; }# A                        @.CurrIcon := "load";# _/ z9 {% b( [& f
                        GlobalDistObj := part.globDestination;
* V9 N, `* |" v& ?( k                        assignLObj := rgmanager.rgAssignL;
3 z6 u8 F: e, v, Z                        row := assignLObj.getRowNo(GlobalDistObj);
0 A* G" |3 W) W) _0 P                        if Row = -1 then -- since 70  a; s9 m! y6 V0 C: y5 V
                                if lan=1 then. B  k+ G5 i2 g2 n" K# n$ f; i: l
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
0 Z  e' ~$ W: o0 I- s& t# P' x% F                                                to_str("in der Andockstation: \"",?.~.name,"\""));
7 P* ?5 n' f- }9 Z6 d' r                                else- j+ h; Z9 V! x
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
% \. z3 O9 e4 {1 w/ `# W: g! G                                                to_str("in docking station: \"",?.~.name,"\""));                               
' s6 z+ W4 }( L/ q1 }) b' m2 m                                end;
$ B) T8 l5 ^3 ^& @7 r                        else
; k! g* d4 t- z) v+ U) H. [  T                                @.Destination := assignLObj[1,row];7 c- [. _0 C: K& g2 Q% T5 ]
                        end;                        7 \& Z) g  O4 X5 w
                        newDirection(@);
, v8 ?& X$ M0 F9 `' t5 w8 _3 x                        @.HasOrder := true;' |0 t, ^7 B1 e
                end;0 v- u% g( D, p9 G
        end;
2 @2 X8 H# Z$ A: R# iend;        -- of the method+ e) O" ?) @# l
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 - U. ]! \8 d$ C1 d6 Z: j
/ C- f+ k5 @) p9 j
这是AGV_putin中arrive的method。
5 S0 n. ]& ?# d9 n' ]$ E
3 m6 L4 h0 O" i  ~1 E当到达物料速度越高时,这个报警更多,# A$ P! ]2 h8 P9 S- B* O$ J- x
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。0 i7 |! Z3 K# P# [: V
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?  j& G' r  B3 u' b

2 b/ I7 Y/ q+ ^* g* b7 p另外一个小建议,就是move,所有的move都可以这样: V- V$ m- i' J
if not move() then debug end3 Q. ~" g: W1 b" U3 L2 m
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。. u/ {  w+ g, q! z" o2 k
plant simulation中的free libraries有AGV模板,
: X0 V6 K* O/ l3 |2 v1 W/ Y& s里面也有案例。7 N, k# `$ K: M3 o0 }- T- ]
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
: R$ I4 O: l; F5 S( X, S
, r* B. J1 w4 ?8 I. W8 h; O我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 , E, S# N9 D+ d8 @: A
2 p! z/ k/ O# m# Y* @$ ^7 G3 m# A
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 " v. `0 h5 U' s9 U
这是AGV_putin中arrive的method。1 ?) C/ z0 f9 V2 I3 [
+ ^4 e2 n2 _5 h2 c( [! Z
当到达物料速度越高时,这个报警更多,

( ~" u5 d( U/ _! h/ q5 ~另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-13 10:12 , Processed in 0.021488 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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