设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7770|回复: 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'- i5 C4 w! t6 g0 J4 @# n
*/8 D2 U" G+ q9 d' V! e
is7 I$ L+ K+ l& R5 I
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
. T8 A  |& \, P( o5 N9 Bdo
6 u: Z5 P2 F3 F8 {8 X0 `        Lan := rootfolder.Internal.Tools.AOLlanguage;( x/ Q7 R% u7 b: t' n
        if current = @.Destination -- else return
4 T# Y) g& b9 Y) H4 e& t  p3 e" s8 w        then. e4 M( t$ L4 u6 J" S3 A& ?
                @.Destination := void;
7 f; x" A$ ~( z                if @.occupied then
' |, B  k& ^2 X- [1 v                        part := @.cont;
* l! F2 e( O5 Y  N                        @.transpOrder := void;
1 x: T+ h, H' l/ _  I% [                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,5 N3 d1 ]# d. G6 X( e# Z& `$ ?
                                @,root.eventcontroller.simTime);  g# W9 q! z' y5 c& U% X( c# U5 R% x! n
                        @.HasOrder := false;$ \- o3 P4 k8 \, p2 c6 A( S
                        @.DrivingHome := true;
5 c9 {1 k1 g7 N- D                        rgManager.tryToStartTransOrder;# l8 M  Z& j( n. s. t
                        if @.Destination = void% l* J0 i$ f/ n! g# j2 e* i0 C
                        then -- no transport order for vehicle @
- Z+ O4 C9 c3 p- q8 T4 @                                @.Destination :=
: @) l$ z8 d* \! b1 |+ `6 g                                rgManager.nearestFreeStation(@,track.~);/ O% r+ E2 t  ]0 P7 H, L% l
                                newDirection(@);   8 q# a9 n$ |6 A' Y( A- [
                                if @.Destination /= void then
+ t! @& _" D2 y                                        @.Destination.NumReservation :=; l, L# U- a2 a1 n
                                        @.Destination.NumReservation + 1;
- J& ^: z8 [) G5 d) e; C; f                                end;1 ~+ ~. o  u( C
                                @.CurrIcon := "drivingHome";
: e$ x  H( G4 T% w                                @.DrivingHome := true;$ ~7 s; ]6 ?4 c, ^# q, o7 C
                        end;3 }* V, Y  _. E6 u
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
0 ]2 e( B! h* l; I                        part := @.transpOrder;) S- J( T/ X- j
                        part.move(@);-- load part
: \6 C. m  j% F  L( l6 ~                        @.CurrIcon := "load";
  Q% j3 K, ~2 a+ G, Q: b7 x                        GlobalDistObj := part.globDestination;
% M" u; L4 @+ p9 y                        assignLObj := rgmanager.rgAssignL;$ H2 v6 j, F& C# `# w' g
                        row := assignLObj.getRowNo(GlobalDistObj);
7 [  n+ S2 L, k4 V7 G+ Y: r, q                        if Row = -1 then -- since 70
& E0 V" p. G& p                                if lan=1 then* t* r8 G) {) n; U, p7 H9 Y1 n
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\"")," n. {/ Z8 Y- ], k2 v
                                                to_str("in der Andockstation: \"",?.~.name,"\""));- z" r6 s$ @- I& G; M/ w
                                else, ]" ?( B) {- f
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
2 F0 i9 C  [9 {) Y                                                to_str("in docking station: \"",?.~.name,"\""));                                ' N7 W7 J- q; m. ^. ]
                                end;' b4 A  l) x% ]
                        else) y& T8 E0 n1 Z
                                @.Destination := assignLObj[1,row];
  a7 X4 G3 Q6 E" I                        end;                        ( a: o. T; F- C0 u8 L
                        newDirection(@);, T+ c4 r; H  R3 s- J
                        @.HasOrder := true;
! ?! Q; S8 Q& c: x  E. Y                end;4 v% u) A( M3 N7 T" c
        end;
( p+ l$ t8 |4 }9 K, |end;        -- of the method
# F/ ]2 R* q/ R9 c( ]# K) F
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 / }) i) X9 n& U
5 u# u' ?  G' W. \% ~& M' Y. F
这是AGV_putin中arrive的method。' u4 s6 u- V0 `* b4 F/ S2 u

, I) _9 j. Y' s9 ?1 g, r8 t当到达物料速度越高时,这个报警更多,! G5 q! {. {& `( D7 U; D
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。& v5 [: {  M4 F
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?$ y5 I0 M- l2 l) u/ V+ F) E7 `
3 l- w2 f. |( ?  B: l
另外一个小建议,就是move,所有的move都可以这样
+ _! q" N) E  {9 U, @* G6 iif not move() then debug end
' y  ?9 I2 G: B/ F$ x2 Q这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
) W% E2 Q8 Y) m0 G: gplant simulation中的free libraries有AGV模板,
, ?7 {5 f% P7 i9 w. s5 _& I/ S里面也有案例。
0 I7 M/ j5 J! R$ ]* \3 t我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。8 `2 F* I1 H8 ?
: V2 O2 w3 j3 J, Y% U2 ^" ^7 X; B
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
# C% s7 m3 ~$ |2 a0 C3 q! L4 |5 \$ O. T4 y: u. |# w# X* }. G  Q
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 # l. h) b- M6 M. a, S
这是AGV_putin中arrive的method。( g  K  H; N$ U8 T

' m' @8 I* y8 u! M9 c当到达物料速度越高时,这个报警更多,

- M& a9 y- |: A3 R* c另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-28 17:02 , Processed in 0.017351 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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