设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7345|回复: 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'
3 A5 n' \# e# O: _  Q0 W. O*/
% X; b, k( h8 n8 m/ Uis7 x8 \1 M$ y, d  l1 j
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
3 ?0 F* |. R8 n% x, F0 B& }* udo
, n- }7 W" b* ?/ O        Lan := rootfolder.Internal.Tools.AOLlanguage;
8 J) X; }; ~5 ^0 Q; s8 c  J        if current = @.Destination -- else return
- q! |/ W; W1 W- Q        then* C, C' [/ J" M5 I8 p
                @.Destination := void;# _" Z, r( v, u/ f/ p) i
                if @.occupied then* i* ~$ A& i- V  K: q  G
                        part := @.cont;
2 b% y. U- F2 g  z. {                        @.transpOrder := void;
- ^+ E1 t* d  i: X                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
; z3 j0 h/ _) @% L9 @- N* n                                @,root.eventcontroller.simTime);
0 q# @: D6 C9 H  r. Q, {4 e                        @.HasOrder := false;
1 F4 t( @+ g  I& ]( \; A                        @.DrivingHome := true;( u% Z3 z5 @; S. K: j5 A
                        rgManager.tryToStartTransOrder;& B( Y, D: Y4 S3 F1 A) I
                        if @.Destination = void# s& e7 N7 X5 \0 G! x
                        then -- no transport order for vehicle @
$ O4 d4 K  I+ i! w                                @.Destination :=
: R9 Q6 K, k& |8 p& Q                                rgManager.nearestFreeStation(@,track.~);
0 h( z3 k# |2 l- k                                newDirection(@);   8 D5 ^) h7 ]' T7 k$ s+ F- n& I0 e
                                if @.Destination /= void then
# \4 j1 S# D6 d/ ^                                        @.Destination.NumReservation :=+ ]1 B8 u3 ~& q, \0 u3 D7 Q/ x
                                        @.Destination.NumReservation + 1;& p7 @: A: A" E2 ]. H
                                end;
! U. U  M5 [* i  d  T3 W8 a' }6 O                                @.CurrIcon := "drivingHome";
8 Q! V* d8 U5 Y, L( S1 b" B, \                                @.DrivingHome := true;9 q5 A  o! _1 b/ S
                        end;$ U" d. {9 M* a
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station' H. }! I/ y) s' S+ s+ m
                        part := @.transpOrder;$ q+ q* y) i6 x# n: y1 |! A; M+ K' b
                        part.move(@);-- load part
& }* n, ]) c; U: ]1 ]; j                        @.CurrIcon := "load";
2 {) r$ W) Q) L                        GlobalDistObj := part.globDestination;' y& [+ e4 W# V) ^- N9 Q
                        assignLObj := rgmanager.rgAssignL;2 P9 ^& L: d. I
                        row := assignLObj.getRowNo(GlobalDistObj);
* D- V7 T7 M$ J/ H+ t/ Z8 O' a                        if Row = -1 then -- since 70% m8 V. B" i3 G4 n6 b- A0 {
                                if lan=1 then
& L7 S+ I! R$ V% S- t                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
( i' M5 ^- j" H& R' U; t2 u                                                to_str("in der Andockstation: \"",?.~.name,"\""));  x! a& i9 \" f4 s+ ^/ @# q; G
                                else
1 d+ P0 X# R! s$ n8 U0 [                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
$ Z" h; c6 N. A  `% k/ m                                                to_str("in docking station: \"",?.~.name,"\""));                                + n" Y$ \' n; h8 N. B( N
                                end;* S; d! c/ w' C0 S" ?" k' K
                        else' _% m* d/ D2 ^1 j# Q; {
                                @.Destination := assignLObj[1,row];
  `( u: b9 _3 D5 S                        end;                       
, F, X* t8 C2 {/ Z1 A/ W7 p                        newDirection(@);5 ^. b' w" B3 t
                        @.HasOrder := true;- {- }' H- a0 j9 c: f
                end;
8 o7 z7 a$ ~) ?& D        end;! [  J  O8 i$ {! f/ k& y
end;        -- of the method
0 q  D4 B2 |/ `) w- H
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
$ N4 A- [) M& y# X" z" Q9 Y; j) h- G2 U* P6 ^
这是AGV_putin中arrive的method。# F: A4 g% Z* J+ e

+ ~! H  F. [) H! x1 J$ @- c当到达物料速度越高时,这个报警更多,
. }' I9 R- \2 M) u可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。+ ?) [/ A  f3 U" p% A" _
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?4 ^: \+ }+ k# {* y0 V& N: q, y
1 e: M5 F8 g, ]* S0 u$ M; q
另外一个小建议,就是move,所有的move都可以这样0 U9 e& r5 \0 d' I$ h$ p
if not move() then debug end* |2 O& [8 S4 P+ d! N
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
6 \( {% ]5 F5 h  D, \8 Tplant simulation中的free libraries有AGV模板,9 K; V9 v: ~! X
里面也有案例。
8 ]5 \( E8 J8 i我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
6 H6 ]5 @& N! X
+ q, d: W7 Y# L: Q+ w; P2 n7 y我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 + q2 L) J6 V* \

9 [" _7 T3 ]2 F5 X; r那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
+ X) S6 S, n7 }2 W; p这是AGV_putin中arrive的method。
  l4 B3 m5 S+ ], P0 u
! x, Z  V2 u, \( g8 p+ W当到达物料速度越高时,这个报警更多,

( B  [) X- m4 \$ o! e; h& {另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-5 15:08 , Processed in 0.017029 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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