设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5658|回复: 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'
( H: ~" Y+ J9 ^( q* W/ w# I. D5 ]. H*/
( N# ]9 c+ S% U& ?is
( b% v& H/ b( Q' |: }$ E2 I        part, GlobalDistObj, assignLObj:object;row,Lan:integer;3 \0 D9 r; V; }
do
% ]4 n' S' q8 G. g( n: F6 u* F% V        Lan := rootfolder.Internal.Tools.AOLlanguage;
' U  s6 n2 j+ H3 f        if current = @.Destination -- else return
/ P4 |9 ^+ Y" X5 _/ H" B        then
9 x" f, ~4 V% c6 r+ I3 N                @.Destination := void;
: ^1 r4 Y' Q2 ]# }0 n  Y                if @.occupied then
$ S! d' C( f7 D( k/ _                        part := @.cont;( E/ Z# `2 v9 l+ k% @+ d
                        @.transpOrder := void;% p5 [4 R8 |8 u
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
* @( K% v- `, ]/ T- ?6 I                                @,root.eventcontroller.simTime);
& l# {1 R% \" r: H( Q                        @.HasOrder := false;
; h% Y: l( M" g                        @.DrivingHome := true;: m# E" O5 B4 G8 N2 x
                        rgManager.tryToStartTransOrder;
; \; @- _5 M+ M" s# K" \3 x& I' s$ x                        if @.Destination = void
% Q( ^6 n6 P$ P( \+ B# a2 t$ }" p                        then -- no transport order for vehicle @
) y% E5 J/ Z5 e( W2 {' D& m% C' `                                @.Destination :=
: W; [  [  y5 S5 w- x8 {3 Y9 t                                rgManager.nearestFreeStation(@,track.~);2 a# Y1 O, X/ {' m, H+ f
                                newDirection(@);   
9 D, S1 h1 e7 w$ |( w. ^2 D( @                                if @.Destination /= void then
9 X1 [6 r% L/ x% R                                        @.Destination.NumReservation :=
7 `" b% U' n7 U. ?9 ^4 f% O                                        @.Destination.NumReservation + 1;. I( I7 Y9 j. y; M
                                end;
! f4 _0 _. Q0 f# n" P% }/ E* N                                @.CurrIcon := "drivingHome";  b/ Y5 [7 f6 N  G
                                @.DrivingHome := true;
. C1 V2 S9 ?& J4 U' I                        end;
: S$ ]2 x/ g, H( c, H8 l                else -- the vehicle @ is empty, both vehicle and part are in the same dock station& A2 K' s1 N% k9 q; F
                        part := @.transpOrder;3 m8 l7 d% ?( p' g
                        part.move(@);-- load part
3 f5 \4 {+ I( P' ~                        @.CurrIcon := "load";# r' w" c" x& c1 }( n$ n# N9 f
                        GlobalDistObj := part.globDestination;
, v$ L4 B9 q4 j                        assignLObj := rgmanager.rgAssignL;3 Q6 S& w) h" q2 |) ^6 f. ^
                        row := assignLObj.getRowNo(GlobalDistObj);, x& h6 V5 r' C( r4 f
                        if Row = -1 then -- since 70& Q' H% B. x7 I; E8 [
                                if lan=1 then
- g7 I) U/ W4 q+ v                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),( C1 I$ k$ X, l' z* X% S
                                                to_str("in der Andockstation: \"",?.~.name,"\""));$ J% v  j6 q! R+ R6 c; m9 P
                                else
; A$ M, _9 t( A; n9 m                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
" R' X& z8 ?7 r& x7 P                                                to_str("in docking station: \"",?.~.name,"\""));                               
; g8 Z, f0 X9 {9 n: E. n                                end;, u1 d7 [: Y3 k  d9 g" j
                        else
$ m0 Y1 D4 W1 c7 R  X                                @.Destination := assignLObj[1,row];5 e5 z4 t8 Y$ s" X6 }+ e$ l
                        end;                        4 s2 t; k0 O$ p. K; X* s# y# ]
                        newDirection(@);
" Y3 M% m4 C4 a0 |                        @.HasOrder := true;3 Y: K9 b: I0 J5 |& j  _& x' @
                end;
* W& ]( [6 X7 x2 R- j        end;% R  O; e5 k! e8 ?& j
end;        -- of the method
: G$ l; t9 P$ A3 S; r. X( M1 _" ?
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
. Y. Q, w) V+ y5 v
& u9 e- ^4 Y' P+ w8 u, d& v这是AGV_putin中arrive的method。$ T3 R5 `$ S' M) v  u5 C
# ~* E5 n3 _1 J) O; y
当到达物料速度越高时,这个报警更多,
" b5 Z4 U) e4 z! S- d( S可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
! E: z- u6 N. X' e" A# \9 T程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
* i7 Q( t3 T) q! v& A( S; b5 o/ V1 j1 l! s' w0 B
另外一个小建议,就是move,所有的move都可以这样) k/ ~( a1 k* }/ \) r! |
if not move() then debug end
  l+ h- Z( U$ a5 H这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。2 G8 o' w, V8 o* f% S7 E6 O
plant simulation中的free libraries有AGV模板,  T1 {' r1 w! C1 w1 T; T' c
里面也有案例。
, D5 F% O0 ~0 n3 K5 h我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。% Q; G* I$ Q( o- B0 _6 s# h
6 [! K- U/ I- {) o
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 & q8 r  f5 O; |! K2 ~" b1 Q
) l& `3 v8 {# p4 T. c
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 0 x5 Y; ^& H  e9 H% l
这是AGV_putin中arrive的method。2 n0 c7 ~8 B2 x; `2 P: f0 c1 r: |
. b- e6 T$ N; b4 W1 m( W
当到达物料速度越高时,这个报警更多,
* \, q- U6 k# S# Y. e- o9 Z
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-12 01:14 , Processed in 0.020177 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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