设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5717|回复: 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'
& s8 h9 w+ U9 I4 k4 }; f*/" p6 Y5 R0 a  v6 i
is
% T) o# f. }+ U3 L" |2 s, L! |        part, GlobalDistObj, assignLObj:object;row,Lan:integer;3 L/ a4 s2 C9 U- r6 g
do4 M- B: Y) @! V* m( v
        Lan := rootfolder.Internal.Tools.AOLlanguage;
) J% i) e. \; p) i        if current = @.Destination -- else return
( g, I$ S/ {9 H) X# m+ B        then
7 [5 x# e5 M. H7 j$ r7 ^                @.Destination := void;* g  a8 L# |% p( F- \& {
                if @.occupied then
. O  w  c9 Z4 y9 s0 l6 C2 `                        part := @.cont;
, w' Q% n/ s4 N# v3 F- K                        @.transpOrder := void;
" `: l! R) v; Z0 \7 H* k                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
/ a$ X1 T; M7 e                                @,root.eventcontroller.simTime);' L) t. I( y4 H3 S! ~
                        @.HasOrder := false;
, f9 e$ {8 W3 q0 S2 `                        @.DrivingHome := true;
5 W( e3 y& Z8 K9 V3 Y                        rgManager.tryToStartTransOrder;
" ^6 {2 R: t. m4 g7 k                        if @.Destination = void
6 A# C  z/ N) }: M. Y                        then -- no transport order for vehicle @' \  f& G0 o. w, _
                                @.Destination :=$ v5 H% v6 @4 a- H- P: q
                                rgManager.nearestFreeStation(@,track.~);! d6 J, r. x: K* f% D- v: i
                                newDirection(@);   3 y2 f7 k& x! m- T
                                if @.Destination /= void then
  O1 M# Q9 [; D1 r; r7 i                                        @.Destination.NumReservation :=
  b/ p+ ?3 F9 j' H# O$ q6 V                                        @.Destination.NumReservation + 1;
# F1 ^, q  Y  i5 x4 d                                end;4 i& l9 g+ o/ B, D
                                @.CurrIcon := "drivingHome";5 H6 A% g' I, Q+ j
                                @.DrivingHome := true;% P- q3 O% X4 [4 u; Q( o/ `
                        end;3 I/ z3 o1 Q8 u7 H% t! m  S; `# p
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
4 u6 p  F6 L# B3 ?                        part := @.transpOrder;) k. h0 g3 H0 u& S4 {( e" T( J
                        part.move(@);-- load part
# @0 d" l+ o; Z4 P% s) x  q                        @.CurrIcon := "load";
0 l. u: b! [$ y6 s: R3 z: r4 x                        GlobalDistObj := part.globDestination;5 L$ D! [" J2 v% B+ j- ~# t" D
                        assignLObj := rgmanager.rgAssignL;
% S2 P; [: F" ^9 {5 ?/ b                        row := assignLObj.getRowNo(GlobalDistObj);
5 g* U# z/ f9 X8 D; I3 G1 F, a4 p                        if Row = -1 then -- since 708 X8 S2 p: d2 N( ?& ^0 O$ m
                                if lan=1 then
9 t  j( c5 {2 m' N  b4 ~                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
: \  A+ H% w6 X: Z# [: f7 S+ L& |) c                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( o& Q% D; W# r2 F                                else8 T% s; h3 A3 _6 v" X7 g
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),6 d7 @) P  B) W4 n: v2 W: ^
                                                to_str("in docking station: \"",?.~.name,"\""));                               
' ?& E& H& ^, L4 n0 a2 J! |2 N" T                                end;
" ^& M) }( s- ~& w( n                        else
9 I, K0 r$ @& a+ `: t                                @.Destination := assignLObj[1,row];" o6 T' t3 ?3 D1 s& H  y) G
                        end;                       
: A- E' y3 P* U                        newDirection(@);4 Q7 h; ~4 m* Q1 J
                        @.HasOrder := true;
, x$ K2 M5 o2 a" d$ G! ?0 I! Z                end;
$ H, B! Z% F4 M+ S        end;1 l% s! `% k+ D6 n/ ?  y4 \
end;        -- of the method3 I; F4 C: C( T( O# K* F; M; s9 g
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 / _2 e8 \3 R7 Y0 B3 I: ~
' {+ F/ j) f! g- O
这是AGV_putin中arrive的method。8 `6 H0 Z3 ^: P( V7 c9 _/ j
9 _4 j: f/ X# w& {* V3 N" Z
当到达物料速度越高时,这个报警更多,2 Z% B5 V, P+ {, O: R
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。$ [- F% U* Z5 i  K
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?; Y( _& J/ g; ^7 x
# e! }2 h$ u8 Y' H! Y
另外一个小建议,就是move,所有的move都可以这样
1 U0 q0 p  d6 C2 oif not move() then debug end3 i/ a% W. ?, ^  z" Y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。4 @+ ?3 ]% [7 D
plant simulation中的free libraries有AGV模板,. Q$ {% `( i+ Z% A  }/ e
里面也有案例。2 |% v( Q8 Q1 C& }6 z
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。6 O1 P0 q* j+ X* ~  J$ b( @0 X9 u8 k
; m1 B1 o0 I. K
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! u5 X# N3 T/ c
6 ]. }7 t& z" n8 `& I+ y5 u2 P% `
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ' z* ?$ ]: m7 Y4 n5 D
这是AGV_putin中arrive的method。: ]) b3 [& H" ^: d5 s1 n

* z$ n9 x* L/ @% u6 h当到达物料速度越高时,这个报警更多,

+ p* T0 H0 H- r: o0 g另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-15 16:11 , Processed in 0.021235 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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