设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8384|回复: 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'- z5 X: |0 Z: h% e4 \( I% W) J
*// n7 F2 q4 e0 b0 J. H; L
is
( ~, z) @  Q$ L0 f+ |* P  o        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
6 k: Z- r# c- @: A7 a6 _% cdo+ f* E8 s5 w# e4 x
        Lan := rootfolder.Internal.Tools.AOLlanguage;3 L5 W2 y/ D( [2 X! ^" m
        if current = @.Destination -- else return, }- o9 J9 Y' c9 Q) U7 D$ l' r
        then
7 G# R+ A; g- j0 w! [                @.Destination := void;% W7 P- o! f) y/ O
                if @.occupied then
0 |* W7 \% a  l) K" g; D                        part := @.cont;! S" X6 K: W& A/ g. I* l7 J$ ?- z: w
                        @.transpOrder := void;- D7 B" Y: r- p; h9 l) B% D1 G
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,+ V2 \$ c5 M, S* N
                                @,root.eventcontroller.simTime);9 ?  [0 B; N1 _
                        @.HasOrder := false;
6 l& v3 c% h0 N                        @.DrivingHome := true;
1 i" x( H: k; w' F1 Q6 T2 i' h! V                        rgManager.tryToStartTransOrder;) s' [( R! w0 B! ^
                        if @.Destination = void
4 d! R/ {4 `0 S- r) h2 [                        then -- no transport order for vehicle @
) S1 Z9 L# Y- a; J" k2 Z  D                                @.Destination :=
; y- @3 S' ]* x# g. L" J                                rgManager.nearestFreeStation(@,track.~);. ^3 H. O7 u. f, p
                                newDirection(@);   
. q' @; L0 J0 t1 P6 V. p4 _                                if @.Destination /= void then
9 b0 U/ x3 t( d" I  _8 j0 x                                        @.Destination.NumReservation :=
$ r! _7 y: T' d8 m( \                                        @.Destination.NumReservation + 1;
# T; v: ~6 _8 k( h7 r                                end;4 D, q8 p' c5 Y2 j; C, v, o
                                @.CurrIcon := "drivingHome";
- ]4 ]1 ]: V2 M- c! k+ [- m                                @.DrivingHome := true;) n' d/ m- Q5 ^
                        end;
/ C2 w. {# y3 b8 d                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
) U; c8 A7 z2 b# o; C                        part := @.transpOrder;+ Q8 U6 {+ Y# n; o
                        part.move(@);-- load part; C5 ~9 h2 E+ Q
                        @.CurrIcon := "load";6 W$ |" i4 _# r  u4 w
                        GlobalDistObj := part.globDestination;
. C, j2 c! G" ]5 f9 ]. M. L                        assignLObj := rgmanager.rgAssignL;
+ l9 q2 G! m. f; ?                        row := assignLObj.getRowNo(GlobalDistObj);, `9 g- u6 F4 J# j1 ^8 r
                        if Row = -1 then -- since 70
( k# J2 q" I3 _3 L! X; J* f, y* S                                if lan=1 then
! E7 ~& q! x% V" `0 @. s                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),* ~9 ?, ~% Q6 |$ |+ D7 f
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
7 n) N; K! U1 [% V! N4 B0 R# o                                else4 z8 H+ ]: h3 S2 k) l7 |* n  Z8 x
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),2 z/ J: @- C; A6 F; d
                                                to_str("in docking station: \"",?.~.name,"\""));                               
" r+ i+ ^, ^1 R& X* P, I1 I                                end;" P) I3 M1 z- m! [. E3 Z
                        else# U: S3 g1 L( E  }
                                @.Destination := assignLObj[1,row];
: |! p$ T. ?9 \8 K                        end;                       
9 L. w' j  x. G8 Y* t7 C: M# P8 ]0 a                        newDirection(@);4 A% u  F) f- e; }. ?
                        @.HasOrder := true;3 A9 _5 ~1 ~' k% }. ?1 S
                end;: H8 k6 B* l, J
        end;
+ j. e9 o/ F  ]1 r  `. [end;        -- of the method
+ I# ]+ u! _2 [8 D! ]( g
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
6 H8 s3 N6 E* u* Y: J' C4 o; Q! F$ M
这是AGV_putin中arrive的method。/ l! @) {: T* n3 H
7 x# S) L# `; ]1 l3 w
当到达物料速度越高时,这个报警更多,
9 M; x9 |$ S; d! \可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
# {4 j6 f5 Z' M  G! X, n程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?' F% P4 R. c, J, Y( x/ [* g

2 x: Q: n* k% b4 K4 f1 R( t* r另外一个小建议,就是move,所有的move都可以这样
- a3 f; b; v2 M% Z+ N+ y- ^8 yif not move() then debug end
$ J. k* K3 f$ T! P4 O: p4 G6 ~这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。2 H0 r! R8 D1 S9 T
plant simulation中的free libraries有AGV模板,9 [2 F9 ~" P9 _5 q) V4 ]2 _7 k# e/ x
里面也有案例。
' }* e9 g# \0 p- `) P我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。9 _' h+ x4 [9 d3 c$ }

! X. o$ u, e8 |4 O' `我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
/ M: y% k% i- ^/ V# W2 y$ s) \# b% Z/ T+ }  a$ R
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 0 d* I. _' h4 a. \
这是AGV_putin中arrive的method。
+ i+ K9 s; j0 ]8 c; F; f  U7 I& |
( d; t/ f. \& z4 B) |/ Y% G& F当到达物料速度越高时,这个报警更多,

0 S: q3 I0 L: v. V* b$ _4 `# b另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-31 19:15 , Processed in 0.019404 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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