设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6855|回复: 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'8 }3 x  G9 K) a2 J  w
*/8 z; g0 I) r- A; A7 J" ~
is
$ P$ C  m  G& f; M: h$ N: {7 r& S: [) ~        part, GlobalDistObj, assignLObj:object;row,Lan:integer;; q8 _2 }6 z3 S8 K, B
do/ n( \3 t* Q9 l6 p) ]2 p' M. U; |
        Lan := rootfolder.Internal.Tools.AOLlanguage;( v7 \/ g8 b8 C% j
        if current = @.Destination -- else return
3 |6 e/ s9 ?  l  P- Y        then
8 }+ c$ J7 {+ v- ^                @.Destination := void;" B8 a+ }6 t8 m8 ?
                if @.occupied then9 ~. k! f+ k! K7 j6 I, @* e
                        part := @.cont;
. l; d3 t5 W* G9 k& W                        @.transpOrder := void;
) \+ n# t, H2 ]. \: e& ~                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
% f4 c0 j. W& A, z                                @,root.eventcontroller.simTime);. l( k) [$ r9 `
                        @.HasOrder := false;
0 ~. J6 B8 c! C# q# `/ L                        @.DrivingHome := true;1 o# _- D2 Y+ y( [: t
                        rgManager.tryToStartTransOrder;
' w8 b/ y7 z7 h# P8 p/ d                        if @.Destination = void
0 e, ]; H# r% B' P8 f# O                        then -- no transport order for vehicle @) w( b! y" e* b( Q; B( f$ |
                                @.Destination :=
8 o0 g0 I9 b" J1 j* Z8 ~                                rgManager.nearestFreeStation(@,track.~);/ X0 @. C% o/ T$ e
                                newDirection(@);   
1 J9 b6 K$ r0 P& K& `# D                                if @.Destination /= void then
# O- S9 F6 x  k8 ?                                        @.Destination.NumReservation :=
7 I9 v4 T/ u; ~: g                                        @.Destination.NumReservation + 1;1 a* c1 M  t" m, ~
                                end;3 }( y! }" B8 r9 a
                                @.CurrIcon := "drivingHome";
) j8 Q9 @7 S6 l0 \4 p                                @.DrivingHome := true;
- y$ q. f9 q, S6 k- y) D: u, K' u                        end;
7 M/ Z% P0 w% i7 n' B6 y' F& A                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
( y+ H  x% |! N9 K2 s. y8 y                        part := @.transpOrder;
, o  w- i0 |; ~9 L: H                        part.move(@);-- load part
0 P( A! z4 w" l) b5 g% t                        @.CurrIcon := "load";. c6 y* C4 o. ~& Y9 `' ?/ D3 T. i
                        GlobalDistObj := part.globDestination;5 ~( {0 q' R  c0 i
                        assignLObj := rgmanager.rgAssignL;; A  E3 T' y  h; r; Y* H
                        row := assignLObj.getRowNo(GlobalDistObj);
4 B) l6 _/ Z$ j4 P# E8 l  J, ?                        if Row = -1 then -- since 70$ N6 r0 z9 M! d& h
                                if lan=1 then
/ S! d# u) |% p4 \  P. S                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
( E7 t4 [$ x' p                                                to_str("in der Andockstation: \"",?.~.name,"\""));
% B3 o& k' L, l5 a9 y! Y2 J                                else* p- E1 w# \0 x
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),! q( {" M# O2 L6 a& C
                                                to_str("in docking station: \"",?.~.name,"\""));                                . }1 P6 J# ]* ]% E5 g( ]
                                end;
5 g6 H; U8 X4 u5 @( }* O) ^1 g, b                        else/ A& @# J( x0 ~1 P1 V! f, ^1 s: n
                                @.Destination := assignLObj[1,row];# r2 J5 w7 i' N* H  @
                        end;                        0 e  Z7 X% \" \# ~% s& u
                        newDirection(@);: P5 v7 J/ i  j. i; M1 Y1 f
                        @.HasOrder := true;
0 R! U$ r/ d9 n3 U2 {3 ]1 f+ ?                end;
( a1 d: i7 B9 [8 y        end;2 k" T5 J2 J. P8 p# v8 z
end;        -- of the method
4 W  G1 L+ x  {! a. o* x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
. X$ O! G, n. ^8 t6 u8 W, ]) r+ U- s& R9 p& p+ c) @' |
这是AGV_putin中arrive的method。% k2 m+ Q+ V/ L- K4 z
  h, o8 k7 w5 ^- K( z: @
当到达物料速度越高时,这个报警更多,
- a1 G. U9 W1 Y2 b4 V可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。2 l% }- T- z# h* ]
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
! W' @6 e" N6 T/ \4 p& h" Z1 I# ]
, p. _1 b1 w8 Y, v+ Q  _另外一个小建议,就是move,所有的move都可以这样
( S& X0 a+ r# {3 i% }: zif not move() then debug end
- I8 _! ]' v1 Y这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。  G& r8 q6 y0 g8 I7 s
plant simulation中的free libraries有AGV模板,3 e6 D' Q4 i# [5 |* j. A( [
里面也有案例。4 g2 i! ^5 T. Q: g% @8 w
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
0 E; e0 t1 o! O: {  \5 ]8 r/ y7 \( X+ d; S  v
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ; a" @- I: k1 u+ E2 r' ~

* y6 r8 M  ]0 l那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 4 [* B3 ^  P8 ^  }+ ]
这是AGV_putin中arrive的method。* K2 X7 z0 F/ o! ^6 G* u+ [

& k) U" w+ r, c" Y) h2 K6 U1 ]7 w当到达物料速度越高时,这个报警更多,

2 h: V  @5 Q$ Q' I4 b  B另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-2 20:46 , Processed in 0.022539 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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