设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9740|回复: 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'
. _9 q' T6 d. E7 C& A*/  Z, @5 \$ q+ i9 l- q& l
is. N8 D1 {; J3 I$ ]1 R
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;$ F7 d: H, T& `5 e5 m" Y
do
5 ?. u1 z0 U1 Y2 D  ]+ o        Lan := rootfolder.Internal.Tools.AOLlanguage;$ E2 j7 j- j4 M; e0 w
        if current = @.Destination -- else return6 Q( v) {0 y. y" Z* C2 v0 e! z4 j- s
        then1 m9 h: I% y* B$ v2 _9 W% I
                @.Destination := void;' r4 g  u+ i2 {$ x/ f" I
                if @.occupied then- U1 j/ n( J1 q! X9 r# _4 v2 q
                        part := @.cont;3 d9 c6 D0 |7 F9 X' ^' [" N! l8 V
                        @.transpOrder := void;& b2 E, `( a" N% \
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,( a2 d: }" B. b" [0 _% X, n
                                @,root.eventcontroller.simTime);
3 u) \6 \9 t2 V+ @                        @.HasOrder := false;
/ H: n" w7 w: v) ]0 m/ D                        @.DrivingHome := true;' X1 O' F% v; O5 f" j
                        rgManager.tryToStartTransOrder;) n" r6 }+ \9 u: X
                        if @.Destination = void; F0 ], b3 W  ]; d
                        then -- no transport order for vehicle @
5 {2 O# T3 G4 R& y5 \7 Z  F6 k                                @.Destination :=7 |; m2 k& \6 U5 T. `. E
                                rgManager.nearestFreeStation(@,track.~);- r* u& c3 X6 m7 a  l% z
                                newDirection(@);   ) C  S, u3 Z7 S' B/ @- n
                                if @.Destination /= void then/ C% O8 G2 Z& W4 v9 I
                                        @.Destination.NumReservation :=
+ B* c, u9 B' Q" f3 J3 y                                        @.Destination.NumReservation + 1;
; `3 M, u+ N* c/ p                                end;! `( x- o: \6 p3 p
                                @.CurrIcon := "drivingHome";
  Y9 G) A4 @4 {5 F7 A                                @.DrivingHome := true;
% N( e! `0 T% j. i! M6 `! g                        end;8 K/ ^3 A1 I' d
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
7 T5 ~) c) o, _) N  f* G! d                        part := @.transpOrder;7 |& e6 G" {- \$ X) ~) L
                        part.move(@);-- load part
; M/ g2 w6 s1 N  }' |- i% @6 I0 l                        @.CurrIcon := "load";
- i) f# |, [# F( f3 y/ c# n8 X# s                        GlobalDistObj := part.globDestination;/ t' x& b) e. b1 N" O
                        assignLObj := rgmanager.rgAssignL;; o2 @) g9 E2 u8 R3 i0 F2 b
                        row := assignLObj.getRowNo(GlobalDistObj);% ~! ^! V7 o# r+ O$ r
                        if Row = -1 then -- since 70
& T+ i2 ~; n: V) {- Z" i                                if lan=1 then
: ^! ]$ ^* d) `& a) j5 U                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),+ u3 f5 ]" M1 }1 h
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
( R' e, s# J( @7 `                                else2 v4 w, \# I4 r. k. j6 F
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),, r3 d/ J2 e) y, u/ `' Z/ P& f
                                                to_str("in docking station: \"",?.~.name,"\""));                               
! l9 B3 z: k# Z9 b/ y; C                                end;
8 x6 N: L3 ~- k8 y/ c                        else
  Y) D& B" a! d! C$ w4 r                                @.Destination := assignLObj[1,row];
! |  L+ R- Z. d* s8 j7 R# x                        end;                       
3 O# B' W6 A# n& W- M7 `6 n: z" p2 _                        newDirection(@);
+ H/ s. c) A0 Z                        @.HasOrder := true;6 Y/ c+ U2 A. g8 S- n7 K; L( y
                end;* S9 ~; }) s( x: G! Z
        end;
0 n# x# r8 C  W  C5 n9 L1 i7 iend;        -- of the method2 |0 z' a( `5 L  U' Y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
: N5 L) s# a( G4 I
+ h0 f$ W; u! l  A这是AGV_putin中arrive的method。) b) ~+ W) S  O1 ]! M
  A+ Y$ S# l( I2 T# I: G
当到达物料速度越高时,这个报警更多,6 S& V' |; O- s- K- d; F
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。% }  f, `0 W: ^, B/ Q
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
" }: ], G8 n' g& X7 `! S$ F3 Q2 o0 }8 G7 `
另外一个小建议,就是move,所有的move都可以这样
' u- z+ k4 |" c  Nif not move() then debug end. g. Z& x$ u' {# i% [% v  _* E
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。) Q: i" ~/ R8 r0 t2 F6 [
plant simulation中的free libraries有AGV模板,0 d  }- J& A; T: H- [: ?; l
里面也有案例。( C$ L$ o* `5 U& `% U% P
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
: y  P- B' U6 \- W3 x
3 u! S" ?6 b" l# a- s我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
! J! q* p. R. T7 c( \# `8 r3 f/ e; |- `8 p  v, e( u& u% ~" C
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
2 P5 v4 W# n  K0 c- p( d) ?这是AGV_putin中arrive的method。. }7 I6 M- |2 a% L

5 R+ f& S: W  L" E当到达物料速度越高时,这个报警更多,
- Z& N! K8 g! |/ o
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-21 12:30 , Processed in 0.017078 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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