设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5537|回复: 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'
% V- g# Y/ a% g5 F9 ^*/. N( X/ M' H7 H: U1 M* D$ {
is
# f$ ~  b/ E' \  y8 J7 k        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
; d1 b1 H0 v8 Rdo3 ?9 A5 `' y4 _! R! n5 C: G% i8 m3 A3 T
        Lan := rootfolder.Internal.Tools.AOLlanguage;
4 x+ C+ \6 c( C' H- p9 Y        if current = @.Destination -- else return
! C- M! U! J; B/ d4 _        then
6 Z" j2 h5 @) _& W6 w! c2 _/ m                @.Destination := void;2 k1 {2 C8 q5 |+ R/ Z
                if @.occupied then+ x9 s# u( O( B
                        part := @.cont;
/ N& N# U. ~7 T7 f3 t  P( n/ F                        @.transpOrder := void;) B4 T5 i9 I/ x  l, a9 _1 h" _/ Y: S
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,5 e4 ?& |# n" Y! V: i; w# `
                                @,root.eventcontroller.simTime);; A! \2 x0 a6 P- Y4 D  C
                        @.HasOrder := false;
( _/ b0 _1 W5 W; x* m5 Z                        @.DrivingHome := true;
( |8 ]! j( {5 Y' j" \* K                        rgManager.tryToStartTransOrder;
: z( a& F% Z* {1 D+ L                        if @.Destination = void
( z. l$ T% e8 N/ G; `6 ]                        then -- no transport order for vehicle @
( E6 e7 D( S; Q/ \                                @.Destination :=
- [7 j. \# |4 p4 f                                rgManager.nearestFreeStation(@,track.~);
) m1 s' I9 R+ h+ ~  X# u8 @, o9 C                                newDirection(@);   $ ?" ], {  G! P/ M/ x0 U! h! U2 D
                                if @.Destination /= void then
1 A# G" e) v8 s; b$ j- ~                                        @.Destination.NumReservation :=( F% w4 p  u- F; V' z& A
                                        @.Destination.NumReservation + 1;
$ M7 a9 V1 F2 c! z  @5 T  E                                end;
2 e2 P! O, A4 t; Y8 t$ K& n% ?: \                                @.CurrIcon := "drivingHome";
' e$ {* I5 G6 e                                @.DrivingHome := true;
, S- B' o+ M! x& o0 y3 C                        end;6 E6 Q" O2 t! d. o
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station5 V/ f' z* j5 P5 X* R' a
                        part := @.transpOrder;
2 ?0 h% g! c8 P  m* {! t                        part.move(@);-- load part& Y& o  _) ^8 i
                        @.CurrIcon := "load";
: b9 a4 i5 r/ Y% b! ^                        GlobalDistObj := part.globDestination;
5 ]3 ^6 ^) q& w0 {! B                        assignLObj := rgmanager.rgAssignL;: ]' K2 W" D) f& h# V
                        row := assignLObj.getRowNo(GlobalDistObj);
9 P$ p4 }* x0 N4 v                        if Row = -1 then -- since 70
. l& m6 v/ k7 J" h7 Q                                if lan=1 then# X) [  k1 {3 v7 M( T$ m2 c7 K& T( m
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
! H) M  s' b' g# I                                                to_str("in der Andockstation: \"",?.~.name,"\""));5 r/ b9 S  V  C
                                else8 h7 R) R& j/ Q
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 ?$ @/ V/ q6 D                                                to_str("in docking station: \"",?.~.name,"\""));                                $ @% m5 D: x* A# k! t' Z6 n
                                end;- M5 C/ {) F$ q* r( o; h4 O( n& d
                        else
. |# Q9 F* M- b                                @.Destination := assignLObj[1,row];
" V' U! P1 F: F* c9 t. O  N5 d2 c                        end;                        + u6 K0 \) I6 e2 D$ E
                        newDirection(@);' u# |  ^& ?' N' t
                        @.HasOrder := true;
2 i+ P9 c% |' q2 Z                end;( H! k$ e2 I- o6 ]( W
        end;
$ ~# P+ w2 {' _' h9 q1 ^( gend;        -- of the method
) C9 y  ^, a( w  O
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
$ h6 e2 v9 C! N# j) h4 E3 S1 k. j% p8 m5 X
这是AGV_putin中arrive的method。
; O/ G, c7 k% E: A) I9 A  d& Q: L8 l% v# h
当到达物料速度越高时,这个报警更多,$ m/ e; }, Y+ n) r  D
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。# m6 [) V4 n! ?" g# U
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
0 x. v( o5 i  U$ H! g* K" Y) P# c, w4 X$ K! |  a
另外一个小建议,就是move,所有的move都可以这样
/ A9 r7 ?# V' i$ f9 `. u' sif not move() then debug end1 N4 m1 O: i, r2 u0 D! J7 y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
+ b& f1 w9 o' J- Xplant simulation中的free libraries有AGV模板,$ n4 A6 e! u! B- j3 f
里面也有案例。/ M. V. z  u1 l9 _: Y
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。0 [0 v( R+ X: R% r, t/ Y8 d

  N/ I1 e0 v# {. b! u  m我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
5 g+ @, D% ?) |1 a
) z! B% z2 c3 \6 w& p那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
/ m" J6 s4 s4 M0 C/ P% p这是AGV_putin中arrive的method。
* q5 N, c& U  H
& C2 n& r& ^; ^6 g当到达物料速度越高时,这个报警更多,

, [! @* A# q* I- P: H另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-2 21:05 , Processed in 0.019018 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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