设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9961|回复: 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'- h4 \+ B1 j: u0 K
*/
; B8 l: J! K2 |$ X* j( m! M# His. |  r( B. M( x% M& B- N% q
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;" L/ N+ \, y' w
do
4 d, D: _6 F! a# q/ A; z        Lan := rootfolder.Internal.Tools.AOLlanguage;4 j; ~/ V: C8 V) L2 z8 B/ u
        if current = @.Destination -- else return. |' q4 h- |/ p: P0 K9 D/ R4 g  m
        then/ v- [3 Y* ?9 B, B  J( P* d
                @.Destination := void;
. b* \* X7 D- x4 S                if @.occupied then) b( S1 E6 F1 l9 {9 ~
                        part := @.cont;% l# t1 l, f  f7 y' K% C) C2 w! ?
                        @.transpOrder := void;
& @: w+ m0 H9 k. J                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,& P8 ^  d; Q4 [1 ^* E
                                @,root.eventcontroller.simTime);
5 u  t: ?; ?# U" \( v+ }                        @.HasOrder := false;
: g+ J" B1 _* T+ \( s4 e) M                        @.DrivingHome := true;
8 N8 `& f; S8 p. a' A  d, u                        rgManager.tryToStartTransOrder;
3 Y2 U, c* Z. [8 ?) I1 S& n1 w                        if @.Destination = void  D7 p/ ?3 ^, }8 |
                        then -- no transport order for vehicle @! g7 {" N# |/ [9 `9 [2 \
                                @.Destination :=. s' n) D! @: Q6 F) F$ ~9 h. C5 _5 Q
                                rgManager.nearestFreeStation(@,track.~);
( H* D) J' F2 x6 R2 V4 t! U                                newDirection(@);   
" ]/ k/ ^) t+ h. L2 \                                if @.Destination /= void then' v  l8 {) ~4 ~/ P  y3 l
                                        @.Destination.NumReservation :=
# V# U& i0 }: N8 N+ G# A$ h4 h; s( z                                        @.Destination.NumReservation + 1;
9 P+ _7 J+ j, R5 R* G! w& Q# `                                end;8 w1 \4 \0 _7 u4 u
                                @.CurrIcon := "drivingHome";
& I$ u7 R4 Z. o3 g2 T                                @.DrivingHome := true;
6 C6 q8 v/ }5 n3 h% Y                        end;9 v0 x1 C  p: d% L; w  Z
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station% [2 w" A8 e# b
                        part := @.transpOrder;
4 K: N; H( x* U0 D                        part.move(@);-- load part
+ G; e2 x) [9 C" t9 a9 O                        @.CurrIcon := "load";' @! t- F, @3 {0 N4 @. B
                        GlobalDistObj := part.globDestination;
. f) v5 W3 V) l  a  q- ]; g                        assignLObj := rgmanager.rgAssignL;1 f& G- q/ q/ m) e
                        row := assignLObj.getRowNo(GlobalDistObj);) J! i: `" R# w; W# `
                        if Row = -1 then -- since 70& K# @+ \. q+ P
                                if lan=1 then
- |6 l' U1 h$ X                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),% Y* e' p+ v9 P& a& Z
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ k$ V& j* G- I                                else
- V& y+ u! a3 v- P  C7 k; U                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
. N. R3 c" Z4 M- y- u) Z5 ^+ t0 C                                                to_str("in docking station: \"",?.~.name,"\""));                               
6 C2 d! g. K0 k% ~6 i/ f4 ~                                end;' G- Q) h5 U2 s, d
                        else! G8 a+ ?- |" n6 Q- `6 f( z% e
                                @.Destination := assignLObj[1,row];! |; c) g& M% \- l# H
                        end;                        2 a: |+ {2 q$ j9 _+ B# ~0 {' p+ U
                        newDirection(@);0 m7 g, \6 ]- F0 z5 U
                        @.HasOrder := true;1 s" o; f, e/ a# t% H
                end;
; k( t. u" W% s        end;3 [% |/ M' k& |6 R; g% q
end;        -- of the method
% B. h! q; m8 Y* [' j6 P
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
  j; r* @% h# H) o7 Q1 o
- R$ X6 K, N( }, M2 x这是AGV_putin中arrive的method。- J8 B' q7 n6 X# [' O$ Q$ C

1 p( K1 M9 s1 G- X7 N* d. b当到达物料速度越高时,这个报警更多,
& A. T( |- r0 t9 w( E可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
9 [  V9 b9 e  s4 U程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?( V& r- F/ j0 m: ^# _+ N

, Y5 j/ c( H* z* p* T' |另外一个小建议,就是move,所有的move都可以这样- p3 G, }7 B( [  _2 p
if not move() then debug end
, Y8 {  t) U: C& M' h' E这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。5 u/ c" \3 ]: r9 r. s" \
plant simulation中的free libraries有AGV模板,
5 g- ]3 H: w: p4 M- H, ]里面也有案例。! D: o! O( b( C# u0 M6 q
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
1 H( y: |5 R4 L$ T, k0 w4 l6 _3 I7 K$ G, ?2 P7 M
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" ~- Q) W4 h, @7 F$ y) C' a$ _# o' y* c0 ~' L
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
; V* {8 a1 [; F- ?* x1 P这是AGV_putin中arrive的method。# z. i4 j, W" j6 u/ _; {

% J* C# X  b3 v5 A当到达物料速度越高时,这个报警更多,
' P& d# ]$ g% i' ?4 O
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-4 18:35 , Processed in 0.016711 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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