设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8911|回复: 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) t' d" `* s  N
*/6 W& c. Y8 h! a7 I% T5 f% k. G
is& S; z1 j6 B3 w. d7 d
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
5 L+ f( \) [( c1 v: e, Mdo
# H8 i) K$ G' ^; r+ f$ u        Lan := rootfolder.Internal.Tools.AOLlanguage;" e9 j% p; S, ]$ H4 a: ]' I3 L
        if current = @.Destination -- else return
) j. n3 P4 G8 s2 |8 x' S        then- h  q4 c* D/ ?1 J
                @.Destination := void;2 v  {* A: [9 v$ I( @2 G
                if @.occupied then
$ ]  c9 j2 L0 S3 L' |" R4 I                        part := @.cont;: i+ ?' N: T8 t! ^* s
                        @.transpOrder := void;
* C7 @3 _. ?5 r$ ?7 r) }                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
$ ~4 r) a9 T5 X; R                                @,root.eventcontroller.simTime);1 G2 A' _/ M2 D* f6 }/ T- j
                        @.HasOrder := false;3 q) f/ p  `& a3 X( Z
                        @.DrivingHome := true;
  S4 }. Y( ?6 Q                        rgManager.tryToStartTransOrder;
& e6 w4 }- A, ?1 i6 Y3 U                        if @.Destination = void% N4 f) ?  ^. z" A- Y, P
                        then -- no transport order for vehicle @4 ]  I3 v) t. x/ q9 U4 \0 b
                                @.Destination :=! d/ K3 k& V- P* j9 h
                                rgManager.nearestFreeStation(@,track.~);( B8 ?" k' T7 q
                                newDirection(@);   , c; j: P/ k* {. ~2 ~1 @) p9 x
                                if @.Destination /= void then1 X3 A; \0 D' _  L
                                        @.Destination.NumReservation :=
: q5 M9 X" r6 {3 ~                                        @.Destination.NumReservation + 1;! W# _% v+ ]* Q3 k* Y9 \4 a
                                end;( b0 E9 @: o* }1 _' N+ A. A
                                @.CurrIcon := "drivingHome";$ C0 }% n, p& w" `: i& L
                                @.DrivingHome := true;  j+ Z/ s6 X6 q
                        end;
" F" l) c* ]+ V  [% I                else -- the vehicle @ is empty, both vehicle and part are in the same dock station2 p+ X/ K3 C  J: |8 `2 p% D( L
                        part := @.transpOrder;+ r7 G, i+ E! p. @. N
                        part.move(@);-- load part; g; I% {, o4 a" d6 W, {4 c
                        @.CurrIcon := "load";, u! Y% E! _. `3 j* k
                        GlobalDistObj := part.globDestination;& Y5 D" T- L/ ?
                        assignLObj := rgmanager.rgAssignL;
4 q( b6 _5 u1 V7 @' H: i$ \                        row := assignLObj.getRowNo(GlobalDistObj);
4 @6 T" Z/ f& u0 s5 n5 O* c                        if Row = -1 then -- since 70
( ~7 C1 x  {6 w- F, }$ j                                if lan=1 then
% _6 r9 M3 q/ s                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),2 u) B+ [  _. e8 O: @: `
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
! l7 m/ _% v% r  k                                else" ^; E: C/ K0 R% ]0 d7 h  C  ~
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
0 e2 K8 x6 F7 v" z9 l                                                to_str("in docking station: \"",?.~.name,"\""));                                + k" q0 B; n. _( F# m4 V
                                end;
$ u! p; T4 Q1 A7 ~0 q0 {                        else* A6 E' e9 T! e6 ]7 X) b
                                @.Destination := assignLObj[1,row];
' M: H  z2 u' C/ [9 A                        end;                       
3 d$ X; c8 l& ?) U/ f. j6 }                        newDirection(@);
$ ^5 _3 ]: E9 ?' w                        @.HasOrder := true;
" i# k$ D9 G5 [* T                end;
  k5 I- a( k9 u% j8 K        end;
! V. c7 ^# q5 @9 Lend;        -- of the method
& I1 B+ |' G5 w; q/ F
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
- M% x' Y0 Y  U9 G: N! [) q6 C, Q8 U4 v' ?) n
这是AGV_putin中arrive的method。# V  S- _: y) ~. b7 k3 W) H

* \& v4 D. F* j+ W' `当到达物料速度越高时,这个报警更多,
$ K6 g% n5 N% H0 a+ E8 e可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。, A: F. e, P+ l+ u6 P( }
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
/ a, N" y# n& z+ b0 y+ I2 S3 g5 K  X! R( r5 X
另外一个小建议,就是move,所有的move都可以这样$ P  U. W* l  l- q- g
if not move() then debug end
7 W* Z6 ^# P: e# ~9 x4 j这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。8 a: X% e5 x- \4 f( E/ u! G
plant simulation中的free libraries有AGV模板," |' T! y" I! P0 i8 w
里面也有案例。. o  T: n8 o$ q% O" x
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。% f8 C9 F9 N$ N" ^& H7 G$ w4 k0 q

8 C. h3 t; D- \* [我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 % l& N) ~1 C! }2 K+ G/ g
0 U  f  Y* ]' {1 y0 e
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
; s/ n8 G0 ]4 U- E( U这是AGV_putin中arrive的method。7 t& l/ R: u, [9 u  }

' H+ W1 h( i; C% F& ?+ J当到达物料速度越高时,这个报警更多,
* A& f9 i2 g5 b3 f2 D
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-3 22:44 , Processed in 0.015854 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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