设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8703|回复: 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'8 k% F: h* r; j+ z6 m: P
*/7 d& b0 E9 Y. R/ _9 ^
is. E: r+ p+ C1 Y7 Q2 ^  m( |
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
* e; V! P# i; \1 h) o8 x$ f& ado. [( B) X& K3 s
        Lan := rootfolder.Internal.Tools.AOLlanguage;" u# T/ e9 U5 R) v/ e+ L( k# d8 ]
        if current = @.Destination -- else return$ o# @; p# d. v
        then  e8 }  V- o7 n. ~. q
                @.Destination := void;! u! H( H0 H& A
                if @.occupied then
. @9 t; G" S( m3 }, \                        part := @.cont;
2 `6 @' ^1 V" h! y$ L- u                        @.transpOrder := void;
8 e+ E& z) x" L+ d) ?7 v                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,+ Q0 t6 u1 q3 F
                                @,root.eventcontroller.simTime);  ~6 d# y- L2 ]! E
                        @.HasOrder := false;
- ^" I( W! f$ ]  C                        @.DrivingHome := true;* M( |+ j7 J6 |# q, N9 M: Z. i5 G: Q
                        rgManager.tryToStartTransOrder;! C7 D+ o& L+ e; u8 m/ P9 r
                        if @.Destination = void+ T6 s1 B# J" Z# k1 D9 s! i
                        then -- no transport order for vehicle @  c& {; c/ B, o( o0 G4 ?  c6 Q
                                @.Destination :=
' f* Y1 m+ r% V6 @- b' t                                rgManager.nearestFreeStation(@,track.~);
$ ?2 T& [; ]0 i* y, t                                newDirection(@);   3 B* C& S$ a7 m
                                if @.Destination /= void then9 e# B8 W2 \0 s0 u5 |+ m! @3 u
                                        @.Destination.NumReservation :=  R2 ~* r& F# O9 A' u& p
                                        @.Destination.NumReservation + 1;
% X6 e  ]0 |/ s& v# P                                end;0 Z9 r# l" Z; }: n
                                @.CurrIcon := "drivingHome";
- P5 e8 h7 B+ w, _                                @.DrivingHome := true;
( h- ~- s$ `* }7 q/ u8 ]                        end;
& Q  R' u  n7 q6 s  {. [% F                else -- the vehicle @ is empty, both vehicle and part are in the same dock station. E8 O% _  U% ~2 ?8 ]( ~: f0 l
                        part := @.transpOrder;8 `5 T  I0 S- ^% U8 f
                        part.move(@);-- load part5 g& w& N$ j( f4 `7 ^
                        @.CurrIcon := "load";
- q( |2 d# r$ Z                        GlobalDistObj := part.globDestination;
' J  a6 z( P2 D; b                        assignLObj := rgmanager.rgAssignL;
8 x& c& L( _: j1 u4 J                        row := assignLObj.getRowNo(GlobalDistObj);
2 w% `! t3 o/ q5 F5 \                        if Row = -1 then -- since 70
6 Y9 g$ z* m$ `7 j" L                                if lan=1 then
2 z8 U& ^% F8 e& C: e' `                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
# L1 c" H. K, M% X; E                                                to_str("in der Andockstation: \"",?.~.name,"\""));8 E5 G! J& H$ k, \
                                else
3 p) L1 P( q4 j8 m                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),: L) s( Q3 j; M+ V0 J
                                                to_str("in docking station: \"",?.~.name,"\""));                               
* b' C3 Q4 ~1 |1 ?3 z( D                                end;, q1 F4 k5 ^9 k  i9 P! M0 h
                        else( [$ U: J0 R# S
                                @.Destination := assignLObj[1,row];
$ s* m- Q9 K6 j! t- r4 Z4 W) d                        end;                       
' r3 m, B6 r; [. Z2 J+ i7 z9 u" _4 v                        newDirection(@);- S; X6 S0 |9 f/ }( a* v
                        @.HasOrder := true;
5 c1 q' p' N; A* J                end;* U' s8 s& q5 y  f
        end;( q0 g! s, Q5 L# {
end;        -- of the method6 j6 M1 R5 x% F" s$ p/ F; k
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
, L' l$ k; i  w# H9 Y7 S9 U  z- }7 J+ c0 z  F; ]; n  q+ O) D& [% J
这是AGV_putin中arrive的method。
; k( E7 ^' }. W7 x& G
4 A$ Y1 c5 t0 h7 m当到达物料速度越高时,这个报警更多,! r1 f3 A( I1 d
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 B, ~, p+ `! m
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
, t4 N) {0 v2 N3 d5 b2 Y4 K5 D+ s& U' Y! R8 X  {
另外一个小建议,就是move,所有的move都可以这样8 D- W# i4 s( P5 U+ B2 e+ c
if not move() then debug end1 x" p3 u* o/ S$ i" x' v, k
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
! M1 P6 X! C# D9 h* m- @- S6 w! a% Pplant simulation中的free libraries有AGV模板,8 e. h3 z- N( O- i! g4 P- D( ^
里面也有案例。* ^: h; H6 u, I! P/ x& u% Y
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
% r" X0 q6 S  @# w! c$ E/ m
% d0 @0 T5 q: D" O( A我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
* U+ J, E# Y4 x
* W( G% L% h7 v( R那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
' T+ R0 u  B8 o. E这是AGV_putin中arrive的method。
$ B2 W$ R8 t. ?; q+ }5 S7 [( T6 k" M  Z, L" V6 s
当到达物料速度越高时,这个报警更多,

1 [$ k3 \1 t/ h: s7 \2 z# ]另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-21 11:45 , Processed in 0.014546 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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