设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9315|回复: 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'
: B1 E! {/ w4 S*/1 k7 n2 I% ~  s
is
7 I+ r5 ]9 {4 {! M1 r8 @        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
: T% l$ u) M( C+ {, I* kdo
/ M5 Q7 T7 Q# c: e7 a        Lan := rootfolder.Internal.Tools.AOLlanguage;+ w) j$ m6 Q: o: X
        if current = @.Destination -- else return
; o5 E. C  `. g3 e# I9 T, ]        then/ g7 b* J% p$ Y( y0 q2 e5 t
                @.Destination := void;
, {9 X% Z( U* z3 y4 T                if @.occupied then
* _; q+ n9 r' A. p                        part := @.cont;
2 e( U5 q4 y' c4 p1 _3 ?& g8 {7 e                        @.transpOrder := void;
4 c) f- j2 o4 c7 i$ A" x( O                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
/ f; p. F  r7 d! J* }! R  \                                @,root.eventcontroller.simTime);1 B& F9 p0 y, L4 P1 {7 P# N# b
                        @.HasOrder := false;
: G9 i3 T" B' o$ E                        @.DrivingHome := true;
9 R# \5 M: w$ n( |) y0 |% Q                        rgManager.tryToStartTransOrder;
% i* c0 ]1 e8 s' `  |                        if @.Destination = void
2 ], H  d1 R! s& ]                        then -- no transport order for vehicle @0 l( @' l; G! m1 O
                                @.Destination :=
3 P) g# U4 U5 l# O) d" S4 @! t                                rgManager.nearestFreeStation(@,track.~);
! V) l# m/ n1 e; I; t) I                                newDirection(@);   
! I7 o! f6 s& P5 G- B                                if @.Destination /= void then& G1 s, a" n7 k; w$ k
                                        @.Destination.NumReservation :=5 u+ e% O' P* q9 X
                                        @.Destination.NumReservation + 1;
8 ^$ Z/ U0 k; O  B1 ~2 e                                end;+ {! a  Z* `, Y, i4 o
                                @.CurrIcon := "drivingHome";
& \: E/ j9 V" K9 ?                                @.DrivingHome := true;# s2 S' \/ x  l) N* b' F
                        end;( ]  A( o; q+ i0 O" M, W1 W
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station) ~" n$ m" E( |  @
                        part := @.transpOrder;! k5 D6 }( }( ?8 |& \) A2 ]
                        part.move(@);-- load part6 f& ~" }% Y8 V2 P
                        @.CurrIcon := "load";
- r6 ?/ A! g" f                        GlobalDistObj := part.globDestination;9 m" D- ~- ~7 O$ c
                        assignLObj := rgmanager.rgAssignL;
, F2 V7 T9 Z* Z  q                        row := assignLObj.getRowNo(GlobalDistObj);. M2 k: p& o- Q
                        if Row = -1 then -- since 70
( P5 E2 q! s6 C" u. K                                if lan=1 then
5 O2 h5 b" M$ f0 K' M( @' w                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),$ o: e" [( [+ n& I4 C3 m
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
+ g( l, o0 y+ C! n- E  q# v+ t8 R" j  w) V& l                                else) u  D( j/ I, X6 U0 J; N3 s' c
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
9 _7 M. L6 x/ B6 ~                                                to_str("in docking station: \"",?.~.name,"\""));                                ' U# t0 j) p# l$ }0 S
                                end;
6 p% t, Z7 [# i6 q' b                        else
8 J8 ~1 _7 B" A$ Z                                @.Destination := assignLObj[1,row];
2 J% F+ u2 ~! k4 C, Q0 B% e0 \                        end;                        ( v5 v$ X8 u2 t- M
                        newDirection(@);
8 k2 w. ^( ?2 J3 D4 ~7 N! t% V                        @.HasOrder := true;
! _: s  e: D$ U" J                end;! g, }% F* {! |: s
        end;
0 t. r$ a+ W  M3 P' h1 t( Z2 [end;        -- of the method$ n  Z8 P* a3 r/ b+ @$ O
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑   V5 u' z2 C9 ?* K& m( s3 ?

3 D: b$ y" D& v7 Z这是AGV_putin中arrive的method。
* y) C& S+ @+ F% Y; u+ n- K8 H+ G- r( p# k( |
当到达物料速度越高时,这个报警更多,8 O3 ?* E# y% M" p+ e
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
) E6 v3 P9 U% `! I& W$ w程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?7 \9 k! k' G  K& y% m$ g

; h. Y) U( X4 Z另外一个小建议,就是move,所有的move都可以这样
' Z0 X) ^3 u7 V* v" S/ D8 oif not move() then debug end
. a" M! B9 m* T' r, b这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
4 W% @7 f* u8 i6 \- {; ^, D( o$ @; Gplant simulation中的free libraries有AGV模板,0 @  J7 \0 t2 I" F
里面也有案例。
0 a' B9 v% {+ o1 J; `, e3 P我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
% w+ G: d- a6 q2 h2 v) M# I4 T; v" m/ |: w
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
- O' X2 C: u2 `: K, E3 e
: q' A$ d3 A2 Q9 X' P那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 8 r3 z( |* B9 ?, L
这是AGV_putin中arrive的method。0 W- ^/ |% A* u& N+ G) x
( b+ V8 ?# |9 a/ R
当到达物料速度越高时,这个报警更多,

+ D3 q: V, d1 H" }另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-25 00:21 , Processed in 0.018830 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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