设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7804|回复: 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'
2 W, ?/ O! J8 @' R( j*/9 Q* y& F; @6 p; c+ v8 G4 T
is
# c3 Y5 [- ^$ D* ]        part, GlobalDistObj, assignLObj:object;row,Lan:integer;2 G' ?# j: a3 I4 z9 H
do
: Q0 Q" |5 x8 h! {: V- b6 Q; x        Lan := rootfolder.Internal.Tools.AOLlanguage;7 q( r# c' r$ S& Z, J: U$ ^
        if current = @.Destination -- else return7 A. g; R6 X, v2 f* N2 M. U& s
        then' h) J! R5 d4 M
                @.Destination := void;8 m+ H" Z/ w; z3 h
                if @.occupied then2 y$ {4 b3 z6 G8 n) ]# N
                        part := @.cont;
8 B: x$ y. t+ W5 `- Y. F                        @.transpOrder := void;$ j, t5 H8 h# R0 A3 P& T
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,7 t3 D! p2 {/ u3 T9 }8 W( x
                                @,root.eventcontroller.simTime);# [7 n' D# i' a
                        @.HasOrder := false;1 w, V# t; L) a1 {+ _
                        @.DrivingHome := true;
) K; |( K6 ]1 \/ ]# r- b; h                        rgManager.tryToStartTransOrder;( d% K- \( r7 h8 h, l( z
                        if @.Destination = void/ t1 M% B0 q+ u" v# t- e' i3 u+ O
                        then -- no transport order for vehicle @1 J0 k1 o; V" ~% l
                                @.Destination :=
$ `; l# f7 k% F0 w  k                                rgManager.nearestFreeStation(@,track.~);
4 |7 p7 g$ H, ]. V$ U5 a5 E                                newDirection(@);   
5 W  d' Y% `$ e+ y+ I9 c                                if @.Destination /= void then
9 |8 g, a5 g' i& d0 ?' ~& x                                        @.Destination.NumReservation :=' H1 Z4 ?! X0 g2 i* I5 T) k
                                        @.Destination.NumReservation + 1;
) b2 S8 @9 _% ~4 [                                end;" i4 e% u* v. ]* x, g) l
                                @.CurrIcon := "drivingHome";
/ N: p" C$ e1 j/ W. w8 `                                @.DrivingHome := true;
+ t  Z9 b/ D# c0 O                        end;* \+ X. a" X( l7 h1 i( r
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station% o3 \8 i/ v5 E, a
                        part := @.transpOrder;$ @1 c- ~6 y2 B1 N9 C( `; X: i5 T
                        part.move(@);-- load part
8 w: _& F; ?! y. e                        @.CurrIcon := "load";' q, _; [$ y' g7 P8 O8 X1 ?
                        GlobalDistObj := part.globDestination;
' }$ ?* p" m7 O; u0 t2 A                        assignLObj := rgmanager.rgAssignL;& J4 k3 O! g0 f
                        row := assignLObj.getRowNo(GlobalDistObj);3 _9 O5 m- F* _  P7 u
                        if Row = -1 then -- since 70/ w) ~$ W- ]+ o. T' M7 J
                                if lan=1 then. `8 H4 Z5 n, v5 A. A( i" y5 |
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),$ l  I1 N& Z) x# b( D  q: u- {
                                                to_str("in der Andockstation: \"",?.~.name,"\""));% B) ~8 e3 U' D
                                else: |- A% U9 D( S1 R4 A
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
: `9 X2 i% T5 \& J' r2 x, s                                                to_str("in docking station: \"",?.~.name,"\""));                               
( B* L, Y5 b) _                                end;/ [3 R* w. [7 n, h
                        else) t6 E, J3 K* E5 @6 N4 M* F
                                @.Destination := assignLObj[1,row];* b! w: h" F' \9 Z" o
                        end;                       
6 X; b' T' b9 v3 T: ]$ I7 F                        newDirection(@);3 X* M- Y6 K! R
                        @.HasOrder := true;
5 X. J; D4 S3 {3 e                end;- _+ D/ p, ?! z6 P6 @$ x5 r
        end;3 M' T: D+ B) m
end;        -- of the method
+ @/ G( [; g: I$ L! S1 e  w+ D
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
# w3 ]* F6 W5 Q/ H
; Z3 {2 m2 {0 A$ m: x( E  ]/ z这是AGV_putin中arrive的method。* V5 u9 q8 s: X% k8 J+ d$ }# F

( ~! O7 y  d6 h4 R5 q* C& |4 o+ b当到达物料速度越高时,这个报警更多,
  y( p) l" E/ J: ]* J9 |/ \: v$ d可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% }6 ]: ?, j  X: r程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?: L6 T0 Y- d/ w: N" F& T& g

; s2 p. z1 M! h+ N. R另外一个小建议,就是move,所有的move都可以这样" I( b, }$ Z) ?0 W
if not move() then debug end6 x7 [% D! r" H  A7 d$ z8 @
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。! s" R- i$ g( }* \
plant simulation中的free libraries有AGV模板,1 W) H$ }. E# _* ]5 T6 l
里面也有案例。
3 }! K% [8 Y# W+ k3 l我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
" _$ M0 G! }! J3 B+ ?7 f
& ^& [0 K3 |8 k5 Q, Z( [% g/ [4 P我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 & [  }( _" Q8 [7 I2 s0 D
8 B0 X+ I3 _5 a6 W" F. X5 J' {
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 9 p) M8 u: \: f, _* Q
这是AGV_putin中arrive的method。
' l8 c8 m1 G0 E2 p0 W5 v
- Y( P4 |/ J3 _当到达物料速度越高时,这个报警更多,
4 O7 @9 h1 U1 J/ s. ]
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-29 20:41 , Processed in 0.022445 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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