设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10012|回复: 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 E( M$ _5 W; U5 g*/
1 O8 o: M) T) p: d. ^# R# Sis
9 D8 ]" p& u( q2 o9 T        part, GlobalDistObj, assignLObj:object;row,Lan:integer;9 E. o, ?1 {+ G* G3 L" l# U) g" Q
do
/ |: b$ R0 B2 j        Lan := rootfolder.Internal.Tools.AOLlanguage;
& ]$ a) H0 T& X, D7 ^# ~; E        if current = @.Destination -- else return1 v6 F7 U8 R: l3 S) J9 x) L
        then% Q4 o: o$ z5 m; \8 M
                @.Destination := void;( }" @+ Z$ [5 B* \
                if @.occupied then
$ j# ]% c, L7 F- o                        part := @.cont;
( u) \% Y, J" }                        @.transpOrder := void;* R: ]4 g! g) H2 j" f
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,( _/ P1 }' d5 _* T& |7 r
                                @,root.eventcontroller.simTime);
& Y2 c5 r) i: `# s" Z                        @.HasOrder := false;
0 ^! n/ X0 q8 ^& {3 I) Q                        @.DrivingHome := true;! q' V0 n' i5 P( p# ^
                        rgManager.tryToStartTransOrder;3 i) a* p5 u3 S# y
                        if @.Destination = void
9 X5 [9 U7 X2 Z% L7 t: G# O                        then -- no transport order for vehicle @/ I0 M/ G) X# M+ L, P
                                @.Destination :=
& ^# p7 j0 x. {; u% R+ e: G                                rgManager.nearestFreeStation(@,track.~);
; y1 U' G8 ^) `- M5 ?/ l                                newDirection(@);   8 V& A+ S1 D! j; F7 Y& ~
                                if @.Destination /= void then7 ?. j% D0 ~( T% e. j$ b) h
                                        @.Destination.NumReservation :=
2 ~. Z$ ]- G+ d5 S1 F( \( {! B                                        @.Destination.NumReservation + 1;' Q% m$ z6 e" x& V7 }9 w
                                end;; ?# p, ^5 C% v, x
                                @.CurrIcon := "drivingHome";
5 Q# l1 _- [/ f5 G' \* N5 W2 j                                @.DrivingHome := true;
- I5 k! s! x7 R5 ?. ^% a/ s, B                        end;( y: O  s8 y, X% ~$ L2 h
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
0 K: W4 L- U# L: ?                        part := @.transpOrder;
) j) Y( d5 K( e# R9 \/ i$ n2 Y                        part.move(@);-- load part  i, F! j( U' _. v& t
                        @.CurrIcon := "load";
) o7 b& [' ~1 B! m                        GlobalDistObj := part.globDestination;$ ]9 H8 U" @8 ?: \" y; i- `
                        assignLObj := rgmanager.rgAssignL;
, W5 R/ i/ N! u  S+ w1 V/ E                        row := assignLObj.getRowNo(GlobalDistObj);
4 p$ ~+ h7 ^! x4 H' r4 r                        if Row = -1 then -- since 70& m. b: J" S& A7 g
                                if lan=1 then) R/ B& S. q0 G
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
% a+ I9 ]" k4 _7 F. {7 G( s& K                                                to_str("in der Andockstation: \"",?.~.name,"\""));
1 S. F" ?7 A# D" \2 k! ^/ r                                else" c9 B! C+ v: l) J
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
& ^: i, C3 ?  B7 g4 Z7 D0 j# E                                                to_str("in docking station: \"",?.~.name,"\""));                                " @4 A, w  D3 N9 Y/ }% T
                                end;
$ h% m$ O* F% P: s) H                        else# i& Z6 D7 s$ R
                                @.Destination := assignLObj[1,row];; i& v1 ~0 W, a3 k6 f
                        end;                        0 P1 B1 Z2 [! Z: G/ ^) K% {
                        newDirection(@);
# M- \: e5 `, n: \) z# o9 f                        @.HasOrder := true;. C. A' V8 R3 h
                end;
9 I( K9 v+ L2 y, M5 U+ |        end;
# P0 `$ o7 w9 Z, {end;        -- of the method$ U! N) E% v, w3 S( a
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
4 L/ b! @: \3 q$ R, l: m2 L' I3 W
' \5 H' W- i- i& Q. `) U这是AGV_putin中arrive的method。
% C+ e8 |" Z8 e
/ b9 E6 H/ T. Q5 G当到达物料速度越高时,这个报警更多,
- f. y% d% Y# ^2 J* F  t# F可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 U- T% |6 D# y" `$ n
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
, F( P# X! k  H& S6 Q1 D
9 y; G# m$ g" U: C% @另外一个小建议,就是move,所有的move都可以这样
9 e/ R, o: S6 Lif not move() then debug end
6 v- I) U- d1 X4 [这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。- N( O+ l, v" c) J9 _# i8 g
plant simulation中的free libraries有AGV模板,
  }+ `0 @" r% e; j6 q9 [& T$ n里面也有案例。; k$ F  i) t7 n1 K6 H
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。( w/ M# H( @9 C$ H  C0 q6 g
; J3 i+ @* \& _+ x' E
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
5 L/ I" N1 y% |7 O
$ l8 z4 m; v4 B( R4 `& @# W那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 2 R/ b7 n) }  v2 G# P3 `
这是AGV_putin中arrive的method。
# V" q2 b' y# h, Y+ ]" b. A1 e+ g
当到达物料速度越高时,这个报警更多,
4 U' l9 n1 k9 P2 I
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-7 11:05 , Processed in 0.020268 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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