设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10172|回复: 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'
5 V" C# ~6 R( e- F9 X/ e5 ~. S*/
1 Q( d1 b+ o! o& Eis
; S8 r2 }9 k; S% T& H" }+ l        part, GlobalDistObj, assignLObj:object;row,Lan:integer;) K# |: z0 u' J
do
3 S% }% m0 ]8 m3 m4 B        Lan := rootfolder.Internal.Tools.AOLlanguage;  d& U: B0 q* l* g- j+ E
        if current = @.Destination -- else return* ~& b6 y/ Y! K$ H8 w
        then
: P6 ^* j8 _8 B6 x' a) N                @.Destination := void;
; I- m3 p, \8 K4 {7 Q1 J                if @.occupied then9 j& l/ x/ a7 }7 Z7 m% d& e
                        part := @.cont;
9 E8 g- g) T2 j# q$ C0 Y                        @.transpOrder := void;' q+ _0 }- O* c3 Q
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,: b0 `+ m' W" S4 ^
                                @,root.eventcontroller.simTime);
% t/ `4 I- v6 m# h9 f! e                        @.HasOrder := false;
9 z! l/ p: N- h( i6 T5 i                        @.DrivingHome := true;
% V3 R* ]; z% r7 E, l# i8 I' [                        rgManager.tryToStartTransOrder;7 N9 g9 y& ]' j, T- q) Y
                        if @.Destination = void
0 |* B8 X3 t; W2 \  D& b                        then -- no transport order for vehicle @+ S* |7 a9 x' J
                                @.Destination :=
: f- s+ S2 w3 c9 p, Z# D, E, _                                rgManager.nearestFreeStation(@,track.~);
2 F8 b- X1 k* _, e" ^. G                                newDirection(@);   
3 o$ \1 ]# X5 d( `+ X  g8 v3 H                                if @.Destination /= void then
6 x- ~: g5 n3 h' X2 X% N                                        @.Destination.NumReservation :=$ t2 A7 W# X/ n$ B% u9 r. E
                                        @.Destination.NumReservation + 1;3 ~. e! O  {/ s$ H5 _& T, B9 b) z
                                end;
4 P# ]  n/ ~# Y+ x                                @.CurrIcon := "drivingHome";- P# F: Z7 ~' }$ ~. G" U
                                @.DrivingHome := true;
/ v1 s8 U# Y- \. d  u                        end;
+ B0 n- G3 a+ f5 N, o                else -- the vehicle @ is empty, both vehicle and part are in the same dock station+ }# b3 x* B4 f3 K9 _  j
                        part := @.transpOrder;' B: ^) g+ N1 T+ F2 c3 k
                        part.move(@);-- load part1 z' F8 L, F( m3 E- E% o
                        @.CurrIcon := "load";
8 k) U+ Y4 n9 ^* S- ~) Z( K3 h1 L5 r                        GlobalDistObj := part.globDestination;
! J5 f$ n: Z. A# ]; u' N7 t0 L                        assignLObj := rgmanager.rgAssignL;
% ]/ Q1 _6 F& d7 L- k                        row := assignLObj.getRowNo(GlobalDistObj);
, i7 N  [7 l: x                        if Row = -1 then -- since 70  s& n: R9 a5 w
                                if lan=1 then
3 C5 F5 T6 u1 x. z. d" c                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),: p+ w2 g/ _* P+ D* W$ s  ]
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
7 d& N  |  c: }" H0 v                                else
  @3 U) u; `# t0 g& b' r% b8 |                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
: F+ n+ J" ?  V/ j1 i                                                to_str("in docking station: \"",?.~.name,"\""));                                5 c# }. s' V) H8 l
                                end;
- |) A, N+ O1 R. Y: M( u                        else0 t& _1 {) \* O
                                @.Destination := assignLObj[1,row];7 C1 l4 a+ z* `- A0 \
                        end;                        ( h$ s" ?8 q8 @3 H
                        newDirection(@);9 i" Z' X4 a0 ]0 @( M& U
                        @.HasOrder := true;
1 L, t" S5 m: o0 @  x9 w                end;
/ {$ f& x9 {, a. X  e: b: \0 _        end;  X& z/ h2 J. t& `; W# p
end;        -- of the method4 k. z! c: v+ y4 n7 h  N
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 ' E* D& }0 d8 E9 B5 V0 j$ Y

2 ~5 r* |" F+ `& V6 V这是AGV_putin中arrive的method。, m$ }8 [" I# X/ ]

+ D* j8 A7 C5 g1 d1 t  w1 G3 y, |: e当到达物料速度越高时,这个报警更多,1 f  l/ {- U; N6 b
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
8 R. G9 S7 [" p  W9 L& g! O程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
; [: [! ?# Z2 K* d: X
8 r: R5 h4 x  l; T另外一个小建议,就是move,所有的move都可以这样
4 {% ~& I" a" t* x9 i8 O# a) ?if not move() then debug end
2 x" B6 R& d, u" h这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。0 k0 O) h$ I4 h0 f0 n- `) K: Y
plant simulation中的free libraries有AGV模板,' ]: ~) i) y; A0 T
里面也有案例。
9 w8 s) i9 }& G我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
( r4 ]6 N5 g3 n8 }9 u# v' ~" z- z9 R) s+ B
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
. q: N& p- D/ T+ W9 e3 M
9 d3 M# ~0 O$ q- w那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 : ]8 r3 u3 x, v: `9 Z
这是AGV_putin中arrive的method。
! z6 f  {$ {! b5 b9 d/ ]. O- \" v3 e; S3 r# P8 q4 g& d
当到达物料速度越高时,这个报警更多,
$ h+ Z1 Q0 k6 O( H
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-18 02:17 , Processed in 0.016866 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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