设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4937|回复: 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'
, y+ L2 k( ^9 a5 j*/7 u) G- n3 A) X- [* j' R6 {- p
is, H3 G4 T; O  a7 K9 ~
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
, G/ |0 J  `, J6 u7 Tdo4 X" R, ~8 C' a8 b& {
        Lan := rootfolder.Internal.Tools.AOLlanguage;
0 t9 Z# t/ t7 J1 W% C        if current = @.Destination -- else return
% E: _0 w6 X. Q8 N        then( L% X- J* I7 z/ Z' c/ N
                @.Destination := void;
% }; `0 U7 O6 i1 V& o                if @.occupied then) u9 [6 D/ ?& R9 H" s+ U5 Z, ^
                        part := @.cont;; c+ ?" v. k& z3 g9 d0 ^9 ~- q' i
                        @.transpOrder := void;
7 i2 S2 @2 a2 e3 x. d" Z                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,! x9 `! f0 A, \! G  H' C( Z% L0 V3 R5 x* G
                                @,root.eventcontroller.simTime);
8 g# V1 F5 w7 E6 _* K% f                        @.HasOrder := false;
# S( E+ y; J/ d' z* H! ?$ S                        @.DrivingHome := true;6 A7 m7 I$ t; H3 d8 `
                        rgManager.tryToStartTransOrder;% ~) u* x3 }5 P. w. D
                        if @.Destination = void
: O6 T* z: i6 R2 [+ F                        then -- no transport order for vehicle @
+ i  G1 g0 z- ~( V; r                                @.Destination :=" |5 r& x! \5 ?8 N3 h, d1 D2 f0 a: e
                                rgManager.nearestFreeStation(@,track.~);& v) r3 s) g' @) b) X, u( P
                                newDirection(@);   
% B% m4 \5 U, H9 s3 ~0 ~" d                                if @.Destination /= void then, d, [% c2 c; _/ u" A  d" {7 r- k' h
                                        @.Destination.NumReservation :=  c1 r. p9 d4 v2 d5 p: ^, ?8 C! o
                                        @.Destination.NumReservation + 1;% e' J% A+ b* w, E+ A# M2 B# l
                                end;
' f  m) w/ j0 R                                @.CurrIcon := "drivingHome";+ L8 H* L. y  X& B8 _
                                @.DrivingHome := true;3 G! p9 v7 B( X3 b, B9 T( Z& i; M
                        end;
2 X3 \* I% Y; g! c+ E                else -- the vehicle @ is empty, both vehicle and part are in the same dock station2 h/ w  b( N' C% g4 `- V" ]
                        part := @.transpOrder;
& h- _- X# ^5 H0 U$ d                        part.move(@);-- load part1 a; q9 E+ f! P3 }
                        @.CurrIcon := "load";
- d, w( Q# D  f. ^. X# f$ t6 @                        GlobalDistObj := part.globDestination;8 q/ F0 X- M# ~! i3 J. q& }
                        assignLObj := rgmanager.rgAssignL;% O6 G3 p* F8 m$ `
                        row := assignLObj.getRowNo(GlobalDistObj);
& q0 Z& u- x1 g' V6 i( b/ E                        if Row = -1 then -- since 70
# X1 o2 i" R- N# A; I; G4 K* |                                if lan=1 then5 R6 j1 n" p8 z5 w' O4 @
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),- g: c0 D7 R, _& j/ ]0 b
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( X1 \! s3 j  ?: T6 X$ r                                else
3 ^9 a9 A. `) N. N* Z7 @2 i                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),* K" l3 A2 g- J
                                                to_str("in docking station: \"",?.~.name,"\""));                                ! Y0 Y+ c5 c1 \/ U1 C5 J% O
                                end;
- @9 W% z5 w9 |                        else
2 `, _& d. G, m- b  ?                                @.Destination := assignLObj[1,row];/ ]8 D, I$ S- g# _
                        end;                        # B$ s& N" D. x. w! K- Y+ S
                        newDirection(@);8 h# p7 ^% @0 Q! _* a
                        @.HasOrder := true;7 l# v: R$ @/ M+ I  a
                end;, H* U. W  P% B8 G/ }
        end;
! Z$ {+ S2 ]6 gend;        -- of the method
  c8 ]  C, J& \. {9 A" C; A' S
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ' R5 S& S; A1 d3 L
4 x: F) ^2 R, o( k+ m0 {
这是AGV_putin中arrive的method。
, ], G" E! \/ t5 M3 Q; Y/ y6 z6 {! o6 }
当到达物料速度越高时,这个报警更多,
7 d# W% K. O3 y% u" |可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( a7 `  Y" h' f1 o
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?& d  o, x, X9 I+ x

; B7 K4 [& Y9 w; f另外一个小建议,就是move,所有的move都可以这样: R; |. N  W" F& Y* L
if not move() then debug end
. B8 F/ X* C/ K7 v5 v这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。+ R7 |7 o; }5 o' l6 h9 u- V
plant simulation中的free libraries有AGV模板,
- r# G8 o  j- I6 Q( c里面也有案例。
4 X" B; E4 U0 t0 p$ m: w+ C5 x我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  i; R" g7 `( v1 C) }* X" `5 a
; ~2 m. G9 v+ S6 O" q, h" g
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
- j; P. z1 h' j. f- n5 \& C' C3 T
9 A6 l* B" d( |; m: F8 ^那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
2 S- S% ?1 d( |这是AGV_putin中arrive的method。; z* J7 [! j3 |) Y4 q

+ J/ Y: h7 j6 f: l7 x当到达物料速度越高时,这个报警更多,
7 {# E" n/ r9 q
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-14 16:23 , Processed in 0.014891 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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