设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9459|回复: 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') A; z* }3 u4 _0 V1 Y. T- {' D
*/
$ G' l8 \, }2 His2 J6 ^+ F  p4 K3 h2 _$ W
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
5 Q  _+ V" h+ ~  ldo
+ H9 J* d# I* @& E4 K% H6 D        Lan := rootfolder.Internal.Tools.AOLlanguage;
* a2 w: M' w9 M8 R6 r2 D1 W8 Z4 a        if current = @.Destination -- else return
5 d. M2 U, b$ ~4 b        then8 l. }8 h7 G1 Z  a4 G9 M
                @.Destination := void;
, D3 u; m. g) t: {- ]6 A                if @.occupied then
' t4 B/ J6 x* K; p) i- s: L; g                        part := @.cont;
. A5 M9 B4 P- m. V8 |. I                        @.transpOrder := void;
$ P! p# P* J- y! }% B( d                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
' p4 f; y2 J- r0 V9 j# V; {( v                                @,root.eventcontroller.simTime);
  }6 G; {; K, ]                        @.HasOrder := false;2 C3 J: t# ^6 N! ?" n& N8 F9 }  t' Y* x
                        @.DrivingHome := true;
4 k7 ]3 x7 [  K6 p1 O                        rgManager.tryToStartTransOrder;- p; a7 ^% B$ }+ v
                        if @.Destination = void& d9 @& b  r$ X% h$ y
                        then -- no transport order for vehicle @( M' `) P: ?7 d& T, E
                                @.Destination :=0 f+ p( E8 U! @. b+ |! [
                                rgManager.nearestFreeStation(@,track.~);4 q! s! f$ }& ]( I$ i
                                newDirection(@);   
0 G! F0 L/ z3 b                                if @.Destination /= void then% b6 Y3 u, f" F# j7 A* J/ A! {. J
                                        @.Destination.NumReservation :=
- K5 s8 a2 J  {) t8 K! `                                        @.Destination.NumReservation + 1;6 ?/ ]2 E1 x+ V  S
                                end;
' n; c, @2 A3 L7 r  B% N8 ^2 s                                @.CurrIcon := "drivingHome";
: ~& m4 m9 w' [  e                                @.DrivingHome := true;
$ x6 [% ?0 D' t6 W                        end;0 U0 g  h4 m: X5 x( P' D7 ]
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station4 R6 o- z2 r, l+ S7 ~# s" \$ `& W
                        part := @.transpOrder;
% U" Z! L  |: Q' Y                        part.move(@);-- load part' F9 A) x0 n  M6 d3 [* P, r* v
                        @.CurrIcon := "load";
7 d# X: u" W- k9 {  I$ f! @                        GlobalDistObj := part.globDestination;
3 Z; A3 _3 v7 q& ~" R                        assignLObj := rgmanager.rgAssignL;
$ J$ z! `/ ~. w. H  v4 V                        row := assignLObj.getRowNo(GlobalDistObj);; G. A( v2 |0 D, u6 Y
                        if Row = -1 then -- since 70
( Q; D6 P8 U. O) Y9 p2 o& T% j                                if lan=1 then
# n1 V* p7 C6 z; W) d& n                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
; S0 v8 J. v/ W& t                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 E0 y$ s* G5 f
                                else
" `- b" E/ F' G* I! G/ v                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
% j8 `+ q$ Z. z) J1 G3 }% |                                                to_str("in docking station: \"",?.~.name,"\""));                               
$ w' Q/ o7 q3 R% i. t; j                                end;
0 y9 M9 c1 y5 Q                        else" k, f9 F: b, Y4 A0 e5 s
                                @.Destination := assignLObj[1,row];1 `$ {% C% A9 l2 `$ b
                        end;                       
* x6 j$ K1 Q& p/ a  m$ p) ]                        newDirection(@);+ M2 }+ q0 A& o1 ]( p$ T5 {
                        @.HasOrder := true;3 z8 Q9 \+ M6 o
                end;
" ]9 s1 d( [' Q* s        end;
: ^5 a' x2 r, y) H# Q. \9 kend;        -- of the method6 q( L$ `. D7 p- j, l! N+ r
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
4 i) C% Y  H( T: k, \. i' U
' R2 A+ p" f- d这是AGV_putin中arrive的method。
. x7 g' F, e; `- c1 ?+ F2 w: K6 H. m6 D7 {& H) h
当到达物料速度越高时,这个报警更多,
2 E! W' p, U  k; E可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% R2 j' l. W& i程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
3 D* _  h6 g. Z( o3 L0 W6 D8 l5 `. l* c! c: z  k8 g
另外一个小建议,就是move,所有的move都可以这样
, V/ B8 ~6 ~; T8 uif not move() then debug end. `  g# R* v) |8 _
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
. C* S7 O& x& d3 {+ I; I3 uplant simulation中的free libraries有AGV模板,, x& n! X: c( m/ F, A
里面也有案例。
9 U6 Z6 }5 g2 Z2 d; R& N) u我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。) N1 T0 U  K1 I

9 f3 M2 X# v/ z! V' z3 r我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 1 u2 ?  |& p- E! O5 s
# J0 q5 W$ m7 G% h: w. ]
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
7 {. z. Z0 n9 X; ]9 Z9 j& b这是AGV_putin中arrive的method。
6 I9 D5 U0 P7 p, L; S" D; M9 t
" q& A" o1 X+ s; j0 t% E: Q( x当到达物料速度越高时,这个报警更多,
% T; V) t9 _) ]# R- }
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-2 03:30 , Processed in 0.019798 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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