设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7146|回复: 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'# J# E% e" p5 l& k& S4 O
*/
' I! H6 `! ~; L- R& Sis* l; X3 Y9 i+ U/ R- X8 }/ Y7 G
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;2 f: R4 ]; f! t4 C+ w8 e2 z
do
( k/ ]# B6 C% K  h; M6 ?        Lan := rootfolder.Internal.Tools.AOLlanguage;
+ o5 Z6 M- K3 W; {/ c/ [5 H1 w! {' R. P9 ]        if current = @.Destination -- else return
: D4 q5 X0 v0 A1 l0 Q, V5 r        then
9 L/ |. S6 Z$ z( h1 a3 P* {                @.Destination := void;
8 s, D. g+ h2 r- |7 H7 M. y                if @.occupied then( `5 A: B9 r2 m- w
                        part := @.cont;7 j$ L& {5 G& W: m* W' t! L$ @
                        @.transpOrder := void;+ U# G9 u. b+ q* C* \0 s
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( c( a1 Q8 V7 W5 `$ _                                @,root.eventcontroller.simTime);- _# B* P' o/ {+ w( F
                        @.HasOrder := false;/ G1 |/ k3 n) m" V4 m+ q4 x/ a
                        @.DrivingHome := true;; w' ?# [' ?! @! D6 z8 U" \; o3 q
                        rgManager.tryToStartTransOrder;9 [1 t& {" b6 P4 G) _0 @7 P
                        if @.Destination = void7 t5 k- Q7 U4 t; `
                        then -- no transport order for vehicle @+ p- Q- Y( b' Z) Z* }
                                @.Destination :=
6 |8 v$ d' w9 J                                rgManager.nearestFreeStation(@,track.~);
% F& R" t. s, ]0 y% H- {2 g                                newDirection(@);   
/ {; E* d0 x6 R# _% _6 W. U                                if @.Destination /= void then' |% _" G% h7 A+ C- @$ i1 g/ Q
                                        @.Destination.NumReservation :=
0 C3 x# j( f: C. K! E8 i                                        @.Destination.NumReservation + 1;% N$ w6 ~' Z6 u/ g) `% `, y
                                end;' {2 j8 {+ C; [0 W% i# P
                                @.CurrIcon := "drivingHome";; w$ p. m* g2 w/ x* f% T, s0 t
                                @.DrivingHome := true;' e$ u3 S9 Z$ X7 z
                        end;. S, \0 `1 P2 I0 H, N
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
5 c; Q3 {6 R( Z6 I; x) B1 p                        part := @.transpOrder;
/ ?5 Q& N! V2 W; s  K                        part.move(@);-- load part
) }+ Y; d0 h' G                        @.CurrIcon := "load";
; a8 g/ q/ h! z* y. {, P1 k) P, c6 k                        GlobalDistObj := part.globDestination;! P. e7 r3 u# C) u  G: W
                        assignLObj := rgmanager.rgAssignL;
6 ]4 v1 v' {! f2 F1 }8 j. W  S; E                        row := assignLObj.getRowNo(GlobalDistObj);
7 J  y& J+ D# h7 i, h9 C  A                        if Row = -1 then -- since 70! K3 \; |1 ~  I  U; r
                                if lan=1 then8 Q8 b9 Q# D4 v
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),0 Y+ c' A! t9 S9 d
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
) H7 c# \# x! d8 ?                                else) Q' h1 |# r: U' q# L
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),4 S9 P, M- W  P5 _, O# @+ M
                                                to_str("in docking station: \"",?.~.name,"\""));                                ' P- k- t( i' e; p( C+ p
                                end;  `# L' k6 _* a4 }
                        else4 Y- d( p( n  F
                                @.Destination := assignLObj[1,row];
& I7 R# }6 {5 A& {3 L! s                        end;                       
/ S* P& I2 ]9 V! v' s' p# C5 `                        newDirection(@);7 h# B& r+ t3 ?
                        @.HasOrder := true;
. t+ n9 X! y# k8 J$ ?( \; r- q                end;
! n- x' P" v" F$ Y6 y        end;
, L/ v  F% B( ?) {+ Nend;        -- of the method
2 A. U7 @: P5 `& b. \& x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 & y" F4 s7 z8 F8 H/ T( L; h
% G( L2 v" M* e3 r  V
这是AGV_putin中arrive的method。  a* L7 t6 ?( G

% B- t" F8 T2 {1 ]* \6 Q. U当到达物料速度越高时,这个报警更多,& a* F7 I: a. o% {" G7 k; }/ z$ j7 S4 _
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
$ l1 y$ O# I5 d程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?* D6 d, h9 ^9 @
3 W% M" D  w: I. `0 U/ |) O  b
另外一个小建议,就是move,所有的move都可以这样
' Z1 u+ D& ^2 aif not move() then debug end; T2 J; d: e( A# M1 d
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。) t1 v, E5 e, @1 g- I7 O$ ~2 v
plant simulation中的free libraries有AGV模板,7 ^. }4 H3 e$ w. n% R  J
里面也有案例。
" g/ f: t5 s2 Z6 u2 V+ v我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。& X- R$ L7 e  W0 J6 C! K
% k) T* Y+ _" D
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
% f$ G/ r. B% q; ?
0 f  U% I9 G' G7 c9 _0 N那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
3 C; k, G- g. |. a% G, [: I& G这是AGV_putin中arrive的method。. K" X, X3 Y+ H) p! ^/ ]" M, e
1 t1 T% ]7 Q( B3 A5 K
当到达物料速度越高时,这个报警更多,

& ~9 u) \, N, Q  p8 R另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 17:38 , Processed in 0.019851 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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