设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5834|回复: 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'
: L2 u. B% a" d: l9 `6 w*/- ]& U6 W9 L6 P5 L1 U: E: g! l. ?
is
, _) L  ^1 }: F" H* c" }' {2 e        part, GlobalDistObj, assignLObj:object;row,Lan:integer;# {2 C& a. z. i$ U; I% p
do+ b0 f" P5 D7 r9 ~/ Q* Q
        Lan := rootfolder.Internal.Tools.AOLlanguage;! `& W  U/ d3 G
        if current = @.Destination -- else return
2 e* I3 I; L) j/ }        then
" |1 K/ q+ T) F                @.Destination := void;* N7 v2 [/ a9 i0 t- `
                if @.occupied then
8 @. V. p' f1 M# R3 L6 x                        part := @.cont;9 ~6 V8 z$ ~) ^/ P  L; T+ E
                        @.transpOrder := void;
  E$ {- Y. {" o. l" g  i                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
5 k. s* R$ `* x1 d' D7 }3 x                                @,root.eventcontroller.simTime);0 R) C3 e( {7 m/ S$ x
                        @.HasOrder := false;
/ d, O( q$ B: V: N/ S4 C                        @.DrivingHome := true;$ M. K8 i) @: H/ J) S
                        rgManager.tryToStartTransOrder;4 n0 N6 i0 L, B3 M  q. @3 h
                        if @.Destination = void
% A. V% Z# {9 w; t3 ^) Z                        then -- no transport order for vehicle @
# t7 X% K: X7 @3 ]* D+ V& d                                @.Destination :=
5 A5 _& j) S' {" V* C/ N                                rgManager.nearestFreeStation(@,track.~);
$ d9 c: t3 q/ |" W6 h# w* F( Y                                newDirection(@);   
" ~, {( I: ]9 p3 s) y3 f* Q+ s# E                                if @.Destination /= void then  r5 G2 Z- y; ^
                                        @.Destination.NumReservation :=
" ]5 [# H1 W" Q2 s  F; u: ?                                        @.Destination.NumReservation + 1;
% {: Q* x# x1 X  U* Q1 y, b$ n                                end;6 T* Y/ y; ~. R
                                @.CurrIcon := "drivingHome";
. o8 T1 Z4 ]7 E! x$ e5 n                                @.DrivingHome := true;2 N  i( Y5 g: p
                        end;. y5 d; n+ R% i, i4 B
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station( f% Q  d) _0 N
                        part := @.transpOrder;
( A% V& `* x0 g0 j                        part.move(@);-- load part
2 }' X: @/ b2 D) q" n3 r, q                        @.CurrIcon := "load";
0 c- ~8 e1 z5 d" J# Z                        GlobalDistObj := part.globDestination;: g0 {+ \! b9 h8 M2 w; X! s
                        assignLObj := rgmanager.rgAssignL;
8 q; Y3 v" O8 }) {9 A  k                        row := assignLObj.getRowNo(GlobalDistObj);
) \6 \: G! s! r& \; G                        if Row = -1 then -- since 70# `, Y( h6 x8 y4 O3 g8 Q
                                if lan=1 then4 B) y. f! ]0 ~' O2 p4 U
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\"")," v- h' S3 B2 A6 W: d
                                                to_str("in der Andockstation: \"",?.~.name,"\""));0 `$ C/ t) _# A3 I- x8 E0 o+ n: S
                                else7 B7 w0 r% t$ C5 g! @, w! q' f  X
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),' v+ l- {1 [3 _2 V, I
                                                to_str("in docking station: \"",?.~.name,"\""));                               
  [: w+ s" w9 J                                end;0 e. h8 }; H8 z) a1 S2 W4 a
                        else! P3 ?9 Q2 R, S& X) g
                                @.Destination := assignLObj[1,row];5 U6 x2 e! m, _
                        end;                        ! S: k3 M5 P# O% o" y
                        newDirection(@);7 O2 T/ ^" Z  U8 t5 ^3 ^4 c4 d
                        @.HasOrder := true;* l; j% [9 P9 e$ Y7 c
                end;! r0 t- \9 C* w+ Q- b0 ]
        end;0 [8 Y$ H$ u, y9 I' ?% m- |2 b
end;        -- of the method/ ~" G& R% a6 m
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑   P4 Q% e0 Y$ L* k7 M

% o2 q0 i8 p; @这是AGV_putin中arrive的method。
' }) ~+ I( h3 q6 b3 p! _  z! n' T
当到达物料速度越高时,这个报警更多,& S) i: w7 q1 e$ ?% _4 L$ O( q
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
* s* Y+ S8 ~: |9 y8 Z/ [6 b9 \/ M. W程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
1 `' J+ x) e2 m1 [" K; `" j2 ~2 d9 y5 w
另外一个小建议,就是move,所有的move都可以这样
. [$ _. J4 n; j2 yif not move() then debug end  m' ?0 B0 X6 m6 x% r
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。8 ?; t/ U) O" E' k5 V! a" h
plant simulation中的free libraries有AGV模板,9 \) g6 ?  Y3 g+ H) J. F2 N
里面也有案例。0 C2 W: W! _" ~2 \7 R4 [2 Q* G
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
- S* K5 Y7 z0 F( Y4 j; n( Q& S9 o" \6 [  g2 A2 M: f9 Q
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: h. }, Y! a6 t2 j7 j. _( X+ g+ B
/ C  p6 X0 E% S! W那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
  j+ i$ b; S+ R& Y8 K, M; C- |这是AGV_putin中arrive的method。4 {( E, A6 ]5 O  g! y
6 L% j! I/ M- E7 ?3 c4 X: c# w1 K
当到达物料速度越高时,这个报警更多,

- B- L$ e" X! m! m另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-25 10:14 , Processed in 0.017828 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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