设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6495|回复: 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'
8 m. F1 P% c2 [*/* Y' {" A( y" \. y
is% H8 R6 F% X$ e- I" m
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
3 z1 x# D& r5 d4 e, b: B+ O; ndo
5 Q( Z% ^: ]. b8 _        Lan := rootfolder.Internal.Tools.AOLlanguage;, p8 Q; F! Z+ ?( v" F2 v' D
        if current = @.Destination -- else return
) W; q1 ?2 W* `- ]/ N: {0 t        then) v  s* M3 J( K/ z4 S. s
                @.Destination := void;
5 T: A/ b3 ~& O6 d/ ?                if @.occupied then! L; ^% U7 v0 F6 j: J& Z7 g
                        part := @.cont;
0 H2 x; D, T9 q- I& H                        @.transpOrder := void;4 H1 n5 d, m% @1 v+ s; x' N
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,3 o; ^, i' w' }; V
                                @,root.eventcontroller.simTime);' e* P& C! s; K6 p8 h$ l
                        @.HasOrder := false;; j1 ]9 s5 P8 C
                        @.DrivingHome := true;, Y2 B/ m1 m' Z4 w0 s
                        rgManager.tryToStartTransOrder;
% ]1 \3 Q) @! d) \                        if @.Destination = void
1 p6 q9 q$ A( C! ~9 J                        then -- no transport order for vehicle @! o( y  P$ v  T; Y. _+ ~
                                @.Destination :=
( x) S6 Y( \+ w7 U" `                                rgManager.nearestFreeStation(@,track.~);
  q/ c/ n8 R& _4 [% I6 G3 i                                newDirection(@);     Z4 d/ w. T1 x, Y1 w. b; `
                                if @.Destination /= void then
+ l: J1 i! B6 B+ ?                                        @.Destination.NumReservation :=
! T  Y5 z% T" Q                                        @.Destination.NumReservation + 1;
' k9 C6 M+ d( `4 z1 O                                end;
1 v; `( X/ S0 c$ z7 Q* a( R                                @.CurrIcon := "drivingHome";
# ~8 q- q, f9 P! Z# q: ?; P+ c                                @.DrivingHome := true;
' w) ^' t+ ]1 _7 f                        end;' p  p9 \, K# H' ]+ O( {& W0 K
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station$ V" i8 h0 ?, I* `( P
                        part := @.transpOrder;
! U0 g6 [$ m* C+ B+ Q                        part.move(@);-- load part) P' M: Z3 f; x4 X
                        @.CurrIcon := "load";
+ N5 s, U) D5 ~8 N* M3 j) K                        GlobalDistObj := part.globDestination;
0 S' x5 H/ t  D- W+ {2 e. ~1 f' u                        assignLObj := rgmanager.rgAssignL;+ U+ P; J1 Q5 e* z. _- W
                        row := assignLObj.getRowNo(GlobalDistObj);
2 n! P5 u- u4 `                        if Row = -1 then -- since 70! [5 P3 p) i7 _7 p+ a1 I/ U' d
                                if lan=1 then: g) U9 [0 [6 K; Y. W
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
3 b  r0 G6 G/ G8 f' h" \1 E                                                to_str("in der Andockstation: \"",?.~.name,"\""));  r1 F5 S9 d; l" Z' \" _$ v5 `& |
                                else' v8 {% k# h; `3 M
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),. E, u( K) Q5 g- n; q+ X* w  ~
                                                to_str("in docking station: \"",?.~.name,"\""));                               
5 b/ j$ i2 S& U" S* g* `2 ]                                end;
% Y: }3 E: }1 i. E1 q. X+ l                        else6 B. O; y: G5 F6 e
                                @.Destination := assignLObj[1,row];
" |8 X8 f( q  @. |                        end;                       
" z8 c1 y1 d% V, K4 |                        newDirection(@);
7 y( V6 H4 \  g* m                        @.HasOrder := true;
0 K, {6 K- r% Y                end;
5 @- b; L8 o* a* V7 R: a        end;/ S) j% ^! J3 ^1 I2 a5 x7 a
end;        -- of the method
5 n" F% F1 G/ F* l  d4 [
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 % Y. ]$ t' f5 r- O9 ?% l  J

# W& P6 E, _# _5 p这是AGV_putin中arrive的method。" f6 H! {# u+ C# K, J$ `% p4 P
: p$ ~9 v/ K. f; N1 T2 E- N8 g, c
当到达物料速度越高时,这个报警更多,/ K! [6 a( O# V  B; |+ B" I
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。0 ~5 W+ h1 H' F; c  V
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
4 f1 `. T8 B6 B9 H- f) C5 O4 ?) i6 E+ ]
另外一个小建议,就是move,所有的move都可以这样' J, ]6 h! n$ {/ ^. S
if not move() then debug end
( u! L* O7 p# B. `( A; ]这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
# |7 f6 J0 @# Jplant simulation中的free libraries有AGV模板,$ R8 i8 ^* F* g8 V; U  U
里面也有案例。
. C: n* \1 D; @! L) e我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。+ R7 _( K9 ?8 p# @& r: U8 z, q; f
4 t4 o+ N% F) D1 C+ ?) j
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
, R7 x, N" Y8 w- ~1 L. L- ^  \4 i2 F* ?! N/ K
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 , J* Q5 l' P0 w0 ]
这是AGV_putin中arrive的method。% _% b* e3 X7 L+ P! S7 U6 C9 o
: ^  ~" n4 }! d
当到达物料速度越高时,这个报警更多,
  E/ G' u5 p3 \. |7 S/ ~- X" X
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-9 19:27 , Processed in 0.016482 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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