设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10289|回复: 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'
' ]4 }  Y/ u; E% }$ L3 l*/
" v8 \( J3 S' bis
$ \0 M* F9 N( f        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
1 h/ c& ?* j; h( R/ Ido2 d, ]9 n2 T! n1 U' j& C, [
        Lan := rootfolder.Internal.Tools.AOLlanguage;- M) V" Q! R; \0 F9 S: u
        if current = @.Destination -- else return( K' [8 Z, k/ X
        then
+ a' f. A# M; [: t' e) c                @.Destination := void;
5 H% P; V; @' [: N6 P                if @.occupied then
0 |* V- f9 I! T5 D                        part := @.cont;
. R, O  A8 v6 |& L6 R/ d; a7 ]                        @.transpOrder := void;1 F. \$ A& H5 h0 ^5 S% G: T
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,0 `5 T# ?. Z9 R  r# ^0 N" a$ o
                                @,root.eventcontroller.simTime);- w3 o7 L. I0 _6 |, t3 `& p3 H
                        @.HasOrder := false;
: \3 L$ G0 ~5 s0 b' b6 s. Y, \                        @.DrivingHome := true;
$ g( h" t+ ?+ {% m                        rgManager.tryToStartTransOrder;2 I/ }4 s: L* X9 O) G9 H
                        if @.Destination = void
7 e8 U6 B9 K% R1 T                        then -- no transport order for vehicle @* I, A( }( f' h
                                @.Destination :=
3 V7 v- W+ ]' \                                rgManager.nearestFreeStation(@,track.~);
5 }$ k- s- y' I3 g+ M: k$ a                                newDirection(@);   
, ?0 J: f2 a7 ?8 Q/ s+ m+ m2 Q                                if @.Destination /= void then
; D4 k1 ]0 {( e4 w! `! [. J  d6 F                                        @.Destination.NumReservation :=0 k7 ?9 z) y6 z) r9 t
                                        @.Destination.NumReservation + 1;, j$ c/ T6 Q8 ]; L" P# L% A  g
                                end;9 |3 I! n* i) Z# y# {) r
                                @.CurrIcon := "drivingHome";+ N. L$ c. g9 \& v% b$ G' h
                                @.DrivingHome := true;- g4 K! t3 b+ K' H% X
                        end;
/ D% I1 q2 q( g9 J% [2 d! C' }                else -- the vehicle @ is empty, both vehicle and part are in the same dock station6 `4 y" b( \) m4 ?# P+ u
                        part := @.transpOrder;
) N2 ^7 X3 R: Q4 e7 ]# U8 Q- W! I                        part.move(@);-- load part7 L& @& S$ @; `% ]- z& |
                        @.CurrIcon := "load";
3 X. u' p. w8 u6 f) c                        GlobalDistObj := part.globDestination;
# |$ I; x4 C6 t3 i                        assignLObj := rgmanager.rgAssignL;
7 i5 H7 }) k. @8 E                        row := assignLObj.getRowNo(GlobalDistObj);
; O7 a4 |/ V6 k                        if Row = -1 then -- since 703 M' j- o( _; P4 ^# g; H
                                if lan=1 then
& D( z$ h; \, v7 V: Y1 C                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
# V; d' D  u/ @4 w0 _- f2 G                                                to_str("in der Andockstation: \"",?.~.name,"\""));
5 }' i7 f. d: N/ S; J* u                                else
* B( j, d0 D( ^6 e" X                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),; ]& z0 {7 @4 @& G3 Z5 S& n. Y
                                                to_str("in docking station: \"",?.~.name,"\""));                               
5 C  D; r* X5 x- l5 V                                end;1 [( T/ p- l3 m; m" \/ D6 v
                        else: |3 C7 l( b$ X; S* |
                                @.Destination := assignLObj[1,row];
$ P$ ?4 j0 F/ f' e/ ?' O8 O$ p# x                        end;                        . W8 P; R5 c% e- X+ C
                        newDirection(@);% V+ D$ l) S- [' G# m3 M8 l
                        @.HasOrder := true;
6 I1 i. c* M" E                end;7 Q" j& m, ~, c% {  e$ t
        end;, E/ R/ J# X+ }, Y0 a3 e* L
end;        -- of the method
% T& j: i5 u% {, s
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 3 I- H0 F3 D- a3 E3 @6 i
* g5 W' P# A9 O9 v7 M
这是AGV_putin中arrive的method。4 X- s( t( y- d# T1 `8 {1 j; E
+ `, v# o  r! T& H
当到达物料速度越高时,这个报警更多,/ I7 i3 j; f) H! ^/ H% X
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。( l& _; X% ^1 e4 c0 a
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
+ R1 A, V9 ^( o* }8 M+ }- G6 u& \" B" Q! w) y( J' X, G
另外一个小建议,就是move,所有的move都可以这样' B" O2 l2 f* ~4 D% A! y
if not move() then debug end5 C. s/ A  t  X$ l) H& J
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。, N! o5 Y" N8 B# _- M+ d  f
plant simulation中的free libraries有AGV模板,8 d- _8 a$ c! w% m
里面也有案例。% ~: n1 X/ D+ p: T/ d
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。# T8 F, O! q1 z5 N, I
0 O; {( Y1 R* `4 G
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 3 N8 Q/ b+ k7 w8 [4 ]

7 V: U4 J! Q  P* }  k# R# B那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
0 Z5 h+ S3 t( H- D这是AGV_putin中arrive的method。
. G' R1 v( [& R! o( Y! z: J& p6 V: C" `$ T  P: i0 ?
当到达物料速度越高时,这个报警更多,
4 g) d: j8 ?9 Z3 w
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-24 19:12 , Processed in 0.019190 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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