设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8866|回复: 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'
+ O  p) L8 Z7 N' b' E*/1 z9 M2 L1 S3 H
is
6 `( K! T( t3 H2 ~6 [1 u        part, GlobalDistObj, assignLObj:object;row,Lan:integer;9 w7 M: \% }- N) ?$ j2 k
do, i/ M. v, Z% N  P% p
        Lan := rootfolder.Internal.Tools.AOLlanguage;$ c9 D9 }2 a' z  ]% f
        if current = @.Destination -- else return  [3 O" x3 z' n8 u
        then
8 @; M, ], O( l2 e                @.Destination := void;
4 d: ~* [( d, J; |7 ^3 Z                if @.occupied then
" j7 k3 ^0 y9 K+ t' ~* i% C- S                        part := @.cont;
* l/ d0 N. j6 Q+ D0 |3 }                        @.transpOrder := void;& h% h: h2 z+ ]. H* F. ~  a* [
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,- `1 F) e0 ]- g3 R2 P3 ~
                                @,root.eventcontroller.simTime);
' N) J0 m7 Q/ z                        @.HasOrder := false;
- C( z$ B# E7 J  ]2 [/ S. F3 f5 Q; X# L. o                        @.DrivingHome := true;$ q6 R6 W& l8 v6 U
                        rgManager.tryToStartTransOrder;
9 c1 o* ?( n% z* K5 |1 z7 n                        if @.Destination = void
8 M& S; U7 \0 b. J" m                        then -- no transport order for vehicle @& t- C) K" e7 u& `7 B) }- _+ Y
                                @.Destination :=) m3 D! E' p% K' ^& Z5 J
                                rgManager.nearestFreeStation(@,track.~);. N9 W- X9 H+ T3 }
                                newDirection(@);   
$ K$ Z3 u) {2 N" L                                if @.Destination /= void then# e5 S3 i+ D# R: B
                                        @.Destination.NumReservation :=$ I; R( d3 b+ y
                                        @.Destination.NumReservation + 1;9 c. c! Y/ f+ V5 k$ k7 f: q& x* H8 o
                                end;% F* B% K# h6 U. ^; ~6 m8 I2 ~
                                @.CurrIcon := "drivingHome";
& ~$ y6 _( I0 R5 R  T/ y                                @.DrivingHome := true;
: K0 ~/ r. }. U  N                        end;
; Z- P1 e7 ~# A$ a* i5 ~6 H                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
  a% y- x$ M% n                        part := @.transpOrder;7 g" A/ W+ X# L: ~
                        part.move(@);-- load part# R% \# ?  H+ X+ ]+ ?
                        @.CurrIcon := "load";
% ~2 J( @/ h0 {0 v- J7 r6 y                        GlobalDistObj := part.globDestination;) T0 ]0 r9 u& B: ~
                        assignLObj := rgmanager.rgAssignL;! u; h+ |' w5 t( _3 }( `; {/ w
                        row := assignLObj.getRowNo(GlobalDistObj);
& Y6 R1 e! X$ B. A1 B                        if Row = -1 then -- since 70
* @6 j7 u) T' t9 F. ^                                if lan=1 then5 W; `2 t5 D+ Q. k) v! `
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
, h9 Y5 j# Z( _9 ?3 T5 |( h                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ ^+ r: h0 A% \$ w                                else
% r" G3 o; C7 ^4 N7 m( F                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
+ u0 B) O3 ^0 e% A- Z. D( q                                                to_str("in docking station: \"",?.~.name,"\""));                                , K  `# k+ c0 o! N) Q( W" i+ R5 Q
                                end;
* I5 X" Q4 i' t- g9 F                        else2 V' D( v: C2 f( c
                                @.Destination := assignLObj[1,row];
) ]) M* F5 }! _8 c8 x8 E7 C                        end;                       
8 m% Z. t4 h* N' v8 a8 j( x3 O                        newDirection(@);% u' j$ X: R2 [, r
                        @.HasOrder := true;
# K; }6 e% J/ m- G+ h1 [" v                end;
4 b, B) S0 m6 U' I/ U        end;
& R  B- t) i( u9 U* n) uend;        -- of the method
' c. @7 s8 j: c$ D. V0 R* X/ K
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
  z9 C6 v9 g8 o
1 J# Q$ r* b6 @* y. `这是AGV_putin中arrive的method。; L. k" l9 s, R% Y: T, ?
+ g. M+ t; [6 z. q
当到达物料速度越高时,这个报警更多,; f* V6 m! @* O, x
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。: g/ |% n" Z7 E( N. `( i2 w2 F* E
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
( G) x* i: y5 E- w" k! D' Z4 ?1 V
0 Q' \, i% F# C: C4 v6 Q- q" {另外一个小建议,就是move,所有的move都可以这样( m! a1 F% B6 i* r5 g+ K
if not move() then debug end' H# z, K& J2 ]
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。) a- i' Y) P$ X) S3 B
plant simulation中的free libraries有AGV模板,
: z0 |7 e0 f4 a里面也有案例。* ]' i: ?0 P- r9 T( I
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。. T$ W5 h- T' @# \* F
5 e( J7 X3 d. p# I  I
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 7 b5 B2 s7 i! \' j3 t* V) f3 J

7 k/ V+ T3 R& ~3 v0 _那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 - j2 ?$ m! \6 G, @- }7 Z6 G
这是AGV_putin中arrive的method。) I: l4 k: Z$ f8 S" ^% G

' y7 Z# p1 ?1 d当到达物料速度越高时,这个报警更多,

+ b0 P6 z! E! I1 h另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-1 05:08 , Processed in 0.018707 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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