设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8121|回复: 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'* x/ X0 O9 o' d& V
*/
$ v+ u5 `6 D1 i$ B% m4 g( ais
8 [8 v1 \5 ~4 u& h2 d  t        part, GlobalDistObj, assignLObj:object;row,Lan:integer;& b: s- L+ O; L" {  g
do* B' C9 M9 C; Y$ u% ~) z
        Lan := rootfolder.Internal.Tools.AOLlanguage;6 h6 p# Z5 r6 @3 E# b
        if current = @.Destination -- else return; Z6 e& v4 y* ]$ F
        then: g0 m  V) e% y. c4 o4 S6 F
                @.Destination := void;9 _# R1 ?3 T! [, w
                if @.occupied then
& a0 i7 `, t' R4 V8 `                        part := @.cont;( f" B# C' B% i; T( Y* J
                        @.transpOrder := void;
1 T$ k  P- m0 a* t                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,1 O- R0 D3 ?$ m5 ^! V
                                @,root.eventcontroller.simTime);! p. B% v: r! E, K1 l
                        @.HasOrder := false;
0 r& e4 ~( h# b  c                        @.DrivingHome := true;
8 q5 l& o7 Q6 ]0 q) \                        rgManager.tryToStartTransOrder;
2 I* ?) R* U7 h7 L/ C& I                        if @.Destination = void
2 m) \# j- R. I& d  @                        then -- no transport order for vehicle @
% `, E+ \( B! \8 X& b4 y! E- x                                @.Destination :=
& D, u7 f& o3 l6 Y- V                                rgManager.nearestFreeStation(@,track.~);
: P% G% R$ S7 Q1 ~                                newDirection(@);   
( K- z- [6 E3 q: ~, Q/ a: ^( u- b                                if @.Destination /= void then' f3 A7 m, @( ~& K" n; r, z9 R
                                        @.Destination.NumReservation :=3 [7 Q4 N3 E6 D0 V
                                        @.Destination.NumReservation + 1;# t' N5 M6 q& b( ^, c* H
                                end;
' Q  `) Q5 @0 G/ w% i6 F  ^                                @.CurrIcon := "drivingHome";
& }% v6 M, A1 s  v1 B                                @.DrivingHome := true;
* e: G2 H6 z7 b                        end;( `! M7 |1 y! H. P. K" |
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
1 \* p. `' M# ~+ m/ E* y                        part := @.transpOrder;6 ]/ C' b7 ]+ r; x! x' V: \" l
                        part.move(@);-- load part
/ \1 {: K# J  r; a% E5 i) S                        @.CurrIcon := "load";# q0 R3 d7 P0 g6 o. c) g& D
                        GlobalDistObj := part.globDestination;$ D9 n( ~9 y) [5 R& {* N' N
                        assignLObj := rgmanager.rgAssignL;6 p* K: d9 i7 z9 x5 C. K
                        row := assignLObj.getRowNo(GlobalDistObj);1 y" f$ l' `6 _  Y1 i5 X: }3 w
                        if Row = -1 then -- since 708 G+ b' O3 E' k  A5 K+ \- t4 i9 @  W
                                if lan=1 then4 {; t' |6 {3 u% {" ]
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),6 U& I0 |9 ^3 b' }
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
8 j/ u4 v2 B, g* J% }                                else# w1 k; y3 G/ R( d/ P
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 _+ l* E/ t  Z* c/ Y9 }                                                to_str("in docking station: \"",?.~.name,"\""));                                " ^! y, |8 h0 r* Y* O' a8 q
                                end;) k. L( ?2 W6 C9 S$ t. T; {
                        else5 o' y8 S# {9 W# X. L7 @- J' n. V
                                @.Destination := assignLObj[1,row];9 Z" T5 f8 K& a. l
                        end;                        9 d$ D" ?, S+ }: I. @4 U7 x1 ~
                        newDirection(@);
/ \, ?1 |" c6 N5 D. }6 H+ Q1 k0 @4 [                        @.HasOrder := true;
7 H3 l' A7 M; w6 `; o% d5 T( E2 v                end;
& L9 z+ R8 Z5 }8 J) H        end;
3 C2 R) i% f3 w0 A; v+ zend;        -- of the method7 i- z; N2 g) w+ }) X* i
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
& r8 j% |" i# P7 x, j9 U9 y+ }$ `& ?% Z
这是AGV_putin中arrive的method。2 h: ?2 J. v/ {% B6 m

6 h0 F7 b* `1 Z8 z. l- ?% T当到达物料速度越高时,这个报警更多,% `2 l6 V: x+ F' x3 c* \3 g
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。4 n$ B/ W9 \/ N9 W' i; Z
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?+ w$ m0 e; s- K# j3 I3 o

) J' _" x- E; k) t另外一个小建议,就是move,所有的move都可以这样
5 D2 e# L: c* u# |+ d/ rif not move() then debug end
9 Q" r6 Z$ F9 \& U$ T这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
. r4 Q2 o: X4 T2 j8 F7 _; W* e! U! c* ?plant simulation中的free libraries有AGV模板,
) ?2 m, D- {. X& G2 u% v7 T; c里面也有案例。
% \+ w) W- l' t3 a" |  f. C3 |我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。; F) r  b4 }# j* E5 V3 o6 R
/ Y# A8 X( a2 q5 X
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
/ r+ N! }+ W9 k' T  {8 j8 W, G
& _0 \2 q/ l8 C" w) Z% z6 R8 C那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
& V! A/ \1 J2 f8 @( V- Z0 s. w这是AGV_putin中arrive的method。0 U2 B' {) ~2 w7 d4 E4 k
- q: Y6 L# h* z9 d1 ]
当到达物料速度越高时,这个报警更多,
* p. F9 h4 l4 E* S% P
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-15 20:48 , Processed in 0.020941 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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