设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6520|回复: 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'
9 D9 N3 _0 g8 D! H, V1 F' u*/# C8 M+ l; h, Q0 l& P7 ^
is
% {5 h7 c8 S, q8 ^% ]# u        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
2 J. ~) z0 V8 K  k( sdo
/ Q& _" K% f2 x9 P( [/ `+ \. p8 F        Lan := rootfolder.Internal.Tools.AOLlanguage;1 D9 ]/ ]* a! F6 I" Z* ~5 Y2 ?
        if current = @.Destination -- else return
* Q! u) p/ h' s3 @+ v5 ^        then
/ w# b; \/ g  j0 @4 c/ n- ?                @.Destination := void;" c& N# q/ m  r1 D4 N3 x* S2 D2 g
                if @.occupied then
" T9 c. |/ N% ]                        part := @.cont;$ h, E0 ?- C- e) d! d& o
                        @.transpOrder := void;
8 T" B, r+ O! q                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,0 Z9 H* h6 K# t
                                @,root.eventcontroller.simTime);
; \, O' o! O% ?                        @.HasOrder := false;; T! O! b0 U: A. w+ h% F) Y6 S
                        @.DrivingHome := true;
+ _& \7 a9 D2 o. g8 Z$ B                        rgManager.tryToStartTransOrder;
9 E1 x. k# [4 h  u. H1 ?5 Y                        if @.Destination = void9 B# V- |7 `* k, d& [* p
                        then -- no transport order for vehicle @
: S/ z- g' u4 [: O+ I8 O                                @.Destination :=
" i& k9 b' i, @' n' {+ g7 v                                rgManager.nearestFreeStation(@,track.~);  \0 W) t/ D3 ?1 }! O& M
                                newDirection(@);   8 u- V, u) L& E9 I' }& e
                                if @.Destination /= void then
  r. J" Q- B& w2 u                                        @.Destination.NumReservation :=8 r6 O# E; t, l+ s5 M' p' T$ a; _
                                        @.Destination.NumReservation + 1;3 ^* s2 s2 N- w2 s5 G7 n( J
                                end;
# O. C. O. f) e2 a& I1 X: t7 k                                @.CurrIcon := "drivingHome";2 E2 J3 {$ [6 M
                                @.DrivingHome := true;/ y2 y0 R- f7 W# I2 p0 d
                        end;3 i1 B# v/ q  p' G
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
6 W# N: k! b. b' p8 j                        part := @.transpOrder;2 ~3 r, x7 d  w5 N
                        part.move(@);-- load part
! U8 c; Y6 T4 ?$ F1 @                        @.CurrIcon := "load";2 {9 X+ j9 E. r, f
                        GlobalDistObj := part.globDestination;5 h! ?: c5 G3 {
                        assignLObj := rgmanager.rgAssignL;
& ]% U9 Z' ]# }( u  S                        row := assignLObj.getRowNo(GlobalDistObj);
5 f8 {& Q# d; W2 `& Z                        if Row = -1 then -- since 70
/ D1 \0 n7 C4 a. e* n" K( r; q                                if lan=1 then
* U& f1 V0 z5 F" ?( E5 J- M                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),- q6 L8 b& V/ @, ^( y9 y7 Q# B
                                                to_str("in der Andockstation: \"",?.~.name,"\""));- t# @+ ?7 u8 g' e% \8 H! p
                                else9 m5 K8 N' q& H+ C/ n# W1 e2 T
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),( t7 c; f, t6 Z- A7 Q* o" b
                                                to_str("in docking station: \"",?.~.name,"\""));                               
1 J2 _- n! M% P, ]* \                                end;/ T8 b. U( v+ _* }" H
                        else
# g5 }" `9 m7 q: Y# w% R% \                                @.Destination := assignLObj[1,row];0 e* p. d% W% }3 C/ t' q# m
                        end;                        : L* E7 G. q1 q
                        newDirection(@);
" q& E3 ]9 p$ v! ?% \  d                        @.HasOrder := true;
  ~9 `+ P# _) \5 s6 \/ ~                end;
+ u6 z: F! t2 O        end;; ?; f( q5 X+ z9 j7 {3 B) N
end;        -- of the method
% v5 s! ?; @4 S; \& t0 x' Y' ]6 A0 n
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ) |% @9 I* d% W9 Q  i+ J$ M) x' u
$ l- M' g& h4 U" p& b
这是AGV_putin中arrive的method。
/ d: W9 d  k7 a5 N- U* s/ H! s+ N0 c6 _
当到达物料速度越高时,这个报警更多,
" A( B- h9 Y$ K2 n$ `可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( j# b: ~  [1 M
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?* u1 N: t: r- S3 l8 u! U

1 S9 A  y$ {# ^/ A! J$ n4 y另外一个小建议,就是move,所有的move都可以这样
; E0 r4 T0 M5 {, x+ Mif not move() then debug end
+ c  ?! A! g3 X1 E) C, t. L这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
2 U: e3 c% c' S( dplant simulation中的free libraries有AGV模板,  d$ H& ]/ v+ R! y8 ?
里面也有案例。
. H7 u' U/ |; a0 r) E  i+ E. _我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。3 U6 m, z1 \, p
6 ]5 i; H8 ~) f" V6 J# s
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 & C# Q0 Q, X$ M8 _" i' r2 Y9 p, j

  g! k, i/ U1 A3 v7 E那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 % f$ E: e3 K1 f% \3 s+ m8 T
这是AGV_putin中arrive的method。8 j3 U  b3 \7 i/ |- W& Y

+ M& l6 {  m5 ~当到达物料速度越高时,这个报警更多,

2 \& X% `% ^( L另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-10 13:16 , Processed in 0.024374 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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