设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7401|回复: 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'9 \1 u9 m0 l; b; a# h" G
*/: M3 `5 l4 ]0 N
is
8 ~9 B  _4 N, j        part, GlobalDistObj, assignLObj:object;row,Lan:integer;) S# z) h  X  Y  b
do. Q$ d, V+ K* ^1 ]4 O
        Lan := rootfolder.Internal.Tools.AOLlanguage;  W" F% u* p+ K1 g6 l" @% n# M& _
        if current = @.Destination -- else return1 W# t2 }0 G% P7 n
        then9 Y7 B! N2 M+ L/ l9 P5 E
                @.Destination := void;
) S* A, x2 k! @1 s' {2 P& i                if @.occupied then0 e( x2 `1 U+ s- H* x/ g
                        part := @.cont;) S8 C  V9 \6 L
                        @.transpOrder := void;5 l9 H  h, m0 J
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,9 \5 H% N3 n8 E2 @
                                @,root.eventcontroller.simTime);
8 u. x6 T& K. E) T+ p& n                        @.HasOrder := false;0 o2 i) ?2 j! E1 N
                        @.DrivingHome := true;# b  `7 f0 B" `# E1 d
                        rgManager.tryToStartTransOrder;
! `8 z2 s5 F3 S7 f. L' r- ?% k                        if @.Destination = void9 A: ~) K& @- }
                        then -- no transport order for vehicle @
& Q7 ]5 T( p' }2 ~                                @.Destination :=3 A! y1 P. t- W! {
                                rgManager.nearestFreeStation(@,track.~);
( L( s, X$ @, f: Z                                newDirection(@);   
9 D1 H+ f/ e* ^; Y8 P8 H3 `                                if @.Destination /= void then
, e# M7 }2 r" [7 S                                        @.Destination.NumReservation :=' t1 y6 a# K- ~0 h
                                        @.Destination.NumReservation + 1;
+ }; e9 X2 |+ B9 h                                end;
3 i5 T$ b8 v2 u- c, T$ N                                @.CurrIcon := "drivingHome";
, I' ~" U& D' W; }  r                                @.DrivingHome := true;. q7 {& L1 L3 S3 a/ A/ \
                        end;
2 P5 a* J* \8 K; z! s                else -- the vehicle @ is empty, both vehicle and part are in the same dock station6 Q/ _# B2 n3 m: @. X0 Z$ L( ~
                        part := @.transpOrder;. z( q5 C% `  g- F' V9 D
                        part.move(@);-- load part
% K1 ?# w+ p  _8 H                        @.CurrIcon := "load";- Y" `3 }' \; z; b5 S7 b2 d
                        GlobalDistObj := part.globDestination;& K! g1 W1 P8 N% n8 F8 M
                        assignLObj := rgmanager.rgAssignL;
. ?& F( b; m& b* |0 {# m                        row := assignLObj.getRowNo(GlobalDistObj);
! R% H  }" _1 V5 p5 B6 G1 \                        if Row = -1 then -- since 70
. a; o7 j' q( s* i+ Z0 t                                if lan=1 then
' l+ x- e$ j8 T' ]6 E) [8 u                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
3 S5 O/ W+ ~. e6 \5 `  O) g+ W                                                to_str("in der Andockstation: \"",?.~.name,"\""));
; R4 W. [/ F( t$ l. {  s                                else
) [* M# ?' Z" V; T+ A9 v# L0 c                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
& n' a; m" X$ A+ I                                                to_str("in docking station: \"",?.~.name,"\""));                                " r; Y4 q$ v- d( M; X
                                end;
# x/ b) G; F" O) E+ k                        else
0 o' d: ]$ z9 J$ {, H3 w1 u' ~/ {                                @.Destination := assignLObj[1,row];: ~3 L  e/ ?- W2 C' Y3 E2 `
                        end;                       
4 d$ j* [  r3 P$ v* `% T2 L, ~+ ]                        newDirection(@);
5 J) J; d$ e# ?6 R1 W                        @.HasOrder := true;5 o8 q" p; V/ ~" w4 D, l& H! o
                end;
. n8 f+ K, c7 k+ Z" V2 K        end;
3 `- p1 [# t! y, qend;        -- of the method5 V6 P% @6 U  l' ~$ b5 N6 ~2 z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 + J6 {& }' q+ d0 @, w& s# `/ G

3 J% e$ g1 y, S, b: z& \9 Q+ G这是AGV_putin中arrive的method。9 b6 U6 ]3 m3 I; a: k" X

, Y, F. A2 H# [& i4 v6 B. G当到达物料速度越高时,这个报警更多,, C4 t3 V* l0 W% w; N6 ]
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。1 k1 o4 Y& a4 T
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?# g% |! ?% C( b. Z% H* k
" Z0 o. m! g8 T( W- U1 P
另外一个小建议,就是move,所有的move都可以这样: a5 K' v+ \! E& U# j; W" @
if not move() then debug end* X. O$ h+ x* d5 `7 b
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。. Q8 G' t3 N& h' J, a
plant simulation中的free libraries有AGV模板,
! X5 l3 O; [+ V+ t! m7 z里面也有案例。. G5 C, Z1 y0 }
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。' E1 H, k: @# Z3 e8 T( w
6 u8 W% n# S7 e* n+ P
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 7 Y, j1 |# ?) J1 C& j0 n  _

+ w! Q6 T8 Y) q3 Y) G/ f. e! e那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
5 r9 n: O) h. Z这是AGV_putin中arrive的method。
( n/ L+ S, V& g$ I% F: u7 J. {7 M3 g. U" {6 b" ^; r: y
当到达物料速度越高时,这个报警更多,

6 ~& m5 p0 n$ L1 C" J另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-9 18:58 , Processed in 0.026475 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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