设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7547|回复: 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'; c( o: ?  @3 ?
*/
- }, C- ]! n: X  W; q. kis( a4 O4 d4 S! o
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;. ^  \; c; I- K" M6 a
do1 y- V/ M, x. X, w6 b: ]
        Lan := rootfolder.Internal.Tools.AOLlanguage;/ Z! Y% C$ w( u
        if current = @.Destination -- else return) }3 I. u. G8 c0 N7 O6 @
        then. {* o6 z- J) f
                @.Destination := void;  V, ~2 Q9 H( b% z' k
                if @.occupied then
3 ^, F4 t. ~2 D0 E                        part := @.cont;
8 ?& j* s8 x. v/ V6 F# Y8 W                        @.transpOrder := void;
) {' M! U# J! x% Q& a                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
3 W* q6 S7 {7 M$ g                                @,root.eventcontroller.simTime);
9 @4 b5 A. U- ~6 B                        @.HasOrder := false;
. o0 H; Q5 p5 u5 c- ^                        @.DrivingHome := true;& S# I* h$ j# z" H! q6 }
                        rgManager.tryToStartTransOrder;
8 L) p, O8 ?& D0 M8 T- X                        if @.Destination = void
4 J1 k: U4 K4 s: y7 z5 B0 m+ h                        then -- no transport order for vehicle @
- j# a" q. L' T) A7 {7 `$ g                                @.Destination :=
# Z- C% \" r0 K0 X. Q" c) P9 T! c                                rgManager.nearestFreeStation(@,track.~);7 s/ N: M- h- ?
                                newDirection(@);   + X2 ]3 e+ ^6 r: G0 r3 r
                                if @.Destination /= void then. |5 u3 z' V$ V1 F$ }' ~2 O( S+ X
                                        @.Destination.NumReservation :=$ z9 i& z$ L6 \7 ^! B4 g2 V
                                        @.Destination.NumReservation + 1;
3 \- z7 q; I1 n! f2 O) B' j) i                                end;
+ c  ~* O! X9 R9 ^: f  ^                                @.CurrIcon := "drivingHome";% a4 P% \3 e, p5 @& G& C/ }/ z
                                @.DrivingHome := true;, y6 I1 N3 g+ t2 [# |
                        end;
! j. X! H/ d) k5 M; L( N! T) g6 W                else -- the vehicle @ is empty, both vehicle and part are in the same dock station1 K8 c- M8 ~$ S( d; h4 Z+ D
                        part := @.transpOrder;
* {) V% a; C" H/ o5 p6 X                        part.move(@);-- load part
5 V0 s7 v4 w1 O% [                        @.CurrIcon := "load";) v& o% ^+ y4 _9 _0 N
                        GlobalDistObj := part.globDestination;6 x% T" ~6 D, Z& f/ F
                        assignLObj := rgmanager.rgAssignL;: ]7 |6 s! H* U4 U" {9 s. q
                        row := assignLObj.getRowNo(GlobalDistObj);' j0 H# p- C; a) \7 h
                        if Row = -1 then -- since 70; P. Z: u# E% i0 j& G2 W
                                if lan=1 then
1 ^1 i( O' u3 S! U; ?# u' G7 t                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),1 J: s3 X: ~% Y1 B+ l8 r# y
                                                to_str("in der Andockstation: \"",?.~.name,"\""));" I# h2 a2 e7 O3 A* A- @8 J
                                else, w! R# Z+ v  D! n8 O# F) p
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),* G; H" i8 X( I, ?5 }
                                                to_str("in docking station: \"",?.~.name,"\""));                                8 R' B  G! Y' j/ Z6 d2 e1 `
                                end;# q+ I! z" s% U. i% E- q
                        else! `% }5 q& M1 W+ A
                                @.Destination := assignLObj[1,row];
8 ^" Q1 l  e6 e4 T6 j) k6 M, L                        end;                       
, q! v' d4 }( p0 Q; e1 u7 Z+ |                        newDirection(@);
1 R6 ]2 T* T' O) t6 S& Y                        @.HasOrder := true;
; x2 Q% |( L# I9 `" L                end;
6 u3 f8 [& W" I# q        end;4 @/ B: _5 n2 S- C" ?+ z
end;        -- of the method& S# k# z4 s2 a) s: F" y, k! @
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ! e! i5 N! X& b: X) n6 z

) V0 z6 f4 M6 P0 Q! e8 V这是AGV_putin中arrive的method。% k. P( ]5 B2 i& [* J
! p3 m& N5 P3 ]  m- m: }) T
当到达物料速度越高时,这个报警更多,* u% T/ C6 J: A1 L. n
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( }! ?9 b- Z$ }$ R
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?, G; p, z' K  H2 y8 d% u
- y' {+ L. d9 Y. q) E
另外一个小建议,就是move,所有的move都可以这样
# w: K5 j2 X& i' U* Nif not move() then debug end
4 G7 @3 `5 F2 Q  O2 b/ G  ]这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。! C; a; c" v( s  t' x. S8 B$ q
plant simulation中的free libraries有AGV模板,! ?4 M) Q/ I  I7 [8 u
里面也有案例。$ i1 O0 J( ?7 g8 }+ A
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
& C$ ^% ]+ N6 [+ M3 ?! P( ?- U" c/ b. g- }- y( q. U" J) Z# _* }
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
' l1 T9 O8 V1 Q  j/ r  {9 g& z0 b3 |1 g- [* Q# [
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
$ `* R- J; H2 ^, x/ ~8 a6 x这是AGV_putin中arrive的method。
% M6 \! t  x/ a$ Z, D! A+ _$ E6 I- U+ ~9 q' r$ E* a5 l
当到达物料速度越高时,这个报警更多,
$ i# O: ~+ Z$ g% |" Y
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-17 13:53 , Processed in 0.019246 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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