设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10057|回复: 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'
" I7 Q+ F6 _" ?. [*/, I2 y3 s" a9 _  H, q# l
is
9 i& n9 b0 s1 w6 X5 S. q! }        part, GlobalDistObj, assignLObj:object;row,Lan:integer;+ i6 B5 {5 z0 b; G) ]5 f3 x  U) ]+ b
do( \1 v/ _* _5 A1 u4 K; b! m
        Lan := rootfolder.Internal.Tools.AOLlanguage;2 v% A9 Q- J1 }* Y# j# i4 k+ _
        if current = @.Destination -- else return
; X# p" Q' ~" L7 t5 p8 _        then
9 u# w5 ^) ]0 k                @.Destination := void;
$ b& J& q$ {- x* Q$ t# y2 t5 h: a                if @.occupied then" V2 i- X8 h+ L' y6 T
                        part := @.cont;+ o% m9 F- T. M; J. j2 u
                        @.transpOrder := void;
8 }9 @2 z' B. o  ~" B; A                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
0 i" q# c0 X3 s( G' }                                @,root.eventcontroller.simTime);7 Z: W; y8 ~. Y; Z* m
                        @.HasOrder := false;
( W. n6 C) v( p, G, w; b$ y+ \/ X                        @.DrivingHome := true;8 H' _, c. Z& t  X4 e: v0 a% l8 y
                        rgManager.tryToStartTransOrder;  I' f8 A1 `, _6 ~6 r5 H0 d
                        if @.Destination = void
( P$ b+ z3 n6 q: `& T" R8 A                        then -- no transport order for vehicle @
4 t& z( [! ?0 l6 [                                @.Destination :=
* i, _, N, v0 U( h0 T) S                                rgManager.nearestFreeStation(@,track.~);3 n. e- {' h& z" J" p0 h, C
                                newDirection(@);   
# |4 a# }( f1 ^                                if @.Destination /= void then4 R' w$ w) D+ H8 b
                                        @.Destination.NumReservation :=( Y4 t) X0 w" X+ o" i* Y
                                        @.Destination.NumReservation + 1;  ^/ Y& q) M1 W! Q2 G
                                end;4 u& o8 h9 r8 Y" z9 |
                                @.CurrIcon := "drivingHome";
0 |" l# c7 d* Y, M/ t( o. X1 e                                @.DrivingHome := true;) N4 i; x3 ?- ?
                        end;
3 y, H& c% L) ]                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
$ |$ q8 }) }2 G+ S2 ]                        part := @.transpOrder;
& s# o0 i: R/ O6 }/ m                        part.move(@);-- load part
* y6 ?' M' R5 t2 z                        @.CurrIcon := "load";
( I" r  c7 b6 H, f( R$ X                        GlobalDistObj := part.globDestination;  d) U2 b+ P% {) p; j8 D
                        assignLObj := rgmanager.rgAssignL;7 `) n  N1 G% Q# M. ?2 D
                        row := assignLObj.getRowNo(GlobalDistObj);
# H; C! }- G' u  A                        if Row = -1 then -- since 708 }0 O3 m, {* B1 T+ a
                                if lan=1 then, p; Z6 z5 G1 Y) d$ ]1 J' @
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
0 t( D4 i2 ~) m) s" u' x% C. D3 Y. Y- D                                                to_str("in der Andockstation: \"",?.~.name,"\""));* F. ^2 q3 ^" `# j! d; J& R' D9 T
                                else
' H5 R3 c& Q8 o: E  }                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),5 N/ I& ]! Y/ \" b
                                                to_str("in docking station: \"",?.~.name,"\""));                               
) h& Z/ K+ o! p4 {5 k                                end;
( T. H2 H$ X- [3 T. |; c                        else+ X, ]- Y9 A9 Q$ Q9 _8 P# ]
                                @.Destination := assignLObj[1,row];; ?0 k* U+ T# D; o5 y
                        end;                        8 t: o" g9 v. ~3 V7 X1 _
                        newDirection(@);
( I0 e3 X) o0 e5 \: y2 w! |  Y                        @.HasOrder := true;
8 z( R$ B1 \7 `: S                end;: o* v' ?& ~  F1 V
        end;
; J0 ]/ _2 d* fend;        -- of the method
3 w% B1 c0 R" X$ T% I( a/ a
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
) e. ~7 R+ x" a# `; Q9 Y( ^
. z# T& m6 X/ ?' g这是AGV_putin中arrive的method。0 n! A- d$ s+ D4 k, d

( W9 ]; C2 s$ @! T5 k) e) C5 u6 k当到达物料速度越高时,这个报警更多,
3 K8 Y9 l5 l, x, Q: k0 e可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
$ P: q  b9 L. R3 s程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?5 f) }& a5 |1 Q
8 [" N6 n" Q$ Q  D8 e) A8 @8 `
另外一个小建议,就是move,所有的move都可以这样
# M3 f6 ?. G3 E4 R6 d5 O7 t* L9 yif not move() then debug end5 ^$ O7 y6 K7 x+ e4 _7 n3 M' n
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
8 z0 i, }2 B/ j+ eplant simulation中的free libraries有AGV模板,7 B9 h& l( d4 Q  l# N5 L
里面也有案例。
  W0 d$ i! k4 ?$ x, F2 P0 c% u我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
4 A) {  ?) \  }9 E# H' ~9 r' F% |7 U  V, m" L, S) e; ]
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ o8 o; b5 L/ c# j8 N- @! L7 j& Y( X& t, g1 g& Y
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08   ~/ A( ~5 [" ?4 J
这是AGV_putin中arrive的method。
& t- _* W0 @4 c# ?2 |% Z7 w2 S! d, y0 E
当到达物料速度越高时,这个报警更多,
  l* W* X0 y1 B% I
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-10 20:16 , Processed in 0.027619 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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