设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8005|回复: 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'
) H/ n0 P0 f  C*/
1 _% Q) a7 s2 {3 z2 pis8 x- R, O* E  y8 ~. |& w  f+ _
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
7 i  D9 c" n" y" R+ f; V) ?7 ?: udo. j( f4 B3 N. F+ x
        Lan := rootfolder.Internal.Tools.AOLlanguage;7 ?! N+ a3 H1 T% L; W* K  _3 O
        if current = @.Destination -- else return
9 F& F) n% |+ H* W6 Z1 w. b        then0 {0 Q) ~0 u. \
                @.Destination := void;
. z  }" \. E: K  B  S+ m( F                if @.occupied then
5 i" B0 K  F4 S3 y3 C: |( z/ J                        part := @.cont;2 e) i. J7 f4 U4 `7 s1 {  q
                        @.transpOrder := void;6 ^& ]2 O5 I3 _* P
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,! }" B6 i, q6 {; D5 q& f7 ~
                                @,root.eventcontroller.simTime);
$ i% L6 p3 T* e# T/ X5 \( P3 o8 u                        @.HasOrder := false;
; D; u& @* e+ \+ }: N. _                        @.DrivingHome := true;  C: D. b( M/ B+ F. e
                        rgManager.tryToStartTransOrder;
) y' s4 i% D/ G" J                        if @.Destination = void6 D' L6 w% f% I# O3 N6 M; u
                        then -- no transport order for vehicle @
6 P" J7 B+ D- U. |+ p2 A                                @.Destination :=9 d9 c+ m9 A& G
                                rgManager.nearestFreeStation(@,track.~);
$ U+ h  e9 v) M) f' w                                newDirection(@);   
2 p4 Q' ^7 L& e  i" x5 O& N                                if @.Destination /= void then
" H. |; \+ |" ?0 G/ I                                        @.Destination.NumReservation :=
+ t: L& I# e" B6 U# {- V                                        @.Destination.NumReservation + 1;+ c  D8 w( I! |# A
                                end;3 F( u. ^' ?, J/ r
                                @.CurrIcon := "drivingHome";
5 v( H+ _0 u* _) `4 ]                                @.DrivingHome := true;. ^3 t7 j( B3 ]" R! K
                        end;9 e$ G- Z% k! N5 k; q& ?" B
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
- q& [7 F, c% B% g9 Q8 b# q                        part := @.transpOrder;
& I/ ]3 [0 R# t- O2 r8 Z9 x  N% w                        part.move(@);-- load part' i3 Q  z& e1 q: u' d, f
                        @.CurrIcon := "load";
; J7 S$ E3 `  w$ B: ]                        GlobalDistObj := part.globDestination;4 z# `1 X) Q; k' Y: g
                        assignLObj := rgmanager.rgAssignL;9 @) O0 x% _4 g) B$ p
                        row := assignLObj.getRowNo(GlobalDistObj);
7 J& h0 V! B. f: }' U9 p                        if Row = -1 then -- since 70
& @) K/ c. D# F9 u- n                                if lan=1 then! }2 j& {6 \& I) B: r: U
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
2 e$ W! U* p2 h8 K9 d8 ]% |                                                to_str("in der Andockstation: \"",?.~.name,"\""));- E1 ]+ ]( }8 _4 _* u4 t: i9 o
                                else# |$ q2 w0 M7 y3 X
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),2 x5 f6 n& m% W
                                                to_str("in docking station: \"",?.~.name,"\""));                               
: _( e" q* b# X# T& B; K6 D$ V5 a                                end;
; B4 c3 y* c9 n( z' C3 T                        else5 j; O8 `& f, Q; y* |; ]
                                @.Destination := assignLObj[1,row];1 G& o& p3 ^! H  r  H8 p
                        end;                        : D/ K$ p( Z. a' Z
                        newDirection(@);3 E: P( h8 H. z! t, s
                        @.HasOrder := true;; o( I  T( d. i$ j( D' U
                end;( p" ]4 w% s6 [" v* Z( U
        end;. l9 Y9 z3 M' L
end;        -- of the method
! w. Z. O5 I8 D) R
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 8 b; j/ @6 B+ T( a
' c, Q) [/ X$ J: m; T% E4 Q, N
这是AGV_putin中arrive的method。
0 _9 {% K& k0 l3 z5 B$ t" C' G1 E$ @5 h. Y; F9 }
当到达物料速度越高时,这个报警更多,- R. f) S5 o* z
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。6 i% o8 X: l* b
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
  w' U8 P3 n% J2 c2 F# h: x1 a- Y& u$ K3 s. X3 n
另外一个小建议,就是move,所有的move都可以这样
* O' N0 `. y* ^& uif not move() then debug end
5 Q' O: R) e# X9 A  g这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。  q4 t1 C/ F+ g  \% ]0 b
plant simulation中的free libraries有AGV模板,
+ R6 l4 T# q* y( |* y2 [4 t: `里面也有案例。* Z3 S8 J* W( `- r; ], d: y3 j
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
* h" j% P% p7 l, p
, R* a5 x- w- O+ }3 b, A( O  L5 ]我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 $ ~% a4 k) |/ Q) r) Y) p8 d- T

8 x# i  H. {5 f) l" S7 D3 ?3 G那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
% l5 c6 K6 |( n( F! F0 \! t这是AGV_putin中arrive的method。/ a5 I1 W: e# h3 [0 ~" j

: }8 J7 [& ~; u4 G当到达物料速度越高时,这个报警更多,

# ?. f6 s; w" L" z% P- q另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-10 17:08 , Processed in 0.965543 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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