设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5857|回复: 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'
, e$ Q8 O! S. V1 _: r/ |- a*/! }0 D9 [0 }6 |5 c4 I; W
is
6 |7 j- J5 r) J2 Q        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- {+ s7 Q% D' f6 \* W; F  k/ i
do6 F8 z2 e- Y, c) X: N7 j
        Lan := rootfolder.Internal.Tools.AOLlanguage;
  ~4 N+ F+ r- t8 N        if current = @.Destination -- else return
$ J, T8 h/ p' \$ R& ^6 P( S0 B        then
, C" f+ \, w1 I8 U$ K$ P                @.Destination := void;# J9 [* U3 Y, `, Y
                if @.occupied then
% {$ H7 R8 v- v  V2 t                        part := @.cont;5 F. q  Q2 }; {) c/ k
                        @.transpOrder := void;
  ~1 o, U) g$ Y1 ?                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,: [- U; \1 x4 i2 I7 n0 u  e, r
                                @,root.eventcontroller.simTime);
' Y% \9 \" i1 H( h5 V! q                        @.HasOrder := false;# Q0 G- Y% v# w6 W
                        @.DrivingHome := true;4 t1 u$ K' n+ B, x
                        rgManager.tryToStartTransOrder;8 _" |1 |  ]. J  w& H
                        if @.Destination = void
, p. `  t& S: f6 o0 K$ y                        then -- no transport order for vehicle @
+ F/ p/ \! T/ f/ v                                @.Destination :=; b  p; N$ t# Z/ ~0 ^* E, ?
                                rgManager.nearestFreeStation(@,track.~);1 z" X5 @- Q$ N3 Y  d, t; X7 F1 C: q
                                newDirection(@);   ! x9 y* |. `" D/ V- D
                                if @.Destination /= void then
! `1 }  B2 Z. j2 b                                        @.Destination.NumReservation :=, ?2 v& y$ {! \+ x3 _
                                        @.Destination.NumReservation + 1;
9 w! M* \  j0 d1 f  p                                end;
5 y/ @2 R, h* l/ `' u                                @.CurrIcon := "drivingHome";; k8 c5 ]  K! T" E% q% n9 _
                                @.DrivingHome := true;/ g4 d7 N) ~2 E9 J1 f+ g
                        end;
1 c  i  A* x# n9 {                else -- the vehicle @ is empty, both vehicle and part are in the same dock station3 v  i1 b* j6 g5 L
                        part := @.transpOrder;" E6 c5 B3 L4 o) H& ?1 k: x0 a
                        part.move(@);-- load part" Z9 u% k( o2 P' r/ Y5 o3 S
                        @.CurrIcon := "load";% F5 c( A! g# k
                        GlobalDistObj := part.globDestination;
# l  y; {* H3 F4 x4 D6 p0 B( x                        assignLObj := rgmanager.rgAssignL;
- @( w0 o, P- J+ @' O                        row := assignLObj.getRowNo(GlobalDistObj);3 X2 ?8 m$ G( m- ]
                        if Row = -1 then -- since 70
% K  M/ L, Y" O                                if lan=1 then
1 y& R9 z- k) t9 k                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),6 {" Q# _' ~0 }5 }" ~/ [5 i
                                                to_str("in der Andockstation: \"",?.~.name,"\""));) z% U* }/ l# c. T
                                else& z9 \2 M; g5 b7 t$ n4 {  v
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
5 u8 c+ ~7 C4 i1 p7 j                                                to_str("in docking station: \"",?.~.name,"\""));                                5 y: ~3 a5 Z3 ~' c  u6 d  p
                                end;- Z, Y: f; `' _& ?4 e7 }5 e* W
                        else
8 h4 j4 B  g3 D& Y4 L3 x                                @.Destination := assignLObj[1,row];
4 {( _6 _" o9 O$ @+ D                        end;                        1 F' w' p; ~) ]7 b) X4 H
                        newDirection(@);6 ~1 v+ n$ R" g% W$ a; n1 y& Z" _
                        @.HasOrder := true;0 Q  b( p# v1 T) K0 p4 d
                end;& U+ x5 p% |! Z) D
        end;8 R% L. r! M: o' Q$ D  u
end;        -- of the method8 Y! x$ }1 @( N
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑   }) {4 S) L# F$ @, I
5 @& W7 \& I1 j5 h- O; M- X6 x
这是AGV_putin中arrive的method。1 u! l" E0 ]) ^  C; l; D& c1 X

5 o, n) q- w  \- v* P当到达物料速度越高时,这个报警更多,
. E- c0 w7 g- G* B5 e: h可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
2 r+ q4 k3 v: _4 G程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?8 p# {+ ?6 Z3 A- s2 N, ]3 x

3 u8 Q8 }" W  y& z& z/ a. B另外一个小建议,就是move,所有的move都可以这样
$ {) L8 j& H  y8 d0 b/ u$ |# gif not move() then debug end- O: o# p3 Y& E$ i
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 |/ ^4 e* ~6 ~* a/ l+ Eplant simulation中的free libraries有AGV模板,: S2 M( {3 Z& P- Y! f6 q: ^
里面也有案例。9 _. V2 r- P1 ?# a' B
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。7 z( m7 d8 D1 r% {! u* V

1 @$ q2 {( }- A& V2 |% K3 b* @, P, t我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 & ]1 c! J+ l: q0 z& |2 L% k
' ~7 z5 ]5 C+ l( }
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
! |; b  x1 c# }  L6 x, f1 P这是AGV_putin中arrive的method。* u- k8 t, D( B
4 H5 ?* f" K* x4 A; N2 ], X
当到达物料速度越高时,这个报警更多,

* D" h* `& v0 ?2 n' w' O+ s5 l- y" x) K另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-27 04:47 , Processed in 0.015040 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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