设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6772|回复: 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'
! z& a! ^  \7 d  v7 _8 }& |2 c*/, ^9 c: G0 I( i: @% G5 Q$ C: `: n
is
: o1 g& G8 |3 }3 R: ~7 q8 h        part, GlobalDistObj, assignLObj:object;row,Lan:integer;0 d3 [" K, [) L/ T& Y
do6 |- a& i$ `/ m
        Lan := rootfolder.Internal.Tools.AOLlanguage;9 x+ @. `$ |  N0 Y) J7 Y# O9 E
        if current = @.Destination -- else return
2 V, f( @* t3 o) G        then3 Q  ^) W; I8 [- ]' D7 p
                @.Destination := void;
. a! I; N+ ~2 i                if @.occupied then& x4 c+ o9 V* v$ s! U
                        part := @.cont;# r! h- U0 q' \0 |, x4 G
                        @.transpOrder := void;& n% u3 t9 `8 s: B8 @% b( K; T
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
& h/ R) r2 D1 H% G4 e                                @,root.eventcontroller.simTime);
% z8 Q1 B' c' A$ P$ i9 t                        @.HasOrder := false;6 b5 d3 _3 _, Q1 j7 l2 x, M
                        @.DrivingHome := true;3 |0 I$ K9 L0 w" P3 j9 ~; O$ C
                        rgManager.tryToStartTransOrder;
' p5 ~) T# b6 j8 y                        if @.Destination = void( c  [2 o$ \5 ]# m2 k
                        then -- no transport order for vehicle @
  f% C' o5 E7 y; q4 B" f                                @.Destination :=
3 x4 `+ ]5 X% a3 C$ k3 b8 h                                rgManager.nearestFreeStation(@,track.~);
. q* |; J  s" I) \2 t; f                                newDirection(@);   
& \! R4 e; R1 q# j0 _* g& ~" S                                if @.Destination /= void then
  {; ~" D4 U- Q! h                                        @.Destination.NumReservation :=9 j' y+ v% k  W6 {. A$ U+ E( D
                                        @.Destination.NumReservation + 1;
" n6 l) |6 R4 s* ?                                end;
1 W" G9 b# K  o% L$ m                                @.CurrIcon := "drivingHome";" ?5 D" a1 S5 d
                                @.DrivingHome := true;5 o- [- v2 y6 {7 |8 _- f
                        end;7 c) @* G& K. D1 Z/ y: i
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
6 r! j% |  L6 W+ R! b                        part := @.transpOrder;6 S, }, O0 j/ z# S0 A( i, B% W7 D
                        part.move(@);-- load part
" w0 z6 t1 z' [2 U                        @.CurrIcon := "load";$ z9 K5 c' b$ r: k( S
                        GlobalDistObj := part.globDestination;4 A5 j3 ~# U, h) o
                        assignLObj := rgmanager.rgAssignL;" a' m5 ^* N2 S3 \/ s
                        row := assignLObj.getRowNo(GlobalDistObj);
3 Z& N) B" l+ H) Q# {9 n                        if Row = -1 then -- since 70
# a# ~$ U( u1 G! E5 c" _2 l! r& X8 v                                if lan=1 then
' w; j1 @: Z2 B                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
! Q! j4 I& g# z& X; E1 |& s                                                to_str("in der Andockstation: \"",?.~.name,"\""));; m, E' \+ c: U  s( Z5 d
                                else. n% g% a6 A, V( b3 x: D
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
2 d; ?; f2 T% N) q' D                                                to_str("in docking station: \"",?.~.name,"\""));                                4 Z9 a0 A4 t4 w, U+ ]
                                end;1 o2 ^) a* R  X; d/ I& X
                        else. |" v  K$ Q9 |& @- q+ h0 Z% k3 E
                                @.Destination := assignLObj[1,row];
/ z/ N2 }- f6 Q8 o  I                        end;                       
5 y) j: I4 V  T' y4 E                        newDirection(@);& ^4 Y, r7 t: G7 N* P
                        @.HasOrder := true;
7 M5 J  h3 `' }, B  o) s  A  g                end;
6 C$ V/ i# P+ b        end;) r6 E, {4 Q  L/ L* [' D
end;        -- of the method
+ G  e4 U6 Y: C, ~7 ?# M
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
! V! D+ r+ X( f/ d" g) E
2 w  D$ e" M3 Z1 z6 L8 u. I* I- T- H; y这是AGV_putin中arrive的method。1 ~: E  k. H  S  P' a/ {9 x2 ~

3 [8 J, C! V" G% |' A/ E0 K+ k当到达物料速度越高时,这个报警更多,
7 C0 {& u7 y! I可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
; h' H, o5 z+ y3 t- X程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
0 o! m" X: _+ Z9 C
% ]; z5 W$ V, d. \另外一个小建议,就是move,所有的move都可以这样
; r% j7 ?! g/ z; ?4 ^1 d2 Fif not move() then debug end" K3 v: ?/ ]" c4 G$ Z3 f
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 Y4 W3 @: E# B0 n7 X$ S7 X9 G7 Kplant simulation中的free libraries有AGV模板,
9 o& S' B  o5 O$ U* H里面也有案例。
) U$ v% L6 e: ~- v! K$ L我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。/ i# J8 \0 I" s( e& K; z: Q7 G# }

7 x2 E3 r3 `! y6 ]# j2 I, B$ f% j我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
0 i9 y: m0 D/ s. ~
: {+ g/ N; I0 X那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
; v; E4 \6 z* M& _2 A& j. `" ]这是AGV_putin中arrive的method。( y4 x2 p( ^5 z7 [2 r+ u" n  K
! T' d3 A* o  y% M9 [
当到达物料速度越高时,这个报警更多,
, Q4 Y- l& A3 W# M: a$ A0 j
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-25 22:21 , Processed in 0.022553 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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