设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7109|回复: 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'
) P7 Y) `8 w2 w  P" p2 J# u*/
- i( {8 ^3 x0 h& T& V( }is7 v1 B- L% [. T9 y5 |
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;' O9 X0 {. F2 g! K2 K; r0 G4 C8 i: V
do
: z6 @  y0 P; E9 S5 I. j. V        Lan := rootfolder.Internal.Tools.AOLlanguage;
% R! ?7 E' b! ^' L, P        if current = @.Destination -- else return
: g, b: d2 w7 P# s) k! x# K# @        then1 D  ~. x5 [) W- b# X# N$ M; G# e
                @.Destination := void;
8 t5 x  U, \; m$ r+ u: j                if @.occupied then
" V3 n3 b3 m: Y- B                        part := @.cont;- M4 G7 ^$ Q9 ~. c
                        @.transpOrder := void;0 q% N, g; v( a/ ^" s% w& V
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
0 r  {) T1 C) R4 P# D1 k' G; G* g                                @,root.eventcontroller.simTime);
% q* O0 k# S4 T; Q5 O+ K1 k! E8 ]                        @.HasOrder := false;
" m( Z, H( o  r$ e- K1 }8 t8 ]                        @.DrivingHome := true;7 P" Q; J. P( u. q+ J
                        rgManager.tryToStartTransOrder;
0 _; a  f  H5 ?2 D8 d                        if @.Destination = void
1 r9 ~2 c  D& F9 A6 ]1 s                        then -- no transport order for vehicle @) r4 X% I  @9 O3 X7 n$ O9 H
                                @.Destination :=; _/ _5 i; r8 N$ A7 Q  A" c  ^; J
                                rgManager.nearestFreeStation(@,track.~);; a% D  ?7 L+ E8 I
                                newDirection(@);   9 S- E" K4 _0 l) r2 `2 B: d
                                if @.Destination /= void then
  j7 R2 p. e$ S5 \3 u4 c. V                                        @.Destination.NumReservation :=
8 L* q/ P/ l( r* w* V$ O4 J: a                                        @.Destination.NumReservation + 1;' c. j2 o, W; T
                                end;
+ c; h# c7 O, E2 r$ X                                @.CurrIcon := "drivingHome";. H% W/ H) I- R- r
                                @.DrivingHome := true;, L7 T# B+ @+ ~2 h
                        end;
: g3 O  P6 ]* X/ i0 t9 o7 k, }9 s                else -- the vehicle @ is empty, both vehicle and part are in the same dock station* ]/ s+ a1 }" Q6 I- _
                        part := @.transpOrder;
7 o1 K' e5 L( d                        part.move(@);-- load part
. I' l1 I3 r$ b                        @.CurrIcon := "load";
% z) c2 V& ~' |                        GlobalDistObj := part.globDestination;# L$ ~0 S' ^- ~( K6 W8 P
                        assignLObj := rgmanager.rgAssignL;# q6 {0 K0 T  n  n5 @6 Y
                        row := assignLObj.getRowNo(GlobalDistObj);
6 U: _: I# s6 j, X& V+ O" O                        if Row = -1 then -- since 705 l2 i) K- [' X/ T/ Q2 }; j( d# E6 S
                                if lan=1 then
" {' E$ H- [( H$ I+ c                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
6 ^* D' v! M! t) k0 z; x                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ E- w' E2 ]  m                                else
* D% d, g0 B1 `' g                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),# \8 i) C2 t4 u+ x
                                                to_str("in docking station: \"",?.~.name,"\""));                               
5 j/ I- p* F9 X1 T% R% M+ A- a                                end;+ _3 R3 j, ^4 k# `, S0 q, v
                        else+ ^' [5 }6 u9 W/ Z6 J9 K% C
                                @.Destination := assignLObj[1,row];
5 f' [/ Z+ ]5 Q( H- f4 ^- R                        end;                       
! V2 w' Y6 [. t7 L3 H                        newDirection(@);
# o5 P4 v1 F: l+ T' J                        @.HasOrder := true;
4 x$ [. |: P' C# y% S                end;
/ O0 S* K' G% N4 g        end;0 `, P! r' j% }8 U* C
end;        -- of the method$ ^3 @, H+ G- S
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 9 N& Z% e% R6 L) n& a

0 W8 n6 u$ k. m这是AGV_putin中arrive的method。
* ~" f/ A  K# a  c! t9 K0 J% ]) k5 ^" U6 k4 G+ v" J
当到达物料速度越高时,这个报警更多,1 \  ^2 r; ?8 C4 \1 L
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
. u! R( W" k# L6 B$ n程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?0 y$ Y( l' e- T/ f2 ^' T% @
# m# J4 J8 Z% I6 e- T- N# e, r
另外一个小建议,就是move,所有的move都可以这样
7 F( o) J; x$ w, j) L, b: Sif not move() then debug end# x# l& D8 y1 P6 ~
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
; F: l: \9 k' E7 `3 Pplant simulation中的free libraries有AGV模板,) }8 B5 w4 U! U' T& A  Z2 R9 t
里面也有案例。
7 K0 Z, @% x' Z2 a2 H我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。! G2 @5 ^* H" \8 O; Z4 D5 p' @

+ R* V2 h, k- P. @  {  K; J我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
% |. J+ J# o. K. ~; c3 _! h2 w; D% Z4 q1 V1 w1 H0 m6 z* |
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 / F3 S% _* p0 ~$ c' ^3 O. A
这是AGV_putin中arrive的method。+ q# ^7 Q6 ?% M

( g7 j  C# _$ F$ }! |5 q当到达物料速度越高时,这个报警更多,

; m7 K8 S8 s4 l3 s" m/ H另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 21:05 , Processed in 0.018459 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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