设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5802|回复: 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'% v' O. X! j; x4 P
*/* B3 J& w) V! r! |! q
is9 h6 Y- g+ b; c- U
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
; r9 ^/ P" b! c6 e  x" P, `# U9 kdo2 D$ E7 I1 Q. B# D7 \' B7 y7 t
        Lan := rootfolder.Internal.Tools.AOLlanguage;2 U& d6 @, d4 v+ \+ K0 B
        if current = @.Destination -- else return
. r: C4 Q5 c' B# O. Z# o5 O2 l        then- X) t" }) d+ C, |
                @.Destination := void;
( D" J3 q7 W0 j6 G                if @.occupied then
( h: z2 T' k; y                        part := @.cont;( o5 m/ }4 p0 H# h2 p' W2 O7 ~0 n
                        @.transpOrder := void;
0 a7 m5 k/ I* R! S1 L, b                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,7 `- E2 @8 J* X  c
                                @,root.eventcontroller.simTime);
& [3 n5 }% `. f& \4 J3 H                        @.HasOrder := false;
) b5 z4 D- l9 Y2 Z8 ]. i8 Y8 p0 p                        @.DrivingHome := true;) l% P$ j% G9 b( Y8 Z
                        rgManager.tryToStartTransOrder;
% L) d( H, M- Z' N                        if @.Destination = void
( y9 b5 k1 ]; l5 [, d1 C% y                        then -- no transport order for vehicle @
. P5 u$ u+ \  K  d  N9 e                                @.Destination :=
- j# g& J) d0 q0 L! Y% B" y/ M$ {( C                                rgManager.nearestFreeStation(@,track.~);
- U6 F  s8 O$ V6 Q$ ]2 s5 U: P                                newDirection(@);   
) q. f4 o" t3 y' W) l1 ?& ^                                if @.Destination /= void then2 L& g+ z7 G9 X5 U( P
                                        @.Destination.NumReservation :=8 v; n1 w4 f% N2 Q
                                        @.Destination.NumReservation + 1;
# n6 L) _) {7 m                                end;) E- A) F  x5 @5 s1 @0 o9 V1 x
                                @.CurrIcon := "drivingHome";
% C5 d! e( L- c4 B. h- k( p9 G                                @.DrivingHome := true;/ t! h& E. O* _, g& ], u" L. e
                        end;
  O! q1 e& F' g5 P, i                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
7 s* y& Y6 O$ x# Z                        part := @.transpOrder;, c/ d; w" B& N5 f6 j
                        part.move(@);-- load part
$ A; o" H5 r0 u                        @.CurrIcon := "load";4 g: ~/ m5 X% j* |! m& O
                        GlobalDistObj := part.globDestination;
" w" K1 ]. b9 u) T. ?# s. d                        assignLObj := rgmanager.rgAssignL;9 ?7 b7 G  l; E
                        row := assignLObj.getRowNo(GlobalDistObj);
8 l( x* Z5 l; z% `8 l                        if Row = -1 then -- since 70% E* [  x4 ^, X
                                if lan=1 then" f6 [5 z! k1 N& F) p* t
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
# A7 Z* _# P2 k* U; `8 e; f& E3 i                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ @4 P0 ?3 z: W& _                                else
+ a! E2 X) C- r9 @5 P& m                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
" _" A- u! F6 `                                                to_str("in docking station: \"",?.~.name,"\""));                               
0 c" Z: p- p5 M+ m1 p) ~                                end;
7 Y; A/ ]' }4 J/ j' J8 Y                        else
# r! ~4 b4 f2 P, D6 J                                @.Destination := assignLObj[1,row];; o  I# L& p: H) U3 T1 G4 X! ^: A
                        end;                        4 m- S6 X# p- v8 ?8 _4 I
                        newDirection(@);0 j5 l  ]0 U- w5 E: L6 s
                        @.HasOrder := true;
1 J( Y* H5 d% Y: `2 ?" }                end;3 [. t! h; J2 F& V$ P
        end;8 t$ i" y) W# Z* j5 t; A' V
end;        -- of the method
0 d. F8 E; G9 ^- p+ m/ W
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 * i, `2 D/ B* T4 ]1 {

' `: I& w% l' O, d% O6 C这是AGV_putin中arrive的method。7 t6 f* r) t4 L" j1 G# |2 F

% a5 P  |% w% j( y7 `当到达物料速度越高时,这个报警更多," G. C" I5 O; P2 S" U/ ~
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% i2 ~0 o" Q1 X) P程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
8 r. B2 }, S8 \( ^
3 S. p; A: i6 L$ U6 `" J另外一个小建议,就是move,所有的move都可以这样+ g9 Z1 v+ c. b( P: p9 k7 |: o; D
if not move() then debug end' o2 v  f3 }6 f- x: L
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
; D/ @+ U! e, K* [  uplant simulation中的free libraries有AGV模板,+ E0 E) H$ Z3 V: p
里面也有案例。
- f5 b" m2 V. S* {/ K我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。' ~1 q4 e' \" q$ B3 y/ D: d
2 D8 I1 j+ L8 j0 H8 B+ T5 f
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
. P* v9 Q) V/ K6 h* A4 b! m' t' M
: b( D  T' c5 j& x) z1 V那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
& Z" N- U. \" A! c& C& J" {5 V% x这是AGV_putin中arrive的method。
) _# _; a. r8 X0 [1 i  a; B, |& F% m4 a9 i
  w; g. S9 n! o+ ]2 N当到达物料速度越高时,这个报警更多,

+ T6 a  z5 s, L& A另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-21 23:45 , Processed in 0.016848 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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