设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9671|回复: 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'
+ y2 X! Q4 T7 ?- r4 a7 p1 d4 [, H*/& g1 ~6 r4 ]3 Y5 ~& s
is+ P% K( F- A; ]0 f
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
( _/ K  n$ L( o# u! Y3 Y3 ]do( G0 e) ]6 I. E! h+ H
        Lan := rootfolder.Internal.Tools.AOLlanguage;
! o& x8 S- F" y! n& ^3 b* S. T        if current = @.Destination -- else return
" W0 r! Y, i8 ^, v2 S        then
( ]$ c) O$ _! L- I9 Y. Z# A                @.Destination := void;
! P6 _" n* d* Q  v/ p                if @.occupied then
. I" ~& |& D0 Q) _6 w% K                        part := @.cont;  M* R% d* R3 T0 ?4 p4 Z5 o
                        @.transpOrder := void;
2 M& z* t1 w0 U+ {' [2 \+ \                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
1 k5 v) e: a6 N1 k  d8 N                                @,root.eventcontroller.simTime);
# T) q" h5 E; u% V+ ]/ H6 b                        @.HasOrder := false;1 [, z6 _/ H! x7 m6 w
                        @.DrivingHome := true;
+ a- ^2 t- \  s# \( M3 W                        rgManager.tryToStartTransOrder;6 d) F/ i9 Y2 @1 f( j4 s8 X* T' k
                        if @.Destination = void) M$ F  t% Q  _: ^
                        then -- no transport order for vehicle @
$ K, _" G. Z3 J8 s5 E  |9 k                                @.Destination :=$ L! m( ~+ k) i9 y
                                rgManager.nearestFreeStation(@,track.~);
' ?9 T/ L! ^( E( d5 H* K                                newDirection(@);     j2 X" E3 A6 d' {6 y- v  k
                                if @.Destination /= void then
+ ]6 _  L/ f- i6 z9 b                                        @.Destination.NumReservation :=% P% c9 f& z# V; b' e' r. X
                                        @.Destination.NumReservation + 1;
2 M5 p6 G7 }* v1 l5 Z                                end;# H8 E+ H$ D- `5 h. {. J
                                @.CurrIcon := "drivingHome";
" I+ l' ]8 w: ?9 R8 k4 D# @! ?                                @.DrivingHome := true;
/ b" ~, |5 b' z7 Z% |7 N3 A$ O                        end;
1 b$ L1 J* u) S; _% u! }                else -- the vehicle @ is empty, both vehicle and part are in the same dock station1 u1 S6 S& m6 p
                        part := @.transpOrder;! q4 R3 e9 l& R; ?- Q" t3 I7 P8 H
                        part.move(@);-- load part) i& \/ k4 A. P
                        @.CurrIcon := "load";
, B2 R8 Z0 K7 T) v! g9 f                        GlobalDistObj := part.globDestination;* p- v! y% S% A
                        assignLObj := rgmanager.rgAssignL;$ e4 d; U5 \/ x
                        row := assignLObj.getRowNo(GlobalDistObj);
! N8 ?2 B$ w; B2 @                        if Row = -1 then -- since 70! B! r. N& _) r8 K: x" @8 V$ L
                                if lan=1 then: D; U( `% C) |) [6 t; d4 W
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),* f! n3 D* s0 h) n
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
; ^- r- d" u# t6 ~2 ^                                else- B- @9 X6 A: D+ T1 j' W0 ?
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\"")," }5 T% P0 d  ~! v) B
                                                to_str("in docking station: \"",?.~.name,"\""));                               
* d! N7 h8 {2 j                                end;
+ _# r" D% ]/ R7 N7 M( {                        else8 v# d' l  g, {& l% e! E( e
                                @.Destination := assignLObj[1,row];8 G$ ~% [" L% E
                        end;                       
$ {7 v6 C! f9 K* @1 P                        newDirection(@);
- t7 @% U: u0 _2 U' t4 B                        @.HasOrder := true;7 Z' y- E: c9 A" H2 T  D
                end;  a+ S# J2 @# Y' P$ G
        end;
# ^  B; z5 W9 l" L6 Z& bend;        -- of the method' P! f1 |% J  P7 _% M
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 7 ^$ X% g2 o3 u6 c: u7 q- G

7 f/ z( `. E* z) p( G0 G这是AGV_putin中arrive的method。
( Y( y+ a' q) D; n# I; A, y0 A8 k7 D& I1 q& T; a/ n3 R, O( Z
当到达物料速度越高时,这个报警更多,
- X' `; D' n+ F1 Y* \" S可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。! `) H' m  e) H/ G# v. K
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
: `; g+ d+ ]$ Q& S2 Q& J+ j  c2 \/ u5 @4 q/ t9 u9 h
另外一个小建议,就是move,所有的move都可以这样
' ]! v, }9 i7 K. cif not move() then debug end0 X+ q1 N% t) @' I
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
4 l& _: t" T* J2 W# Eplant simulation中的free libraries有AGV模板,! z) m1 T0 V$ Z  ^* G  w
里面也有案例。
/ m" T* f2 z+ g0 ^2 i( a$ \我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
' G% S: X9 j5 ]! q+ W/ i/ F% Q3 o1 J# C7 x1 n8 y
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑   K) U% J" \1 M9 [0 @# K: c0 x

: W  r. P* l+ Z& D5 l- P) [那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
! W7 ^: Q6 n% g9 j! `这是AGV_putin中arrive的method。
0 i# q( J+ _$ b. n# ~% ?9 k! t5 b
8 i/ N( v8 Q% ?- Z) C' w! U当到达物料速度越高时,这个报警更多,
. k. E7 P" n! n- J
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-16 06:39 , Processed in 0.019123 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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