设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8605|回复: 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! J1 T) ?9 B/ a8 q' Q*/2 t7 t; m% }2 p1 ?% S& L
is
5 p5 V4 ~5 D  _# j1 N8 `. C5 x; i) B        part, GlobalDistObj, assignLObj:object;row,Lan:integer;$ l: q+ J$ S/ ]. R
do
% w. l" G  J* ?4 W0 |( C. Y( y5 Z        Lan := rootfolder.Internal.Tools.AOLlanguage;- A+ Q; p9 N2 d9 {
        if current = @.Destination -- else return
. l6 o; ~' o7 y; ~, [7 {" ]8 e& s        then
7 ?( a( Z8 K. E9 O6 f0 x                @.Destination := void;
* {+ X5 y- S8 {' v7 P1 y                if @.occupied then
+ V# G# w/ E4 [  U& A' {                        part := @.cont;
% v/ J6 ?, O; H/ c                        @.transpOrder := void;
4 d& H% Y3 {5 F' w; p: d                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1," `- u& B0 R0 V4 k
                                @,root.eventcontroller.simTime);
! G! B( ~" ]1 S2 z. H" y9 c* C8 k- x                        @.HasOrder := false;
/ W0 c2 c% @5 j: D& O8 v                        @.DrivingHome := true;3 z- {* X+ m/ H
                        rgManager.tryToStartTransOrder;& O* b8 k" m5 i$ ]" |' n
                        if @.Destination = void" ^$ Z9 }( ~0 Q; U' p) R
                        then -- no transport order for vehicle @
4 x, T, e0 f' p/ s                                @.Destination :=
( N3 k; k, x; X4 F% G                                rgManager.nearestFreeStation(@,track.~);
$ w- A# F" B2 Z( u                                newDirection(@);   ) i7 j* U1 }5 m( f  Z6 F
                                if @.Destination /= void then
, I6 T: P& u0 k1 @                                        @.Destination.NumReservation :=7 h( {6 d* Y! }# k. h9 M% U
                                        @.Destination.NumReservation + 1;
' n) f1 l' q# O# w, d                                end;
) h7 X% H  S0 F+ N+ A                                @.CurrIcon := "drivingHome";0 P+ E" X. r0 `7 H
                                @.DrivingHome := true;, p+ b' `  O5 ^+ [* r5 p- f/ X! Q! \
                        end;
- b* l5 W& A' I/ S$ o# V                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- G1 w! S9 {6 X2 B! v' C  `& ~                        part := @.transpOrder;& O' G$ Q' E2 d1 ]
                        part.move(@);-- load part
& u" D* U0 Z* b6 C& T' b1 f1 O                        @.CurrIcon := "load";4 d8 O+ t0 t) G0 U) Y& ?3 W3 A" o
                        GlobalDistObj := part.globDestination;2 ~, y# Z+ ~7 D
                        assignLObj := rgmanager.rgAssignL;# T  y& x" i' W
                        row := assignLObj.getRowNo(GlobalDistObj);* z7 p9 {6 Y5 S, K, {# E  [
                        if Row = -1 then -- since 70
5 X5 s, v. D+ A                                if lan=1 then
! s! ]" D; V6 ^- r8 X- ^4 {                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
# J6 ~9 z% W. E  `* L  T                                                to_str("in der Andockstation: \"",?.~.name,"\""));
: @. d( V$ M' V( a4 c                                else
+ I0 K0 z4 \5 G$ a  g                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),- G" `3 y9 a3 D) Y( |/ [
                                                to_str("in docking station: \"",?.~.name,"\""));                                ! k* k, c6 _  D9 T; B% z% L
                                end;9 S! T5 z' {6 O: _0 j9 H$ B4 R
                        else
9 Z' A4 T- ]" _( z4 ]% _* O# Z                                @.Destination := assignLObj[1,row];
( R5 J5 m* ^- x6 n                        end;                          @+ L( c* V+ Q& Z. o8 b
                        newDirection(@);
1 c+ Z* V/ ]; s% P                        @.HasOrder := true;4 k; J2 @6 s! M# u9 E# x2 {* I
                end;
% f5 Y6 n: `( ]" J* X" y& @        end;
/ A1 \  I7 [/ \# d$ o$ {end;        -- of the method2 x7 S! F9 k- M+ v5 ^  z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
3 W' y6 U1 w. d0 I
4 {* S+ J! g$ m- B这是AGV_putin中arrive的method。
2 \" {2 l: I0 ?% o& v! }, r1 Q
) ]6 O9 s: a' Y, ]' v当到达物料速度越高时,这个报警更多,& K/ H' [( r6 o, f9 ?- ?0 W
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
/ t1 w( E5 ~7 u5 E程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 ?5 y; v4 v) m% _- ^, x# C
0 ?7 \8 h) K, n, ]) Z5 B& @另外一个小建议,就是move,所有的move都可以这样
0 q6 U; B7 N6 ^( S0 j. K5 n5 Yif not move() then debug end
& j* {& D$ A' A8 T; T4 b这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。8 c) s) `0 L7 W5 ]* H% ^
plant simulation中的free libraries有AGV模板,6 V# I6 J5 w. L, k9 b' z
里面也有案例。* a" m  N1 b; @: T4 P( Z
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
* G- g$ v1 S& R$ W8 }" }2 ?1 C" B: Z- C7 Y
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
; f0 X" ~& t( L) t% H' a3 W9 s( e8 O  C/ Q
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 : F  q. u+ G7 z5 }& S$ m2 e
这是AGV_putin中arrive的method。& Y9 r, [" @) A, S. O
) L# ~: }% @: \2 I; c
当到达物料速度越高时,这个报警更多,

; q0 y* @6 L0 G' k# ?另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-15 06:23 , Processed in 0.022441 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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