设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6144|回复: 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 F% p2 o+ j" @% k! ?*/
$ e3 c, m' t3 Gis9 Z+ d" `* i, `1 g% Q
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
/ m( v8 H! B' n2 e: I2 f3 K9 V$ edo# U- j# z; b. q. x
        Lan := rootfolder.Internal.Tools.AOLlanguage;0 ?) \/ ?0 O8 R) s) f5 m
        if current = @.Destination -- else return
; S% A' y, J' @6 _3 ]$ A        then4 L/ ?( I6 \; p7 {9 c- n0 S
                @.Destination := void;
/ O* r/ y, j! D4 h9 p1 W/ d2 T                if @.occupied then5 O9 O. P7 I( [8 B) l: P  U. f" g
                        part := @.cont;$ K. P. u2 p6 P( x$ @% V( S# ?$ o
                        @.transpOrder := void;9 X' W/ @2 M0 j0 S
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( y# K, f3 h, F5 W( p5 f! l                                @,root.eventcontroller.simTime);9 S3 h; b4 A+ ^& d3 Q3 J. o! Y3 Y
                        @.HasOrder := false;& `0 n( v/ K: Y# @/ v
                        @.DrivingHome := true;; R  }" i7 s+ e: \, p
                        rgManager.tryToStartTransOrder;; C- k# T/ @1 L) }
                        if @.Destination = void
  Q: T. E! O+ h0 I( v9 a                        then -- no transport order for vehicle @$ ?2 a! |* M; |# b) t
                                @.Destination :=
- R1 L  ~- ~: I- a. y- \3 D                                rgManager.nearestFreeStation(@,track.~);
! F: K' n; V$ p6 |4 n8 Y7 C                                newDirection(@);   
: D1 i& M8 S; X: z* |                                if @.Destination /= void then* y) M  R# l+ T# N. c3 }
                                        @.Destination.NumReservation :=
5 t0 Z! s) ~5 l1 a                                        @.Destination.NumReservation + 1;) ^) \6 d% n0 y6 |
                                end;) X+ A& B, N; J' h
                                @.CurrIcon := "drivingHome";( D  s1 F' Q: u' C
                                @.DrivingHome := true;
/ \, G/ @0 D9 G" S- y                        end;
% a# C( [! ^( a- _                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
3 h2 r3 \; H7 m! B2 b5 G4 v                        part := @.transpOrder;0 Y" B* g1 V3 Z, _, c% Z
                        part.move(@);-- load part
' {$ k; `# _; `2 l! l7 p                        @.CurrIcon := "load";
- x0 N% l- Q8 z$ A1 k4 E& S5 ]                        GlobalDistObj := part.globDestination;
4 X. Y) I( Y- ^. [& [3 Y                        assignLObj := rgmanager.rgAssignL;- o& b- y6 w2 w9 E) t8 [4 x
                        row := assignLObj.getRowNo(GlobalDistObj);# B4 V  A  m( I1 H9 y* V
                        if Row = -1 then -- since 70
( g6 |- [7 J; Y5 l                                if lan=1 then- w- ?1 I1 ~  v; ]
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
( h' `; j3 L5 D+ w+ A8 h& T! a                                                to_str("in der Andockstation: \"",?.~.name,"\""));8 v  i0 p2 A. J: {5 v
                                else
. j% v% K9 }4 v$ u- ^. [                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
1 p5 }7 z* ]  Y6 P' H( _0 N; e                                                to_str("in docking station: \"",?.~.name,"\""));                                # V) V0 W. m- e, d
                                end;
3 i* f6 R( H- w8 ^3 Q                        else7 x* W2 n9 S$ x1 ]! O& D/ V
                                @.Destination := assignLObj[1,row];
1 ]! r, ]! L, R+ ]# f1 N1 ?9 Y# E                        end;                          m7 [9 J% n7 T/ b$ D
                        newDirection(@);7 I9 t8 G) k& v
                        @.HasOrder := true;
5 F4 w9 A( K- B- }: j4 i                end;
3 ]) D( m( L/ Y0 t1 k3 _        end;, {5 P  g" ?% A6 Z9 H
end;        -- of the method9 y8 K4 g9 H6 a: [! n
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 $ h8 U8 n5 O" U- [* \

# Y9 E- R& I* ~7 N! G. h( G& [. N这是AGV_putin中arrive的method。1 r% B. w- }, h/ E! U, V

+ d# d# }) Y% V+ u8 \当到达物料速度越高时,这个报警更多,
% \2 ~9 F* X9 S) x: }: ]可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( \+ Y9 L1 F, A
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?5 C! Y; ~9 J$ N5 i+ d0 U
3 ?, V* @1 Z/ D" w7 Q6 R
另外一个小建议,就是move,所有的move都可以这样2 j( y! b) f/ }1 K4 U
if not move() then debug end" I" v/ F/ K% Y2 I
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。5 L) e+ S8 O7 M8 J8 D% ?$ Q
plant simulation中的free libraries有AGV模板,
# P1 b% q8 o3 j$ x; ~里面也有案例。2 ?! J- a) I6 T" O# o: ^
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
5 L( u: O/ J0 f2 \+ J
8 x3 [0 Q# k( e4 I9 Z. w% O我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" ~& n# S7 u4 c7 w, A' ~; p6 a: ^: i
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 * s% |& t1 G6 _7 J0 A
这是AGV_putin中arrive的method。: v% x) J1 K" Q* x3 T; a# U7 |
& ?" K2 X, N1 _6 x# t
当到达物料速度越高时,这个报警更多,

) u( _0 E; [2 F# {( ~! H7 m) W6 p) v- ^另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-21 05:32 , Processed in 0.021655 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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