设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9364|回复: 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'" q% O2 P% @/ m. |, i
*/
% Y4 y9 n# W' \8 ?is$ T0 M+ X: I  H0 Y1 _3 ?
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;2 ?" s1 P1 w5 S. o) i( @3 @
do5 u7 @6 o: \: Z+ z
        Lan := rootfolder.Internal.Tools.AOLlanguage;( \& D& [! i# f& E- t
        if current = @.Destination -- else return( g  `8 W+ g5 W5 n5 I
        then
2 b$ G; u5 W& d2 s  F) k4 {3 I                @.Destination := void;
1 @4 c# W: m% J2 P                if @.occupied then9 n( G6 k/ _8 R3 R% Q( ^! u
                        part := @.cont;
, k; r! |8 e; A9 \1 n, `                        @.transpOrder := void;
7 m& @0 d$ j$ \  L! a                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,: w3 [  _' D5 H3 J+ Y8 x7 U
                                @,root.eventcontroller.simTime);
7 y1 g% S) }6 T7 v& |7 I' Z5 z                        @.HasOrder := false;
+ P' A& O& e/ u: H. d4 o0 |/ ^                        @.DrivingHome := true;8 O4 r3 K- z" ^/ L& ?; T/ y
                        rgManager.tryToStartTransOrder;
: {# ~, d. R% D& o  |2 D* Y& W                        if @.Destination = void
8 [9 v$ k% f' Q+ B( J                        then -- no transport order for vehicle @& m, s/ k$ N- X
                                @.Destination :=# e5 B" q  \$ L  a# r7 @/ e
                                rgManager.nearestFreeStation(@,track.~);
/ v1 N: \6 ]5 r8 {                                newDirection(@);   % L4 x- T4 m* G- y2 Z8 U
                                if @.Destination /= void then
9 E( T" v- e  B/ R                                        @.Destination.NumReservation :=8 D8 r* i7 z, {. Y0 z) {' A
                                        @.Destination.NumReservation + 1;  \% o! D( X% A! f$ ?1 _5 h% D9 d
                                end;
. N" r& u, G: y" ?" `  A                                @.CurrIcon := "drivingHome";
7 ~7 F. K) \1 ^# o, d                                @.DrivingHome := true;
. x8 t8 P1 I$ _& h) c                        end;+ `5 M4 r# f" s5 A5 x; l! ^3 j
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
1 |4 X, Y5 `$ N. y                        part := @.transpOrder;
% W" M, l; D) j- z+ F# j                        part.move(@);-- load part
( r6 v' W6 R+ |$ F' p% Y( z                        @.CurrIcon := "load";4 i/ [! a4 L$ W9 ]) N. X
                        GlobalDistObj := part.globDestination;6 E- s* t' i( Z& }
                        assignLObj := rgmanager.rgAssignL;) x6 u$ X& z- J6 B. J; A% }
                        row := assignLObj.getRowNo(GlobalDistObj);8 q' i0 y4 b- Y- `+ b
                        if Row = -1 then -- since 70
5 j8 H; ]1 G5 e' I' [: n5 ~                                if lan=1 then7 H' D7 v; S2 S5 j
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
4 D$ a2 j) i; F% O+ ?/ z9 a# T2 V" T                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 b7 d) T, R# J1 S6 y
                                else6 U& e7 `/ h" r8 ^; h, J( S
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),! I6 e5 u+ @. w5 O6 q
                                                to_str("in docking station: \"",?.~.name,"\""));                               
2 a, c) z: d) v                                end;5 n) e8 p# k9 W- k
                        else
  C! C& P: L" ]6 e& w) E                                @.Destination := assignLObj[1,row];
8 t$ j$ ^6 [: ]  }. ]7 j5 z+ V( {                        end;                        ! H% B/ d6 M, E7 \6 |9 ~
                        newDirection(@);
8 a: p+ i8 L! v5 y1 v                        @.HasOrder := true;
" w7 c( V4 o5 i" S; m                end;3 t9 h' C6 f3 ]; i* @4 V3 S
        end;
2 _- i9 Z; i4 j4 f! ]( kend;        -- of the method7 i" }4 g! S8 d4 a; O$ d4 k" O
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ! z: C) Y. ^) ?6 K
  F! g& L1 ^& M: J) l& E+ g
这是AGV_putin中arrive的method。( v/ y  q/ m' c8 S# D2 k
& L' Y$ i3 L/ p5 N
当到达物料速度越高时,这个报警更多,0 i% V# I% {  e' E
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 d6 i& B  C' a+ j  ^
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?  ]) B& w4 H8 S; a$ R) p9 O

: C) D9 y# V0 s另外一个小建议,就是move,所有的move都可以这样$ s' X) e' W& O: ]
if not move() then debug end9 K+ T% O8 D% W/ @
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
/ O- `( A* o1 W+ wplant simulation中的free libraries有AGV模板,
" Q7 q: R( \, V* C& r7 a3 H8 b里面也有案例。7 }1 o' U7 L' {1 f2 V2 U
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
% v6 F3 R9 [6 E0 A, x! L" ~' \# @9 @6 z' X# I! q
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ n; x+ u- Q" ]3 k, H- {; K( q$ _
: {$ p$ E, C! r$ Y7 d- a那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 - Z( L  w' w# V) P  l+ a9 D& O
这是AGV_putin中arrive的method。
% |% {$ T0 l4 p" n+ U7 u; m+ B# H' l# c+ ^3 v
当到达物料速度越高时,这个报警更多,

5 K9 B' Y2 J/ u! ^另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-28 01:23 , Processed in 0.018437 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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