设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9258|回复: 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'
' `9 j% q  h& n; H  a$ Q4 w5 o*/2 ]( I$ P, `6 B; }$ `. m+ ]
is
! i# R3 p: C. N        part, GlobalDistObj, assignLObj:object;row,Lan:integer;5 S; Z  t+ \7 c8 {# o; x; g4 l( t7 x
do+ u7 s! y' u) H7 ]4 A0 ]
        Lan := rootfolder.Internal.Tools.AOLlanguage;
2 c( p6 t- B' V3 G0 O  P! Z        if current = @.Destination -- else return! T- L0 t2 W% w; V8 V/ j
        then0 P# W+ x, ?0 o, R  J+ H6 |3 h  P
                @.Destination := void;5 w1 E! }4 ~+ N& k9 O# F
                if @.occupied then0 \4 ~, }! G$ h" t/ e# Z
                        part := @.cont;# W) h, }3 H* d0 I
                        @.transpOrder := void;
9 ?% [" h& K$ y) Y                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,  C0 N% }7 H+ z( i0 `, ^
                                @,root.eventcontroller.simTime);
! h) H9 S, w' Q' i% Z                        @.HasOrder := false;: t( q6 r+ z2 z0 s! _0 a
                        @.DrivingHome := true;5 R7 d" Y" c7 B+ q: X& j0 K
                        rgManager.tryToStartTransOrder;
) C: K* H+ d* {3 }                        if @.Destination = void
0 J$ m. X" l! a1 r                        then -- no transport order for vehicle @! w" v( s5 u% l0 v0 [& J. S1 M
                                @.Destination :=# [. O! L, H6 T) U0 A* ^8 f& M
                                rgManager.nearestFreeStation(@,track.~);7 @! m1 G6 q# y1 q! ^
                                newDirection(@);   
. f  Y6 x3 Q% I% v+ _                                if @.Destination /= void then
. U# Z) S6 m+ c6 |2 H$ b, v                                        @.Destination.NumReservation :=
8 f( D+ q. j  c: \5 W                                        @.Destination.NumReservation + 1;
" V2 j# N0 H5 `                                end;$ n, z' @* I8 A: x
                                @.CurrIcon := "drivingHome";: s/ O6 l( y. K  }0 B+ _$ N% n
                                @.DrivingHome := true;) V2 ^' c6 {3 {/ j* q
                        end;- V: D' U' U& e" j
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
. F" P4 j/ Q! L                        part := @.transpOrder;- E7 H4 f) c$ f7 W6 _8 j
                        part.move(@);-- load part5 O. F: H* ?, r: z  ~- ~& k7 C
                        @.CurrIcon := "load";
) N# w/ |' l# m; |0 F* y                        GlobalDistObj := part.globDestination;
7 F  K) c" X1 u: g0 d0 `* g                        assignLObj := rgmanager.rgAssignL;  `. V' F- M3 s/ I8 Z3 t
                        row := assignLObj.getRowNo(GlobalDistObj);+ m; v' w/ Z7 a( v" L" S. R
                        if Row = -1 then -- since 707 W7 r# ~5 C3 ^
                                if lan=1 then
8 X$ r2 Y+ B0 a' _                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
# _# n0 X1 w9 s8 J) I0 ]2 }                                                to_str("in der Andockstation: \"",?.~.name,"\""));3 j9 ]5 H1 d3 `3 ]0 y
                                else/ C5 q6 U8 B5 o3 d, ~4 {
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),5 U! R& X0 d8 u, h, M) @
                                                to_str("in docking station: \"",?.~.name,"\""));                               
3 u1 T/ F# N7 U0 O- I3 a( c                                end;
+ ]8 t- K& m8 {2 f" [( l4 J                        else! h; Y! j# I1 j5 {( M
                                @.Destination := assignLObj[1,row];
* h% B8 ^0 u' v; V2 z3 f                        end;                        0 c* i7 T* E- [3 f" R
                        newDirection(@);9 i6 Q% X' Z& z, {, w
                        @.HasOrder := true;1 Q9 }+ {8 G+ z8 N; X  q6 r7 t7 R
                end;( t2 N- H, @4 s  `; ^: n9 n, \
        end;4 D3 q6 L  u3 n+ C
end;        -- of the method
2 O; d$ }$ B8 H' z7 k- l
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 % f% G6 y8 F& _- [
/ `+ T8 _$ ?5 q6 R3 W
这是AGV_putin中arrive的method。
' W; j# C7 M- @4 G  Q- Q6 _' T& r7 g& X0 p2 V/ v( _5 J8 @
当到达物料速度越高时,这个报警更多,
, }; b7 i3 C7 y6 o可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
. F6 e) {0 v" u, R) W/ b) ^2 `7 j程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?/ s& B/ I/ W* N  D* c
6 K" X# Q3 L  [( x6 I* o% S
另外一个小建议,就是move,所有的move都可以这样" k  B' c% F- s5 H6 e8 |
if not move() then debug end* @7 {& A" H3 }6 N" W' D5 H
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。0 N5 h# B" A! O) h& L5 p' S( [
plant simulation中的free libraries有AGV模板,
2 o' s' y1 t6 q2 H! C里面也有案例。
% Y1 X" o5 t1 D! f5 j3 N7 I& p我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
3 Q& q7 `# q9 D2 w
; t4 H2 o+ C1 _! O/ V我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
% j5 I8 F, l7 W  j4 J5 l2 V9 u" t4 |& v
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# A1 s6 R; k" L" i0 ?4 r5 n这是AGV_putin中arrive的method。
  e4 S; y8 ^6 ^& J- w# ]9 V  L* T) N% F+ |
当到达物料速度越高时,这个报警更多,

" Z& \- k% P  E) ^. e/ Y另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-21 14:26 , Processed in 0.021066 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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