设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9645|回复: 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'. \6 s6 K  O; T% ^$ G( ~
*/* ~( M% M) b7 n  n
is
2 ]5 p2 O7 j9 Q9 _) U7 x; ^, |        part, GlobalDistObj, assignLObj:object;row,Lan:integer;! H' u% ~; u1 _* A0 Y/ D8 n
do
. ?( ]/ |- A$ o0 a2 s# M        Lan := rootfolder.Internal.Tools.AOLlanguage;
9 o% P: k/ j" C* O        if current = @.Destination -- else return
2 ]3 a8 R3 I# q- {$ p# H; W* ?        then' x2 }3 ?4 K7 l- Y- h
                @.Destination := void;
* K& U  q9 e/ A1 c. S& |                if @.occupied then  h3 v6 \" l3 X$ e# b/ ^# n
                        part := @.cont;' o7 b) A$ ~/ x  F6 i  _
                        @.transpOrder := void;
5 u4 X. X; j" ~" A- I3 j                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
: j8 M; x. p2 v3 V$ u& B                                @,root.eventcontroller.simTime);
; b. @! W7 g0 [' j2 K: b                        @.HasOrder := false;
2 H2 j5 y- I" ~* D5 ^4 `                        @.DrivingHome := true;- i( d8 ?2 m! G7 F; _' N
                        rgManager.tryToStartTransOrder;/ ~- u1 V' y9 U( a6 l; |* \# Y+ Q
                        if @.Destination = void. \( k+ c+ ?$ u: \
                        then -- no transport order for vehicle @
# u4 d1 F7 {* [$ H0 g) b$ h6 R; X$ {                                @.Destination :=$ m. C- H4 _- h0 z& y+ z7 e( {
                                rgManager.nearestFreeStation(@,track.~);. _4 d* }: I4 H( b6 N0 b8 N
                                newDirection(@);   
1 b2 w, r5 x0 d6 Q                                if @.Destination /= void then
' k( o7 K* B/ f, ~) S                                        @.Destination.NumReservation :=; N7 f4 k) \) _3 W# {
                                        @.Destination.NumReservation + 1;
$ S/ u0 V; ~% F% Z( ]  |                                end;
% v5 k; l; I+ T1 Z3 O                                @.CurrIcon := "drivingHome";
! Q7 \0 b6 m+ p3 G                                @.DrivingHome := true;
/ j9 \  Q( l7 [' T) n) H1 v                        end;
& U3 j$ K. s3 t# J! W                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
3 d- O/ T. A: C  A9 h9 Z                        part := @.transpOrder;6 `9 F( F- n5 g3 M! l/ @/ k8 i" m
                        part.move(@);-- load part5 o" L  J+ L6 R3 M7 r# d) C
                        @.CurrIcon := "load";
, [: K6 n' U+ V                        GlobalDistObj := part.globDestination;
9 R7 m# e& M5 C* N) O                        assignLObj := rgmanager.rgAssignL;
; ]/ ]) _( [8 S                        row := assignLObj.getRowNo(GlobalDistObj);
% A, X! E. C2 W# H& X                        if Row = -1 then -- since 70! n3 e( a! Z' M1 x: T
                                if lan=1 then& U# M# u) T2 x8 N, ?+ J7 z  ?
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
" `/ h. ~% m' T' R# u* z4 |+ F                                                to_str("in der Andockstation: \"",?.~.name,"\""));
7 S7 n( T9 p3 ~$ z% N                                else
/ X5 O6 U' b  {) M                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
  x" T# a$ S4 q* h                                                to_str("in docking station: \"",?.~.name,"\""));                                # Q$ t; L! q4 h; V. N
                                end;1 f5 Q' C# F9 l
                        else* H! C0 `' i6 p8 T  o7 U) t) e
                                @.Destination := assignLObj[1,row];+ R7 ]6 h* i3 A" n" l
                        end;                        + R* V; K9 a' T
                        newDirection(@);
: i7 o% U, m2 Z+ h                        @.HasOrder := true;
4 u; ?( {2 x, z1 g  F# g4 @                end;
; ?$ r* G5 ?5 U9 ?- J        end;
3 o/ r5 u9 K  Y; n6 {) Oend;        -- of the method  x% P+ }: c' @" A
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
2 M$ |6 V& X* X  n$ w6 g+ K) }; y
7 O+ e2 u; U6 @0 X& I这是AGV_putin中arrive的method。, C& A) f) x0 g$ c0 a
* A* U+ H& k' a" e* F
当到达物料速度越高时,这个报警更多,! \$ {% t( b6 }" M4 W; P  i
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。4 H" g, i& d: U& c
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?$ I+ f. C; n& E, a

" `5 o8 e# x! }另外一个小建议,就是move,所有的move都可以这样# m1 w9 @! P* W; A5 j
if not move() then debug end, r5 N/ F1 a! e2 j
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
$ y% V* |3 G" J% V! _  Tplant simulation中的free libraries有AGV模板,
  ?% e$ {! n" C) D里面也有案例。
' s; D: ]  ?+ F: Y' L) p$ L2 l& H我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
0 R9 J+ ?) P7 d4 L- ^3 l0 Y' _: U6 c) W" q1 q) j
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
0 a# }# ?: r. Y; b- H- Z) p
7 P+ i4 h/ s9 {# v. ~4 c/ s那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 3 ~5 C7 M& w/ _/ L3 d7 }7 i  G! W$ t
这是AGV_putin中arrive的method。0 K; T0 N6 v, {( P! e6 {: U8 m2 x

% ~5 L- _' n% x. }当到达物料速度越高时,这个报警更多,
! c0 K; \4 P/ B6 I) d( O. `
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-14 05:52 , Processed in 0.019634 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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