设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9712|回复: 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'! K! G9 Y8 @. G& C/ V
*/  ^# I1 j7 t" `; G( t- O
is& V. C: p3 G8 W/ a
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
. C# w( b' _7 S" R: ^  q" B% edo8 u& R$ q: A, x3 Q0 H/ F& D
        Lan := rootfolder.Internal.Tools.AOLlanguage;& k# {. X2 _+ W0 J! `' H
        if current = @.Destination -- else return7 \, h$ U* l- F( y
        then" \; `+ J' m- l# u& s& L# p- s' y
                @.Destination := void;
8 C) Q  D5 \3 t                if @.occupied then' M. x4 i2 Q% ]" Z
                        part := @.cont;1 ]% K- a7 Y# S+ _- O; Y
                        @.transpOrder := void;
/ _1 [- U7 Z5 y9 ?1 r                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,; t/ ^9 i- y+ s# d' H8 s- \
                                @,root.eventcontroller.simTime);
( L+ h  \+ F5 D& y+ m                        @.HasOrder := false;6 M8 Z) d- b! j! @  @
                        @.DrivingHome := true;
% @, `% h5 C$ y5 V: r                        rgManager.tryToStartTransOrder;
# d. i% Q& ]% ^5 d                        if @.Destination = void3 g* R* M* B4 Y" ~9 j
                        then -- no transport order for vehicle @4 l% E% Z5 s  T8 V. ?" m
                                @.Destination :=
; L) a+ h7 |  }                                rgManager.nearestFreeStation(@,track.~);5 O. \3 N3 a% n! l
                                newDirection(@);   
. F* O9 S- ~. s0 [- I                                if @.Destination /= void then
! m: l2 t+ K) y                                        @.Destination.NumReservation :=
! a7 Z% A  Q! ^$ X' |                                        @.Destination.NumReservation + 1;  O, j9 x; D9 n6 d0 `7 r
                                end;+ @" R3 h7 D1 {5 K9 Z" s( h
                                @.CurrIcon := "drivingHome";
3 V+ ?% B5 u" m# I6 [: p5 W. {" r; s                                @.DrivingHome := true;
8 N/ B! G. q2 t4 B' l                        end;
* X, x5 c% d; j- T$ c                else -- the vehicle @ is empty, both vehicle and part are in the same dock station; h0 n9 w. s5 ]* X& ^
                        part := @.transpOrder;
7 l+ N% V% z5 _  c                        part.move(@);-- load part
3 V+ _8 r' V7 X6 {7 ~$ q: R  R                        @.CurrIcon := "load";, I7 }. b: B4 L6 A8 [4 p' t' L
                        GlobalDistObj := part.globDestination;
; O$ a$ b/ N7 [6 h# Y                        assignLObj := rgmanager.rgAssignL;  s/ ]4 t! @$ Z) v' X9 L3 z
                        row := assignLObj.getRowNo(GlobalDistObj);
. @1 U' f. m  \  `! V                        if Row = -1 then -- since 70
& \2 d9 ^# X" K                                if lan=1 then
3 @+ b& R& p7 x* p                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),$ W- E/ n2 A8 g" V6 d* h5 S
                                                to_str("in der Andockstation: \"",?.~.name,"\""));0 d$ C% Z9 W/ v3 }2 V
                                else0 q0 s- D3 ^" B) E" T
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),+ m$ u+ U, R: {! [* H8 y
                                                to_str("in docking station: \"",?.~.name,"\""));                                & {2 T6 c( n. j. H2 d
                                end;0 }/ }: f* N* k$ H8 `
                        else
7 T3 a+ ?7 [0 P1 x! m5 m1 U                                @.Destination := assignLObj[1,row];6 S/ P2 u: g0 |
                        end;                        0 A; A9 V7 D  I2 g& F; [, ?
                        newDirection(@);
7 I/ j6 Q' X& S* c" m                        @.HasOrder := true;- U5 k1 f3 q8 B& q* v/ X
                end;) r3 U* x  e# z, n+ t  o- }: S
        end;
1 {2 D9 c6 k% n; [; lend;        -- of the method2 e4 y. z1 q' W/ F% w
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
! p  }1 N. t* r4 h$ k/ ]9 W5 ~  E6 f9 f& ~+ k1 b% D
这是AGV_putin中arrive的method。
% f( p# q1 E2 _; P3 r: j( f  R0 L6 o+ e
- ?' n- w- r9 r7 X6 ~9 ~) p当到达物料速度越高时,这个报警更多,
9 O+ C2 ^7 e$ n& W: K+ Q可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
2 A7 K6 |: A4 m$ ^; L程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
+ e. ]3 _0 [+ O* B5 I8 Y) s8 c7 o4 e9 h0 ~0 k2 v- E" J
另外一个小建议,就是move,所有的move都可以这样9 `4 \# K0 I( P& @( r% M
if not move() then debug end0 ]0 N9 b5 r$ B, l
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
0 J$ ?4 v& D0 x4 e7 oplant simulation中的free libraries有AGV模板,1 a. p( g; {' z$ {7 ?' l
里面也有案例。2 y- J5 o- W+ K8 s1 }( M; z7 }
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。+ \  N- e0 G/ M% z6 }' p
; @" X( p! ]2 P7 `/ _( Z7 w! c
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ' D9 c7 c3 q! @; C5 p
. e& `* h$ W, J" s& r/ t' X' C8 t4 r
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
: {5 E$ L! }8 }9 \9 J这是AGV_putin中arrive的method。
- m. a. V( l8 v. Q0 ~. K9 {
" M. n2 H$ |6 [( O  u3 L当到达物料速度越高时,这个报警更多,

" J% p3 Y# O; }- ~; z4 b& t6 U% ~另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-19 18:22 , Processed in 0.022723 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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