设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7186|回复: 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'3 Z6 G/ ^, K" s% y* Z
*/
' |1 m6 r& z5 z  i4 h* H; ~+ Pis
' D  d% J1 q2 o( [% x        part, GlobalDistObj, assignLObj:object;row,Lan:integer;$ b) e/ K& g, B2 \4 q
do* `2 C* m1 o3 V0 H( {* b
        Lan := rootfolder.Internal.Tools.AOLlanguage;, q% a5 O' V" ]) K7 I
        if current = @.Destination -- else return8 Y1 |$ x& U- R9 c$ `
        then9 }7 U( [4 k" I' H2 ^0 H+ A
                @.Destination := void;
5 }! T  V0 F; U# C                if @.occupied then4 Q6 O& l2 {- B8 M; b$ u" S# S
                        part := @.cont;& w4 g8 ?5 c# y$ @1 R; I* m( i! d
                        @.transpOrder := void;
4 J: v" a6 S# A% q; W                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,0 ~2 @3 z8 E6 y# I# X$ `4 I  l
                                @,root.eventcontroller.simTime);
; b! w: ~( ]& `                        @.HasOrder := false;) P/ }: r$ y1 p* ]" N
                        @.DrivingHome := true;4 g# w% l; q& s, g' h4 `, H
                        rgManager.tryToStartTransOrder;
4 a4 P# @% q' P& y; \* D1 s                        if @.Destination = void
+ W  p1 J- C& s$ u                        then -- no transport order for vehicle @) ^7 p6 q5 j9 m
                                @.Destination :=
1 I2 x, P' A/ h7 o" r2 V6 H                                rgManager.nearestFreeStation(@,track.~);% \( ^5 J  m3 Z; b$ j
                                newDirection(@);   
/ u7 |, O7 ^$ h                                if @.Destination /= void then
. d4 t' w- w" k9 e% Z                                        @.Destination.NumReservation :=
" V2 s. {4 p! R9 t                                        @.Destination.NumReservation + 1;: x( ?, g$ b* M
                                end;
1 |9 B9 S: o* G# M2 e+ U                                @.CurrIcon := "drivingHome";
7 W3 A1 d- Y8 E, ?9 f: E# r6 U                                @.DrivingHome := true;$ e8 K+ U& X  m
                        end;
& {& [$ P. U- {& N9 X                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
7 o+ V2 H6 w9 Z$ U$ [- I- |1 X3 c: ^                        part := @.transpOrder;0 O$ f! Z( a. c  o; v4 a
                        part.move(@);-- load part2 u4 b* z' v7 g; N
                        @.CurrIcon := "load";
" h: k0 q9 H2 C                        GlobalDistObj := part.globDestination;
, m( u* |- O# t( l! Q, E) M2 S                        assignLObj := rgmanager.rgAssignL;
1 `0 U! d( j8 F' \9 L                        row := assignLObj.getRowNo(GlobalDistObj);
) R% |. H# r( Z4 Z0 o, L; ?                        if Row = -1 then -- since 70. o; c$ b6 G8 P, Y1 t
                                if lan=1 then
& }$ j- n, J- V, J" a* G                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),7 X  n) v0 x' q+ S5 H, T1 I3 X
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
5 L+ n4 ?6 S- H( r                                else
( b) L8 K& h- w# Z6 J0 U6 h3 G                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),8 O7 p" D7 b; g0 Y
                                                to_str("in docking station: \"",?.~.name,"\""));                                - k4 i- W  D) [9 s, h% |; w
                                end;
, {8 ^; @$ p: z4 S( u                        else
9 B6 D0 `! |1 @: j                                @.Destination := assignLObj[1,row];
6 O& B, d; X0 j7 c                        end;                       
. p& b# t0 x! k9 u9 A9 ^: Y                        newDirection(@);* D+ s2 N4 b3 E) ~9 H! r8 o
                        @.HasOrder := true;
( F8 N$ w& \/ Z- }* c' \                end;
' X+ c3 I# l# o7 ]7 S/ R        end;8 Q% c0 Q. ]! p2 K; p6 S
end;        -- of the method4 L. B1 ?- O* U$ f3 n, ]+ x2 d
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 & [# E2 T+ x* z8 D6 c5 w! r+ ?

6 l  ]& n. o, \这是AGV_putin中arrive的method。; B, @' {8 r, X/ G( ?

9 {9 ]- P5 u  `当到达物料速度越高时,这个报警更多,
1 v& S$ {7 x2 E0 G4 E/ N9 l9 b% x可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
$ T  K. I; q& I$ i. D+ _程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
  V* R+ U( v% f' A' U5 W, i# i2 {7 `, v! @+ k7 A9 [+ g
另外一个小建议,就是move,所有的move都可以这样/ e0 n& m0 j# p
if not move() then debug end
+ i: z2 D1 T7 H1 m$ @. n" z/ l5 {5 ]这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。. z- T0 g) Y6 b( S, A/ O
plant simulation中的free libraries有AGV模板,% B5 t# N/ H  }, U8 X5 M" E
里面也有案例。
6 z! F  |, z, m+ q& ?' q我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
; o& K# t0 b7 J5 [0 G) Q
. {* K/ O/ o% c7 x# ^9 F  n7 @/ d2 r# o我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
' c+ B4 j& r+ t3 r& y$ y  B9 L8 a" y! ~" z# N9 m+ A' `
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 , K5 x* R9 [# h* Z& b  R8 B
这是AGV_putin中arrive的method。* v( _& ~; U1 M( [* ?0 g" H
2 v6 _2 q# e. n- r2 h( c' y" a( Q
当到达物料速度越高时,这个报警更多,
6 J4 C& {9 n8 l+ j  |
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-25 15:56 , Processed in 0.018736 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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