设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8160|回复: 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'
" m0 ]' `+ a) M* z*/: B2 R, {9 b$ y- U% W
is
4 X- H0 T& ^1 j+ }* S        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
8 G1 N5 V9 U0 X9 o; @3 k  Xdo0 X& U2 X* t: ?5 b7 q/ B6 F3 y
        Lan := rootfolder.Internal.Tools.AOLlanguage;; R; z' x6 N5 o, d, O
        if current = @.Destination -- else return( N. N6 e1 U' x. |" V2 A
        then
8 F0 ^, q# ^  Y, d  G' Z                @.Destination := void;
1 L6 W6 s5 `9 d                if @.occupied then
) w' ^4 g, k6 ?) J                        part := @.cont;
& i3 t: @0 t2 W6 D                        @.transpOrder := void;$ y1 w- _( u. \
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,0 d$ G8 Y1 `: w4 p0 n- m; B: p
                                @,root.eventcontroller.simTime);$ f& L0 ]/ ?( ?
                        @.HasOrder := false;
. l9 P* D6 U3 b7 c                        @.DrivingHome := true;
9 t% e" e3 g5 B' Y- P" i                        rgManager.tryToStartTransOrder;) F& Z' l$ O$ a
                        if @.Destination = void
8 x! B- c% d; B5 ^2 B9 J6 t                        then -- no transport order for vehicle @
4 E' ?$ J, {* f4 c! q4 K& k; E! ^                                @.Destination :=
- @5 J5 u' ]% }  |, K7 i7 c- K                                rgManager.nearestFreeStation(@,track.~);* P# f5 m! ~2 k: r8 m
                                newDirection(@);   
5 A: y0 E; E( O! s                                if @.Destination /= void then2 j8 j) r: B: `5 Q
                                        @.Destination.NumReservation :=
4 ~7 P) q( e- U" w+ B1 t3 e6 o( ~' G                                        @.Destination.NumReservation + 1;0 A  G( y* e9 X- d3 A6 N' o6 J# r' t8 J
                                end;8 _7 d& E+ D8 h3 K) Y$ x7 J
                                @.CurrIcon := "drivingHome";9 B* q' K! T9 n4 }- U$ h
                                @.DrivingHome := true;
; G  W) l: c! b4 c4 p                        end;) e7 {, U, j* F9 S$ ^* E2 d2 ^
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station4 C( e7 g9 {  {1 p0 Q& \
                        part := @.transpOrder;
8 @* y" e" b& l: [; U                        part.move(@);-- load part
1 W: k! K: J0 u" I5 b                        @.CurrIcon := "load";. t/ g; A* L8 |9 B
                        GlobalDistObj := part.globDestination;
/ C4 T$ H+ `; m% a* t$ P6 U- i                        assignLObj := rgmanager.rgAssignL;1 X2 n4 L7 B& Y" I2 ~6 r2 w$ P1 p; e0 W
                        row := assignLObj.getRowNo(GlobalDistObj);6 Z" R6 P& Q4 n' x
                        if Row = -1 then -- since 70
. K: k  @. b& ], d4 A% y                                if lan=1 then
7 _1 S/ z& @  P, o0 B$ d                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
  g- p. M6 l, s, ~                                                to_str("in der Andockstation: \"",?.~.name,"\""));
; J7 E+ ~8 P8 n& d' s* H+ \                                else% Z  h# h: a! ?, Q
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; N9 a+ g/ R6 F2 q
                                                to_str("in docking station: \"",?.~.name,"\""));                               
& m$ N7 w. {+ i6 m* n+ s5 y! D                                end;( L# {9 G' B, ^; {/ S. n9 X2 Q
                        else, l) d2 _% ~2 j# h
                                @.Destination := assignLObj[1,row];: l7 U7 D' F9 ?) {! f+ K5 S3 J# ^
                        end;                        * d. }( c1 W/ ~5 I
                        newDirection(@);
( }' S& A2 R, K* a% s3 o  c8 G                        @.HasOrder := true;' P# |8 D: S, m5 \
                end;  ~/ W: w! ?! x& ]( r( \
        end;
  H6 y- T9 c% U8 g* U* Bend;        -- of the method. w# E0 n1 i8 a$ |( x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 z, ^; R' w/ f+ t$ Q5 T+ D

. O+ f4 `; l" G4 J1 j这是AGV_putin中arrive的method。% M- W4 V% S2 o1 a! x
9 N! y" T/ {5 f
当到达物料速度越高时,这个报警更多,7 O! o1 G/ y  C$ M
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
6 X- y; P% k! p* F  m程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?" y2 v4 h; e& v* L8 F+ G

* ^( V& _  r- J2 d. l) P) i1 G另外一个小建议,就是move,所有的move都可以这样
6 y- k; o4 ^) V" f% `, Hif not move() then debug end
- d% `- y4 x. @; L/ \0 A这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 v1 i2 r1 g; Z! j0 T* z% I9 Fplant simulation中的free libraries有AGV模板,
+ c. l- \0 m1 B( m  ?* w. W+ n里面也有案例。
4 D4 {/ }3 r! W# ^# [, C我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。! r9 T+ d* I0 h. z

% D, D0 e& C2 f4 I! c8 v我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 . R( \0 o3 }; Z# f) b0 |' A; o

" b& X5 D8 k4 o那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
% G0 \1 N" t( I- h7 q. i) }这是AGV_putin中arrive的method。5 p) u- t7 ?( h, i6 w- m- ^4 E2 D; L4 S9 n
3 u9 X! Z7 ]7 R" y: ]# d/ S
当到达物料速度越高时,这个报警更多,
4 I, E$ l" E* `% W
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-18 05:38 , Processed in 0.021601 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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