设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8412|回复: 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'* N  r% I1 {* i% e- A: W) ]
*/, M7 M# R' k3 T* s" t% I" m# N
is
3 o4 f, `5 N+ Y        part, GlobalDistObj, assignLObj:object;row,Lan:integer;! E! k: k, |! K" I2 X7 e
do
( w& W0 l9 d9 R# A$ B7 \2 U        Lan := rootfolder.Internal.Tools.AOLlanguage;
- A8 c2 h1 }. I0 a! w( x        if current = @.Destination -- else return/ {: V8 z+ D6 X- a6 |
        then
% F9 _5 A1 B: j                @.Destination := void;
  h+ Q, A0 w6 ^; g  q5 @4 X                if @.occupied then$ o2 w+ J  \. D0 K" |3 a: ?
                        part := @.cont;
4 Y5 ?: N, ~( ]9 F                        @.transpOrder := void;
9 s' ^( g: Z. c' _* c                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
6 t8 C7 U& O' C1 ~! T                                @,root.eventcontroller.simTime);; m+ i& \4 R! X$ m: O: W3 m
                        @.HasOrder := false;, b; M. z. T2 H4 ^
                        @.DrivingHome := true;$ y$ ?+ L) z3 P8 o) J
                        rgManager.tryToStartTransOrder;
4 E2 Y) M; E+ u# W                        if @.Destination = void9 r) O+ b5 A5 t8 H. j' A
                        then -- no transport order for vehicle @" E) ?6 t3 }7 s4 X: u6 ~: U
                                @.Destination :=7 i  X: K' {0 Z* j+ z/ U# z
                                rgManager.nearestFreeStation(@,track.~);6 q+ O7 H8 M0 P$ V' M. A
                                newDirection(@);   ( {/ m5 \% r7 p7 a' `2 I$ T, D
                                if @.Destination /= void then
2 ^# a& F" i4 H/ r2 t* h. }" _, Y" n                                        @.Destination.NumReservation :=
" r: v4 F7 T: K3 A8 ]- G/ u$ m                                        @.Destination.NumReservation + 1;! }" k; g1 G$ O2 k: J7 v
                                end;
7 ]. b2 o6 f/ J. G& Z, Q+ U, M8 W                                @.CurrIcon := "drivingHome";- g5 k* ]. D) I) W" t$ e
                                @.DrivingHome := true;
$ A. l5 U& Z' g; e* V; Z4 D3 S9 U/ I- k                        end;
; P, a, t( h+ U3 N; ?5 g& {: h, Q                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 d% i+ f/ F# I* p8 Y
                        part := @.transpOrder;
. b' r7 j( r4 D+ Y8 J                        part.move(@);-- load part
& b' g  ]6 _8 Y3 y( L                        @.CurrIcon := "load";
+ {7 [5 U! R) w! z                        GlobalDistObj := part.globDestination;
# d6 ~6 G3 W4 e                        assignLObj := rgmanager.rgAssignL;
. t& P* a5 w5 y$ ]                        row := assignLObj.getRowNo(GlobalDistObj);! Z4 o6 q; e# B; g5 h4 ^  C
                        if Row = -1 then -- since 70! O) q9 G- v: P7 ^
                                if lan=1 then" a$ h( Q; h; }
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),4 N  }" c. G5 e: D
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
. c2 q0 y5 B) ^, o1 c7 Y                                else8 Y2 o' W- R7 P7 z3 T4 |: g% r
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),/ d1 |1 i) b/ c
                                                to_str("in docking station: \"",?.~.name,"\""));                               
* o8 [  g' U- }3 X5 o                                end;
2 R' n2 T- O1 R6 W' C2 O                        else6 A3 d5 {0 R/ Q* `/ i4 ~* h; T
                                @.Destination := assignLObj[1,row];
# z3 u) Q* `2 ^2 \$ t                        end;                       
" t: Z  f5 G# m8 x% }1 w* {                        newDirection(@);
2 m. Q3 S+ X, ?. K                        @.HasOrder := true;9 G: ^0 v# f4 J) _- ?5 ]  r, ?6 }1 @
                end;
+ V9 q6 P( O% R9 O! G; R" i3 ]        end;2 e+ t4 {' ?9 M  x4 Z
end;        -- of the method
5 B9 u& }0 Y: [
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
/ z$ G" J1 j- e3 d" t$ D7 E& f7 H) G- |! U2 @) W- Z8 f* L1 w2 p
这是AGV_putin中arrive的method。
) `0 e0 M  O! V
. r. z8 J% m# p7 R9 Y当到达物料速度越高时,这个报警更多,9 `- ]: M; T+ O, r! r( ?
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
0 d% N4 |, I& ~3 B: l" D: g程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?" p; d: L, V- P1 Y8 K

0 }3 ]3 l. p$ e4 N另外一个小建议,就是move,所有的move都可以这样
, k# ~8 Z3 P- ]  `7 Pif not move() then debug end& O) W! B/ y* x; h: D
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
' |8 G9 S& O$ |0 e; I! Dplant simulation中的free libraries有AGV模板,: H% R. `8 _* f: f5 X& S- g+ ^9 k
里面也有案例。
6 f, c9 {7 a8 n6 n- D, F我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。$ V9 S7 C- a* Q) y. n

- o" }0 N+ X4 s1 {+ Q2 j* C我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 7 g; E( q, W. p3 K8 l: n( B

  N; g* z1 n/ o0 M1 @0 q* F& T那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
! @* _) F) f+ M# T: J6 [这是AGV_putin中arrive的method。9 e# b; |1 d& s0 O! J% ^. @

, |" C% \* W9 d  v3 q! r当到达物料速度越高时,这个报警更多,
& n; f( w" Q, r6 t( Z, @: _8 C
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-2 07:02 , Processed in 0.015172 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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