设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6600|回复: 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'4 g3 L, |& r  v  o2 \
*/
: h7 s- k) m% m% Z8 Bis
3 c$ o" `' G9 h: m        part, GlobalDistObj, assignLObj:object;row,Lan:integer;3 X2 j6 J. H6 }
do; m4 F4 M3 ^- N. V( k
        Lan := rootfolder.Internal.Tools.AOLlanguage;
% M  ?- m# v8 i; v7 Y        if current = @.Destination -- else return
! }1 A  o8 V4 G3 `0 B6 y        then( w* |4 ?* q# n
                @.Destination := void;
  j9 T( \. f3 ]7 y4 g3 f# {                if @.occupied then5 ^3 I" F- p; `: h0 I1 a
                        part := @.cont;! w8 P5 m+ d4 J8 t
                        @.transpOrder := void;5 w: x( d) l* q  S# t
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,3 q* j6 f7 J. t* d7 y  L' {
                                @,root.eventcontroller.simTime);
/ l! p3 o1 X9 A6 o9 ]                        @.HasOrder := false;7 O1 g+ Z! u& E" C* `% `
                        @.DrivingHome := true;
3 O/ F6 ^" t& U1 J                        rgManager.tryToStartTransOrder;- M* x/ X( t9 T, _
                        if @.Destination = void
6 M. \: n6 P0 A: b+ v8 j# f/ U                        then -- no transport order for vehicle @! R+ m# e( j3 \& C! b
                                @.Destination :=
9 f8 B; P; Y2 `0 o2 P5 C                                rgManager.nearestFreeStation(@,track.~);/ q, q1 V0 t9 D
                                newDirection(@);   " I3 s7 q, g! j0 e" R% {9 G
                                if @.Destination /= void then9 A! y  A, Q* o
                                        @.Destination.NumReservation :=
( o5 H* u/ O1 V+ `                                        @.Destination.NumReservation + 1;
1 W3 f7 `0 k: w                                end;0 N5 O  \0 X8 `% m# B# U5 }
                                @.CurrIcon := "drivingHome";
$ h2 c& u/ K' b                                @.DrivingHome := true;+ a5 P1 \) E8 |( x$ ?& C
                        end;, }% k0 o8 [& L7 I* s* f
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
% m7 W: o  m0 N$ s                        part := @.transpOrder;5 x. a: B  l+ i
                        part.move(@);-- load part
1 Z$ n6 K5 t  I  l                        @.CurrIcon := "load";8 A  T, ]3 g# s5 j( `
                        GlobalDistObj := part.globDestination;
/ C' h! I, J# ^) X1 x; T                        assignLObj := rgmanager.rgAssignL;, ^0 h! C3 x& r0 Q$ @
                        row := assignLObj.getRowNo(GlobalDistObj);5 _& }% }) r# X% @
                        if Row = -1 then -- since 70
! k3 W! u0 u+ g$ |9 T( C                                if lan=1 then
: i" X2 k4 C! D# U                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),8 P: |) {! ~# J$ F. }1 X! o  k
                                                to_str("in der Andockstation: \"",?.~.name,"\""));. X/ [* w1 t5 L; S+ O
                                else  J9 ^- Q- n- k+ [
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),8 g1 |2 E0 d6 |& l# N( Y  e
                                                to_str("in docking station: \"",?.~.name,"\""));                                + P' r7 R* i  n. q
                                end;
. M& g$ E. F( f/ O: h                        else
# p) `4 t  u2 E6 E( a2 P9 [% Z                                @.Destination := assignLObj[1,row];
' N, J9 x/ k0 B2 ?- p                        end;                       
: K3 Q# Q  V2 }& o; A3 c                        newDirection(@);
$ U! }8 w% B  F* q! t7 m                        @.HasOrder := true;6 D; j/ B$ F. G  @0 N5 l/ A
                end;, _" E  a' q, D% F
        end;
* L$ O9 S, s/ r  D: Iend;        -- of the method) z& _% `& x9 z# v0 d
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
+ N3 D3 ]7 Q* r3 Y# u+ {9 m3 [0 `0 P5 g0 S% h+ g/ U
这是AGV_putin中arrive的method。
  U5 V# X4 \: l: B: B, a
* S! P0 Z% O+ m当到达物料速度越高时,这个报警更多," |: ]! ~) B$ E) g' [6 [$ @
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
! z( Z. t  b' c. R7 h程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
, l4 }2 c* v% Q' M; E) K" O% ]
另外一个小建议,就是move,所有的move都可以这样: o! a4 Q3 ^4 |9 C
if not move() then debug end
% T/ e$ E, x% S  p这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
1 |8 j' E# A! [4 E7 }6 F5 splant simulation中的free libraries有AGV模板,/ `& L2 X- c: p
里面也有案例。6 J$ i# D. S1 e5 o
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
" T+ u, t: ^" D2 |6 U1 h! `, F3 v! Q
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" m3 w# F7 G) O1 n+ m. `( M8 }5 d+ Z( F9 m; O
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 , y3 N7 j: ]; D  `- c
这是AGV_putin中arrive的method。
/ W' ^% z$ ^& d0 ?- g1 {4 ]/ n# \  n/ h; f
当到达物料速度越高时,这个报警更多,
  u; j7 T% L, u4 a6 T0 G3 d
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-15 15:13 , Processed in 0.017448 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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