设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7633|回复: 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'
$ I0 l$ O# f1 d* z6 t/ I# K- ]8 E*/
5 I4 c  |, H# g9 E7 E+ j9 Zis
/ A2 g, ^4 r" u  Z9 U% J3 E        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
( p  [# R2 t; x. c% @4 c- odo
* O, w. K- J: F; N$ E# `0 K. @        Lan := rootfolder.Internal.Tools.AOLlanguage;+ b# W8 q0 `: P4 I
        if current = @.Destination -- else return) E( k0 v, U$ U9 _, d
        then
: p. l6 w6 B3 d* D' L                @.Destination := void;. {& E$ a* L& @* U: K3 W
                if @.occupied then
% l! n0 ?0 m- W; n: D$ V                        part := @.cont;
& H" C' |8 k6 R, W, u. Y8 f                        @.transpOrder := void;
/ i7 z6 B: o, J9 Y* h2 ]9 n: R* B                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
0 b0 e5 K& j: J3 Y* Y  |                                @,root.eventcontroller.simTime);
, N! T6 @2 W' C. G$ `4 I) t0 W; i3 H                        @.HasOrder := false;
' d0 d1 }( E, Z                        @.DrivingHome := true;
6 r% e7 u* @$ Q, V0 T                        rgManager.tryToStartTransOrder;
( D# d0 \: j3 Z& `7 m* H                        if @.Destination = void( r3 a& ~- k8 F- G
                        then -- no transport order for vehicle @- |! E, `% w# |) E* z
                                @.Destination :=1 ]6 N; i0 X4 W0 p6 u8 V0 d* g
                                rgManager.nearestFreeStation(@,track.~);
- H& S8 {' U0 }9 \                                newDirection(@);   5 x% ]" X; T7 j3 j* F' `
                                if @.Destination /= void then+ Q; M& U- c0 M# y$ Q
                                        @.Destination.NumReservation :=. x$ N/ r5 _4 S8 q- Z7 A8 X
                                        @.Destination.NumReservation + 1;; _5 m/ ^$ d6 Q, f2 z4 o
                                end;! S/ U* `' u4 Z& C! C
                                @.CurrIcon := "drivingHome";
! w! ~- X8 F4 {+ u5 }                                @.DrivingHome := true;4 d0 w$ d5 P6 R$ H' W( M/ L
                        end;
& K5 @( Z# `; r% \                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
% h& K! X, X, E8 V2 G                        part := @.transpOrder;
+ B$ t$ I- M. u, _5 [( p3 w" _                        part.move(@);-- load part' Z6 @& o! p& ]& H
                        @.CurrIcon := "load";5 ]) i8 M. C2 j! i% `) B5 q
                        GlobalDistObj := part.globDestination;; v9 m' t& q# O. ?+ U
                        assignLObj := rgmanager.rgAssignL;
' H5 ~0 N- ~  c                        row := assignLObj.getRowNo(GlobalDistObj);; S" T" q4 R0 ]6 C8 k1 V9 T6 N/ X
                        if Row = -1 then -- since 709 v& k" v! Q( o& S- Y/ B) x
                                if lan=1 then
* @2 d: N& I1 @                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
: Q" b2 I% q) |' L                                                to_str("in der Andockstation: \"",?.~.name,"\""));
5 e! F/ J! C' {- e; X                                else( h1 j' A, F8 s& S, j
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),9 M% D! Q1 J, T
                                                to_str("in docking station: \"",?.~.name,"\""));                               
0 B  k2 x) y% |- L$ i                                end;2 W0 ]% z. R. A* L
                        else
5 H7 y$ i, M, H5 [  T2 t6 a                                @.Destination := assignLObj[1,row];% G8 L- \1 a/ _  P
                        end;                       
0 f" j4 ~0 {3 d; T$ \# }+ o                        newDirection(@);0 M! c5 T) v' I' W
                        @.HasOrder := true;. q% J2 |1 H$ R6 E7 H$ u; w
                end;* D' ^2 D6 O! k+ s& c0 z9 X
        end;, X7 t  b# [  r' `- Y! ]) q
end;        -- of the method1 T  m# z! g3 w  d  Y" U6 V
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 . t6 W6 a. \* Q' F

5 r4 ~) n- p# }1 X这是AGV_putin中arrive的method。2 k, j9 K6 u, L. k/ T, v
+ c% G! w, ?# L1 O
当到达物料速度越高时,这个报警更多,; V7 ^! y- M" p- k, d( I
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。1 ]# B8 R2 Y, ^# n
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?0 C6 P! b  K1 C  u& I

+ f6 i4 |& E0 O% l5 W: E另外一个小建议,就是move,所有的move都可以这样
8 b+ X0 Z6 U& q/ E3 dif not move() then debug end$ n  Z) ]7 ]7 @" L* ~$ S
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 B- `  I% G" Tplant simulation中的free libraries有AGV模板,
. T2 ]5 M) O  c. e5 \% T; ^3 G) N# ?里面也有案例。
5 t( T( m# ~- w5 }3 C4 G0 A8 \我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。. S! W& e% T" o: @) N
' W  e' H4 b8 N5 V" ~7 G5 m
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
# M: `0 e3 \' B' a- c# v
& a6 F5 l: E: ?  b/ j! S那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 - `6 d( N, q% O' @5 B4 v
这是AGV_putin中arrive的method。5 E  j) A' I8 i+ d7 E

( |- N1 r: F; ^' t! f% H当到达物料速度越高时,这个报警更多,
. d! x9 f" n' g' O
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-21 06:22 , Processed in 0.019012 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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