设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6856|回复: 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'
: k+ H' N& s7 ]7 O/ P*/* g1 v: ^3 e! e8 p1 Y' y2 J' a3 i+ K
is
, a! r6 d! C6 E/ s( B        part, GlobalDistObj, assignLObj:object;row,Lan:integer;, S0 U4 T% j6 I9 c3 l
do
% I2 g* t, Z. p. n. @& z        Lan := rootfolder.Internal.Tools.AOLlanguage;
1 N+ p' o- R! K& C        if current = @.Destination -- else return
: V1 C% q3 C# S5 v4 h  O4 D4 S        then
& Y/ y6 o, j) P8 M7 n, `                @.Destination := void;
: o7 X- K! s( f* f( W+ A( z, Z                if @.occupied then9 P5 n% m5 U+ j4 B! M0 Y5 Q9 E
                        part := @.cont;2 s  ^/ [( O. V& I6 F
                        @.transpOrder := void;
, X* ]- i8 [. c* a2 M  R: ]                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
4 L6 m6 ]- k* U                                @,root.eventcontroller.simTime);
6 {* b! b8 t9 l2 r  v' u8 l$ f                        @.HasOrder := false;
, w6 Q2 g6 K6 x. |; ?; |                        @.DrivingHome := true;
; q( L- V  P6 z  @+ V" Z                        rgManager.tryToStartTransOrder;* ^# T& Y, Z3 p" k# `
                        if @.Destination = void* _* l: z8 P& g+ g6 X0 D+ t
                        then -- no transport order for vehicle @7 a/ d( i. J( t: i% B' E) m, s
                                @.Destination :=0 B: P% Z* |) N- N+ O& m* h& b
                                rgManager.nearestFreeStation(@,track.~);$ n4 h, H, [" J2 {, @4 y/ j' ^
                                newDirection(@);   
: C( A) ]: H1 s1 M/ N: ^8 w                                if @.Destination /= void then5 O+ E% ]8 V0 ~
                                        @.Destination.NumReservation :=9 z+ j% S% B% ]; Y! \
                                        @.Destination.NumReservation + 1;! N- o) j: r4 m! i, f% U
                                end;
  e  x9 ^2 l% [# M& N                                @.CurrIcon := "drivingHome";
$ N6 }, ]: V9 r# n                                @.DrivingHome := true;# _" j% N3 X/ b8 Q. a6 s
                        end;
! h9 b  I9 [! g0 F, N                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- @) K% v( T: J9 g* E) c# R                        part := @.transpOrder;
+ ~% W; S, k; S+ v  d8 i( J                        part.move(@);-- load part
* y1 I' o2 B0 t# X, w' w$ p                        @.CurrIcon := "load";
! r! g% y: q9 j' c                        GlobalDistObj := part.globDestination;3 u3 q" L- @8 @) _3 b
                        assignLObj := rgmanager.rgAssignL;
+ i, J5 d0 e5 m1 W5 }                        row := assignLObj.getRowNo(GlobalDistObj);$ `' B+ R* t! p) K8 {
                        if Row = -1 then -- since 70" D; a, @5 s, T& B7 Z( c* L
                                if lan=1 then) t9 A* R1 ^+ d
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),) D2 t. r  I* ]. w0 m4 E% {
                                                to_str("in der Andockstation: \"",?.~.name,"\""));. q/ a# l1 y* a9 q: _3 k2 e( {
                                else
' A+ Y; u2 Y1 ]& f                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 G* t1 V4 b. k" ~                                                to_str("in docking station: \"",?.~.name,"\""));                                " I* f4 d$ ~% A7 P4 y" C& A! D6 |7 V4 [
                                end;3 c" b+ ]/ ]/ U" h
                        else1 E' y: e5 n. V! k- r% ?
                                @.Destination := assignLObj[1,row];' s. m( L/ x3 c4 r! h0 v
                        end;                        ( ~, A! s+ r7 ]
                        newDirection(@);
. S  v* E: m6 N2 E/ b3 E3 l                        @.HasOrder := true;
1 C7 ]: ?1 _6 \8 H" d                end;
7 Y6 [# q) d& Q2 @  Y        end;
, ?) W7 j' |3 W4 U5 Y+ Jend;        -- of the method* a, v4 {, p% @( g. m5 L
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 {1 O0 k' p6 y5 j
% ^  B9 `% X4 X# G
这是AGV_putin中arrive的method。, W0 j( D5 L, x3 q

$ ]( `! w6 e) {当到达物料速度越高时,这个报警更多,
  Y' J, L0 ]0 X可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
4 |, m% p  X* X$ ]6 A/ [程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?* e: U0 r& T: n2 l  K4 o

4 I9 a2 I7 c( R另外一个小建议,就是move,所有的move都可以这样
: z3 }2 ~+ [; D5 f# y  x1 tif not move() then debug end! `5 d" H4 I- L* d/ Y1 c8 f
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
$ Q& |) k8 z0 b, c- B8 ^plant simulation中的free libraries有AGV模板,& v0 Y& E5 q' V( ?
里面也有案例。
; b& d  [) M+ h7 ?7 {1 e/ i我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。7 t* y9 K) }- F; H

' j* v' c# e' Y% R我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
1 E% ^7 N8 D8 x, n+ l, O
6 @- W$ U" a. \) h1 n/ G3 e0 p9 O那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 + \. U! v; X4 c7 q; x5 z' v  U
这是AGV_putin中arrive的method。! A- Y9 S& s! R' o, h) u
; T" `- F7 B% X' P* D7 S
当到达物料速度越高时,这个报警更多,
* K$ f. [( `  {1 Z
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-3 00:44 , Processed in 0.022717 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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