设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6147|回复: 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': v* I; Q1 r0 t* s/ s
*/
0 L, I% c. q0 F% l7 ^5 z7 L( P6 sis
! ^$ ~, G% r, j- f        part, GlobalDistObj, assignLObj:object;row,Lan:integer;) G$ q* A8 W" d( @! \" d
do- b& I9 A& Z$ M/ R# \
        Lan := rootfolder.Internal.Tools.AOLlanguage;
( M4 V3 N4 }! m0 c$ z5 D) @        if current = @.Destination -- else return/ |& R" o( D" J, B+ S, s- U" E/ Y& ^
        then" d% l) D5 d1 o% U# N
                @.Destination := void;
) h& v0 N$ w; B9 O+ j5 P; S: M5 ^+ a                if @.occupied then1 L$ U4 X7 X% d2 B& C; q) X
                        part := @.cont;. d+ M. k' b( v0 y- O; l& u$ e8 L
                        @.transpOrder := void;
( x, N; A! ]! V. l1 p* H+ e                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,  L3 l3 `' _$ F# [7 H
                                @,root.eventcontroller.simTime);  A$ q% z3 X4 O( _
                        @.HasOrder := false;
; i# }. l) M& L+ j                        @.DrivingHome := true;5 ~) J2 O' a" z1 S: h' W
                        rgManager.tryToStartTransOrder;; l: x0 r9 M- N3 e8 c4 {3 g# E
                        if @.Destination = void* O- r/ [, X: L" E* v2 S9 D
                        then -- no transport order for vehicle @7 N/ b' M8 Z' H/ h6 i$ @* H
                                @.Destination :=
' T; V* E0 O/ J  ^) [0 P                                rgManager.nearestFreeStation(@,track.~);
' U+ o; m& |4 ^. G' l) A                                newDirection(@);   
6 _5 A, M) M, M% I2 v( p- X3 q                                if @.Destination /= void then) A' _9 @& C. u
                                        @.Destination.NumReservation :=
9 Y7 c! P' M" |( N: D2 \                                        @.Destination.NumReservation + 1;
) z! i+ Q# e: ^- {" c                                end;
/ j- k" z4 v6 C3 G+ s                                @.CurrIcon := "drivingHome";) d- F  z' j9 Q! F
                                @.DrivingHome := true;
0 L8 `1 y" G, C: N/ s                        end;
* f) v8 f+ P  E) Q                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- r* k3 u* ^' Q- p& \4 q                        part := @.transpOrder;
2 U( _2 H6 Q: ~- s9 z                        part.move(@);-- load part
7 {1 J- y7 M  A2 r                        @.CurrIcon := "load";
$ o! M4 \- B. _; o- b7 B                        GlobalDistObj := part.globDestination;4 X9 q7 Y( }& u4 A5 u9 b) |
                        assignLObj := rgmanager.rgAssignL;
4 ]2 Y+ |  C9 }- E                        row := assignLObj.getRowNo(GlobalDistObj);3 G5 R- V. W" S9 p
                        if Row = -1 then -- since 70+ Y! y4 S$ u7 q( P' A' c) p
                                if lan=1 then
8 o! x* ^6 _: m                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),( y" O& s! Z7 l- S2 R; K: T
                                                to_str("in der Andockstation: \"",?.~.name,"\""));3 s" ~- O. T) H" J2 t
                                else! C# c  H" r  N- q( M3 J, H
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
+ X! G! Q! t0 y* F* O2 s                                                to_str("in docking station: \"",?.~.name,"\""));                                : r3 K7 S9 K$ B8 M% D
                                end;
. g2 [- B  }$ w. Q                        else- L% N  D4 i; R$ k! U
                                @.Destination := assignLObj[1,row];
, |. h: u  g4 V3 x% ~                        end;                        4 E8 D2 [, t/ T. R) M9 q: S6 G7 X
                        newDirection(@);
* q8 z: q# o( M& k) X) C                        @.HasOrder := true;
+ p7 G4 a" Y: u+ s                end;: h  o6 k3 N% [( ?; f/ [
        end;3 {& S3 h$ [  K  y( m" G' F
end;        -- of the method
! H! k' h- k$ i( U5 N, @* S
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
+ M) n! b, _5 r1 z( l+ D3 b2 {( \4 z; u2 v8 W
这是AGV_putin中arrive的method。7 E3 C  D2 B8 x' }

, u" }- B. R' @8 ^当到达物料速度越高时,这个报警更多,
) T$ o  d; a6 ]可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。- z8 ~$ s# T0 U) e3 T' W: X
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?) s0 t$ V& U, v; y! z. u

8 E( \8 N7 E6 P另外一个小建议,就是move,所有的move都可以这样0 y& x' Z2 K+ M2 g. J- Z+ B# Y
if not move() then debug end
# r' {" q. p9 A) G这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
1 q  A- d! d3 n) Z0 Q$ A( O' S+ u, }plant simulation中的free libraries有AGV模板,# ]4 F) B3 z- \. _+ ^
里面也有案例。' w/ X9 v" I/ I- O+ _3 {
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。: y$ r8 i$ F: n) W2 V) o
  G& c. d  P3 [2 q
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
' e! j1 K+ ^! [+ @
4 D7 |/ Y4 M: R6 c0 g那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 . L! Y" y( E9 o9 V. k! D: e
这是AGV_putin中arrive的method。" _8 U% Z) {1 m# s5 Z4 r

5 n6 z( A# n1 ^8 y' c当到达物料速度越高时,这个报警更多,
; L0 V$ k) B+ d1 D9 [1 h' ?- H# g
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-21 15:49 , Processed in 0.025972 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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