设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6471|回复: 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'
* D; v( }0 a% g*/
/ s1 Y5 ]) w3 N/ kis) g, M/ Z5 N* A9 w: E3 D' m4 t; t8 O' g
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;6 x/ o0 v8 T  G$ a0 c
do. G% h) l( X6 U6 B
        Lan := rootfolder.Internal.Tools.AOLlanguage;" b0 Z1 B) M  S: \* H
        if current = @.Destination -- else return. y9 h3 n1 v( G2 F: o8 B& k
        then& `$ J+ n& V. x$ p8 P+ W* W
                @.Destination := void;
9 |* _; G% q( k9 S                if @.occupied then% q! g" z3 m) Z$ Y  U
                        part := @.cont;7 G7 B* M( C5 T' S! q$ C
                        @.transpOrder := void;% H3 b4 a* [& Z. N  M9 v
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
) m2 I* R+ p( _                                @,root.eventcontroller.simTime);& u8 h; A4 |2 j& p
                        @.HasOrder := false;
& W; C$ j( p) r. x% ~' N+ V# a                        @.DrivingHome := true;* a; R! k# `  S) p
                        rgManager.tryToStartTransOrder;
" Q8 I) {: \. Z; |8 ?5 x                        if @.Destination = void
5 e" @% n9 v5 t/ X2 x                        then -- no transport order for vehicle @
. H" L- }# ?- t$ j                                @.Destination :=$ |) E6 }, w0 J$ j5 M: s
                                rgManager.nearestFreeStation(@,track.~);8 Q8 X/ h' |8 A8 Q! [# w
                                newDirection(@);   + ]$ e3 H8 p2 _! ]: X  c' K1 b
                                if @.Destination /= void then
- q6 q8 m0 _5 w  Z" z" u                                        @.Destination.NumReservation :=; H: k3 Z3 A: V# h
                                        @.Destination.NumReservation + 1;# Y: x7 l6 f8 ]$ u5 X% L
                                end;+ r  Y; k. q& [( U% A
                                @.CurrIcon := "drivingHome";; I! R+ U$ k8 t+ j
                                @.DrivingHome := true;
* N4 e0 S; x: V/ U4 T                        end;; [! s% {! y- ]- x  M
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station( s, @5 o% F- y
                        part := @.transpOrder;  G* D; s' a; S
                        part.move(@);-- load part
+ N( \% q$ E* X' O# d! @                        @.CurrIcon := "load";
0 R8 _" u7 K# _9 @6 _1 g                        GlobalDistObj := part.globDestination;: g6 s9 B: x0 `5 P
                        assignLObj := rgmanager.rgAssignL;
3 v0 t0 Q5 @* n8 P                        row := assignLObj.getRowNo(GlobalDistObj);
# }; s0 f5 o- E7 N2 n                        if Row = -1 then -- since 70
* r" v" p4 ~5 q% h) g: Z                                if lan=1 then% D0 |8 T7 V1 e
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
8 }( s, [2 b( @# q2 h; [, l5 X+ y9 y                                                to_str("in der Andockstation: \"",?.~.name,"\""));
$ t* s1 p, m7 F& }1 c0 G+ A                                else
6 m7 F, y: S" H3 N% t7 x                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),. h) H, K6 G# U+ q
                                                to_str("in docking station: \"",?.~.name,"\""));                               
7 s+ W  }7 h, B5 u, \# x1 K6 Y                                end;
# q+ V0 |" z7 t+ P) i                        else) z) b; v0 M; p
                                @.Destination := assignLObj[1,row];: ?$ Q2 [- J8 E0 R* Y/ T( J+ g6 J
                        end;                        # e# m7 a" y# g3 O
                        newDirection(@);
" k: g% T8 _5 G, K( n6 j$ ~                        @.HasOrder := true;- ^' I4 ]2 e( u+ T
                end;" q" e0 u! i  @. Z1 g& @
        end;
3 L) H' ~+ ?1 u. n- Vend;        -- of the method
. u3 l0 I9 z; u! Z/ t/ C
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 7 g! q7 f0 t. e% L4 l( {4 Y" a

0 y- e- y& h( N- U( J  k) X) U这是AGV_putin中arrive的method。3 s* G# Y0 ?. H  z7 ]8 v4 }
9 ?5 S- g2 b. L
当到达物料速度越高时,这个报警更多,! u7 k3 i0 |6 Y0 s8 ]
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
' \; x* S5 o' r) L/ t  S3 U$ v程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
( V2 C' W6 j5 U! d
4 c( X/ v& ^  j6 c8 ^" E; M! G另外一个小建议,就是move,所有的move都可以这样
( t5 c+ B* `% Iif not move() then debug end
. Z7 K% A! C+ p+ K: |5 a这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
* q8 ]$ ]8 j) E4 G, Bplant simulation中的free libraries有AGV模板,. o7 O; |; E3 [4 p
里面也有案例。: }8 A, m4 b1 ~! W4 |$ T3 g
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。; U1 n/ }0 x8 s! S! t8 R; v
) v9 \. F: Q7 r2 B
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 4 ]# _' Q( ~4 e3 v$ W
. N( U) j$ q, R  ?, |: p- B$ L
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 * S3 \& C) M2 x2 g  u, Z/ H9 r
这是AGV_putin中arrive的method。9 b/ I6 ^0 K. F$ e% A4 e$ G9 G

5 n5 l9 ]% g, v( N5 p! L: {0 w: k当到达物料速度越高时,这个报警更多,

" {" U& m; l. i1 b另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-8 17:41 , Processed in 0.018808 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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