设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7344|回复: 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'2 F* w  S0 S+ F$ T+ G* e4 B
*/+ @3 o: Q, E" N8 X( u2 O
is' k$ R* T, R9 c" P% q. q
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
8 Z& @% P6 q: u4 q. N0 }do
3 S( a, A/ [  \        Lan := rootfolder.Internal.Tools.AOLlanguage;
& u5 M. C5 E) [: t* X  u, D/ G1 w        if current = @.Destination -- else return+ L& g( N; R8 V; u; X; U
        then
: [( x  o7 }9 r3 e$ `8 o4 K                @.Destination := void;( C7 ]9 d+ U& g3 r4 d
                if @.occupied then
# ?/ K- N/ e- ~+ h( G                        part := @.cont;, t+ U/ J! K7 u( n/ _
                        @.transpOrder := void;
% O- v, f7 ]. c7 p                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,' N/ W" Q2 i9 k0 F$ c" |
                                @,root.eventcontroller.simTime);
; p1 d3 \* H3 U% y" N; F                        @.HasOrder := false;
  w9 B2 M# S. ?8 A7 b                        @.DrivingHome := true;$ A! X/ X# i$ D5 D- p
                        rgManager.tryToStartTransOrder;) r" g5 R( X# ~+ }- p
                        if @.Destination = void, G. y2 h5 \+ ~; ?3 ?) u
                        then -- no transport order for vehicle @
# _1 C( B* h( ]                                @.Destination :=
1 W/ f2 u& _0 f9 m                                rgManager.nearestFreeStation(@,track.~);
9 f2 c& D0 r0 J: G) l                                newDirection(@);   + e* T: q' T9 `
                                if @.Destination /= void then
+ V( U/ {8 ]: I, B  g. p                                        @.Destination.NumReservation :=
8 F* S2 _$ _+ `1 W1 G* @! M7 v- \: v: T                                        @.Destination.NumReservation + 1;3 g( L7 [$ W* }5 p# b: W
                                end;
) ^, g, x, e& a; ?+ g                                @.CurrIcon := "drivingHome";5 L4 J/ L8 N- y  i* ]: J# w
                                @.DrivingHome := true;
4 h, _: x' k3 z/ ~- C+ ^                        end;( m/ C% J  F; @% ?" k/ P2 m2 N/ i0 l
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
3 H! \( F: i& l! M3 _                        part := @.transpOrder;, Z; t, n- e4 ?0 v5 q* H
                        part.move(@);-- load part
3 W. g8 ?4 o9 K  |                        @.CurrIcon := "load";9 t3 F- p) p% o, ^6 Q
                        GlobalDistObj := part.globDestination;
- _( S7 ~) d+ y2 Y                        assignLObj := rgmanager.rgAssignL;, l! x6 K. U. X  h0 s2 ~. v
                        row := assignLObj.getRowNo(GlobalDistObj);
8 b, x, u- ~& v8 K: ]* ~                        if Row = -1 then -- since 70
: h0 o) `  z* n5 _+ a+ Z                                if lan=1 then
9 e) P5 p( U$ t2 s* [0 r) Y2 z                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),# V! n+ l. r3 Y) l1 j
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 c& r% U& o2 d: w                                else, Z! g" g( R* |8 q: y
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
) ~6 l- P8 z) D* H' T                                                to_str("in docking station: \"",?.~.name,"\""));                               
$ Z. N3 D; P/ B3 u$ N                                end;
1 \2 u9 f, r. W  @                        else
. y& S( h8 W* \0 x7 V# m                                @.Destination := assignLObj[1,row];
& ^4 |+ G  K& @                        end;                        2 O' R5 ]7 l6 p* a7 O4 B: J% {
                        newDirection(@);1 {: |: f6 @5 q* i! Y2 ^
                        @.HasOrder := true;1 z  H) f' U. M4 u; [
                end;. r" j: L/ I! P9 g' `: r- f
        end;0 H5 P+ f0 y2 H+ w
end;        -- of the method* {, _' v2 V/ N7 d  T' N
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 4 N5 P% k( I, k, \& r& X9 a% [7 e8 J7 L

! o4 X2 {. t, s' x, N/ |7 b5 m% r这是AGV_putin中arrive的method。9 W4 y; _5 |$ P5 L3 g
7 D7 l7 y4 `* t
当到达物料速度越高时,这个报警更多,
' w* n; j9 C* U7 ^3 G5 n/ t# T可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。8 S2 j0 @5 l0 Z3 ?* W
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?* Z" V7 |/ C: ^

1 T% D3 T) e3 y2 ]另外一个小建议,就是move,所有的move都可以这样1 Y' r5 U" E9 T* T2 M
if not move() then debug end
& U6 z/ ~8 `0 v& S2 b这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。4 v. r9 h/ o. W8 I& a2 ~6 Q
plant simulation中的free libraries有AGV模板,
0 J" G, }/ D2 H' p5 x* Q" r里面也有案例。( I7 B, K: ?- t! c. q* I8 T
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 n* \+ l3 G8 q' c3 U4 v: s" _# [7 [* N1 R$ \
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
& M  a  u7 F: \5 d  T
+ t, Z0 e+ n& ^& e  ]3 U那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
, F4 U# p' o& ?7 E2 J2 q) M这是AGV_putin中arrive的method。5 ?7 U$ z2 Y1 h5 B# r0 g
) P) T1 r2 _9 M& I& `+ ?! y
当到达物料速度越高时,这个报警更多,

2 |+ T  E/ ~' w. ?0 w另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-5 10:29 , Processed in 0.017775 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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