设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8165|回复: 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'8 D6 {4 @' e% r: t$ O5 L# B
*/
& A1 z; \% ?8 U/ ^' K/ U9 Y1 Tis
3 i, B# l0 J! E- @        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
( r9 P$ t0 J  d6 U6 |* odo9 G: z3 Q% }. a+ _
        Lan := rootfolder.Internal.Tools.AOLlanguage;) _  {* O* l- j1 h) _
        if current = @.Destination -- else return
4 x$ q1 G. I! K        then. ^) _% `0 I' M
                @.Destination := void;
8 x: F* e5 M: e, |' w+ W; F: y/ H                if @.occupied then2 L/ {9 e/ Q0 i2 |
                        part := @.cont;2 l( Y, w2 R8 S/ o
                        @.transpOrder := void;
$ S( c8 ]* r' D# R$ u                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
0 S; G1 \1 S  G' E                                @,root.eventcontroller.simTime);
, U6 V3 u4 D1 e  L3 a: y                        @.HasOrder := false;) [& t, a$ a5 p
                        @.DrivingHome := true;
' T% I+ _5 Q( _& T                        rgManager.tryToStartTransOrder;
7 K( H1 k# P3 e$ V                        if @.Destination = void! g: H4 g' f/ @2 F
                        then -- no transport order for vehicle @0 I, Z5 y, Q* x, A$ L1 w, z
                                @.Destination :=" H  S% R/ F3 G1 s
                                rgManager.nearestFreeStation(@,track.~);! i5 y: h: v7 {* m
                                newDirection(@);   
+ e; l: T# M/ Q. A. N                                if @.Destination /= void then
! `* t2 l- G9 a                                        @.Destination.NumReservation :=$ v$ [) {( U! M6 L3 ]5 |. D
                                        @.Destination.NumReservation + 1;. I, ^0 J. m% O1 R$ W9 x% o% P
                                end;5 U; f3 Q6 k% Q- E5 x. Z
                                @.CurrIcon := "drivingHome";
8 p5 Y% i) w2 p! Z3 V* _                                @.DrivingHome := true;4 l6 ]( y8 x( T# Y' y' ]* g8 a
                        end;1 Q: p9 B$ z1 Q; m
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
+ h2 O6 I& j4 P2 b5 W                        part := @.transpOrder;
, a5 a" B  e1 t9 U) s                        part.move(@);-- load part
4 b% y6 R% k( ]5 T                        @.CurrIcon := "load";
1 l% r6 U( r/ p& Z7 W                        GlobalDistObj := part.globDestination;) }9 r( W" {* s8 x+ F8 G
                        assignLObj := rgmanager.rgAssignL;
7 X  p" P1 J2 `; _) {. U                        row := assignLObj.getRowNo(GlobalDistObj);
3 V2 ~+ X6 v: }                        if Row = -1 then -- since 70, e& c9 d8 r- ?1 h" X. {, z
                                if lan=1 then; r& |5 Z  ~3 ]9 G; ~# B
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
/ j% J- O( ?; r6 o- ~4 J; ~0 J                                                to_str("in der Andockstation: \"",?.~.name,"\""));
' S( j) h& b0 z1 V/ }- W8 {! i                                else
% F2 K3 n; b' D0 q                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
$ ^( P/ G# ]# v1 }2 L) E( P                                                to_str("in docking station: \"",?.~.name,"\""));                                ) M# s6 f/ d. p! e+ G% Z- E9 X$ O8 D
                                end;
" x! X6 x$ L+ C" L                        else( b7 ?! v' ]1 N
                                @.Destination := assignLObj[1,row];
5 U' q) n# Q3 g3 }# P% \                        end;                        % Y- v# W' P; Q3 k# s5 {4 K# e
                        newDirection(@);& b( K% A% n% j  p3 W: o
                        @.HasOrder := true;; q, F! r+ {6 x7 e
                end;
# r  ?3 u1 b' s. Z1 x* @        end;# g- e+ e( k5 X6 Y4 _$ l
end;        -- of the method" U# R9 n" C( m$ B7 a* t) g* L
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 # ^2 {. s' h9 o- ?. k$ Z$ @( A$ i8 U
1 f! D" f, L9 O
这是AGV_putin中arrive的method。
0 g0 ?8 u& L/ F) ^5 y: m# m, L0 x9 {! j7 V
当到达物料速度越高时,这个报警更多,
9 S/ G5 z6 Z6 c2 |8 M: m, J9 Y1 L0 e可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
8 T4 Z9 d' `, D- D0 o程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 S- z0 v0 P: m7 S% W- }) o* v, L; d% c2 N% Y( C& a' G' V
另外一个小建议,就是move,所有的move都可以这样
8 i( L) l% T" u3 Dif not move() then debug end" a. T/ s& R% B6 i  a+ J% G
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
6 b) Z! R: p& z5 Nplant simulation中的free libraries有AGV模板,
2 z2 R( P+ t3 W4 j里面也有案例。8 G* l% y! h) q+ {2 N9 L
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。; Y0 V9 O- N  I7 c2 Z0 f% A
+ }1 G: X' V/ w, g$ A
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 , G7 i6 U/ |- y1 w& M4 J

, j  e* T5 R5 d那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 7 f* T4 {" E6 e8 W
这是AGV_putin中arrive的method。
3 V( G3 _! G5 K4 I' K" g/ ~) ], V' x, [) S& {( v. v- R2 Q
当到达物料速度越高时,这个报警更多,

/ A- {6 j4 ]1 `* }8 [- {  G2 O另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-18 12:35 , Processed in 0.020042 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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