设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5206|回复: 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'
! j  u8 Y# ?8 }8 c*/! {" S# Q! {3 s1 U: p
is
. _+ M* Z# I; @6 H4 Q; }+ n$ L        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- x) @! y1 f3 E' b# k# f/ Z2 r
do
: z$ D* V8 O* `. q        Lan := rootfolder.Internal.Tools.AOLlanguage;
+ F. M4 T5 r3 a& L$ }; l        if current = @.Destination -- else return
$ o  g* Y4 Z/ ]        then
4 c& U& m- o6 D- G) X" A5 p! J  o                @.Destination := void;
, r6 j/ y1 o, a/ F: q                if @.occupied then
" ?8 U" h5 J. q' o: d                        part := @.cont;
% B% x+ \) |2 K. }. m                        @.transpOrder := void;* M: U4 t0 J. |
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,' `# O$ i9 h& }
                                @,root.eventcontroller.simTime);& z, |7 j4 S! k5 X
                        @.HasOrder := false;- g* f7 o' y, N7 k3 t9 P5 h
                        @.DrivingHome := true;) V5 D5 ]% c0 |% T( R
                        rgManager.tryToStartTransOrder;$ O* J# b  q- r1 z$ F9 g, M$ }2 k
                        if @.Destination = void( W0 }3 z9 e4 X+ {
                        then -- no transport order for vehicle @
9 f) e4 g1 M9 R; v' O: z. b+ a                                @.Destination :=
5 N! p* w; y9 V: |, d- H                                rgManager.nearestFreeStation(@,track.~);9 c0 P5 `* q% I, s2 F1 ?
                                newDirection(@);   $ a# h  W& _' q& d' w5 `
                                if @.Destination /= void then: H% e2 U: d. W6 O" C% h
                                        @.Destination.NumReservation :=7 \: l* \* o! {- V3 f
                                        @.Destination.NumReservation + 1;( \7 K& H. G# j
                                end;
- u/ _3 X. d& _0 t                                @.CurrIcon := "drivingHome";
9 z0 e+ `4 J$ ^- L3 e. t                                @.DrivingHome := true;& N& s' Y6 i8 s* i. E, O* s
                        end;/ Z! V, [. T1 i3 n" o
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station0 i9 j5 b% F+ Y& g# t+ z% }8 Q( C4 C) p
                        part := @.transpOrder;
+ Z5 `4 A1 }% V) u7 t  ]% x                        part.move(@);-- load part
& k5 _2 x* B; u; h3 b$ \3 r* k                        @.CurrIcon := "load";+ P4 i$ Q. u3 O; T, |2 ?" c
                        GlobalDistObj := part.globDestination;
" n) N2 @& i  a" |# a                        assignLObj := rgmanager.rgAssignL;
) d$ [6 O* `/ Z9 @3 l) k8 \                        row := assignLObj.getRowNo(GlobalDistObj);/ _. r* O) V/ A8 E
                        if Row = -1 then -- since 70+ k: V$ y! y0 W& n2 x) T8 \
                                if lan=1 then
1 Z4 I* r& |  z/ X/ U                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
2 D8 J4 D* T/ J4 N' q4 Z, T3 e                                                to_str("in der Andockstation: \"",?.~.name,"\""));- L3 Z! R, V" L0 Z$ C" J
                                else. x2 W: ]4 w; C$ O1 M* m/ R/ C5 H
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),) w% \  e5 j+ d$ C5 |% D3 \. G
                                                to_str("in docking station: \"",?.~.name,"\""));                               
" X  q' T* b0 W  v& q                                end;
5 \( M+ e$ m. v                        else
7 O% v% @; ~5 `1 Y                                @.Destination := assignLObj[1,row];
0 h5 w/ W# u7 x; |( j                        end;                       
" O9 B4 k: O5 I8 u                        newDirection(@);
2 X- p- M( A9 I- {% k/ G: y                        @.HasOrder := true;) s' _9 }6 p; Q) @7 ]1 Q
                end;! d: e5 u- q9 A. p  J; v. j
        end;
, B# c; T# ?  cend;        -- of the method, U7 j( Q. }* T7 ^, o4 x
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 4 P! }+ I+ h7 a) X: o+ S$ s
5 C' x% l% p: H  Y" A9 Z
这是AGV_putin中arrive的method。
+ z: U1 F+ ~6 I0 b4 u* T- L9 q0 U4 K+ d7 s1 u, k6 [
当到达物料速度越高时,这个报警更多,$ c1 _0 }$ J, ?  K
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。* d; N+ u  A6 {1 j) h
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?9 m3 @3 o) E6 A
8 F2 l( ~$ V* H! N0 C# P: m
另外一个小建议,就是move,所有的move都可以这样
+ m( J6 Q" |7 S5 hif not move() then debug end
' G- P) i( C* e! C: g+ _' p这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 U- Q  b5 Z5 Y1 E! Y% zplant simulation中的free libraries有AGV模板,
9 j( S/ K1 I' _6 d- T里面也有案例。4 ^  T; l$ K' C) }& t
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。8 w; q# R5 l% p6 p
3 q6 h% o4 T& @# G: ]/ e
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 % f/ B% W. ]( c( M) o

5 j* O. `9 w/ I/ E( }% `" z那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 6 k  E* ^; J. ~- T7 c8 V) q% j
这是AGV_putin中arrive的method。4 f1 B! m. ?; V  X. |+ v: }' ]- q

' k0 i5 ]0 [3 |8 h% J当到达物料速度越高时,这个报警更多,

  p2 H1 x  C% j# B9 I- P7 O* t7 o+ v0 o另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-10-27 05:45 , Processed in 0.016571 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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