设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10070|回复: 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'# g9 h" k( y) k' T
*/0 W0 d& ~& A. x- b
is0 k$ {+ b: m  ]7 @
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;" S0 o" @, A8 D
do
: Q. X: X5 z( f5 N9 I+ i3 F  e8 C( ?        Lan := rootfolder.Internal.Tools.AOLlanguage;+ F) j3 G1 }5 Y/ S8 A
        if current = @.Destination -- else return, X: A! h0 E3 @. {
        then( b# g2 F& Z5 W! s! D! `5 f7 k
                @.Destination := void;: S. E, X% X) p4 S( F0 M
                if @.occupied then
: G4 {5 `) f+ s                        part := @.cont;
  J& J) W  U+ e& L" D                        @.transpOrder := void;
5 K6 Q0 q& [/ |# x* B( N1 M$ B* s                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
8 W1 D3 N5 ]0 B                                @,root.eventcontroller.simTime);
) _6 a, [* w5 m- j) }- j                        @.HasOrder := false;
. e% l3 H, y8 q4 D2 l  [                        @.DrivingHome := true;4 l: M. F# f& _% L7 ^5 N. I
                        rgManager.tryToStartTransOrder;
+ m9 u  X* ~2 @1 K( d                        if @.Destination = void; Y4 j; y1 |( t- E" D- @
                        then -- no transport order for vehicle @
* _* Y. }& D9 @                                @.Destination :=
6 `3 [1 G/ x4 z. j4 q& P8 |0 e4 U                                rgManager.nearestFreeStation(@,track.~);% G. `+ c. s3 z4 P1 O2 l* Y
                                newDirection(@);   
! i) p: W  E0 w2 ]* |' L6 c                                if @.Destination /= void then! W) g' }  y7 y
                                        @.Destination.NumReservation :=
. B9 A( D8 |3 U7 O+ E5 U/ Q                                        @.Destination.NumReservation + 1;: u1 [" h" I2 }& P+ n
                                end;
+ o6 G: O* Y0 c- a9 g                                @.CurrIcon := "drivingHome";
! v: M$ w" D0 c" y4 k                                @.DrivingHome := true;
# [4 Z1 w9 Q% X" g, e                        end;
2 u7 c5 n' K- p, V4 A- d. E                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
3 D, S  r2 _( }: g7 B5 Q, r                        part := @.transpOrder;3 N1 [9 V1 r! {: j; y: w  J
                        part.move(@);-- load part
, L: y6 D7 v! a8 S/ [- O                        @.CurrIcon := "load";* u) H( E+ C, l6 Y" s2 z+ x
                        GlobalDistObj := part.globDestination;+ }& h5 i+ B' d; ]# x5 h& f
                        assignLObj := rgmanager.rgAssignL;
6 @: E9 m* Z. {7 q                        row := assignLObj.getRowNo(GlobalDistObj);
! y1 N2 y6 N( r7 ~  w                        if Row = -1 then -- since 70
/ y) i% w" I! u9 Q( a. B% J0 |                                if lan=1 then* _& T0 C) I# H: C# _5 _
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 [( i4 l% G7 B5 h- `$ B+ W. y- W) x                                                to_str("in der Andockstation: \"",?.~.name,"\""));
) p. u2 i* F, `2 `                                else
; w1 f$ Y  }( g% r* |                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),5 r  V- X8 z8 g( p( H
                                                to_str("in docking station: \"",?.~.name,"\""));                               
1 n6 g5 y1 a% ~9 U  H- \! h                                end;- Z# `" q4 g1 z% q: J
                        else
) f+ g( R$ p! `5 B                                @.Destination := assignLObj[1,row];, S% k) e! D5 I/ G) s4 g
                        end;                        0 o, v( f! M1 `9 M) L6 ]
                        newDirection(@);+ B4 N9 ]- W4 i0 }' g! g: q( w2 V
                        @.HasOrder := true;
( ~: T! n& W% A/ A& R3 J+ _                end;
/ O$ N6 r' |, O; |        end;
1 t& S- m2 C  Z1 n! e. E+ Eend;        -- of the method
6 [$ B1 m5 }9 K) V1 A- u; n
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 . ?5 W6 C8 d5 d
' G1 Q6 [' J9 g# w7 \7 {
这是AGV_putin中arrive的method。7 w! H6 N- {& G  u7 Y* P
' l2 F( ?$ ]/ k; `, A: K+ I; }5 a$ K
当到达物料速度越高时,这个报警更多,6 F( N  n0 p8 m) _
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。; e5 l& {6 q3 x$ p4 J" S) u
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
# Z+ B% C" q# C1 ^/ n) c6 n; j$ v! O; o
另外一个小建议,就是move,所有的move都可以这样, v6 u( u4 }$ n5 m% L. a6 y
if not move() then debug end
. x  s% o8 D, y+ z" O0 A这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
7 z' h  `5 A3 [! N; o: lplant simulation中的free libraries有AGV模板,
% a. J" M2 e8 a( ?  [里面也有案例。
$ P+ a/ m. n3 X/ L& Y/ V我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 H# l2 O( Y: P. I

- [4 w$ x7 m; K0 `我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
. B" E5 ^! R& ^7 h, K6 P6 [2 i$ S9 }) d0 {$ x( S
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
* A, n, H9 Q' C5 A6 q' H这是AGV_putin中arrive的method。# `$ E4 i5 \* [% I6 u% B

+ a9 m4 g+ |% ^& c- T( c当到达物料速度越高时,这个报警更多,

9 y* x% w+ [0 X另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-11 15:32 , Processed in 0.022104 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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