设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10254|回复: 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'% d4 j+ u- B1 t' ?3 [* a, s
*/
1 D( t; \4 E9 eis
  r4 x0 u" u0 u/ y        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
/ i, F7 I- i' h, J; [) r* Hdo  [% W; J4 h+ K# v5 B
        Lan := rootfolder.Internal.Tools.AOLlanguage;
9 ?! v9 s& u/ \        if current = @.Destination -- else return' }9 M$ I2 T  R5 V) R1 ^8 U1 b, ?3 u
        then
2 ], V) o, e1 c! G                @.Destination := void;
6 c2 ~  G" M, ]$ N# m                if @.occupied then
+ u# ~7 T1 V9 u. e+ S0 X$ x                        part := @.cont;5 W2 s' u; A1 z
                        @.transpOrder := void;
* v. l+ p! {9 a" l                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
& ?7 ~% [. L3 o$ {                                @,root.eventcontroller.simTime);
* N" V3 ]8 v$ i8 v8 G6 B" }                        @.HasOrder := false;
$ }& V7 N' k0 F6 k; J" q* e                        @.DrivingHome := true;, q" I5 E, [& T: C
                        rgManager.tryToStartTransOrder;
) z0 Z# `* J  o' E5 p8 ?                        if @.Destination = void) e7 u& n+ ]! Z
                        then -- no transport order for vehicle @, T! D0 R6 U8 L( U$ d6 S
                                @.Destination :=( C! p/ `! V0 ?6 e2 D( m& F& |
                                rgManager.nearestFreeStation(@,track.~);
, I+ n; e# Q; k6 F- A; g                                newDirection(@);   
" M: s! Y4 t0 u* k+ i                                if @.Destination /= void then0 D8 V$ D+ ]' _0 A$ d6 {
                                        @.Destination.NumReservation :=. [! Q6 J; a0 S3 [- f5 U
                                        @.Destination.NumReservation + 1;" l& `2 i! ]8 C' @  P) t+ I
                                end;
0 V, t; K% V( ^* R                                @.CurrIcon := "drivingHome";
. T, S( r7 z! \! k0 A3 a                                @.DrivingHome := true;" i5 b& [0 p6 F2 j1 [, l
                        end;
) w! ~4 G$ h/ o, C                else -- the vehicle @ is empty, both vehicle and part are in the same dock station7 t# d6 G! T4 ~6 G$ H$ t' u
                        part := @.transpOrder;; w* D8 z& z, \$ S1 Y# {: e  Q4 q
                        part.move(@);-- load part
2 m; j0 N8 [- Y                        @.CurrIcon := "load";! O0 B" t3 ?+ F, v6 M
                        GlobalDistObj := part.globDestination;
0 A. P# R) D2 u7 A* _5 o' Q8 S' z                        assignLObj := rgmanager.rgAssignL;# d  Y+ N$ Y& a; Y& ?$ m2 {# F
                        row := assignLObj.getRowNo(GlobalDistObj);
+ e( B' t- E& W+ d0 d                        if Row = -1 then -- since 70
- E6 r0 O  A) \- {' M                                if lan=1 then
4 ]0 S' m# H: D3 h5 {2 n7 r2 W                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),* K" t/ K( E9 f# z
                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 h% a% y& I5 y6 l; U2 s% e9 g
                                else7 Z. k6 D+ \( U
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; x1 x% a$ x. g# J
                                                to_str("in docking station: \"",?.~.name,"\""));                                * k6 ^/ Q! g% E- M" S) U
                                end;
$ N+ P7 H1 M- X2 R  A* ~                        else+ Q+ N5 u) G& V; C+ D; a+ V
                                @.Destination := assignLObj[1,row];% A5 }: T+ X) g
                        end;                       
0 b% c$ ?7 h/ P- s1 y4 p3 f                        newDirection(@);8 M2 q( A/ P  e
                        @.HasOrder := true;9 J5 a; q- Q3 i' D( ^# ]: E" u
                end;' j" L6 T9 @) e7 }
        end;
* e: t! E" b( Y9 Yend;        -- of the method
/ i) X, ~! s, ?4 C5 s- U  ]9 r5 A
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
* j6 n3 D9 I) `1 Q1 K: N% ~1 r3 n
这是AGV_putin中arrive的method。8 }5 Y7 x: B- G7 m( Y. x
4 k/ R' v! H9 l  n8 X
当到达物料速度越高时,这个报警更多,
/ p% M% |- Y! o; f2 e1 `可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
& T) G1 V4 Z2 b. a程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?' M+ `, n3 Q/ U

! s5 d1 S: I( x2 {4 n3 C3 u, R另外一个小建议,就是move,所有的move都可以这样0 X0 w, M1 d; z
if not move() then debug end$ d# N3 q& m- j, X2 k
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
6 v, F- z1 _4 I( A1 M- t$ ?; \plant simulation中的free libraries有AGV模板,
1 s* J* W0 T$ X( ]) J/ ]里面也有案例。4 @* B& f" m* |
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。0 m! z9 M! C) O( o! ?
+ b* O5 y) r! K3 M3 k5 f8 S9 d% b
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
7 m5 e* G1 i7 ]- [- {. B* }: _3 ~+ k
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
1 g- E8 {1 ^8 w* F* E5 R这是AGV_putin中arrive的method。
, n8 p0 C. D" P
2 }- Q5 c& o; Z. \6 j当到达物料速度越高时,这个报警更多,

- q9 |. v0 ]2 t* j7 [6 t另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-22 20:17 , Processed in 0.017980 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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