设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6323|回复: 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'+ m/ S! V) l  t% r* v1 A
*/
& v! S9 V  @4 d8 J# {is
* t& f) @- S) r( Q6 _        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
% m0 ~7 n8 u8 p+ Z4 i% |do7 E% A1 ^7 d0 y% u0 U
        Lan := rootfolder.Internal.Tools.AOLlanguage;' z  C' x- H6 h4 A% w, e
        if current = @.Destination -- else return
& I4 {3 H6 }+ L" t        then
! Y6 X" H' v" h8 i/ T                @.Destination := void;
: H. s! D( k6 X, r. x                if @.occupied then
- ]5 t; S9 A' }. C' v                        part := @.cont;- Y( y; L$ @) x8 \, B5 ]& i: O# X
                        @.transpOrder := void;
. O9 f* R6 v. |4 E0 e                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,4 \2 Q8 ~, r. G2 G. t/ W
                                @,root.eventcontroller.simTime);' ]% m/ L2 V+ p  l! h8 H' u- ?. N
                        @.HasOrder := false;
( S; S* p. T! A- v" L+ D                        @.DrivingHome := true;% S6 ~5 c: Q9 ?8 F
                        rgManager.tryToStartTransOrder;
/ m0 m! ~: g1 y! g                        if @.Destination = void0 Q1 O9 B4 e/ U$ f& f( S
                        then -- no transport order for vehicle @* K7 A# K* f& b1 j$ x& V1 r6 j
                                @.Destination :=: w; g+ K$ l; C
                                rgManager.nearestFreeStation(@,track.~);- n% I5 z; q+ j* r1 [+ G8 t) s2 \. V
                                newDirection(@);   $ M" v# a+ H! E4 l  j( r+ D
                                if @.Destination /= void then
. X/ A8 \& D& E  @1 W# V5 A                                        @.Destination.NumReservation :=
/ R% B  y$ i3 C+ B+ L" e3 m% f                                        @.Destination.NumReservation + 1;! g4 [' o; J- ^: ]) U6 H/ ?( x
                                end;6 f" ~1 {- w/ P, O+ i, K
                                @.CurrIcon := "drivingHome";6 D6 {1 A) ?7 I2 u9 }- _
                                @.DrivingHome := true;
$ n8 T2 Q0 g( l6 b' b$ c. B                        end;
- C# f8 S  S! j/ r                else -- the vehicle @ is empty, both vehicle and part are in the same dock station) S3 \$ K. }6 Z; ?
                        part := @.transpOrder;8 N, B  C  D% h9 |% h6 E
                        part.move(@);-- load part
/ W7 e0 I( \6 }1 G7 v                        @.CurrIcon := "load";+ [4 g& x( ?$ C# r$ u# z
                        GlobalDistObj := part.globDestination;
% {! [, P9 y  \1 B) ~                        assignLObj := rgmanager.rgAssignL;' E; ~) h8 a1 V" @! u" ^  u- ?
                        row := assignLObj.getRowNo(GlobalDistObj);
* J3 j: z1 A( ?5 d5 T' i                        if Row = -1 then -- since 70( X& B+ M- X" i, i# o
                                if lan=1 then
7 m0 ?7 N5 A. z/ p0 ]                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),+ ^( X9 K$ b7 P
                                                to_str("in der Andockstation: \"",?.~.name,"\""));: y" ^, _* L8 N' _
                                else
. S* [; V, o7 s  |2 v" M                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),* E( X4 V1 I- ^$ @5 p% S
                                                to_str("in docking station: \"",?.~.name,"\""));                               
3 g7 ^) `" ]: d$ W" V# C& K5 i- z                                end;
  P3 Q7 L# e3 w. h                        else- t% V: V  }0 ~  A
                                @.Destination := assignLObj[1,row];' A* p! X8 h* j/ j1 A/ l
                        end;                        1 G5 d- x5 S# C& ^* u
                        newDirection(@);
. N. M2 @8 L7 y" h' y9 S                        @.HasOrder := true;2 [9 m9 z" T/ l- }: @) E0 X% A
                end;
/ t; ^, G4 B9 P! F/ g+ l* \7 P        end;
" ~" R% r  {/ P) d, K0 Dend;        -- of the method
( O- N- R! S) [7 j
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
: ?4 m) ?# h8 _8 l! {3 Q, ]& `' q
" u7 G- _- i/ R2 c/ N这是AGV_putin中arrive的method。
7 y: ?5 e+ Y0 i! h3 `+ u; E2 f8 {- z- E6 M
当到达物料速度越高时,这个报警更多,
; t  G' b9 b  |$ O' a- b; M7 O可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。) U4 t' Y# F: D% Q% V( g; o
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
' V" n  a( j5 o2 R
- d$ X8 A4 A3 F另外一个小建议,就是move,所有的move都可以这样+ i  T8 S- I; Z
if not move() then debug end
7 W) K: G6 l+ p这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
; r$ Q7 i/ [$ ^plant simulation中的free libraries有AGV模板,3 B! }) d" F# C4 \) ~; |
里面也有案例。+ J$ r4 @. w& i2 l" _
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。; L# E8 E3 q% t0 I3 U7 u

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

9 u  k3 I* D' Y) ~; m& B5 |另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-31 00:38 , Processed in 0.016884 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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