设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8665|回复: 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. t$ C, z, R5 x*/
( `1 J# Q( q9 n. j" B: ^, W3 Iis, Z! m' F( ?: r" F( F* q: P
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;9 @) f. {8 Z$ r8 F8 E0 ?
do( Y! y2 s. J1 `9 {
        Lan := rootfolder.Internal.Tools.AOLlanguage;( k. M0 z- K1 \8 V
        if current = @.Destination -- else return' I' N0 G  I% y5 i
        then( N0 E6 W+ n8 h' V* O2 ~$ [) o( }) ^
                @.Destination := void;% p* C( \; a3 {
                if @.occupied then
4 ]: O$ t5 z6 w# _+ w  g2 P                        part := @.cont;# g& o) t" \" V
                        @.transpOrder := void;
; v5 p( `5 E. T+ {                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
0 M8 A% I  n+ W; c3 t" m                                @,root.eventcontroller.simTime);0 V0 g# w/ A0 A1 o
                        @.HasOrder := false;
$ _) ?6 h" h2 M6 @                        @.DrivingHome := true;
$ Z! t6 H: J( o7 g5 Y: O( F% t                        rgManager.tryToStartTransOrder;0 g( A2 d  V/ n9 ]8 t, ]1 y
                        if @.Destination = void
- g' k, G! J: y5 g0 U  ~9 Y' i1 |                        then -- no transport order for vehicle @0 n1 k1 r% W; ~, U; d- l
                                @.Destination :=
" L. a% s9 ^. w$ {8 D' T4 x                                rgManager.nearestFreeStation(@,track.~);" k4 e& Z0 `8 b, I7 N1 n$ e
                                newDirection(@);   
" y# x% W7 |  A, u. Z, f                                if @.Destination /= void then
4 I9 }: E+ l: L& l8 ]                                        @.Destination.NumReservation :=
9 y# ]5 F! G9 n$ s5 S                                        @.Destination.NumReservation + 1;# W. q; u# J4 ^* n/ @- K# f2 Q7 G) P$ N
                                end;
$ u& I' j( }4 U9 |                                @.CurrIcon := "drivingHome";
) ~+ g8 d4 C' J1 f                                @.DrivingHome := true;0 v, T1 K$ J0 w! J
                        end;4 S. E. P: c8 f" G
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station' ^6 Z6 _1 d! _+ Z
                        part := @.transpOrder;
, c* A2 w( m6 t" X* \) ?' c* I                        part.move(@);-- load part
$ t% S3 E% {7 L& F& w                        @.CurrIcon := "load";
8 R2 o' M0 U! p. ~: r                        GlobalDistObj := part.globDestination;
! x' ?9 E% A5 Q! s                        assignLObj := rgmanager.rgAssignL;
& Y9 w2 _1 Z" }                        row := assignLObj.getRowNo(GlobalDistObj);8 L: ^7 e! d7 r/ Z1 F' n$ ?& z, p
                        if Row = -1 then -- since 70+ h: a# o) Q& M+ ?3 f; e% J% ^1 p
                                if lan=1 then  ]" a" Y  G) G. B5 h# c) v
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),( }+ t: p6 A7 @/ J& [& ]1 S
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( x8 s# Q: ~3 t! ]4 a# N, u                                else( S" f; S( P- Q
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
, |4 w* F9 V( s/ o1 Q- u2 Z0 q                                                to_str("in docking station: \"",?.~.name,"\""));                                3 z$ ^) D8 ]: I% t' K# X1 {+ m
                                end;& K* V9 M& A5 C/ d) ~
                        else; M' ?2 u9 w) w, M- `% G
                                @.Destination := assignLObj[1,row];
9 x! D% v' F' W1 }                        end;                       
- w# @0 @6 h4 G  Y                        newDirection(@);
" j0 s7 O% a* p# N                        @.HasOrder := true;
" H% R0 h' [8 a4 \3 _                end;
* s- q% m. A# M, P        end;% n  O- q0 r2 p4 C
end;        -- of the method( g6 S' F1 n2 d+ y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
4 C# ^! R( E' i3 l: e
# Q% b# u' P0 ]( A1 |, ~( Y& E这是AGV_putin中arrive的method。
+ [& V& q, C' p: _0 @
9 _" s" p& p9 ^当到达物料速度越高时,这个报警更多,, `6 a7 s6 H& M3 }. U
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
3 v8 F+ c7 x1 g: R6 X程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?, e) E) v# h; h

1 k/ R5 N! f* g) ~: @另外一个小建议,就是move,所有的move都可以这样) J2 g9 V* v9 j; x+ c+ |! Z
if not move() then debug end' s8 \) ~) A2 K
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
1 q9 u! k* \8 h' \; pplant simulation中的free libraries有AGV模板,$ O! \0 a" H' S2 [" T. {
里面也有案例。
& ?- G$ {0 g7 n- m8 x我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。) g+ @% ^+ I9 M& E
/ `( \4 X1 N# E4 t! Q3 y
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
* r# N7 p5 [/ [& J. Z% v2 e" }4 `5 l8 R5 k' A% |6 a
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
, j0 A$ q; ]" I+ X这是AGV_putin中arrive的method。
9 |5 U$ F& ^' k( ]- z8 l4 O
, R! g. U- o) h4 [* w/ u当到达物料速度越高时,这个报警更多,

8 ^$ Z  U5 l* A. R( S0 x# b9 _3 K另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 22:51 , Processed in 0.018011 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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