设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9356|回复: 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'
" G4 o5 W: e1 J4 j# n9 O3 ]*/
# C- Q" G/ b3 _5 Fis
2 x5 J5 T  f; B" ^! H. T        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
5 q: ?2 Y1 P# |+ N/ Fdo
! I8 Z9 u3 b. }0 `        Lan := rootfolder.Internal.Tools.AOLlanguage;
& B! o, B1 J$ n9 f$ s5 J        if current = @.Destination -- else return' H# I/ p- Z* B
        then; G5 q9 w& B! V. o& y
                @.Destination := void;
( y) S, ]+ u5 m* k                if @.occupied then  g8 x2 v5 T. T: _
                        part := @.cont;
# X" R5 A, X7 O" }                        @.transpOrder := void;
2 `7 H5 L7 t! O+ k* y* c                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,+ M+ E: k& Y% _2 T
                                @,root.eventcontroller.simTime);
! L  ]+ x9 F9 o3 o8 V' v$ F4 l/ M                        @.HasOrder := false;
( t& c" b+ W3 I$ y- m+ e* N                        @.DrivingHome := true;
9 b$ ^& k9 n4 l                        rgManager.tryToStartTransOrder;
. k! Y4 T& N! ~3 g% ]/ C( S                        if @.Destination = void+ P' |: x  e& [$ G  Z( |
                        then -- no transport order for vehicle @: t- V3 s  t! t  r8 w
                                @.Destination :=* B3 y3 ]( x7 y1 w
                                rgManager.nearestFreeStation(@,track.~);
2 a/ C' J: D) ]- o% ^' P6 K                                newDirection(@);   + F. i9 j4 X- t
                                if @.Destination /= void then
$ J. w# J$ ^, u  M! c( ]/ G                                        @.Destination.NumReservation :=7 d  c' k. Y# [- t, E
                                        @.Destination.NumReservation + 1;' w& D. c5 R" N9 W( @
                                end;
% x9 U! I7 b! o" s                                @.CurrIcon := "drivingHome";
+ d8 x% t5 ?  i                                @.DrivingHome := true;6 w. ~5 F. A5 f9 t) e( C9 G% }8 y" M! U
                        end;
4 B0 h" ~( t( m: E" W* ^' w* P" \                else -- the vehicle @ is empty, both vehicle and part are in the same dock station, N/ u% A& t! L6 n6 ^5 C! f
                        part := @.transpOrder;, x$ p! v' r$ u
                        part.move(@);-- load part4 c; q1 F0 {+ r- Z" }
                        @.CurrIcon := "load";' V9 G* m9 |, y$ S* I
                        GlobalDistObj := part.globDestination;( m/ `  ~& A! @, g/ _% Z3 b
                        assignLObj := rgmanager.rgAssignL;1 \4 X' F& c7 l
                        row := assignLObj.getRowNo(GlobalDistObj);9 V& Z  {! e; g: h, U; y; m, U. Q
                        if Row = -1 then -- since 706 m/ ~4 b* G4 Y& j' F+ c) A6 S
                                if lan=1 then
) E/ C* I) H* {                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
, d$ W) I1 _. ?- O: s) s; W                                                to_str("in der Andockstation: \"",?.~.name,"\""));  z* Z! ]. Z  T% e- L- W( o" {
                                else
* \, _! R6 W, n; e+ f( B! C                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
* Z8 J# j, u$ a4 \+ p                                                to_str("in docking station: \"",?.~.name,"\""));                               
4 {5 t, v' b( b+ z                                end;
* L; ]- j6 b* @+ L' H2 Y                        else* @9 o% G  c* A" H; l- e
                                @.Destination := assignLObj[1,row];- u# J! H6 Y# B0 O( \6 s# A3 G- s
                        end;                       
; v1 w- d! ^/ f3 ?& }                        newDirection(@);
5 b" [( C& |% z3 U- M                        @.HasOrder := true;
3 O, t6 f- Y8 F, s! V$ p                end;& A4 A' S/ h: j6 E' S) N/ i; x
        end;' s3 S& v* u0 @' k
end;        -- of the method
( x; E4 o  K" G: P+ p4 f8 U
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
* V+ I; x7 V) F- e$ K! W) w* E( t  C  n4 \1 [& O5 X
这是AGV_putin中arrive的method。" b8 @9 g# k' W5 U

$ ^; p5 k3 c! p2 I! V0 f' A当到达物料速度越高时,这个报警更多,6 \% o: h$ d8 L4 Z, t) s6 r- L
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
6 j+ r$ r6 E; m. R/ I8 d3 N程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?0 {2 v; U- S  E7 {* `
& a$ f$ p! M) l( `/ @7 I& }
另外一个小建议,就是move,所有的move都可以这样1 ^! ^/ B3 Z  Q% S& \: M
if not move() then debug end
1 u2 V% R: @6 ~% x% V这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。5 h4 t. C+ H! ~+ T: |
plant simulation中的free libraries有AGV模板,: n! s( x$ A+ S' I) j. l' W) ~& F
里面也有案例。& k: M, X2 H" @; B: L3 o6 g
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
* j& N& g) @& O3 [0 ]9 H6 h+ @& @
) O" J& l& F. X3 D" ~* b  Q& E我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
9 t- ]& G& q0 h/ n8 A$ o
+ O2 \  B$ A) h2 m. J4 e* `那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
% b0 q6 S: \3 k这是AGV_putin中arrive的method。* Y: x0 \& d$ m6 m+ B+ \8 @

6 W+ n+ P8 R$ E; Z( o3 o! a( j当到达物料速度越高时,这个报警更多,

. [0 S+ n- E9 p另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-27 11:59 , Processed in 0.015474 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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