设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9443|回复: 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'
, l; J- T" G( ]$ t, U*/
2 g9 T2 J% g+ [( _. |5 Mis; y0 x$ l( Z. \! [1 F9 G0 w7 @: M
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
3 I1 R- K7 @0 Z( _: _5 r. i8 gdo
' u' f0 b# b$ i2 i) I        Lan := rootfolder.Internal.Tools.AOLlanguage;. R! D, Q0 l5 y: t  C2 C! X" E
        if current = @.Destination -- else return
% l' {$ P& k/ l  e        then, ~9 _. Q0 u% s7 ~5 `& Y  |. Z; _
                @.Destination := void;1 t& b9 J5 m( |# `0 g
                if @.occupied then
' x/ Z  f' H+ n, _                        part := @.cont;
3 K+ U1 b; r$ O9 l+ I                        @.transpOrder := void;
. S4 D( e* M$ ~- a, H                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,( ?5 a! Y/ [, h7 K+ j- |4 R
                                @,root.eventcontroller.simTime);
9 N7 C. U" `5 W+ P) o                        @.HasOrder := false;. _6 Y+ }  l( R+ [' K* u0 O6 l8 o7 t4 |
                        @.DrivingHome := true;: x3 `2 b1 x8 w( P9 c3 ]( e# [3 c
                        rgManager.tryToStartTransOrder;4 E! |) ^1 L7 v. [& s9 w; d0 u
                        if @.Destination = void+ q, C1 j/ {# M' Y6 ^4 Y2 h
                        then -- no transport order for vehicle @
+ P  f8 \! T; Z                                @.Destination :=
! f1 `; n( m1 z0 d/ D                                rgManager.nearestFreeStation(@,track.~);
- Z' ~6 z4 V' X2 H: y, U                                newDirection(@);   
4 j% X) c1 o; r  r                                if @.Destination /= void then
2 }9 ~4 M6 P+ S2 e" A                                        @.Destination.NumReservation :=
6 b1 r( |. u' i/ b9 |                                        @.Destination.NumReservation + 1;; Q# e" q* o* t, ]8 ~$ n4 ?8 j
                                end;
5 O/ T, P+ Z, E+ X1 q                                @.CurrIcon := "drivingHome";
4 d7 s+ h$ V# d$ C  O0 b                                @.DrivingHome := true;: j% i9 T( U2 ~7 L3 f
                        end;# P8 y. Q0 U. W- b9 U
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station5 c7 a9 N. R2 R7 T3 H9 N- O: M5 |
                        part := @.transpOrder;3 j( r' B" R' d" [8 n6 m
                        part.move(@);-- load part1 `" K- b# C+ n$ T: ^! u& C* a
                        @.CurrIcon := "load";! J; E. w: U4 D3 X6 M
                        GlobalDistObj := part.globDestination;8 B4 }+ l1 {8 P
                        assignLObj := rgmanager.rgAssignL;* d6 v! K& o; p# M7 C
                        row := assignLObj.getRowNo(GlobalDistObj);& Q& m! J4 g8 L9 }! Q* R. p4 ~3 r
                        if Row = -1 then -- since 70! f) J! s4 z5 N6 C. T& ^
                                if lan=1 then
8 l$ Q& I1 t3 m4 [. x, r                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),$ ?2 B. D. F* q3 F
                                                to_str("in der Andockstation: \"",?.~.name,"\""));0 }/ n& T3 a1 Q$ C5 X
                                else
6 D. X4 b4 P+ {                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),3 v% f* e, x. [( J8 s9 T# r
                                                to_str("in docking station: \"",?.~.name,"\""));                               
2 S3 D1 s! p  g7 Y                                end;
6 }2 [* Y# \) n0 U0 {  b% j  T                        else
# g. ]% g" W, V- d                                @.Destination := assignLObj[1,row];' h5 r& t; f1 J# D
                        end;                       
  {) P$ k* ]4 T9 a/ a- f                        newDirection(@);
' ?$ M6 N3 U2 ?                        @.HasOrder := true;: V" u9 M  O& W! t/ P' h
                end;
+ N/ N7 V* u6 T  G+ y        end;) V$ j8 y" I. z9 e& ~$ B: Y! ^
end;        -- of the method
* V" g- u2 G, @
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 8 c# O: w& o* O

- s- |: E9 I8 q8 a; }# c$ p  k+ f这是AGV_putin中arrive的method。
. i7 d  R5 j! [1 o5 ^+ k2 \4 F; f5 s0 E. Q. f9 M& k& B
当到达物料速度越高时,这个报警更多,$ H3 D& W5 D5 F
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
8 @5 q) f  o4 \$ }程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?: d, o  F( x, c4 b+ d/ m" p8 {
2 e4 O# f7 R* Q9 U: }$ l: x# |
另外一个小建议,就是move,所有的move都可以这样
9 Z# N% d7 R. I: Z/ Y% gif not move() then debug end: ]3 s! I6 z' i0 U$ ?
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
! _7 U1 t5 `- H1 l3 B3 qplant simulation中的free libraries有AGV模板,1 d0 E4 C/ K3 ~/ X' \
里面也有案例。- e, _8 g( ]! k
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
, T0 ]7 C6 f3 A# R2 p- H$ ^$ G! a: w. O0 g( Q3 ^' {( x$ R% r
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 1 u7 b" t9 q& ]

/ G. \% d  j+ y; {1 i. Q那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 3 R  B6 b9 }6 w) s- i5 n" l
这是AGV_putin中arrive的method。2 ~3 W9 n/ Q; t3 b) y
' a, O6 g$ A* _/ m
当到达物料速度越高时,这个报警更多,

5 I4 G! v( G" e. U( p! y/ ~另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-1 08:31 , Processed in 0.018926 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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