设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5944|回复: 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 a. B& H" h7 X
*/- m$ m3 ~7 B3 [! K' R
is9 P+ O( v. P7 m0 c! s
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;! P) n4 e. h; A; q5 b0 i
do
( Z6 _# S# T! n1 h6 m        Lan := rootfolder.Internal.Tools.AOLlanguage;% z- ?; i$ a2 i7 s2 Y5 @8 x
        if current = @.Destination -- else return
5 q: a# _7 F' `! o; e* V: x7 {; O        then
+ a4 f$ h/ Y0 s/ s# B- K                @.Destination := void;
2 s* p) t. j( M# U                if @.occupied then
. A, r$ D0 \3 i" a  @! V                        part := @.cont;
! }. b! W. t; M- o                        @.transpOrder := void;
# J- Z- r) A' w- O: k                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
; b" V) Y& d" @4 `                                @,root.eventcontroller.simTime);8 t9 F9 ^7 C4 \+ K% }
                        @.HasOrder := false;
, g: D2 g6 E6 O9 B- a1 z' o                        @.DrivingHome := true;- C  z5 j! X3 }2 u5 p
                        rgManager.tryToStartTransOrder;
) L0 A. R* X! v! f  y8 F$ k                        if @.Destination = void
5 F/ K& E8 n, M, a8 t: H& U                        then -- no transport order for vehicle @3 A+ _" o$ H5 L* |6 \; G3 e
                                @.Destination :=6 k* q2 I  [& D( C9 j& h7 ~8 y
                                rgManager.nearestFreeStation(@,track.~);6 H8 P5 p7 ?% G& B" ]# t
                                newDirection(@);   
' ?) m) k7 {& J; d7 F: e                                if @.Destination /= void then
8 z! w& m6 K& x) n                                        @.Destination.NumReservation :=/ _, Y8 E' @" C3 L
                                        @.Destination.NumReservation + 1;9 g  ~$ M( t2 L  o' J5 I9 e% n; N7 b
                                end;) K$ Q0 k# u, |: h+ d, g
                                @.CurrIcon := "drivingHome";
0 |$ i# h4 U' f8 G" C+ i+ W                                @.DrivingHome := true;
% h% X4 B# {$ C: e1 b  }5 v! j0 z                        end;5 [. W) Q6 j' {
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
& D5 z4 ]# W: S2 u# |! K; ~  ^2 \                        part := @.transpOrder;  q( z9 h; t9 s* |! s: g0 R, _, }
                        part.move(@);-- load part
% r; {" m9 p# z/ V                        @.CurrIcon := "load";& D/ r+ ?& e8 G9 Z7 }. R
                        GlobalDistObj := part.globDestination;9 {. c3 e( ^: h  J
                        assignLObj := rgmanager.rgAssignL;
! d5 a5 E9 i# H* ^' f- Z2 K                        row := assignLObj.getRowNo(GlobalDistObj);
& Q( I& m1 E$ T6 P                        if Row = -1 then -- since 70+ ~: W" i0 m; J/ @) ], ~' J' f
                                if lan=1 then, t0 V$ V# x1 Z
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
3 [: z) I  `) g1 ?5 e9 V2 S" }                                                to_str("in der Andockstation: \"",?.~.name,"\""));
  g. r/ A+ Z+ B& ^                                else
5 z$ j* E4 R6 o7 ~. o# N                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
/ q. Q4 d# L% r/ J' |) X                                                to_str("in docking station: \"",?.~.name,"\""));                               
4 h% W( B9 }4 D' F                                end;. w1 ?$ J' L% _" K7 |9 l. b
                        else
% m; |# O5 `# {1 a! u                                @.Destination := assignLObj[1,row];
9 u+ i, ?* W0 b0 C) Y0 j                        end;                        ; C5 c( A6 l( g7 g2 e% A- x
                        newDirection(@);  |1 U% I: }/ o2 l, Y! _/ {) k- T
                        @.HasOrder := true;6 Z3 L8 q4 f( i/ `! `
                end;
2 @( h+ r& ^5 s2 H1 j        end;1 ?! m0 ^: J0 h/ }( ?
end;        -- of the method5 P' s+ _# c2 v& ^
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 B) Q! @( f7 k% y+ p- p6 z

" `: J  U! A7 O: n: g  S这是AGV_putin中arrive的method。( K/ L( q. H0 ^$ `% P( M, G: V

& z  c2 `! U7 j1 P2 q2 ~9 F1 y当到达物料速度越高时,这个报警更多,
* S: f* q  W* ]% [1 P/ B可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
, d5 E- W: x( N$ B6 a程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?  W: x: Z9 |$ B

/ d* g; y4 m1 ^3 [另外一个小建议,就是move,所有的move都可以这样
5 y. v. n  x, Jif not move() then debug end
  p, L; f9 b4 J1 U1 |6 @这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
* U% D4 J, E. E8 b6 k2 l5 O! Mplant simulation中的free libraries有AGV模板,
+ z; z6 M  p- N里面也有案例。+ p1 J2 r- a' R1 t' ?; M
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! ~& }  V9 F- R* C6 Y
' e8 o; S  Q+ ?  w+ K/ O/ V我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
6 B) z6 w9 x, y2 W0 f4 m  P  K8 G% `8 J6 c
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 . Y& }" K- T' e0 D# f
这是AGV_putin中arrive的method。3 a9 l' ?9 W; P3 j8 Y, x3 l
3 I: X5 N3 Y1 e0 i  j# v
当到达物料速度越高时,这个报警更多,

' E7 b$ _! V& }9 ?! X/ O! v另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-5 09:57 , Processed in 0.027962 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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