设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8757|回复: 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'# |0 x6 n; G  D& b- t/ B  x, I
*/
; q( t' j; f! b, w* qis, ?3 |; T/ `1 c' t- M" m
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- [# |. \; u5 T, ^" k1 `. s
do
: n, [  c4 ?3 J! R7 q' }1 f7 f        Lan := rootfolder.Internal.Tools.AOLlanguage;
  l, q( M/ W, C5 L  R        if current = @.Destination -- else return
1 J4 w% Q. @: {( {' o0 `$ u0 i+ E        then, V9 P; |, Z/ O/ W5 Q
                @.Destination := void;8 G  o6 m' B3 l: ~% r& v
                if @.occupied then
2 W3 q% U  [$ _- G3 w0 S2 a7 g                        part := @.cont;+ X6 q3 ?7 e/ x
                        @.transpOrder := void;: s& N2 X& W" {, G  g
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,  |/ h$ [& ?# P# C0 [6 p! I% `
                                @,root.eventcontroller.simTime);5 N  h) G' r  s
                        @.HasOrder := false;
4 I( A1 Z* }  T5 L6 x2 h- x                        @.DrivingHome := true;+ g% W; W5 |3 C" D, I0 S! E
                        rgManager.tryToStartTransOrder;" u) v; `2 ~. H3 M
                        if @.Destination = void
8 v2 [9 I; L( o) N1 f; T/ u1 C                        then -- no transport order for vehicle @  K$ l  E! s' v  N( ~3 k
                                @.Destination :=8 x0 D  Y3 e* Z6 e
                                rgManager.nearestFreeStation(@,track.~);7 R0 a0 a1 U4 C# |% _4 ]* H9 G* t
                                newDirection(@);   
( s( b  T$ \) R1 Y) J                                if @.Destination /= void then; O. S4 ]9 h, ~
                                        @.Destination.NumReservation :=
9 w9 j& v) M, n                                        @.Destination.NumReservation + 1;
0 s1 _7 t7 @- Z$ j7 ?                                end;
4 a; a4 p: n; R( i" v                                @.CurrIcon := "drivingHome";7 ?* W; \! u, G1 @/ `. [# j3 H
                                @.DrivingHome := true;
3 m! |1 }0 A0 E  L; k" g                        end;
6 R4 Q6 D) N5 G8 E2 j- U8 s                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
! Q- A: k. ]/ c! M2 c8 T( q                        part := @.transpOrder;
' `) I1 u) M! K- {                        part.move(@);-- load part
$ Q& D! `& H0 O' L( b/ }                        @.CurrIcon := "load";
  {- T" ~# [4 i. w                        GlobalDistObj := part.globDestination;' y. N2 M8 k7 d
                        assignLObj := rgmanager.rgAssignL;4 O) g; q- X* R5 G4 N& p
                        row := assignLObj.getRowNo(GlobalDistObj);
# Z  i( J6 g" ]4 Q$ z$ G6 p                        if Row = -1 then -- since 70& P. \7 P  z+ P; E/ A4 H7 L
                                if lan=1 then
; D$ o5 H, N9 l" _4 v                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),  j# w6 D! C/ b3 b
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
" c! g  Y  f5 x) U7 D( S! V2 b                                else
! d; ~4 w4 w4 s                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),( W5 v; Y- ?% R
                                                to_str("in docking station: \"",?.~.name,"\""));                                8 h* k9 i; F( p/ @) p- c
                                end;: x. s" e' j7 t2 ?2 d" d6 ]
                        else
% T+ u1 q+ \# I. ^; A- S4 r% I                                @.Destination := assignLObj[1,row];
3 X8 P9 e- M. C* I                        end;                       
" `  [( h) {5 ?, v2 z: J6 q5 p                        newDirection(@);
% @$ ?- }; g  k+ ^5 K; f1 B                        @.HasOrder := true;8 W# d+ X! [0 o. [9 a- O1 F
                end;. C" A" l+ m$ ^! }
        end;: R' Y+ `. F; G# a6 x& x0 |5 `( N9 u
end;        -- of the method, I( f/ y9 m: P! H
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
" R2 n2 d+ V: R- W! b/ p/ b5 ?3 W3 k  K1 ^) _( M
这是AGV_putin中arrive的method。
9 [+ H! |1 J6 }0 N" N& l
8 z( ^2 Y% N3 k0 {当到达物料速度越高时,这个报警更多,
6 a. N9 b( ?6 @2 C4 M9 ^" {可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。/ Q9 l- Y- q8 T/ f( J2 A
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
2 V( s2 g9 I& r8 {7 `( L; n% f, @/ }' {4 @( l
另外一个小建议,就是move,所有的move都可以这样
1 M9 N+ W. Y* R: I6 ^6 k3 ]6 Yif not move() then debug end
$ K) \; [1 r$ H0 t6 [( h' \5 f这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
( ^2 L  v" A3 u7 r5 splant simulation中的free libraries有AGV模板,
6 t8 w* K2 L/ X: w* l1 S" U/ F里面也有案例。
+ X7 U. L- g2 G4 E0 J( \我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。9 Z1 R) W. K7 h; w4 L) Q

! \* @0 j  u; G3 N. m: Z# x我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
% }1 h0 q3 A/ m5 Z0 q6 ?
- q$ _+ X2 B. }- Q$ W% h/ G那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
6 J8 D& k  a4 }这是AGV_putin中arrive的method。/ ?6 s! _7 S0 Q

) ~7 e9 H$ U$ K! e' `* k当到达物料速度越高时,这个报警更多,
' R0 D; C! x- A8 Y- Q  W
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-24 14:29 , Processed in 0.017242 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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