设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6460|回复: 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'
1 G) N6 K( M  ~7 p5 _# G. a  g*/
- N$ F, |9 j5 l! G! w9 Yis
4 N$ J8 O6 Q. r, O. r3 P% Z        part, GlobalDistObj, assignLObj:object;row,Lan:integer;2 [/ t" P* m0 Y0 I# X# d* h5 e( v
do# ~2 h: `$ }, g
        Lan := rootfolder.Internal.Tools.AOLlanguage;
0 d# j* J) w. @  M        if current = @.Destination -- else return
) O: ]' A! j; S        then
% ~8 o+ J8 l9 k* h" ~$ N                @.Destination := void;
& Z. {; H* C+ F& |5 j2 {$ H! T                if @.occupied then
5 ]1 J/ b, O7 [$ H9 C                        part := @.cont;
1 ]+ k* _7 p# V) B4 Y                        @.transpOrder := void;
7 ?1 W, A8 z3 j9 Y                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
3 |, Y( R3 t$ n1 x% {. S                                @,root.eventcontroller.simTime);) y1 A# R* e% w8 k2 H# D% q. F
                        @.HasOrder := false;
. Q8 }: _* X: L7 H                        @.DrivingHome := true;  l7 C+ @( y8 N  Y( c1 O6 s6 a
                        rgManager.tryToStartTransOrder;3 o, l3 |" M8 A& ?
                        if @.Destination = void
' `& l+ l/ N8 m8 P! o                        then -- no transport order for vehicle @
" {3 D. x! Y. e" F/ H( y/ l. O$ n7 k                                @.Destination :=
  c% O' h2 K6 T* J7 o# Z$ b                                rgManager.nearestFreeStation(@,track.~);
; T% k+ k+ J/ F/ U# A  w: L                                newDirection(@);   % u/ v3 }( d2 f2 x
                                if @.Destination /= void then7 \0 Z- [) j' _4 s! H" H
                                        @.Destination.NumReservation :=" ^: b3 B, ]+ b+ _: w, t
                                        @.Destination.NumReservation + 1;
) r" k+ C6 \2 M' v7 L0 c: x                                end;
: j" A6 s, W4 w9 d; k) g) [                                @.CurrIcon := "drivingHome";
$ u! p, ]( s8 F7 z! G  a                                @.DrivingHome := true;, j+ i$ |5 g. b' t
                        end;; k# ^  X3 J$ [; Z
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station1 }  j7 i9 }' `  |' f9 d
                        part := @.transpOrder;
: _4 j+ k6 v) M: H% ?4 h2 T/ v                        part.move(@);-- load part; A3 B' ]/ A0 k$ R  j& s
                        @.CurrIcon := "load";' [! G0 ]9 T9 Y' q% f
                        GlobalDistObj := part.globDestination;( j" B* W/ K6 J' [' H
                        assignLObj := rgmanager.rgAssignL;
- u! Q( }$ _% a$ V3 y2 W. m                        row := assignLObj.getRowNo(GlobalDistObj);
9 [; Y7 m, `/ D) K2 S                        if Row = -1 then -- since 70
" I8 b: V1 }& c9 r1 t                                if lan=1 then
8 x, N9 G/ x! B* Z) e: s* B1 k                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
# `, V6 j- Z8 N) |4 C7 v* B                                                to_str("in der Andockstation: \"",?.~.name,"\""));. i, {* t7 }$ n/ _" o; n7 P8 ?
                                else  D7 B) k/ ~/ p0 `
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),- |  I! b9 F% l5 g! R
                                                to_str("in docking station: \"",?.~.name,"\""));                               
# F" o$ C$ k; H; A& l- n                                end;3 u. b; @5 q3 R( F6 s
                        else: Y6 E& N6 H+ \+ Z) D
                                @.Destination := assignLObj[1,row];
2 P# a4 a( r8 h+ B3 `5 b                        end;                        ! P9 i4 h7 _% t6 h' l0 C, s
                        newDirection(@);; \, B/ P, r6 N! i- e/ t+ g
                        @.HasOrder := true;
/ F+ o" X5 a" U                end;3 t# N9 j% f' [7 @
        end;# b2 e- y2 ]3 W  R/ n
end;        -- of the method
( r1 O% K- B6 K; A! z, e
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
6 O' D2 @$ e) f6 U7 }
, }) }) r# z, Y这是AGV_putin中arrive的method。& N0 f4 i' @4 d: l# o/ a5 d4 S
- a4 r; p2 E# ^6 H& d5 i- x
当到达物料速度越高时,这个报警更多,3 t' U' e2 w# m8 A8 h* ?/ I* Q
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。1 C! i- O2 T+ s" p* k
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?( K8 r8 Z- E, y1 ?2 _. x! d
' f- A" E# v3 w1 h( [/ e
另外一个小建议,就是move,所有的move都可以这样1 s; i1 z+ j: y* E
if not move() then debug end
2 t( _9 J& A/ q: y) a1 O这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。3 }3 {; y- D* k& X
plant simulation中的free libraries有AGV模板,
, D+ A* x* [' D, j3 f; b% c9 G- x里面也有案例。
6 o1 V6 }9 V4 [% I5 d) Q我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
) E# b3 U4 ^7 ^! n2 [8 y6 B
5 \7 }# a+ k3 t( Y+ n8 q我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
# y3 H; g: A6 M- {9 }# Q, g. s6 \, `- k2 i$ L) O
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 3 t2 V( w/ i+ G  i: m2 W
这是AGV_putin中arrive的method。
0 S  I( K/ v8 h8 p& b
! }9 s& @7 M" \- L$ e) R! a当到达物料速度越高时,这个报警更多,

5 h+ T3 {" V' D8 E- C" D- b& N3 N另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-8 03:09 , Processed in 0.020531 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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