设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9839|回复: 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'0 N5 z: h. k; D3 d  l! H
*/
+ d2 F  f2 X5 |; ]) ?5 mis& U& a) C0 N# m; r# v
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
5 o" Q0 k+ J" f0 q( fdo4 F  ^- N8 r$ B8 P
        Lan := rootfolder.Internal.Tools.AOLlanguage;
$ E; `8 Z" j0 [+ X/ A2 v        if current = @.Destination -- else return% v, A' }$ T! g- P  @% E: F
        then2 w6 Y, a. W7 @7 g0 B. d4 A
                @.Destination := void;
- Q( z  [- [, x  D4 y2 t1 Y' T1 j: L9 g                if @.occupied then5 P& M$ V5 w) n! @, Y
                        part := @.cont;( l0 a# z9 P: v& K" c& `: D) ], q9 h
                        @.transpOrder := void;
) ?$ f+ x8 e! Q( k  z& v" ~5 M                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,; [% x, W& ^& W' s( a
                                @,root.eventcontroller.simTime);
- G; U2 s' y& S* i- O7 P1 r" }                        @.HasOrder := false;+ k% q" v/ v) L# B$ j5 T
                        @.DrivingHome := true;
4 b1 O6 [$ Y6 R- Z6 ?$ N                        rgManager.tryToStartTransOrder;
1 L1 E2 A- Q4 Y' M( Q                        if @.Destination = void
# i3 U- b) b2 m% E" o" @                        then -- no transport order for vehicle @0 o8 K, x' a3 L# G
                                @.Destination :=& f/ A+ ?# Z; W
                                rgManager.nearestFreeStation(@,track.~);+ c$ [: s0 [, D7 b, }9 F* E2 ?; s
                                newDirection(@);   
, ~8 h0 X, o' ^6 T                                if @.Destination /= void then
2 j! ?% ]6 u% ^# k4 a4 d8 ]                                        @.Destination.NumReservation :=3 b" s1 e/ N: `' E
                                        @.Destination.NumReservation + 1;% J. W( B4 o. g- `+ l& B% G: L6 V1 M
                                end;1 k  I1 I3 C9 j2 C" g
                                @.CurrIcon := "drivingHome";/ |: p$ v. m/ f- J/ J& t3 x. y2 h
                                @.DrivingHome := true;
, W4 `6 c  W! H                        end;
2 R6 s9 B! ^$ o- F/ @/ O6 a                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
6 y) Q1 f# D1 L7 Z9 T7 O/ A                        part := @.transpOrder;
1 E6 H) |2 B2 e  f2 `                        part.move(@);-- load part0 ~  K- I/ j. w& f4 w% x' U
                        @.CurrIcon := "load";# V; p+ u  b. f0 P/ g
                        GlobalDistObj := part.globDestination;2 `4 w2 g5 m: R+ x  Y) ~
                        assignLObj := rgmanager.rgAssignL;
+ g+ H  G9 t8 A, T9 ^! \                        row := assignLObj.getRowNo(GlobalDistObj);
) e+ q- [  ?' u. x; K, H, }8 e5 I                        if Row = -1 then -- since 708 h0 d1 a" s& J2 k, B3 k
                                if lan=1 then
* [. x% j. J2 c4 f7 i5 a7 x, F. e3 p                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),# z) a; [( G% B! \" ~
                                                to_str("in der Andockstation: \"",?.~.name,"\""));! P) q$ v5 _1 X* D4 W
                                else
" b" }3 D, l% }5 M                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
2 e- q, r( ~3 ~                                                to_str("in docking station: \"",?.~.name,"\""));                               
0 P1 G2 B/ a! [( S# M$ @                                end;
% b' s; n& q3 J) [) e$ z- `                        else
; h6 R9 S% S, n( ~  @0 M                                @.Destination := assignLObj[1,row];
% @- V& x2 @$ y  ^7 T                        end;                       
; ?. V6 {+ T3 j) C                        newDirection(@);
5 X. W8 F& U) y* z, t9 u3 K                        @.HasOrder := true;6 o2 |- [: h. c8 x: _
                end;) R2 l, y' R4 H: |
        end;4 E6 F2 G8 [) e: f+ E8 V
end;        -- of the method
8 R& ^9 D& I% y7 E
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 : ?, n2 {& X/ }5 ^1 ^
  P8 ]' d$ V% A
这是AGV_putin中arrive的method。
3 E# k* z" V; O$ M' ~( M5 D# Y+ C8 I# H, I; I5 N2 d
当到达物料速度越高时,这个报警更多,
7 L- i7 [3 j0 S1 B) g2 K1 v可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。7 S0 _; l) i+ r: n. s* f
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
9 [& T2 B8 q" \3 ?
) ?, B/ e  l- r0 k& o+ B另外一个小建议,就是move,所有的move都可以这样
& C$ C4 _5 Z. W2 o' h  u; mif not move() then debug end
  R/ [( M8 B: I/ M2 Q这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。0 l- x( D3 b; ~9 z  F- p0 t8 N4 l! F
plant simulation中的free libraries有AGV模板,4 V: G8 y4 I+ N0 m% {7 Y3 B
里面也有案例。
1 R6 U$ o# K( U+ f% A! O! t我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。# e! w" @2 e, p0 G1 ]( S
! X+ g5 b* g% F3 w* x5 b; L9 @
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
* U0 k6 ^% S  N& R# J8 i* g* E' [+ ?" o
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 6 `' C1 k! i: o6 `  f
这是AGV_putin中arrive的method。( A  q+ Y" P/ s0 g9 d: k

: b. K) S8 P: Z" v+ S当到达物料速度越高时,这个报警更多,
* a% d1 C! K1 O, f+ ^
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-28 12:56 , Processed in 0.019892 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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