设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9623|回复: 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'
" H5 y# c% |% [*/7 b3 J; Q' D9 A7 |& Y
is
0 Y$ ]& v$ T# S6 v3 q$ B1 V        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
% a: b" Z" R$ a  l' Zdo
3 b' r. ~! J$ }, O" o. p$ Z: y7 A        Lan := rootfolder.Internal.Tools.AOLlanguage;
4 q# t, p+ {& S+ Z( _1 [9 K/ o        if current = @.Destination -- else return
' C7 D* w* d0 N, T0 k4 n        then  F8 `% p, J( N4 t
                @.Destination := void;, K7 \  i0 |. t
                if @.occupied then
( l* K+ N( Y, ~5 C. M                        part := @.cont;$ Z( ]2 x) E8 f
                        @.transpOrder := void;# L; [% Z/ M0 Y" r- D6 q9 \
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,; [  N% W! M( I! M
                                @,root.eventcontroller.simTime);
4 w# H% S& C" m, `" [# |                        @.HasOrder := false;
! p  H7 Y- ^6 i0 r                        @.DrivingHome := true;
* J* K+ \5 l) k. d" ?7 s2 U; n                        rgManager.tryToStartTransOrder;
3 u8 l. f9 {$ V+ A( S3 V' k% l# e$ @                        if @.Destination = void' T4 ^+ b( N; v# f1 y0 u9 P
                        then -- no transport order for vehicle @
) D2 i. r4 H4 J7 |: {; ?2 n7 l/ N- _                                @.Destination :=1 G2 h9 u/ s. }  x' ?
                                rgManager.nearestFreeStation(@,track.~);
5 U# K$ {# \) i                                newDirection(@);   
9 g2 y$ O% W0 `+ w7 u4 F  U) Y. @                                if @.Destination /= void then7 y  I9 ?7 R1 A7 f
                                        @.Destination.NumReservation :=
4 ]# b8 Q- C) o                                        @.Destination.NumReservation + 1;: U! g) H) r, v) u1 \' `
                                end;
/ a' E8 v4 a9 c                                @.CurrIcon := "drivingHome";
- _1 }$ A: d+ t2 G7 a. n                                @.DrivingHome := true;: J- Y! c; g3 Z. k$ J( f9 Y
                        end;) ]0 Z: h- }8 x) T  n
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station) u! G2 `+ R8 O6 d) o9 n: ^
                        part := @.transpOrder;
* h9 @" w( d5 D- k* R3 v* h                        part.move(@);-- load part
' n" b' w- G6 ~* H% j1 h                        @.CurrIcon := "load";
1 U8 |( a' q9 Y8 e: A7 J* K4 z% ?4 t( }                        GlobalDistObj := part.globDestination;9 s5 j/ _; C! P+ {
                        assignLObj := rgmanager.rgAssignL;
3 _6 E5 p5 }3 w& s' L4 u                        row := assignLObj.getRowNo(GlobalDistObj);
! P2 h6 D( W, n9 g0 [                        if Row = -1 then -- since 70+ B/ k% O3 X% y, W
                                if lan=1 then
1 u! i( c0 c8 P/ g- `% K                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 E$ U+ n0 z* Q# ]5 o                                                to_str("in der Andockstation: \"",?.~.name,"\""));5 J5 U/ o. n6 P8 l6 r
                                else
) ~" E6 x  g% ]                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
( w" k' t/ e* v* g                                                to_str("in docking station: \"",?.~.name,"\""));                                % v; s8 z1 f% r! x! C
                                end;
! G) N% o- C) g1 H5 W3 W                        else
- `: S# D' S+ w! {" \7 U/ @3 z                                @.Destination := assignLObj[1,row];
  C" t- U7 F7 i) F+ m3 s                        end;                       
( x, o5 W& U! Z; ?                        newDirection(@);5 u; {9 X) O, j/ n& C* s  }4 ?
                        @.HasOrder := true;) T% ~9 O# e" H+ o' F
                end;: ^) M: ]( f$ q+ z- u+ n
        end;
& M- w9 }9 {) |: C& jend;        -- of the method5 g! d: |% w0 M0 P0 k4 ^0 Y
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
* M: q& D; ~  a+ N+ C' @, y! z# ]( i1 F; A5 e/ N
这是AGV_putin中arrive的method。7 W0 O+ ?! k2 j+ @' H
3 w% t/ z) Y! d) d1 D" X
当到达物料速度越高时,这个报警更多,
0 a! f$ {4 j7 m) t  r可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
% G( o$ k$ j7 ]; P6 y程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
9 v( M0 t: K2 B$ f9 I' K7 n' c) g/ y& O1 l
另外一个小建议,就是move,所有的move都可以这样+ L5 n9 P# v5 S1 O
if not move() then debug end
# K, Q: k  I; j- s" b% i! ^) K这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
8 K, e7 _* e* O7 m& [plant simulation中的free libraries有AGV模板,' @9 m. U+ {; p2 u5 j. C2 z
里面也有案例。, W" ]9 _. s0 Y7 a7 C
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! ], x: k; ^8 l6 z# H6 }5 c
) X7 e5 w9 k' Q8 @( F5 N+ J我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
% X1 y9 m/ w& Q! t" o& H1 g3 ]& l; x% H. E; P7 C, `+ B
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
. ^7 w2 c- B4 x5 L这是AGV_putin中arrive的method。
& d, z! |7 ^/ }( C4 X
( |0 W; W/ ~3 P- _1 h当到达物料速度越高时,这个报警更多,
2 t4 r5 F4 c# ^  t6 \, m
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-12 10:37 , Processed in 0.016091 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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