设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6326|回复: 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'
4 |( N! k! _* e+ E! m8 X6 Y*/
' D# L2 F5 R6 M  c: K/ S+ ?is
& G/ D& {9 o2 p2 G, D- u        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
9 H' _5 l4 u+ S7 ]/ d! E5 x; D: `do
# M3 c' y+ s3 {        Lan := rootfolder.Internal.Tools.AOLlanguage;6 j; @: o- Z2 n( B6 M* L& }% K
        if current = @.Destination -- else return
4 l: l0 L* `7 T* c/ {        then
; l  ^; q; P3 H+ ^8 A% U                @.Destination := void;! u/ y$ g3 ^; b' l/ @
                if @.occupied then
3 h+ M2 Q) s0 n$ F) E                        part := @.cont;) t- [) l6 j0 \# k- [+ N
                        @.transpOrder := void;
: {. H  |# p) A  m" X; J* }( E( }                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
7 B5 j% m1 x9 }# v  ]9 u  O% {                                @,root.eventcontroller.simTime);
) J& E% V8 Z- `) r) k) r                        @.HasOrder := false;
, p3 \; [' D  T" t3 ~. p4 Q                        @.DrivingHome := true;' [( e* V( u$ Z" v0 ^% J; d
                        rgManager.tryToStartTransOrder;5 @: w9 C0 ^. I. P. b$ F7 j
                        if @.Destination = void
8 d: w2 ?# I/ I9 s/ L                        then -- no transport order for vehicle @
2 K% G4 H* y# U6 g* V7 }# o" Y                                @.Destination :=5 N: J5 |/ n8 A. N' A1 o' H5 V2 b
                                rgManager.nearestFreeStation(@,track.~);
4 g: ~: V9 ?: V/ c" O. b                                newDirection(@);   7 a* [5 I9 t% e! R: J9 k
                                if @.Destination /= void then0 z& X/ N, l2 J7 j6 z( G
                                        @.Destination.NumReservation :=4 y) t, i4 E3 w+ l' u* e
                                        @.Destination.NumReservation + 1;
. o# O. ?7 D- ~6 E1 T                                end;' o$ B5 e) A' Z( U, d
                                @.CurrIcon := "drivingHome";  t# y9 l9 N2 S. Q( c' j
                                @.DrivingHome := true;
% e) H( k8 ~( G) a  l9 H5 U                        end;
7 p* |; [7 T/ u4 U                else -- the vehicle @ is empty, both vehicle and part are in the same dock station4 E  }6 o6 Y' F/ T6 z8 `
                        part := @.transpOrder;
8 n# s! z) C5 D4 P* s' y& S% t                        part.move(@);-- load part
$ R+ x; B+ F  w1 ?                        @.CurrIcon := "load";$ K4 Y8 }/ {% y' Q: Q
                        GlobalDistObj := part.globDestination;
9 f5 L! n' e# B6 b                        assignLObj := rgmanager.rgAssignL;
2 z, ?$ p# Z6 m% ~) P: s                        row := assignLObj.getRowNo(GlobalDistObj);
: g5 |% L8 ~  O% q; p4 }                        if Row = -1 then -- since 707 N* t" c% j: t
                                if lan=1 then
* t/ h( J, D' `0 H; t* S: J                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
8 N6 X; o$ _  `, m; ^6 e, v: X                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 K7 @8 j; F9 ?/ c3 [                                else6 [2 M1 A3 y( p/ r$ e' y/ l/ L  k
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),$ Z/ \5 [. X( G+ O, s! B* M* u
                                                to_str("in docking station: \"",?.~.name,"\""));                                & D" R3 I5 K, Y( f1 X/ g
                                end;
! B- ?/ X: t( }3 B: N) E/ s' W" }                        else
8 S" ?9 L6 p3 f) L" L8 W: |                                @.Destination := assignLObj[1,row];
$ D9 y. @2 T: B; p2 i6 I                        end;                       
6 S6 y- t% e9 r! h' x% K                        newDirection(@);) [( T( ?! K0 N1 G, R
                        @.HasOrder := true;
" J% l2 ~7 R' \) ?2 O                end;& f2 }3 i, {% H( M) @! f0 n
        end;- X/ R# i  V$ R
end;        -- of the method2 B( ]( ?) W. k$ A/ k' a- o/ `
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
/ J! j  |- O3 ?# b. K2 y! f/ K+ n: a( @5 Y/ G9 Z
这是AGV_putin中arrive的method。
3 p) b. {# u& d. o+ w
% h. j. r; U) M- K% E2 W当到达物料速度越高时,这个报警更多,+ B& z8 Q$ z0 g% p  y  m7 Q* b: k
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。6 u/ x; d) Z  C$ s. x
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
8 _* p0 k+ m$ w# s0 }; m' J: J* x+ E* G# b1 b4 w
另外一个小建议,就是move,所有的move都可以这样! Z" ~# k7 P9 k* j( R  q2 u' X
if not move() then debug end
2 j" L. R+ B/ E+ t  Q这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
9 Z" a  w- Q+ C' F9 gplant simulation中的free libraries有AGV模板,5 F3 f4 y' g1 z
里面也有案例。$ h: D0 b. w& H
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。" |( p) t8 u8 X. p, v8 I. O
2 ~, f  }( @6 u5 n; O. e" E3 I
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
% P! ]: Y* ~+ A7 Z$ x
( d9 e7 C1 H$ j那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 8 W$ R. L! F7 j( `4 z5 v
这是AGV_putin中arrive的method。
$ w- Y, q' }7 |) F2 d2 l1 f4 x) ?- Q. {+ i
当到达物料速度越高时,这个报警更多,

8 Z% I3 U" Q& M6 l; G5 A8 d) q7 }: J另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-31 02:36 , Processed in 0.021147 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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