设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9460|回复: 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'$ ^1 m* T! _% n4 I3 {
*/- v8 g' f4 @: p0 N* F
is- y( s7 s8 Y9 G% R, E9 D8 |( d
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;! c! f( t! o" c
do3 l1 l, Y# e( y3 _: r4 y
        Lan := rootfolder.Internal.Tools.AOLlanguage;! V: D6 K, I: }0 }" J9 r: `$ q6 G
        if current = @.Destination -- else return- d% X2 ~5 c* h) b( R  u
        then
" S) h& k9 J, w% Q7 p                @.Destination := void;
% q- Y' X" `: R. D$ W$ D                if @.occupied then
* y0 e6 d* ~1 v6 [! J: T' E# X+ ^) H' K( N                        part := @.cont;
  c9 _, }& j4 a$ R' y                        @.transpOrder := void;/ i5 p5 L; A. b
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,. G9 K9 w1 X+ Z8 y, j9 D1 _# c
                                @,root.eventcontroller.simTime);0 u3 S; F; c! p. U8 Y* ]& z2 E0 k
                        @.HasOrder := false;5 Q: Y) R' v% _0 S. k8 c5 g
                        @.DrivingHome := true;. L+ w$ q' g4 ?0 p' D" i" M1 s8 `. }+ B
                        rgManager.tryToStartTransOrder;7 e$ D4 I# `/ _/ Q% [' N" _
                        if @.Destination = void
5 k, O! D) R0 Y                        then -- no transport order for vehicle @
% i: g1 T9 \( q- {9 x/ p; Z                                @.Destination :=! h* K2 o% y- d& B, n# V: Z
                                rgManager.nearestFreeStation(@,track.~);+ q: |1 \0 N2 Y; J' {4 U3 U
                                newDirection(@);   
. B0 [* c, c6 c) L2 a                                if @.Destination /= void then
( p1 P# ~: }4 d: E                                        @.Destination.NumReservation :=! x) P: a4 B8 Z; Y7 _9 D
                                        @.Destination.NumReservation + 1;! ~1 A5 A9 Y- _5 j
                                end;
! s; V8 T/ f4 c0 t  R& Q' h- O6 q; V# X                                @.CurrIcon := "drivingHome";4 Z0 j! P; i. k& w+ h
                                @.DrivingHome := true;
3 d7 J3 e2 F" `$ i  E) o                        end;6 J( p. C- ?& c5 U6 V
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station  K- S, k/ P8 s  O2 s( I
                        part := @.transpOrder;/ z2 N1 _- _) V! P( R/ G' P1 N* J
                        part.move(@);-- load part" M0 Q( o; H& a  Z* A, i
                        @.CurrIcon := "load";
8 N% d% L5 H2 w! O( N5 E. f3 F                        GlobalDistObj := part.globDestination;# w0 p# j/ c, Z" X8 f5 k
                        assignLObj := rgmanager.rgAssignL;% p; G2 s, Z, I
                        row := assignLObj.getRowNo(GlobalDistObj);4 Q1 y$ Z) [4 a4 P
                        if Row = -1 then -- since 70  S0 z2 T: E. A  `
                                if lan=1 then- Q7 v  |8 \6 ]" ^; }4 J' O
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),7 @( ~1 f0 Y" q9 x& ]& ^7 e: K8 m
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( k7 }: ^, B, L" q# R                                else/ s6 K! n0 i6 K6 X: m3 t
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),% f2 t+ t. j6 k- o' B
                                                to_str("in docking station: \"",?.~.name,"\""));                                0 j/ A7 B9 ^' X
                                end;
) g! i5 W' |5 t8 a+ Z. L: O                        else
6 _0 M! R% \* U8 `" ]# W! v3 F4 g                                @.Destination := assignLObj[1,row];% W# K% ]6 C' m) @2 x6 T. f" r
                        end;                       
+ s$ @+ t: ^: b7 Y                        newDirection(@);
, l/ [8 b/ N( i8 O                        @.HasOrder := true;( ~. o2 ?& c+ z, V) k% O
                end;: F! ~, s+ R+ v+ C: u
        end;2 z4 i" {3 I- J- m8 G
end;        -- of the method% ~( t- D. \8 Q# L
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
  b# A1 i! d# W/ w# |* d" |* m  G, S7 d# G. r
这是AGV_putin中arrive的method。
2 N0 l* M: n# }- T3 w
8 n( A1 @0 l4 w; n) v当到达物料速度越高时,这个报警更多,! S8 v! A9 ?- j* G- N' p
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
0 B( T3 J7 ]6 ]6 u/ p程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?, o' @0 X1 _  i2 l5 O/ ~" n

+ z5 Z5 a( K" B另外一个小建议,就是move,所有的move都可以这样
( |; f4 v# ]4 I5 u; b* ^if not move() then debug end' D6 o. A% H; Z- T* p8 t
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。3 U3 J1 |/ K! v4 _' s, f2 N  |
plant simulation中的free libraries有AGV模板,
' Y1 J! T3 b0 Q里面也有案例。1 s4 ?8 v# \# ^% w; |
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
0 l' ?: Z, J# K( L1 R$ Y
% l2 I- y1 R* S+ n& H2 o- p$ C我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
% P0 R7 y  n4 Y" ?+ C, Y: r4 |# y  v$ Y( u8 Y4 `7 ^* C
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 6 O3 X  n- r  G
这是AGV_putin中arrive的method。
# [. e0 s6 D7 r. b- R/ @
6 r6 H6 ^2 ?, S7 q* K5 ~: k当到达物料速度越高时,这个报警更多,
# L! t9 A. X8 a4 J
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-2 03:44 , Processed in 0.018953 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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