设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8000|回复: 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'9 S. o2 L9 L" e% ~
*/
0 S3 w5 Z$ A$ c8 I7 E' lis5 U. Y4 _) p5 y5 }
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;6 L% M% J0 A6 \+ k- z
do! o5 u2 ~& a' @' z! V
        Lan := rootfolder.Internal.Tools.AOLlanguage;! W4 e: Z/ W3 R" X7 Y5 X
        if current = @.Destination -- else return
/ x9 h8 i  T+ l* L7 r        then7 g2 d' g4 ^9 l3 h( A
                @.Destination := void;
* W( Q0 S* A3 l- p+ L                if @.occupied then6 [: @5 L' ~7 F3 a
                        part := @.cont;
( y# ~  N5 U9 |8 o. Y                        @.transpOrder := void;& T0 i" z  t5 A
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
/ k7 Q; q) U" v                                @,root.eventcontroller.simTime);
3 ^. f  V! `. e                        @.HasOrder := false;
. m7 _7 l0 A% I2 E6 e  ]8 O                        @.DrivingHome := true;! v; T: p  ?7 k% `# N+ x! k" U* M
                        rgManager.tryToStartTransOrder;" j  x% Y4 q& h) D
                        if @.Destination = void
, R2 A- ~. j2 B& g                        then -- no transport order for vehicle @% I' d* K  v+ L$ x3 J* f
                                @.Destination :=
1 L9 w7 k, A  P$ k( q4 G                                rgManager.nearestFreeStation(@,track.~);
8 U* z& X8 U2 B                                newDirection(@);   - F0 \$ ?# z% C- i
                                if @.Destination /= void then4 g. ]6 ~) H3 F3 `, s! A2 D
                                        @.Destination.NumReservation :=
+ o& a- e, X$ A/ l) f' M( y                                        @.Destination.NumReservation + 1;# R7 @/ O8 ~& z6 F; ^4 n  q) z* {
                                end;3 C* T) D. i( k$ E8 ~  t
                                @.CurrIcon := "drivingHome";
* M/ z) c- K- G' d4 Y+ Q                                @.DrivingHome := true;; T% ]' I# I" e4 Q$ O
                        end;
5 y1 f% x# \" G  Z$ M  k  t( \8 s                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
6 X/ ^: Z* H6 V/ X+ B# P                        part := @.transpOrder;. H$ b- i6 Q& O9 C5 v  f, u" o
                        part.move(@);-- load part
! `2 o- L( V# X                        @.CurrIcon := "load";
7 Y& t7 k; u4 t# l                        GlobalDistObj := part.globDestination;% C3 O! K: o8 F  K5 L# T& {
                        assignLObj := rgmanager.rgAssignL;
7 R: n6 x) h) A% a                        row := assignLObj.getRowNo(GlobalDistObj);+ |9 @9 V- j# M0 `% W
                        if Row = -1 then -- since 70
  b" k& e5 t2 c  W" L' J                                if lan=1 then
5 X4 [# Y$ l" j7 g5 _6 a$ x% o4 T                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
% D( N: E" _( p: m/ h) X                                                to_str("in der Andockstation: \"",?.~.name,"\""));0 O) Z! R8 m. I& k2 B
                                else4 W; {; z1 T; N( {
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
$ ~, z- @7 @9 N6 v* x, h+ ?3 t                                                to_str("in docking station: \"",?.~.name,"\""));                                , x; l6 }+ Q1 A4 G5 L, x" g
                                end;7 y: ^% |9 ~: p
                        else" j7 H% R8 e, M( n" b1 e; h  }
                                @.Destination := assignLObj[1,row];
& B+ M# U: e, u6 d* y                        end;                       
" X) t3 Z4 W! T: q# N. C( q                        newDirection(@);
3 X- u2 o% b8 c- B                        @.HasOrder := true;" K1 f; b# i2 R' q# s2 K5 W
                end;* G; Q3 N2 y( _1 k( k4 I2 _
        end;
/ T7 S( Y7 b9 z) gend;        -- of the method0 `3 W4 G/ W0 J+ Y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
! P% `. G  `; a  ~( X: f0 y; o- Q! M, B% i/ z2 C
这是AGV_putin中arrive的method。* ^; d" \  w) R% ^' Z
: ^8 H6 r: J9 q+ A& Y
当到达物料速度越高时,这个报警更多,
6 A2 O0 A+ g( S; s可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。7 D( \0 w  o7 G4 v8 {# M( c
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?3 U! ?: c9 R  x7 I. R$ i
2 H; ^. B! v/ M8 X5 y/ K, j- ^+ k  }
另外一个小建议,就是move,所有的move都可以这样
- c, k- M* _- N  Dif not move() then debug end
# D+ U) y" n4 S! F" ?6 z这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。) M6 h0 S! m4 w4 y" R% h
plant simulation中的free libraries有AGV模板,3 _3 ?6 j) F! m$ T2 ?
里面也有案例。
. g& G5 h1 F* Y  {4 S- j" h+ z我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 Z, N$ o0 I7 |" ?2 q; _  F7 `: H

; {. \( x8 j8 N7 O# o  V我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" |, y$ x/ Y; m4 Z5 z/ l: c3 f( z5 c
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# w% a" F: I4 f" r5 p; q% M这是AGV_putin中arrive的method。6 u8 ~# |( |* W; g" H& S

: k! ?4 j6 A* ?3 b' J9 H当到达物料速度越高时,这个报警更多,

5 @  `( M$ ?% q另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-10 04:32 , Processed in 0.024109 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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