设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10274|回复: 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'
8 a7 p5 G: Y' a6 P( @: \& |*/
! j4 E: [$ r; x6 _) [4 \is! ?2 @# q/ j* E/ E* X9 ~
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;5 g, K4 X- J! ~4 ]- L9 I- T0 }
do
; N$ T5 y# r* D5 R        Lan := rootfolder.Internal.Tools.AOLlanguage;
/ @( A% y* n2 E" q        if current = @.Destination -- else return
- Q% F8 r8 A$ k. K( A        then
6 j; C2 d4 O' ^                @.Destination := void;% e& _: |) g: C4 R
                if @.occupied then# i# l* Y2 b% s. R0 w8 X
                        part := @.cont;7 k" {+ b5 T/ Z7 D
                        @.transpOrder := void;
3 s8 p' r( z" H! m# o, w! D6 g5 B) I                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
6 P: ]$ b2 H: c) F) @/ a                                @,root.eventcontroller.simTime);
# N/ [* b0 |& H) x% W* ?- q                        @.HasOrder := false;0 O; [1 }6 t, x( o6 s8 S0 L+ z- b
                        @.DrivingHome := true;4 E+ [1 a, f# Z9 p
                        rgManager.tryToStartTransOrder;! Q' M$ S+ I6 c4 H, g5 _
                        if @.Destination = void) G7 k, B1 `: A! E1 P9 \( F
                        then -- no transport order for vehicle @
- |4 b4 h) m  t                                @.Destination :=/ B- D0 Z3 q& H; @- I' X
                                rgManager.nearestFreeStation(@,track.~);1 A1 y5 k1 K5 |8 K9 o" t
                                newDirection(@);   : c1 z' w" d6 e" k: f( W
                                if @.Destination /= void then7 c8 u8 o+ j( \; r9 s( S% r
                                        @.Destination.NumReservation :=
% u+ ^, Z; o6 U' j$ C                                        @.Destination.NumReservation + 1;, V7 b' i/ ~& H. W3 D4 @
                                end;
/ b. n, v4 U. V6 ^                                @.CurrIcon := "drivingHome";: u5 N: `; ~. |6 a, a2 O6 p
                                @.DrivingHome := true;
) G  u2 k* t& u+ W                        end;+ x( j/ h0 X' C. {9 a; B6 |/ k
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
0 W: `0 @1 v, T* W. H# {' V                        part := @.transpOrder;
3 Q6 Y- E1 n. H3 D, @" `8 J: S                        part.move(@);-- load part) w; q, c0 o& g# j2 f
                        @.CurrIcon := "load";$ k) X  N$ b# x% u) R& [8 J2 N; k
                        GlobalDistObj := part.globDestination;. w4 ~% Q) K2 L, M% c( g  }
                        assignLObj := rgmanager.rgAssignL;) U: ^# G+ z; ]* L* r
                        row := assignLObj.getRowNo(GlobalDistObj);! A  L$ `; p6 @  d  e/ k$ h
                        if Row = -1 then -- since 709 {5 e) f8 ~2 n0 P5 [3 j* Y* \
                                if lan=1 then
8 d! H3 V4 i  H1 q7 ~- X9 Y0 z                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
4 c9 [. ?! V0 z                                                to_str("in der Andockstation: \"",?.~.name,"\""));
1 j5 {+ D2 X! }7 u                                else
2 ?7 K3 K) h0 M& c- M                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
: T% _1 `. z( I) N3 n                                                to_str("in docking station: \"",?.~.name,"\""));                               
. z7 M# Q' D8 M$ n1 ^/ l; V4 \                                end;0 x9 S; o/ V  O% w' s  W
                        else, ^5 t3 i, H% @% A1 ~: H
                                @.Destination := assignLObj[1,row];
! ?2 [9 W- e' r) D. D9 T                        end;                       
  ]# u$ |- h! D) y3 w1 b                        newDirection(@);
3 M- K3 V( ]" ~, _% ]                        @.HasOrder := true;
% n' ?" A; M8 |. g$ g. Y                end;3 X- i$ x  [, j* K+ s
        end;
" i' a1 b) k% P; Nend;        -- of the method  @7 _8 {  \/ g: \8 C* a
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
  ~( ]; l: \+ N* T7 \0 O' a/ w& t! a8 v2 I
这是AGV_putin中arrive的method。- V" q: e6 p9 g

' N9 O7 G/ V3 y: [* R) S: w8 T当到达物料速度越高时,这个报警更多,# f4 I; X- \6 R/ t. M+ [
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
4 S' J- [% E1 T' d程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?2 ]4 E5 I7 I3 M  M
' w7 Q* C* V6 {8 a; y
另外一个小建议,就是move,所有的move都可以这样
5 F+ r# x2 f& s# D, J' Z7 ?if not move() then debug end' ^# F; Q+ }$ d" z! x' R* A3 }" M, R
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。3 `3 d( T# ~  a# ]
plant simulation中的free libraries有AGV模板,/ N5 _6 D, R4 k6 ~& I! Q
里面也有案例。
8 w. V" N" r6 C. v: e  H# o我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。! z2 J* r3 ?( m' ^4 D2 r% }% ~

/ T3 t4 D3 u  M3 }8 d我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ z& g* X) G# @, a; a' w) e/ J5 F
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
0 Q! D8 \4 W3 x2 w这是AGV_putin中arrive的method。
- l; |0 ~# G$ S7 R4 l
& E2 Y0 b7 Y+ o& x) |当到达物料速度越高时,这个报警更多,
( h( w+ i5 H. ?* G5 ?
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-23 18:00 , Processed in 0.019151 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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