设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8111|回复: 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'7 p- Q; f  v  r/ g; G
*/; `8 O6 U4 r# T
is
, X+ Z' g! A" ^        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
7 N6 P2 F0 g8 x- zdo
" b' [4 G: h' K2 _        Lan := rootfolder.Internal.Tools.AOLlanguage;
  H6 U/ ?$ G) C+ Y' t        if current = @.Destination -- else return- U0 p+ `' m6 k
        then
! N0 e, ?& h8 _' I                @.Destination := void;  H$ [6 U0 x+ J6 ]
                if @.occupied then9 s- U0 J# Q! v) S" k
                        part := @.cont;
% Z( i  K$ m6 I- A4 _; [1 A                        @.transpOrder := void;( d, R- S9 m$ L/ j/ ?" K
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
! l% e4 J9 `% U                                @,root.eventcontroller.simTime);% t" h0 h& X& p, B
                        @.HasOrder := false;7 i/ b; d! h( e- z* P% J5 Q" M$ M
                        @.DrivingHome := true;
  Q( Y) v( f' C, J9 R2 v+ R: \7 B                        rgManager.tryToStartTransOrder;
, X6 x, ~3 {& E) T                        if @.Destination = void1 l7 A# m  x  w2 D; d& y
                        then -- no transport order for vehicle @/ G6 j2 o# s( W3 Y. L" {$ Y
                                @.Destination :=9 }$ u" h, r3 {1 d. L8 ~, S/ n
                                rgManager.nearestFreeStation(@,track.~);
( o" ?' `( z( E3 H                                newDirection(@);   ( E6 x# @) i$ u
                                if @.Destination /= void then6 u7 X* i: n! t) i$ X. J
                                        @.Destination.NumReservation :=* T8 N  N! I8 w& t  `& U
                                        @.Destination.NumReservation + 1;
$ l/ i0 T- F9 E" c7 l                                end;# H3 r, R8 y/ r) U& ]% {
                                @.CurrIcon := "drivingHome";
1 c$ F/ v; u& ]) C8 j/ p7 l% B                                @.DrivingHome := true;
. i4 d9 M2 H2 E7 X5 J) E# G- {                        end;
% }$ N. `) [$ o2 h                else -- the vehicle @ is empty, both vehicle and part are in the same dock station  J" s3 n# W' s  f. ~/ Y
                        part := @.transpOrder;, w; o, ?3 u5 y: Q
                        part.move(@);-- load part8 R3 ?) Y) y! L4 F; G/ C
                        @.CurrIcon := "load";# l8 T0 ]+ o- y5 F+ E
                        GlobalDistObj := part.globDestination;
- q! c, f: r- ]) r1 r. T                        assignLObj := rgmanager.rgAssignL;) @2 A7 J& A, a$ ]( O
                        row := assignLObj.getRowNo(GlobalDistObj);
& S& b7 A, }1 e) J) d' W9 \                        if Row = -1 then -- since 70* w: l4 h" R/ A4 G6 ^
                                if lan=1 then
- Y( p/ z6 R0 \5 A$ K% R- k                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
. y/ r/ j4 D- R( R- G& d. ~                                                to_str("in der Andockstation: \"",?.~.name,"\""));" \! h) r4 m0 Y6 e, P
                                else9 |' O* H0 Q# g- c9 D# u) G/ H2 Q
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
3 j9 o) Q9 U, o7 v% \% B                                                to_str("in docking station: \"",?.~.name,"\""));                               
: [2 |  ~' [# ^3 }7 N6 `                                end;0 F! h; m* E* b7 m3 w* h
                        else6 }' g, Q5 \2 R* i
                                @.Destination := assignLObj[1,row];- S6 L1 x' l. {. Z; W) A3 S7 \5 w
                        end;                       
) S; y6 d7 ^6 Z. p, n& i- D                        newDirection(@);
5 B2 A4 ?' U* m. b                        @.HasOrder := true;
1 r% w9 w* `4 u                end;
" ^! I" i$ O8 {  B# S1 P3 e        end;
* q. B5 G, J2 G7 h# M9 r9 ]0 U6 Aend;        -- of the method" C4 o0 E. P0 x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 9 Z/ p$ O2 i- c6 e8 J1 m
. f& x" k, x+ }- i
这是AGV_putin中arrive的method。
4 W  z& F9 w, f' z/ l* ]% Y+ S3 M6 M' P; k4 x& a  q
当到达物料速度越高时,这个报警更多,6 G( x2 I4 j3 H, }- D6 b1 k
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
5 H( q3 f: ]  j' j+ Z; g2 E+ J) n) E程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
* R* N$ N. L: q" Z8 O+ X; b
9 A7 \& B, h7 w8 n( ?另外一个小建议,就是move,所有的move都可以这样9 L7 y9 q0 U+ q4 h3 K/ t( [
if not move() then debug end
8 f6 u  s$ l: \' K这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
" `5 m& i% P/ ]  e( I* k7 Rplant simulation中的free libraries有AGV模板,
+ x% K( J- ]( }里面也有案例。/ x8 e; d8 n2 q' f7 g3 H5 M& c
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
; o2 U3 U" m0 C# V( I  {
8 t) x$ g! m5 C* f8 [0 @0 W& U我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 + y- \3 a& B; S! m1 e

- f) e; m2 E; a& |1 t那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 2 s5 W! \, @) `
这是AGV_putin中arrive的method。; j7 k3 n! [. B

: F  c9 R; O! y* o3 b& f当到达物料速度越高时,这个报警更多,

7 k( b, W% R0 }# ~7 p另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-15 11:23 , Processed in 0.020428 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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