设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8936|回复: 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', o# K2 u3 c1 o+ N2 `- v( m
*/# A2 M  j7 r  \, X" F. V
is/ P: P1 c6 G  e6 @
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
/ T& M: c& B- ?! |" Q7 _do2 Y  k+ ]* }# L3 r* E
        Lan := rootfolder.Internal.Tools.AOLlanguage;
4 H" }* m  J" u, r; d. O: g        if current = @.Destination -- else return
! L% J% h5 P6 [        then, w8 z9 X* o3 X! m0 F+ {+ t6 ]
                @.Destination := void;
' ]9 S: S% t; D3 I  a4 N                if @.occupied then) I* h; D; U# Y
                        part := @.cont;
) E% E5 ]: \/ j  |                        @.transpOrder := void;
6 x  }; y  `+ z" F" _' e$ ^                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
$ M) s6 O% `3 z                                @,root.eventcontroller.simTime);( J9 S1 `* P' ?/ q
                        @.HasOrder := false;
( b$ H, c$ A7 t7 \                        @.DrivingHome := true;+ F  q9 R6 E. P6 |/ _; \
                        rgManager.tryToStartTransOrder;
. V; j& P2 i, l8 V  I# d4 w' G                        if @.Destination = void
# X1 e& G7 ]' b5 ]% G. Q( R& N                        then -- no transport order for vehicle @; G1 W. K% K+ u5 N" o# h
                                @.Destination :=
. E' C. @: F7 T0 U8 i0 p                                rgManager.nearestFreeStation(@,track.~);+ H) B: @, R6 B$ P8 |, `- l- J2 H2 U
                                newDirection(@);   
+ G  |+ R$ N' D$ J9 E  J% {                                if @.Destination /= void then( ?; {% ^+ z* R! }0 _1 y
                                        @.Destination.NumReservation :=
- c4 h$ X9 D* d' e* F                                        @.Destination.NumReservation + 1;0 [1 o: o* S3 K8 g
                                end;" Q, a; C* N! a/ S6 I; j" T
                                @.CurrIcon := "drivingHome";4 X9 R- |+ P* R# @
                                @.DrivingHome := true;
  i; g% \3 c  j" v' e7 _4 u# e( Y* _                        end;/ y! D+ r. D0 K
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
* L- D- J, C8 {5 A- V, T                        part := @.transpOrder;6 ~) u8 \* p, l
                        part.move(@);-- load part
6 B8 m; p9 Y& l( G1 v                        @.CurrIcon := "load";# I. }( ]9 Q8 x( \& Z2 a$ |
                        GlobalDistObj := part.globDestination;- a9 ]0 T2 S$ n$ ^9 h+ v
                        assignLObj := rgmanager.rgAssignL;
- t4 ?6 R2 I% |( q" A% Q                        row := assignLObj.getRowNo(GlobalDistObj);: L& N+ t% f" P2 S: `9 l
                        if Row = -1 then -- since 70
1 z) [# L5 [: }( u% M                                if lan=1 then2 i! c- ^( a2 P9 K* _
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),% v6 w- z  F6 x3 n% u6 ], J
                                                to_str("in der Andockstation: \"",?.~.name,"\""));: p$ n* h# V" }, j: {; h
                                else
# t6 U4 y$ H9 S( C# k8 k                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
; z% G% R; s( r, w( @                                                to_str("in docking station: \"",?.~.name,"\""));                                1 k9 x; o: |4 r- d& s- D6 S5 A
                                end;9 L4 q8 A3 T4 M$ d; [
                        else1 }5 e( O2 x! m2 A
                                @.Destination := assignLObj[1,row];. k: |4 o* y* H5 [" P
                        end;                       
. w& q; R8 X$ @                        newDirection(@);
3 N; q4 o6 {7 A: j$ T                        @.HasOrder := true;8 d/ w& s3 m$ w: N
                end;
: U4 H" W8 J3 X  B. m7 G        end;
3 Q  @* R( M7 O+ |/ Iend;        -- of the method) j" |/ \9 m6 M1 W, W6 D3 O
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
+ ]  s% |' P: I* @/ b
6 u$ G5 o- j/ ^. }( j  q这是AGV_putin中arrive的method。5 I& g) A- [; h4 v2 }) ]

. D8 c0 T* Y9 _3 s( Z当到达物料速度越高时,这个报警更多,
9 M6 I1 D1 n7 p6 h( \6 ?可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。* U6 R+ Z0 K$ F5 y# ]
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
& J, O& ]" e# ?& b" B1 Z( X  T; M% L6 H# y
另外一个小建议,就是move,所有的move都可以这样
3 q& y) l1 m; j3 h0 Tif not move() then debug end' }, N, l% {9 r2 |; L
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
% J( a* y' K- G! T- M3 e% Xplant simulation中的free libraries有AGV模板,
) a/ O- Q- X' Z* j/ h5 I( X- h2 }里面也有案例。
0 s, e. X$ ^* e) X( q0 {/ m我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。! y: M9 @8 i# `- e8 A

, N: g1 }- s) ]$ B7 m" r我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: O: J4 n' V3 b3 X3 I" x9 l; }+ q9 p1 v) `. m/ \* H1 p3 ]3 p
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
( L  s2 U. g! ^, X% H" Z这是AGV_putin中arrive的method。
% k8 n1 T8 R+ P: H0 e5 U( I5 D2 n; Q! [6 g$ B; T
当到达物料速度越高时,这个报警更多,
% E2 _6 e# a9 g. Z, ]& C
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-5 06:58 , Processed in 7.623829 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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