设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6780|回复: 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'
7 E+ J$ `: z6 z& c*/
6 x* s  h$ S1 g" s  ]6 vis
. D* `" A6 Y5 \4 e; D        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
/ ]+ A$ J, i9 M6 \/ Bdo
# _0 u. n  N& v) z4 r0 G# P( c        Lan := rootfolder.Internal.Tools.AOLlanguage;: J% z& f2 E: \) b; ]
        if current = @.Destination -- else return$ c) L2 Y! B+ o
        then
: ^- Z+ Z( e: I; b- d' s( B! w7 k                @.Destination := void;2 H2 `6 T4 Y: I2 r3 |% v( ]) t
                if @.occupied then
( {' z$ L1 l3 ^                        part := @.cont;
0 e6 k: `% z9 g5 Q& }                        @.transpOrder := void;, \3 B5 T- W  K" E4 J
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
" l" g+ Z5 j" x                                @,root.eventcontroller.simTime);
+ y4 }' ]) Z; L* J5 ^" m8 j                        @.HasOrder := false;
# p9 p3 k& q* {                        @.DrivingHome := true;
. n) k; Q: _4 b( w( l                        rgManager.tryToStartTransOrder;
1 o4 r) \7 s# o" j5 Q                        if @.Destination = void
! P0 n) X% [8 n1 y                        then -- no transport order for vehicle @
$ }( r* Z3 T9 l& ?7 }5 Y" Z( T                                @.Destination :=
) w8 Z: P9 V; _: \) |                                rgManager.nearestFreeStation(@,track.~);
/ i# o: h5 O+ R+ d/ S; L" e) D& F                                newDirection(@);   0 a+ m# o/ K* W: y
                                if @.Destination /= void then
  v6 Q( V3 L5 G/ A# X                                        @.Destination.NumReservation :=
& a! D7 c; S* R0 p8 a                                        @.Destination.NumReservation + 1;7 b) ^# ?/ n5 u9 M+ K' m! j
                                end;
9 }( Q5 x: p- u. c; @9 F                                @.CurrIcon := "drivingHome";
7 u4 N& _/ ]% o; `                                @.DrivingHome := true;
1 T; x7 X* y& o1 _/ [' v                        end;
" L& c( r; g9 C7 H, X6 F                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
0 l2 A' Q" d: N5 Q                        part := @.transpOrder;: z; \4 y8 e" T$ h
                        part.move(@);-- load part
3 ~! Q( b5 c9 K                        @.CurrIcon := "load";0 w  |+ _% z, R0 D9 d: I) f
                        GlobalDistObj := part.globDestination;
4 v- Y6 c- y$ b) d" e) Q( [% B                        assignLObj := rgmanager.rgAssignL;1 X# Z: m. n$ H0 k
                        row := assignLObj.getRowNo(GlobalDistObj);" m7 C' C4 M2 d: t
                        if Row = -1 then -- since 70
( Y( Y3 \# O7 _1 L1 b                                if lan=1 then
1 ^. ]; k2 S) j8 u" M; l. W; e                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
2 ?; ?) ~- S  X7 G                                                to_str("in der Andockstation: \"",?.~.name,"\""));. |( @4 w, H# W; |4 V$ F
                                else4 t) Q8 H& R6 U" w- i* s
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
- Q, X$ {5 Q3 Z  x8 D' \0 A+ I% F: o                                                to_str("in docking station: \"",?.~.name,"\""));                                  u, o/ T' z! H2 Z+ [: W; C
                                end;
! o! e4 |0 V# F4 R* n" V                        else) x2 Y% M2 t6 B- \+ X5 P
                                @.Destination := assignLObj[1,row];
- z  D* C. J( m% w: ]7 w% |& V                        end;                        / }% Q. p* b2 V) F$ ^
                        newDirection(@);2 l$ c. k% D* z) B, a% r2 M* Y
                        @.HasOrder := true;
/ y8 L4 n: s2 ~6 j1 C                end;# W/ s3 `% F; y5 s* j+ j1 R* Z- u$ J
        end;  J: {& v* j: e8 R, G8 f1 \9 v
end;        -- of the method
$ R& y0 v" w2 p! d7 v
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 + D: J8 G" l% o$ z6 ^

: [- t  q6 U8 P+ y2 o' J这是AGV_putin中arrive的method。: D  l! J; S$ C7 B

' F" N7 }# m3 [1 B6 @当到达物料速度越高时,这个报警更多,, W3 O: `) a' i% q
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
( S1 G3 p& f8 ^  W$ b程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?+ m* a/ C7 ^- t! ^
" R, ^( u: Y# |, D7 k2 K
另外一个小建议,就是move,所有的move都可以这样' w9 @& i# ^# l3 O& k
if not move() then debug end
' h' k& s6 X& l" B7 J2 W这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。7 N6 w; m3 t1 Z7 _/ u
plant simulation中的free libraries有AGV模板,: v0 w$ r% i- ]6 [5 L
里面也有案例。
, M% u3 u3 v0 X0 e2 X$ I+ o我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。9 w3 x! Z  G& e/ A8 U( Z
$ y  R4 i6 H* |7 }! n5 a3 q' C
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 0 A% E6 |6 C% \: M8 ]# o

% M; u2 E* q3 X2 ?) |6 B  R7 G/ s那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
1 L/ X$ M4 Y- k/ X这是AGV_putin中arrive的method。# N, j  @0 O* X+ A3 ^' z7 t" f
* r5 X' w. l. ]9 F. T: M/ c: F
当到达物料速度越高时,这个报警更多,
. S  J2 T+ j8 q$ [
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-26 10:22 , Processed in 0.020334 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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