设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8544|回复: 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'
" `- |0 Z1 W! \# U*/
4 o& X" i: `6 A& t+ T$ A5 Eis
/ W0 m, W/ h7 d        part, GlobalDistObj, assignLObj:object;row,Lan:integer;4 V! o& t. Z7 n$ x6 R
do' C9 Y; R1 C) j+ J0 o
        Lan := rootfolder.Internal.Tools.AOLlanguage;
& N! p6 a$ P# O        if current = @.Destination -- else return9 c1 d( ?% t* V' t% c
        then
. M7 x. m- K' M, R/ w                @.Destination := void;
( B( U1 r: Z) Y  _- C                if @.occupied then
0 p$ B; A1 F  q1 M  l6 _0 P                        part := @.cont;! i6 K2 f5 a# O5 ?! K) D
                        @.transpOrder := void;
: q8 d3 W9 `- P. u) `, e) Z  w2 |                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
4 H1 t. }8 T& g- M! D8 H( T                                @,root.eventcontroller.simTime);
6 B( t5 D* X) Z+ Q                        @.HasOrder := false;
- H8 S: x  E, ?$ G/ Z, t                        @.DrivingHome := true;
+ x! U) K" ?* Q- g                        rgManager.tryToStartTransOrder;
! w3 u$ v& S5 H( ^                        if @.Destination = void
3 c1 V$ g6 N) Z0 v7 Y9 h                        then -- no transport order for vehicle @; L# `$ d) z) @( f4 o4 Z
                                @.Destination :=5 M+ e% B/ W5 I6 {9 W. U
                                rgManager.nearestFreeStation(@,track.~);0 ]2 K4 C  e5 P( |8 D
                                newDirection(@);   ( f- P: T; s3 ?4 L2 [! C. J, j* u) |
                                if @.Destination /= void then; j/ U. C" }3 V' Y5 Q
                                        @.Destination.NumReservation :=
4 ?$ e" ?$ L$ _3 Q" ~- V                                        @.Destination.NumReservation + 1;. N+ f8 B; B7 y! J6 e
                                end;
+ {* [7 N# t8 B" `7 T/ S% a                                @.CurrIcon := "drivingHome";
5 l" Z% a8 [5 \  e$ K: v                                @.DrivingHome := true;0 j9 f2 A, |% d! H, a
                        end;7 I- E+ }! A% L6 T
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
4 _; G  k( c0 M# ^* ~                        part := @.transpOrder;. M/ L# C: `8 b5 J0 [
                        part.move(@);-- load part' L, Q! d$ A% i) X6 Z
                        @.CurrIcon := "load";% E6 h7 h: R% f
                        GlobalDistObj := part.globDestination;
$ k/ R) u; s, k6 s                        assignLObj := rgmanager.rgAssignL;
" o  S" F( \& Z9 V$ T: ]/ s' T% X                        row := assignLObj.getRowNo(GlobalDistObj);" S- V4 l7 ~# C7 E
                        if Row = -1 then -- since 70
; f+ _' s, g$ F                                if lan=1 then3 S9 g3 o. W8 P1 R* Q! p
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
8 y  `% R) c1 v9 e7 @                                                to_str("in der Andockstation: \"",?.~.name,"\""));
9 C3 i' V! ^( V                                else
# x& o: t" m& E' V7 J8 F                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),: T2 B# r7 C* `" f, U" X
                                                to_str("in docking station: \"",?.~.name,"\""));                                / x: ]$ g6 n; z  ~: {; |1 a$ X1 R
                                end;8 E% z- W5 ]5 E3 E! @
                        else; }9 j6 R2 Y" E3 |! o/ F
                                @.Destination := assignLObj[1,row];. e8 I0 ^2 z# e; F
                        end;                        , ~  p: T& M" D3 c" ]; c% ]- [, j
                        newDirection(@);& F0 I4 I1 i( Z6 Q5 z0 K1 D
                        @.HasOrder := true;
; ^4 M% |- R+ ^/ z                end;: J+ K8 B5 r# @$ z
        end;6 t' P# Q8 z8 G
end;        -- of the method; l3 q8 _# k( T4 P
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
4 c5 I! S7 g0 q4 n4 S/ O0 {# ]1 M: @' M% H2 x  B* `! c# M
这是AGV_putin中arrive的method。4 @# L6 i  H0 Y2 s
; q8 E. R! I0 H3 G
当到达物料速度越高时,这个报警更多,9 a( Y, C; S4 b7 h: [; U3 u7 C
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。. W" M$ V& f- z
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?, g" D7 a, X% s8 I

6 Q5 ?3 N' {% D$ h4 y! n  p. F8 ~另外一个小建议,就是move,所有的move都可以这样
  v4 z+ ^3 C; O0 q1 [5 [6 |, H1 o* Eif not move() then debug end% l. U8 l  l% p# S" z! y( ?$ K
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
6 ~5 j6 Q: W2 M; f' uplant simulation中的free libraries有AGV模板,
, }  F1 {5 l0 d6 S' E' Q! T里面也有案例。& `5 T7 J$ K2 F) m1 m& \, N% i
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
# c* W3 W( q& ]$ O; R! ]4 _; l; l+ R; E% N" I9 a
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
' p) L) d7 o" H) |' A  q2 j* z: x6 h( f/ Z& o% }& d7 j3 {
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 + c" m/ L4 }6 k) B6 f8 n
这是AGV_putin中arrive的method。* d9 C; w, A0 f

& ~' k- Z2 m' h3 w# c当到达物料速度越高时,这个报警更多,
" v4 n9 D* t  j9 Z8 _  c9 ~; p& p
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-10 11:47 , Processed in 0.017864 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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