设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6412|回复: 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'" c0 M3 p. `9 a. D: u4 {1 n# B
*/9 N' x- t" G6 x3 Y1 ]
is
  J/ x+ G$ P: ?5 y        part, GlobalDistObj, assignLObj:object;row,Lan:integer;! @0 k# r: i' w2 k1 U
do
) j! O9 \6 @' w        Lan := rootfolder.Internal.Tools.AOLlanguage;
( q. x' ?( p3 M5 A% x        if current = @.Destination -- else return
) D7 C: B- j4 u6 [+ p0 J        then
" I' R. `6 y- g. }( y- _; `                @.Destination := void;8 X& N" }7 p- L' f# k
                if @.occupied then; `8 I: g: K% r8 h9 D2 @6 {$ n
                        part := @.cont;
5 |% d  c# V+ k                        @.transpOrder := void;. u/ N. g, m7 J9 j
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
3 r( e2 v. z* X  C# A                                @,root.eventcontroller.simTime);
& t6 Q8 i! H! a* j* _                        @.HasOrder := false;; v' \- V4 x4 l
                        @.DrivingHome := true;& ~, m# X- U0 U! ^7 ~, t
                        rgManager.tryToStartTransOrder;
3 L1 |: K! f- H                        if @.Destination = void; h3 m0 [$ a- @, b
                        then -- no transport order for vehicle @
1 L" ]9 @" `  {' @& z, y                                @.Destination :=
- s1 y8 m1 {7 @- A1 p- C                                rgManager.nearestFreeStation(@,track.~);8 Z# h/ s* D; N" u6 R- Y( z; z
                                newDirection(@);   % O2 F9 E0 h. r! L( e* x, C; N
                                if @.Destination /= void then
. _1 o1 q5 g  |! p5 }+ d% I/ E                                        @.Destination.NumReservation :=. e! Z0 ^$ d; c7 a. I8 l: S; ?
                                        @.Destination.NumReservation + 1;+ N0 ~) u/ i9 D5 O
                                end;, B1 z' F5 R* y% c: C8 h" H- `
                                @.CurrIcon := "drivingHome";
+ n! i4 O/ L6 ~# E1 `3 Y! A                                @.DrivingHome := true;
7 r: G) f8 f- z% U/ i                        end;2 l" ?( i8 N; H) _. l  X6 J$ x
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
! m2 _- `, G" g                        part := @.transpOrder;# w5 M% h; j. T' ^$ S" T) M
                        part.move(@);-- load part
7 F  e0 n9 B% K, ^                        @.CurrIcon := "load";
4 A2 B2 M$ B! _                        GlobalDistObj := part.globDestination;% y/ S6 U. |% d& l' N
                        assignLObj := rgmanager.rgAssignL;
; W, u1 M4 i3 D% l" `; w                        row := assignLObj.getRowNo(GlobalDistObj);
6 y5 v+ j( S' `. ?) q' J3 V                        if Row = -1 then -- since 70# o; p) Q: Y- [: u' L
                                if lan=1 then
. O7 S9 M" M) a# C* M* M% ^, }$ n                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
3 D% w, x& D7 Z                                                to_str("in der Andockstation: \"",?.~.name,"\""));( i, G( Q: Q/ _' t8 }8 |
                                else
% D3 I' M% z2 J$ y0 H8 t  c                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),' H1 F' b; Q3 Z
                                                to_str("in docking station: \"",?.~.name,"\""));                               
" d; `3 x& D$ ?& P/ j- N                                end;
& Q* M; n  c% T                        else  ~4 z8 j; ^+ N- _3 e% U
                                @.Destination := assignLObj[1,row];8 H, O+ z  F. Z4 n8 _
                        end;                        & X6 o! x9 e! y  j& t) R  b
                        newDirection(@);
' N, G) ?* k' m8 Z& w( d                        @.HasOrder := true;- z* H' L; N. F% n" Y4 h# E# r" K
                end;1 L- v4 p8 v* w! X
        end;
/ j3 ?" O" l; O# L4 ?  k7 M6 G" Uend;        -- of the method
6 ~1 i( @% ?7 `
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 4 E4 B5 c1 Q% u# M0 \$ E
1 j1 v& y. X" B
这是AGV_putin中arrive的method。
" v" ]2 n7 {0 P$ S8 w
$ `2 @' ~4 N  ~当到达物料速度越高时,这个报警更多,1 k- Z4 L) G- G& d+ U7 E5 P" x
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
* A1 p, z) n) ]% x; t; R程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?0 b# N7 T, }8 F; u

" ?; S: H$ N/ Y% M另外一个小建议,就是move,所有的move都可以这样) Z7 A5 N' ~0 |3 ^! n& t; S$ J
if not move() then debug end8 |" n0 a! s6 ?, [1 y9 h- s) A, L
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。1 H8 F: E7 A3 {, g$ z0 X& r
plant simulation中的free libraries有AGV模板,7 q- p# r& Y+ j/ m& e+ c( h8 t
里面也有案例。
1 h. X" \9 K/ @3 ?0 f我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 W  h( c, G* f* I
1 y" [3 i0 g& s- n* q7 o
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 : x+ t" Q4 Y% l/ [

& U; R4 ~0 g. ^6 U. o) K那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
3 l" a8 f$ u, h. ^, n, r/ m7 _这是AGV_putin中arrive的method。
& {( I, g8 u9 h# b
& r% N  j8 X! o) z; P+ B当到达物料速度越高时,这个报警更多,

* l  r$ d" f5 m5 R. ?另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-5 06:05 , Processed in 0.016395 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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