设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9532|回复: 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'
+ a  e- r5 g, {/ y*/7 ?  J# J+ U5 G3 P; p6 u% t
is6 y9 i# o/ K+ T. D
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
+ Y( [9 t, m- z' v, zdo
0 W( K, s$ \; n        Lan := rootfolder.Internal.Tools.AOLlanguage;2 r* M+ F4 x7 a/ Q0 i& w4 b
        if current = @.Destination -- else return
& U2 H. V+ t4 Z. F) L        then
- `0 y. w0 x- r! e5 E                @.Destination := void;
/ w3 n2 S( U/ L8 e) T                if @.occupied then
8 I  E. B! _- Y0 J  {                        part := @.cont;
5 ~1 B# A, w' i# a' J                        @.transpOrder := void;- l7 _2 P# I0 S, o& A" N
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
+ v  w9 s( y6 u; D1 v                                @,root.eventcontroller.simTime);
. c9 G$ Y; M. r$ g8 o2 Z                        @.HasOrder := false;& c9 H3 [' P- ^2 c  T- T: m/ N
                        @.DrivingHome := true;
4 H7 d! c, j8 T6 ^' h/ q                        rgManager.tryToStartTransOrder;
8 C  B! T7 L3 B( E0 N                        if @.Destination = void
! V7 _6 ~6 W$ S                        then -- no transport order for vehicle @1 W4 x' C+ A8 o1 [  l8 {3 ?! I: @: j
                                @.Destination :=
* q& U/ ?& ]* k) r0 m                                rgManager.nearestFreeStation(@,track.~);
5 \6 e; F2 C. v0 H% {# _                                newDirection(@);   8 B) `  s9 a0 u1 Z, u3 x9 p* q
                                if @.Destination /= void then% ?- H0 b- s) q8 Z, X
                                        @.Destination.NumReservation :=
3 Z: Y+ K0 x" I5 t& _1 J3 D! N# |/ Z                                        @.Destination.NumReservation + 1;1 V( q5 |8 ^: F" n% E
                                end;
8 l# M$ H. x% F$ L2 H                                @.CurrIcon := "drivingHome";
1 T8 L% w5 f( b                                @.DrivingHome := true;6 \; O+ o  y8 h1 f
                        end;
* C( y/ r8 ~8 S, c  U) w% l6 W" s                else -- the vehicle @ is empty, both vehicle and part are in the same dock station: R! h! d& [4 D; P4 P! K9 j
                        part := @.transpOrder;1 \# x4 e& Q) l; H: Y
                        part.move(@);-- load part
# E. O9 I* F% ~3 f' P                        @.CurrIcon := "load";
* z# k: R5 [! S$ s" u2 Z/ }                        GlobalDistObj := part.globDestination;" _8 e8 }/ p! a& r. N9 a0 q6 A
                        assignLObj := rgmanager.rgAssignL;* s7 v1 Z, _$ O( r
                        row := assignLObj.getRowNo(GlobalDistObj);' R) v. n' M  y( c. T2 @' v
                        if Row = -1 then -- since 70
; e& G! w  F4 @4 u$ a! c                                if lan=1 then
' r# L! ^3 U# c" ?5 e' h1 H8 w                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& {8 X3 N$ f* M( \% W9 q                                                to_str("in der Andockstation: \"",?.~.name,"\""));0 f+ R% g8 p/ ^: u' C
                                else. ~( V; A* H8 Z+ l2 B6 _; T
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
3 F' K# x& q3 M# D) `+ U                                                to_str("in docking station: \"",?.~.name,"\""));                                % x# T! W1 A: F1 H, t" b, i1 B: s3 r
                                end;% _5 \! ?' \- q; M, `2 e
                        else! T& i; X9 G- d7 P5 i- \' y
                                @.Destination := assignLObj[1,row];+ @7 I. Z  R% Q% _2 U
                        end;                       
% |! d" l, \! l. U; f/ f* R1 [                        newDirection(@);8 O  y& g! E' T. H% k
                        @.HasOrder := true;7 {7 |8 w+ J; T: h. h
                end;% b) j" U) v1 q3 B3 y' a
        end;
4 E  u# O! v" I) ]% f7 kend;        -- of the method- m% E, g( Q" \
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 0 q5 v! ]* b: @9 u" Z
1 w4 ]- V$ A; I! f" \# e
这是AGV_putin中arrive的method。/ S6 Y2 d( r& p: f; J
* P' f1 R8 R3 i* @7 y
当到达物料速度越高时,这个报警更多,7 J) e- ~0 Z! D3 X* v
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。, E0 D" I5 C2 P% R- T9 w
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?& C0 A4 f# ~- R- r
# H/ K  G% D; k- O) r( y
另外一个小建议,就是move,所有的move都可以这样; [; q$ R% X7 @$ }; q
if not move() then debug end
6 L/ i7 ^! j$ g0 B这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。/ f" o( M  j8 |8 B
plant simulation中的free libraries有AGV模板,
/ B/ S9 t! Q* i0 s% y' ?里面也有案例。" A( J1 Y  W  R) l$ c4 \) U
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
- `: F: f; q+ z' ~3 b2 {  D: p( Z3 R- T/ `5 A1 H* m! E; z
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑   t5 ?- ^8 ]. W

6 C" W  U1 h3 p& l  S那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
9 }+ o' c6 Y3 p这是AGV_putin中arrive的method。
$ r! @4 y+ \2 {9 U1 W# l, S' R: F( Z6 c
当到达物料速度越高时,这个报警更多,

9 `* Q7 n) h5 P- }2 x. S' g! S5 S另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-6 12:24 , Processed in 0.020008 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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