设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8539|回复: 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'
& B( R/ w4 ?6 Y*/
& k5 D; T( P/ M2 |1 g3 Vis
4 B  n; n5 H  Y        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
+ ~. h- I& _( R) ido
# m* \8 _$ G3 V- g. e6 m+ g/ Z3 B        Lan := rootfolder.Internal.Tools.AOLlanguage;* a9 k1 J% h# _9 d, B4 \& ^  `
        if current = @.Destination -- else return
' r3 I0 _! r# Q/ L        then
5 r5 @+ {0 G9 d/ q6 f3 ]                @.Destination := void;+ }! s: t3 X9 ~! b! L/ _5 y  b
                if @.occupied then& V. T5 J6 M% x# L; I
                        part := @.cont;
3 p  `  t. j# ]+ @3 D5 T% S                        @.transpOrder := void;
. R7 B$ E2 l# @                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
6 k0 E" d. [$ o0 t  p) V) q                                @,root.eventcontroller.simTime);& P5 I& K8 F1 W+ w# U1 n/ w! v) {
                        @.HasOrder := false;
, c1 Y  y/ K" T) _7 Q                        @.DrivingHome := true;" |- k' o$ H& r% @* w1 K
                        rgManager.tryToStartTransOrder;
3 H* p4 `0 c* Q8 @                        if @.Destination = void: w6 e8 e2 W3 B8 U
                        then -- no transport order for vehicle @% V6 }/ i. t0 z  U
                                @.Destination :=
) e( C! T" y9 Y' [0 g  ^* k. I                                rgManager.nearestFreeStation(@,track.~);0 {2 k$ O4 v) j4 ]: i8 `! O
                                newDirection(@);   
" v, o# P5 b& [) S% a                                if @.Destination /= void then
. K; m$ S8 j, A: A+ Y- M                                        @.Destination.NumReservation :=
: y, O* @0 c, k) _) Z                                        @.Destination.NumReservation + 1;
0 e1 Y6 A; P  y                                end;$ ?, d6 Q2 N+ W! Q8 r7 u6 U
                                @.CurrIcon := "drivingHome";  J1 ^, Z& |* \' S* u
                                @.DrivingHome := true;( ?6 P4 Q1 _! }8 I7 p; d, P; R
                        end;+ Y6 z4 Z, r6 k
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station& \5 @4 S# |& s) N( d- H
                        part := @.transpOrder;3 G# M( e0 Y, A
                        part.move(@);-- load part
/ S$ c+ n" m2 d. ~3 b' a7 G                        @.CurrIcon := "load";
* _' a8 H* ]  V5 i* x                        GlobalDistObj := part.globDestination;% i5 s: k6 C/ ~
                        assignLObj := rgmanager.rgAssignL;" {% o& K# @9 G
                        row := assignLObj.getRowNo(GlobalDistObj);8 i( G# \- X: ^3 t% @# u
                        if Row = -1 then -- since 70
+ l7 W( K9 C9 T9 B                                if lan=1 then3 F7 U$ e6 k* `  P/ V# U. a
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),0 b  q9 m, g7 T
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ r9 i8 M3 y, g; a                                else, h2 d: _3 J8 m' z
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
- x$ U& Y$ }8 i5 C                                                to_str("in docking station: \"",?.~.name,"\""));                               
! l& H, P$ H/ W, @: m9 i2 A                                end;+ g- ?! }' Y& e6 f% V
                        else( ?( T' c' n6 x% {; v% ~; {
                                @.Destination := assignLObj[1,row];5 I5 q! F  e9 c% R
                        end;                       
8 V) ]" L# f1 @" I" N                        newDirection(@);
. P6 c2 d2 ~+ a3 H0 s                        @.HasOrder := true;
* V) ?* p/ a* |) G                end;  t! Q% Z% L; J8 f4 l6 A- r
        end;: ~! x* c3 N- j8 L
end;        -- of the method
7 N! I9 E3 P5 j, f% V
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
2 A8 {; E- H. ~, M% }
; r" ?5 k/ h* L% Y, Y& n* H这是AGV_putin中arrive的method。
+ g" a' s! u. J4 I+ M6 [$ x0 S0 |6 C! Y( I1 e9 S
当到达物料速度越高时,这个报警更多,: }' e. Y, o$ g4 W
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
+ A, s, n9 A% p! _$ v程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
6 r9 }: u4 V- L0 i- T+ V" P6 s9 Z' {7 n: M3 V, L2 f& c% A0 X
另外一个小建议,就是move,所有的move都可以这样  x  h9 H9 T& f7 q
if not move() then debug end3 u8 j2 K/ j% X$ H' a' G
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 }) B* B" V. Fplant simulation中的free libraries有AGV模板,
- m: k5 F" H; v/ k* ^9 D  B% m里面也有案例。
  K, c3 [- O+ u( _, w2 }我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 J- x' i; V( s0 k5 X9 d7 S, J
3 Q- i* k  t0 m  V; J6 N+ |5 F  u我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
/ f, F' n4 O% k+ T
. z  d4 G8 ^7 e  U- |8 T那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
3 r9 j0 F' ?( D& [, h这是AGV_putin中arrive的method。3 f: b4 I* V; r7 c/ t
4 M  @! V' h7 c6 U
当到达物料速度越高时,这个报警更多,

% a. y0 a0 W' ^) M7 I另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-10 02:31 , Processed in 0.016434 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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