设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7758|回复: 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'
' ~7 \9 n! I% ^+ G/ X+ j4 X) P*/
& e7 i$ n' b6 Jis
& e" `2 O4 s5 _+ C        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
: e, f7 V) B3 jdo( o8 X$ C+ c% q
        Lan := rootfolder.Internal.Tools.AOLlanguage;
  \. H0 j2 h# e8 `* M* E, w        if current = @.Destination -- else return
" w0 k& w# Z  ~: x* c- m* p        then
8 E% B; ]7 N& w; g8 B$ k! M                @.Destination := void;
  P- c: f( H' v+ O% B8 L                if @.occupied then
$ @2 u* [3 F; D7 \                        part := @.cont;& S/ j. s1 K2 G; R, \) Y& q9 I
                        @.transpOrder := void;+ F1 X8 g2 u: O
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
. F+ i, W* h; [& r; A# B" D1 ]# l: x4 b                                @,root.eventcontroller.simTime);3 C0 g  ]4 U0 a8 n; j- V( h
                        @.HasOrder := false;* ~, T4 ?* P2 I# l) P
                        @.DrivingHome := true;, c. H% e. R& m( w
                        rgManager.tryToStartTransOrder;
' u% k: S7 K3 o* Y' C' U# @6 J% q                        if @.Destination = void! q# K4 I+ N$ {' ~, E! O0 S
                        then -- no transport order for vehicle @: r( e6 k8 l1 Q& R
                                @.Destination :=& v7 q- Y- c$ j6 ?# B, O! s  K
                                rgManager.nearestFreeStation(@,track.~);. X0 g/ f9 D7 ^
                                newDirection(@);   / L- M4 E' i8 V6 o. w# R+ p
                                if @.Destination /= void then; _1 n& |) ?; o
                                        @.Destination.NumReservation :=0 k+ ?- N. C' x: J& R! X. a/ ^
                                        @.Destination.NumReservation + 1;
. f) y3 s* I; p- P- E  C                                end;# M' W4 ]2 p9 d, e
                                @.CurrIcon := "drivingHome";
* O1 l. a8 J2 Q* P                                @.DrivingHome := true;
, K3 z. J- @6 e4 D: j1 |                        end;
$ |2 H6 y, i. X2 v* w. J8 [                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
0 v2 I$ X' Y/ K  M& ~! b                        part := @.transpOrder;/ D7 J9 }2 a6 p7 u$ C9 c
                        part.move(@);-- load part
/ k" ~) x- p. r' q                        @.CurrIcon := "load";
8 g" O; E/ E3 C/ }, A& y* W5 G! q                        GlobalDistObj := part.globDestination;1 N3 Q3 J+ V4 H! N/ ~4 c% J4 F
                        assignLObj := rgmanager.rgAssignL;
9 L1 z% e/ ?' f  w5 E2 L5 L; n                        row := assignLObj.getRowNo(GlobalDistObj);: h6 o! j% Q2 [
                        if Row = -1 then -- since 70
; \0 Q, ?! s; c1 q9 _                                if lan=1 then
6 _1 W& `" J6 u. Q: X- ]                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
, Z7 `, j* G, H' v                                                to_str("in der Andockstation: \"",?.~.name,"\""));
1 V3 X$ p8 Z2 ?) W) w9 s                                else
1 z0 x; X0 N- N+ P' t                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),' I  d: P- q, {9 h0 w& i# V. n
                                                to_str("in docking station: \"",?.~.name,"\""));                                - p5 _' [/ u2 c$ e) G
                                end;$ X- i- O7 r* y! J- X; ~
                        else
- ^8 {* k3 r8 k2 d* _                                @.Destination := assignLObj[1,row];
1 \! `6 N' e8 t5 o) G3 d                        end;                        , e1 z  U' b3 Q2 @  a4 g" ^" Y
                        newDirection(@);. k) n  N: V6 V$ r2 A/ E
                        @.HasOrder := true;! f% _' p6 Y- @' K; Q& C
                end;
0 h! Q8 ?* r" U; j# c) k        end;
: Y! k/ F8 C3 \! ?end;        -- of the method
9 `( f- M$ o1 c3 _
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
- m+ h3 U. Q- t1 {: Z6 U( X. J& {, K
这是AGV_putin中arrive的method。& C) F% a! Q* e; m3 p  M

4 ^$ k2 S5 j1 G当到达物料速度越高时,这个报警更多,
; Q" ?; W$ B' q$ w$ @" w6 H2 `可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。; @, }6 P) ?8 B" }3 w
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?/ o5 g* h  p! m, S4 i- n
2 F( x- y  i# o5 O5 q
另外一个小建议,就是move,所有的move都可以这样1 G- o4 @% R- N! y+ b- q
if not move() then debug end$ s2 u6 r" x# r  U7 f( O6 g
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
2 H; [+ k* I$ o/ pplant simulation中的free libraries有AGV模板,
; s; x5 b5 @% {0 l! b里面也有案例。
! l1 V% r1 s# A/ C: Y我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。" l# I+ h: d: d- u( V: n
2 `. p* n( [# s! _) u
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
* u' ]# v& D3 X! r0 T; T1 t( j: }( i6 g, o6 J+ x8 `- x
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
; Y7 p8 K, w, M0 F5 N4 R这是AGV_putin中arrive的method。. q' O, W" @$ Q: G( _

! m6 r; {! F% a当到达物料速度越高时,这个报警更多,
( {  E) e' H, _8 P
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-28 06:30 , Processed in 0.017249 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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