设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6649|回复: 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'1 ~  X& J9 R: Q$ V1 u4 S$ v# Y4 q0 x
*/
4 n9 K, {! M; K$ V+ fis8 j; V- Q3 ^- d
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
' n7 w) l$ L. `) U5 i8 zdo  N7 {; p, f" U! n+ p/ H
        Lan := rootfolder.Internal.Tools.AOLlanguage;
$ P' |- q2 ^! B, {$ ?" V! j8 m# Q        if current = @.Destination -- else return, B  j. U; V8 S2 u2 W
        then
  R( \  h( K9 @1 v- {; H" G; l                @.Destination := void;
, Q' l8 Y: W' C, [3 I( R                if @.occupied then
  N2 I- E  `0 ~1 j8 Z                        part := @.cont;
1 B' S; H$ [/ S' W7 w: Z# w                        @.transpOrder := void;6 n3 ]# N$ x4 w0 L) S% L3 |, Q2 P
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,$ {. c; X- o' @1 i: v+ F4 u8 `  c
                                @,root.eventcontroller.simTime);
; s) {6 I# _$ u9 T7 H% t                        @.HasOrder := false;
& F* ?/ I* [. l                        @.DrivingHome := true;4 g* e7 l: T1 m" \  n0 l
                        rgManager.tryToStartTransOrder;4 Z1 j1 W  I& S* Y
                        if @.Destination = void% n6 ^% j9 U; ?* e9 d
                        then -- no transport order for vehicle @5 U4 p: u- u! Y
                                @.Destination :=1 y0 m# C# V0 p, A9 [
                                rgManager.nearestFreeStation(@,track.~);
: Q8 ~* D$ ^7 w2 b  [# i4 z                                newDirection(@);   + q" b2 w9 i  X4 O9 G) x( T8 G
                                if @.Destination /= void then
0 l, M2 ]" A# \/ o) r                                        @.Destination.NumReservation :=
' L2 [" U* I9 }& y' @/ S4 a                                        @.Destination.NumReservation + 1;3 ~* L9 `$ s" v% s) I$ y+ @
                                end;* a& X, e( `7 x7 @4 H- }! G" c
                                @.CurrIcon := "drivingHome";
6 G# I8 S/ q" i                                @.DrivingHome := true;
3 O$ y* k& g: I" e& y                        end;
5 P# ]7 ]9 k, h8 ?) G                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
  B/ g$ q6 i$ i/ A4 w- X                        part := @.transpOrder;5 \8 j4 S1 Z; M$ ~8 x7 _1 e
                        part.move(@);-- load part
" v+ y7 W8 a$ d                        @.CurrIcon := "load";  C# J1 F2 u0 u, \9 [0 `
                        GlobalDistObj := part.globDestination;
+ f- {- A' T7 r% E                        assignLObj := rgmanager.rgAssignL;8 _  Q6 ?# r& R1 F$ [% x3 `
                        row := assignLObj.getRowNo(GlobalDistObj);
, a' \5 w- N4 n' q$ v2 K                        if Row = -1 then -- since 700 d2 P3 s4 G/ b; }6 w: i) f" |
                                if lan=1 then
$ g" u! m4 Q. C6 d# w, }& g6 O3 W                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
3 |. S, a# I6 i# r6 t                                                to_str("in der Andockstation: \"",?.~.name,"\""));/ ~6 o7 {1 m* B
                                else1 B! G4 s& j' V1 [+ h+ T
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
# k% }5 Z! b. r- B1 r0 x8 f0 q                                                to_str("in docking station: \"",?.~.name,"\""));                               
- Y+ w% v% `/ ^8 @$ S  I                                end;6 U% g, T3 P3 Z3 V' G) |. Y
                        else
, m! K8 S" b' m2 O4 E; G1 ?. n4 m# K                                @.Destination := assignLObj[1,row];; q* Q. P* S' p! Y5 Q, Y: I
                        end;                        / A3 o" i: ?% g% E: x( p( h
                        newDirection(@);: w# `, f- m) ~/ R  P( O7 {
                        @.HasOrder := true;; k. C& |2 n+ I+ r7 f
                end;
" \& \2 q; L, q( k7 O' X        end;5 ~4 Y. y: ]) N$ A- T$ T: A8 g
end;        -- of the method$ [7 c3 ^' ^/ F
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
1 W7 d5 Y1 V8 J* u# D# J! F; m  |0 j! R! k0 c
这是AGV_putin中arrive的method。
1 H$ i; y. }$ \, k) X& e9 B6 T& ]1 L0 h) f  D" e# B9 f  G
当到达物料速度越高时,这个报警更多,
3 \) l) o7 k+ r0 N) m) v4 g可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
$ C! K% m, W2 K程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
3 x/ q$ ~" e) y+ a* G5 {2 K* ], R
另外一个小建议,就是move,所有的move都可以这样
( f/ L8 M/ M: J( n9 ~% Nif not move() then debug end
2 S! n7 e& P$ j  ^: `# e这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
" s9 z$ u0 g- {+ S4 a8 O+ jplant simulation中的free libraries有AGV模板,6 D2 L" u+ x3 `
里面也有案例。
# ]! }) s4 W% V. w我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
+ ?) y+ [3 c$ w7 t- o6 s, E
1 n1 Y" Z$ i$ c8 n我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 # @; p; m: l9 [9 I

8 C/ H) x# q; Z那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ! g" A# Y) X" j7 X+ S
这是AGV_putin中arrive的method。& f7 e' G. F* V4 S3 b) r6 s
  n7 l& `- D( g5 r! H' J. Z. x( S
当到达物料速度越高时,这个报警更多,
$ X8 [6 B# \9 Q" |
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-18 15:48 , Processed in 0.016376 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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