设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9129|回复: 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'5 u. d% F5 q/ T& }  L. ]( o8 Y; P
*/& @: A9 t$ p" q
is  j: A( \+ s; a; L5 x
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
; [2 k8 e" \# ]8 d% n( ^do0 g& C( E* W) E8 x
        Lan := rootfolder.Internal.Tools.AOLlanguage;2 Q' F/ u9 f  z4 Z! u
        if current = @.Destination -- else return
  R: U4 p, S* k  v" D        then
) `# t; m# o. h; C) k$ B                @.Destination := void;
% {7 M5 Z( M. w& R                if @.occupied then
! F; i( l. H' c% ~* C  E9 |1 p                        part := @.cont;
. s: ?" E1 u3 c* }/ u3 M* e2 i                        @.transpOrder := void;$ w; _" S5 s% R/ h
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,9 \* b) F: D, G! l* F/ ]2 L1 I
                                @,root.eventcontroller.simTime);  j/ i/ i/ ?: n6 h2 R+ A; G0 a, O
                        @.HasOrder := false;
8 r9 e) R% p. m1 t                        @.DrivingHome := true;
% E, G/ ]0 H- g/ Y                        rgManager.tryToStartTransOrder;
& s# F  d1 l# c9 y                        if @.Destination = void8 Y2 ?8 j: I; ^8 S3 l
                        then -- no transport order for vehicle @+ E- e) h* T! B2 B
                                @.Destination :=
# K+ N0 j+ ?, N                                rgManager.nearestFreeStation(@,track.~);
  j9 e( ^8 f6 K0 {                                newDirection(@);   & `+ F( ]4 k; \; [" c) v8 |6 e+ {
                                if @.Destination /= void then
( h% P( N  ]0 X                                        @.Destination.NumReservation :=5 i$ G/ M; V; W) s* D: y
                                        @.Destination.NumReservation + 1;
' U6 _" S5 [# w) ^! B$ c                                end;
3 m  }* M+ j" Z* ?                                @.CurrIcon := "drivingHome";
0 ~8 P1 y) b5 r1 X                                @.DrivingHome := true;
! m% m( h0 j  s' c                        end;
1 ?; G# [* k& t: v3 n9 g+ m                else -- the vehicle @ is empty, both vehicle and part are in the same dock station- Y3 H6 p/ M) q. h
                        part := @.transpOrder;
: K3 [& W% Q! M' a1 j                        part.move(@);-- load part1 ^' P( o* s- `, f7 \
                        @.CurrIcon := "load";
6 j! u5 ~& n' }: z: @- E                        GlobalDistObj := part.globDestination;
- p# d* L( Z1 o  }                        assignLObj := rgmanager.rgAssignL;+ q4 _$ Z9 D. l2 S6 {
                        row := assignLObj.getRowNo(GlobalDistObj);
7 [& u* r& ]/ M8 p- w                        if Row = -1 then -- since 70) Y% A, K, u& U. }/ O8 [) H" @& `
                                if lan=1 then$ ^9 J2 Z4 e  T+ c. f5 ^# [  P* I
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
8 |, A4 Z6 c  o                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 D3 ^) C2 n# v4 R+ @, K                                else  s* k. C" X! X
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
8 @. v) F4 ^% a0 l$ E1 m                                                to_str("in docking station: \"",?.~.name,"\""));                                4 Y) {$ h( g& k8 S9 E" f/ P6 S/ Y
                                end;
( t/ O5 v. \% z                        else$ ^6 o+ ^8 G% k6 q. r
                                @.Destination := assignLObj[1,row];8 `% o$ g3 p- Z6 @/ G
                        end;                        % M* R6 `$ y* B! L, @; X3 G9 `
                        newDirection(@);
$ D2 `2 P0 _) g$ X+ e# p1 S- A7 `                        @.HasOrder := true;7 w3 n; k/ W/ Z4 C) s
                end;
* F& D$ r$ X7 y9 Y2 ^: p* h8 h  i        end;/ R" h. ?0 O, M5 X2 Y
end;        -- of the method+ G1 h5 K% y. B0 r7 c: O
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 8 g! K9 f4 o1 L0 Z9 z+ a2 h5 p: _

" R6 v( Y# a  \* U7 r2 t这是AGV_putin中arrive的method。8 ~2 n- o+ X+ M( Z0 J2 U; R

" Z! {+ _% w! Y& L8 s# Z当到达物料速度越高时,这个报警更多,
, u9 h, r$ d8 N5 O8 i可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。) q# q' Q2 M3 F, F
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?& s+ ]5 o2 l$ ]3 n) |

( f: R+ _/ E; k  _; }3 [" }另外一个小建议,就是move,所有的move都可以这样
- Q) y7 R' H" m. Pif not move() then debug end
* x0 ^& |# N& M这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
+ t# q( Q5 b! |+ s% Eplant simulation中的free libraries有AGV模板,5 x1 _+ n1 y3 ~7 E' V! n* }
里面也有案例。7 w9 w! g- V8 a. c4 f6 L' S  z$ {7 \
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。6 ~; k) Y$ H6 j0 Q% ~3 R
& u% M# j4 T' ]
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ' t' x- |7 \! Y

* l8 W$ t4 |  K! L3 V; @) Y9 K那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 % {7 j; ?7 i6 y; u
这是AGV_putin中arrive的method。
6 G* [5 U1 @( X5 u2 A) k- @8 K# o
. F( ]1 F6 f: O$ S: ?: c当到达物料速度越高时,这个报警更多,

- S& r( L$ Q6 D8 Z6 g另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-15 12:45 , Processed in 0.017941 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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