设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8163|回复: 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'
8 I0 M% q3 t$ l9 O$ h: p$ ?8 ?' N*/
: z8 C6 V- K' e; dis8 f' H+ m/ [8 D! v! p* |& n
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
  K+ R+ r7 ^# n9 Y. O. fdo
+ j7 e; L( o2 m8 ?) E* _1 a        Lan := rootfolder.Internal.Tools.AOLlanguage;$ D! j2 B# {8 P' s+ u# \
        if current = @.Destination -- else return
6 ~  p8 U/ D! e        then6 ^6 f$ j3 n% i* l) T$ u5 E0 {/ [
                @.Destination := void;4 t" x  s+ p8 o9 ]) k. H) O
                if @.occupied then; l8 I- A, ]9 F$ Y3 Q
                        part := @.cont;
7 p3 p8 d8 R' g* _                        @.transpOrder := void;0 l+ t5 j% d6 y
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
% N$ Y9 w  s- p- R1 P/ ~- b/ n) }& k                                @,root.eventcontroller.simTime);
. g. q' w0 e7 o+ k" n1 u0 F0 H                        @.HasOrder := false;
$ L2 S( u5 v6 h                        @.DrivingHome := true;
- C8 l8 ]; Z6 j8 e                        rgManager.tryToStartTransOrder;
0 i9 L5 v2 d+ s- e! J; g1 \, B4 X3 K                        if @.Destination = void$ d- n9 a' q: r2 x
                        then -- no transport order for vehicle @& F& i1 A* P( ?# T. a5 c+ R
                                @.Destination :=$ V  g# q+ V) L" x% S
                                rgManager.nearestFreeStation(@,track.~);
6 I$ {# {# m9 R: v                                newDirection(@);   : l' N! c% G: T
                                if @.Destination /= void then
1 j( ?# n/ {' j& Y% W                                        @.Destination.NumReservation :=
3 R4 h3 H4 B) @9 A& H                                        @.Destination.NumReservation + 1;& l2 K+ b) t3 e; X, Q
                                end;
, y6 g" w$ O6 M3 s1 x7 G9 m                                @.CurrIcon := "drivingHome";2 b, X. d7 d$ T+ c
                                @.DrivingHome := true;6 R4 _6 ~# a; @) j" Y
                        end;
* u% G: F+ G( b5 ~6 w1 n3 P# n: G3 p                else -- the vehicle @ is empty, both vehicle and part are in the same dock station/ W/ L, z2 \, u
                        part := @.transpOrder;8 h7 r, a1 E3 A2 v6 P
                        part.move(@);-- load part
1 v8 d  b3 l  k( x% V                        @.CurrIcon := "load";
' Q! w; R/ v) z2 I, ^                        GlobalDistObj := part.globDestination;* X3 N7 ~6 o! u$ P
                        assignLObj := rgmanager.rgAssignL;
+ R1 _6 O( X* x) o3 Z3 |7 b                        row := assignLObj.getRowNo(GlobalDistObj);
$ x( |. e  c. n8 E# D+ u0 W                        if Row = -1 then -- since 70# x+ k, V9 _$ p4 B* ?! x* k
                                if lan=1 then9 e/ n7 A- _4 w3 C0 v
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
; c  w( W2 d- e1 D# d0 t                                                to_str("in der Andockstation: \"",?.~.name,"\""));! `2 s' u3 \( j# ]5 e. G3 s* a
                                else
  y& Y$ M3 {$ `5 g: F1 O                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
2 a3 [0 |0 I9 X% ^7 X# {                                                to_str("in docking station: \"",?.~.name,"\""));                                : G* A- j' G# M" s6 Q* o
                                end;
, v4 N; H4 U( c" s+ I6 j3 I3 O                        else2 A. l' G/ J4 S7 K$ \" S# c5 z
                                @.Destination := assignLObj[1,row];
* G+ S$ _/ E, `2 f                        end;                       
) c/ J* _: _: s6 i* m                        newDirection(@);
# p5 |- t: a" \! A, \9 E                        @.HasOrder := true;
+ y' h3 i1 W+ J9 [5 u7 w* a                end;
# C! w: m% F% h3 d; G2 G6 b/ P; i        end;# O  @3 z& q; }2 L8 F+ n5 m- c- v
end;        -- of the method
- r% |( {! I$ j+ t6 @
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
. E! q$ V& j+ D& F4 f; N/ u
- {7 x2 n& q6 x; W这是AGV_putin中arrive的method。
; e4 @2 H$ ]8 Z6 l8 f$ c/ _
+ k# A9 q# i4 @' x; p当到达物料速度越高时,这个报警更多,
. i: ~2 k$ W6 l- H+ I4 ^: w0 Y可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
& g. d0 S$ z0 Y  ]* `! t程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?$ j/ u" F0 h. j

) W( \% q/ u' @2 v另外一个小建议,就是move,所有的move都可以这样
: E4 c/ @+ V% C+ Nif not move() then debug end& @4 k* [7 U8 o& H; S/ L* f! y
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。! I. v1 j# Z" i6 v; W
plant simulation中的free libraries有AGV模板,# c" r3 k1 R3 f) l
里面也有案例。3 V/ ^$ x3 M# K/ `: A9 ]- H
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! u" j; r' R& S# B" R8 l! i8 V2 |' E, B" f; q  F' A
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
/ Z9 v) K  d- A1 G6 d0 b
  ]) g/ r2 }) C- @那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
& n: r4 @$ E- g( s9 c' Y这是AGV_putin中arrive的method。
# |0 Q* f5 O/ a  |  p5 O  V6 ^  F8 w" p: i+ `
当到达物料速度越高时,这个报警更多,

7 J7 L1 \/ u( j& @) y. B: U: A/ u另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-18 11:55 , Processed in 0.025161 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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