设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9544|回复: 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'( n% b4 _: ~# F8 `+ u
*/% B/ h; X6 G6 d* e9 h
is
2 i4 K, q) O4 [3 E+ T: q/ g        part, GlobalDistObj, assignLObj:object;row,Lan:integer;0 v$ X2 A/ {# I9 k& Q0 b& J
do+ E, M! I/ V& B4 P
        Lan := rootfolder.Internal.Tools.AOLlanguage;- v; k0 ?$ z4 W6 s$ @: `/ A$ W6 P& z
        if current = @.Destination -- else return
9 V8 }: D3 c/ U2 J        then8 d5 Q8 P2 I: Y. D3 x% Z4 @1 Z
                @.Destination := void;
( n$ e4 P2 U5 y. R/ U) n                if @.occupied then/ F6 ~4 p/ E- L( c, V3 V; f% U
                        part := @.cont;
- C. {* j2 e$ |                        @.transpOrder := void;
: k% [% L2 Y7 [$ w% f4 n  E$ ]                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
. J; w0 X" B& p' g                                @,root.eventcontroller.simTime);9 \$ C. `1 Z- {& _9 y+ M
                        @.HasOrder := false;
; W8 D2 f; o& m                        @.DrivingHome := true;* |# ^+ v  {8 w
                        rgManager.tryToStartTransOrder;1 c9 W% n& ^1 N/ {& u
                        if @.Destination = void
$ M: v7 K- x7 p0 l* X1 d                        then -- no transport order for vehicle @
# g6 C% E" r9 v                                @.Destination :=: }6 ~+ r% `& M! A
                                rgManager.nearestFreeStation(@,track.~);
3 f; b) e, j7 H; U; ~2 k                                newDirection(@);   : r/ X! Y! q- [9 X# E$ x
                                if @.Destination /= void then( O; H: X! q1 |8 `$ |" n( Y1 @
                                        @.Destination.NumReservation :=
; N! \2 C( M: A+ s% a/ \                                        @.Destination.NumReservation + 1;( y2 C' F! V. o6 j
                                end;
1 F' K  [  Q+ }2 b, Y                                @.CurrIcon := "drivingHome";( _/ h2 i; y) ]0 _
                                @.DrivingHome := true;+ ^4 {( S: x6 Z7 }
                        end;
+ l. J# v8 S6 ?9 C+ v; I                else -- the vehicle @ is empty, both vehicle and part are in the same dock station( P2 q8 D* C2 O8 Z6 x
                        part := @.transpOrder;
0 Q) |; I& C8 W% d/ y1 Z                        part.move(@);-- load part
* B: o- E. Y5 S' R" V                        @.CurrIcon := "load";
$ _+ E# U2 N# ?* k# j8 N                        GlobalDistObj := part.globDestination;
- c- J1 n- x7 A& w' h$ l                        assignLObj := rgmanager.rgAssignL;. z1 t1 L# `9 l% S+ y. _" Q. Q! _
                        row := assignLObj.getRowNo(GlobalDistObj);  L* n: `, D/ r6 ~- r3 D
                        if Row = -1 then -- since 70
: \) r" g. {; B( b0 T2 }' t                                if lan=1 then
2 ^6 y: F! l2 j( J                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),! z/ ]; _6 T& \, a2 J% V. ?3 e" O
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
+ q0 ^1 m- ?* @/ Z                                else7 G* ^& r# S7 _6 [1 j
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 A0 T" E4 ?* J9 L8 y                                                to_str("in docking station: \"",?.~.name,"\""));                               
6 D# P6 i  B8 O  p3 _6 k- \                                end;
. D/ l* W+ H, F$ ^# f3 e/ v                        else  M; Q- u3 I/ i% V/ g
                                @.Destination := assignLObj[1,row];
2 J7 l9 l: G& f$ Z% F                        end;                       
! m/ {% b+ ^9 h% p9 `' j& m                        newDirection(@);& l' C7 f. U2 l+ c3 V) e& K3 j. N
                        @.HasOrder := true;  x0 Z  R2 X/ f, _1 w
                end;
4 M/ G. k  g! q        end;
, f! R' Y9 [8 J1 }3 o" D: f0 ~5 Cend;        -- of the method! w7 P/ t& x0 w- ~0 x" d" y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
2 Y/ N( |1 i3 s& H2 |/ T
1 B+ U' K4 p3 ^' v. O3 D这是AGV_putin中arrive的method。
, Q+ H9 Z# {" N% K; g2 C# u& K$ c; C( ^3 ^
当到达物料速度越高时,这个报警更多,
6 ?- `9 X( Y' s' Q- m可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
( h" m# @7 ~  ?. Y2 [程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?6 n+ t3 W6 f& M. a8 P6 a* x& |

. p; o2 f5 o* n8 ]7 g另外一个小建议,就是move,所有的move都可以这样/ T( i2 L& G! H
if not move() then debug end
% c7 \/ S8 g2 [6 U8 Z, I$ D这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
  ~7 ~1 Z3 `6 W4 B: V* bplant simulation中的free libraries有AGV模板,7 z4 Q# k" d: K9 f
里面也有案例。0 b# V- {# [" Y" `. o6 T
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 |7 f* T# \" `$ t7 w* E3 f

$ F/ ]0 T3 h! v我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
5 Q3 ~! G- X) G% Y! Z
5 G6 G; ?3 `# z( N; K' F那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
- Y- [: @! b. l) j: N7 f! u这是AGV_putin中arrive的method。& G$ d6 z1 c3 C* ]  |2 c5 r

8 l1 H/ J, ^7 C5 i0 l& @7 C当到达物料速度越高时,这个报警更多,

* l. ]* ?2 P( M另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-7 04:03 , Processed in 0.023299 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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