设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8012|回复: 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'# ]- v+ O0 Y4 Q
*/
! W; h& F4 F2 j8 a6 S8 ]2 c% L3 his
6 z8 y( f0 T2 p1 U; V4 I3 E5 S8 F: {5 K        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
, J* T: I6 n9 _+ [  L1 j  Udo
  i+ N2 g6 L' t9 a$ {) V        Lan := rootfolder.Internal.Tools.AOLlanguage;
" n+ A8 P% o1 z/ Q        if current = @.Destination -- else return" U, @8 P' z+ d3 ?7 b
        then
; r; q+ r" u9 U1 r                @.Destination := void;
% _# ~' J; h/ r2 I2 o2 `/ x: Z: V  z                if @.occupied then1 F1 }4 Y- D* Q6 J+ W
                        part := @.cont;0 J2 `' g5 m3 h; W9 i
                        @.transpOrder := void;
% c/ K" Q' e4 n+ j                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,( F. f/ k0 }% z0 r6 v7 j) W
                                @,root.eventcontroller.simTime);
$ E5 i$ M- R- i9 X; F* o: a                        @.HasOrder := false;& F, l4 ~# y* T; j
                        @.DrivingHome := true;! `6 M/ b$ \3 F
                        rgManager.tryToStartTransOrder;
2 g1 G4 d8 S% |0 m1 c0 Y                        if @.Destination = void
* T6 y# o0 [. b! @                        then -- no transport order for vehicle @
3 z" r9 l# r# W                                @.Destination :=
1 y5 d8 k5 z4 G4 ]* ~                                rgManager.nearestFreeStation(@,track.~);* s" R: X7 g# g/ {# a) T
                                newDirection(@);   # _% M$ g, s9 Q- `. d3 R. R& @; c
                                if @.Destination /= void then
, _5 I+ O* f2 t. C                                        @.Destination.NumReservation :=  t+ z. ~) T* q+ ^/ p* r. y% \5 y
                                        @.Destination.NumReservation + 1;8 A  W* D3 G( k( V6 L- x  I
                                end;  c& v/ v5 ?% z/ m, w& Q& U/ X
                                @.CurrIcon := "drivingHome";2 t4 K. r% O- O  X% S: n
                                @.DrivingHome := true;* }) j; z$ z4 L
                        end;
# y9 H( N/ X1 d. z, |! x* @                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 b9 [1 k3 Q* ^3 T5 [
                        part := @.transpOrder;3 r  \: Y6 T% `$ K2 g& ^4 _
                        part.move(@);-- load part
0 |# E0 r: A. l" I/ x' Y" F                        @.CurrIcon := "load";
3 ~$ K& G7 V" o- [, {6 E8 b$ U                        GlobalDistObj := part.globDestination;
/ s* n) j5 F; k                        assignLObj := rgmanager.rgAssignL;
) Y! Q/ C0 L  W% d4 p8 G( e                        row := assignLObj.getRowNo(GlobalDistObj);
8 ^  F: I0 v- M& H( |                        if Row = -1 then -- since 700 `4 ~) R0 g* s
                                if lan=1 then. m3 X1 H+ F) K2 O7 i& F" E$ ]
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
' ^8 C! X3 e; X) `                                                to_str("in der Andockstation: \"",?.~.name,"\""));/ t# o3 R: A& a$ O5 W5 _
                                else# c7 q2 W, G3 X  u3 A/ q8 T
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
3 f! r  m" ~# ]5 t                                                to_str("in docking station: \"",?.~.name,"\""));                                8 E0 G/ @8 X  W. R, r( ]; B1 N
                                end;" i9 g! j& E+ ^% Z: E
                        else
9 P( a: L* F" m6 q/ ^. q- c                                @.Destination := assignLObj[1,row];
0 Y- l& S. u( `0 O6 |' i                        end;                        " ^' ^$ N+ g: q" m* i5 n
                        newDirection(@);
8 i! f2 P5 C  }8 K1 g% p# D! f. r# L                        @.HasOrder := true;& c2 ^% t. ^1 L) U0 M) ?
                end;
% \8 R! ?0 b1 G' ?2 G        end;5 v4 N+ G6 t/ m* B9 n
end;        -- of the method3 ^4 ?1 d# g* A7 ^# \9 ]
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 e' ]4 Q1 x7 ^( p

! o+ \! F( x! V) N- x1 t- |这是AGV_putin中arrive的method。
/ T- L6 j/ N; `- d
. _# \5 L( R0 y. R! C* z1 V当到达物料速度越高时,这个报警更多,
! @( I8 e- P6 X! J4 U可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。  d' |+ L3 i& }% [
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?, c* b9 [* W. u+ ^& o0 A

6 R" j& ~* ?0 I* ~9 D另外一个小建议,就是move,所有的move都可以这样! X9 s* F2 E; D$ d5 f0 l# m$ Z
if not move() then debug end9 i/ g& a: w8 A: d
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
/ m7 t+ D# l7 L5 L- ?# bplant simulation中的free libraries有AGV模板,
& d! _) l; A" R里面也有案例。
# Y4 M: D& i+ {- U  h我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 s" W" r6 q$ S$ `( J# _& z+ p$ v
; S, w* u3 K6 \8 L
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
- \( I+ H2 Q+ V. L1 ~3 h! V& E5 u& D1 \) s- s) G  y$ ]+ @
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 % E" q. P! M9 O. B5 A
这是AGV_putin中arrive的method。/ J9 E9 _- ]. {+ ]
: n! \# P: v) S- J; B5 s/ N' v
当到达物料速度越高时,这个报警更多,
- l1 b; `& n- l! X
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-11 01:23 , Processed in 0.022416 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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