设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5896|回复: 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'2 R6 H8 N) x/ `& V/ m5 \2 q
*/! P' y( S& z' H3 c/ C$ b* C
is
7 M6 D" g- Z0 n3 L/ j        part, GlobalDistObj, assignLObj:object;row,Lan:integer;) Y( A1 n% Q% Y* {. a& T1 u
do
  F* I6 v2 a& n. a% l        Lan := rootfolder.Internal.Tools.AOLlanguage;
& N7 s2 h* V# j1 x: E8 g6 j        if current = @.Destination -- else return; z7 x& \3 W4 D8 S
        then  t6 ?! b& k2 ?
                @.Destination := void;9 s( O) f# G3 ?! P/ d) c
                if @.occupied then
7 n, l% e3 }$ i1 y/ d: j/ J, F0 w                        part := @.cont;6 F4 x0 [' E- v2 v
                        @.transpOrder := void;
8 [' f) H; u7 k  {                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
4 E# X6 }( g  `* F9 [7 a+ c                                @,root.eventcontroller.simTime);
+ [4 S( _( I, k' {* f                        @.HasOrder := false;
% ^$ K8 T6 u% W. U5 v                        @.DrivingHome := true;8 D6 l9 O, ?5 x- ]- \
                        rgManager.tryToStartTransOrder;0 |6 z- j- G% `4 \5 A. l6 ]
                        if @.Destination = void5 _0 g2 x  `* p- G, ~, F
                        then -- no transport order for vehicle @
5 _, i% z7 O, ^+ J9 O                                @.Destination :=
& D+ {% }8 l* x: p+ O' N9 F                                rgManager.nearestFreeStation(@,track.~);4 t# b  E. |' Y* q9 \, }
                                newDirection(@);   4 j0 E% y" o4 t
                                if @.Destination /= void then
/ U- f0 J5 b4 A. b5 Y5 M* o                                        @.Destination.NumReservation :=
: q: L3 A" R3 r& L& Y: c                                        @.Destination.NumReservation + 1;( z9 j- W, F/ o; R# {
                                end;
. I) |7 m5 n, t9 `$ ]! U; P                                @.CurrIcon := "drivingHome";- {) F" U" [  I6 g( A. J8 u
                                @.DrivingHome := true;
) ~( Q5 e, X. S" e/ {                        end;( G, W- T. m3 g4 e1 G4 V* u
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
+ T& a' Z' v+ f8 q0 h% w                        part := @.transpOrder;7 v( v& I# p' r
                        part.move(@);-- load part
; q  k) @! J  H! V# e4 z                        @.CurrIcon := "load";
& i/ v: K' n3 c1 P$ D5 h/ w( }                        GlobalDistObj := part.globDestination;
3 O: V: J) x5 _" Z. M8 M                        assignLObj := rgmanager.rgAssignL;8 p7 L* r. ?- V: I
                        row := assignLObj.getRowNo(GlobalDistObj);# g7 m8 m# v' T2 |
                        if Row = -1 then -- since 70" s7 c8 ^$ U8 B' A
                                if lan=1 then
3 `! Y: g- e' y! G. C                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),- ?( c3 u7 i1 ?1 I
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
. y' Z0 J. E4 y: z                                else6 @# d( G: y5 K  Q4 O  r
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
" S# n" X" ?; @' r+ ^; i                                                to_str("in docking station: \"",?.~.name,"\""));                                / I$ N- x! D1 E4 z  v$ g" ]
                                end;5 t0 y2 ~1 b4 d( r$ C; C
                        else
4 Y$ o6 P' y9 H3 g' j- a                                @.Destination := assignLObj[1,row];* B- D( I7 f" I" N4 a- r
                        end;                       
8 ^" ?; o: ~: C2 U; T$ _1 v6 V                        newDirection(@);, J9 }# q: x' h2 i4 H3 T5 W8 @& e  ^
                        @.HasOrder := true;4 x( Z7 W1 ]8 d* H
                end;
; H' p$ Y" ~3 `# _% ]        end;& u# A9 U$ k; N7 c7 o
end;        -- of the method' d$ Z5 Q; v( Z5 S. M
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
8 E  H$ W& |. [% z3 U
$ D* g6 J. q+ x' k: E% u这是AGV_putin中arrive的method。
7 Z( F! M7 a1 v. w% l: a( d" Y% f& M5 ~  P1 V; }. e
当到达物料速度越高时,这个报警更多,0 x- A6 X: u' Z$ U  N
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
, K9 }. h3 W$ W* I7 m! ]程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
3 m6 D3 a  h" e0 k; A0 L' d: c, d1 q9 K4 [9 z  }$ ?- e
另外一个小建议,就是move,所有的move都可以这样
& g$ ~! j  @% r: k. ~# Iif not move() then debug end
% ?2 O4 I( }. J9 n  X这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
0 `! Y1 N' Q/ N6 x% X8 @4 ?plant simulation中的free libraries有AGV模板,% t* K  j* t. k6 v* r' K
里面也有案例。, W4 G% j8 _3 z2 c. `( I  ]
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。5 O$ A5 ?6 |# u

- u$ f6 a- c" X) y* V1 z我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! B( `+ q+ J4 p6 U+ \4 ~. b% t9 h
+ H5 w* a/ [9 L
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
9 R- W+ n3 A0 W3 T4 |这是AGV_putin中arrive的method。
; ^( o/ i' c, e
7 q/ y9 Q4 s3 u* t% O当到达物料速度越高时,这个报警更多,
, l  B% J  @4 g
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-30 19:48 , Processed in 0.019993 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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