设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9889|回复: 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'5 Q0 U/ y, M; U5 |9 ]
*/, g# o( l3 H* [
is
( a+ }! F$ Z% ~2 {0 ]        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
" o% S8 c! B$ s- A6 c0 t$ \do0 ^9 L8 ?8 q0 A1 ?+ L
        Lan := rootfolder.Internal.Tools.AOLlanguage;. _. m' R# S  j! b
        if current = @.Destination -- else return8 Q3 t* A* u+ ?7 `% W  _9 Z5 E6 t
        then
2 n9 t$ U0 v0 M# M                @.Destination := void;
! d# |/ M& C* S' B1 E/ n* U                if @.occupied then
. P4 w, h& k. p8 P  O; b                        part := @.cont;
( p& t+ ]1 y7 Y# T: I0 J                        @.transpOrder := void;
% x1 D4 V6 ~# b: l( K                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
/ b3 Z( [5 o+ I                                @,root.eventcontroller.simTime);
, P: Z: m& E3 d/ X  i/ w                        @.HasOrder := false;
/ J) f! G1 h: X. }5 M( F" D$ B                        @.DrivingHome := true;4 Z' l- {) e9 N' o# Y
                        rgManager.tryToStartTransOrder;: T4 v& p' i  ?) G4 B
                        if @.Destination = void: t0 V1 Q+ i* }9 y3 H0 I
                        then -- no transport order for vehicle @$ c% c+ Z$ t: o. W. H
                                @.Destination :=3 C5 }  h) w/ M, T; K4 K) ^
                                rgManager.nearestFreeStation(@,track.~);- }; |( s8 ]# v* N( k
                                newDirection(@);   
. |9 f% c$ O1 y' L7 c7 m( i                                if @.Destination /= void then
1 K( A7 i) v. C8 m! v                                        @.Destination.NumReservation :=
: Q( M; P2 P. S5 E$ Y# a                                        @.Destination.NumReservation + 1;
7 H  M3 R' x- S) b) T* y6 V* \                                end;
, d7 j: j" g. t; D$ I                                @.CurrIcon := "drivingHome";+ n9 P3 S  I) S& a2 k! A
                                @.DrivingHome := true;7 A- k; R- r  y+ k  k. A' d
                        end;
+ r  K+ Q" A/ ^                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
3 m$ l5 w' t; G2 N% f                        part := @.transpOrder;
, O+ R* s# b4 x8 `8 N                        part.move(@);-- load part6 b; F6 P+ P: T6 d
                        @.CurrIcon := "load";
# s' J- C% f0 G: M                        GlobalDistObj := part.globDestination;) k$ y; T! D& M7 R$ I0 P
                        assignLObj := rgmanager.rgAssignL;* `7 b, O5 o  {
                        row := assignLObj.getRowNo(GlobalDistObj);
- r' k9 n; B, [- ~! k! {& l                        if Row = -1 then -- since 70
# w: `* Z% f) m# ]. L) p                                if lan=1 then
% ^. v% q' z/ X( _8 ~. a                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),. ~' ~2 r" u6 E, ?4 P. C. J8 v
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
! ~) U3 m0 L( r& ?2 R6 C6 k                                else
& [' o/ n2 b. k* q( X1 }& Z                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),5 R6 m7 o# w7 g8 T5 z0 |* |
                                                to_str("in docking station: \"",?.~.name,"\""));                                ' g8 y  K) v5 ?
                                end;3 I* b& h6 b7 l7 C
                        else
) w/ X& z* u% B* z" J2 Z                                @.Destination := assignLObj[1,row];
4 P2 ?) X! [1 Y$ Y                        end;                       
( z1 Y, A1 R3 E3 H- i                        newDirection(@);+ o1 N; T2 d  |; L* p9 {% Z
                        @.HasOrder := true;
' z8 z4 t' d, c) y( _' z" X0 l                end;+ d; P  Y4 g8 e3 F! ]
        end;2 f/ @4 h; W% H$ k! p1 T* ]7 H
end;        -- of the method
( Z. i" ]9 v( G
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 0 n# o( ?  p6 M* z. e* ]
+ s6 p" [1 b: d1 q
这是AGV_putin中arrive的method。' K4 Y! d: N- M7 {- M" B, |8 q% w
+ E; Z* L; A2 a0 |! n  P
当到达物料速度越高时,这个报警更多,$ q7 a2 h( ]. _  t* n
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
$ E2 h3 i. Q& P: y4 t6 R程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
3 {. m2 d! B9 ?+ b2 L* y8 y, a2 o* H/ [
另外一个小建议,就是move,所有的move都可以这样& r3 j' r- `* L9 b+ T0 [
if not move() then debug end2 s2 h+ W  [& t8 j2 N
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。' n# t8 G9 R- X8 N4 V
plant simulation中的free libraries有AGV模板,6 K3 V2 ?. P8 N, j  Y
里面也有案例。
3 t4 y) |& e+ Z$ ]- K3 W0 {我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
2 L0 s* g/ s+ i& X% {/ D
  v6 B; F; r( q) o0 Y: p我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
( g6 {8 R2 x4 Y5 W; d! m% h, [
" u) W' I+ V& [5 ^9 T0 i. \; n1 D# b( ^那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 0 f) A6 l- L1 l
这是AGV_putin中arrive的method。
) _  r: K5 P$ l) \% d
; t" O* E" p5 z6 f' X0 d当到达物料速度越高时,这个报警更多,
  W9 F3 S& G5 l% F% y. K
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-31 19:13 , Processed in 0.020942 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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