设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8403|回复: 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'
5 d' z/ C% S8 ^7 b: l& K*/% ~. a8 p7 K9 {
is7 C3 N, c+ E: U5 F  _( P! a# J: H
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
# a5 k( a* |0 P, k% X8 gdo* B, t. B' P/ E( ~& ?) y
        Lan := rootfolder.Internal.Tools.AOLlanguage;) D7 B& W4 J! |' ]8 F9 x/ t/ z
        if current = @.Destination -- else return8 B! i: A6 h6 Y  q
        then" K4 Q! d9 M) y
                @.Destination := void;
7 I! a; N( A( k- i5 w0 o* j1 \  B3 p; t                if @.occupied then6 @! T  Q! b& p( g
                        part := @.cont;
7 w" E6 h; n6 m2 P. }                        @.transpOrder := void;: R+ [  i  U, `' g1 U
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
1 m8 s, W) G. R- A                                @,root.eventcontroller.simTime);
/ }4 V+ ]: @6 e7 e$ {6 }) T7 i$ n9 N                        @.HasOrder := false;
! F: d! L( }6 A' c& J0 D3 F                        @.DrivingHome := true;( i! g6 m5 K/ u# A6 I
                        rgManager.tryToStartTransOrder;! l/ w( e+ F( m7 Z
                        if @.Destination = void
8 d) A+ j( S5 N+ I4 x                        then -- no transport order for vehicle @/ f" g0 _5 T8 f
                                @.Destination :=( j6 L% D$ |8 R
                                rgManager.nearestFreeStation(@,track.~);# @0 z& c, t5 @
                                newDirection(@);   + _) t+ e3 L- i( a' Y# [
                                if @.Destination /= void then
: P+ P5 U6 Q4 D4 o' l7 W                                        @.Destination.NumReservation :=: n$ j% F# J% w# }; _, T
                                        @.Destination.NumReservation + 1;9 V% b0 @3 |# u& K# G7 Q3 v
                                end;
0 n' D' j% V# |; |5 _                                @.CurrIcon := "drivingHome";+ I2 V7 v1 X- [+ R* F
                                @.DrivingHome := true;1 z. ^6 l' i  I- E4 T
                        end;
+ ^4 p/ l9 T& A0 U. g& R                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 q- D( m( x6 d1 H2 r
                        part := @.transpOrder;5 `+ I) L( }& v# W1 j( a' c4 Q) Z
                        part.move(@);-- load part- s/ G: T, z: w" W2 j
                        @.CurrIcon := "load";3 u5 c* G( j: @. {. t# E) g1 i4 E
                        GlobalDistObj := part.globDestination;: V7 }4 g2 o) q: V
                        assignLObj := rgmanager.rgAssignL;
: x8 I8 U3 Q( ?) a1 }                        row := assignLObj.getRowNo(GlobalDistObj);; g( J: n# H6 F4 ^( r6 r
                        if Row = -1 then -- since 70' z% b8 v9 F; }# s# ~5 _" d
                                if lan=1 then
8 Y! L$ h: l: R" ?  w                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),) ~7 C4 A8 i" N6 S
                                                to_str("in der Andockstation: \"",?.~.name,"\""));8 q+ C8 S0 E% r9 E+ y' f
                                else
2 y; U" U: N, m3 C' _% ]                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),+ [$ M6 O& U) ]$ @6 [" @* ~1 l
                                                to_str("in docking station: \"",?.~.name,"\""));                                # u) j0 e1 T9 l2 t4 O# q, T1 @+ A
                                end;
2 o' [1 j- K: M( U0 a7 e& Z                        else1 b4 `  I# m: H2 o9 s, Q/ U& i
                                @.Destination := assignLObj[1,row];
5 N7 a1 B0 P& D/ t                        end;                       
( ?7 K$ R% H' b9 s% N# A" a                        newDirection(@);
7 Z, Y! k9 c) T: g6 l- w                        @.HasOrder := true;+ }$ C( _5 V* [) g
                end;' {3 ^- k' T- K# G# A( H
        end;3 V# E2 r7 E$ J4 a; [
end;        -- of the method
$ a' Y5 h  e) Q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
$ \  @5 E5 @/ b( F* c1 H; G5 C* q
这是AGV_putin中arrive的method。* Y' v' \9 A$ }4 j" k# J

" A- d- q6 y- S  e9 C, U当到达物料速度越高时,这个报警更多,
8 g  A9 g! Z! Q可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
+ _6 F- Q& C% e7 C程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
# J2 o9 o" k$ J5 B
; O2 V, u* i  X3 X1 N# Z' K另外一个小建议,就是move,所有的move都可以这样" |8 l* W7 X) x+ G2 z9 Z
if not move() then debug end
9 U1 {% M2 E" C这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。2 m  [5 _7 Q2 a3 H
plant simulation中的free libraries有AGV模板,' X1 i" o. K2 F6 b
里面也有案例。3 |2 x/ g" o5 |: G0 k
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。; {9 \4 T2 j& e4 O2 z, O" u! w* r
; S+ e/ d) j7 `! ?& U9 g* u
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
  T) `6 w1 I+ O: e; N0 u1 h6 A" [) \
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
( U( z* T# c5 X, K" ^这是AGV_putin中arrive的method。) e& q4 g9 l; g8 I
$ @, W: g) A. M  T! V0 N( ^8 r
当到达物料速度越高时,这个报警更多,

4 f5 ]5 P8 \( }: ~6 A0 [另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-1 23:25 , Processed in 0.019417 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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