设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7957|回复: 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'( ^% t4 b  \  W4 V
*/. r4 `: F9 y& C3 `3 E+ r
is
) m! ^% Y0 t/ R7 x, u( h        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
, M' E# ]# g/ S2 D/ q( tdo
; \- n$ t9 O2 f; h        Lan := rootfolder.Internal.Tools.AOLlanguage;
0 J1 j* H8 I& m  |# u        if current = @.Destination -- else return4 p5 ^. m6 v3 K" D& d  X* {" G; g8 A
        then/ o5 s( [( R4 ]* c6 ~& [
                @.Destination := void;
, w9 Y; k+ e9 \) f                if @.occupied then7 H) H1 J6 }: L
                        part := @.cont;
" V4 \1 D. P/ J/ s) q7 f! u                        @.transpOrder := void;$ ^( x2 y) \( b
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
5 F3 E2 u$ J7 L2 ^; C: K                                @,root.eventcontroller.simTime);
* ]) m2 J( W  f/ q$ r% W; H; }/ i                        @.HasOrder := false;& g+ \- T- _/ y
                        @.DrivingHome := true;' w$ C8 q; \0 y# e) X
                        rgManager.tryToStartTransOrder;
  B# I8 d5 K% J) l! q                        if @.Destination = void  u( p# x, u1 }5 C' M, o1 ^: r0 u
                        then -- no transport order for vehicle @
" J3 I3 S3 w) D# t/ D" V$ G                                @.Destination :=
2 K/ l$ u/ n( V+ Y# ~' v# {                                rgManager.nearestFreeStation(@,track.~);
5 f: H1 k! x  u0 T( U5 Q                                newDirection(@);   : {6 J, l( J( W& A
                                if @.Destination /= void then
) A8 D  w6 G. b3 J                                        @.Destination.NumReservation :=3 h0 ?' d  l# N; ~( z
                                        @.Destination.NumReservation + 1;
% G1 y9 W: J' [) u0 ]; B                                end;
0 W, ^3 {% X9 \+ i- w( o                                @.CurrIcon := "drivingHome";
' z+ o& T1 R2 Y+ K2 f& U                                @.DrivingHome := true;
$ ?3 C/ ]( Z3 a  C                        end;
* a* y) z0 X0 ?, t6 o( `                else -- the vehicle @ is empty, both vehicle and part are in the same dock station* Q- y( u4 [+ ~) j. T$ m
                        part := @.transpOrder;: a3 D2 h' M! _* o" {9 B! E" _
                        part.move(@);-- load part- q2 e1 q9 `7 u# C8 u) b
                        @.CurrIcon := "load";' |# @# w# j0 p( a  m
                        GlobalDistObj := part.globDestination;
0 J8 z0 S* w: f. e$ G+ |8 Y                        assignLObj := rgmanager.rgAssignL;/ b& j. Z& Y0 m: f; H" e
                        row := assignLObj.getRowNo(GlobalDistObj);$ p6 V# |* d- a
                        if Row = -1 then -- since 70. b7 m$ m, q5 \8 E
                                if lan=1 then& V+ ?6 O7 A. N7 i- S
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
+ ?4 B: Z; p/ i8 o, a0 \6 w/ |( c                                                to_str("in der Andockstation: \"",?.~.name,"\""));
. g  e& C) G' d, ~6 `                                else( a( k4 i/ z8 Z: ^$ T/ F$ U
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
; g) B' r; E" t                                                to_str("in docking station: \"",?.~.name,"\""));                               
8 m2 {1 m! [% r% F0 w9 B                                end;
* X2 }7 M+ G4 J2 c+ ?                        else
3 s5 `- D& x' _3 E  a                                @.Destination := assignLObj[1,row];
& q6 `' [$ ~" ^) j( h. @4 d$ q                        end;                       
. c3 s7 R8 {9 S8 c+ R* i                        newDirection(@);
0 S# @) S' {5 ^3 O& A0 I4 T( K9 P                        @.HasOrder := true;
# q2 \. C7 d. Q5 T8 Z( k                end;
6 L1 R6 V% x' b0 g" B        end;
( K/ j. T. W" c: H' j5 ?: Kend;        -- of the method9 g# ^8 U+ _; g$ ]
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ' S3 S; B8 n: e5 [6 Q" D
$ u2 n( E: R3 c, g1 u
这是AGV_putin中arrive的method。$ x, N1 \4 |1 B* \9 y

  x% O" e& w& [# e/ K当到达物料速度越高时,这个报警更多,
) c6 _; v5 R- I  Z% K0 N, ~可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。" r4 _9 S! C7 z) F' T
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?0 j0 P$ e/ M$ k% p' h

4 B4 L: x) g- v8 S) C! r& m3 x另外一个小建议,就是move,所有的move都可以这样$ S- j) n/ X( V$ w7 Q: {
if not move() then debug end4 l: w1 t% J# {1 a
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。! g9 m. P% A2 i* z; `. r/ m. X
plant simulation中的free libraries有AGV模板,, A$ E7 M# X$ }1 R
里面也有案例。- i. W+ y! M3 I, G  ?! x
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
, e3 U# G. p: i0 v. T3 Q' x, }7 x* J: J7 H
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑   d, p) x1 |9 I8 @' b' Y

; j4 ~5 o3 a" v1 s那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
% n$ a8 V% Z/ C8 O$ F这是AGV_putin中arrive的method。2 {; V! B5 B+ q% [9 o
! `4 U3 l) d& i* q7 \9 ?! P6 P7 y
当到达物料速度越高时,这个报警更多,

: O3 Y1 y3 T6 F; q# \3 g* L  K' F9 G另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-7 16:11 , Processed in 0.018037 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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