设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10079|回复: 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'
: }. N; V& z) y: h  g7 X*/
' v  I# a4 U& C: m% his) j+ j  R. y" o1 Q8 @4 C, [
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
9 ?; y+ f+ w# o: C/ q7 wdo
0 X. p. T. C3 v9 I        Lan := rootfolder.Internal.Tools.AOLlanguage;5 T, [/ _+ `4 U) h
        if current = @.Destination -- else return1 V6 o% K$ ], z0 b
        then
! y2 O$ c& ^' ]- \( B2 e                @.Destination := void;5 @# r0 ~; j5 o, A+ S% J
                if @.occupied then
  }7 F. {+ V. q6 x* A1 {* @8 w- _                        part := @.cont;
8 f: P$ C9 y3 j/ z                        @.transpOrder := void;4 y6 |; d- {+ X* R/ O: b. N
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,; U  p# {! {* Y* l% |' {( V  S
                                @,root.eventcontroller.simTime);7 A% K: f- y& d% i' H
                        @.HasOrder := false;  [. f# r7 z* v. U
                        @.DrivingHome := true;
6 Z1 I. y7 N7 s7 `' h+ i0 T                        rgManager.tryToStartTransOrder;
5 H0 k+ Q2 \3 v- ~* Y" n! K$ i1 p% ?                        if @.Destination = void
# \, @: [( W" z7 P& l5 u* H                        then -- no transport order for vehicle @
, R$ R' u/ o+ g% |4 V                                @.Destination :=
& u* o# l( [5 f1 P* q                                rgManager.nearestFreeStation(@,track.~);
8 u8 [, n. w8 S& I( X% G                                newDirection(@);   
$ K  s5 L. t/ s9 }7 |: U. T                                if @.Destination /= void then* Y+ K+ K5 f" G
                                        @.Destination.NumReservation :=' W8 J4 @0 \8 w+ @8 g' s
                                        @.Destination.NumReservation + 1;
) j* O, r, p; k7 S4 h9 `7 O                                end;
" l6 d  ~" ]4 E& u  t6 V1 s                                @.CurrIcon := "drivingHome";0 o1 c; R* Q8 O5 C0 f
                                @.DrivingHome := true;% ]2 y' J0 C8 e4 M6 @3 {
                        end;: i0 a. a# h) W
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
% p' ~0 }4 `4 q; V9 k- C$ q                        part := @.transpOrder;
8 q" ?( B7 S. T' u/ _, w  Q                        part.move(@);-- load part7 K3 ~0 ]3 r9 U  P
                        @.CurrIcon := "load";
% \" |- V" u5 ^3 p                        GlobalDistObj := part.globDestination;' P% W; Z- L: N
                        assignLObj := rgmanager.rgAssignL;& `. z& X# p+ P  o3 ?* h9 s' v2 c, T
                        row := assignLObj.getRowNo(GlobalDistObj);0 k8 I+ \. B' G# O8 ]) `
                        if Row = -1 then -- since 70/ w" s1 X, j; W$ I: \
                                if lan=1 then
  y( e6 p$ w, S6 \                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
. q5 z9 N! j5 }' {                                                to_str("in der Andockstation: \"",?.~.name,"\""));1 R6 K( E7 l1 ~( x( ]& o  t; h! `
                                else
5 }$ V- H9 j  h" l                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),1 c* t4 C' Z) r6 h- e$ j+ A
                                                to_str("in docking station: \"",?.~.name,"\""));                                6 J$ H% F) \5 T3 [# _
                                end;
& y/ i; Q" `4 A  [5 P                        else( q5 y+ R3 O0 |
                                @.Destination := assignLObj[1,row];5 g6 X# h2 o# b0 p
                        end;                       
. s( [, e! U9 z                        newDirection(@);
8 Q3 [+ V1 B/ D: l( v& H3 d" ]                        @.HasOrder := true;: n- h* m* g& X* S" e; ?
                end;
$ U& f, f) V0 e- E  B( N) K        end;
  c& T% i0 q3 G4 p. x$ H& Zend;        -- of the method; z% i9 [+ Y9 J) r
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
) _% v& V: w5 \$ r: ?' G7 P4 F! `5 s0 i
这是AGV_putin中arrive的method。( t3 b8 G! @' m% k: u1 \

+ D2 J. N  a! E; P+ a7 t5 z$ O当到达物料速度越高时,这个报警更多,: w" |: n$ S$ g
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。+ X/ `5 ?! Q: _9 Z4 n) M" @; r1 K: ~
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
2 ~1 \9 s  |( h- n% j0 R& Q1 F  L  |/ n% q9 G: y6 r. Q
另外一个小建议,就是move,所有的move都可以这样& d" z' x/ @/ X0 t9 b. d
if not move() then debug end
' i6 u. m; S: s; u这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。2 A, A1 D2 M6 O' X2 \1 ^# T
plant simulation中的free libraries有AGV模板,# L( {% W# k) |
里面也有案例。) g" [3 C1 |5 y
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
2 j  b6 `* }0 X2 \6 A! A' J2 s3 F. Q) \) N/ q! _
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
* i( U+ o/ @) i) `& Q) m0 ^  X* W. W8 Y1 v% y: w
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ) ~0 I4 f) G3 g  z1 o6 i& Z0 N" X% R
这是AGV_putin中arrive的method。
: v: F% b2 @' T; C3 ?/ E9 o! P. M$ r- {- K0 D
当到达物料速度越高时,这个报警更多,
; ~2 {* z6 G" Y+ V
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-12 04:10 , Processed in 0.017553 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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