设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7570|回复: 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'& i- I. }  S6 j9 C! g6 m  h% J( r, U4 x
*/5 O7 I- S" R/ Q* F' p
is) z! H2 k; p3 c
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;) @! z5 b) a' J' B# d
do
- ^! J3 o0 t4 w" Z0 G        Lan := rootfolder.Internal.Tools.AOLlanguage;  ]# X* T2 ]+ l2 r
        if current = @.Destination -- else return
. o" K& Y  N; [) z4 k& i9 n        then/ [8 ~# C  {& r+ {2 k
                @.Destination := void;, e9 Q; [9 I' N; B9 ?
                if @.occupied then
) d7 H% y1 ]1 f8 h8 n+ B; X                        part := @.cont;
0 [# \  n( t; p: U                        @.transpOrder := void;0 ~0 v7 l- k6 u/ k- C& d7 H
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,$ ]) w3 [3 S' c: M
                                @,root.eventcontroller.simTime);  q; q. H% u( |7 K, v* k! i
                        @.HasOrder := false;
* N8 g( Q  h% d+ z1 w8 ~7 C                        @.DrivingHome := true;' I. F1 x1 ]% F( n
                        rgManager.tryToStartTransOrder;1 H2 _# j/ X% K
                        if @.Destination = void& i' A3 P" f! N5 v+ H+ P" a
                        then -- no transport order for vehicle @
$ [! ~5 u$ N. V                                @.Destination :=
7 m$ |1 D) W9 E0 n$ t5 p                                rgManager.nearestFreeStation(@,track.~);* ^8 i3 h; g4 b
                                newDirection(@);   ( P, {( v  i/ F' I& F
                                if @.Destination /= void then  V- G$ z' N+ f+ K* Y
                                        @.Destination.NumReservation :=
) `5 D, x! C% O! |+ _5 Q                                        @.Destination.NumReservation + 1;: p' C: d4 A# I
                                end;* I3 T* _- @( l+ m6 t) ^4 f
                                @.CurrIcon := "drivingHome";
, U3 V! K! f( I0 d) Q                                @.DrivingHome := true;1 P  O, U$ ?/ M3 ~9 K
                        end;! N* T0 p# \" E$ p
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station4 {4 A  F- o! N. u& A
                        part := @.transpOrder;
2 c% H% r: F) u+ `& F                        part.move(@);-- load part
1 h$ C' T6 r9 l1 O. S! S                        @.CurrIcon := "load";
" P$ H$ C0 e# n                        GlobalDistObj := part.globDestination;: l! q8 w) u( {8 |% q1 m( h; I- b) v
                        assignLObj := rgmanager.rgAssignL;
: w' n) y/ C- ?                        row := assignLObj.getRowNo(GlobalDistObj);6 A2 K2 T' K% G5 i  t
                        if Row = -1 then -- since 70) T5 w4 \$ U% Y2 Y, ?' S* ?8 l
                                if lan=1 then
  `; V7 i! Q/ a4 @; Y. ^7 A5 R                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),5 x7 ~& J) N, G& U6 v" h* B( U% x2 p
                                                to_str("in der Andockstation: \"",?.~.name,"\""));6 g, Y2 \. \2 M( R: V2 p7 B2 s
                                else7 b0 {! `( S- i0 x+ {' [
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
2 N& x' Y$ m( M0 M( |, ^* A                                                to_str("in docking station: \"",?.~.name,"\""));                                ( b0 _) z5 v# \$ U$ g5 w! k# p/ [  G
                                end;- q  _- `0 F, Z% J/ ]3 Y8 I
                        else6 I- }1 f# a. F. @1 @4 K
                                @.Destination := assignLObj[1,row];
3 h: e, z4 c, O8 T6 o3 z                        end;                        . D& V( D# W7 ~) Z5 R/ T
                        newDirection(@);
$ A0 c( T7 O' T' e5 Q) e' Z                        @.HasOrder := true;& |# U7 l2 Q" ]. p& y: X* }
                end;+ }: p0 D) }  a& S1 I5 l
        end;
' ~6 d4 w- O7 Z* y! m2 ]end;        -- of the method
* k9 @' g! q3 R) P
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
: o+ i" {' A6 j7 E' l' N/ r) X1 m9 k
这是AGV_putin中arrive的method。/ |: e$ J) e* U) |9 x. V! P
' B! j8 w  \! [' _+ H2 A. ]* h
当到达物料速度越高时,这个报警更多,
% \* e& F/ x2 M- ~- r可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。% _4 q2 m/ m. k
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?& B! q0 M; |1 M, M
) o8 [3 p4 c" m1 x8 f0 ?4 f9 D! m
另外一个小建议,就是move,所有的move都可以这样
. S- r5 j& M- s( W( q& l  l+ Fif not move() then debug end" S, G) B, }9 D5 @9 }9 i
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
" ~, H; q! T  R. Lplant simulation中的free libraries有AGV模板,
8 Q% L, \; ^3 c6 ^2 s4 {里面也有案例。
3 I& O; Z+ P: H" m我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
# F4 G$ X3 G6 m$ |' L6 e
0 v3 V! M$ c, Q" u- o: v4 C我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ; {9 w, z1 k# ?* L& o: W* t- S
  W$ l8 _; u3 J/ I1 t4 ~6 R( D
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ) p' a: d/ n: Z
这是AGV_putin中arrive的method。
0 C) v/ ?- L6 x& }$ }
1 q6 s5 Q. O: M( u# I! K当到达物料速度越高时,这个报警更多,

- u- J) V1 W1 D3 K另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-18 01:01 , Processed in 0.032039 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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