设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8297|回复: 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'$ `# K2 _- m. b' r4 R' s4 c! j
*/& x- v. P- c9 m
is
7 L. x3 Q( E+ P7 i4 P        part, GlobalDistObj, assignLObj:object;row,Lan:integer;& p4 ]1 _; x3 U3 f! d
do
. I9 b/ Y) J( D; b0 X        Lan := rootfolder.Internal.Tools.AOLlanguage;
3 U" H- d! I) G' }  S* g; U        if current = @.Destination -- else return
+ Z3 ]' b5 R) x7 h# I3 J        then# R2 j# L; s5 T
                @.Destination := void;
: C' M6 {2 L/ y' u' Z6 f9 G                if @.occupied then
. g8 J" s2 q) u1 }; a                        part := @.cont;4 e( J& K, M4 l/ t0 B
                        @.transpOrder := void;
0 ~2 _$ p' r& m/ E: |- v- v9 e                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
, f; h. b1 ^( N, y! W9 m                                @,root.eventcontroller.simTime);
1 C: G' V2 @4 E2 v# \( a                        @.HasOrder := false;. z8 H+ U& o* L- H9 W3 F
                        @.DrivingHome := true;* z2 q! K5 t0 m$ _4 F  i
                        rgManager.tryToStartTransOrder;
" E" N! {8 f4 U. I. i3 f2 E                        if @.Destination = void+ i; n/ v# V1 J7 ~' w1 j) u7 z/ A
                        then -- no transport order for vehicle @
* \( U6 c; s# v0 R) W) w8 m                                @.Destination :=. d  G, ]. g, J& [9 d
                                rgManager.nearestFreeStation(@,track.~);
% M/ W& ~" J# B                                newDirection(@);   & k; m& l# q. C7 s* T4 \' u
                                if @.Destination /= void then0 j5 y- ^0 t4 A
                                        @.Destination.NumReservation :=& w9 }, D' d2 b" w5 e
                                        @.Destination.NumReservation + 1;
; t8 [9 Q& t( b( B                                end;1 @+ @9 N) E$ F
                                @.CurrIcon := "drivingHome";
0 [; e% F9 W0 z, \( e, u, B2 L, C                                @.DrivingHome := true;
: _: z- k; G( u                        end;& x# Y; \" _" j( p
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station  B3 f0 }3 P' _* c# P& J
                        part := @.transpOrder;
3 y+ Y- e3 _3 u. H. M                        part.move(@);-- load part! ~1 \; z. c* U
                        @.CurrIcon := "load";9 F' f9 Q8 P- K5 x7 m! R
                        GlobalDistObj := part.globDestination;" l* I( a. |8 \$ a
                        assignLObj := rgmanager.rgAssignL;: W8 p: g8 o8 A0 @8 D9 _( ?3 F- f
                        row := assignLObj.getRowNo(GlobalDistObj);
9 W. }" l) q7 Y4 o                        if Row = -1 then -- since 70
5 G: C* \$ r% ~( N  z0 t                                if lan=1 then0 B, t4 J" C2 W3 h+ ^0 Q- e
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
0 v4 L* v7 Y4 [+ c6 O8 W                                                to_str("in der Andockstation: \"",?.~.name,"\""));
5 Q* o+ h1 _; L( w+ f( u0 T7 E0 C6 W                                else$ D) u+ z$ v" W- v9 p# }! u! U
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
4 c* r) E. n& z9 [) @# m9 a                                                to_str("in docking station: \"",?.~.name,"\""));                                ; t: ]& l; D) H! m* B3 a
                                end;  x( U6 s& {  p! Q0 ?: d
                        else* \, Z# Z1 R$ g, j
                                @.Destination := assignLObj[1,row];
. ^- ~2 x4 d8 Z- W) n4 ~6 d                        end;                        ' A7 t4 m0 c2 A0 m6 |
                        newDirection(@);
, s0 [7 P: e( M5 m- G                        @.HasOrder := true;
* |; M* d* Z" K$ h3 z) L                end;- E9 P, _# M: j5 x* |0 v" K% _8 g
        end;& N7 r9 z% E! o" n" d" `9 d1 C9 g
end;        -- of the method* ~% W% I( E+ v6 b- f8 v
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
" h* \* T% V* i' _/ m+ [  p; {4 n( Y9 @1 C
这是AGV_putin中arrive的method。
  {/ ~- B3 J" _4 p
/ |9 S  a% _. C5 ]  j当到达物料速度越高时,这个报警更多,: @# e& {# P7 W. t* b' [
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。8 _2 _% Q8 q. a; y
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
0 F' B3 W: a8 A! \" s# ^% \
3 j0 E: B0 _, P) Y. W" I另外一个小建议,就是move,所有的move都可以这样7 r( T2 R) Q" l6 m# h) M' b! b7 |' I
if not move() then debug end; E1 N! j) d4 U0 F
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。% O) C9 f; d/ n) r3 ^, r
plant simulation中的free libraries有AGV模板,
% I1 ^9 y9 l4 g1 L2 ?里面也有案例。5 `7 U. R6 [8 G! T, R3 ?. p
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。/ h1 n, W9 n' s7 a

2 R9 F$ X7 e# Z( r: F6 Q. k我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ' V% H9 Q0 m, M, g" {! `% J7 Y  O& |' e

' H: W$ J0 s. i/ J6 k那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
. V' a: m: G, q0 p这是AGV_putin中arrive的method。
( g7 t/ E6 q8 K+ t, y3 g7 W$ B! z8 S  W# x1 `. d0 I
当到达物料速度越高时,这个报警更多,
  a0 q% ~* S- k6 A+ X5 U# r
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-26 06:54 , Processed in 0.021689 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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