设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8151|回复: 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'( u& t4 Z7 ^8 X' F# b
*/
3 X5 u& c" N7 T  ]+ s# W  ris: [+ m. X# v3 d1 k. s
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
5 p5 b# Q6 q1 O9 E! Xdo9 K6 M' _  F9 ~5 l
        Lan := rootfolder.Internal.Tools.AOLlanguage;' T4 i4 Q- e, [# ]# u' [0 n1 a
        if current = @.Destination -- else return
# h1 |) }7 \; {9 j6 u1 G        then" b+ a, N3 c+ ~
                @.Destination := void;
2 }: K/ y6 Y- E) {6 g                if @.occupied then" s9 Y" m. M8 ^0 L/ k
                        part := @.cont;  m* V, u1 e$ u2 ]7 s
                        @.transpOrder := void;
8 ]) m) r- l" S                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
+ ^: r( b+ ?: G1 x+ f. G$ u1 L                                @,root.eventcontroller.simTime);
9 r: O# b9 L6 J5 H8 i5 z                        @.HasOrder := false;
5 J0 Y# a  N# C/ C7 r9 Y2 S0 f                        @.DrivingHome := true;* \' _# F5 y# F4 c
                        rgManager.tryToStartTransOrder;2 t. |1 ~. l$ I% Y0 [: A+ q
                        if @.Destination = void
% C$ k' o# e% K3 g' W# C                        then -- no transport order for vehicle @( }. R2 p  z/ T( B6 Y# s
                                @.Destination :=3 p7 i( W5 u0 v$ u. p* B
                                rgManager.nearestFreeStation(@,track.~);
! d! B* u8 m. x) i2 x+ c$ ^& v                                newDirection(@);   ! G9 s! ^! Q3 i" w- v
                                if @.Destination /= void then$ `0 o8 {- k  g: C
                                        @.Destination.NumReservation :=) e5 E* g7 Z+ j( L* |. j4 T
                                        @.Destination.NumReservation + 1;
) [+ e9 j. @) }9 t) E                                end;
9 e1 b( h& [3 x' f/ s1 [6 {                                @.CurrIcon := "drivingHome";( C  E) }3 W; ?& |5 v9 p
                                @.DrivingHome := true;2 i) d8 u2 M* c: e
                        end;
) P+ f5 ^% T/ s) e( w( Y5 O6 p                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
; v1 {) A/ t# H( R3 L                        part := @.transpOrder;
& N! z  Y. \. V6 |4 d                        part.move(@);-- load part
6 c+ \/ r6 f4 I, l6 a5 h  l& Q                        @.CurrIcon := "load";
- \. ]. w/ M6 [3 J( S. q7 C                        GlobalDistObj := part.globDestination;1 |- N7 R, @, s7 M4 t
                        assignLObj := rgmanager.rgAssignL;9 v: g/ b+ V& \$ ^) k
                        row := assignLObj.getRowNo(GlobalDistObj);1 ?3 `  I, W* g% T+ z) M4 x) Q
                        if Row = -1 then -- since 701 G+ y3 D- B* B& H5 k* D
                                if lan=1 then$ I# g2 T1 D" l! r0 e: r
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),2 s: t3 T. l" x; c; T
                                                to_str("in der Andockstation: \"",?.~.name,"\""));3 L( p8 \/ q* n7 |
                                else
9 L( Z% x9 X( |# C+ t. a                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
7 A5 p8 a- p- q  E4 L                                                to_str("in docking station: \"",?.~.name,"\""));                               
8 u2 X4 k7 J$ E; ^; A                                end;2 E( t( N; z& ^) E
                        else
& d4 [1 m+ u8 v+ p4 H( Y/ d3 m                                @.Destination := assignLObj[1,row];) U; D7 J; E% b1 R# ]: s
                        end;                       
1 t8 l' |( J# H+ A2 l                        newDirection(@);
  s* o4 X7 H4 t/ S3 T2 b$ P                        @.HasOrder := true;
) S7 P  C( j, |                end;
$ U  _3 Q$ J5 _        end;) W' c& s. w, W5 S
end;        -- of the method) n6 a4 R( L0 u" K2 E! S6 r- e
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ; ~" w7 G3 g+ S, K5 V6 Y

  n* @) m0 S: d; U% Y# D' u8 x7 s/ ?( L这是AGV_putin中arrive的method。
  G4 x0 c' K6 O. I% y/ D( G. q9 |( p+ I2 O/ i9 W  v! O! l0 H
当到达物料速度越高时,这个报警更多,  T4 P4 U% A$ h. r  D5 P; _. ^/ H
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。0 I7 H1 o  L7 K- {: Y
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?% V2 M" L( s. j1 u4 {- g6 w
* o; W2 l  m* m1 V, M
另外一个小建议,就是move,所有的move都可以这样
% p5 m7 `( o  q" p5 _) Z5 d! Wif not move() then debug end$ d! M7 [/ ], k3 q3 i5 {' }0 G
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。9 Z% w+ s8 P. o" x
plant simulation中的free libraries有AGV模板,* p6 u6 h7 h" q) M+ ?; F9 @
里面也有案例。( u5 U; B: _! H* b
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
5 A9 x* R# T% s3 s* Z
4 k- r( R5 \9 t我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
8 K, f5 F3 K2 v" H) r+ o  R2 ^5 `/ T7 r" ~, p8 N! w
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
( {7 n( e) k& @这是AGV_putin中arrive的method。
2 |3 R" y0 G9 u9 Z/ q( w  j5 D8 S$ P5 `
当到达物料速度越高时,这个报警更多,
: T1 A; v+ H0 q2 S) |8 F* i% R$ s/ X1 d
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-17 15:39 , Processed in 0.023505 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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