设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6555|回复: 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'
. D: g# Z! n6 }: M' G*/; R) {. w% O# F9 s! V9 A
is6 F. [" e. i6 q: q1 f4 X
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- k/ Z) M# Q+ ~  O
do
1 s5 _: P0 h. ]* H3 ?! N  d4 z, M        Lan := rootfolder.Internal.Tools.AOLlanguage;
$ L/ ?) f6 k' L. J/ O1 x        if current = @.Destination -- else return
* X6 ]' K% {' y. L) f' j, T        then+ t1 ^- ?, D. o  F$ X
                @.Destination := void;
; s% T! g; I$ D+ ~, N% f8 ]( F                if @.occupied then
% l4 E+ E) j1 }' g* X- b! V* c! E* s                        part := @.cont;  O' c" M0 M6 j( n
                        @.transpOrder := void;
: F' [" N4 _% m                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,+ \8 \7 h1 I5 k4 w2 g
                                @,root.eventcontroller.simTime);
8 t& O9 P0 }- l  `: r7 f; g                        @.HasOrder := false;
3 \- v1 L5 E! V3 C* W                        @.DrivingHome := true;
0 h) s, g0 D# g, |                        rgManager.tryToStartTransOrder;( @! {5 Q3 }/ `/ K1 h. c" X  G8 r" |
                        if @.Destination = void
2 Q8 I0 v) }  F' R9 a; e4 O                        then -- no transport order for vehicle @/ ~: r* w' p( |- p
                                @.Destination :=
- I6 t4 Z: R( r  w                                rgManager.nearestFreeStation(@,track.~);
, j8 f7 o0 Z3 y) I; e  b                                newDirection(@);   1 C6 O$ h, Q1 K
                                if @.Destination /= void then
6 W7 `* y( b" w7 p6 G& y6 j                                        @.Destination.NumReservation :=
! k; g! `: Z7 l2 q; B% T* ]9 y, v                                        @.Destination.NumReservation + 1;  ~% }6 R! Y  I7 q  r. u
                                end;
/ t9 Z& Y  l9 E4 Y6 {; w6 {8 W8 H                                @.CurrIcon := "drivingHome";
4 ^7 U8 f& c( ^9 D# U) X                                @.DrivingHome := true;
/ k" e# j6 K5 {4 r3 h' `7 E                        end;
3 q. B6 _: K  {. Y1 ^                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
4 Q! Z* K$ D) Q$ v( ^1 e                        part := @.transpOrder;
: f! E. e! ], p; ?( p                        part.move(@);-- load part+ [* z8 ]& i# ~
                        @.CurrIcon := "load";8 S( C* Y" i3 _6 z1 d, |$ Q
                        GlobalDistObj := part.globDestination;4 L4 U6 Z- t% {7 ?( b6 O
                        assignLObj := rgmanager.rgAssignL;, k$ \2 ], u" j  g
                        row := assignLObj.getRowNo(GlobalDistObj);  i0 \0 b' @! v6 D0 Z
                        if Row = -1 then -- since 70
. ^1 R+ {, X1 m, x3 `4 x                                if lan=1 then/ [* ^& v  U, }' q9 L0 i4 i
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
1 O0 {1 D! n/ Q: Q* Z. g                                                to_str("in der Andockstation: \"",?.~.name,"\""));5 O' ~) Y9 V1 J
                                else
6 G( t4 \. M" u" ~: [# o: ~                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
* j' V5 B/ @" [7 Z                                                to_str("in docking station: \"",?.~.name,"\""));                               
- O9 H  l) @  ^) m1 g6 m- U* |6 R                                end;
7 C4 `6 |! b1 D2 `7 _# L                        else
0 d* z( a2 n6 ?# E                                @.Destination := assignLObj[1,row];
1 ~0 h) w  t: P$ m                        end;                       
# `8 Z+ W) M% x2 D& O                        newDirection(@);
, Q) h5 k5 ?1 n5 l+ [7 ^                        @.HasOrder := true;& d% ?7 x( h" G0 m( A5 |/ ^3 k
                end;1 e- j! [, ^' |$ u) _5 w! G8 k
        end;+ X! C0 R$ O) ~3 M% _
end;        -- of the method
9 E7 T) ]2 e! Z  Y" \0 g9 X
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
( f( U, ?; M6 D/ c; |2 N4 A+ S' U! }# B3 Q+ s% P- D
这是AGV_putin中arrive的method。* @- N2 l, p- N0 g. s1 _& Z

5 m& `2 q' f) E3 P: {当到达物料速度越高时,这个报警更多,, Y" E3 z. h; q3 }* d
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
# B( Y' z& \8 g& j程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?$ F1 v8 B- F/ S
# C4 d: ^  \3 H4 ]* e: w
另外一个小建议,就是move,所有的move都可以这样! y! z+ r0 n9 ?4 f+ ^! w# T
if not move() then debug end2 n/ D0 e2 Y: O; |0 _
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
; K" b& w. K. p( D1 J3 m+ `8 T/ pplant simulation中的free libraries有AGV模板,
# t; _# @. B/ X! F0 ?' m* `2 r% N+ T2 ]里面也有案例。0 F. U' Y0 U$ u. u
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。0 G! y3 f- G, e, F7 L5 [( D  H
  a9 V6 h3 l% [- x7 U
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ( b2 N  {  x6 E+ g) s4 T
* c8 Z& ~% z: ~; I
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
1 ~) I2 D8 e2 {# g) u; [  T) j这是AGV_putin中arrive的method。
4 T1 \% b8 C- ]8 q! B4 v: G8 S7 n9 S7 p$ @% ^8 D5 I
当到达物料速度越高时,这个报警更多,

. `( E- J' S1 F$ y( ]- N  L$ E另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-12 17:29 , Processed in 0.018214 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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