设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7732|回复: 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'
& i2 w6 A. F5 m+ D- m5 U0 ^" U' C$ ]- I*/
7 l" ?% L1 E0 Y3 J& H5 K* F# Ois/ K, |5 h' r  K6 t/ H
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;7 ]$ t) O0 r6 T, x! G
do
, E$ C5 b, a, P6 k% M        Lan := rootfolder.Internal.Tools.AOLlanguage;
5 J2 ]3 x; p: x        if current = @.Destination -- else return4 C* d  |+ j3 n& ~
        then  D' i7 T3 X- Z) j. G& B" h' B
                @.Destination := void;& Z9 R' v4 A7 O; ^7 ?7 x& [# }  O
                if @.occupied then
- C$ k/ V; E, T1 ^+ O                        part := @.cont;- }  Z& J% s* g2 _* q
                        @.transpOrder := void;
# `' {: ~# \1 y- e                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
1 @  _6 H& U) p# c) \% T2 i: I                                @,root.eventcontroller.simTime);- e0 b8 K: j( F1 N: e) q% v
                        @.HasOrder := false;+ a& i4 c) \' P/ [2 W/ R
                        @.DrivingHome := true;
; g: b( \/ w5 l* d                        rgManager.tryToStartTransOrder;
5 N' |7 V8 Z$ B( T' O2 V                        if @.Destination = void
; o0 s+ {) D4 _) a) \9 m                        then -- no transport order for vehicle @
! T& w; u& @" F+ p1 z                                @.Destination :=
, e( n6 `6 \. I2 k5 y                                rgManager.nearestFreeStation(@,track.~);; i2 f' Y* {% t* Q/ g
                                newDirection(@);   
* N* `* \3 H0 D- E& I                                if @.Destination /= void then
  k+ t7 G/ j2 d- {, N5 c6 C4 M( p                                        @.Destination.NumReservation :=, m4 F, |8 Y+ @" b) ~
                                        @.Destination.NumReservation + 1;
7 y* o6 U2 W7 F8 x                                end;
" v! Q) T8 Z3 `- |+ R$ i                                @.CurrIcon := "drivingHome";. h# n2 W! q* T
                                @.DrivingHome := true;
- A8 U! C5 u* n3 s4 V                        end;
2 l% ~  q7 W" P$ U                else -- the vehicle @ is empty, both vehicle and part are in the same dock station% v! y8 T; o# {  S: O4 c- K9 Z
                        part := @.transpOrder;
- q1 C  [! C# [+ x                        part.move(@);-- load part
' f/ ]; w) d) A2 P5 T0 ~! m                        @.CurrIcon := "load";- ?- P: u4 g+ U4 l
                        GlobalDistObj := part.globDestination;
3 C3 G2 ?9 O/ Q9 Y# a                        assignLObj := rgmanager.rgAssignL;8 I1 J6 C3 k, o8 e" R; k$ W% Z
                        row := assignLObj.getRowNo(GlobalDistObj);
7 z0 f0 g. ~" ^3 t                        if Row = -1 then -- since 70# v0 s' j  U4 b) C" ?. H# \. \
                                if lan=1 then/ Q0 }- a/ ~5 q, T$ P  ]8 _
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),1 ~5 B9 c. m7 U: l0 X  I9 }& q
                                                to_str("in der Andockstation: \"",?.~.name,"\""));! L2 B9 j  J" T& Z( ?+ U  k
                                else
0 k9 ~: n4 K' m' C                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),( r/ C: D' t3 s8 P. @
                                                to_str("in docking station: \"",?.~.name,"\""));                                : o3 ]. P/ g1 t* Q
                                end;  q, C+ Y+ I& e0 f, E" A1 j( @
                        else
0 a+ P( @& j4 R' a2 ~0 n                                @.Destination := assignLObj[1,row];; [% S/ F2 d8 [  {
                        end;                       
& [$ U& H) A  h( \                        newDirection(@);
( V6 ?: O/ [! c- J/ q                        @.HasOrder := true;
  ^* ?( U  U# v  ^: A% m                end;
: q# x* f' F, H% `! Y        end;
3 S: V; b8 h4 o6 H) `( fend;        -- of the method
  l3 }$ ?. {# D% q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
0 m" b6 h9 E( y( b% b
& o8 z; j/ _+ |4 v$ E- W; B0 v4 _这是AGV_putin中arrive的method。
( Z% b: S3 C1 k! e; C: U' Y$ ]* B' o  {" L
当到达物料速度越高时,这个报警更多,% ?5 u5 s! H' p- ~
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。3 h3 u4 c1 X* r' O
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?* f7 \( Q# Q  i; g

. H( i! Y9 T4 v8 y- A9 e* ?/ w4 I另外一个小建议,就是move,所有的move都可以这样( i. Z; H* c( |2 ^0 p  r$ Z
if not move() then debug end% d( a/ y0 X! b
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
; r& H3 c9 e9 r- hplant simulation中的free libraries有AGV模板,( a  R3 H# L- b- t& q
里面也有案例。" R* T7 E4 {& x
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。8 N0 O3 y5 X* I! W8 f2 Z  {8 L0 |

0 o: N8 u6 n7 \% }我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
1 `- [3 m& V3 f5 e* Z4 Z! A: Q& M; s# a1 v1 v+ u  `; _) t: }
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
, }( G2 H, U6 j& ?5 ^! e7 ^) j0 K. |! D8 O这是AGV_putin中arrive的method。
  b) ~7 W$ p1 R4 {+ ~! P2 m* E: r$ G; G; Y9 \0 Z% g' N: d  E5 Q4 W8 F
当到达物料速度越高时,这个报警更多,

( r: B6 W+ \" b0 H7 h- w' I另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-26 16:58 , Processed in 0.015818 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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