设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5964|回复: 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'
# [, e7 j  t) i9 {2 X7 l/ N- l( {8 n*/
1 a0 m8 h: C3 y7 Tis
- P5 a7 c. N2 Q% Z0 i1 R        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
. G1 {% J6 S% G+ F$ a; ~do; a# D: W  P8 h' l7 i  \
        Lan := rootfolder.Internal.Tools.AOLlanguage;# f$ ~- j3 v3 G  c+ O
        if current = @.Destination -- else return
4 E4 Z7 T5 P7 P; X% F: G; @% i4 `        then
8 C0 l* t, V0 n) L* K  J: S1 J                @.Destination := void;
; w  L" m  \/ g1 H+ j                if @.occupied then/ u  [/ v6 d3 _+ {' |5 y
                        part := @.cont;. g' n  W. I8 l$ y9 `2 g7 J
                        @.transpOrder := void;4 C$ M4 ~( ~, F( b9 Q
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
8 b; _" o: @% B- Y- h0 \& i! F) K                                @,root.eventcontroller.simTime);, B) |5 K0 i' J4 u& X- V
                        @.HasOrder := false;6 a* }$ r; ?( z5 O
                        @.DrivingHome := true;
; D: I  U* J$ m                        rgManager.tryToStartTransOrder;
, `# l( U0 e& n                        if @.Destination = void
# O& `& t. Q- V+ H* [                        then -- no transport order for vehicle @  l5 b6 a+ M, X& O3 I; c! M
                                @.Destination :=
$ }, Y6 V% A) L6 H0 q                                rgManager.nearestFreeStation(@,track.~);9 V. \6 g7 O- u1 }( H8 _
                                newDirection(@);   + D% v3 t' Y8 p. n/ r6 y+ l
                                if @.Destination /= void then4 p" F# ]9 x' n% f3 p6 I
                                        @.Destination.NumReservation :=
7 c# N+ s. X! ?9 c9 t8 K  }) {                                        @.Destination.NumReservation + 1;
( g4 f# V8 u5 ^  ]3 q% M                                end;
' {$ {+ ^! f9 g+ t) K                                @.CurrIcon := "drivingHome";
( L" c* \6 O! W                                @.DrivingHome := true;- |+ u" H+ X; @8 _% ]; c3 S/ I: B
                        end;- N% D& s/ f( W8 o! A0 n
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
4 U9 K; y- Q+ P* @5 c  h; v                        part := @.transpOrder;
- a3 e3 d# O: Z- {1 L$ j3 f                        part.move(@);-- load part
9 h6 m! C/ u3 u. ^! ]: l+ J                        @.CurrIcon := "load";% `  v4 K# ]+ [* D+ S2 z- f6 S  I
                        GlobalDistObj := part.globDestination;: I0 Z' g. J& G# ^5 g$ q
                        assignLObj := rgmanager.rgAssignL;7 ]) P6 ]. C  k9 z
                        row := assignLObj.getRowNo(GlobalDistObj);
  V/ c5 Q9 p6 z+ e; @" n' k- f* b                        if Row = -1 then -- since 70$ V' d* h) I, q+ e
                                if lan=1 then. G+ A# E9 S+ z8 l  E1 V2 r
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
2 P' h5 Y  \  ~- D  g9 W# l4 s                                                to_str("in der Andockstation: \"",?.~.name,"\""));- W" Q& M8 C8 O/ A
                                else
+ ~0 C9 _! }5 y4 K& U. Y# j                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
% g* i7 @4 e  m% s! K. o& R                                                to_str("in docking station: \"",?.~.name,"\""));                               
5 q( _$ ?6 u+ h3 ?! P0 Q                                end;
4 h: f2 k8 N9 _: `: a2 m4 M                        else
9 v8 x; K( V7 O9 |9 c                                @.Destination := assignLObj[1,row];
0 Y7 K$ i4 |% D6 u) z2 G: {- P; [                        end;                        ) `; }* i+ \% g; ^4 A( M
                        newDirection(@);5 V! _" U# x* F; E+ ~
                        @.HasOrder := true;4 H! j$ z6 ~6 w- j; @' }2 c
                end;: ~  ^9 F" H$ U5 h* e
        end;
$ G9 j5 F/ [* e; Rend;        -- of the method  H7 h' o* x5 g5 _6 j) B
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
) u) K3 m) S9 V$ O, e# [1 B$ ^( h. m) f6 o4 L
这是AGV_putin中arrive的method。7 {7 A2 g$ p+ s; @

) q' S& n! a+ |& i# O  n5 G( c当到达物料速度越高时,这个报警更多,* }# c( \  }2 J2 E
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。6 K) C) Q5 i6 g2 z  n; I
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?- I" E' O! A4 }& F4 q" d/ z

- X! a; y5 a6 {, t( K; k! ^另外一个小建议,就是move,所有的move都可以这样
' v% d& Z" P. r6 d" g* rif not move() then debug end
3 p- a3 ^# X( ^) H% ]这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( t3 G% P! h( v2 s; Tplant simulation中的free libraries有AGV模板,- L6 e- ^0 r3 E" j* b  d% }
里面也有案例。7 V* D: ?3 {4 H( j* C
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 m  d9 U( Q) s4 i

( n) y7 K: j! ~" o. ?* g6 C7 M我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
! K! ?. ?! T1 }6 N9 H/ d6 D+ t6 }- W9 t9 S" v$ O+ g) ?/ t+ _
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 3 ]# V: a. L( F
这是AGV_putin中arrive的method。8 `) l9 c; |0 j/ d' O. x& D6 l
' C7 X/ g5 X6 n2 z
当到达物料速度越高时,这个报警更多,
4 q% s( C$ C  {5 _: k) `
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-9 01:08 , Processed in 0.741256 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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