设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9744|回复: 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'
9 ~! f( I2 E* E9 f6 n8 q, a9 ?. u( I; v/ ]*/3 G" w: `2 P$ W6 q8 {
is! U  m6 t/ B, L
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;3 w0 y1 a6 ]& x: E: v
do( y4 Q( l: j% X+ ]: q
        Lan := rootfolder.Internal.Tools.AOLlanguage;
- E1 ^- B- z, f- g% x, z' I        if current = @.Destination -- else return0 f+ p0 N' M9 J) d+ y
        then/ G/ \4 }0 J* ~/ J0 h7 ?9 j
                @.Destination := void;
! N8 L& _. f; Q* N                if @.occupied then
% {1 U5 J! `) u                        part := @.cont;
% _  m' P  _/ c/ b                        @.transpOrder := void;8 d2 B9 u7 c$ F, q$ d* Z
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,, q6 O  N4 A  B& ?2 U
                                @,root.eventcontroller.simTime);
1 v) h% ~9 `4 e: {1 g  [! U# R% y                        @.HasOrder := false;
& j$ r( o" F8 i  V( a+ U                        @.DrivingHome := true;8 ~3 H0 D( j$ A. o
                        rgManager.tryToStartTransOrder;  m- }, J: U8 h2 ?
                        if @.Destination = void
& I* p" n$ H, {+ v0 I3 O0 R) ?# B  a4 G                        then -- no transport order for vehicle @! h) m; F7 j* H0 t8 ^
                                @.Destination :=4 X+ ]* o# V8 U) S
                                rgManager.nearestFreeStation(@,track.~);( m* Y6 v6 w2 F! h( u
                                newDirection(@);   4 r# \* y* J/ |' a# y: Q8 j
                                if @.Destination /= void then, r* w+ q0 q8 U3 h% H$ E
                                        @.Destination.NumReservation :=. `& o6 Y) R; l- i- B  w) A& u
                                        @.Destination.NumReservation + 1;: w1 M8 Y2 O# C# }+ z
                                end;1 @0 G& V: }( [7 q- V% y5 @
                                @.CurrIcon := "drivingHome";
4 g) l6 i5 A2 V$ C  t                                @.DrivingHome := true;
. O0 h( p# u( W- V) ^* c' F                        end;' X3 F: _! z/ ?2 e
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
, {( J& B- A5 n9 B; W% M1 S: m                        part := @.transpOrder;& f  K. j+ d6 r- m% ]7 Z
                        part.move(@);-- load part
: f* N% D- u8 t" ^1 D/ d                        @.CurrIcon := "load";( e. A/ m& d0 c) A6 A
                        GlobalDistObj := part.globDestination;6 p! q& i+ S9 b8 ^4 }" d
                        assignLObj := rgmanager.rgAssignL;$ _; Z6 @# }$ [' v7 \% B9 C
                        row := assignLObj.getRowNo(GlobalDistObj);
' g+ {  O' F/ v# V6 n- c6 f                        if Row = -1 then -- since 70- j5 Y: Z: O+ `0 G
                                if lan=1 then
$ k' d: L3 T% k3 I) [: m                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
, T2 ~" |. o* H                                                to_str("in der Andockstation: \"",?.~.name,"\""));3 M' @- C, @' ?) n( k
                                else; E+ ]! c+ b5 t) u
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),! Z. q9 N, c! e: j: S* S
                                                to_str("in docking station: \"",?.~.name,"\""));                               
+ p; ?5 Q4 P* b' b3 j* ?; S+ n" e                                end;
) Y; i. V- |+ F8 a$ M. w% t* \" C                        else0 r" p5 H4 J8 O) I9 ~3 _, T
                                @.Destination := assignLObj[1,row];6 m3 w' K6 `0 d$ L6 N: J
                        end;                       
! K6 U. I4 @, L( ]                        newDirection(@);
! S" m  J. Z& b' ?9 x4 o: g/ Z                        @.HasOrder := true;
$ _+ o7 J: `; H6 t: r4 Y4 a                end;* \2 [3 P' _( s
        end;9 H: p4 w6 ]& i4 h5 b! a
end;        -- of the method
1 k8 |2 D9 d+ m# a1 n
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
( F$ z6 v  _# U. q7 K$ l+ ]
% n& m- |2 q. t1 Y& P这是AGV_putin中arrive的method。
: c) m6 e5 N+ Z2 |. T" P8 U, ~  ^+ n
当到达物料速度越高时,这个报警更多,
( E8 q# h- y8 @, g/ k6 S+ `1 M' F可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
4 J2 w; v$ I% r( V) m$ C# O程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
+ A& C# ?" H2 J* `1 v) L) P5 l! M& x
另外一个小建议,就是move,所有的move都可以这样- l4 `2 j( L7 b
if not move() then debug end; u8 R. G4 T0 K6 z, F' Y1 t# X
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。! d; M* B0 C. e$ h2 y, A
plant simulation中的free libraries有AGV模板,  m/ N2 N: C0 Q8 n/ X+ v6 l$ I* c+ K
里面也有案例。
: w: i/ {$ a8 C0 s2 P% `我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! s. c( O3 [" r3 ~! z' p, v" Q
8 }3 ?/ F9 L' D7 D2 m我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
0 [' K/ ^5 @; s7 q9 v# [
- F/ w' s6 y5 \0 G那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
% C; _% Q- z4 U这是AGV_putin中arrive的method。: w2 ]! n! `1 E3 E

# _( L- E  w1 \, Y) v/ x当到达物料速度越高时,这个报警更多,

, i. f# q, O5 @7 }$ }- h  ]另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-21 16:43 , Processed in 0.018699 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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