设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7113|回复: 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'
* Q( l% z! ?/ U! \6 V*/
9 r8 ?% U& p3 m8 `) @8 nis
: C: h4 _) m5 S7 G        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# L( z; w% n. _' ]/ v/ V
do
$ L8 s0 F( ~- |5 C7 {4 ?        Lan := rootfolder.Internal.Tools.AOLlanguage;$ p. m2 K/ E2 @0 i/ H; W' H
        if current = @.Destination -- else return1 v( M; X% O3 E& ~
        then
0 f  s  o' P# i- n; ^                @.Destination := void;
" H, |- H# \( }0 H5 `" _2 d                if @.occupied then2 M1 N3 I6 y6 H2 _( ]
                        part := @.cont;
) j/ K6 h6 w( W2 ]) w& V                        @.transpOrder := void;
2 Y" t$ w0 c* g# X                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
9 I+ u7 c1 y  r/ X; S6 F9 l                                @,root.eventcontroller.simTime);
: d0 i* m3 z" {; A  U; |                        @.HasOrder := false;7 L/ h; {$ h7 |1 I9 i6 }" {
                        @.DrivingHome := true;- g% y/ M' j: h% S
                        rgManager.tryToStartTransOrder;6 F, r- s) ?& t* @
                        if @.Destination = void
2 {' Q, Q8 q* H" g8 u  B- z9 Q& d                        then -- no transport order for vehicle @' o" T+ Z6 i8 [3 u6 u8 }5 K
                                @.Destination :=
. F8 p0 P* L: s3 `, {8 Q                                rgManager.nearestFreeStation(@,track.~);
  b9 \7 o6 x* e* r4 l                                newDirection(@);   , g# H0 K4 t* V; d( H1 A4 z
                                if @.Destination /= void then, B- p3 m  f3 F
                                        @.Destination.NumReservation :=
+ {& N: ?8 ?1 ^  p' Y                                        @.Destination.NumReservation + 1;
$ Z3 i0 c) n# Z& u                                end;
5 v) p/ t, W9 X/ h  C                                @.CurrIcon := "drivingHome";
# _8 n4 W$ Q5 ~3 c$ y5 _                                @.DrivingHome := true;
0 [8 x) A; b! E; ~0 Y                        end;7 M9 T2 k: r; Q2 c! K
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station$ T' ?  p7 }1 k& _3 n, K2 ?
                        part := @.transpOrder;
+ k9 ^" E' G/ z' m$ f                        part.move(@);-- load part% L' r4 q* `1 y+ H$ [! W: }7 e
                        @.CurrIcon := "load";
6 Q, l1 f2 E3 \% H                        GlobalDistObj := part.globDestination;9 u' T0 f6 x4 p4 [% c( e$ v
                        assignLObj := rgmanager.rgAssignL;
" I) R+ m6 b+ Q$ h5 i" {                        row := assignLObj.getRowNo(GlobalDistObj);
0 U: }& N7 y+ L* H5 e/ v8 s5 F                        if Row = -1 then -- since 70
. q( F  b% M  |3 w                                if lan=1 then
6 H+ Y" h3 {, g3 T8 L! ?* f                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
1 }; ~( g" B1 j                                                to_str("in der Andockstation: \"",?.~.name,"\""));
) R/ B2 Y& _2 M2 o# |                                else: }) H" u& p! y/ p1 @* |% l. Q
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
- w3 q( e* n3 J/ \0 ?                                                to_str("in docking station: \"",?.~.name,"\""));                                ! O! a$ `5 Q) h9 f' v% z; Z
                                end;
3 D$ J2 Z7 {' `. g! C. B9 N3 J# j                        else, I( }/ l' A0 E0 Y
                                @.Destination := assignLObj[1,row];
6 W. [/ G5 K/ q0 _9 V                        end;                        $ }* f; {8 u4 e6 `. }( _  G
                        newDirection(@);6 @. E1 H4 ?% N3 [5 ^1 g
                        @.HasOrder := true;
+ I7 b1 N; u2 p( {" v. y                end;
7 B, J) C9 ?0 T8 O7 i: b        end;
/ `/ T2 C( Q  X4 U2 bend;        -- of the method
+ P5 |" N5 U+ L$ J  p
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 0 n( _# l' I; |  V; A+ [0 ]
2 T3 ?# k# |. }8 n& D3 W# ?+ t
这是AGV_putin中arrive的method。8 ], _! K6 ]+ ^! Q/ Z

$ T3 [) N' Z! a7 W: V3 B当到达物料速度越高时,这个报警更多,* k1 j; \5 ]7 z
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 ^' n. V* p3 G- L/ T( G
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
, J7 z& z( D4 @5 I9 m$ Z* r" n  X  ^
另外一个小建议,就是move,所有的move都可以这样
8 \, M% f1 G+ K! t6 s+ ~if not move() then debug end9 o& p0 M1 y' F0 d
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。0 ~; y% {& m; k# ^0 I! {7 e: a4 S, J
plant simulation中的free libraries有AGV模板,% V+ u' d7 K) C, _/ E6 u
里面也有案例。5 r& }: p- @5 t# D
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。8 @1 }- \5 `. e8 E* e
! K$ n, L# }$ i6 I3 N
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 4 m6 R' p) x, _  }( U
) o+ M, p0 a: T2 L$ l4 `
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
3 h6 G3 e, i; ~, N6 o6 g: e这是AGV_putin中arrive的method。
& B! z2 [) U, o5 _8 q
( {8 X: |2 {% m/ b2 U当到达物料速度越高时,这个报警更多,
- [, Y: {! O( r7 [
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 06:52 , Processed in 0.021557 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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