设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8226|回复: 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 D$ u& q& ]- d* |2 n& R' `*/; |6 m/ _" n1 N
is7 ?- m, e5 |, K
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- Z$ E* [9 s; |; \4 R) T' e
do
% d% p% H2 w! K% u  P  s        Lan := rootfolder.Internal.Tools.AOLlanguage;' J6 O* q. e: W. }* ?
        if current = @.Destination -- else return
4 a: J/ d# h. o- b: s+ b$ E        then$ D5 s5 L5 D# B# J. J
                @.Destination := void;
5 L( |; s. M) I                if @.occupied then
  |1 S6 v1 ~3 z: j                        part := @.cont;
8 d  ?5 H4 P1 H/ `! g                        @.transpOrder := void;
( G. _1 O( O: y                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
3 `5 U' f  f: n' S                                @,root.eventcontroller.simTime);1 D5 D6 O8 O' a4 e9 D! S5 N
                        @.HasOrder := false;
4 |" y8 k0 R& j/ R5 h  R1 ]# e8 Z                        @.DrivingHome := true;2 K4 j8 ~0 N# n. d
                        rgManager.tryToStartTransOrder;
/ l8 p; Z5 n% `7 P* i                        if @.Destination = void
1 g. Z+ h+ h4 ~0 D                        then -- no transport order for vehicle @
. B3 O/ V% W7 z! W9 d; d2 `                                @.Destination :=" U' y, P9 P  \" I; B* U* s- `
                                rgManager.nearestFreeStation(@,track.~);# S9 u/ _2 k* D4 w" Q. q) @' C
                                newDirection(@);   
, n3 C3 Y+ S' s/ }                                if @.Destination /= void then  C; @8 Z% Y! x0 ^  n  Q3 }
                                        @.Destination.NumReservation :=
- i- N- w9 L/ Q5 O! a& Q2 u0 B                                        @.Destination.NumReservation + 1;
! l0 |2 [3 s+ @3 g# m2 \                                end;+ a+ s) Y" I( u
                                @.CurrIcon := "drivingHome";
3 ?' }+ e( b) v9 L9 I8 J                                @.DrivingHome := true;
; \8 x" p; r- O: l. @! B                        end;
( m0 a' W4 i% j% m' ^- E                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
3 ]6 w% }6 @3 e; [, H4 X                        part := @.transpOrder;3 F- {. K+ b' \
                        part.move(@);-- load part0 p" e1 [& r. ~* H; I0 ]% \
                        @.CurrIcon := "load";2 t3 ~$ c* H9 X( g8 S- I
                        GlobalDistObj := part.globDestination;: C) a1 o1 t, @* ~5 F
                        assignLObj := rgmanager.rgAssignL;; M2 W  K: K2 x( ], m/ H! }
                        row := assignLObj.getRowNo(GlobalDistObj);
1 s9 `& g1 B8 \6 G# k+ l0 j  `                        if Row = -1 then -- since 70
4 r2 F7 Z. s/ W. h                                if lan=1 then
! H5 D0 k# _' M! Y1 K& S: u                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),: ~1 `6 j2 R0 t; U
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 ~4 {6 t) a& Y/ q, p                                else6 U* a3 q- B4 }: w' a
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),! A: t$ U6 k4 T& C0 ~* ?  r/ N5 M
                                                to_str("in docking station: \"",?.~.name,"\""));                               
( u- k3 N. w1 Y, r                                end;
$ k/ R# f- i( _5 \2 q" d2 P: d  {                        else4 t3 C' n7 l8 P% {9 I
                                @.Destination := assignLObj[1,row];/ l& n: N* ~% B( b
                        end;                       
, l5 }: c  n8 A0 r  G! e                        newDirection(@);" z( p( ^6 K2 y( Q1 |' _4 y" u
                        @.HasOrder := true;
4 G2 K+ d% x) y& s7 o! o                end;
2 ]5 J) s4 J4 I. b8 {# d/ B( S  d        end;$ E+ x: [* M+ V- a
end;        -- of the method, @, B% }) B0 N4 m! b2 v
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
$ A0 B( [, v% o8 p# [# |5 v  ~5 H6 v4 S# B  ~# i& k
这是AGV_putin中arrive的method。( q( P4 K3 Q+ l1 l1 b2 p

: D- w0 z5 J) M# ~2 ]" D3 D4 Y2 G当到达物料速度越高时,这个报警更多,
  L# G. r8 I5 p. M/ M4 D可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。) I4 c& |$ f' _+ ?
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
% c5 c0 Y- V( x; m$ G
1 o5 T- u  Q- {; d5 ?9 E另外一个小建议,就是move,所有的move都可以这样
- \2 P1 ^% k5 |/ @if not move() then debug end
2 ^0 _" p* M) n$ Z这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
$ {4 W. i* C6 ]. K  W/ z! B, t/ {4 g4 kplant simulation中的free libraries有AGV模板,' y+ i- ^" w8 m% B# H3 t
里面也有案例。
0 R6 f% C4 s4 g% b$ i我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。* m0 g  Q9 {. @+ J

/ p  a! o" E% h" b( ^7 d  f4 e我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
4 k2 n3 v4 y2 V' _( b+ s- i
+ R4 I  Q* D: ]) b那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 $ b1 `5 a* t/ s" R) j
这是AGV_putin中arrive的method。. o5 j: g5 O! N" f( d  C# [9 w

9 {; I. Z. f* I' j当到达物料速度越高时,这个报警更多,

! n3 D$ ~# m2 I0 A! m$ c. s! ~另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-21 23:39 , Processed in 0.018372 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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