设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5985|回复: 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 F& t0 I7 Y! \3 Y
*/; K# z) A8 A1 d" s, z9 P2 A
is
- g0 h5 X; C0 T5 W3 z% C( J" S        part, GlobalDistObj, assignLObj:object;row,Lan:integer;& @" B/ c8 ]# J1 C. [
do8 u' ~1 d, {: }9 ~% H  k' P# T( A
        Lan := rootfolder.Internal.Tools.AOLlanguage;
# r% C, ^2 n" G6 |! h        if current = @.Destination -- else return3 H4 P) v+ G$ O( L+ A
        then
: B9 V9 T8 F' R9 X3 r                @.Destination := void;
7 h. y; C5 K( ^* x1 z* L/ x                if @.occupied then
& R- Q5 Y! L8 E                        part := @.cont;
+ P* S4 `' n, W/ u$ ~                        @.transpOrder := void;
; }9 t, G. ^) I. ]2 ]. \                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
. _* a4 ~  }0 a8 }2 L  V                                @,root.eventcontroller.simTime);. S+ z7 ^* d3 d( U. t0 D
                        @.HasOrder := false;
/ v8 v5 ]/ J0 f7 V$ k                        @.DrivingHome := true;1 L4 X+ Z0 T" f& X& [. K7 J& q% q
                        rgManager.tryToStartTransOrder;
6 t: ?& J, L5 t& h7 z$ r                        if @.Destination = void
8 W* D" [' ~( A8 Z. |. I                        then -- no transport order for vehicle @
: @4 v- ?5 ~5 l6 K% k4 E                                @.Destination :=! @, @) v7 C1 j! i$ ~( P
                                rgManager.nearestFreeStation(@,track.~);
# j" b7 o. Z  S- X7 y+ {                                newDirection(@);   - |7 s  w0 F$ a3 h* R
                                if @.Destination /= void then# J' |  k" Y! Z4 J  f5 I
                                        @.Destination.NumReservation :=- Y% M( N" O/ t
                                        @.Destination.NumReservation + 1;
6 D+ v9 _9 A4 j8 F4 i/ p                                end;
) |; ~( M8 S( d# S                                @.CurrIcon := "drivingHome";
8 [( c) G& h- k* I+ u  }                                @.DrivingHome := true;1 g. Z* K8 q6 O
                        end;# o% L' X$ ]! \& s, `
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station) g+ f2 r$ ^$ H7 T4 [- S5 I
                        part := @.transpOrder;3 e( d% _* U2 ^: H& @( r
                        part.move(@);-- load part3 J) R9 g# k7 m* Z2 Q! S
                        @.CurrIcon := "load";& z- u. B- V+ e# F
                        GlobalDistObj := part.globDestination;6 u  l. |. J* i6 T' ^1 }' M0 {
                        assignLObj := rgmanager.rgAssignL;5 v3 `- P4 Y' h3 }; o8 a4 `, `( T
                        row := assignLObj.getRowNo(GlobalDistObj);- Z8 q6 W, N/ i
                        if Row = -1 then -- since 704 T8 s, t6 n3 ]5 _: z
                                if lan=1 then
% @( D% d) U: t4 B                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),& T8 q) X) u( n- q: ?" n9 z
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
1 G. L! A! {% ^3 j+ O( W4 y$ g                                else
; P; e$ _6 P" @& h( a& `2 a6 K5 ~2 i                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
2 f  s9 x& C4 l7 I/ G' {                                                to_str("in docking station: \"",?.~.name,"\""));                               
% x6 H5 C) I& p1 d                                end;
3 T1 C) L' u4 X                        else& w1 Z$ O; g7 s" x: ^; Q9 T
                                @.Destination := assignLObj[1,row];
: k$ Z& t) `1 j6 g* Q+ {                        end;                        1 R, _. X9 X) R$ e5 x
                        newDirection(@);, y# `3 D* s6 e& R+ d
                        @.HasOrder := true;
3 X4 a+ r1 x) g9 q+ F; I                end;5 y6 Y; J/ y4 N6 l# T: l
        end;
% J' B( W/ N! W; Cend;        -- of the method
* Z; g, O9 k3 ^' `7 T
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
( Q/ Y9 v' G$ M
  J" k' R3 K/ q5 y1 O  K这是AGV_putin中arrive的method。
8 ?+ p) T, a% D6 O: @9 q
& G' ~" ?& i+ Q; D; A; d当到达物料速度越高时,这个报警更多,! d; a+ v6 P0 D' B8 r: l
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
, Y! C% L! `+ R- U) u$ @程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?* ?8 M$ ~4 ]* D& t( ?

4 k, ~2 H  r, {/ d% x$ U另外一个小建议,就是move,所有的move都可以这样# l" Y1 t1 ]) q7 L1 E
if not move() then debug end
2 @4 A( i5 J" L8 D3 S) N这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
" q0 e% u! Q, `plant simulation中的free libraries有AGV模板,  T; ?9 c* p1 F$ E& b4 l
里面也有案例。% a+ z( S: {) B, Z8 M
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
' {4 |% K1 R7 o8 }' @7 _/ E1 s# S
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 9 J# O: D5 [8 X. E; S% s* f) O
3 O" {: g& L# N% H/ a, p% G0 ~) o
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 , c4 ~/ _0 z/ Z3 |
这是AGV_putin中arrive的method。6 R( ]$ \+ f1 I( [1 s
( o! }$ d; [) Z# }1 R8 R! L1 ?
当到达物料速度越高时,这个报警更多,
. I5 m. \5 I8 h* L, c
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-11 05:03 , Processed in 0.022115 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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