设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7997|回复: 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+ _. D; G6 [. ]7 Q) i
*/; W' l( x0 d8 ~
is
& I  U* K8 k# C5 ~        part, GlobalDistObj, assignLObj:object;row,Lan:integer;5 X# d. e' V3 Q- |8 ^& N
do
- u6 c7 J( b: H: A8 X9 V. @) E2 w        Lan := rootfolder.Internal.Tools.AOLlanguage;& a7 G! h3 D' d. {8 p% C
        if current = @.Destination -- else return
2 V5 K: G2 n  u# R3 e; `        then
; v* C! n4 F7 d$ ?/ G                @.Destination := void;/ F! y4 E0 T2 f- _
                if @.occupied then# @7 R  ~& |/ n' K# u! C' W
                        part := @.cont;
' b  P1 u% e: A9 V                        @.transpOrder := void;& j" ?+ T6 ^& J; Y1 A! u3 F  d+ x& [
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,3 h6 W6 F: r) F
                                @,root.eventcontroller.simTime);
7 m  M7 D. j; I0 p* ]                        @.HasOrder := false;
) W9 ^% p  z- \! e                        @.DrivingHome := true;
; l3 b9 m' q! ^& X0 I" G                        rgManager.tryToStartTransOrder;
% |$ W3 ^4 v6 p, \                        if @.Destination = void
( M- X+ e8 M6 _2 E# L                        then -- no transport order for vehicle @
! j* R# b; \# Z/ f# {                                @.Destination :=$ s. ^5 [7 u& H8 S/ q3 i+ _+ V
                                rgManager.nearestFreeStation(@,track.~);
9 j/ |9 ~, _; b* T! ~0 J) @0 H                                newDirection(@);   
  a4 C4 q$ G: O) z& L) c0 Z                                if @.Destination /= void then  F; x' m' h0 W; W) q" @& R: E# g
                                        @.Destination.NumReservation :=& b( b% `# I' `$ J
                                        @.Destination.NumReservation + 1;
! v! ~# }$ ~! A+ O( y  c8 }. ?                                end;
' C$ a8 u3 b( d( K  p                                @.CurrIcon := "drivingHome";
0 E" [. x* b; N/ H6 }                                @.DrivingHome := true;5 m; c! E: }; n( g0 S+ C% T
                        end;
9 Z/ E! h  m& _, f) f: P2 B4 I* i                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
5 T. S# [; d3 l' S. M                        part := @.transpOrder;6 c9 y1 ^/ G& m. R. S
                        part.move(@);-- load part
# t# }/ n4 b, n+ A! h# P) y% V5 b                        @.CurrIcon := "load";
) t7 ^( T6 ~, l" L) ~                        GlobalDistObj := part.globDestination;; `) k" r% P; c8 r
                        assignLObj := rgmanager.rgAssignL;
2 k! m, D' d2 ^8 y8 D                        row := assignLObj.getRowNo(GlobalDistObj);
( r0 r% ]  a: K) z* I# O, a                        if Row = -1 then -- since 704 d4 m9 E  c3 Z, B5 Z4 g. a
                                if lan=1 then
, _3 w! X% q5 m9 Y7 Y- ^6 y                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),1 N5 u& D: C+ T3 Q7 b4 C
                                                to_str("in der Andockstation: \"",?.~.name,"\""));% Y9 n6 z  T& {1 R' c; |
                                else
2 L# J' c6 O4 S1 P8 \' O6 M" E' G- ]                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
3 a1 G) d8 Q5 l                                                to_str("in docking station: \"",?.~.name,"\""));                                9 Z7 }3 {3 C( G- f1 [2 o* w/ M
                                end;
9 L( P8 o! Q2 X7 B' K4 z2 {' [+ N% `                        else1 ?4 Z4 Y" s1 D- {1 G, L/ C, i$ k9 ?
                                @.Destination := assignLObj[1,row];
$ a; m" }0 U7 ?4 w  D                        end;                       
7 X! E! o$ g) T2 Q6 |) A                        newDirection(@);
* ^2 i( n8 L- }( B' ~. u% a                        @.HasOrder := true;
1 W$ o; X& i$ D. m4 h: h                end;, j! j- ], Z  i
        end;' }5 ~, `2 R# L5 v2 |. P
end;        -- of the method5 l: o# q- y( a) H$ e& b6 ^! i
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
3 T+ G+ |2 f& E( v0 W$ Z2 ]  t2 ?5 q
这是AGV_putin中arrive的method。
4 I6 S! i% M6 W) @' r& i9 Q
  c) u# j, f" V当到达物料速度越高时,这个报警更多,
' y6 s3 \+ Z$ [可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
- u" x+ B, Q6 j6 v, p- J程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 m5 h% G7 @5 w5 {8 q
/ h1 o8 }! e9 G6 [另外一个小建议,就是move,所有的move都可以这样( s( G& H2 W5 }4 T8 E
if not move() then debug end) J0 D; q- ~0 z9 y4 p3 L
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。+ s" {$ a6 u3 D/ N' F7 @6 B0 q
plant simulation中的free libraries有AGV模板,
5 O( o, f6 G" Q6 H里面也有案例。# @  @% {# x; ^$ Q
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
/ s! B* T5 r  j! n" G0 x3 K' {" U) z) R! [6 w9 F2 p" I3 r
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑   Q" `; k  F' I1 X% l2 s

5 P3 V) K- b' Y* ]$ S9 T) {( g那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
% x% {" Z2 t) g+ v% s这是AGV_putin中arrive的method。
" G1 l+ g$ W' W4 z1 ]0 J; w& L4 i6 q3 w# k- H8 c9 y
当到达物料速度越高时,这个报警更多,
- `, Y- l# ^3 ^! r% x" b
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-10 02:27 , Processed in 0.021730 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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