设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7275|回复: 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'# \0 b- ^% P, y/ Q2 i
*/
3 ?4 P6 Z3 J. nis
7 Q* H! F3 e% t! }& r        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
, Q4 A6 k3 p+ e1 P. ]: h, _do
, `  ^$ o& E; P2 V, s8 J        Lan := rootfolder.Internal.Tools.AOLlanguage;
* n3 O: x/ h1 h1 u: u        if current = @.Destination -- else return  }5 X! J+ Q0 G! Y+ E# p. e
        then5 R% g0 g3 F3 [6 I0 A
                @.Destination := void;
& S1 P9 `% U2 t4 _# s9 K# D4 {                if @.occupied then+ q/ F/ ~+ d5 _, c; E
                        part := @.cont;% v, i. \: q, _& x" F; n5 K
                        @.transpOrder := void;: O7 ^8 F: u' Y
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
6 I$ M- c/ F& N8 ]7 v+ v                                @,root.eventcontroller.simTime);) U1 ]: M% J) C8 s' T, e
                        @.HasOrder := false;
  {4 O% P* ~; z  h" o                        @.DrivingHome := true;5 h9 k  H, y3 T
                        rgManager.tryToStartTransOrder;; z6 H: B% Z! h7 e
                        if @.Destination = void& j; t% Y/ n2 r2 o8 Y' Z  h; f
                        then -- no transport order for vehicle @- W* b9 a6 ]# ]; J2 U
                                @.Destination :=
' p! ^% T' V- N: G                                rgManager.nearestFreeStation(@,track.~);* `2 H3 c: I7 r" W$ m
                                newDirection(@);   
5 U. U$ a: V2 R, v( ~) q+ N                                if @.Destination /= void then
/ S' z8 m% j; o4 {                                        @.Destination.NumReservation :=) v6 X5 F$ V, L+ Y& d7 s: k
                                        @.Destination.NumReservation + 1;# _5 ?5 ]0 m2 x
                                end;
1 F: R% `4 I+ ]) n                                @.CurrIcon := "drivingHome";/ r# m# n$ g; l7 ~
                                @.DrivingHome := true;
, U' T- Y# p$ c1 P                        end;
5 q3 ?, u) S+ }9 V, \  S                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
: V3 J  m2 c1 p: D0 J                        part := @.transpOrder;) V1 y6 z! w  B) g9 i+ L
                        part.move(@);-- load part- F9 W0 I. C8 W# k
                        @.CurrIcon := "load";
4 }' K" W. m  g; M, a7 l& a                        GlobalDistObj := part.globDestination;* P, {0 K6 m7 t; ^
                        assignLObj := rgmanager.rgAssignL;; @) f+ k9 s& G0 w5 p" g8 v
                        row := assignLObj.getRowNo(GlobalDistObj);& w# [4 Z/ q  h* n! a$ H
                        if Row = -1 then -- since 70! h8 B0 [( G; H8 ?8 f
                                if lan=1 then
1 E% C# N+ q9 X& s, g4 c                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
1 \3 I& k* @% \6 p+ \+ M& n' L                                                to_str("in der Andockstation: \"",?.~.name,"\""));" E7 `# G6 Z- ~: C4 [$ R
                                else
* j5 j* L2 v3 c* Q8 v                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
! Z/ ~' i  w" J* O6 q4 Z                                                to_str("in docking station: \"",?.~.name,"\""));                                % j0 R- C. F- b$ d5 Q: ?
                                end;
3 f/ I4 n. T) a1 N                        else
5 Z" y  ^4 Z3 x: M  ?9 s4 ]                                @.Destination := assignLObj[1,row];
4 |# u& j6 z5 W4 V0 q                        end;                        - z6 Z2 ]3 V0 ~/ R% @0 Q- v
                        newDirection(@);
' h; s8 b' F1 z2 Q) f                        @.HasOrder := true;3 j$ ^4 C. X( y  @9 {4 z$ }
                end;0 K4 S- i4 S' |' p( j' Q$ M) Q
        end;  h& \8 i( _. q0 _/ q# y3 A' n; j
end;        -- of the method' u: \& g; a/ m8 X- l+ |0 q
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 2 ~, d" {0 o7 M* \

( {* B0 Y# F3 {' v* Y& M* d这是AGV_putin中arrive的method。
4 o) r! r. Y+ `. z* @! j' e4 n
当到达物料速度越高时,这个报警更多,
4 K, B# o* y. J可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
+ i6 [1 q! [' C7 ~程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?! @$ i0 K& f' u) ^2 s$ `( F$ z! i

9 t7 L. ^* ~/ p9 y& h另外一个小建议,就是move,所有的move都可以这样
. w$ V. B, L+ D) Tif not move() then debug end
4 D, T" x. p# p& y8 D+ c- O  [: w这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。& m: o8 |0 w: I1 G( n8 c
plant simulation中的free libraries有AGV模板,- F; b' f! ?4 l; `$ V7 J* S  e
里面也有案例。
4 Y5 N( V. ?- a; f我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。  J) [" l! X6 h' ~

7 L+ y/ C; F/ k我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ( L2 Q0 G, R1 U2 y7 Y! F

* t" z9 X& Q5 f. I- l7 p! e. o2 Y' l+ }! m那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
6 K1 w/ b( N0 l3 O. t+ J这是AGV_putin中arrive的method。/ a. u3 m, i2 _8 \* `7 }
( j* l! f5 J- a- q8 @
当到达物料速度越高时,这个报警更多,

  J. ^) u$ f6 }7 T( c5 ]' i另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-1 08:03 , Processed in 0.017221 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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