设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10203|回复: 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'- y3 |0 ~, f+ h) M- B4 e" D
*/
$ E) N/ g. v! y8 T: K! H( \is# Q  \  w9 F  r2 i
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;: \6 r4 ?/ N0 M
do4 ~  k1 I4 u$ G
        Lan := rootfolder.Internal.Tools.AOLlanguage;, K+ e! W- b; a& K0 g, X
        if current = @.Destination -- else return7 ]$ B; G/ k/ P' t4 U( F3 T% l6 H
        then. ]) R& H$ w* i7 l2 L0 c
                @.Destination := void;; o! w: V2 f# S
                if @.occupied then5 N) ^7 w2 c/ @8 L, y) |
                        part := @.cont;) L- m- |3 @+ i
                        @.transpOrder := void;* M3 l& ^" ]* Z" a/ m
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
7 K% u" U& [& V" E2 X, f8 y2 a$ `                                @,root.eventcontroller.simTime);5 Y  l' l) {  x- Q4 G. X$ V; S
                        @.HasOrder := false;
; m, D5 P4 ^+ S" c                        @.DrivingHome := true;
* M% m2 R0 w9 ]  ~& Q                        rgManager.tryToStartTransOrder;1 x) v+ F7 P) p7 Z; a  A
                        if @.Destination = void
& r* m! Q- ^4 H# K* [. A+ B* P                        then -- no transport order for vehicle @# z+ s- K# C" |" r% [- S1 A
                                @.Destination :=
, m! w5 P  N3 B! J# T                                rgManager.nearestFreeStation(@,track.~);6 T! I2 g/ ~" ^' H' ]
                                newDirection(@);   
* o6 s+ V5 k( x5 U                                if @.Destination /= void then- _2 w7 i4 ~2 O; Z- w2 Z% X
                                        @.Destination.NumReservation :=
" K/ n- [& r9 [9 o8 d# u                                        @.Destination.NumReservation + 1;$ h9 |, M% B$ R1 F
                                end;5 E! h3 a0 ?" [3 p& \# K/ o
                                @.CurrIcon := "drivingHome";7 \5 {1 f4 r3 U9 N2 `
                                @.DrivingHome := true;6 W" t3 B( L1 z  l
                        end;6 m9 X0 P# g* M, T. s
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
8 w9 \5 m3 N( G5 p                        part := @.transpOrder;8 c' S9 x! N* U) T: ?( z
                        part.move(@);-- load part
1 |; F8 r4 u1 n3 i! n# Y( a, f                        @.CurrIcon := "load";
2 D6 W- |* ]! ~. ?' @, Q                        GlobalDistObj := part.globDestination;. u+ o' z+ T% g% ]8 S& X  z
                        assignLObj := rgmanager.rgAssignL;, q! g" \) U& f+ \- r* d
                        row := assignLObj.getRowNo(GlobalDistObj);
* Q9 H+ @/ P- V; ^+ I                        if Row = -1 then -- since 70
8 g3 l. a! N8 Q. f- z, }                                if lan=1 then
  f' n) P+ _% n. V, s/ I: _# p                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),# K1 W4 w/ L- g7 l6 ~
                                                to_str("in der Andockstation: \"",?.~.name,"\""));) h# |( G9 w9 m. q. A, n( n
                                else/ U8 w) q- v! f5 ]! o
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),* U  `) j+ a. t% X7 D/ u
                                                to_str("in docking station: \"",?.~.name,"\""));                                - P  g4 ]# [# c/ Y  R% Q
                                end;
( p% s4 E4 O! c- Q+ w8 X" G7 F                        else
* D) x: g* w5 \3 C- s( a; P) n, [) ?                                @.Destination := assignLObj[1,row];
( ^) a% o" q( a& ]2 g, b                        end;                        ' D! n3 k& z4 l
                        newDirection(@);
0 D9 ?9 b: j8 [                        @.HasOrder := true;
6 U- M) Z1 W8 S! I" k7 e: y                end;% J8 j% B& F2 I) @4 Y6 W
        end;
9 m3 ]. N8 ?( }end;        -- of the method1 [- @( {* x( u# c6 j0 n
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 4 h" t7 h9 X9 ?* @
: S3 }5 P9 g( s1 E& O0 F4 y. n
这是AGV_putin中arrive的method。( S/ M9 L  J* f0 b! n' E
& t# A7 j4 U; u9 x7 S7 o) v9 v$ Y
当到达物料速度越高时,这个报警更多,5 Y: g6 K; J, O. E0 [- s
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( S* K# B6 d, W
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 K; h! A  y" b, y  y
$ h- Z8 h) y( c+ H2 T7 [# j! W  a另外一个小建议,就是move,所有的move都可以这样
4 F& ]% t7 [% \# L  c- h8 e4 t: rif not move() then debug end& m2 e5 Z+ r+ {& N/ @: Z, O
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。9 C$ b" T( O' \, d0 R, _5 W
plant simulation中的free libraries有AGV模板,
$ L* w# g6 m- S! m9 \" X8 P里面也有案例。( ^# U2 e# `7 ~5 C: T& {
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 M" h$ d$ w5 S8 k7 s. l

' {8 {$ J& J" ]5 g我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 / _; K" ]2 M5 S4 T" k6 m6 H

. |# W" ~# X: N那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 % {; K- }5 D- D$ ?! Y' x
这是AGV_putin中arrive的method。
- o/ y. Z+ s4 V% e! V$ I. \4 k) Q6 i; h) q& A- F1 J4 w
当到达物料速度越高时,这个报警更多,
( W  Q" l& v. l
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-19 22:22 , Processed in 0.020023 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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