设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6426|回复: 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'; G6 T) R+ C2 T) ~  o) h
*/
  |  M8 K; I& g* ~& [2 T$ Iis1 m9 t6 Q4 l6 f
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
1 u1 h$ b4 K& O) V5 D* ~6 Kdo9 V, o" r9 T, p4 i3 c# a* m
        Lan := rootfolder.Internal.Tools.AOLlanguage;
1 }4 m9 d/ U3 S3 Y        if current = @.Destination -- else return$ W5 h2 X% ]$ p0 L* h; K
        then8 u4 c, A' U$ P% q. {; a
                @.Destination := void;
1 ~# u% @7 n$ ]* m* ]1 `1 [$ V                if @.occupied then
4 ?) I- |9 _* b$ h. Z                        part := @.cont;
6 l, ^& I; E4 n2 Z                        @.transpOrder := void;, n+ k7 Q, C, Z  I% x
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1," z: f! |  ~6 f3 L
                                @,root.eventcontroller.simTime);
: G0 H6 e2 l$ s- N                        @.HasOrder := false;
" `; \- [) M3 I: }; z" H                        @.DrivingHome := true;& g" \' D7 `8 K. r8 ]6 |$ J7 y3 U/ j
                        rgManager.tryToStartTransOrder;% e. f* g  u, b2 `6 [1 s" [
                        if @.Destination = void: q) a: d! M! [% _
                        then -- no transport order for vehicle @
( U: q/ _  I& v& z                                @.Destination :=9 b" H$ I" l7 u5 z2 T( ?. x
                                rgManager.nearestFreeStation(@,track.~);
1 G# z5 x2 O$ M# z                                newDirection(@);   
/ m5 H- i) I  [4 j! l- A                                if @.Destination /= void then
+ X6 S& G6 c1 t( q0 u$ H! {9 j                                        @.Destination.NumReservation :=& T/ v$ d5 I0 P. h
                                        @.Destination.NumReservation + 1;; p! M" O+ D, R' g+ h
                                end;# B- B% n0 r# ?( n) a  a8 G4 V
                                @.CurrIcon := "drivingHome";5 B3 Z% }, g( A$ |, l
                                @.DrivingHome := true;
1 H0 h! X9 c# |2 J                        end;
9 A( s. H/ K( U- h: H                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- ^0 i$ n, w! B1 m: n  S$ G                        part := @.transpOrder;0 w+ R  Z' }# B8 b" N/ O
                        part.move(@);-- load part
) k" q! ]& O: c0 G                        @.CurrIcon := "load";
7 b+ v& Y8 Y! c                        GlobalDistObj := part.globDestination;
$ [. h/ U" B" E7 b4 w                        assignLObj := rgmanager.rgAssignL;7 I, F+ u4 y% b* |
                        row := assignLObj.getRowNo(GlobalDistObj);
1 o  b& g3 y6 {* |                        if Row = -1 then -- since 70
3 Y. O0 u4 U" {" q                                if lan=1 then+ j* j2 Z. ?) h, ^  C9 @1 q* z
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
4 g8 Q& U9 `* w5 P: {                                                to_str("in der Andockstation: \"",?.~.name,"\""));
! x* M+ l* U, ^5 W" Y9 R2 X                                else
/ W. {+ T; W: T9 z' R( z" q                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),. w- B  I' k, e2 c2 |- U" _* }
                                                to_str("in docking station: \"",?.~.name,"\""));                                % O+ e  }& A7 x% o( t/ B6 S& I" j. y
                                end;
; K4 a; k" I9 r9 u4 m% w                        else
3 N, j7 M1 r) f+ C                                @.Destination := assignLObj[1,row];* N/ _0 w2 B" G
                        end;                        $ s& d1 k/ j/ Q( L, j* G
                        newDirection(@);, G) [1 F% a' P: \" }
                        @.HasOrder := true;
2 G, M6 m' x$ S2 g- f& m                end;1 ]4 M/ V0 P# N. j. i; }& ^
        end;; S% ?! \  ?# X0 V; {- B8 Z6 V
end;        -- of the method, ?4 ]# D: D4 p# z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
1 @3 m  W3 L. s* s* W  \# f' H! ]- @* s) ?# @) Z: @
这是AGV_putin中arrive的method。
5 n: L5 u4 E3 F9 T8 O% g/ B' X  d$ N6 X/ g! s5 k
当到达物料速度越高时,这个报警更多,
; ^0 s& e$ G7 ~6 ?3 b" q* N# v可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
/ S6 \5 `4 ^) m4 O$ y  M: w/ n) B程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?2 C+ j" K6 N' @. p: ^! g
+ s  t5 Z. t3 d3 O# e& O8 i
另外一个小建议,就是move,所有的move都可以这样
. d9 b" W; @2 i2 z; ~if not move() then debug end" B6 e: A& D8 p
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
5 e1 E: p! B! A  Q8 b7 Jplant simulation中的free libraries有AGV模板,6 l5 n5 L/ R% X9 H
里面也有案例。
' y. e( M6 F+ K; [/ G& I我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。8 X! Z+ v6 D7 @

$ }9 }$ B9 d9 m' _3 a/ e! l3 F我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 9 s- L; V' x" h7 b0 j
) S( `* X' a) g5 @
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 " m8 H3 L  R5 u3 q( L* o+ I
这是AGV_putin中arrive的method。
: \2 ], Q  m7 K9 T8 C% ]. d4 U% K) e2 N/ h
当到达物料速度越高时,这个报警更多,
# _9 `% l8 p( y8 v
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-5 22:58 , Processed in 0.017150 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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