设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6036|回复: 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'
* d) B( B3 K& r0 b8 P: e*/8 f' K3 y4 K; Y& y2 z% o; k
is
! o; ^( I( _9 K4 l, H        part, GlobalDistObj, assignLObj:object;row,Lan:integer;  z2 T3 X" g- n4 i
do# Q3 O$ ^/ V0 t0 m( W) K% x
        Lan := rootfolder.Internal.Tools.AOLlanguage;
& d5 w8 o5 i# q# n+ \        if current = @.Destination -- else return0 l: r1 @$ k: C; g
        then4 X5 J, `: g5 `: l8 |* T
                @.Destination := void;
5 r0 Q. `  `1 J6 ]                if @.occupied then
( O3 u# M- I3 N/ t# |. \* {. u                        part := @.cont;( [' k. i. |, p) v8 X8 ^; K
                        @.transpOrder := void;
4 u" k' r% M; {1 E* @  M                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
) q, `/ h/ M0 m& g* u. I- ^* h                                @,root.eventcontroller.simTime);. K* b3 o/ o$ b" N
                        @.HasOrder := false;8 q4 Z8 k4 G  Y) S: R( s' p
                        @.DrivingHome := true;( q% L5 ^4 \( g- H* P; x
                        rgManager.tryToStartTransOrder;
' J' O4 h9 Z+ S; Q                        if @.Destination = void# i( @( p4 \: T% |" E: H4 F% e  y
                        then -- no transport order for vehicle @
1 q. T. }( P8 G. X- I5 L- l$ H6 T                                @.Destination :=
6 u7 @+ R0 x* `& C- w                                rgManager.nearestFreeStation(@,track.~);
$ H. r' h, t! F' D2 O8 x$ u( h6 u                                newDirection(@);   
# R1 P) y; T/ R4 k5 Q% J, H                                if @.Destination /= void then" @0 J  u6 H- n
                                        @.Destination.NumReservation :=" @# @1 i8 N$ m" M
                                        @.Destination.NumReservation + 1;
4 M" u5 |( ^* E: ~4 ^: B                                end;1 G5 H* q; p" s, [
                                @.CurrIcon := "drivingHome";7 ]. |% \5 q8 Z. {
                                @.DrivingHome := true;
( p9 I' @; V) a! \3 y, G$ O) O                        end;
4 `6 Q. ~3 x) Z1 O" B                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
" X) C! E' I" _  d9 ?  T                        part := @.transpOrder;7 v# V( J; s% l- W5 `: R
                        part.move(@);-- load part1 O2 q2 g( b' L
                        @.CurrIcon := "load";) y+ }6 R& I# V! |/ n! ^( f
                        GlobalDistObj := part.globDestination;+ D0 X' D3 s* b1 P0 U$ j
                        assignLObj := rgmanager.rgAssignL;
$ P, k$ k% C8 F9 h8 ~' C! @                        row := assignLObj.getRowNo(GlobalDistObj);
- Y8 c' Z, M' }, f+ z4 y: {                        if Row = -1 then -- since 70
; H3 P8 d$ ]5 A# ?$ v                                if lan=1 then9 I, ?, W# y0 T
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
  P! ?% h2 {8 N1 Q                                                to_str("in der Andockstation: \"",?.~.name,"\""));
- x) t7 W9 \- o( z6 o6 d( p' [                                else
; g9 j" Z) K2 B$ E* M! c3 E; T                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
* f6 A* H9 \7 G                                                to_str("in docking station: \"",?.~.name,"\""));                                : n4 s/ a, ]4 J" G( g
                                end;
% u% {: N5 ^& F                        else0 q' T+ _8 ~5 ^$ c
                                @.Destination := assignLObj[1,row];" w+ }: C# G6 J' r4 T( ]9 \
                        end;                       
  V' I1 m- ]* c! m7 S1 T. N/ l                        newDirection(@);
( U; H9 v% S3 A% w- B! f                        @.HasOrder := true;
1 m/ n1 x6 l# a, }* P                end;
- D: b  C2 m8 @        end;% v8 @& j8 D2 L" m6 s
end;        -- of the method7 ^6 ~: M1 n0 x; o$ p
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
+ \4 @* q8 K' R) H- b6 ]+ V  Z
% I+ Z6 w; L  m) ~& Q) ^这是AGV_putin中arrive的method。
2 y/ Q7 W0 I0 [: W( C- Z6 a; G' I" j& [5 H
当到达物料速度越高时,这个报警更多,& ~7 q* N7 k3 I/ I
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。* P# Y! B% d8 o% M
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
% z% r$ N# ^, @& ^# Z) t" ~- `+ `5 ?
另外一个小建议,就是move,所有的move都可以这样3 T1 Q. C1 W; o5 L
if not move() then debug end8 c/ s( j( _, S! i, j9 j) M
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
0 x/ p! t; k, u( Y( {! Y  Gplant simulation中的free libraries有AGV模板,9 A/ @( h0 u0 h6 ~4 {6 X) Y
里面也有案例。
8 N* `9 r# R3 B+ j, Q' Z我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
7 s; Y  a( V- C# ?5 l2 `
4 P  m( _% v% |* E0 U我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
5 c- `; j! k; S# p* |: a& h
  m0 T8 r1 W, ?0 [8 F那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 3 ]3 M- e+ ~  e: W0 Q( g
这是AGV_putin中arrive的method。$ i& ~8 i( M; E3 `) B% F( r' v
! ?3 {: f5 b( n8 h3 E- P: b
当到达物料速度越高时,这个报警更多,
$ s5 w+ m( B: l* w4 @/ B1 ^* X
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-14 00:02 , Processed in 0.017118 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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