设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10137|回复: 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'6 _6 g: c. c, T3 }
*/
) H1 {3 W( p8 ~4 j& Cis
6 l  P4 A- z  n. _3 l! N        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
9 }/ U4 ]. M$ i0 L+ ddo
; ?9 U2 ^0 G. s& r0 v( d        Lan := rootfolder.Internal.Tools.AOLlanguage;7 Y( L9 P$ ~  ^. x$ V. V4 s& D
        if current = @.Destination -- else return6 A( N. k; T+ h7 q" s
        then6 v- P4 R& q1 {8 B( w# ~0 f
                @.Destination := void;
5 p  {2 _9 [$ r4 `1 `                if @.occupied then! ?  v! X" V( M+ i, @  l# u1 s
                        part := @.cont;! w1 N: h$ i4 N" t/ F
                        @.transpOrder := void;9 x! e; W7 }! g  S
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
* H. V' M: j' h5 g; z                                @,root.eventcontroller.simTime);' N: M* J2 e# ]; M, u. N( y" w9 {
                        @.HasOrder := false;' [& n. a; n. p: F
                        @.DrivingHome := true;
" o) }+ @8 }3 h                        rgManager.tryToStartTransOrder;
! c$ E& G- M7 h8 E9 J: y5 f$ M. ]* n                        if @.Destination = void
$ C% H! x2 T+ D1 N5 D3 b                        then -- no transport order for vehicle @5 R; R; ^. J# W$ O4 {# G, S
                                @.Destination :=
! G3 K; n4 H5 a6 t4 v                                rgManager.nearestFreeStation(@,track.~);
- c3 S9 A8 }$ ~  t  N                                newDirection(@);   ! U- l; e& }) o0 X7 D, U6 }
                                if @.Destination /= void then3 H8 N3 ~7 {3 d1 G, ~: a( t
                                        @.Destination.NumReservation :=
: X# H( ~7 w; }8 E1 g                                        @.Destination.NumReservation + 1;5 `6 E1 B& }! \9 H. o& s
                                end;( Y8 ~% K) }; P  w+ y9 _
                                @.CurrIcon := "drivingHome";8 N) k+ G6 y2 O) E( U( i
                                @.DrivingHome := true;
, W1 N, p# E  b9 h) t( q6 W                        end;& D) S1 g4 b. Z9 R9 G% e/ P/ L( K
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- D( o6 \& [- C/ p# E9 V                        part := @.transpOrder;) H4 f# ]$ y9 t/ c% w
                        part.move(@);-- load part  R5 ^) B6 g' @' R& h2 F" m" }
                        @.CurrIcon := "load";" O# a5 Y; _0 w  U/ k+ ]- o
                        GlobalDistObj := part.globDestination;# B1 \+ n+ H6 S  T3 d
                        assignLObj := rgmanager.rgAssignL;
6 ]! @! }* R; N# A; P                        row := assignLObj.getRowNo(GlobalDistObj);( T2 P# M3 |5 s6 G
                        if Row = -1 then -- since 707 C! S6 L/ d( g( v; d9 Q( t
                                if lan=1 then
2 p3 B3 Z& M4 {4 o                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
# j( H; J4 x/ J3 U7 S* G                                                to_str("in der Andockstation: \"",?.~.name,"\""));7 n$ q; X! R& o7 a8 r
                                else
! w4 M  I' c3 j3 V) v7 ~$ _                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),9 q# u4 V  W3 I. g! ~7 v
                                                to_str("in docking station: \"",?.~.name,"\""));                                7 A! n7 C# A+ W/ ^( q
                                end;
6 A: B. z1 L& m& n5 d2 O) f" G) y/ r" q                        else
/ Z' H8 M  P* w4 J0 k/ d# c                                @.Destination := assignLObj[1,row];
" v6 `$ w  b. a& u7 _4 q                        end;                       
$ D9 C" W" V* L. y" {8 {. t- T# I                        newDirection(@);. z; {% X2 ^. A  }3 c% g
                        @.HasOrder := true;
1 o. @) ^4 _$ j: w* Q0 r6 E; I                end;" y$ n: B% L4 ~; J& B7 s/ F
        end;% B1 n5 C5 J- l8 l* @/ Y, w# j2 G
end;        -- of the method
: O9 E; r: k1 W8 \  s+ @0 J# I
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
5 g+ K* o& |6 B7 ~6 P5 V
) y. `8 D8 E; q这是AGV_putin中arrive的method。4 U3 C! q9 e8 v: |7 Z$ n- S9 R( h
; E! ?9 T5 J) l+ r" {2 T
当到达物料速度越高时,这个报警更多,
* r9 o. H$ `! j( w可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。5 B0 F5 F2 j- w. i  q$ C0 S
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
/ y+ [! t" O8 Q: Q9 d  a9 A# Y0 ~8 o9 V  ]
另外一个小建议,就是move,所有的move都可以这样
; u+ H8 E" @3 ]7 Z& B) Jif not move() then debug end8 |7 E7 n3 U! v- V- @( N% S
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 ^: T, q' r( G0 F$ w! o! iplant simulation中的free libraries有AGV模板,' A. Q; b' Y8 I. ]- A4 m: g
里面也有案例。- u/ n' V. L  U. E5 J
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。' Q9 }* W. s/ e8 c$ `
) @# M, ?/ c9 Y) \
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
' A) t% S3 L" g
8 t$ y/ o/ W8 @8 D那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
! x/ d4 A! m: }, H2 T这是AGV_putin中arrive的method。
( D% K& j" _, C7 f, R* z2 r! H& Z% K
当到达物料速度越高时,这个报警更多,

. N0 j2 G+ ]9 e9 W8 W; ]  \另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-15 14:35 , Processed in 0.026982 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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