设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7682|回复: 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'1 e) k! d% F: E$ m2 S) Z) m
*/4 L% t7 d1 d& \0 L
is
  i0 C# C% [: K. r7 l  I        part, GlobalDistObj, assignLObj:object;row,Lan:integer;8 U  j: p  s, u2 `5 @
do8 ]8 i4 T8 E6 Q+ v4 [
        Lan := rootfolder.Internal.Tools.AOLlanguage;
3 g% h0 e; s6 d& N) j        if current = @.Destination -- else return
" W" B& o+ E+ ?8 s9 W1 M        then. h  P6 h! j5 l6 H0 n: L
                @.Destination := void;+ W8 b) z) u3 b0 q
                if @.occupied then4 v: D- s3 R/ c/ i  W5 F
                        part := @.cont;
" I. H- S6 ^+ R1 f; Z2 L2 u1 L                        @.transpOrder := void;7 W! x* g/ B! R0 N
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,* t+ v6 I- g) d. O5 e% o7 w" d% b
                                @,root.eventcontroller.simTime);
1 Z' K* h+ h6 P( G  B                        @.HasOrder := false;
+ R/ o/ S. c9 x5 B. m3 M8 @. ]                        @.DrivingHome := true;, B0 j( n9 w$ \% Q: Q
                        rgManager.tryToStartTransOrder;
$ e" U+ A7 S$ ]; y, {5 M8 t  u7 w                        if @.Destination = void2 ]/ @  ^) W4 r0 W7 i
                        then -- no transport order for vehicle @# L. Z- m0 }' n" r, J' Y+ ^
                                @.Destination :=
, X& g. r9 M$ ~2 ^$ m2 d                                rgManager.nearestFreeStation(@,track.~);
) I+ q- P! Z/ T1 Y* N                                newDirection(@);   
$ I8 r2 |- L& V: l6 B) D                                if @.Destination /= void then
6 @  @2 B+ G* v- ^. p                                        @.Destination.NumReservation :=
( \1 d3 b5 c( m) F8 p                                        @.Destination.NumReservation + 1;
) Q$ t& G. w/ O                                end;9 t  d5 K# j4 l" W, r1 o/ h
                                @.CurrIcon := "drivingHome";
. y# X! {% ^- a, V# N: p& y' [$ H                                @.DrivingHome := true;" U" S, b1 [' D6 @* ^
                        end;
3 A3 B; Z- v* ]5 Y& ]- E  S                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
, _3 }# N9 D9 m7 ]6 X0 z% A- z, v                        part := @.transpOrder;( E* ?( [' a) K. n) x6 F
                        part.move(@);-- load part
. E. I0 L0 P9 Y- H0 G                        @.CurrIcon := "load";6 H0 P+ M4 v8 Z' p5 W
                        GlobalDistObj := part.globDestination;
3 K8 n$ v0 E  a* b; Z) \                        assignLObj := rgmanager.rgAssignL;
  ~+ |5 x/ r* i$ v7 X% x                        row := assignLObj.getRowNo(GlobalDistObj);
+ }. N( j4 c" v                        if Row = -1 then -- since 70' d. W6 E) X$ |1 Z6 |1 S& k
                                if lan=1 then8 u" e% A2 B8 X6 q3 E
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\"")," D- O! G2 p7 H* e" g
                                                to_str("in der Andockstation: \"",?.~.name,"\""));  Q  ~( F9 F) b5 r7 ~
                                else! j9 `3 R/ e" H: a9 B
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),! I& W4 F0 r9 k% [* h- c
                                                to_str("in docking station: \"",?.~.name,"\""));                                * ?. G" g6 V5 W3 N4 |0 I; L; G
                                end;- V8 W: b. @/ G! y7 @3 a
                        else& F5 |% ^, V" i% r: L
                                @.Destination := assignLObj[1,row];
+ h  B; m, m+ ]# N. K3 V                        end;                       
9 }- r. t/ {2 a% e* x                        newDirection(@);; j9 V1 x/ z8 y* s, r1 D
                        @.HasOrder := true;/ h& Q* U6 @: h! ^3 ?  C6 w
                end;0 V1 Z  ^' P. O. V
        end;9 F% M+ ?  l; [4 U5 |9 w4 ~$ K7 k
end;        -- of the method! w: w4 ~$ R/ K5 h3 L
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
7 _- M( \, P: _; t1 _7 J0 I
  b1 n1 v  ]" p* Z6 [0 _6 i. N- h8 \( g: K这是AGV_putin中arrive的method。6 l! u. v1 p  a6 ?1 Y" f! f) X$ R

3 R6 e7 T/ T# k- ~  i! K# k当到达物料速度越高时,这个报警更多,: [+ N1 ^- H; A5 b. A
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
( b+ o( \% i2 I" u- l程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
/ |. s# }) {4 Z% {0 q' _$ ~- w( t8 d% h- S" n
另外一个小建议,就是move,所有的move都可以这样" M7 I; y/ b5 H# ~' T
if not move() then debug end$ _7 r( u' i( B4 _7 o
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
! U  A; V7 D" i, P+ ~' _4 `plant simulation中的free libraries有AGV模板,
2 v/ O5 |$ u& X里面也有案例。+ U1 ~+ ^  w% I0 b
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
9 H( f$ y3 F5 g$ r6 |5 H" M) B6 s* E/ f0 ~
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 & ?9 S; J$ c; u4 ?8 d/ }

" C  J7 f! B- A/ J那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 1 ]8 l0 }7 p6 H6 J0 s+ d
这是AGV_putin中arrive的method。# f1 B3 B1 d; P

( t/ a: r' U7 Z. S; d当到达物料速度越高时,这个报警更多,

$ t% n2 X* k: d另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-24 01:10 , Processed in 0.023274 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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