设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5690|回复: 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'
$ ~: s6 e3 n# P* O! S: F*/
/ M8 k; W* M% N: V6 [, tis
7 ~# K0 X* G- T  P: @9 ~7 X$ A        part, GlobalDistObj, assignLObj:object;row,Lan:integer;/ D9 \3 D5 r% ^9 d0 [
do/ g6 c& E+ }4 R- `) g& y  T
        Lan := rootfolder.Internal.Tools.AOLlanguage;7 U6 ]8 b  N- S5 |2 r  G( |. E0 `
        if current = @.Destination -- else return
1 ~, z& h8 [! U- h        then- C' [/ }  ]4 N# V5 Q( G, K7 j
                @.Destination := void;* s" k6 G( v3 s9 t3 |: {# }
                if @.occupied then
- }; P7 p8 b9 z. H( m                        part := @.cont;
' @/ h+ U" c6 r                        @.transpOrder := void;
" [# V% c3 B8 v) S                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,% Z7 P* U2 X9 H; b3 ~
                                @,root.eventcontroller.simTime);
0 e6 [" S3 J! G' o" c2 f: d8 Y" A/ N                        @.HasOrder := false;
9 O/ C7 f. Z; f3 }7 \  \                        @.DrivingHome := true;6 s& |. W0 i% b5 S# _' n4 {
                        rgManager.tryToStartTransOrder;8 u1 |8 r5 x2 p7 D# e" q
                        if @.Destination = void
% U; i# g6 z7 O8 j, v" }                        then -- no transport order for vehicle @. e% G! f" E& L9 Q) n! V8 |
                                @.Destination :=# ]- w" j, |" Q% ?( I% I
                                rgManager.nearestFreeStation(@,track.~);: |, O7 `+ f: _0 l$ a
                                newDirection(@);   
" m: @9 _' x+ t9 i                                if @.Destination /= void then
% Q/ B  o* k. M" Y, z                                        @.Destination.NumReservation :=  O+ f- N4 B8 z' r! V* k9 j7 d
                                        @.Destination.NumReservation + 1;! G! [& g" I$ {8 O( C; L8 _
                                end;, G" g7 R. T: |9 [+ ?
                                @.CurrIcon := "drivingHome";7 y) D$ ~9 R+ T; N% Y% r& u' {
                                @.DrivingHome := true;
/ s" w* G  ~) ]* F% S- q                        end;; P. n+ q* N5 e( m& e8 H
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station- w. {, K# A4 I9 F- i3 w) z
                        part := @.transpOrder;% S, Z+ z3 O5 |& O$ f6 a
                        part.move(@);-- load part
) `% @. B# r; k7 q                        @.CurrIcon := "load";: u* }: w. L; U& m1 t8 t7 a8 `
                        GlobalDistObj := part.globDestination;
& p* T% l& z1 [! A5 Z2 Q. C+ {6 N                        assignLObj := rgmanager.rgAssignL;
, G* Q5 n2 Q" M) {3 e* {7 G                        row := assignLObj.getRowNo(GlobalDistObj);
; G6 G3 {& D" _                        if Row = -1 then -- since 70/ H# M5 {! f  o
                                if lan=1 then) S7 c/ t% Y( [
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),7 O# T2 g/ p3 v0 D6 t
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
1 A. s6 s" e0 s/ X                                else
$ i  z9 H& ?- `6 K7 T5 W" `                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
) p9 R& V) R- v% q$ A& S0 S                                                to_str("in docking station: \"",?.~.name,"\""));                               
& W, S. H6 Y) m" ?: S. E                                end;
+ m* t  X1 _. I2 W7 J! U( H                        else
( P2 g8 m' D0 v" X8 `                                @.Destination := assignLObj[1,row];
  h2 a! R* _& o- d2 Y  F3 T5 J                        end;                        : K' S7 x% Q6 E8 e, L" \
                        newDirection(@);" ^* ?  e( i# U
                        @.HasOrder := true;
1 g6 Y" S! G- q; v6 g                end;
! `6 I5 h+ f) K. p, c        end;+ I* d+ X# u  h" c7 ]1 N0 R( F; T
end;        -- of the method
  j7 g  U9 n2 o. U6 i! {6 p7 T) z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
* Y" c- p; ]+ o
# o: S' s9 b$ t, t这是AGV_putin中arrive的method。% N) N; j# e) l6 ^  }* z
2 V  ~9 E9 ]4 w$ z6 c
当到达物料速度越高时,这个报警更多,
+ y/ U! a: T0 F9 w可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。& O, Q' ?6 j4 `# t4 E
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?8 R- i" I/ s; C/ a! W$ `' s& @& \
( b! L7 M  v( }  _* q- c, a
另外一个小建议,就是move,所有的move都可以这样
! g, ?) q6 J+ i/ R, rif not move() then debug end
* H: X9 ?4 P& @/ m这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。- A" o1 a0 Q1 M0 H
plant simulation中的free libraries有AGV模板,
3 D2 m$ K: |; S, h里面也有案例。
1 N0 \. z& J4 t6 V) \$ Q( l% W我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
( R0 i* P# D; h$ X3 q$ N5 r2 C3 s) v& ~% j
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 3 o6 R/ ]1 f2 @6 D; g* w) k  t

: l6 M) G# {3 H% |那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
2 o: ~9 F: E+ |" ^这是AGV_putin中arrive的method。
8 e; `- ^' X7 W* H6 H  [
' z  O6 c2 D; x当到达物料速度越高时,这个报警更多,
3 B! @, M3 X* B5 k
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-14 15:57 , Processed in 0.018360 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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