设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7972|回复: 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'8 u$ K. z5 z# ?0 C
*/
% e% C" [1 V3 ^$ F% x( O" V: g0 mis) u" f6 |0 C+ H4 n1 q1 q+ @* h9 |
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;* U6 o' U# V) d4 ^2 s, y
do
" i$ X4 i5 t0 w% \: t# d        Lan := rootfolder.Internal.Tools.AOLlanguage;
5 u6 _/ Z2 q8 B1 [8 r5 `. h; ]" Z$ @+ e        if current = @.Destination -- else return
6 z1 ?+ H- I4 c8 U& {- y        then
7 p" m. }4 U& `                @.Destination := void;
7 _4 ^$ Z# ~* i* }3 c- u                if @.occupied then
# E2 Y8 @; H2 t7 `& _3 [0 T. H$ H2 j                        part := @.cont;
4 V' X8 Q# z, v9 P                        @.transpOrder := void;1 t4 L& ]  }. a4 q2 X
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,8 N+ D5 u" N' r# R% E2 Y
                                @,root.eventcontroller.simTime);9 c& y& ~1 |" w4 w) h  I
                        @.HasOrder := false;( @$ A& B& v! m" ~
                        @.DrivingHome := true;
1 v- w# H2 Z3 I; }7 E9 ?  |                        rgManager.tryToStartTransOrder;% H9 _4 Y) f) q
                        if @.Destination = void
. _. [% {2 `' }: o                        then -- no transport order for vehicle @: k# z; e. p% B
                                @.Destination :=& j* [9 w4 f- d7 K% Q$ q! J- c, {
                                rgManager.nearestFreeStation(@,track.~);
1 H, x% \! u$ ?, {# m# s                                newDirection(@);   
. Q9 b( d! g1 N) U: t' ~                                if @.Destination /= void then* a: L9 |3 H! N4 h
                                        @.Destination.NumReservation :=
3 N, e" C5 h3 l, s7 j$ @9 n                                        @.Destination.NumReservation + 1;
& g$ t8 F! j& u& o. e! Y6 q4 ^                                end;
5 W* ^( @. c6 }" y! O0 q0 e0 L                                @.CurrIcon := "drivingHome";. |" n6 }! d3 c, {. ^2 }
                                @.DrivingHome := true;
6 B+ Q) t' I& _' m                        end;
3 E& x6 V/ t- ?; P8 u, ]! G                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
6 ?% k0 i: N+ Q                        part := @.transpOrder;
9 {. w2 X# i+ M+ b; m0 y# ]                        part.move(@);-- load part
* t3 j! S( A( t4 P% u                        @.CurrIcon := "load";
/ [9 ?2 G% r: @6 t                        GlobalDistObj := part.globDestination;) A$ i5 m: a7 I+ |) A
                        assignLObj := rgmanager.rgAssignL;5 t6 G9 L' r7 {
                        row := assignLObj.getRowNo(GlobalDistObj);2 F6 ?1 t2 s% m& c
                        if Row = -1 then -- since 70
& Q1 u4 ^. x; H. F: M; _9 f0 q                                if lan=1 then
1 s& X: b, F( c4 j5 @                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
% |, [* b& G$ W6 p                                                to_str("in der Andockstation: \"",?.~.name,"\""));) J! \5 i' h( _3 s* z9 w
                                else
' F% n# }$ d6 J                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
+ d8 f. s* m% |! ^! @4 Q3 c                                                to_str("in docking station: \"",?.~.name,"\""));                                " _) _0 x: ~' g9 e: Z
                                end;8 [" J) `2 b0 _5 }
                        else
; G4 O$ }4 V- L, n+ w1 g- _1 h                                @.Destination := assignLObj[1,row];
/ u, U/ D* ~0 X+ W# S, i0 e                        end;                        1 N1 C! _: r6 @3 `
                        newDirection(@);" P. G7 f5 x0 Z# `
                        @.HasOrder := true;0 A. d8 n* B8 ?
                end;7 g4 r) k$ w! h) m/ B6 l+ N' O2 `
        end;% r. C( I' y3 i* q$ O0 n) a
end;        -- of the method' ^5 |- s2 B* [7 I0 ]3 O; b0 v
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
2 j- K1 B* H  c7 T; N: o  t" a, g% i3 z/ X  l8 c! w& w" D" k/ k8 j
这是AGV_putin中arrive的method。
5 L  {) E) h$ k# x% Y% l% M8 I( D( C8 {& C. [
当到达物料速度越高时,这个报警更多,
6 h; D% O- v& I- y* N, g可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
) W5 M* K( E4 h8 u6 ?程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?6 F# g! d+ z' X! Q2 O% X9 [& G$ F
' c' W" c% b4 M- Z
另外一个小建议,就是move,所有的move都可以这样
# l: a- j8 ?7 H, n0 eif not move() then debug end
4 |5 }' H+ [  O! x  y  L这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
. p$ \5 c; D4 [) d3 Tplant simulation中的free libraries有AGV模板,
& v8 |; F' {# Z" l里面也有案例。8 \2 r# U: n" S3 l# ~
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。% _' G2 M) _" Y8 _/ a; j

2 {0 y# d' G) x& d# Q& c9 z我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 . }* T1 g* J$ j1 v9 n1 M; f

# B* i- P. R8 Y) F1 O2 e6 V& J$ J0 w/ f那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08   K/ ~) z$ d- J' p$ O2 y" S
这是AGV_putin中arrive的method。
/ H  \/ q' @1 z: |! ^, t, [! z  I" }  S+ f/ q
当到达物料速度越高时,这个报警更多,
3 |' _4 Q$ ^/ b! |- j
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-8 12:28 , Processed in 0.018752 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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