设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6950|回复: 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'7 P/ H. S* V5 _: q" `0 V: n3 }
*/* J  v2 x* N/ b- [
is: f" h. K6 o) b0 _
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- v' t* p, l; B7 {
do+ U' p! H* j2 ?% {1 O3 }
        Lan := rootfolder.Internal.Tools.AOLlanguage;0 L# F! J3 _$ z2 a  \2 x9 D
        if current = @.Destination -- else return5 {2 }. p1 t2 U( W; j
        then
/ F5 O0 i: [3 e3 \# f, Z" f                @.Destination := void;& f" o$ l1 s$ x# E& W
                if @.occupied then
1 ^3 d" N( S( J- i% |                        part := @.cont;' `/ D  p6 X% w. Y: \
                        @.transpOrder := void;
6 y$ v* m1 `5 D( X) f4 l9 R                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
: `0 s: \, k$ K/ \5 t$ ?+ e2 C" H                                @,root.eventcontroller.simTime);/ s) t3 B" \  {
                        @.HasOrder := false;
1 C8 w: e7 m5 m9 |+ T                        @.DrivingHome := true;% b- R% _. x, W# ^: ?
                        rgManager.tryToStartTransOrder;
$ _+ z' Z3 o+ Q! o' W  Q                        if @.Destination = void
- f2 h4 z) s7 j0 J. I" ]                        then -- no transport order for vehicle @
6 n; S8 O* ]) l) S( G$ z5 @                                @.Destination :=9 t" v' A4 C/ a* R
                                rgManager.nearestFreeStation(@,track.~);1 U9 l$ U6 C! |9 I  |" H$ c
                                newDirection(@);   
9 L5 _$ s, j9 a                                if @.Destination /= void then- x3 F" ~5 R+ e
                                        @.Destination.NumReservation :=# }' {) }; ~7 Y& i2 L: {
                                        @.Destination.NumReservation + 1;, e; U, V$ ]7 I8 D# l1 p) k
                                end;6 w$ K, t. Y, J+ ~* h
                                @.CurrIcon := "drivingHome";  J- i+ k! ]+ N6 U
                                @.DrivingHome := true;
5 i$ [3 M' J* I+ K. z' X. m! V: W                        end;
1 b/ }1 x% ~# ?1 ~                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 I( D& R. m( n3 _3 g
                        part := @.transpOrder;
4 |( M: o& U0 q4 Z                        part.move(@);-- load part
( A0 F0 y6 V5 Q1 J                        @.CurrIcon := "load";5 B5 x3 o9 R7 C2 E% J! i
                        GlobalDistObj := part.globDestination;
7 }* L+ B3 i, a                        assignLObj := rgmanager.rgAssignL;
( n2 G" v/ ~. O% Y3 K; w7 J2 k4 `                        row := assignLObj.getRowNo(GlobalDistObj);
4 L) H) m2 [+ O" D) h                        if Row = -1 then -- since 70' A3 ]" F1 K$ O3 |2 _& I/ l- ?
                                if lan=1 then  Y0 ]$ m. X6 R& v
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
2 P' w; N. g3 Q                                                to_str("in der Andockstation: \"",?.~.name,"\""));
6 w$ M9 H) E2 D; a6 d5 P' w( S% m                                else
7 K1 H1 I  |0 O- n/ v! r+ q                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
( Z- z! l/ E5 X! W' N( n                                                to_str("in docking station: \"",?.~.name,"\""));                               
2 W4 G# ?& z; \# C0 r8 Q4 H" x                                end;; ]  y+ S( D: t" n' K) O! q
                        else
, G: j: l0 C* |, |3 S                                @.Destination := assignLObj[1,row];
8 O0 u5 p2 J$ @. u( B                        end;                          D" a/ c, d1 g/ c8 R
                        newDirection(@);. L0 ^" q$ z7 M: w/ W
                        @.HasOrder := true;' }! D& t' |# J
                end;% C/ u1 l$ J4 q, D2 \
        end;
, v: V* [2 E& W9 p7 U6 W& Xend;        -- of the method% b- w7 }! t4 A5 ]4 Z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
" B7 i5 N2 m1 H2 Z/ c9 n7 [. m: C+ \2 Q7 h
这是AGV_putin中arrive的method。, r  v5 p  N. b( _: L

6 K( N0 Y# R1 ~) |当到达物料速度越高时,这个报警更多,
- i( {, _3 m0 `* H可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
+ e  r8 P: t, ~5 ?) l9 R程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?7 v  |; p+ _7 @- ^

2 V6 m' o- {5 k5 _4 r3 O! \/ W另外一个小建议,就是move,所有的move都可以这样
$ a  r! Q2 v8 h6 B& C- t4 a7 Zif not move() then debug end4 \3 H. I7 C% _  Z$ l% e9 W5 F
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。/ U) a8 @' Y9 Q3 G9 _' ]
plant simulation中的free libraries有AGV模板,& E$ J6 K. F3 g8 f
里面也有案例。5 ~2 I/ Q$ w4 F2 u4 Z1 [
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。! E" y6 [9 d: C( W; R) T
3 D" e% A  A: Z1 G# r& C8 n/ W
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
9 b& z/ }& L7 C# f8 {
. b" s! O* Z/ R那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
. \+ U- N, u' z0 u3 B6 V4 o这是AGV_putin中arrive的method。7 B2 V$ W4 l0 ?9 `

% f5 G! h5 i2 h. g  Y/ M' n8 K当到达物料速度越高时,这个报警更多,
5 ]+ [( `" [/ y, G+ `+ r
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-7 20:40 , Processed in 0.018376 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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