设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9664|回复: 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'
) V0 v& i2 z  L6 u8 j- b8 c*/
- }( [5 C+ j9 I/ Y* `is
/ I1 T0 o0 p6 k7 x8 W8 q  ^        part, GlobalDistObj, assignLObj:object;row,Lan:integer;" @. s) r. r% H  B- f
do
1 K9 I7 x( S) \! [        Lan := rootfolder.Internal.Tools.AOLlanguage;% A( }0 K6 o8 A; K4 d" v; o9 p
        if current = @.Destination -- else return: Z7 a+ u+ u, Q6 {
        then$ ~& P% }; K/ s0 h4 a2 m) q" z) [$ u
                @.Destination := void;
1 S3 T0 c. L; H) i, D2 T9 [                if @.occupied then8 l6 u5 I* H# J
                        part := @.cont;4 W3 f/ `' h2 w: C% j8 R
                        @.transpOrder := void;
% m8 \2 O+ Q7 V3 _% ]                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,- Y3 J9 i! B6 q4 u
                                @,root.eventcontroller.simTime);
+ W7 G; x& a) c: e/ c                        @.HasOrder := false;
( v) E& k5 |& s8 Y9 {' X) {: P( \3 u                        @.DrivingHome := true;7 d8 {. n5 y) U1 P* L- b
                        rgManager.tryToStartTransOrder;: ?) M: b: Y' B; A. C; a+ X0 Y
                        if @.Destination = void; D8 G7 R) ^, |, O: S
                        then -- no transport order for vehicle @- R5 q1 Y: [1 X9 x! U7 A0 K
                                @.Destination :=
. H& a* g( x2 N  S8 I/ u                                rgManager.nearestFreeStation(@,track.~);
/ F; c. U* Q* n. E! M                                newDirection(@);   
5 c& k1 E% K: ?- V4 _2 k8 c' x4 L                                if @.Destination /= void then0 c- x% P, B4 ^4 C- P$ _% Y8 f
                                        @.Destination.NumReservation :=$ d0 }6 D2 n0 m8 V1 i! }( t2 `
                                        @.Destination.NumReservation + 1;, x6 i- Y% a. Y
                                end;
7 u0 m: r$ T  h                                @.CurrIcon := "drivingHome";
( E' F3 a+ L! d* m) s( \9 T                                @.DrivingHome := true;# d( i1 S( j7 S; @3 Y2 T& l
                        end;
; C* R: P) X$ ?                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
/ G7 \, }& {: D                        part := @.transpOrder;
4 C3 L0 }( V  I, G# u1 d/ L) V                        part.move(@);-- load part  Q, w3 D1 w' Q: U4 q0 L2 P) i
                        @.CurrIcon := "load";
" G* r5 r! |* B                        GlobalDistObj := part.globDestination;
1 n3 F9 h% Z% o% u& U. L: }                        assignLObj := rgmanager.rgAssignL;; ^" ]% Z) n7 [& q7 Q
                        row := assignLObj.getRowNo(GlobalDistObj);/ b% P. X, E! q: z. w
                        if Row = -1 then -- since 708 N  Z% |7 E7 F: L: h- |6 }
                                if lan=1 then( j( @2 @3 u3 _2 C
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
1 l! P4 y$ i8 v% W                                                to_str("in der Andockstation: \"",?.~.name,"\""));
: ?8 O! g: U. c3 x& N                                else
# f, P$ z* K$ \, O# k                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),  c5 o6 m8 g( ^0 H/ Q5 Q
                                                to_str("in docking station: \"",?.~.name,"\""));                               
3 i! T6 {' J. w% n5 `! ]# N                                end;
' E0 R2 g5 C0 ]7 \2 b- N) B0 k                        else
* n+ _. e+ p/ K) U  F$ P                                @.Destination := assignLObj[1,row];
0 b) F5 U' c4 M                        end;                       
/ v+ n1 I" P6 }                        newDirection(@);& r; ]: |& w. |9 d/ k
                        @.HasOrder := true;
3 H0 h) Y# F) w/ m  e& {                end;# U5 s* S3 l8 ?
        end;, n7 t5 s9 K  \: o4 b
end;        -- of the method) G' W) a$ A  X7 C( v
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
8 a2 a- i$ ?  J& w1 L  U* I  S, @$ {/ ?; t8 I/ J! c
这是AGV_putin中arrive的method。
$ j: j/ J' U: v6 h2 X, I. T5 l/ u- w. A# R  c5 k
当到达物料速度越高时,这个报警更多,
  \; ~' n" j% o4 M9 \& }' A可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。, Y& O' N! f) r
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?4 K: R! C! ]1 v" {

9 d3 C& V; B2 A' W' v另外一个小建议,就是move,所有的move都可以这样4 c& X: y$ A2 f# [- \
if not move() then debug end
# x) ]" L9 F& [0 y. G这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
+ B! a# `+ P; S# l- E) Eplant simulation中的free libraries有AGV模板,
% M' ^* ^' P# f: b% t9 x里面也有案例。$ e; {- j  n! d! {: x3 [1 \
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
4 O' A8 e4 [, m( S; V; L# a5 d- d) j2 M/ _
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
; C, z0 ^9 j% R/ `7 i8 s5 E
. {, `, ^# R$ b8 C5 K3 |那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08   {+ W/ q2 q0 O) c3 ]  I4 {
这是AGV_putin中arrive的method。
, p4 g( z$ x  o; M
  ]2 q5 N: x0 R, G当到达物料速度越高时,这个报警更多,

1 O  [- ^/ r4 N$ w另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-15 17:05 , Processed in 0.019706 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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