设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10100|回复: 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'
/ f8 s9 W4 b( L) X7 S2 L+ ~* ^*/- s, _* T' K0 z- Q- h3 @
is
# W! b5 H6 v- e& D2 M5 a" G+ m        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
, `7 _$ X; ]2 w' ldo
3 g" B2 S* W; m        Lan := rootfolder.Internal.Tools.AOLlanguage;
, o' F% E% i! m# J$ E8 o& o; k        if current = @.Destination -- else return, p6 D' \) F5 [* {) I
        then& W- Z' U# G# {- R
                @.Destination := void;
$ z$ C" Y( _1 u7 t+ {, D                if @.occupied then
" z/ k# r# e/ v                        part := @.cont;
2 L. L4 s; _4 k                        @.transpOrder := void;
9 [; w% c3 D0 \+ x6 r- C                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,, F" K5 t! `+ r0 d( V
                                @,root.eventcontroller.simTime);
& c' f, |' u+ v                        @.HasOrder := false;
% w( s1 g$ U% i. i. {/ G; p& w* _                        @.DrivingHome := true;# D' I7 R4 I$ H+ w/ {' X
                        rgManager.tryToStartTransOrder;3 }# J# X/ e/ Q# T
                        if @.Destination = void
: N9 Q; N1 X7 L$ {7 H. n+ `                        then -- no transport order for vehicle @
" ~1 k6 f6 f) |: Z2 I* s7 _                                @.Destination :=
" ^7 M( L, J$ J( l                                rgManager.nearestFreeStation(@,track.~);, T, x- H0 V. b4 \* O( F1 [+ r+ C' O
                                newDirection(@);   ! z1 @, _; T. R; `, d2 I7 y
                                if @.Destination /= void then
) T! G5 X# M( Y, d# m                                        @.Destination.NumReservation :=
; m5 T5 N# w7 b& K) b                                        @.Destination.NumReservation + 1;
0 q& r: R% V) z. m7 w8 ]                                end;
# l$ z3 U6 C: V# e2 z                                @.CurrIcon := "drivingHome";  X5 f9 v. s( t6 P, P1 X, O
                                @.DrivingHome := true;
) w. \$ Z- s% F2 B% j8 l                        end;
; G* s; P* G: u1 H5 r* S" }8 v                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
. p8 j9 ]. b! a9 G# C                        part := @.transpOrder;: b5 a' Z) ?3 E7 d2 U
                        part.move(@);-- load part
% A' l. Q' x0 E                        @.CurrIcon := "load";
" O) u' B' _; A' p( O9 D                        GlobalDistObj := part.globDestination;3 `, c4 U$ ~. E- b& l( Y& f
                        assignLObj := rgmanager.rgAssignL;
: S  T) q# b; Q6 O                        row := assignLObj.getRowNo(GlobalDistObj);4 [; R5 w# R0 {7 M' \2 N0 M" o
                        if Row = -1 then -- since 70" Y' Y; s; ]3 k. p. B* \0 v. s% n
                                if lan=1 then
* @# O+ @: r* n                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),0 f& N1 N$ Q, I
                                                to_str("in der Andockstation: \"",?.~.name,"\""));& n! k  Y% K8 C2 R
                                else
0 R5 \" A  B- N( k4 b                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
/ T- N. {( B& C                                                to_str("in docking station: \"",?.~.name,"\""));                               
! P- n# |2 ~6 q                                end;
( J. |4 @9 _! T8 a- C! _, E! @# ~                        else$ E* o! v: [0 e3 i+ x
                                @.Destination := assignLObj[1,row];( W  h1 z, K) \- G6 M) j7 y/ Y) B
                        end;                        ' ]8 u3 |0 o1 p# N% T
                        newDirection(@);( I/ [5 a2 e. m! {: u2 m; R  S
                        @.HasOrder := true;
, [/ M; h9 c5 Y0 j                end;
6 s2 u7 T! z. y; u1 W2 j2 m8 T* s        end;, O" d- P# V; _- n& w* z( A+ x
end;        -- of the method
9 F7 o" w  ^+ n7 N
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 # {$ v- a6 }7 }/ F  K9 m
# R( l$ y* _  R
这是AGV_putin中arrive的method。
. e$ Q4 o. L, U0 y* Y& [! |0 v& h
当到达物料速度越高时,这个报警更多,
& r" w4 }) ?6 r& Y0 k0 T# y6 r可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。6 G# N1 M( c& H" ]
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 H/ i* d4 Y' E' A! n6 m. N6 _: Z: \1 y) S
另外一个小建议,就是move,所有的move都可以这样, r4 q' A( k2 J7 _; B+ _6 b1 A
if not move() then debug end" S, P( e; k9 u% F, c
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。$ ]) R3 P# W. T* H6 c- M# ~
plant simulation中的free libraries有AGV模板,
3 ?9 i! I0 r+ O里面也有案例。; F& A/ U& z- t& N8 m/ G9 p
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。7 E+ p; U% Z9 ^

8 G. Z' {; k: s  F我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
1 |/ b; P. l) e  H) E- X; v1 Q( a& g( s6 \, |5 p4 x
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08   U& H" v1 K/ j
这是AGV_putin中arrive的method。
; v, d7 P% H4 _9 j) a
, U. i6 [3 n0 |0 }  \! J: x当到达物料速度越高时,这个报警更多,
3 U& G+ p, i# r; Z- W
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-13 09:59 , Processed in 0.017967 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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