设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6858|回复: 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'+ v' z' `' U1 R/ E5 z1 B* G
*/
9 B8 @; z6 m5 {* @! T! cis+ X4 L# n6 W0 I2 \
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
" H) h# @& B! A$ B% @. M2 {# ?5 Pdo
$ C  P$ }. _, ?- F( B# x$ `5 g2 [( j        Lan := rootfolder.Internal.Tools.AOLlanguage;
- |2 H. ~. c* z        if current = @.Destination -- else return
; X; L  u$ h( z6 f6 p9 ^( p" d        then% ]" h. N$ P2 T. I
                @.Destination := void;5 l. O6 d4 l3 p; b* g3 G! l( a
                if @.occupied then
- \+ }, n$ `; \% s                        part := @.cont;
1 `! l7 s9 ]+ ^2 z/ \0 B* ^: b                        @.transpOrder := void;- E* L) \8 a5 X$ j) w) [, P. C/ g
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
0 q8 k8 h2 |6 P' c* Z                                @,root.eventcontroller.simTime);. E  t) K" c6 x/ J
                        @.HasOrder := false;
' J. C# s+ b* J1 O& c                        @.DrivingHome := true;
- y- p' W, Q3 ?1 Y$ g                        rgManager.tryToStartTransOrder;
) r3 b& i2 T4 t5 y                        if @.Destination = void& c3 U  m$ D* F6 @& l# [9 O# L. n
                        then -- no transport order for vehicle @
2 u7 O: X1 ~/ I; V                                @.Destination :=
7 y+ e, B3 i' g                                rgManager.nearestFreeStation(@,track.~);
& u# s& \8 U- H  x: _                                newDirection(@);   8 i+ u1 W) ?) F+ Y
                                if @.Destination /= void then8 k) E6 B" o6 d. N) |) \
                                        @.Destination.NumReservation :=
9 ~4 }% d# ]4 `% `5 T                                        @.Destination.NumReservation + 1;
) a& |2 |, `, t0 v3 j& g( \                                end;
' p4 n. t2 w- V7 {5 ~" |                                @.CurrIcon := "drivingHome";
4 `3 i* q+ L2 b, L; i1 C                                @.DrivingHome := true;
1 r, Y9 e4 a1 J) C6 Z7 E                        end;
8 B5 Q& W8 C6 o/ a! s                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
. g/ G" P$ x6 m' n! X                        part := @.transpOrder;* O+ U8 k( R7 M& T9 ?& v
                        part.move(@);-- load part: w; ~9 g% F) c. l/ s8 L
                        @.CurrIcon := "load";
$ B: p  ?8 l0 V9 T! u4 X                        GlobalDistObj := part.globDestination;! J. N' a/ |2 S: i7 I* ~( o
                        assignLObj := rgmanager.rgAssignL;% M  Y* d+ t: o& L
                        row := assignLObj.getRowNo(GlobalDistObj);
5 c* x( ]7 Y1 H( o9 M3 J- ]) y                        if Row = -1 then -- since 70
# M9 F* T! V8 j4 j0 I6 t2 K# |                                if lan=1 then6 T5 u2 s9 ~" w1 Q
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),& k0 I" m3 i0 N7 K& u" |8 s: q
                                                to_str("in der Andockstation: \"",?.~.name,"\""));* T2 }- E4 u4 B+ m# O. `5 l
                                else
5 L' J# f- I# _9 |                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),  c4 ?' q* V2 x! K- K% @6 \4 Z1 V
                                                to_str("in docking station: \"",?.~.name,"\""));                                4 D) G% l# S8 w: ^% b! S+ e4 H
                                end;
  y! G0 }' l4 J0 l0 k, P                        else
3 O" N$ t  k: V                                @.Destination := assignLObj[1,row];& t/ Y" ]5 x2 j
                        end;                       
9 M! W9 F/ q6 [4 j3 i' K+ L                        newDirection(@);
  Z& K8 e6 D$ t( O: w                        @.HasOrder := true;6 S0 P+ D& D) N/ S8 o9 a
                end;. _  r4 w; b4 ]. ?6 M( f
        end;
9 d/ k# b& ~) u3 g3 ^, ]# g) ]6 Dend;        -- of the method! |, W( l5 c: Z# U  {$ ?
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
& k8 ^9 F* v. |! A# u3 m- Q: C7 e3 z- _6 T+ Y0 H/ x
这是AGV_putin中arrive的method。% q9 v3 K# I: m' z

+ w0 Y2 d7 C/ F1 r) W& T0 l) f* j当到达物料速度越高时,这个报警更多,% j! k) c# h; w3 S  A
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
/ \7 o8 ?5 B" r' z& G4 L/ r程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?  O# M6 d" X3 m9 r! L' G

& w7 ?1 F/ Q/ Y8 ^* }7 V另外一个小建议,就是move,所有的move都可以这样  H: I1 j) B5 e5 j3 d: {
if not move() then debug end( s7 q" I2 D; v0 a+ b* c6 @
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。+ v$ d/ u! L" ~8 a/ |0 q% ?
plant simulation中的free libraries有AGV模板,
  r" K% e; X( @6 F2 l里面也有案例。  H% I! Q! U( G8 {8 l" r  B
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。, A9 r" x3 \  O* `* S
& L) v. d% g5 F
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
+ {; ?; j2 T+ l0 p% a& \: N9 e2 P( ^1 w- T
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
" v! I" o. t" I3 a这是AGV_putin中arrive的method。  A/ B* t2 l3 z5 m6 Z( a
% D6 ]" ~& w& t# ^+ @) G, M
当到达物料速度越高时,这个报警更多,
% m6 M- X" C( {# A# o  t
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-3 02:21 , Processed in 0.017263 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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