设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10080|回复: 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'5 I4 H9 U8 ~  A$ u) q. [& I- m
*/% i. H4 F, ^) y
is1 T0 a8 k0 R) |/ b$ d
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;0 c: Z) E+ Q. O, F$ |3 E
do' e4 }" V& f: I4 R7 U
        Lan := rootfolder.Internal.Tools.AOLlanguage;) `( H% J) a7 l; f* U2 v  S2 J/ n& P
        if current = @.Destination -- else return
2 ~1 b( n# T5 U3 j2 D0 l        then: H  M1 Z% @% u6 B2 A! A2 h
                @.Destination := void;
) ?6 z* K3 k6 _1 C4 _" k1 d+ ]& I                if @.occupied then3 |# V8 b1 F  H$ _, D2 _+ o
                        part := @.cont;
9 s5 V1 x- I" l9 x  p3 B                        @.transpOrder := void;
: G; ?7 o  V$ M9 V                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,# z  }9 L+ \0 u0 e' B' v9 u
                                @,root.eventcontroller.simTime);
6 n: D. u6 r7 @% M' ~                        @.HasOrder := false;" l+ i* C- }5 x2 K
                        @.DrivingHome := true;- T% A  Q) U" ?- C3 |% \
                        rgManager.tryToStartTransOrder;
( p/ o" B8 G2 g0 N                        if @.Destination = void7 W& G3 ~4 T( j
                        then -- no transport order for vehicle @
4 u7 t1 i* K1 U) B% I' |: J4 d                                @.Destination :=
+ ?+ d2 q3 u2 h- B* J                                rgManager.nearestFreeStation(@,track.~);  n, H8 U$ l% v: q! t
                                newDirection(@);   ) H- n' p& a5 s1 k; O; b9 v, `  g
                                if @.Destination /= void then
  l# ?- F( ~1 A( Z                                        @.Destination.NumReservation :=* c9 \  v, O9 E( V+ H
                                        @.Destination.NumReservation + 1;9 q( E+ g1 h2 k
                                end;
: W1 y1 r0 Q* n7 {                                @.CurrIcon := "drivingHome";
+ X3 U; H; i$ a* U  P! C  J                                @.DrivingHome := true;
" ?9 j  E$ {! @; U3 U7 e4 p+ q                        end;3 G: J8 q  F! G7 r- J( W6 e  e
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- I; m3 R0 u) z+ d# H+ O                        part := @.transpOrder;( o; H, a9 c# ~& b* u
                        part.move(@);-- load part
) H5 a% a. h* l) C                        @.CurrIcon := "load";
3 r, q: z+ C; p0 I$ `' t6 o                        GlobalDistObj := part.globDestination;* {+ H* n8 U9 Y1 L- g) O& b+ ]% m
                        assignLObj := rgmanager.rgAssignL;# j9 p, x" S/ b) z6 s9 P
                        row := assignLObj.getRowNo(GlobalDistObj);
1 M1 g1 \7 b% w                        if Row = -1 then -- since 70+ c" w* a5 F" p- ~5 h
                                if lan=1 then
9 p; Q( \7 d- K/ j% @- g& I                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
) p- j+ O& B( Y6 ~/ w+ k                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ u% \1 M% M, X+ G. E# {2 K                                else: E0 e  L$ _6 u
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),3 N2 c' i" o, t5 c. _% J
                                                to_str("in docking station: \"",?.~.name,"\""));                               
4 ~2 R( n/ b; z/ d7 e  i. }) H, ]                                end;5 r( _- X; O' P
                        else& C6 L/ p6 w5 d% h
                                @.Destination := assignLObj[1,row];
( a! |8 e1 M4 S- a+ v                        end;                        5 Y9 C" i: m* q1 e; m. t7 A' Z
                        newDirection(@);
8 e3 g0 A: C- f/ ~4 P. M. r/ m                        @.HasOrder := true;0 l& K6 d7 d, j, `/ f
                end;1 [/ h& b  n( u6 Q# z+ P( h
        end;
. @4 A9 y+ p* U" h) K/ Iend;        -- of the method
& B! E/ j  j* W, W
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 1 }6 G8 _) d2 R% ~2 Y5 V( Y
, t" w% s3 n" n7 Y1 l9 k3 O3 i
这是AGV_putin中arrive的method。3 w" h3 w, m. x4 k. i+ G
! r9 g) n5 G' k; W
当到达物料速度越高时,这个报警更多,! E" C* S7 {1 p/ r# a: Y$ Q
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
: I; \1 V( P& p+ I+ N! A' R程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 N3 ~2 p: k# y) ]( o; D: w& z2 W% O5 N& d; f4 W% m4 k
另外一个小建议,就是move,所有的move都可以这样
* b7 x) X. j- s3 [if not move() then debug end
* n7 B0 [* B- r( \这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
+ v) l4 q+ d- c' bplant simulation中的free libraries有AGV模板,
0 y3 t1 }' z# g  T* R. D里面也有案例。5 H+ l/ E/ o  x
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。+ |+ }& J7 v( [- Q0 d1 Q

( Y, s8 F$ {2 Y2 H$ K我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
1 _: c2 t5 M7 {: \4 I( |4 |# g' E+ ]# b  N$ O! G4 X. d4 _% Z
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
; x1 b3 X0 j  F  i4 Z" Q& Z这是AGV_putin中arrive的method。. o# V, A( x2 m. a1 ^1 p
) ~2 f6 f* M8 p: s
当到达物料速度越高时,这个报警更多,

( ^3 q- p) C) O" R: k另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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