设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6557|回复: 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'( ]  M$ d3 q4 R6 t) z
*/+ H! o! o1 h9 c
is" t; _% t2 A& {
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
6 J* j6 {) a$ y. v5 f: jdo
5 C3 C" K, A1 u$ w) p" ]0 |  k# s        Lan := rootfolder.Internal.Tools.AOLlanguage;! s6 [) C/ j5 p0 A5 I  Q
        if current = @.Destination -- else return5 V1 R: h+ n' f+ p$ C
        then
# ?9 u3 y$ U( R( {+ e                @.Destination := void;* X2 j1 |* E: t( T) [* _
                if @.occupied then& }1 V# b4 i' h
                        part := @.cont;
7 p2 s% I) t/ x/ I4 |! e% T                        @.transpOrder := void;( P1 N' }- \3 @8 f% Q
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,* P5 ]" ?1 g$ e( i) `6 |6 b
                                @,root.eventcontroller.simTime);& O+ g+ b) m; B3 _; m  n  P
                        @.HasOrder := false;  A0 z+ t* d* g& _, |. a
                        @.DrivingHome := true;
: X) L) |* E, D: `* O- a                        rgManager.tryToStartTransOrder;
0 H2 A0 m' e$ h7 o- U3 j                        if @.Destination = void2 Y7 n$ H; X& w1 G, q+ F
                        then -- no transport order for vehicle @4 Z$ {8 T& e. t' d- b, E
                                @.Destination :=# Q; y+ m8 X4 ^2 t
                                rgManager.nearestFreeStation(@,track.~);
; M6 Y1 Q* a5 ?, o7 e. ^                                newDirection(@);   
8 f6 q; O0 ~( _" F9 k                                if @.Destination /= void then0 Z8 T# \2 \# O! U: k
                                        @.Destination.NumReservation :=
# {- ?. S% L6 Q0 t$ u                                        @.Destination.NumReservation + 1;) I* O2 L9 J! \2 o) e
                                end;! P7 Y) E. H  Z. N
                                @.CurrIcon := "drivingHome";. w! K+ s$ x0 d8 j" J' V
                                @.DrivingHome := true;
4 o2 i& v+ g+ K: B8 D7 o                        end;
) G% Q& n# n1 M% K                else -- the vehicle @ is empty, both vehicle and part are in the same dock station( S1 X! Q6 x) A  [
                        part := @.transpOrder;; q& c6 x7 b( V9 f" m7 @
                        part.move(@);-- load part- e. a* e" E5 ^0 c
                        @.CurrIcon := "load";6 a( x; U, D: ^$ T& ]3 S
                        GlobalDistObj := part.globDestination;$ M! a9 G! Z) [; A. l. k
                        assignLObj := rgmanager.rgAssignL;
4 P, g0 ]" F; `" r4 c6 l                        row := assignLObj.getRowNo(GlobalDistObj);
9 d+ y9 ]; U1 ^9 w0 T: p; b                        if Row = -1 then -- since 708 {  V4 T8 K1 O
                                if lan=1 then" z) s2 _- o5 c
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
6 j5 N" x7 G8 e0 n                                                to_str("in der Andockstation: \"",?.~.name,"\""));% U# H1 B1 g2 w7 I1 H. X3 h  ?5 _7 ]: e
                                else, x- v; U7 Y0 f9 P8 e
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),) M" F4 }- r6 _3 k  s4 P
                                                to_str("in docking station: \"",?.~.name,"\""));                               
2 b9 G! `" q( n% K( {' W5 `  C                                end;( s# h0 e9 v9 {9 \) }% u% _1 r
                        else# ~% {& t' d! e
                                @.Destination := assignLObj[1,row];
+ I$ k4 x) N. f8 e                        end;                       
% q) y- Z$ c( D# o* c. ^                        newDirection(@);
) k) V8 [; A8 t+ B& o                        @.HasOrder := true;" B$ F# h2 }* \# |. f& K
                end;$ t) Y' m* z9 S
        end;" r& ]) K) ]. q' c4 T6 b9 e( }1 @4 a
end;        -- of the method! ?7 b9 x) |( t& f" X6 f
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
6 v5 `% v; d( ]( ~* |: c+ ?; i6 C' L* p5 I/ h
这是AGV_putin中arrive的method。# ?6 v- C1 z# B* U$ m$ r5 M

0 m+ j3 A( I  k0 {当到达物料速度越高时,这个报警更多,+ W5 R: [0 T; B1 Z. A2 L
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 `7 G7 @5 h$ S( P+ O0 W
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
6 y8 B' ]. L! {: c1 H3 }) ]; e9 u! B! H
另外一个小建议,就是move,所有的move都可以这样: l. \9 }& g, O% q5 D2 F5 ?; V
if not move() then debug end5 v6 W) s) s" A, m/ H" w/ m
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
% X9 l) d* G! D% Iplant simulation中的free libraries有AGV模板,5 k9 r4 m2 ?8 u) z0 Z
里面也有案例。! \; {1 R/ o3 S( A6 B8 a2 U
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。) h% c! p: G. T6 y4 Q

6 ]3 [' f& A4 J4 r2 q' Y! k7 L, M/ s我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
; X% N# ?8 c/ ?: |+ Z9 b5 G' i( i  }. e. |, [( y( n% J, i% n3 G( F+ ~" L
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
4 _" R" r. v& L( |3 c这是AGV_putin中arrive的method。
! J# ]' d9 w" `' ]( u2 e
8 a. r* |7 z# w' L0 l+ N当到达物料速度越高时,这个报警更多,

' }. o2 J5 U& z6 k另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-12 20:27 , Processed in 0.018966 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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