设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8254|回复: 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'+ y, s# p* p* _! |
*/
( O/ h6 B. Z0 C( Gis
- s( m- ]8 O6 Z: O% m) l! D        part, GlobalDistObj, assignLObj:object;row,Lan:integer;, ]$ d2 y! r2 p
do4 m0 D6 I. b( n0 Y  S% @/ j$ f
        Lan := rootfolder.Internal.Tools.AOLlanguage;
" `) C- a. z+ ]1 F+ Y        if current = @.Destination -- else return
( n* V0 B& p. X) C- e0 y- ]( ~4 e        then
- V1 [2 b; e  \                @.Destination := void;- o& `6 M- \: r0 _
                if @.occupied then7 g' Z+ H+ T# J: w
                        part := @.cont;
# L, a; t% T- m3 f8 }$ X9 a0 j5 ^                        @.transpOrder := void;
* J9 s( t" u6 _5 \# a. r/ z  B  Z) L. l% z                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,/ u, W$ e# g1 h6 u" ?1 |
                                @,root.eventcontroller.simTime);
3 H6 J; N; r; e8 @  l( f                        @.HasOrder := false;
, @1 O. h. P0 w! x: l( ~                        @.DrivingHome := true;6 L, |) h! m, W/ }* z, z
                        rgManager.tryToStartTransOrder;
% w+ ?0 ?/ @/ T# E# v: {. l) l- e                        if @.Destination = void
$ ]2 `' _' ]! K( L8 r6 p* _1 k1 z                        then -- no transport order for vehicle @
6 h* m# b6 w! W+ K8 j" h4 w                                @.Destination :=0 Z* R* g) F9 p& q, ?9 U
                                rgManager.nearestFreeStation(@,track.~);
5 a( b0 n2 R& {                                newDirection(@);   . c" E/ l, ~- f
                                if @.Destination /= void then* D& O4 L( o4 B! g+ Q
                                        @.Destination.NumReservation :=8 R/ E$ S0 w9 i  n, C
                                        @.Destination.NumReservation + 1;
* @% H; P( D$ g5 \- s- f4 H                                end;
3 B9 l, o  }. F1 X                                @.CurrIcon := "drivingHome";
" j1 p5 U3 _& F! `                                @.DrivingHome := true;! J: d3 Y% V' \' F4 i
                        end;
8 x8 H- I+ l6 w/ ?  q, o) q                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
" F  `1 E1 q, c$ i( Q                        part := @.transpOrder;& w/ k" |5 P4 l! n- ~
                        part.move(@);-- load part- h$ J/ F) z: }
                        @.CurrIcon := "load";
' m  b5 S  X0 m) q3 W: ]                        GlobalDistObj := part.globDestination;
; `; @9 j9 S+ T4 `                        assignLObj := rgmanager.rgAssignL;
& r5 Q% T. a: e5 ?9 \5 c! `                        row := assignLObj.getRowNo(GlobalDistObj);
8 ]1 k% a! G- U1 F; X                        if Row = -1 then -- since 70$ p( H, h& Z* O3 z
                                if lan=1 then
& t, S/ l# U, V$ d5 O3 c4 Q5 U                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
4 s! l, y5 q! T5 w                                                to_str("in der Andockstation: \"",?.~.name,"\""));* o# H0 t, z* J+ c) ?
                                else- h% h* \0 b' Q# P: P
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
0 }; U8 q9 K  S1 K+ }+ h: z                                                to_str("in docking station: \"",?.~.name,"\""));                               
* A1 K* o+ P: j3 k: H2 w( l' h                                end;( N9 ^7 W7 `4 P+ S* N5 N) K
                        else
* B& H$ p  b- o4 F9 n, z5 |                                @.Destination := assignLObj[1,row];, w0 ?5 I8 |# @& X* d% q! Z( L
                        end;                        & T' H9 G0 s+ x9 O- i
                        newDirection(@);
* Y( _( a6 n' v. R8 A                        @.HasOrder := true;" {. \8 p. @) O6 p+ P2 R; U6 I- m
                end;" N  ~- _9 q4 I8 B) F) ]* A
        end;6 {- G5 \: S% r. A- X
end;        -- of the method7 s6 t" u. u, Z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 2 Q. w( w" P( t, c& \/ U: y
: ?7 v$ e+ G9 ], M" p( Y4 s
这是AGV_putin中arrive的method。* z9 Z) j1 E7 f2 J5 N% g
2 R( L2 k% L# T. s  q$ _
当到达物料速度越高时,这个报警更多,7 C: f, {/ @4 |4 Z
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。$ r0 c( p, {) W7 z
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?5 F- M5 u( W! G3 Q0 w  @
  ^% D* N* j/ O% V: w  [$ N9 i6 F
另外一个小建议,就是move,所有的move都可以这样
2 D  q9 X- s5 _& Zif not move() then debug end
5 M7 i$ Q7 S* f这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
) z) l9 `1 Q% _& b( ]6 r7 x+ \plant simulation中的free libraries有AGV模板,  Z9 h9 z+ z8 _) _5 `# {* B
里面也有案例。
6 N+ |5 H1 N7 k# T  M& A3 e# M我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。) {" J' O( m% \* T

4 o; e1 k" X# T( p3 s6 o3 V& P. N我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
7 T' h: R5 z: z% F% O7 X* ~! v
7 j' w8 n( s* `$ n" x那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ; i1 a2 Z" X8 {$ o3 ]
这是AGV_putin中arrive的method。
* x2 T. w6 `4 o+ E- t! g1 @3 o. ]) k1 u1 t0 {9 K9 L  w. ?0 a' ]
当到达物料速度越高时,这个报警更多,

2 s. C! G% W1 x, [另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-23 10:33 , Processed in 0.018338 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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