设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6896|回复: 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'
/ C' X1 y0 v4 q*/# K& Q; h! U: p# N" c7 ?. w* w
is
, d( k% R' P) j: a; h* y6 q' {        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
9 p# C! ^# |2 gdo/ L/ C1 K* ]8 x# R
        Lan := rootfolder.Internal.Tools.AOLlanguage;+ f+ C+ O  b0 F$ Q% s; k: H# ~
        if current = @.Destination -- else return9 l" o: `/ A) Y7 E/ G: G% S
        then' I; Y: W1 E6 K  k+ X" a
                @.Destination := void;: C# s7 \' ?! T0 @
                if @.occupied then- m+ M* @* j3 E- P
                        part := @.cont;
4 I& h' N5 [( q                        @.transpOrder := void;9 b0 z- C6 O$ W2 U
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
' K# r+ j# P) M4 k2 G  ~                                @,root.eventcontroller.simTime);
. P$ |9 h8 n  C: S/ Y! Q, i1 `                        @.HasOrder := false;4 j  i& N$ ?  q% Y, H' t# w
                        @.DrivingHome := true;$ l7 E( n* W! n2 q( k3 ]
                        rgManager.tryToStartTransOrder;6 ?- ^+ {4 j/ |+ L) N" s
                        if @.Destination = void
- o9 R" z: u. i+ z0 M                        then -- no transport order for vehicle @, o6 \, @2 w! d  ~0 ^- m/ V
                                @.Destination :=
; F, B' o2 t' t  k+ d- T                                rgManager.nearestFreeStation(@,track.~);
. b( q; c" }$ k  {" D, X                                newDirection(@);   3 O; M- k# r9 n2 w6 Z7 }/ y
                                if @.Destination /= void then! y$ F& g/ W2 [6 x
                                        @.Destination.NumReservation :=# p; j" f- g# R5 l8 q$ `+ Y- F
                                        @.Destination.NumReservation + 1;
. p" \+ o9 S) n9 c                                end;4 s- h+ t9 {4 g( v* g
                                @.CurrIcon := "drivingHome";/ |: @7 H8 w9 ^8 j* j* l
                                @.DrivingHome := true;
* a3 D6 T) j: r" r# d                        end;- x8 U8 {; r6 l4 Y0 f/ J1 P
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station9 U, x5 ~1 X: x4 x( v5 q
                        part := @.transpOrder;" c0 C, ]% @; j1 M! e# f) ~
                        part.move(@);-- load part
) c: A5 y- I4 E/ I5 V1 Z. z7 l* m. I                        @.CurrIcon := "load";
/ \% ]& w( y' @& [/ h! a                        GlobalDistObj := part.globDestination;0 b3 A6 i3 d0 K4 t& O6 ^! k- ?
                        assignLObj := rgmanager.rgAssignL;* W% p+ H  M* z1 o5 q3 J
                        row := assignLObj.getRowNo(GlobalDistObj);
1 v- e) D/ N0 b, g) F# s: y, f$ r                        if Row = -1 then -- since 70
$ X; e' C# G6 w6 S' L                                if lan=1 then' z8 D- G: ?6 Y! P! |. `
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
, s! e* H7 u+ J9 l                                                to_str("in der Andockstation: \"",?.~.name,"\""));0 }9 A3 F9 E  z* L; P3 _0 D3 @0 K
                                else
2 P' U7 a& E- j                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
+ k, f- J0 ]7 }1 ]5 Q                                                to_str("in docking station: \"",?.~.name,"\""));                                # t0 K: x  J3 S6 H9 Y! b9 E  U( ]' {
                                end;9 G" _$ ?( E* @' \
                        else
; A& i, a4 `1 \  S                                @.Destination := assignLObj[1,row];, m: Q; G5 Y4 `# ?. U2 D
                        end;                       
: L/ i/ V3 m* G5 w                        newDirection(@);8 l3 c+ g! u' J: s7 _  b: g
                        @.HasOrder := true;( r; G1 \7 Y+ f5 l$ n) u) i. J
                end;
9 h5 i; Q4 p: g- i) ~& N        end;/ i  I/ c$ T6 k1 q7 \
end;        -- of the method7 R. s/ F/ ~7 Z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 - B+ g2 @) V. p( W5 S. r
" [3 S: m9 u! o# Z: B
这是AGV_putin中arrive的method。
: \- [  R9 @0 f+ F5 O- F
2 P# ]& D! x4 h9 W  f$ ^当到达物料速度越高时,这个报警更多,
& t+ g, h( V8 b( T$ Y8 n) j可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
0 H  X  i: e! F* q  ]! E) |程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?. x! ~4 \5 F; O3 H2 m9 a! |- u

9 ]: I. d  Y. b8 j9 A另外一个小建议,就是move,所有的move都可以这样  D& G* H) M( Z8 f( q4 j+ S
if not move() then debug end
! E, W, h+ w  ~! q这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
. B/ c$ @' `$ @4 p) R. Mplant simulation中的free libraries有AGV模板,( e( R* B3 F0 E# H" d; J; V/ m4 \  W
里面也有案例。
& w7 _* p5 A* K7 F5 V, }$ Z我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
) K4 a/ o, K* L3 Z( A& D
3 p* T9 u5 F+ d) s4 I3 v# I. v我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: A0 |0 U; }. S* z& a4 e/ c
/ ^- l7 l/ u, l8 U7 y& X那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 0 [4 x: F, Z+ Y6 e& ^; }- [
这是AGV_putin中arrive的method。
) [: y: L  Y4 L  j$ ^" L7 h+ A) o' i* @7 s" n
当到达物料速度越高时,这个报警更多,
' b$ M# P( k/ D4 V& {9 |( [( b; ~
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-5 10:15 , Processed in 0.018502 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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