设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5251|回复: 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'. j2 `$ |: [+ k
*/
. j; l; V3 @4 S. q9 yis9 l$ D. k5 ?7 \! f- X
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;" z" w/ S6 c  X8 e0 ?
do! `' \! x$ W$ a$ Y0 r
        Lan := rootfolder.Internal.Tools.AOLlanguage;1 ~1 K* N4 ^6 ?& K  B) }9 _0 e
        if current = @.Destination -- else return
% d2 S( u3 A8 l( ~7 D/ s" D7 @        then
  \6 o+ W" r2 k" |' D+ {                @.Destination := void;
0 }: B$ V2 x( ?  i* j: f                if @.occupied then# `. x$ R$ B; a( O" e
                        part := @.cont;+ N! j# e! ^4 E) U7 x% a
                        @.transpOrder := void;& m' C4 @7 {9 C
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
6 R  q0 |8 e1 r                                @,root.eventcontroller.simTime);
, @6 W: R; q; R# G                        @.HasOrder := false;
7 r% |0 @2 D! j  b! B                        @.DrivingHome := true;
$ B1 x* D7 h9 j                        rgManager.tryToStartTransOrder;' l9 W8 m% r' ^; E5 r
                        if @.Destination = void1 V8 `0 W2 p$ g+ \. ~1 [7 R
                        then -- no transport order for vehicle @
2 ~6 h' U' Q" Z/ G                                @.Destination :=/ P* A6 q  L  `! R* S, G
                                rgManager.nearestFreeStation(@,track.~);
, j5 V4 o/ U( B$ c" f                                newDirection(@);   * J* R# d% f) w3 ^7 V" K7 k
                                if @.Destination /= void then" C- p- _; x- `" L2 Q
                                        @.Destination.NumReservation :=& E% k9 t! @& G$ m6 g3 b
                                        @.Destination.NumReservation + 1;
1 J) R/ @0 ]  J' h. _7 U6 R                                end;$ s% g+ A+ W. v* r& v" H# E
                                @.CurrIcon := "drivingHome";0 y9 {" \1 L. L2 w. o, [
                                @.DrivingHome := true;) P2 k! E1 N2 Y, K% D! {
                        end;+ M, O+ g$ T' t) y, e, U2 w
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
# q* f3 a5 I) M                        part := @.transpOrder;
4 ~; U5 R" D) G% z3 f  C/ Q                        part.move(@);-- load part, H5 Z( b' b: k, ]8 a! C
                        @.CurrIcon := "load";
4 @$ x) w; z, d  T2 _& j                        GlobalDistObj := part.globDestination;! c- d+ L' p8 s% b' t& u
                        assignLObj := rgmanager.rgAssignL;3 n' j2 y8 f7 d% q
                        row := assignLObj.getRowNo(GlobalDistObj);3 u! W) q; s# m  Z0 P5 H6 r' M
                        if Row = -1 then -- since 70
! b/ R$ ~2 d# r5 V$ l( h# Y# u9 `                                if lan=1 then
, _2 S" v; R+ N  I+ ?/ D( K                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
) u- `5 Q3 f3 a4 t: M  F& c                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( f: _7 ~# b& p2 e8 C                                else
' ?, x+ f, g" ~+ e                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),  H, ~' t( x% t
                                                to_str("in docking station: \"",?.~.name,"\""));                               
& h  ^4 `% M5 f9 y* o! {                                end;! j0 U( h, P* U8 @7 t
                        else* ], |1 S3 r% V# o6 P( [5 F* f
                                @.Destination := assignLObj[1,row];
( }' n6 {0 O" d6 S$ u  P                        end;                        4 M* k5 B/ o: [9 l4 `5 C  J2 K- U- M
                        newDirection(@);$ ~5 d0 V; k% J# y8 I, W: B
                        @.HasOrder := true;! U/ s0 H- @9 Q+ w( d
                end;4 a( J; B4 `. u+ X# D" u
        end;
5 [) L0 N( p- o: g, xend;        -- of the method4 c3 Q0 S4 w" y3 I+ I/ v; n2 m! f
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ; O% S$ c0 C# t# u

9 Y2 f4 T$ i3 ~这是AGV_putin中arrive的method。
1 D+ i" H* P0 q/ Q( q! i, o3 Y
/ S8 g" G/ A  H6 ?( F' R  e2 k当到达物料速度越高时,这个报警更多,
+ [. k8 }6 Y' ~/ M$ u可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
) Y, y3 Q& q4 O程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?1 t. H4 G4 w  g- V2 Q3 ~
) O$ X- g* K- N; u2 z% F
另外一个小建议,就是move,所有的move都可以这样7 w# R- I6 E" o2 ^; B3 j
if not move() then debug end& a( B$ X1 s$ N+ j2 H( ^  O
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。9 Y; j: c. E  F* O
plant simulation中的free libraries有AGV模板,. O+ K2 M5 Y+ i
里面也有案例。) @5 w+ }. S* \% o, T
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。3 H& C+ z2 X" U0 J% p
2 |+ G& ?$ [0 c: U0 d
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ O  d' \4 W& @2 B, h  v5 Y0 }  A! Q
6 W5 J2 ~( D) I' L- R: z那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
  L' j2 o3 b! m8 P# G. u8 H这是AGV_putin中arrive的method。
* c$ j7 Q/ O6 E
% Q* h+ A) e- \# f8 V9 t当到达物料速度越高时,这个报警更多,
$ T! f" b% W' i, n, P
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-4 13:02 , Processed in 0.015876 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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