设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10237|回复: 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'
7 r, ?" J1 g* s*/
" j. ]; |  M1 i' q& x; {is# z8 C: v) U' B* ^
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;, K4 k( m' \0 Z' ^3 m% `( i$ H
do, ]' r# h  `5 b; V/ T
        Lan := rootfolder.Internal.Tools.AOLlanguage;
( O/ J1 {( x5 j: n; |        if current = @.Destination -- else return* Z3 W; @8 P' \9 X0 n  Z3 j  R
        then
, p9 M9 i5 {  I) q  @' v                @.Destination := void;6 {' l/ b% w1 @0 L6 ^: m9 S
                if @.occupied then
% c0 D, d0 k3 t4 M% e/ E                        part := @.cont;
, f* }) S$ T. E9 L                        @.transpOrder := void;/ s& V) R( K7 G! y& j
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
, Y" H; x$ V5 G" d9 T                                @,root.eventcontroller.simTime);. i) |3 i! b9 y9 B: t2 E. D5 F( c
                        @.HasOrder := false;+ X, U7 M. f! X( E3 d# E
                        @.DrivingHome := true;
% W; k0 B7 r: Z& j! f7 U% p! l6 k; o                        rgManager.tryToStartTransOrder;
8 p4 y7 P. o- w, e+ [, `                        if @.Destination = void& [9 f( A) r2 A0 `# N9 V
                        then -- no transport order for vehicle @, b5 S4 c" Y. P1 n
                                @.Destination :=
4 t4 c5 |( P' S( u& a                                rgManager.nearestFreeStation(@,track.~);  i# o8 j* `. a! m
                                newDirection(@);   3 J! d. b: T$ M
                                if @.Destination /= void then% G% i! g4 Q3 d3 r# W9 I
                                        @.Destination.NumReservation :=& }9 [7 m# `4 H8 ^& Y1 `. q
                                        @.Destination.NumReservation + 1;/ J( @- K6 R0 b" U6 J$ [7 D
                                end;. J9 q5 m7 G: [6 t+ M, D
                                @.CurrIcon := "drivingHome";
# h. N- s( i8 I, e% r, X                                @.DrivingHome := true;
( y1 @5 ^, i, n                        end;
$ E3 R7 L/ Y- h: O3 x( o  z9 U                else -- the vehicle @ is empty, both vehicle and part are in the same dock station& ]4 `0 K6 }, [- x1 X
                        part := @.transpOrder;
# J9 S/ \$ k" B# w                        part.move(@);-- load part
  _! M6 ^7 F+ a! y- e  L                        @.CurrIcon := "load";
6 W1 B$ J" B9 w1 e4 F. s                        GlobalDistObj := part.globDestination;
" T+ l/ w. q, |* [7 v5 d                        assignLObj := rgmanager.rgAssignL;
4 U1 z. O; V' w6 a; U                        row := assignLObj.getRowNo(GlobalDistObj);, r: y; E' ]5 f  n: d1 t
                        if Row = -1 then -- since 70; D- ^: P/ o7 }+ I; A! f. n$ e( \1 {
                                if lan=1 then
8 u0 }5 M8 C( a5 C- a; q1 b. G                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
" e- a0 I; a% O$ h4 b                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ ]5 b+ {% J) u7 A5 L! a1 ~                                else
$ H: ]' M; W9 i                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),5 F2 \6 d' Z6 M, u# B
                                                to_str("in docking station: \"",?.~.name,"\""));                               
0 W& D* Y* X& \/ H8 p                                end;2 q% n6 }. ?/ e/ g7 \
                        else
" u2 w  X# ^6 C- L! u                                @.Destination := assignLObj[1,row];. F+ v2 k7 g3 f9 C
                        end;                        9 F, o3 O: n8 X" ^; u# [5 V* H
                        newDirection(@);
: b) _- @& L! F9 S( r  p2 ?: y                        @.HasOrder := true;
: u" Z3 E' Z/ M                end;
- t% W+ G- P5 v        end;! A; {4 L  o8 t% t
end;        -- of the method
8 \4 p2 W3 \$ a# Z% a! T, h) q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ' z. Z4 X; s& w7 U

/ ~# f  Y/ ]+ b' A2 d& t这是AGV_putin中arrive的method。
" o& F& I( a2 `. |6 i- I$ y  W1 ~8 k1 I* z/ e% I( K
当到达物料速度越高时,这个报警更多,- z. w+ K% B' Q& `2 ^  ]
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。& h5 Q7 [" |( w! B1 T
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?) H& F+ K" u% j* S2 R. ?

9 A- i3 q8 u! [% Z. b另外一个小建议,就是move,所有的move都可以这样" O3 ~* H: e) Q5 Q$ A5 v. L
if not move() then debug end; F9 x8 [7 x0 h- `
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。1 M) E1 i6 p8 ^- m
plant simulation中的free libraries有AGV模板,
, P- x" d( t9 ?. a: K# K里面也有案例。
$ G5 S* i; p* D! M" l我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 h' R+ Z4 l$ G' a" h
. |# H; f  t; I- y$ a我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 . u; K/ b- v1 l, {# S

% |  a; G! B, `$ V  x那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ) ^1 H) {9 D; T* q; F2 `
这是AGV_putin中arrive的method。7 u7 E# Q- @( ^1 a! \$ f: B) w

7 ^  J5 A9 D2 J  q当到达物料速度越高时,这个报警更多,
) M* R, W# c- t3 b2 H  J( `" W; D0 B
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-21 19:03 , Processed in 0.022474 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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