设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5268|回复: 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'
# X- ~2 Z: {( f9 x1 e8 j*/
2 f( ?. R) e8 his8 t6 @0 O8 N( C) Z! @
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
0 {, ?' W5 K4 Ddo
: f9 }1 Q' ~1 `9 c        Lan := rootfolder.Internal.Tools.AOLlanguage;
0 _" X9 K* ?4 ^2 t3 `; O8 z3 p0 O        if current = @.Destination -- else return
0 t* i  u5 T& |+ J, I        then
, ]5 N$ j' |3 m; W9 Y4 j                @.Destination := void;
! N, m. ]1 c0 p5 s: }                if @.occupied then& A2 P' a4 y6 O$ d  w
                        part := @.cont;
4 O& I1 V( @5 h! y- w& [+ ~( f  U                        @.transpOrder := void;
; a1 h+ F4 @  W* ^& R& N5 G3 z                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
) s) r& D& {; v4 i                                @,root.eventcontroller.simTime);9 H" F2 A6 T0 `
                        @.HasOrder := false;
! ^6 o5 s3 l' c: u" m/ I" u4 P                        @.DrivingHome := true;) x: J* M% D6 e1 T( m
                        rgManager.tryToStartTransOrder;- l  J; [& j* z$ _2 [( M8 W
                        if @.Destination = void
' H2 v1 _: @6 k5 r4 v  O                        then -- no transport order for vehicle @. K9 D. J* x7 W8 Z# F1 G9 U6 j
                                @.Destination :=
5 M- W9 p) i. S( C" |9 Q                                rgManager.nearestFreeStation(@,track.~);0 s4 A+ C/ q% |: b5 N
                                newDirection(@);   
1 T' q7 Y+ `7 C  s6 U+ E, q8 u                                if @.Destination /= void then
, V2 N7 X2 Y, y/ g" v- S- }" Q) m                                        @.Destination.NumReservation :=; y  b6 P& ^% T+ _: A, A' |
                                        @.Destination.NumReservation + 1;
# _3 V! ^- h+ q+ U2 o                                end;
. U$ B/ o% r7 C" K4 B( L                                @.CurrIcon := "drivingHome";
/ j, ~3 s, H5 P                                @.DrivingHome := true;
! [7 [% C+ \& x* k/ N                        end;
% R1 }  J4 z. s                else -- the vehicle @ is empty, both vehicle and part are in the same dock station: Y  d% J8 j6 O% U4 c
                        part := @.transpOrder;
5 v$ W6 w1 M/ a& Z- ]* M2 @: r2 {                        part.move(@);-- load part4 O8 [# Z$ a* l4 F
                        @.CurrIcon := "load";
: D, ]& V5 [% [5 F) d/ U                        GlobalDistObj := part.globDestination;- W1 ~0 B3 F5 D5 R+ _9 K. Y* d9 B
                        assignLObj := rgmanager.rgAssignL;1 S6 F" m/ e7 P4 z9 |
                        row := assignLObj.getRowNo(GlobalDistObj);
, x0 G9 l' r% _7 A& u                        if Row = -1 then -- since 70
; C9 c9 V3 c# l) {/ Q, ]                                if lan=1 then$ U' O) A  a4 W3 u; E# o' }" P
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),0 Z- `0 I  z( x* m( {0 S
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
2 A) x9 v7 j3 S8 g5 p; c1 U                                else) f; k4 l* K6 n% [( n5 C# C  n& d
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
. t. q$ }3 i3 {% H* U! G, ]2 g                                                to_str("in docking station: \"",?.~.name,"\""));                               
: @+ O+ o1 H8 W; z. ^8 \* ~' @                                end;
- F6 s' ~+ \4 T  o0 m: i                        else
) c% B% E3 o; t* a                                @.Destination := assignLObj[1,row];% F, g) r+ Z' o: V& R' f4 A
                        end;                       
4 G6 [0 C4 s0 W                        newDirection(@);
# A% c( y7 R- t5 k/ p* b                        @.HasOrder := true;
/ t  X5 E2 X/ ?) [4 O4 w* m                end;
# y( s& p. v7 l: ?' j        end;3 \' x& E! e& }
end;        -- of the method0 h- M$ ~* b' i" f- ?5 f9 i6 L
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
; T9 e8 r* m- [! [! s
- E8 u( p6 s! C: x0 \这是AGV_putin中arrive的method。6 f. _! U1 a2 Z+ d

! Z: X5 q1 ~; U9 H4 i当到达物料速度越高时,这个报警更多," [" v. K& w- h' p9 b: ~  z
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
7 X4 v+ G% l, u+ q2 M9 O$ s; M* ^0 Z程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
/ y$ e( K/ }9 K6 X! W/ _" b/ _; [) j# _( A7 F# H: b, a7 {
另外一个小建议,就是move,所有的move都可以这样7 O; h0 x! c2 t& ~) t
if not move() then debug end3 O4 h9 k, `% [, Z- y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 S* q2 i( _0 X' W# A* T4 @plant simulation中的free libraries有AGV模板,6 T# a3 R9 {( X0 g
里面也有案例。
1 }4 h3 k) c4 a& y0 `我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
6 X# c1 }# V, b% G6 F6 ^) y, ~, V6 h" {6 Z
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
. J* o8 U+ v: K; }" D) q8 ]8 X& b: u' U. g! u
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 6 \3 T. @: u1 p# S- M! K
这是AGV_putin中arrive的method。
% K  d$ D! Q4 u& x2 r* Z; S  G
& m; u( Q9 @# `& `/ B当到达物料速度越高时,这个报警更多,
/ X) J( n( |! A- V. E9 \6 z9 m4 u
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-6 06:09 , Processed in 0.018003 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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