设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4977|回复: 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'& H' e& |" l# T/ M* A: }% \3 W
*// i) G8 ~$ k7 g6 _9 i
is
7 x3 u& d3 x) Y        part, GlobalDistObj, assignLObj:object;row,Lan:integer;% A% m* o8 x6 l- U, [9 Y+ l
do, [6 b! Q+ G  N. V8 a6 {
        Lan := rootfolder.Internal.Tools.AOLlanguage;
# g0 t2 G- Y3 p7 W7 d7 j2 j9 n: W# t+ G        if current = @.Destination -- else return
- K. Q" X6 z) }# k6 N/ b% C        then
, i0 O/ C6 Z. J3 \# Y                @.Destination := void;( ]/ ^0 n+ b  O2 a  a4 t
                if @.occupied then
5 {# N4 g$ L: {" G                        part := @.cont;" ~' n9 T) X0 {) Q) o
                        @.transpOrder := void;/ x+ S* E, [3 }! R2 H0 Z
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,0 Q8 e/ A- k5 {$ d' [9 E, B/ A8 Q+ {
                                @,root.eventcontroller.simTime);
9 G; G3 i  m2 G% j& g, z2 }) \                        @.HasOrder := false;
% P+ H+ O: N$ ~/ U' q                        @.DrivingHome := true;2 c4 c* z; f. K( X# }
                        rgManager.tryToStartTransOrder;
4 [0 K: [( X9 v5 c5 {( ]; k0 |                        if @.Destination = void4 `- j7 S# V: S" M8 r. e0 s  |. ^
                        then -- no transport order for vehicle @6 [% G) ^7 p5 l5 |" u; h
                                @.Destination :=2 N: Q$ T5 Y! v
                                rgManager.nearestFreeStation(@,track.~);0 J/ k+ z7 e" Y. B. q" ~6 _
                                newDirection(@);   
0 o+ Z7 C9 y: u, ?* D4 a                                if @.Destination /= void then
/ b0 x% R# k# F" z' v& f                                        @.Destination.NumReservation :=* ?# U+ M; _! N% |0 P+ }. n; P6 Q
                                        @.Destination.NumReservation + 1;
6 b' q1 u4 l( F) t8 G: }/ T                                end;" [2 v3 {/ c" Z
                                @.CurrIcon := "drivingHome";
- [9 I5 ]  m7 J4 B( s                                @.DrivingHome := true;' w2 }) S& o& }( M" h9 ?' S; l) n
                        end;
8 a3 B3 ?+ k( N2 G                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
" d* v; H, j' n5 B1 Y$ S                        part := @.transpOrder;
1 U9 s* y; n: A- B, B                        part.move(@);-- load part
8 J* i& T2 s3 C+ }" w                        @.CurrIcon := "load";- c+ [! ?' v' H" m/ F
                        GlobalDistObj := part.globDestination;$ i4 B4 m/ \4 i" ^/ g
                        assignLObj := rgmanager.rgAssignL;
! p% g& e/ X( M                        row := assignLObj.getRowNo(GlobalDistObj);
6 e+ r8 |0 N% B& {* O$ M) l                        if Row = -1 then -- since 70
+ C5 _- W: J8 D  s' X* h, ~+ Y                                if lan=1 then$ S; c1 }/ b+ }% f1 Q2 p
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),8 Z5 G2 F1 [( H. f% q9 K
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 K4 p# ]3 I- P" [                                else
6 d* N9 B3 G$ \. m                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
1 S7 M. V- B) Y# B5 n                                                to_str("in docking station: \"",?.~.name,"\""));                                  h7 N0 c, K9 p: q
                                end;% f) ?* Z, q* G4 L0 e" O0 i  {
                        else
5 ]2 w- l% ]+ T) c                                @.Destination := assignLObj[1,row];7 q' H0 S% p* G3 a- M9 d0 N
                        end;                        ; [1 y" h; ]8 N8 t& c
                        newDirection(@);
! R/ D# C) n. Z5 l$ b                        @.HasOrder := true;
+ _) r: @+ ]* I& l+ Z9 d8 [& ~                end;. U3 h& f+ D5 r% i
        end;
6 p2 g* O0 |* Y3 d' i$ n7 ?4 oend;        -- of the method5 j2 e5 O, v' {% U$ P: K6 m
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 8 o& @2 Y% X9 d% e

1 [& r9 ]1 q( \9 l1 G' f' ]这是AGV_putin中arrive的method。
' t* O; {1 a1 b7 Z) A2 u
4 a, x7 \$ s1 b: \当到达物料速度越高时,这个报警更多,- J  Q+ M( W6 }1 ^
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
) E" w) A* ~1 ]4 K0 I程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
) x. d! {2 O1 D' a& }6 s" Q/ |9 q
  z4 F  Z: E9 J4 \另外一个小建议,就是move,所有的move都可以这样# [) j0 d- b9 m
if not move() then debug end
  Y2 _) ]+ x+ A; ^! U4 M6 _* G这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。, x( u* O  ~# Y4 h
plant simulation中的free libraries有AGV模板,
1 Q3 j6 y- D" k. E8 h8 y( k" V里面也有案例。7 B) J2 z  I( d# @, _, l& t2 V( i4 j
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。& s* s) J5 t: p' o, w& g$ \6 }  Y0 C

  b& `5 u) Z0 T+ w6 J: h! K我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
7 V/ L$ `$ _1 a& Y
; L, I/ c6 j! i! \2 k那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 5 P2 i3 J) y" q& M1 U& h- k5 I
这是AGV_putin中arrive的method。
. x  W7 g1 r! c6 W
# }+ W0 w( a0 _当到达物料速度越高时,这个报警更多,

8 H  e* w  ]3 d8 ?0 M另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-18 10:52 , Processed in 0.020071 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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