设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10017|回复: 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'
4 k" d# ~: B. P- K+ q*/
1 X0 q0 }2 w, e& ]4 W9 mis
* ^: P2 H2 S0 G4 F        part, GlobalDistObj, assignLObj:object;row,Lan:integer;* Y+ Q7 E  b. c+ v
do' w/ l7 ?3 K3 ]& T; J5 ]& _9 o2 o' y
        Lan := rootfolder.Internal.Tools.AOLlanguage;4 `4 d/ _3 W; @$ u* Y
        if current = @.Destination -- else return* B$ }2 B5 J" m; b4 j
        then; v# r0 }/ q2 B( E- y
                @.Destination := void;1 d% w, _  Q1 M, ]: A
                if @.occupied then
2 K, t. x& f5 }4 T) F* |                        part := @.cont;
! p/ F$ n3 O/ d6 S% Q" @                        @.transpOrder := void;1 \. }' T& f! ^; F* G% L" C: f1 z
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,# Z$ \& Q/ W( n3 l7 F$ {
                                @,root.eventcontroller.simTime);5 }7 u( o2 g4 |8 h7 G
                        @.HasOrder := false;
) n+ w" Z: _5 i                        @.DrivingHome := true;
2 |: l8 B& i; Y7 z                        rgManager.tryToStartTransOrder;
5 G& j9 G' |, t. I                        if @.Destination = void
# F- A  s! l/ n% a- T% C: \5 D                        then -- no transport order for vehicle @$ {5 X2 q8 z$ H! P6 w+ ^" F
                                @.Destination :=8 j% o. D1 y4 z
                                rgManager.nearestFreeStation(@,track.~);
# \0 j. Y- W, B: X8 R                                newDirection(@);     y( x3 w1 L/ z+ C; t: G# Y9 O
                                if @.Destination /= void then1 f/ F& q& b1 C) r$ h# ]# H: A6 t: g
                                        @.Destination.NumReservation :=2 U0 c# F1 u8 G9 @) m4 \
                                        @.Destination.NumReservation + 1;
8 `. o, K- u8 \                                end;
2 S' o0 d) x2 y' h( U0 G' h                                @.CurrIcon := "drivingHome";! ?" j: ], L3 x: g
                                @.DrivingHome := true;
4 f" X: v' _4 R% U4 F! x                        end;
* e9 v5 J$ R% P( h) ~                else -- the vehicle @ is empty, both vehicle and part are in the same dock station+ ^  w6 g! P" q6 q
                        part := @.transpOrder;
0 y, f. y" v7 j( o& P8 J. k                        part.move(@);-- load part* ?2 ~* O+ z: w2 V) _# W( H$ _
                        @.CurrIcon := "load";4 T0 ~' ^7 F3 q8 T0 ]# h) O' Y
                        GlobalDistObj := part.globDestination;) d5 b6 J/ C! b7 o. ^
                        assignLObj := rgmanager.rgAssignL;
6 h2 ^% A7 K, j                        row := assignLObj.getRowNo(GlobalDistObj);
, t5 Q# F8 C! U; U$ ?5 Z: H1 r                        if Row = -1 then -- since 70' K' n. J3 P/ `6 p
                                if lan=1 then
5 M; ]4 R  G5 N                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
9 t9 D* Z9 J7 D                                                to_str("in der Andockstation: \"",?.~.name,"\""));
! e& g4 S1 n. \' Y, ?                                else5 R$ L, Q3 O$ w( r0 R) M
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
2 T& }, B* ~5 ?$ u                                                to_str("in docking station: \"",?.~.name,"\""));                               
( g4 ?; A6 R  ^/ O                                end;
0 f* X) I8 Y6 S2 H                        else( k+ q$ F& E1 r$ j9 \+ g
                                @.Destination := assignLObj[1,row];. ]! E7 x1 n" y& m" T
                        end;                       
; l2 v% A) ]" _0 o/ F                        newDirection(@);
1 g% q! p( N' \$ G, @4 G                        @.HasOrder := true;! @( v, V  M( F. o: I0 r% @
                end;
* {+ D( D/ h7 S# f        end;
3 \# i: C& K  H( H5 M' j7 Gend;        -- of the method2 z5 u6 D8 A. e0 S$ L  G
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
$ J. ?* _2 X: ?3 d: g6 r( G% j0 y! K; e7 A, r$ J! C* L
这是AGV_putin中arrive的method。
  c: k3 K) ]7 L- f: n$ l# y' E* ^/ s( O# `) z
当到达物料速度越高时,这个报警更多,
1 c9 v# D: k8 H" I) X% u1 E可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
* I$ q- P$ W! o; T: X& I程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?0 ]- r$ D/ x1 f
' P6 F; G5 ]$ l5 Y" E  o' P
另外一个小建议,就是move,所有的move都可以这样
  H2 ?+ X' t' a! c& t) eif not move() then debug end
8 c2 y0 G1 e( b5 A4 I9 F4 n这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。6 {0 M9 C* H7 i+ {& b( f: E, e
plant simulation中的free libraries有AGV模板,
9 K* a. r8 ~, V1 \' P# w8 \里面也有案例。
  r3 h' J" Z8 J( L1 O2 r我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。( x7 b7 e, F6 A; r
7 w, ^. l) r/ C* |. {* K4 j
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
3 }+ p( R. _" v) ?9 a' \+ A3 }; r& T+ f9 O- r
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 - H9 b6 M/ P! m% j% i* X
这是AGV_putin中arrive的method。
* q8 y6 h' z, S! Q% {/ V6 Y
  e5 I# O; q& Y) V0 k. n1 ~6 _当到达物料速度越高时,这个报警更多,

  U+ k0 }) M9 d, D1 z另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-7 18:26 , Processed in 0.016147 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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