设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8820|回复: 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'  o# B  D3 L! r  s7 q1 D; R: l
*/
# Q- Z0 s( E+ t3 E0 @( K3 W/ I; his! d. e' R/ g1 u+ r" X% S8 F1 u
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
/ R, e$ G5 S) N5 Sdo/ P4 T5 B6 I) q3 O) {
        Lan := rootfolder.Internal.Tools.AOLlanguage;6 C5 A3 k8 z1 j- d/ i! ?
        if current = @.Destination -- else return
! @/ E$ L% M$ P# Y+ G& A        then
- ?% u5 z: X; `" ^$ V4 ~; u' w6 Y                @.Destination := void;5 A4 ^& c1 z* d
                if @.occupied then% q2 @, D8 _$ E# L3 M7 |
                        part := @.cont;
, a: W1 N# ]( P/ r5 \' k% Y                        @.transpOrder := void;
5 y7 {2 t6 B7 K. |: ?% k& W                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
: T) y8 S7 _/ c0 v+ M' Y                                @,root.eventcontroller.simTime);4 y2 |$ z- t9 V5 w, }( ^* M) i
                        @.HasOrder := false;5 K, s+ r: p3 X& N" l* N* X& Q
                        @.DrivingHome := true;
" [6 G1 N; I7 ~5 O$ G0 o# ~4 x: K                        rgManager.tryToStartTransOrder;
$ N! I& k1 E* _% G                        if @.Destination = void
: {  a( j: C! X1 b+ n                        then -- no transport order for vehicle @
1 z* Y: K7 p# X8 _                                @.Destination :=
7 c& `6 Q3 T# A% u3 h0 @) {                                rgManager.nearestFreeStation(@,track.~);4 I  f2 A9 ~: d- m1 Y+ R! o
                                newDirection(@);   % l$ N( b! Z" N6 _
                                if @.Destination /= void then
8 B6 q5 T! U- C' j* z                                        @.Destination.NumReservation :=
/ t7 ^5 E. M8 c# f                                        @.Destination.NumReservation + 1;( A' L( H. k$ u5 `! G. `, S
                                end;
0 R" ], I  k- @                                @.CurrIcon := "drivingHome";
% R; m/ b  C' A  S2 J                                @.DrivingHome := true;
0 `! T( K6 v- s9 f( d$ T( H& I' p                        end;
, ]  L$ w$ f; P. a7 N1 ~                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
9 D: z; N; e- h7 \9 o* U                        part := @.transpOrder;/ n$ _4 G+ Y; d  t9 d/ L
                        part.move(@);-- load part
0 D) d3 c4 x$ }. L- `" a                        @.CurrIcon := "load";
) A6 [) k: E/ t/ C. M                        GlobalDistObj := part.globDestination;: [/ ^3 c6 T. Q% f1 {
                        assignLObj := rgmanager.rgAssignL;& w+ H4 w6 S8 o/ ?
                        row := assignLObj.getRowNo(GlobalDistObj);" |2 n% Z( D, G6 n8 q
                        if Row = -1 then -- since 70
, k1 |: K" }! V" s% B                                if lan=1 then3 p3 }$ K( F* z4 N  S1 i
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
3 N/ ]7 K) B: d! K% Q4 \4 E. n                                                to_str("in der Andockstation: \"",?.~.name,"\""));
. `* o, R# G% Q( X                                else8 x6 o9 u6 k% O
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),% u+ ~( r" D0 ~  t: G
                                                to_str("in docking station: \"",?.~.name,"\""));                                $ C3 m4 D$ n8 r1 ]5 z- L! B6 p
                                end;- g5 t9 {0 {# b' G* T! h& K7 {
                        else
( I) ]5 O. ^8 m* o5 @- N/ o                                @.Destination := assignLObj[1,row];
+ l: |3 N. J8 l, S2 a9 h                        end;                       
3 o2 B! y: I+ |2 F; C/ i" |( d6 x                        newDirection(@);  H' x2 K; |8 p( X6 v2 v& Q, K
                        @.HasOrder := true;
7 S- l+ t' F* s, x" y                end;
; {/ c7 G! a& ^8 t/ D5 h        end;  E* W" e, ^+ c5 ?
end;        -- of the method$ J, u9 q. O8 X. M% M, s- e+ {6 }
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 . L  v. W( s3 H6 X+ L6 y& u; k& d
) u( l2 z4 \* W9 v7 Q; p
这是AGV_putin中arrive的method。8 e% X( M; `. O8 c6 q
6 P$ m2 R) J. I/ s" m
当到达物料速度越高时,这个报警更多,( C2 K/ o( u* L
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
9 _; o: a& c$ B* n& \9 X2 u程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
& Y9 V# q! @$ M6 T: K
5 d0 H& p) X- L5 P另外一个小建议,就是move,所有的move都可以这样0 f- e% i2 [4 x' Y& c
if not move() then debug end( q1 e( \$ o3 M  v
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
- S! u% a0 F" yplant simulation中的free libraries有AGV模板,
) j  ~5 o3 X0 `; \8 T8 ]* m里面也有案例。. j- s( e) V3 {
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
: \. X/ l% ^! s, t  K! @5 Y0 L' x- A- J
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 / ?7 R4 F: k) A- ^7 U& k  @2 v3 u

1 u: G% B: o. M! \那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
  z5 O$ y" P) {8 H3 e这是AGV_putin中arrive的method。
, m9 C. A4 }0 S9 K+ W* V6 R8 o. `/ h
当到达物料速度越高时,这个报警更多,
, Z8 J. p5 T* I: V, j0 n# M! S
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-28 09:54 , Processed in 0.017189 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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