设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8977|回复: 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 P. u) P7 z+ W; x- R*/) g" U& A3 I/ E; B/ C
is9 |! W* ?7 k3 @( m
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
/ a9 T$ k5 y& E7 W. k, N: p9 @do, r+ v' u. y) V
        Lan := rootfolder.Internal.Tools.AOLlanguage;5 ?: k, S7 A! y  R# w5 s
        if current = @.Destination -- else return" f( S0 f, j% e4 k4 {; X: e" ]
        then) `3 K1 g* d9 V4 Z
                @.Destination := void;2 O8 {6 y* C' U4 B1 H
                if @.occupied then
% k8 B6 \/ G( V( X+ L( ]                        part := @.cont;
% o) V) V+ C- S7 ~                        @.transpOrder := void;
3 l0 `7 [! i, k0 l                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
8 L9 c( U0 ?$ d: ^, n1 \% R/ H                                @,root.eventcontroller.simTime);6 R" A! Z, r9 G+ B) i* \
                        @.HasOrder := false;% m( n2 q  I( i5 V6 C
                        @.DrivingHome := true;
# D' ]/ J5 y/ H  U% {# k                        rgManager.tryToStartTransOrder;# v, T' U9 {+ i5 O3 G
                        if @.Destination = void
2 F4 `7 F2 [$ C6 u. L8 ?                        then -- no transport order for vehicle @
( s* i+ {$ x) a; w1 o' j% i                                @.Destination :=
! ?1 K" S# J' v, A+ h; B) [8 v' O. ?                                rgManager.nearestFreeStation(@,track.~);
: }1 g( U( l% k9 m* C- v8 x4 ]2 K                                newDirection(@);   
; l- c- j/ s8 T! q' N$ ^8 |                                if @.Destination /= void then
0 p- r9 v! n& s1 L                                        @.Destination.NumReservation :=
) x& G" k# x) J                                        @.Destination.NumReservation + 1;' H0 {6 k/ V0 v0 X% W1 _8 Z5 B' j
                                end;) y7 z% ]  y3 u: v* }
                                @.CurrIcon := "drivingHome";
; @4 p1 K. D' U4 y0 |  ?; p* V( I4 Z                                @.DrivingHome := true;7 H: ~4 M  O# ], L, }7 b5 [
                        end;6 j; ^( i9 A6 N) N/ g
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
/ a! G) }$ n1 ?1 I' W                        part := @.transpOrder;
4 S2 \( f: C% B                        part.move(@);-- load part, `$ e3 G. a2 q: N) L- G
                        @.CurrIcon := "load";/ P1 n6 k- _9 z
                        GlobalDistObj := part.globDestination;
) u+ h  d5 v' F3 ~% p/ n                        assignLObj := rgmanager.rgAssignL;
8 Q9 i  y+ c8 M+ W4 ~                        row := assignLObj.getRowNo(GlobalDistObj);% b# Y) o/ r( b) i
                        if Row = -1 then -- since 70
7 ~/ M  a* E" H; u9 q                                if lan=1 then* W, q0 Z1 l4 |8 B
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),5 e: W" K; }1 b! K8 k
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
3 W. e: z. _2 A% C                                else
% s6 T" P/ J" c$ F& |                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
( K& P9 K: q" u& e+ e! h4 n! h* G8 `                                                to_str("in docking station: \"",?.~.name,"\""));                                5 @  v; O8 r9 Z, |7 ~
                                end;
& h: [# P$ o  u  n& X% h0 X  ~                        else
1 g5 C5 N1 [5 k7 ~: @" i, M# y                                @.Destination := assignLObj[1,row];, M* F8 I$ n# e8 H( v' W; G
                        end;                        " P9 I: o+ O9 f9 y. L
                        newDirection(@);* G- u2 E. n2 r7 \- U/ S
                        @.HasOrder := true;
; k( |1 D& `% O3 `                end;
! [6 U5 u/ S7 |8 t( P, |% |/ T        end;, N8 R  P! s$ a+ |7 b% q7 _$ G3 ~
end;        -- of the method, @% R7 {% d& h9 u# e$ U& E. ?
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 1 T. \6 H- W) {2 B
* p2 l+ _1 X  Z+ e5 N2 |4 l/ v
这是AGV_putin中arrive的method。
4 e- `8 H& ]# u3 e! G8 c5 c1 {/ b) w
当到达物料速度越高时,这个报警更多,
3 {- h/ D# p, v可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
3 q; @( B, @  {8 m* _& g程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
/ T, }) S; x: r, K. p" m& g; w7 O+ |7 h. `) n) A
另外一个小建议,就是move,所有的move都可以这样0 l& ]6 o# b2 D
if not move() then debug end: V* Z: H+ d; ]# J+ k; J+ R9 f( f/ {  c
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
, _1 m3 K* L6 d4 A* ]& P- C& P% nplant simulation中的free libraries有AGV模板,
3 e- j4 c0 T% J! [: H里面也有案例。" L. s% O4 @8 b  h3 w3 ?' M
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 \. H9 S- P1 e' n8 g  g7 V$ a  s7 d: u6 p) K
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 - V3 x$ m3 k. D( ^! h1 d
. h7 b+ K* ?( ?" b7 d6 i! r3 Y
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
4 n% H9 ~( a6 p1 ^0 h' N这是AGV_putin中arrive的method。
! G6 {2 y$ l/ u. S% m
3 V1 Z- j4 Z4 {当到达物料速度越高时,这个报警更多,
9 m/ z- K0 t7 ?
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-7 01:24 , Processed in 0.018540 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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