设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7357|回复: 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') W2 |( X0 @5 ^- B( t
*/
$ P+ E6 D: O7 ]: @2 Fis" R. _' A" a, G' D& F
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
+ i! o" n6 j0 ?1 qdo' y' X  T2 C# m- }" ]% O5 m; o
        Lan := rootfolder.Internal.Tools.AOLlanguage;1 u. e$ m# ?1 L3 ^7 W( p' Q
        if current = @.Destination -- else return
7 H( d3 l5 ~, o: |; ?        then% V+ E. z9 l+ j; P, Q
                @.Destination := void;' V. p& [5 D9 ~& F
                if @.occupied then
6 k) `: q) t! L# T. @  u                        part := @.cont;
  o3 P- j- Y' T+ W( S                        @.transpOrder := void;( x: q( W9 ?' X) x
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
2 U2 c1 ]2 F1 u5 Q- x1 Z* y                                @,root.eventcontroller.simTime);9 k5 P7 z9 G9 D& c
                        @.HasOrder := false;
7 E# {  Y1 e& y- c! U, y- o                        @.DrivingHome := true;- U# q* V+ E& a# y2 k* n& _$ l
                        rgManager.tryToStartTransOrder;/ F$ g+ w$ l8 n: N* Z7 U
                        if @.Destination = void/ O- B+ E. _. {! \$ ]
                        then -- no transport order for vehicle @
3 n' h5 L  y. n: [7 E                                @.Destination :=
" G' U# G- h; {3 H2 m" V                                rgManager.nearestFreeStation(@,track.~);
9 P; Z% F: y+ Q+ }                                newDirection(@);   * ]  ]: q6 H! @* a- ?
                                if @.Destination /= void then
! F- B7 s$ q/ y" {8 s! O& C                                        @.Destination.NumReservation :=
( K) g0 A/ G9 j5 T                                        @.Destination.NumReservation + 1;
$ m9 w: n2 M9 p* X5 p8 e                                end;
! S, X4 D( |$ |4 {# b( |                                @.CurrIcon := "drivingHome";
! l5 E# U7 d  t                                @.DrivingHome := true;
/ i! z8 Q9 J/ h' d. d4 u6 @8 u9 [/ t7 Q5 w                        end;
% g" g8 ?* E! G9 Z# {                else -- the vehicle @ is empty, both vehicle and part are in the same dock station, H4 i7 X0 S+ e' s3 ^
                        part := @.transpOrder;1 V2 a% f, v# b4 c- @
                        part.move(@);-- load part1 }3 N: |: F$ C3 O' p) v! k- A
                        @.CurrIcon := "load";# x+ d0 c. i0 `  |, w
                        GlobalDistObj := part.globDestination;
( ~% Q! C: p# `                        assignLObj := rgmanager.rgAssignL;
7 J; J. L- n4 Z! M( h; }                        row := assignLObj.getRowNo(GlobalDistObj);
& F7 p) u7 ?+ Y                        if Row = -1 then -- since 70
7 j# ~4 S9 f$ j3 i1 L' C6 }                                if lan=1 then) C" S* M: \# d7 j
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),( j: F1 G9 r0 w" M  p0 }' k
                                                to_str("in der Andockstation: \"",?.~.name,"\""));6 y6 x% m! W$ j
                                else
( a; q" O. H8 X8 K. g, v                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
$ Y$ y8 [$ D" n9 g" E$ f3 z, }! C  u  i                                                to_str("in docking station: \"",?.~.name,"\""));                               
0 _% u6 c* ~5 X0 I" U                                end;
7 X& Q. p( D. D/ F. ?                        else
8 y! E3 P+ K- c, N" r; P" i                                @.Destination := assignLObj[1,row];
& D$ ?' I! {' A/ k, I. I, G3 e! W                        end;                       
/ @! K" C' Y$ E" b8 h                        newDirection(@);9 Y, ?, Y1 m5 |( A1 \* v( t( ?* @/ D
                        @.HasOrder := true;
- N# i: l' B  t* H+ E) d; J' \                end;
  A* M6 S2 Y4 \0 {7 a        end;
. W' p4 C+ m( Q( u# i( o7 Eend;        -- of the method
8 g. M, c$ W4 ^( G* e! x+ g! P; q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
0 b/ w" E$ C+ z0 L' M( Q6 w! _8 t$ u8 }
这是AGV_putin中arrive的method。
7 N) f' @* h  ?+ x: G; Y2 P$ w8 h7 N  C( e' N6 m
当到达物料速度越高时,这个报警更多,% O3 b7 q! W6 U* v/ K
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。  y5 O. u2 ?# ^" u1 t0 A% o9 i
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?( u! R4 z/ m2 @- c

) t5 T3 I5 U3 z/ J) S1 p3 [另外一个小建议,就是move,所有的move都可以这样3 i6 \6 k) m4 v2 B, Y
if not move() then debug end
- i& j7 n8 K$ d" ?0 @这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。) ^; ?6 Y' b9 m8 g+ ]' U
plant simulation中的free libraries有AGV模板,
. l0 M$ m: u1 h4 A% p/ ~里面也有案例。
) E$ b, l5 `- {- J. |# |: q* e& k我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
/ Y# ^7 z- [9 _  N; N
' k# D, u, A2 M我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
/ `6 \* j; t# P, k  v' v  i7 }" v- f" G% n3 s$ G
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
4 G, G: J( z- W这是AGV_putin中arrive的method。
2 s! l: A- T6 K. G$ b3 ]) u" O- N9 G/ C+ u0 u. f1 |5 }% Y3 r
当到达物料速度越高时,这个报警更多,

2 @6 @- t9 J7 x另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-6 16:17 , Processed in 0.027799 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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