设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9557|回复: 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 f' |/ {+ l# H$ K% j- G1 f2 C*/
* m5 t- D, a' Q2 y) _# A6 T- xis
3 d+ r$ O3 Y' ~( I& z. L5 j        part, GlobalDistObj, assignLObj:object;row,Lan:integer;; }: s5 k0 i- C" M, d/ ~+ y
do# S5 |8 |9 h0 h. q* F
        Lan := rootfolder.Internal.Tools.AOLlanguage;
0 Q  T. K# g: J+ b        if current = @.Destination -- else return# ?" c3 z4 g( n8 m& H
        then& M! q0 F. h, p  X( y
                @.Destination := void;  p3 k  z9 _. l0 }
                if @.occupied then' \! y' n$ N- V1 z
                        part := @.cont;0 X- N( e; h* G3 z5 h
                        @.transpOrder := void;' S1 E2 \, \9 S- H6 f
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
. p; w2 S' J7 O7 Z                                @,root.eventcontroller.simTime);. K9 f1 N/ j7 x
                        @.HasOrder := false;
+ J& U% Q" S7 r0 q3 ]& [/ N                        @.DrivingHome := true;) w5 Z& \+ y) m
                        rgManager.tryToStartTransOrder;! a8 t2 E$ y! @9 a9 r0 z4 F, s
                        if @.Destination = void
; a- E) P6 {, K& N% o& U# K; h                        then -- no transport order for vehicle @2 y" o0 z) E4 N  t6 |6 Z$ `1 n0 V
                                @.Destination :=/ O: P6 X* j' ]! M
                                rgManager.nearestFreeStation(@,track.~);
2 x/ u- ~* c' Y! X* }, s                                newDirection(@);   ( b  h/ n; y' j1 j5 R/ Z3 h
                                if @.Destination /= void then
7 j1 H3 m5 S7 {+ j! ?6 f0 a                                        @.Destination.NumReservation :=5 w1 _5 `, P9 k+ o5 d' p
                                        @.Destination.NumReservation + 1;
7 Z6 g" ^! u, U                                end;
- \+ t- ^" f$ V; h- x                                @.CurrIcon := "drivingHome";# h+ ^! o' I4 J
                                @.DrivingHome := true;
; j( h  X5 L5 d* j; p: S                        end;
5 T. S1 M! \1 c4 r6 a) p                else -- the vehicle @ is empty, both vehicle and part are in the same dock station, @) I% v$ H% y1 K
                        part := @.transpOrder;) J, v4 Q' Q2 m' [& E7 A: B
                        part.move(@);-- load part. v6 R4 H9 t: b
                        @.CurrIcon := "load";
+ m( M% M' S4 X' P; M* W" r1 v                        GlobalDistObj := part.globDestination;
6 \  Z4 H- N; G" |: n6 P                        assignLObj := rgmanager.rgAssignL;
; {4 z) Z  G5 c. L. F- U: N+ @! {                        row := assignLObj.getRowNo(GlobalDistObj);# m% N3 ]1 U5 @( y1 e- s0 b
                        if Row = -1 then -- since 70
  j. t3 e3 B' @                                if lan=1 then
( ]3 W* S* [: }( L                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
; K+ `# }0 T6 D) f0 c                                                to_str("in der Andockstation: \"",?.~.name,"\""));
7 A+ `5 p! T, H0 H  E! m, L: r. R                                else
( n/ h2 l2 _/ k. L. F4 \                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),6 a! F6 K4 _' o2 v/ p5 X
                                                to_str("in docking station: \"",?.~.name,"\""));                               
+ U6 h1 \2 o7 a) j9 T/ V                                end;! T+ t% o  Y( I! X
                        else# Q3 a7 C7 N2 V4 [
                                @.Destination := assignLObj[1,row];5 D1 ^! A. k6 ]- g9 x" n
                        end;                        - A$ U2 I/ w% d+ @/ S5 v* ?
                        newDirection(@);: M( K3 r8 x- R0 S3 @) R3 o
                        @.HasOrder := true;" G% L) G0 b5 w% ?3 O
                end;
7 N9 H1 X! F: q* {        end;) A* n2 {' g; {1 ?& G
end;        -- of the method
( h& B! c5 W7 C2 F$ G
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
$ ]" h. p) l) w0 s, f8 A, }
4 M9 p" s7 F2 o: g' M这是AGV_putin中arrive的method。. R4 o+ v  N- `
! o: b, w, a' f5 q' @$ w1 V
当到达物料速度越高时,这个报警更多,
; A! K, S4 _2 h/ Z可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
  K6 E: G& `% X) `) M' L% L程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
2 u1 T: M; A; Z6 J( [0 t7 u' [+ |
/ D( V& q4 K: I- y' M! Q4 n另外一个小建议,就是move,所有的move都可以这样
$ i2 `6 c9 v3 I7 M/ p2 y) T; Yif not move() then debug end
- K. m* a$ h" z2 ]: ~9 n这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
8 K) Y  N# A* T; `plant simulation中的free libraries有AGV模板,
. k1 h5 I, U5 M5 a' q里面也有案例。
; a& R, _9 S' r% f4 I6 M6 c. ?* V我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 N% E& w( {5 f5 [* Y& L* \4 g
, W) x+ p% b, B  s2 k我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
1 D1 ?- `3 R$ O& M
3 @+ r1 X# N4 ~那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ; B3 w$ W8 {9 w+ V
这是AGV_putin中arrive的method。
- Q' h3 [1 u* O9 o
0 Z) B  m, b+ O, q( b7 D. a当到达物料速度越高时,这个报警更多,
6 i/ W/ \1 L$ M6 r5 K" x+ K
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-7 20:51 , Processed in 0.015971 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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