设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6745|回复: 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'$ e8 U! g! t$ [# ~) N( C+ x
*/
( v' Y9 H1 v8 mis8 U! u+ v8 K: O+ m' V
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;; ~! f4 K- x& e) x* J: E- `( p5 D
do: B+ m; D$ {9 o
        Lan := rootfolder.Internal.Tools.AOLlanguage;6 I- f6 p' z; S
        if current = @.Destination -- else return
3 v+ B0 A& O! y& T. Y        then
( b5 \5 _) g2 B7 v4 q                @.Destination := void;+ H; }6 i" S! @
                if @.occupied then, _  Z4 G- @6 }, q& ]; d+ r# P0 r
                        part := @.cont;3 [% N2 J: j$ Q2 G3 Z+ \& d
                        @.transpOrder := void;" Y. E0 S7 S3 L, x. c5 j# {' X" U) D
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
& m/ r7 L3 l" P* D, m                                @,root.eventcontroller.simTime);* c8 U0 t. F  y  k  w. t; F
                        @.HasOrder := false;. A3 `1 c% n7 ]; X
                        @.DrivingHome := true;! r# Q) e8 V5 G0 t8 h, h
                        rgManager.tryToStartTransOrder;' q- A2 _  w& ~3 [- u
                        if @.Destination = void4 _) G- W! A5 e7 m7 l
                        then -- no transport order for vehicle @
3 }, g! h) o* `! H+ |# Q9 E/ }                                @.Destination :=
) O7 W3 K  U- u; S" \                                rgManager.nearestFreeStation(@,track.~);
+ m! B$ c5 F9 y5 @! g                                newDirection(@);   + K. {& B  h1 z4 w5 a* W* Z
                                if @.Destination /= void then
1 D( t6 q8 B7 q, i5 O; x$ O1 s4 `                                        @.Destination.NumReservation :=8 _8 g9 S; H% }- l
                                        @.Destination.NumReservation + 1;
; l( P& n8 g: N3 \! J! G1 z                                end;: p: P7 w9 }; V( N% {9 [8 v2 M& [. D
                                @.CurrIcon := "drivingHome";
, N/ y; |) s0 V$ H- t                                @.DrivingHome := true;/ @% S* {; U7 ?5 \9 D3 t
                        end;
+ Y# W; s: o5 Y. U6 F, p/ ]                else -- the vehicle @ is empty, both vehicle and part are in the same dock station+ M# X4 I/ u7 d& g9 i$ {2 Z
                        part := @.transpOrder;
) b9 ^3 T8 G2 s! f' R                        part.move(@);-- load part# u4 q: e; a' L+ r0 @  N4 f0 T- L
                        @.CurrIcon := "load";4 n, C# S+ ^% q4 q; |( ^
                        GlobalDistObj := part.globDestination;
# c% E; U  [+ _+ W2 N/ f$ |7 \                        assignLObj := rgmanager.rgAssignL;
( i0 b5 h$ d3 ^6 m& O* C4 b                        row := assignLObj.getRowNo(GlobalDistObj);* R; C: O. o, o  O- R
                        if Row = -1 then -- since 704 Q) d* t2 G5 ]7 d  B
                                if lan=1 then1 u* z! G! _' c1 p- E
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
# X& c( J( m" o                                                to_str("in der Andockstation: \"",?.~.name,"\""));) K4 \) A* k; T) J' [5 T
                                else* m# A! ]! f, p+ B; _% J% h5 b
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),5 K5 h/ W  G! S. Q  O8 c- s
                                                to_str("in docking station: \"",?.~.name,"\""));                               
/ Q. K" M! }  `1 l/ b0 E; J& \3 R                                end;: J' G7 V; K% I/ ~( m9 {5 Y% ~9 D
                        else- }+ Q% X# g; `0 V
                                @.Destination := assignLObj[1,row];
+ Z& s5 x% N$ W& |                        end;                        ! V, }# Z! D2 p) g: o+ k' m. v
                        newDirection(@);
' {; L9 ~+ f, I6 Q) m                        @.HasOrder := true;$ }1 N" h4 Z$ B
                end;! Y: A8 `3 ?+ ~
        end;/ g  c  G. T$ e0 K0 U" W
end;        -- of the method
3 t/ F) B) t5 U% z4 Z( a: P5 c
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
: K. Y+ m7 e0 P2 I, L0 w7 j6 ~& v. h
这是AGV_putin中arrive的method。, p# I# Z% g0 Q5 f' S# M3 `* Z7 s
7 N3 y5 E5 }% Q9 c
当到达物料速度越高时,这个报警更多,
3 W' N* h+ h1 Y可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。- z! x% n& P; O; q  D
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?" }6 q' X- [: V# g
- H# o( w: @. m$ ]- z7 ^4 d
另外一个小建议,就是move,所有的move都可以这样; a$ E9 Q# ^. j, W: I2 K
if not move() then debug end
7 t9 r7 q) `8 b' F这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。5 i* i; _6 p& E, ?$ o. g8 }
plant simulation中的free libraries有AGV模板,9 ~& d  q! [$ W
里面也有案例。
! F' U: J# y2 I" M3 H$ l* i. ]# q; d) t我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。2 X/ s( ?  y  ?' }. b$ m6 D( X5 j

& a/ G! E1 A  t. l6 w: r我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 2 H4 M- i7 {# u! r! u2 |" k

7 r% n" w  C& M( y+ C: a: G那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 . x3 x8 n4 y' ^
这是AGV_putin中arrive的method。: X' `% S& v  X

1 Q  e- [; b* }7 B: ]# G% M$ E2 l当到达物料速度越高时,这个报警更多,

) Y. o7 i. R: K7 X" a3 g另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-24 05:18 , Processed in 0.019229 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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