设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5998|回复: 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'
' E! k% t8 Y) S3 w" K2 r*/
: @5 k8 L  K6 lis$ K- f, E+ `& m: I- t
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
7 @& j4 c/ i8 wdo
' }$ z) _$ R0 I* C9 w# v* y' B+ V        Lan := rootfolder.Internal.Tools.AOLlanguage;+ R4 e, C0 ]; z  ]3 Y% y
        if current = @.Destination -- else return  A. D8 ^; p3 o
        then
+ L  ]9 O$ P" h  T" l6 l& c( b                @.Destination := void;' q+ ~: N1 Y( Y  y/ U6 J
                if @.occupied then
: ?8 P7 Q: `: Z7 ]3 V8 P                        part := @.cont;7 |6 O" S, s8 i  K/ j. a3 K& y8 ?" s
                        @.transpOrder := void;, M4 a) M9 h8 J# @+ c4 b
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
1 T5 Y2 \1 N* Z                                @,root.eventcontroller.simTime);
- A/ t  a1 }) M- E% q0 r                        @.HasOrder := false;
; x* e; P4 k6 u  `+ ]                        @.DrivingHome := true;, K& P" u: |7 P0 v
                        rgManager.tryToStartTransOrder;
% [. \8 i# C- S: R                        if @.Destination = void
, M7 p0 T- J6 s% b( ?* o' ^2 K/ m                        then -- no transport order for vehicle @
- S/ x- A) w7 n! N- r: C                                @.Destination :=
5 p6 G2 P. F7 h5 X, P                                rgManager.nearestFreeStation(@,track.~);
" I% o) E( Y% ?* U                                newDirection(@);   
8 Z" }' T2 [0 G" o4 k+ f8 J) a# H2 H                                if @.Destination /= void then
6 [  M1 H6 O- T! w; S0 ~$ J                                        @.Destination.NumReservation :=
3 L' d) V# k+ E  _$ Z( V                                        @.Destination.NumReservation + 1;
# W4 a2 `4 V# [$ M                                end;
) R. s5 V' P0 I5 z& s                                @.CurrIcon := "drivingHome";- H/ k- F. _* U
                                @.DrivingHome := true;- L0 W0 X0 X- e
                        end;/ n; k0 \& N; J. a0 ?, f* W
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 O: S+ C  W) B& l0 D: @5 h$ Z
                        part := @.transpOrder;5 D$ z- W, e. j1 r# N; V0 u. `# ^5 E
                        part.move(@);-- load part
3 _' a7 e9 w* N- J* E                        @.CurrIcon := "load";5 W" ^0 f5 h  a0 |) l
                        GlobalDistObj := part.globDestination;
: B6 g( ]9 ^) U! n                        assignLObj := rgmanager.rgAssignL;
- B' {' M' Q3 \1 f7 o& {                        row := assignLObj.getRowNo(GlobalDistObj);+ J/ c) h9 k( e( w; o' v
                        if Row = -1 then -- since 706 e) Y* `5 V% T
                                if lan=1 then/ T8 I  V  Q: w2 t3 w% @' |
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
: j8 V! h5 \) p  M2 B3 i& L                                                to_str("in der Andockstation: \"",?.~.name,"\""));+ z& L/ @. E3 {4 w. Y/ Z* F2 b. H
                                else
# f" _! w' {, w, T8 W( {7 x: G) X6 E                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
/ Z# k3 P6 |) ]) W                                                to_str("in docking station: \"",?.~.name,"\""));                               
4 a2 h1 j5 D" l* n" B" H                                end;3 Y# c# l7 f; Y
                        else3 {6 P2 Y( F: ^! G
                                @.Destination := assignLObj[1,row];; I- T# t5 r, b" `8 Y( c* z3 o
                        end;                        1 Q) v" G# F* z2 \1 W; _- c
                        newDirection(@);- i- q5 v% W; A- }8 ?) \
                        @.HasOrder := true;9 p0 T( B& z' Z6 Y* M/ N
                end;
$ P+ r; z# f0 a8 m        end;
$ P1 N) z5 q* V, ]+ o5 A; |9 Uend;        -- of the method  h( s8 c! B* p( b, j/ O
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 $ Z& A2 f* _+ M6 n  t

2 q+ M3 _, r% [! G这是AGV_putin中arrive的method。
3 N2 b  B1 d2 P. `7 v- o6 M6 k0 ?) J3 g4 V/ L, r
当到达物料速度越高时,这个报警更多,
# o" [3 J. t7 }  y9 N; \可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。. y, E( g( M# b& h. ^
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?0 E4 _) ^. H- Q( @4 S' M7 O/ k
1 f" v* c) i  h- Z. ~( E
另外一个小建议,就是move,所有的move都可以这样
/ ?% @  a" K, N8 ]* uif not move() then debug end# M1 N3 A# {. a, u% [
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。' w" G/ w& ^$ {6 Q
plant simulation中的free libraries有AGV模板,
6 a2 `' V5 f( B8 k) {9 U6 ~5 @里面也有案例。
, L' F% o, g% d8 `: P% b7 ?我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
/ X4 [  m& |8 Y1 T
, `/ F' l1 O6 z/ F' W2 p2 l我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 $ m9 Y4 k( k! i, y
! {# i2 o. J, W* I
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# m3 P3 l- T. j+ K. ~这是AGV_putin中arrive的method。  i7 S! U  W  Z# }1 v
2 U6 Q# r( V+ s7 L4 q+ d
当到达物料速度越高时,这个报警更多,
0 ^( w6 t. I! R' C0 i( J1 t* g
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-12 04:14 , Processed in 0.015317 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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