设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10004|回复: 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'0 T  x0 G4 ~& n# D9 B- j7 _" d. _
*/& E# K7 N$ E' D6 b) f
is
  w# }7 e6 q. n        part, GlobalDistObj, assignLObj:object;row,Lan:integer;/ ^2 L9 d  U! g$ n7 r1 o
do
' E! t( {9 b3 W        Lan := rootfolder.Internal.Tools.AOLlanguage;
1 v9 ^# I/ b7 ^/ O: j3 ~        if current = @.Destination -- else return
& G* u+ j8 C! W2 q: ?4 g        then
, P# a1 a  ]4 H, n8 X0 N                @.Destination := void;5 K' Q' c  p+ ?0 u% f! o
                if @.occupied then; R: p* ~# o( r& k& P9 i7 G
                        part := @.cont;! `  D% U& P( j- @% Y  v! `
                        @.transpOrder := void;- c& C; x& c8 c9 X; [
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
; B) w# T+ a& F! P6 d2 w                                @,root.eventcontroller.simTime);
  L: C' Y9 U$ }- V                        @.HasOrder := false;3 M; G" {/ S1 U6 V8 O
                        @.DrivingHome := true;
( }& G0 L& q4 ^3 J5 v                        rgManager.tryToStartTransOrder;$ k, d3 \- h4 U/ \# P
                        if @.Destination = void/ n, V& _6 b0 D& \& d$ I
                        then -- no transport order for vehicle @
) i2 T! y! |& M( u; _6 s0 s- N! R                                @.Destination :=9 K3 _3 ?! u# k5 ]2 a
                                rgManager.nearestFreeStation(@,track.~);
) |5 y- E/ V) z9 B0 ]                                newDirection(@);   
: o: W* w; ?4 G! x3 [                                if @.Destination /= void then
" V0 ]  W% h, ^; t, F. {& d                                        @.Destination.NumReservation :=
  ^# F2 M. Q  A. D                                        @.Destination.NumReservation + 1;
$ ?, c* [: L3 b. a# L                                end;) F5 x$ j/ a9 K. }+ X
                                @.CurrIcon := "drivingHome";
: S# @; {1 K4 @( F                                @.DrivingHome := true;
* k' |1 S$ y; n/ o                        end;
, C# E8 _" \( U                else -- the vehicle @ is empty, both vehicle and part are in the same dock station7 A% ?( I4 ]. ]* m9 A7 G
                        part := @.transpOrder;
# s, B# H- D% ~/ f( X& M                        part.move(@);-- load part. N1 w- l& m) j+ W6 s
                        @.CurrIcon := "load";
! J& R6 i6 C* D5 b                        GlobalDistObj := part.globDestination;& O1 ~* s* E' K  Y( u7 D! {
                        assignLObj := rgmanager.rgAssignL;
6 @: F8 y1 v0 r9 N# y1 u                        row := assignLObj.getRowNo(GlobalDistObj);& v6 v6 P  j" H& d  L; F" K4 q4 Q- }
                        if Row = -1 then -- since 70
% M. i( E0 A$ F                                if lan=1 then
7 m( ~; ]6 ~! F  w/ P8 E6 ?                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
8 J# W( ]* y8 f- s) e                                                to_str("in der Andockstation: \"",?.~.name,"\""));1 u4 w3 P; x) |
                                else
' d2 O& l3 g$ x* H3 V% F2 ?6 j                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),8 P% t' u& }+ l  [3 e+ N$ Z1 L
                                                to_str("in docking station: \"",?.~.name,"\""));                                ! `; B8 R2 d" x& T* H% `* f! |
                                end;
: S# o0 G8 P8 f& p2 p                        else
5 z) p9 K6 o1 o6 Q                                @.Destination := assignLObj[1,row];
% v* J3 W3 e6 T                        end;                       
+ m/ A* a' S. |7 Z$ {  V! ^                        newDirection(@);6 H2 ~7 b9 s' n/ b3 O  p, ^
                        @.HasOrder := true;
# t- @; n3 K; j$ i                end;
# a2 [) F1 y* k  k        end;& E( d5 h/ v# Y- A* `8 s
end;        -- of the method9 E/ \1 ~: b! ~8 \2 P  F+ F4 m
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 2 [1 \; g3 w- L# B
- e3 ]8 Z8 \  g1 O4 {
这是AGV_putin中arrive的method。
; Q/ n% O; K  X
& Y5 c# T8 q9 h& s- ~1 Q/ e当到达物料速度越高时,这个报警更多,
7 }" ^5 S  K% |- X/ p" c可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。8 Y& d! F9 |7 X% t& Z( C$ W  j
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
- m& p6 T6 ~* Y* @
  I: `' T0 w+ y0 `" y另外一个小建议,就是move,所有的move都可以这样& z% S% W" U2 i" _7 G- W5 j8 \' l
if not move() then debug end* g' M" s3 }# o
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。1 H* f9 G9 n! g2 f) Q* ]
plant simulation中的free libraries有AGV模板,
  U2 K) \5 `9 S3 w里面也有案例。" _( \4 v) a8 O  e& E
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
/ {  V6 Z( }0 n* ~  a- }3 U/ V8 U0 _+ }8 [, k: ?4 d* V" O0 l) u
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" h2 {& S( P" ~& U8 I9 A' I- x$ ?8 h3 p. s. }3 y
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
: h& j+ Z% x* v! s这是AGV_putin中arrive的method。
- H/ z- m6 o2 ?% o, A- Y8 g8 n+ x' i% c( {& `9 B; U- M
当到达物料速度越高时,这个报警更多,
4 f- v: y) ^# ]  [9 H2 N9 N
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-6 21:40 , Processed in 0.017492 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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