设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9878|回复: 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'" X9 I$ r8 i2 D
*/8 v; W4 k1 U2 T7 u8 B. L  v
is- v/ [# D( K! Q6 w  \
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
/ M$ n; f0 N9 F% H3 ]9 ^& L+ kdo
7 `! h, L9 f1 G/ ^0 C' q1 J  f        Lan := rootfolder.Internal.Tools.AOLlanguage;9 }1 J3 d- M. J7 D) Y
        if current = @.Destination -- else return
9 T) G, s, ?  _, s7 a        then
) \* W6 F& m3 c                @.Destination := void;* G8 h6 ^$ }9 H1 u3 F  D
                if @.occupied then
3 o% `0 w  M. p                        part := @.cont;
; H# @" M, ?" K9 l. d9 ~$ g                        @.transpOrder := void;7 t& R, d+ e3 t% j% R
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,- B; l; O  S: O3 u2 }8 p8 n
                                @,root.eventcontroller.simTime);
8 G9 I# f" T: b+ _& P0 M' J$ ]4 a                        @.HasOrder := false;
0 U' `! ^' y  S" O$ k' t                        @.DrivingHome := true;
0 f( X% E4 b% K+ W3 O                        rgManager.tryToStartTransOrder;2 X3 P. L: ]/ }2 y  a/ J
                        if @.Destination = void
" @/ x/ o) |9 h' P8 D                        then -- no transport order for vehicle @
# \' {+ X2 B; B, Z( V- @+ V- }                                @.Destination :=: _% v8 t8 e. E9 w+ a) h7 i
                                rgManager.nearestFreeStation(@,track.~);5 T8 l! M! K* n* x4 J" c% F- ~
                                newDirection(@);   % f  l9 H, B& ?& q$ T; v; K! E. l
                                if @.Destination /= void then/ @7 [% e3 H" @/ H! f- `0 m" ]
                                        @.Destination.NumReservation :=
1 ?. l) ]; Y' V* q4 x8 Y                                        @.Destination.NumReservation + 1;
1 h6 V0 k1 x! P1 L) b4 q1 U/ m* B                                end;
7 A2 W0 @/ I! Q$ i0 f, ~" {                                @.CurrIcon := "drivingHome";( i4 i6 v! n4 v6 L& v
                                @.DrivingHome := true;4 f# i. j7 m( D6 C9 J4 Z6 Q! x4 J
                        end;
! I7 L7 x7 ?2 Q& n( F; P; k                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
9 k6 |) k. `% o; z* v1 @4 M                        part := @.transpOrder;
1 a  {5 y6 b; K6 [! V9 c                        part.move(@);-- load part
# E/ v$ G0 S; m  U' }2 w                        @.CurrIcon := "load";
6 k. y/ n: \+ j                        GlobalDistObj := part.globDestination;, |3 l7 Z& R7 w* T  ^
                        assignLObj := rgmanager.rgAssignL;5 k9 t9 f$ x% J0 d
                        row := assignLObj.getRowNo(GlobalDistObj);  {* N* {; X. O) z/ @
                        if Row = -1 then -- since 70
' z; F# T' I% B2 P7 U5 {                                if lan=1 then/ P0 I' d! v9 \- Y1 H5 \
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),0 N* V9 I; m3 a4 `6 f/ ~/ ^
                                                to_str("in der Andockstation: \"",?.~.name,"\""));  V) s7 I; x% f1 A7 ?$ v& Y, m% J
                                else6 N0 g3 `( x& z  l
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),, b- S( b4 f, y
                                                to_str("in docking station: \"",?.~.name,"\""));                                $ K7 j) {* C/ O* g% r" f- o
                                end;
7 J0 H& }# M3 N* g                        else7 Y# ~1 w" P1 n' D
                                @.Destination := assignLObj[1,row];
" d- i5 L( v( w4 f                        end;                       
+ J6 {: i) i' ~                        newDirection(@);" o0 K9 F& I$ n4 E' i# ^9 V4 s" H0 ~
                        @.HasOrder := true;/ y" u" Y5 \+ P0 j  z; M. ]
                end;3 _) I7 F( v/ U
        end;' d6 s8 T$ [# o# L
end;        -- of the method
* ?. j7 z4 r6 [, \. a1 l1 _
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
( Y. C* T6 E5 u0 K: f  ^5 Z3 w$ m) p
这是AGV_putin中arrive的method。
$ v% c# J( p5 l2 X
6 ^4 r  r+ z0 T, F7 H* C" H2 ^当到达物料速度越高时,这个报警更多,* y! X& N6 d3 L1 J4 d8 @$ n
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。3 E/ Q' P; ?) a; g% Z- z% i
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?& v' c- n; m  P; R2 t

2 v/ d" X/ y( s% t  U另外一个小建议,就是move,所有的move都可以这样* D7 I, e7 p# M5 P/ W1 M* U
if not move() then debug end
2 z& c: Z# g* m这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- A! V% V0 r5 b9 C- eplant simulation中的free libraries有AGV模板,
5 s( `' z  c$ ~: i里面也有案例。
6 i$ A9 i. e; a; v我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。- r8 }# F) F% t' V
& U: ^. T9 j8 @
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
6 k1 d5 [0 z& U2 S5 R0 I; @; Z
) {7 f5 M" J3 c" A2 S6 i那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 , l: j* Y$ L2 N1 W3 ]8 B
这是AGV_putin中arrive的method。0 L0 w. l+ |; f5 I; g5 f  R. D
# L, z" F) j& q4 Y% I0 _
当到达物料速度越高时,这个报警更多,

, p, C6 n' }& p4 M& e) C2 a另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-31 04:25 , Processed in 0.018624 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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