设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8581|回复: 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'
  ~0 F+ {* w0 G0 w/ l9 m+ d*/% L- K3 Z7 U% u- Q7 I/ S  X
is
( X* v0 k( i  `8 D' Y& N& V4 q        part, GlobalDistObj, assignLObj:object;row,Lan:integer;% }6 g) [) n" S! H+ z
do4 y$ k0 i0 N4 S- v# b, o7 `/ k: M
        Lan := rootfolder.Internal.Tools.AOLlanguage;8 j9 z) y: I9 n' y  a1 j
        if current = @.Destination -- else return
; P& S) t: S% g9 S" i2 }        then( A- ?3 |; ^5 h5 V
                @.Destination := void;" z, n( T. P: c/ e! `
                if @.occupied then
/ I; i: g6 E3 s, |! L# M                        part := @.cont;1 I$ C: N6 @: q& {
                        @.transpOrder := void;: N* @$ [/ s5 \/ z& _! v0 R
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
- n4 P* k/ i8 p                                @,root.eventcontroller.simTime);8 d' f0 f4 P* L( t" [
                        @.HasOrder := false;
! p" `: |! p5 |& X: G* w6 |                        @.DrivingHome := true;
/ X* Z- I# p" D# {  r+ Z# v                        rgManager.tryToStartTransOrder;( l+ U% r' A0 ^7 T
                        if @.Destination = void
- V. e, Q9 u0 z" r6 }) |                        then -- no transport order for vehicle @" A/ }: ]4 U1 B0 X& W( Z
                                @.Destination :=: g! s& n( F# A: ]+ }
                                rgManager.nearestFreeStation(@,track.~);. z, E* O$ T0 m- w4 a7 L; i
                                newDirection(@);   . J# w- r- D! Q! _2 }5 G
                                if @.Destination /= void then
4 \( W) a/ _1 m1 G0 ]                                        @.Destination.NumReservation :=
+ n/ ~8 H8 J2 s9 Y' ?: U8 K                                        @.Destination.NumReservation + 1;+ c6 q0 A" D. a/ A7 U# _3 Z" \
                                end;
6 S% j* L8 [: ~                                @.CurrIcon := "drivingHome";0 e: P6 ?- }# `  r9 j
                                @.DrivingHome := true;1 E; [4 L: B. l; I0 ^! d
                        end;! F5 b1 \- H) ^3 p9 w: [( s
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station9 I' n) v1 ]0 v) J, n  I
                        part := @.transpOrder;
3 c6 f: k# ?5 C$ Y2 p5 v0 F9 J6 z                        part.move(@);-- load part
, D$ |4 F/ L% n) a                        @.CurrIcon := "load";! p: p9 S7 x$ b8 K( E$ e9 c
                        GlobalDistObj := part.globDestination;; J, {  i5 h1 ~
                        assignLObj := rgmanager.rgAssignL;
& E( i8 t3 }  Z9 k" D" [                        row := assignLObj.getRowNo(GlobalDistObj);: G- {- l* I: j3 G( h- i! e/ X3 r
                        if Row = -1 then -- since 70
1 m2 w8 a4 Y1 C9 u% \                                if lan=1 then
6 _7 K1 V7 w/ k                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 z! Z: u6 Y) M( g! Y  d                                                to_str("in der Andockstation: \"",?.~.name,"\""));
5 W; K. `% K4 d- C                                else& H) K* a6 o) o( y
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),7 R' o* L& H0 d0 }/ E" j
                                                to_str("in docking station: \"",?.~.name,"\""));                               
( s4 _* \. |2 X3 r9 r2 F, E* v                                end;9 h/ ^+ j* Q' u5 t: c" K
                        else
) ?3 X- h. P1 z6 Q3 ~                                @.Destination := assignLObj[1,row];$ O0 _$ P% X8 N5 f" g
                        end;                        % R5 ?( U3 r0 N+ R! J; A
                        newDirection(@);
! A1 ^. h3 [( S* L9 K4 B                        @.HasOrder := true;: [0 K3 \, w0 c8 r
                end;
6 ]' f$ c# l' s$ c8 y        end;
+ U1 t3 {! M# a' nend;        -- of the method
. b5 x( ]: [: }
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
# E) v4 c6 y; ]" p# `, ?& P! N. b1 ?1 O9 Z# Q
这是AGV_putin中arrive的method。
" y7 Q+ P, _" y: c6 w5 A4 x( b% W  n# A8 q! }6 J$ j: K/ R
当到达物料速度越高时,这个报警更多,# G* ?( i! Q( P6 D) n
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
5 b8 n. v( w0 B0 O7 [2 B) u& J" Q' j程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?. u. t) w( S, F/ o% q" E
+ c( _) |/ l2 e2 ]5 [
另外一个小建议,就是move,所有的move都可以这样
" f( m0 v# ]: Cif not move() then debug end& n: d/ ~4 c' G! L6 k# B, W
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- H# ]6 M) F' S( i# _6 bplant simulation中的free libraries有AGV模板,9 i( `; _0 l6 B( m1 o
里面也有案例。5 {4 p; _7 v3 E
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
  w* }$ b& s1 ~% T7 I' L8 F2 p+ N0 M3 |* N( L$ u; |
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
9 z4 U2 c) _- k* L
' a, D% H$ `  W1 v那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
, f; [3 \* {9 u* ^  Y; w这是AGV_putin中arrive的method。
  y9 q' [% [, w3 j) ~2 N2 q6 N. Y/ D" [/ x
当到达物料速度越高时,这个报警更多,
/ t7 V! c: f/ b+ [6 y! N+ I8 E
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-13 09:57 , Processed in 0.016840 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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