设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9520|回复: 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* u- ?$ U/ r# v6 [: x*/
. l+ t' I/ ~( ]0 eis* W5 s2 x9 K0 x0 l( j
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;/ N4 K# Q9 z' m& T- `9 X. x. E0 t
do
! ]/ y9 m+ Z' v* S3 L: e" Q" D        Lan := rootfolder.Internal.Tools.AOLlanguage;3 G- |+ k" R; b' ~; W8 L5 c
        if current = @.Destination -- else return1 B: f# E9 ~% Z& Z  j! X
        then
: w, W) }  c, q                @.Destination := void;
% G8 w3 p. B: R. J! o+ }, b                if @.occupied then$ i; m8 V! w8 f. _
                        part := @.cont;
# d6 l, h- _0 g& r' m. Q                        @.transpOrder := void;' S' t" h2 ]: {  E/ v* U
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
: T2 O) \# B" c1 ~                                @,root.eventcontroller.simTime);) z# k4 B3 C, C2 h1 u; B6 @
                        @.HasOrder := false;
! u4 ?9 y. R) q' }# G# T                        @.DrivingHome := true;0 G: \( \7 t9 D# a
                        rgManager.tryToStartTransOrder;
4 N( Z0 H' Y/ l- x) e                        if @.Destination = void# B( c9 l! s2 s# O  D
                        then -- no transport order for vehicle @; Y4 u# v8 e! [& T
                                @.Destination :=- _4 _) a" E7 n0 D
                                rgManager.nearestFreeStation(@,track.~);
0 A! s/ H3 K+ c7 _' m& c) K                                newDirection(@);   
; v- W# V; \) l  w                                if @.Destination /= void then
( Q1 q# ^# q4 |+ V                                        @.Destination.NumReservation :=7 {+ {; D8 e  T3 L+ w$ l
                                        @.Destination.NumReservation + 1;
/ ]( Q* J' n7 I+ i( S) N                                end;6 V; t# a9 j$ p! U2 {- O" ]: q4 ]
                                @.CurrIcon := "drivingHome";
) Q+ N5 ]( _# L# j                                @.DrivingHome := true;
' M/ L6 ~5 F; W( T; r                        end;
5 {& V/ a" W7 u9 o, ?' A3 J                else -- the vehicle @ is empty, both vehicle and part are in the same dock station9 d7 p9 v  M& E8 U* g4 b( @! b; Q
                        part := @.transpOrder;% `: Z; H" ?3 q  m, A9 ?0 l
                        part.move(@);-- load part
5 x5 H; j6 A# z0 F1 C                        @.CurrIcon := "load";
" |$ W( D; y# }                        GlobalDistObj := part.globDestination;" a: d: q; u: b' K
                        assignLObj := rgmanager.rgAssignL;8 S8 x% P2 C9 M; |+ K, }3 Y
                        row := assignLObj.getRowNo(GlobalDistObj);
  h" \+ }" n" y2 N                        if Row = -1 then -- since 70: @0 P/ q/ R8 m6 W+ }& X
                                if lan=1 then
0 a# K7 o( v3 E, H5 |8 H+ G                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
- p( _  G! ]3 k, C                                                to_str("in der Andockstation: \"",?.~.name,"\""));8 K0 I9 G0 W: K. t
                                else
( N0 ^5 ]4 P9 C9 y2 A( l  r7 Y                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
" t8 r: ~- ?# @9 ?& ]                                                to_str("in docking station: \"",?.~.name,"\""));                               
/ e! v  S" e$ j2 r" @: B' ~                                end;
* S% ]2 q$ ~6 W# R5 I                        else
( w% Y" k( {4 z; S. a: r, f/ ~3 l. a                                @.Destination := assignLObj[1,row];
* x( a7 U7 x; u9 Q1 n                        end;                        + X+ J/ A3 W1 T! _! _3 b! M
                        newDirection(@);: \! _3 s) r7 y" ~
                        @.HasOrder := true;
. n3 C- V& q! O2 Y9 {                end;( B* O! Y( k4 X: a
        end;& R. d5 C! H- b$ U" }
end;        -- of the method. L; k8 ^/ _% ~% }
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 r0 ^/ Y  `/ W5 f" W
; V6 N  l; |" s- b  c' m- L
这是AGV_putin中arrive的method。/ ]! \3 D5 |  }
, v+ H6 G* |. g) C5 v  c8 p
当到达物料速度越高时,这个报警更多,
9 w- Q8 `2 m0 ~4 ]9 D可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
& d! W6 j' B6 }% m  j" u程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?  w+ r  Y: Q. d3 L! @) X
; Y. r: b' S0 `; [6 ]
另外一个小建议,就是move,所有的move都可以这样
! b5 j6 C# O: _/ n9 y; _1 `if not move() then debug end, e1 j9 x4 G9 R( r% ?+ m  a9 }
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。' ]* I: f& w/ ]' l. L! H
plant simulation中的free libraries有AGV模板,
3 f, v5 M2 R; \! q& t2 H, L/ Y- ]里面也有案例。3 ~" F" d* ~7 s2 w# i
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。4 W, [% k/ i+ F! g  `8 u

2 k# {2 }" S% ^我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
% {9 O2 V0 p# t2 Z$ H" o0 K2 h( o# l+ t7 T0 Z
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 & b: q- x) [( v9 ]
这是AGV_putin中arrive的method。) D0 t+ r5 u0 {7 c2 A2 D" q
# Z  W; R$ [5 @/ b1 X
当到达物料速度越高时,这个报警更多,

4 m! \3 [1 F! V  K另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-5 20:56 , Processed in 1.976338 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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