设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5468|回复: 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'
2 [, S! ]3 K+ ^: k4 X) s0 U; [*/! R" H  a) q5 t
is
: H9 @+ q0 c( g        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
. [: N0 n8 g) y  u$ s* s. J1 pdo
9 k; T# b" }5 ?) \( A        Lan := rootfolder.Internal.Tools.AOLlanguage;4 b2 |& j7 f- m3 `7 b
        if current = @.Destination -- else return
3 A# N3 w  y9 a0 _, ?, a        then
: x  u# {- \: h9 a5 n% A                @.Destination := void;6 T" D9 `- p0 Q2 V. E
                if @.occupied then
$ H7 v5 a/ e' u4 `! X                        part := @.cont;
/ R* \2 u+ U: d% ]/ Q0 L                        @.transpOrder := void;
) @0 p9 q. x# s0 ~# e* @                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,5 \+ B1 T8 w) o! j' G
                                @,root.eventcontroller.simTime);% J# \* I6 `0 H  o7 E5 p5 j
                        @.HasOrder := false;- Y4 j  A- `- d( G. z6 S
                        @.DrivingHome := true;1 j: f! v$ F1 h4 F
                        rgManager.tryToStartTransOrder;
/ s' z4 B7 Y; m9 k  M# n# I                        if @.Destination = void
. H  ~+ y9 L/ K! L                        then -- no transport order for vehicle @
0 D, f$ U, U  t( L5 k                                @.Destination :=0 d  j9 J5 [, p
                                rgManager.nearestFreeStation(@,track.~);1 ~' E6 _- _/ b7 I  f
                                newDirection(@);   ! N; w& w" A; h" s" ?* ]( A
                                if @.Destination /= void then! X% p( p6 X: A. e% t
                                        @.Destination.NumReservation :=
# H4 u: d9 G0 z8 l- u4 _                                        @.Destination.NumReservation + 1;
' F# n: C% E% a0 |                                end;$ j' L2 V+ x/ l/ u* F
                                @.CurrIcon := "drivingHome";
0 e5 {3 d0 u% }0 R; s% ~/ \                                @.DrivingHome := true;6 a4 n; w$ L& @: B' b' F4 S. }
                        end;
/ J+ `& L8 D; z: l" z  M7 U9 L2 l                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 h# ]( d2 `9 ^3 f
                        part := @.transpOrder;4 T5 a. p* k- z8 ]
                        part.move(@);-- load part
4 O& G: d) |* M* H! N8 w                        @.CurrIcon := "load";
6 _  e, O1 u$ M1 R9 J- e% R* f                        GlobalDistObj := part.globDestination;
, T3 g  p1 r, ~" J& }3 _" P5 c2 m                        assignLObj := rgmanager.rgAssignL;
+ m6 ]2 @: _2 P. m$ ^& K$ l! H                        row := assignLObj.getRowNo(GlobalDistObj);
3 i# Q4 y0 l( a( @                        if Row = -1 then -- since 70
- ?6 c7 K7 q" v0 ?$ o) n0 g# Y! q                                if lan=1 then
, S$ \) E$ Y7 X7 C% ^- m9 N3 f                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),6 O/ K0 L, h+ O1 }, G, N
                                                to_str("in der Andockstation: \"",?.~.name,"\""));! E& U' i( t+ c4 V4 [
                                else
$ K8 c; U. c( Q* Q; X$ j                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
0 ?( k5 H9 \. q) I# s* \: R" h! u0 y                                                to_str("in docking station: \"",?.~.name,"\""));                               
+ g# Y+ \+ [" m, y6 [. }% B                                end;
; o4 i4 u. v% [7 x7 ~                        else2 D* E* h: R! Z4 b5 Z2 A2 x
                                @.Destination := assignLObj[1,row];
! h  Z' p0 I5 v: h                        end;                        " u9 x( ~* E) B- A" r
                        newDirection(@);
/ q  {. l+ n4 `4 P$ |/ W                        @.HasOrder := true;4 m3 H* U( @9 S
                end;/ S( ]. M2 _1 l) j% Z6 P: H6 M, U
        end;+ U9 p% U" t" Y6 K
end;        -- of the method# B; B3 s- h( B1 \" ]
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 % |& X# i' N; r' {* ^4 M8 Y

9 L! T; p% f8 Y这是AGV_putin中arrive的method。. T- w6 _4 n# T

8 H8 r: t2 j: o; C1 U0 ]当到达物料速度越高时,这个报警更多,' L# I& |! Q2 v* p, b
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
3 z2 ?2 ]* y9 H+ ~- J程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?9 A8 f3 b) O3 F6 }: R* Q
2 q% a1 P& n. p( J' S. ~9 f
另外一个小建议,就是move,所有的move都可以这样
6 l7 W% u+ L1 d/ r5 Vif not move() then debug end& _, N, ]) f. c& W- I9 I
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
5 h' K- U; A& a- y2 \4 k2 _+ Qplant simulation中的free libraries有AGV模板,
: G9 d/ G1 z% H  z  S, L. a3 D# R里面也有案例。4 {7 D/ s, M5 _* I7 o- S
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
' z& \9 F9 S- i' H# C% P& l
7 e5 V# O* W  d我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 7 E* n: Q4 z# Z0 o5 v% J5 z

# n9 A2 }9 l  }) J2 \- g+ c$ y. K那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 / z+ s7 [/ F2 x" ~
这是AGV_putin中arrive的method。5 h) c1 F# Q! l! M; Q0 ^. z
" m7 l0 r1 g8 _  Y2 B3 n
当到达物料速度越高时,这个报警更多,
7 E3 n& [2 y/ ~0 S: [/ c- C
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-25 20:32 , Processed in 0.020407 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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