设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9851|回复: 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'( r. k0 O' x$ Z3 [
*/- z% G6 R/ d& [  b  v+ {
is
# k6 Y8 \/ E. J5 p        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
7 C) y# P1 C7 n5 J8 {; cdo2 R. D0 `$ n1 p9 I" {
        Lan := rootfolder.Internal.Tools.AOLlanguage;& ^& M- g% |5 t" i
        if current = @.Destination -- else return
# G# u6 c2 _. t+ ^6 C8 {  h! g        then
7 L2 g% N, o' {( }+ O5 X                @.Destination := void;
3 d4 L5 [& e  F8 R. X                if @.occupied then" R' T8 U, i0 S* Y2 I
                        part := @.cont;
2 [3 Z, h* ^4 \: {* R( _9 p                        @.transpOrder := void;
0 ]8 F, Y8 b8 [                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,: b1 c, H7 [% i: b
                                @,root.eventcontroller.simTime);
3 o- D3 Y. B/ G; y" E                        @.HasOrder := false;
- Q5 G$ X* d/ C& j/ y" v; }4 E+ u                        @.DrivingHome := true;
+ L  C" \+ F$ }/ P5 q) T' y7 A% O                        rgManager.tryToStartTransOrder;7 d& [4 i* A! m  @" [* n$ u
                        if @.Destination = void
/ d( N5 S' Z6 @  h$ r                        then -- no transport order for vehicle @
7 t* y% V# v) d: Q# b5 v! v                                @.Destination :=
; T1 a8 ]! U: ]4 \8 E" I/ w$ g                                rgManager.nearestFreeStation(@,track.~);6 A9 e' ?& K5 Z6 ?* A0 S
                                newDirection(@);   
# F5 K5 W& \4 J/ Q2 |( c                                if @.Destination /= void then
3 S7 ?- T/ ?. A& L5 s1 F1 G                                        @.Destination.NumReservation :=
+ }; w/ l0 q7 q# C$ S8 P                                        @.Destination.NumReservation + 1;' F. E+ _5 k; l4 m( s1 G
                                end;, r) e( _0 T0 d7 A1 E- y; q
                                @.CurrIcon := "drivingHome";
% E7 O1 ^% ?  H; y$ T3 s3 T                                @.DrivingHome := true;3 B; F8 ]% D4 D4 W
                        end;% [) n1 a9 B8 o* Y$ x8 W* U5 I: `$ b
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station7 h4 _3 u1 {  ]* ^4 Q* W$ `: @  R
                        part := @.transpOrder;
- z; |: n) h! f& E; I& r' E( P8 ^) L3 z                        part.move(@);-- load part+ g5 o  q% {& o, M1 J2 q$ m, s
                        @.CurrIcon := "load";) h! b0 D- U5 l
                        GlobalDistObj := part.globDestination;0 ^* t% h7 r5 Q+ r
                        assignLObj := rgmanager.rgAssignL;
8 C0 H  r% D- Q  b                        row := assignLObj.getRowNo(GlobalDistObj);0 ?' a2 \  d8 r
                        if Row = -1 then -- since 70. b+ O# L) N! u. v9 T$ R
                                if lan=1 then8 s! g4 z4 v! U  O+ D: @4 s
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
$ Y, s& u; Q# h" p! z& y                                                to_str("in der Andockstation: \"",?.~.name,"\""));
# K2 ?) j, A  D6 @( P. r                                else
' f1 c) k5 J; M" l* v                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
! U; u+ ?- J# U3 z                                                to_str("in docking station: \"",?.~.name,"\""));                               
, S1 E! z( N7 o. S7 I8 q                                end;
0 H5 ]& l8 ^8 ?  m                        else- V) O- }$ {; b* Z* V& |0 `$ ]* }
                                @.Destination := assignLObj[1,row];% D% w( u% L5 r  r  a. o! s* k  v
                        end;                       
/ p; `" x9 q" w                        newDirection(@);, U$ J  D9 D) |; J3 ?1 z
                        @.HasOrder := true;
- A8 W) q  y0 o# V                end;
7 r/ a( H/ a/ t( B        end;
/ Q0 W& Y) ~& Tend;        -- of the method
! v8 [# \9 j% K1 ?5 w
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 + A; Q  }; I: S  G5 |6 j
$ O; N6 u( }- ^# T$ {
这是AGV_putin中arrive的method。
6 V, Z9 t3 R: W& D# h/ L; ~+ O1 s  \4 h! m' D' W& B1 R+ o' [: z: y
当到达物料速度越高时,这个报警更多,
  z5 J1 W$ q7 k4 j5 _  Z" C8 n可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
' a9 I8 _  \3 m0 v/ @程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?% h9 I0 i* L& h; a- |
1 p% K: u1 b( z9 z; I
另外一个小建议,就是move,所有的move都可以这样7 \$ E9 P1 ^; I
if not move() then debug end" }; F  y: j2 E5 ^
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
9 h  n2 K* v8 G/ L$ C; G* hplant simulation中的free libraries有AGV模板,* I+ U& L, E, P6 }! j: X% A
里面也有案例。
" R5 y; \/ }2 r, l我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
& Q8 L$ d5 p: |
, r7 D8 J/ j/ k4 B6 z, i$ ~我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 3 h% d- Y1 q; `4 n3 J

6 C- }; ?  t4 k. k9 Z" [- {那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 5 @& }; f$ d- c4 t& a, T, B
这是AGV_putin中arrive的method。- D; B7 R" y* s

  ^; k- h  p, h$ o当到达物料速度越高时,这个报警更多,
% o1 Y# W6 \& E2 b
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-29 06:44 , Processed in 0.015976 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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