设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7703|回复: 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'
0 F/ n7 b# L1 G2 V- g0 H" H' R# q( j*/; {) t2 Y7 d/ N4 x
is# Y6 o6 {( |) Q* y4 E0 r
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;5 ^' T7 `; K3 X- t
do
8 m( f9 z: @) F! q' M        Lan := rootfolder.Internal.Tools.AOLlanguage;* C: y. M1 g( e" B
        if current = @.Destination -- else return7 q, m9 `" h0 M$ a5 b/ X9 x6 G1 n
        then9 @) K/ L' o8 W
                @.Destination := void;% O3 B4 o- q' ]
                if @.occupied then
4 A$ v2 Q* ?+ {1 r8 s8 v                        part := @.cont;7 A) q" i; N. q- B7 W+ i
                        @.transpOrder := void;4 |- `  i. g- h) u# g
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,4 S# o, S1 y' E  ]# i0 M4 y. X
                                @,root.eventcontroller.simTime);! y  U  N% i( E5 c: q2 N
                        @.HasOrder := false;
  |% \2 M! W' j5 C: b% R                        @.DrivingHome := true;+ y/ b+ o! ?  {5 G
                        rgManager.tryToStartTransOrder;; N5 l7 f: ?$ t, c% [9 p1 S) w
                        if @.Destination = void
* x" `* A: N6 y  ~                        then -- no transport order for vehicle @
2 m8 k5 f3 ^7 x                                @.Destination :=
+ [/ U  ~% P! J                                rgManager.nearestFreeStation(@,track.~);) K5 l0 }+ `% E% W7 \
                                newDirection(@);   " ~9 N# B  O) b
                                if @.Destination /= void then% v3 `" Z# F$ i3 T
                                        @.Destination.NumReservation :=% B; i+ w( A; g# R, J
                                        @.Destination.NumReservation + 1;
' w+ d/ W+ @* D# s                                end;
, h% k0 a. K" T                                @.CurrIcon := "drivingHome";
1 d3 ]  e. b+ h) J( q0 R2 A" U                                @.DrivingHome := true;5 D* W& s$ o7 O. T% q5 x
                        end;2 R3 i/ B3 x7 x6 Y0 J9 R
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
( Q& z4 s/ N- D( D- x( P) j                        part := @.transpOrder;
* A6 j7 J2 F/ S. I) o/ J) y5 ]                        part.move(@);-- load part
4 u6 N7 v) I8 b5 @4 d                        @.CurrIcon := "load";4 u+ C# i3 n* S( w* d. F, i: _
                        GlobalDistObj := part.globDestination;* p7 I8 x! L4 X3 o, _
                        assignLObj := rgmanager.rgAssignL;7 {5 p, j1 q9 k4 ?% c+ H
                        row := assignLObj.getRowNo(GlobalDistObj);! G+ q$ p7 t/ ^
                        if Row = -1 then -- since 70! V- h9 ]- Z" W* X4 H$ W9 ?1 `2 f
                                if lan=1 then( y. ]6 N4 F0 u9 R
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),5 e, E& l% k' Y2 X* A. k' X
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
: m* _% G' a. t+ y: }                                else
9 w8 e3 E# a) x" U) {                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
7 @$ l  j! I2 P9 n0 y8 ^                                                to_str("in docking station: \"",?.~.name,"\""));                                # q5 G, B& h3 Q) K5 _
                                end;
) \7 a; d9 f+ G8 W. u. I# |/ F! U                        else
+ ^: x4 s" `- w+ {" y/ s* X4 @                                @.Destination := assignLObj[1,row];
: Y) `3 R* i3 z3 c5 U                        end;                       
9 [' [; ~* g6 T3 q                        newDirection(@);
+ a* s. E) C5 k$ W9 O; J9 G                        @.HasOrder := true;# t  G3 e' G7 t, N7 W
                end;
& x% G5 h1 @/ h        end;# W. i4 ?, `% w" w* `
end;        -- of the method
9 k9 m7 I, v% O* w3 S6 _
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 $ P8 S/ E- y7 ?

* P; K$ _( c! g# {0 c这是AGV_putin中arrive的method。
3 D) P6 k. t  R  z! W. d9 u! t, N2 a' |7 ?5 w/ X& h
当到达物料速度越高时,这个报警更多,
( H, @) ?1 g( I) E( h可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
3 H  Q* [- G3 m$ i1 J1 ?% G程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?1 h4 w5 |9 ?0 z
# a) v& e. n, b5 _5 \! s/ f
另外一个小建议,就是move,所有的move都可以这样6 _' t8 N3 ]  R' j, n
if not move() then debug end- G8 c; M: U! `- U1 j, a
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
4 |- @  G9 l! C" O" @/ Gplant simulation中的free libraries有AGV模板,
+ V3 ^+ J6 g+ Z& r1 ^: m! E$ p8 X里面也有案例。
6 j+ t% V+ s: Y( a' Q# ], C# \9 E我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
$ G. b) h% N* h: J; o. ]9 o# a2 ~9 c& j3 |7 K
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
& n- C7 r& \; w! l6 O6 T6 W7 A- {! o/ T# h* A. j5 s
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
* p( k9 T. s8 D3 g这是AGV_putin中arrive的method。
" I$ |! S& X% Q/ v; i* F( E, v4 h+ z6 }9 ]" ?: `
当到达物料速度越高时,这个报警更多,

( B% l" E: a4 j0 p" ]% s. ]' H( `另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-25 07:42 , Processed in 0.019414 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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