设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10065|回复: 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'7 N( i2 e+ V0 U8 k
*/
: H. y7 ]5 g$ t9 e. k' g4 q2 dis: y  h. ~: W; |/ |. ~, A1 O
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;! d0 X: Q# w8 n4 L
do! N' Z: t8 v+ R& X) ]5 Z' }
        Lan := rootfolder.Internal.Tools.AOLlanguage;9 [% d0 r- j+ O' `8 P. O$ K
        if current = @.Destination -- else return1 n* U/ \$ }) I7 Q9 D; Z
        then
1 e( M! F( ?2 M: l                @.Destination := void;
2 F" r. p" b* R1 j( K                if @.occupied then; A. m& P+ q' j2 Y  N' x! g: [
                        part := @.cont;
7 t8 o+ C8 W! c9 L, f                        @.transpOrder := void;. m+ C* B5 U; i* e
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( v4 Q2 F6 O( R9 v5 c  q                                @,root.eventcontroller.simTime);
& N: |) T! |  f  Y% t$ C6 Z                        @.HasOrder := false;
# X0 J& }6 g) K$ Y  M* u) \                        @.DrivingHome := true;
5 r$ h# V! L6 l2 V                        rgManager.tryToStartTransOrder;6 }+ a6 C* I# Q1 T6 M) ?
                        if @.Destination = void4 R9 e( j* a+ R# P* X; q6 n
                        then -- no transport order for vehicle @
" A& R& D3 p( E4 j/ M                                @.Destination :=
2 U( \5 Q# d1 U) B; u                                rgManager.nearestFreeStation(@,track.~);$ u+ ?; S! ]" |
                                newDirection(@);   
8 t! c) r; _& P+ f; ~% U                                if @.Destination /= void then
6 P3 F- v" Q. y) g2 ~3 ]. l( v% W                                        @.Destination.NumReservation :=2 i; z( V6 V! g: {0 p: K
                                        @.Destination.NumReservation + 1;
; i- ^& L7 J/ U& J  j4 D* J                                end;
; E1 o8 P- A5 E                                @.CurrIcon := "drivingHome";
3 M. N! b% g% c( B; O                                @.DrivingHome := true;3 y1 c3 C/ F) ~1 n4 P
                        end;
" z( c8 }, n! Q! k. Z& P                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
5 i: C. O. O# |                        part := @.transpOrder;/ V: q4 v3 Y/ ^
                        part.move(@);-- load part* I  f8 m1 ?' c2 m( j: q
                        @.CurrIcon := "load";  X% l% d1 D  Q$ E% c# [$ U5 Q
                        GlobalDistObj := part.globDestination;% \& Z( w) e* c+ J& t
                        assignLObj := rgmanager.rgAssignL;
) _9 b1 v4 y+ t                        row := assignLObj.getRowNo(GlobalDistObj);
% e1 d  Q# A' F# i                        if Row = -1 then -- since 70
, U8 E5 S( d9 s. k" @4 j& x8 D                                if lan=1 then
+ k$ p% [( _/ i: |! Z) |                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),  k; A* X8 V3 g8 L' G
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
3 b& A* }0 d- E                                else! N2 y) s9 a: N: m4 y2 I1 \
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),' b! `4 q7 w4 L4 X+ S$ z" e9 O
                                                to_str("in docking station: \"",?.~.name,"\""));                               
  }% o' J4 m8 {- M( D4 P" \& H) o1 D. E                                end;
) S2 X: ?  U5 P) T' H                        else
# z: l& ~! E6 C; l2 X4 `                                @.Destination := assignLObj[1,row];+ k4 V9 ]7 o" n; ^# c& m, y) z
                        end;                       
3 F1 _% I8 G# P& E) i% ~) E                        newDirection(@);4 H& q" O1 ?5 p4 l6 i7 N9 u
                        @.HasOrder := true;
" E% [2 O3 z) B                end;
) Q: `2 k- Q5 Y& ^        end;$ y% |4 @8 a8 {7 h2 S
end;        -- of the method
3 |3 B5 F  O/ ]5 |: n. }+ h8 v. L6 u
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
. z7 Z8 [! o# W! c! N1 N4 d
" e6 t. d1 E& H1 n" W& a; j  Y这是AGV_putin中arrive的method。+ [. C$ Q* x- g+ h9 a8 W+ |

: l* Q& e4 ?) n% p当到达物料速度越高时,这个报警更多,
) @5 W# G& A0 J! T0 E" @4 x* \可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( r& T* W+ w) O; F
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 A; h3 Y+ [( p1 d2 o; G
! ^( l* r' }' i2 I另外一个小建议,就是move,所有的move都可以这样4 Q! o( L) I; o4 m( I
if not move() then debug end
; D* |9 @5 Y5 P, f' I( g7 y6 p这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。/ I" W  s: `5 m( d7 |& V" I5 g7 [
plant simulation中的free libraries有AGV模板," Q2 w6 B4 t8 D/ S2 `7 _( _+ n+ X
里面也有案例。, c+ a* G! Y7 \1 u# y! d
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
" {8 L+ c' s1 k/ |6 I5 Q* d; A/ ?6 J5 A- x- b3 J4 T3 G
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
! _5 i/ N, c; E9 G3 l5 R
6 _, N7 P! B' W) ^那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
4 t' s# k% J' l5 i9 `% B* [这是AGV_putin中arrive的method。9 o* u% u( [) g* t/ C6 x2 N5 o! D" H

3 Q) f: @8 }7 G7 h  n  `* o4 V  U当到达物料速度越高时,这个报警更多,
9 p0 r7 g. N3 W- ?
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-11 10:44 , Processed in 0.015119 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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