设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7571|回复: 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'3 R0 ]! Y7 m$ A5 |0 \# t9 q
*/
- C( s+ F' w2 w3 w2 o. u! Ris( @, ~8 R  d* w
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
' s. A  X+ ^. c) Z& i# @do
1 ~2 o6 k- N! F5 J! [6 Y        Lan := rootfolder.Internal.Tools.AOLlanguage;
2 f# b' n! Y" U$ t4 r) k- m        if current = @.Destination -- else return
/ E, l3 C% Z# [  I4 w        then! O. L+ U, g$ [
                @.Destination := void;3 q7 D. M' [; N+ J1 {7 `# W
                if @.occupied then- O+ m( t3 _! c( D6 c
                        part := @.cont;/ ]) t! L: B2 R  L, S. [1 F& a
                        @.transpOrder := void;2 n! \0 g" Z) Z: J1 c' B
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,+ H  Y- z! V5 Y* k5 N! d
                                @,root.eventcontroller.simTime);
2 w9 i+ W3 H* t6 `                        @.HasOrder := false;4 m: N5 N0 e: b, x* \
                        @.DrivingHome := true;
1 Z6 A5 B4 K8 }                        rgManager.tryToStartTransOrder;
0 [% _1 Q+ M$ f. \: N, Z- ^                        if @.Destination = void5 _$ Z' T- y; m  H/ Y
                        then -- no transport order for vehicle @
. w9 N$ ^& Q3 w/ e                                @.Destination :=
- F4 K. X$ _5 L0 v                                rgManager.nearestFreeStation(@,track.~);3 Q+ Q# B+ H" f% E
                                newDirection(@);   8 z7 E/ a& J" n7 t. }/ X
                                if @.Destination /= void then8 I# D% V  N% {& g6 B0 F" C
                                        @.Destination.NumReservation :=
+ D( h$ D0 K# _  g6 N: T' C                                        @.Destination.NumReservation + 1;* w8 e- a9 V; a8 [. u! }3 Z! ?
                                end;2 W5 @3 ?& l, v* J1 Q! g4 O. A
                                @.CurrIcon := "drivingHome";
, q6 O9 l( O7 v) X, X4 v6 i                                @.DrivingHome := true;
: w' y$ r9 \+ G8 z9 e7 O7 k9 X" [5 `                        end;
2 U, J6 g; W2 g* T( D+ O3 R                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
+ F* E% _* b4 K7 K$ m                        part := @.transpOrder;0 ]" P6 o; }" X( G# R7 P, ^
                        part.move(@);-- load part& f* Q/ P  T8 ]9 F. v4 r
                        @.CurrIcon := "load";) o5 n- ?/ U  ]: l9 g+ _$ L
                        GlobalDistObj := part.globDestination;
7 R" r5 S6 X0 W. @; G                        assignLObj := rgmanager.rgAssignL;, Q' E6 W% ~7 J. [
                        row := assignLObj.getRowNo(GlobalDistObj);4 _; v( A7 R4 I/ K  w) l
                        if Row = -1 then -- since 70
8 r/ i4 g. L/ O% i, e                                if lan=1 then% n' g' K8 B- ?* I  [+ J8 y" I
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),1 [5 _  @/ p, h6 T. k4 j# U. X; o
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
' D0 j, Z# l( C- r$ J/ y                                else
6 H& t9 h. L1 P* `3 i                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
( g7 a; a/ }+ a" O3 ?8 E* u                                                to_str("in docking station: \"",?.~.name,"\""));                                ; k2 g, j( h9 g" B: R$ j, r
                                end;/ ]1 B1 L. A* o
                        else/ ?4 x. J0 r; e  J- a; p
                                @.Destination := assignLObj[1,row];: ^' h( Y$ t' a
                        end;                        : H' g$ s5 C# j4 B9 I- @
                        newDirection(@);. I  I) `& g* f- }/ L7 p
                        @.HasOrder := true;* T9 t$ B4 c# D$ I* H
                end;' P* x+ Z' T5 F3 ~! Z
        end;
. o; i/ ^# j& f8 uend;        -- of the method
1 ^" Q: O4 z7 L% c
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
6 w5 q4 \2 E$ A6 _! Y* {; V  k* T" `; L5 o0 Q, v6 L9 a
这是AGV_putin中arrive的method。8 W0 t" G* X/ H: W) d! a- h! K4 c
3 }  d; j# ^1 Z
当到达物料速度越高时,这个报警更多,
) G. i$ f( s  ?- l可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。4 H8 ^6 W4 ~/ X$ v3 T3 |
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 K' x2 V9 ?  P9 E) r5 n
7 {: A3 ~3 D" V; D) S另外一个小建议,就是move,所有的move都可以这样2 q% Z! E3 h9 w6 Y( x1 U( J
if not move() then debug end  s  X2 ^# G/ w; |
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
7 Y. \, L) T0 A+ f# {6 ?plant simulation中的free libraries有AGV模板,# y$ x0 {0 I/ t+ Q
里面也有案例。
( Z0 z2 I, y! b2 |  B% S- k我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
/ T# G; B2 R) S0 o$ x1 r6 R6 X, o8 \  D8 G) c3 j
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" f$ m# U( I/ }
1 Q; w: l; P; x: l那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
6 K4 Q. v- u9 Y, I! I这是AGV_putin中arrive的method。( A* a% F" ~# ?# R

. W  Q2 t. }# O, u* n4 B4 R当到达物料速度越高时,这个报警更多,

. |4 W/ {% _, _/ `/ g0 x1 U另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-18 03:13 , Processed in 0.020212 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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