设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7150|回复: 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': F* `2 Q: y) m: `) J* k7 d* ^) b) O
*/
/ L( ]3 s$ j: g" s2 t" t: m/ jis
( H3 @, ^. c. _4 X( `" T- a; t: ]1 k        part, GlobalDistObj, assignLObj:object;row,Lan:integer;. U% d: W* d; s8 E! z
do
: r6 W4 x  m6 w- p' ?( O        Lan := rootfolder.Internal.Tools.AOLlanguage;# }& v0 K7 X. x+ e% }+ v) m, l
        if current = @.Destination -- else return
+ ]9 ~6 P% W& Y  v* y        then6 Y8 [( M2 O4 A) a5 {9 f4 I( F4 r
                @.Destination := void;
9 l! O( ]( Z# h4 j% {) Y                if @.occupied then) q0 l- O: q2 q' T! u- \
                        part := @.cont;
% P7 @. b: w: x6 i* O# p! O                        @.transpOrder := void;6 J) G3 `0 L( F! W0 D
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,7 r5 d, ?0 ]- k6 r& n9 W$ e. {
                                @,root.eventcontroller.simTime);  u& q+ \6 q. x3 P4 m9 h3 L
                        @.HasOrder := false;: y8 P1 u1 G) j  T! m
                        @.DrivingHome := true;5 I- j5 g& N- {0 C" i
                        rgManager.tryToStartTransOrder;0 t+ a$ }" W: g! [
                        if @.Destination = void
9 E* z1 T# a! `: W1 s                        then -- no transport order for vehicle @  `6 u; ?+ M8 w  |5 ?; D* s
                                @.Destination :=
3 g8 m) `1 S2 l2 ]  P  B                                rgManager.nearestFreeStation(@,track.~);
* P, z7 B' p- A                                newDirection(@);   
( w) J& |# c0 d                                if @.Destination /= void then
5 U* p& `) j) j                                        @.Destination.NumReservation :=
, l; S; U. ?5 m4 F9 B  w/ T                                        @.Destination.NumReservation + 1;* ?9 D( s5 y; s9 V; I! ^) N1 o
                                end;
1 }8 M1 a  i! b1 i& x; [9 M1 w: o* a8 [                                @.CurrIcon := "drivingHome";
  {. E9 X0 q  I5 D6 b5 T                                @.DrivingHome := true;; n  a4 i/ g+ p' S3 s
                        end;: E* y4 {  D5 x5 P
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
8 m: q, L2 j$ O  L* ?                        part := @.transpOrder;% o$ D% |/ `+ y  k
                        part.move(@);-- load part
  E$ a) X' H# ^# A3 {                        @.CurrIcon := "load";' K7 w1 |: ^& x' E# ^
                        GlobalDistObj := part.globDestination;
- a. m( A9 _- [) w                        assignLObj := rgmanager.rgAssignL;8 o9 w; z* n* I& G  m3 J: L- r/ V+ M
                        row := assignLObj.getRowNo(GlobalDistObj);
- d# T. B  @9 S& F+ |( \                        if Row = -1 then -- since 70
6 y) P8 @3 n! f2 W                                if lan=1 then
2 L4 F+ I  t: N# S# S                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),0 `0 L  w2 E8 W% j
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
! y- `. j8 @) ?, A6 x  A7 |                                else8 N% M7 h$ m8 S( }+ G& L; T
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
; B- w0 n! M5 K                                                to_str("in docking station: \"",?.~.name,"\""));                               
/ b6 c, i6 \, P                                end;( i. R% {# R. C6 [
                        else$ k* t4 [2 |8 I  @$ a
                                @.Destination := assignLObj[1,row];
' m/ k( q& W$ k2 O9 l( e2 \! |1 _                        end;                        4 I0 |: f  D$ @+ m
                        newDirection(@);
+ o7 J/ h( V, S                        @.HasOrder := true;
3 v0 E1 ?1 A' S. _  O  {                end;1 {' T8 }1 ~; K/ Q7 r1 f, F
        end;
) }$ k) z4 ]# q) v/ dend;        -- of the method* H/ p4 p9 Y! N% Y- C7 T, ]' j
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 5 S+ n( T& Y$ c, ?

& l5 K4 g+ s# k2 U% T这是AGV_putin中arrive的method。
: T: q2 ^) p. R# @0 `! A  W' u+ ^( U( l" c7 r4 w2 R! ?
当到达物料速度越高时,这个报警更多,( g/ \% l& ]4 b2 |
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。) w" Z/ n0 ?" d( b! z* G" W
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?6 }+ N- c, d  Z/ O& i2 P& e- Z
6 F) N$ `4 ~: ~& ^7 z
另外一个小建议,就是move,所有的move都可以这样
) H( j/ K3 A& f; p* z! B( vif not move() then debug end
" H7 H, {( e. Q7 l# O) u这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。5 [; Z3 h3 u' l; Q
plant simulation中的free libraries有AGV模板,( c) j: E4 S+ X$ x- w5 b( @
里面也有案例。. h) E& a" P- O! ~: N8 q$ u
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。, i& L/ A' s% U# \( k: \
8 O: x8 P  B1 B
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
# A! V, o4 ~0 T9 E* _% m$ Q9 e$ A3 l2 T+ Q1 C
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
; W4 O& t# [# F/ s! l; o; u这是AGV_putin中arrive的method。) c( h0 n' A4 s* B

0 Z# l: M: I& n5 |5 d  w* [当到达物料速度越高时,这个报警更多,

. G! Y* Y+ k, X3 m% `) a另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-22 06:01 , Processed in 0.018247 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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