设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7772|回复: 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'  V. O. d& e3 b9 I0 z; }- r
*/0 X! V: V# K7 H+ y- y+ O' t; r( s
is$ t# A, B& U' q7 F) b
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
& O  D$ g) d5 e& Xdo
/ a2 H8 y0 ^. @3 a2 D% N        Lan := rootfolder.Internal.Tools.AOLlanguage;
2 E' S, y5 q! [0 K        if current = @.Destination -- else return; F+ V. b4 H( W: H" b4 s( T
        then
  L, a9 Y' W+ v0 S6 W3 T                @.Destination := void;/ ^/ S( B" `7 z, q) v
                if @.occupied then) j6 j: u& a: S$ M$ J
                        part := @.cont;3 ^7 b6 \0 T/ M; u5 |. x/ a  n
                        @.transpOrder := void;7 Z- x6 v/ R7 o4 J0 R
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
% v% ^; _+ n8 O3 C% w                                @,root.eventcontroller.simTime);1 G2 L; i/ V- Z' Q3 S2 E' i
                        @.HasOrder := false;8 c$ V& K: i# h8 N
                        @.DrivingHome := true;, Y+ K( H5 N9 d5 Z. C
                        rgManager.tryToStartTransOrder;
) c/ q4 j& X: \+ N; }                        if @.Destination = void0 q. H; a& Q; U- @
                        then -- no transport order for vehicle @9 D( V- v( d4 J2 j% s
                                @.Destination :=0 |$ u1 j7 W1 K$ u
                                rgManager.nearestFreeStation(@,track.~);/ F5 p5 i) t. V# X7 O" W7 ?2 |
                                newDirection(@);   
, k5 W$ L9 b+ ?: w6 X) H                                if @.Destination /= void then0 T) T4 B4 J# d7 h3 K$ K8 I+ O7 H
                                        @.Destination.NumReservation :=
1 _. ?1 h; j. ]2 f                                        @.Destination.NumReservation + 1;" }7 a- G4 C9 R/ G; \, e3 n3 L# G
                                end;: Q" A/ c& R- I' y* Y
                                @.CurrIcon := "drivingHome";9 ]: ~4 r! F7 h" q* r! I! M' p" {) q
                                @.DrivingHome := true;$ L7 W. W4 D3 }5 a$ t  \
                        end;
5 W7 `) Y* ]8 T+ L3 U                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
' C" |/ u( T% B                        part := @.transpOrder;
, L: O0 n, T% X% U4 ^  U                        part.move(@);-- load part5 N+ P1 R" Z2 ]
                        @.CurrIcon := "load";2 ?4 @4 R0 Q$ Y6 N5 B
                        GlobalDistObj := part.globDestination;! y7 p1 z3 {% i
                        assignLObj := rgmanager.rgAssignL;3 ?, |2 c2 O% U
                        row := assignLObj.getRowNo(GlobalDistObj);
) A, i& N! @6 f                        if Row = -1 then -- since 70
( }& N4 b9 }4 K6 H7 n, I                                if lan=1 then
8 ?: \5 B: O1 L- M                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
7 G) s6 G; s; o4 i+ x                                                to_str("in der Andockstation: \"",?.~.name,"\""));, F+ ^, s1 i2 Q, y3 j! O2 T
                                else9 r# L( Y' E3 t; h/ x. o) Z" L
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
. {7 J) m; p% ?! V4 W- C% ]( x0 x                                                to_str("in docking station: \"",?.~.name,"\""));                                ! f8 Z3 ~& t1 a. L4 P' N  W
                                end;
. ^  g7 p1 n( `* a6 Q. j8 E                        else5 ]+ s* c% S" x# i
                                @.Destination := assignLObj[1,row];
( W( f' ]7 q  i                        end;                        % D* E$ f/ p& i4 K7 c! j- Z
                        newDirection(@);7 N# g; _. [* w6 O/ c  h# G0 q; w
                        @.HasOrder := true;
& k( c  D7 L9 Z                end;( q+ L# r* O/ A8 R) p, m
        end;
& v4 F+ f- P" O& n* u$ U# Iend;        -- of the method
) T+ p4 ?+ i; g7 k3 O
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
4 k, D0 p% m* {1 h1 c# C* P
2 `2 x7 X. t2 q  h4 X8 V7 N- u* T这是AGV_putin中arrive的method。2 b4 ?4 M; e! a( M: e; Z$ b

3 Q( d" d* D: f! F0 G, W当到达物料速度越高时,这个报警更多,
0 b& f$ `" ^0 l6 I$ r0 P可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
- O5 s( v, o( ^' U# H' K. _程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
$ b' S" H9 V2 Y. T0 y. x9 U# ?1 X' ^5 B
另外一个小建议,就是move,所有的move都可以这样3 G+ S* n7 J- x2 O2 ?
if not move() then debug end) b, U2 T( \7 J  i8 B
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
, E5 W5 Q* z3 ?" p, Y) n# zplant simulation中的free libraries有AGV模板,, ]6 m( y$ N6 r, }6 k
里面也有案例。
. k5 O1 ^! w" n我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
  D4 r# f6 d5 v7 L0 _# K- ~2 N1 c& C
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 0 z' `! u% o9 _- ~/ G4 H! v4 v
5 E" l, B/ c! a3 s. T
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
) d. v; ]' [% u5 h* ^' I9 p. H: x3 H这是AGV_putin中arrive的method。: m! v' R# }1 `% |- a  @
' G) @6 D8 v- H7 K( ]% R
当到达物料速度越高时,这个报警更多,

+ y) @% N2 Z6 r. `另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-28 18:54 , Processed in 0.021908 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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