设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9666|回复: 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'
' y1 N7 ?4 `" Q- g  L*/
, O# l3 M# K+ ?is
7 U& G" O, u$ u2 E# S( n2 F        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
- [  J+ ~' C7 t9 ~. u; x5 f' Odo0 K& p2 V$ k- s2 n9 J+ W  B! N
        Lan := rootfolder.Internal.Tools.AOLlanguage;2 d" O2 m) w5 g  p; r) S
        if current = @.Destination -- else return+ i" l2 }4 W1 r# C/ ]( |, ~- j7 U
        then! h( M% \( u- ?2 L7 h
                @.Destination := void;
* ~* p. J  ?/ @9 f' ]                if @.occupied then& c0 X" ?! @" L3 p; E7 O' L
                        part := @.cont;
  C  Y% Y2 K$ H3 o$ \# v3 j6 Q                        @.transpOrder := void;
  T8 S+ J+ N% M" D' K" ]                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
/ P; `4 G- s/ B: y                                @,root.eventcontroller.simTime);- m1 D' D' S6 H2 U7 R! g" ]; z
                        @.HasOrder := false;( K2 V) b& a( H" |: D
                        @.DrivingHome := true;
# z+ P5 j+ s/ R                        rgManager.tryToStartTransOrder;
; h' P1 a' `. D2 X$ o5 I! y                        if @.Destination = void! w+ O7 H. d  m# ?+ U1 t
                        then -- no transport order for vehicle @
: ~8 n- D! @: M" Z                                @.Destination :=
% S6 k7 |+ F3 \/ ^1 o                                rgManager.nearestFreeStation(@,track.~);
2 J* }9 @( O" l8 [2 [' a                                newDirection(@);   
  b* n; z. {. p. n: z) R1 e4 ^                                if @.Destination /= void then
( z  W" U' P2 q3 F0 `1 \                                        @.Destination.NumReservation :=, a$ \4 F' e/ S5 G( s& i" X* C
                                        @.Destination.NumReservation + 1;5 r/ w: x! h; Z8 f
                                end;
- E( U( _, o7 e                                @.CurrIcon := "drivingHome";; P: P* I: c0 m4 L$ `7 v: g8 X3 X' I
                                @.DrivingHome := true;
) G/ r, w% n5 g( U! z: M  E                        end;
! q5 c/ V; L/ v8 q                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- ^2 S+ p$ s6 c7 `8 K                        part := @.transpOrder;
  z& b. d( Z. S8 c- p* T; g: b2 C                        part.move(@);-- load part1 m1 b- U. O# f8 i$ J0 Q" D
                        @.CurrIcon := "load";
: Z1 O% ]4 z0 x( R7 h1 q  y                        GlobalDistObj := part.globDestination;
6 r2 J) Z6 x0 M$ p, ~) E                        assignLObj := rgmanager.rgAssignL;
6 Q1 f. Z8 d$ j' @( O9 R! U                        row := assignLObj.getRowNo(GlobalDistObj);
) s' j3 ]) E% f$ J6 [% j# {& [                        if Row = -1 then -- since 70
+ a/ B  _$ l/ P, f, }                                if lan=1 then9 m+ m' O! S/ ^6 K, s
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),. Y3 M/ t% W% @1 ]
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
: F' I/ O! V* W2 i' N$ |; E                                else0 s$ o/ V5 s& F3 O8 A
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
" h4 v8 q! A+ L; N' ^                                                to_str("in docking station: \"",?.~.name,"\""));                               
; Q! {$ J! D# K9 r6 a                                end;
  j( ^5 J6 n4 _/ M                        else
/ c7 E+ g; k; Z3 {* p                                @.Destination := assignLObj[1,row];/ O' S4 \' P5 v4 c" X+ A
                        end;                       
- c2 u9 K' `+ Y1 y: w- Z" e                        newDirection(@);( o' X' F6 Q5 x5 i  i9 F' j/ p
                        @.HasOrder := true;
  @' K  j- M; X' X7 Q  [                end;+ K. c! ?# r( q3 o  q8 l: ^
        end;" k4 p% f/ K: p8 e: B. [6 R
end;        -- of the method
- }! K6 V+ }( g
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 " i+ m7 B+ f% {: [0 u) d
2 I, r3 Z! ]$ z. K0 y) k& |
这是AGV_putin中arrive的method。9 G9 c% J: m0 ]: I+ G0 _- }/ E
2 N% K5 B, T/ I( G7 f2 a
当到达物料速度越高时,这个报警更多,0 y- p0 k4 V* {/ P$ h
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
6 p3 m9 ~- C+ T0 F6 ?7 I4 }程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?4 m5 c+ P! Y- T8 H6 t6 _

8 M. W. q* Z2 L# }) _另外一个小建议,就是move,所有的move都可以这样
# F& v# X1 W5 |- y$ Sif not move() then debug end. A6 e, R% J# `' b( T
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。5 ]5 V* g3 X# Q8 @
plant simulation中的free libraries有AGV模板,
# {. g9 X1 [* t3 I' J" E( \里面也有案例。' g! e4 C+ `8 W4 m9 ^( t2 ~  _
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  s: C* ]9 X) c# v& I

  B# d9 ?1 v4 C3 {我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ \9 m( _7 K' G; [! V+ y! e8 Q- q; z. L' `2 H, L
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 4 k8 f) a9 T5 `6 \) g
这是AGV_putin中arrive的method。; s5 a$ q! h3 m( v2 F: M

& C6 X" ^+ }* r: U当到达物料速度越高时,这个报警更多,

* M) ]; o" f$ L. x" f另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-15 20:54 , Processed in 0.021122 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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