设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10263|回复: 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'8 E" q( o+ h. o6 v/ d, c, N
*/$ G  W( U& I. G
is1 X0 o) J) }2 g# N* e$ X
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;1 z( i% [; H- h9 P, C/ Z
do" l& X  @3 f/ [: v% F( X, m2 Q
        Lan := rootfolder.Internal.Tools.AOLlanguage;
, W3 |( t$ \$ s* b- g6 e        if current = @.Destination -- else return
" l, d$ ~3 i& ~6 Y7 |) u; O        then- {' }1 y% c- k* b
                @.Destination := void;5 E3 o/ y9 B/ o. E" T6 K
                if @.occupied then
, m7 ?; l( }% i4 Z, r                        part := @.cont;/ U2 J4 Q' E: x; d
                        @.transpOrder := void;
9 f& B$ b! b0 Z2 `1 q8 J                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,( w) x! f6 s, ?0 F
                                @,root.eventcontroller.simTime);
! s" ]* l/ D# a7 d7 q1 ?: l1 P/ P                        @.HasOrder := false;
0 r+ d7 T2 Y- U& o                        @.DrivingHome := true;8 l7 h1 k) k) o: M! c
                        rgManager.tryToStartTransOrder;
) {4 h8 {; q% F7 R  C                        if @.Destination = void
% [* J+ T0 x" `! T                        then -- no transport order for vehicle @
- x. j6 }! E3 E2 G. z8 F, W* f( Z                                @.Destination :=
+ ?0 c% I2 F" q( J                                rgManager.nearestFreeStation(@,track.~);
. B1 C* {* V# o5 @                                newDirection(@);   $ A1 W: G; D5 ^- k+ h* L
                                if @.Destination /= void then
( R5 ]2 Z, W0 k% q6 m                                        @.Destination.NumReservation :=
6 V& w) J; [1 E" O8 Y6 A                                        @.Destination.NumReservation + 1;
# T6 `) t1 y$ Q6 ^1 H                                end;2 A" M5 j. H; O/ R
                                @.CurrIcon := "drivingHome";- U5 K) g" v& R# O4 B
                                @.DrivingHome := true;
: x# S( O3 G5 }. H, R" V4 t                        end;
1 m' }! H2 m$ m                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
% Z# m: r) u1 |$ T+ ]1 i% e$ t. k                        part := @.transpOrder;
$ t# m. g9 [1 d0 K* g2 A                        part.move(@);-- load part+ U5 Y: Q2 T  ?: B6 L; M* N
                        @.CurrIcon := "load";7 D4 Q( @* }& D" ^- f. d
                        GlobalDistObj := part.globDestination;
4 p2 A2 W# I+ U- ^) H0 J                        assignLObj := rgmanager.rgAssignL;/ i5 {0 U! n( p. i
                        row := assignLObj.getRowNo(GlobalDistObj);( }9 U6 N$ q8 ^( x
                        if Row = -1 then -- since 70
  Y0 C  @% ^' S* X* `8 e/ W  N                                if lan=1 then5 v, B- M4 y! T/ f2 N
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
6 G. m2 {& z+ {4 B/ K                                                to_str("in der Andockstation: \"",?.~.name,"\""));' W2 X& n# @+ \( g- C" A9 ]) p
                                else
- S8 {8 K% }( X                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
! _/ H6 B0 x. z/ n                                                to_str("in docking station: \"",?.~.name,"\""));                                9 y6 l  U# f& L/ }
                                end;
* O  y# c3 q3 ^: o, Q0 R                        else! S$ {7 p* N8 g) I! t2 p; Y8 }
                                @.Destination := assignLObj[1,row];
( d6 g0 A" k- R( D                        end;                       
+ \, v# N' o8 _% m4 p                        newDirection(@);$ e7 T% f( j+ `, d
                        @.HasOrder := true;
3 n! c4 a" g/ q( [4 Q3 T                end;* Z7 ~* o1 |6 A5 a6 O/ ?
        end;
. s# B- L! S: m, l* w6 q" Hend;        -- of the method
% A" W2 @. h- L/ e$ `
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 e  I$ E3 S& ?, ^/ A4 R, u( s
  e) w) z4 @0 N4 V( r! W5 ]" h& P
这是AGV_putin中arrive的method。
$ j' r% E, R% A
9 Q% \+ n; I" }( ^  y, y当到达物料速度越高时,这个报警更多,* I- o  O# l- k1 T" o& c
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。/ `- M& y- N" D+ H1 m# Q. r
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
0 E, @) ], b3 L1 o6 t- `' V0 B) f! J, `" z8 u
另外一个小建议,就是move,所有的move都可以这样, _* r* J5 t5 P5 y
if not move() then debug end) U. d1 \; O  L  y' f5 E- l8 x* B  _
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 ]! O5 |  }6 S) B6 i4 Wplant simulation中的free libraries有AGV模板,
" D" i0 ^, z. T# e$ ]" p里面也有案例。% W' T. N; D2 ^3 |+ C
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。$ i/ p: ^! T' Z  _' a8 Q

  t" n* n- T) H7 u0 I我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! J$ I$ G% u: x

5 J& ?: P+ r. @$ l; ^. I那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08   s# A. |: ~- e
这是AGV_putin中arrive的method。
+ i/ J9 y3 Y; n; J* W! N8 K9 h1 j; N- m1 P0 Q4 M; G
当到达物料速度越高时,这个报警更多,

6 e% X2 y4 ?: k& i4 Y另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-23 05:13 , Processed in 0.017786 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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