设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6810|回复: 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'
2 b9 H* }) M9 U) H*/0 i2 s9 P, G9 ]  d; h9 j
is
8 _2 k, g, J) Z, I3 o( z        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
& F: s* R' ]9 J2 i# {do* z5 [* i4 M5 k2 @7 `
        Lan := rootfolder.Internal.Tools.AOLlanguage;
, Y3 q, k' f8 l        if current = @.Destination -- else return
- E' R! v0 d* C2 L+ r. z% U        then
6 n+ _% D( C) T3 u4 K( v" d/ w                @.Destination := void;
3 i; I( ]' J! S9 Q5 L& X2 U* j                if @.occupied then) v- F" U0 P6 f' P+ z- C
                        part := @.cont;
$ Z0 b6 z' d" h% j( Z6 ~                        @.transpOrder := void;
7 G4 v% d! c: G+ Q* I                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,. C# F. m# }8 e/ T3 R" C- `
                                @,root.eventcontroller.simTime);+ [! m. R1 E: s) D) [! g! m
                        @.HasOrder := false;3 m9 C, Y7 q. }9 c
                        @.DrivingHome := true;
0 m+ i- z( |: H' V4 F3 N6 g                        rgManager.tryToStartTransOrder;/ S0 X# B! E4 `* ^0 A9 l+ d- Y
                        if @.Destination = void
# p' c& @4 a$ }. }' j                        then -- no transport order for vehicle @" J  r- r( N) J
                                @.Destination :=
6 Z2 S/ e9 j& ~3 n9 E6 ]                                rgManager.nearestFreeStation(@,track.~);# R: n* Q6 W/ A$ q# E( |
                                newDirection(@);   
% C1 ]" @7 n, ?/ L                                if @.Destination /= void then& ^0 l6 k5 s4 z7 g* o5 k5 S
                                        @.Destination.NumReservation :=
5 K& H4 c8 }9 F8 a4 F                                        @.Destination.NumReservation + 1;
) m5 z- l' B+ @$ d1 z                                end;
( K# h( s5 _  i. D                                @.CurrIcon := "drivingHome";
* ^/ y# u- m% R                                @.DrivingHome := true;
  f$ o9 o1 l- F" D- H                        end;% E% g$ h& i: ]8 h: z' u! w! X0 f
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
# `  W4 _7 Y1 a+ a' F# t& Y8 k) W                        part := @.transpOrder;
0 r/ S. y$ v6 g% F                        part.move(@);-- load part8 v/ I) H$ B  d
                        @.CurrIcon := "load";
: ~' h7 M/ q2 p9 g& Y                        GlobalDistObj := part.globDestination;
0 D$ X  W- h( _: b9 k/ f  q5 _                        assignLObj := rgmanager.rgAssignL;
- M: T% h. z3 v7 q4 ?+ D$ u                        row := assignLObj.getRowNo(GlobalDistObj);5 N: N/ j7 y' }
                        if Row = -1 then -- since 70, ~# N4 S; F/ c0 i# ~: X
                                if lan=1 then
3 n1 Q$ J5 m2 A: k3 K                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),* J$ D/ U2 ^( k6 c8 B
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
  I, c/ r5 y$ F4 {/ F, \. j                                else0 _: ]! {$ K9 l
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
5 y9 s& l  L8 j4 C' v. b                                                to_str("in docking station: \"",?.~.name,"\""));                               
2 Z8 ~# h) m; J+ U. \                                end;3 f' ^) g" R7 B8 D; G
                        else+ f( s! k- m) r
                                @.Destination := assignLObj[1,row];
% F* m7 t1 @! z# [. M/ y) u+ R. u                        end;                        9 A/ @7 X  L; h& m5 Q) p
                        newDirection(@);
/ t5 L( S" w& ]                        @.HasOrder := true;* V( a6 u. s& i& O  n
                end;2 L4 A- Q! [6 P# ~2 i
        end;; R; t. ]8 k6 I5 k7 R  B6 R
end;        -- of the method( I5 V1 ~6 F  u" e8 H- m1 z4 ]' r
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
3 B! f& [+ ?: j. G1 Q( v8 o6 s6 r
* l: t4 B4 H2 |( q这是AGV_putin中arrive的method。+ l4 Q- p( T3 O* _- l- D5 g
+ i0 ^, j$ `' T7 L
当到达物料速度越高时,这个报警更多,) f. H; @# X5 ~' z% i: {
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
5 W$ i" Y+ T) S; c+ J程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
% w$ u- ^$ S' P. H' }8 X: y7 ^- m% T# Z+ u& K6 ?
另外一个小建议,就是move,所有的move都可以这样7 ?$ H8 j2 \: h* M. L0 f& J' X3 t
if not move() then debug end
) I# |& W: I; ~$ a/ n( ~这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。( w6 [% p% q+ }! c$ P
plant simulation中的free libraries有AGV模板,
' x. ^' h' c9 X里面也有案例。3 Z# _: E3 t# M! X; `, g
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。7 P- G: S. w% Z7 a+ N+ |$ N
% i! k; S, B' c
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
$ \7 G0 [5 u5 a2 b* L; T
# P' p- g. W% x/ D9 m7 t) k那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
$ C5 F  c# X. i' b这是AGV_putin中arrive的method。
3 `0 a! b- c$ e$ y% j# X% J  D' \: ~% f) c% B) a) J, G5 \
当到达物料速度越高时,这个报警更多,
% m; F9 Y# N" l  L
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-28 00:11 , Processed in 0.018490 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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