设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7690|回复: 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'
$ r* |8 k4 E( S+ m9 g*/# \$ ~* R+ Z5 h# F& }
is/ z' m9 R7 H1 \  c8 ]$ l) k" Z
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- p, f) A$ R+ T& ~
do
; y% ]1 I% j9 M$ Q& r* C        Lan := rootfolder.Internal.Tools.AOLlanguage;( K/ R3 ~" m0 T: g
        if current = @.Destination -- else return- F# ~! s; z& r# g
        then
. Q& y; o1 _5 r6 o( k! {                @.Destination := void;
' Q3 N7 x, @0 ]6 D2 B                if @.occupied then/ b5 F6 P1 P$ W- y
                        part := @.cont;0 n6 [8 B. p( [3 q: Z  L
                        @.transpOrder := void;
1 m4 B, X) k" m; ]" c. z3 C+ ^                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,% S* q/ w$ A: ]! [+ a9 x& {
                                @,root.eventcontroller.simTime);
6 A5 l) x8 s% p) m$ t) a                        @.HasOrder := false;. O6 C& f  q8 O. w  P% n4 H
                        @.DrivingHome := true;
, e( r0 ?4 _( w2 O. }/ h+ g                        rgManager.tryToStartTransOrder;3 J3 U: z8 T4 [) ?4 {
                        if @.Destination = void
) h  m, S3 p# Q% j                        then -- no transport order for vehicle @+ c3 M1 |/ m5 |; I  R( y! \; W
                                @.Destination :=
& |5 h1 V7 @+ X& P, d1 F                                rgManager.nearestFreeStation(@,track.~);# Y! I6 ]* x0 c
                                newDirection(@);   ! X5 q# W+ y# m- q  @  h0 q
                                if @.Destination /= void then; a  X3 D3 P/ \8 S8 Z: H: K: \
                                        @.Destination.NumReservation :=* {- b7 c& d7 X) z% t4 h
                                        @.Destination.NumReservation + 1;# p- d, v' L+ t
                                end;( O% N6 U5 F7 V; N( w9 A
                                @.CurrIcon := "drivingHome";. }4 s3 g- z: ?( F# p
                                @.DrivingHome := true;
9 M7 @4 _  l% `2 o4 F% K. Y                        end;  `: w  T# ?* ]2 Q
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station4 u4 S0 ]4 H& N' J) r
                        part := @.transpOrder;
0 M4 f; B5 u( b7 t' D4 p- [  ?: {                        part.move(@);-- load part
4 C: o* r9 v- C# V                        @.CurrIcon := "load";
+ |* C6 }. {8 J- L, F' H. s. |" l                        GlobalDistObj := part.globDestination;  v, _, D! v$ a
                        assignLObj := rgmanager.rgAssignL;! v, T5 }) C% K
                        row := assignLObj.getRowNo(GlobalDistObj);8 M! m1 n/ e4 [4 z/ N6 x; G6 l
                        if Row = -1 then -- since 708 P1 z7 k$ y7 C. N
                                if lan=1 then* R( K' o7 j6 ], P: p
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 T6 z+ Y7 V1 M4 D! Y1 T                                                to_str("in der Andockstation: \"",?.~.name,"\""));+ a8 M- J' A" v9 t. B1 n7 i
                                else
% ^, E5 K  Q/ n0 K7 V# |$ e& j8 u                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),0 u9 L, E* p7 n( |* s
                                                to_str("in docking station: \"",?.~.name,"\""));                                + o2 j9 R6 X. Y! }; X0 n
                                end;- p; m+ [& F/ O/ N8 d9 q
                        else
$ z1 O3 \7 y2 ]! R! U3 S( z1 z/ q; s3 A                                @.Destination := assignLObj[1,row];! e/ c+ [9 B# Z
                        end;                        " n1 M6 S8 D- s1 `) A- `8 t
                        newDirection(@);
2 K* H2 S+ u. G' ?                        @.HasOrder := true;
3 N: n! a9 |5 r( D' Y                end;
1 O) v& ^/ t! I3 R7 A& O        end;9 `2 L" c2 v9 z, C) u! H
end;        -- of the method, K6 x( _1 L5 X, c/ U! B) T
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , _" r+ l7 Z* Y" l: }4 x: g- ~

' s  V# V! K* A- z这是AGV_putin中arrive的method。
& v, s# F4 }$ O6 j! T4 k/ f& ^+ q" @1 y
当到达物料速度越高时,这个报警更多,
, J2 j8 x# N8 n8 z2 M; H5 ~( g& A可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
' u5 K4 q8 `. u% R; Q) ]0 I程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?2 C) o: e3 V! q  c( y  ?

7 S, Y) f$ F! M& G! W另外一个小建议,就是move,所有的move都可以这样- I# L" o% v7 S7 S8 G
if not move() then debug end' f9 E2 k5 U) `0 M. w& q
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
3 a: p3 i/ H& I' g1 Oplant simulation中的free libraries有AGV模板,& c5 w9 G! H8 B
里面也有案例。
6 q5 q+ e3 n, g6 B& F* k! s$ I6 u我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。4 T+ i& U4 [; K5 ]- G4 T; n
+ B: _8 V- Y. j6 q; o7 [' U9 L
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ' |' _" ]: [( n  m; S. |

: Y* R  h8 |9 z) c$ C2 j那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 : j) ?6 O# u; X  Y5 y
这是AGV_putin中arrive的method。
( S- o" _; l0 w0 Y& B/ r0 N5 g/ a) U* t
当到达物料速度越高时,这个报警更多,
/ w0 F$ X  s) A1 F' {3 ]0 c
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-24 12:22 , Processed in 0.024798 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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