设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8860|回复: 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': V6 ?4 i; f# @
*// i+ V9 ~4 G( [. k1 V
is+ q2 d! _3 Z+ w$ c* Y
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
5 i* c1 U8 q& v  ldo0 I; u) U% w' ?# o) E1 K5 Y
        Lan := rootfolder.Internal.Tools.AOLlanguage;) k" }% V) D$ b
        if current = @.Destination -- else return
" i' \4 X, E( X        then0 |4 v" r( ~* n
                @.Destination := void;5 j4 E- C; V7 |
                if @.occupied then6 j9 N: u) p! ]2 K! ^0 I7 I
                        part := @.cont;+ {1 O+ L" L5 H7 w$ {+ S' R
                        @.transpOrder := void;
9 _& ]( Q% v. ~9 Z5 v. L/ L                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
3 r% ~- J' Y8 J7 n' \# a. d9 N$ `2 [                                @,root.eventcontroller.simTime);2 X9 d$ D2 K  @# q+ l# _
                        @.HasOrder := false;  R# K5 p' E7 p- ^$ w7 Q/ E( t
                        @.DrivingHome := true;
% F. u: |# z1 w. Y/ X. f) p                        rgManager.tryToStartTransOrder;
, J5 w1 Z" \  c3 u. \/ Q                        if @.Destination = void2 m$ Z& d$ t9 a  ^" p0 T9 {
                        then -- no transport order for vehicle @
, X: [8 R) [4 Z" U9 j" u0 x                                @.Destination :=# E5 Q3 \! {3 w" X2 E
                                rgManager.nearestFreeStation(@,track.~);
( ^5 B6 |7 Z  `; [) r; N6 t                                newDirection(@);   - Q& v1 j% I( c1 O. f2 M0 v" ]+ G
                                if @.Destination /= void then( f+ L7 G; M) k" |1 a# X/ v
                                        @.Destination.NumReservation :=. B9 J8 z" X9 \1 H
                                        @.Destination.NumReservation + 1;+ g) e6 G" l5 t, b- N5 X" I: B+ d
                                end;* H! n0 G) l* {
                                @.CurrIcon := "drivingHome";
$ ~9 W+ f, A1 E: q+ m                                @.DrivingHome := true;/ [! E0 O* _  t! A# g; J
                        end;  w# Z9 d# L8 r: S1 U
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station$ I6 ]: c, b% ~+ \) w4 f
                        part := @.transpOrder;4 O- r0 }' K' e
                        part.move(@);-- load part* s4 v% P6 Y! {) H5 l, Y9 P5 z# p
                        @.CurrIcon := "load";
. ~. }& [4 f! f6 `- ]4 ]5 V2 E                        GlobalDistObj := part.globDestination;
& A" o  d6 i8 x& [+ J                        assignLObj := rgmanager.rgAssignL;: ]$ ?1 s& v- Q
                        row := assignLObj.getRowNo(GlobalDistObj);
/ M! K# N; c. ]$ z                        if Row = -1 then -- since 70
: l: m8 v) X" x- [+ A' I& u                                if lan=1 then3 k* ~$ a" T3 U) _
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\"")," i  b8 a9 s# |% S  Y# `; p& D0 |
                                                to_str("in der Andockstation: \"",?.~.name,"\""));: W# Z% i; `+ E2 j2 M
                                else
* \/ i/ Z6 P" E" b1 a                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),3 I2 p! Q" X; T; i6 H
                                                to_str("in docking station: \"",?.~.name,"\""));                               
2 V" t" s) C" E: A$ `                                end;
  T3 S7 E5 T9 }3 W                        else( h* q1 J% |" q
                                @.Destination := assignLObj[1,row];; p$ W4 K* e; q2 \% h0 u
                        end;                        4 L2 N7 I/ D  Z* u& B
                        newDirection(@);5 q: s& z- Q) E2 X3 m) K; H1 d
                        @.HasOrder := true;8 ]' V* v9 h, N; J! f( S# \
                end;8 y. X7 T" S( F) }. u0 g" N4 Q
        end;: `2 o# C: {" O5 \6 \  H& H; @
end;        -- of the method- b) ~- G9 K" ]
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ; J: @9 a  v9 x& Z$ o5 S
, f9 A# _% n* J. i5 }
这是AGV_putin中arrive的method。  U3 |8 @& E1 |- h
& ?; `! @. H# t4 g% G
当到达物料速度越高时,这个报警更多,4 {+ k% ]2 i- [
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
( P" p7 r+ t# O4 `程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?" Y# d. y# [  a% J8 m
! d3 V# q0 `% T2 \
另外一个小建议,就是move,所有的move都可以这样
$ J5 [1 `, D% l9 O4 Y  xif not move() then debug end, f: \+ o' l/ [) F" @
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。* _0 e8 z8 F! w
plant simulation中的free libraries有AGV模板,
# H3 I. c* W# e* a8 W里面也有案例。& f4 c% U  [: v* a" [' i1 l
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
' I7 s( {- v" p5 A. U. G7 `
- o$ y+ B# ?) ^% u: O. x6 ~5 }. E8 ~5 c我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 . _$ ?" R0 \' e; O& S1 y- L
! V# R9 p8 K* w
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
6 J7 v% X- s* X- U1 _$ o% I这是AGV_putin中arrive的method。
8 k% J7 e# _; H7 w0 E% R3 ]; \5 O) }  y& ?
当到达物料速度越高时,这个报警更多,

- a4 U, |" {  K, k" I另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-30 19:44 , Processed in 0.017390 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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