设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6666|回复: 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: H/ s& F5 \/ X, r3 v*/: l9 |- D& f  v
is+ j7 q1 e0 H- m' h$ s( R, U
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
2 W( G- ^( c# Y9 {* J2 }2 tdo
+ y& \  {/ T1 p* U" B        Lan := rootfolder.Internal.Tools.AOLlanguage;& f' g. V. C# j3 h
        if current = @.Destination -- else return
; W' J2 T+ o1 X% e9 y# z8 b! d4 f. C        then# L) S( g8 m! {0 m& b' L2 c
                @.Destination := void;
3 q9 h. f* a* y) R" s1 E( Z% {7 W                if @.occupied then4 w+ t, d1 u* m, Y' I9 z
                        part := @.cont;0 [3 }  U6 T6 L$ P. W. E7 Q
                        @.transpOrder := void;
! S4 |' J, o2 D7 h' P: H                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,/ U. j4 `7 [4 n
                                @,root.eventcontroller.simTime);
6 X7 c- J; y+ U: `8 |5 c5 U( s                        @.HasOrder := false;$ m% s7 b2 S$ _# V
                        @.DrivingHome := true;, o$ X9 }1 B# c% M
                        rgManager.tryToStartTransOrder;
  U! D* E' D1 u1 n! F4 C7 Z                        if @.Destination = void
0 z! _1 S' \  c/ ?! A( C                        then -- no transport order for vehicle @2 A% V3 k4 w' F3 D; N
                                @.Destination :=
/ G: s. }, g; g3 P7 E                                rgManager.nearestFreeStation(@,track.~);" r* K/ T3 }9 G. `
                                newDirection(@);   , J" a  T1 w: }
                                if @.Destination /= void then
% t/ v0 q# d5 K6 w0 ^: y& T                                        @.Destination.NumReservation :=
3 ?7 [0 _3 o$ t9 c$ E                                        @.Destination.NumReservation + 1;
* a, F) E/ v+ N                                end;
. k7 g% y! `' Z& a, C& {                                @.CurrIcon := "drivingHome";$ [+ b+ w% j+ H, \
                                @.DrivingHome := true;
, d  }3 o# f( Y1 c4 }- P3 M# O                        end;5 G7 V" _) D$ K! m
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
  b5 z5 y& ]0 D8 b( ~6 w                        part := @.transpOrder;  }+ f/ O7 @9 j
                        part.move(@);-- load part
+ B) R7 B' P& k$ F0 r" q, D: A4 y                        @.CurrIcon := "load";( T$ b# a" G7 V" Q8 j4 E
                        GlobalDistObj := part.globDestination;
0 O0 `9 Z$ O; I! A                        assignLObj := rgmanager.rgAssignL;
1 x! t1 J2 `- }8 P8 R/ D2 P                        row := assignLObj.getRowNo(GlobalDistObj);
( y: B8 c' s" y  R) y                        if Row = -1 then -- since 704 W( s2 t) O! ]3 l! I. `
                                if lan=1 then2 E1 u  l% h0 S8 _$ q
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
* S, n! j! T. j- o8 u( |                                                to_str("in der Andockstation: \"",?.~.name,"\""));4 O" Z) N7 s2 q, L' P
                                else
( ~6 a4 ^2 P, Q+ @' v, G2 c  W                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
( x7 q& P- D; g( T                                                to_str("in docking station: \"",?.~.name,"\""));                               
3 W1 m9 U) m9 v$ d$ K                                end;9 J) v6 \" d2 X9 q1 [7 S" W) j
                        else
0 |) \5 y8 b% i7 T( ?                                @.Destination := assignLObj[1,row];& v* X6 X9 l; T* s7 u
                        end;                        ; e2 I! L; T! b& E( `8 }
                        newDirection(@);8 k* O7 l( h! e) \. S% a
                        @.HasOrder := true;* j9 O* w! }) p% d& d$ M
                end;1 ?4 |: O1 e- H: ^! g
        end;4 b: `2 i2 q- E
end;        -- of the method
9 M9 U3 m& q4 S# Q3 m1 d0 L
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
; E* ]. V# ~% I( e, g4 J* \) ^5 H" {2 R% i0 f! ]. F; r4 z
这是AGV_putin中arrive的method。6 Q1 W9 y# z" [+ n3 B% }# P* R
% y) Y8 s" `& E5 h
当到达物料速度越高时,这个报警更多,; B8 D4 T7 D2 ?1 S
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。; M2 T4 R; d9 b
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?* ?/ m" f6 U( `! I; Y

' [$ D9 X7 E0 n+ s5 N另外一个小建议,就是move,所有的move都可以这样
0 c1 o8 q% r8 U9 Gif not move() then debug end
3 T; `5 L6 @6 {5 y- g这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
9 m0 r' ~4 m# h5 }4 w2 e) w4 bplant simulation中的free libraries有AGV模板,
, u/ G* f$ x( R0 I4 q$ H& z4 o里面也有案例。  O* L2 t' S5 b2 L/ d
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。0 l7 w( y# O. A: `
6 H; T# y" W1 d  u% B, W4 b
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 . x0 u6 y% M9 f9 ]! a" Z9 _0 q& P& p
# g* t: N1 H! u+ q% h
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
- i# {& W4 R3 U0 m7 y6 t这是AGV_putin中arrive的method。
! S% D: U% z# [! P4 A3 z  p- b+ v5 ?: L* k# `% l! s/ s3 A" i/ d- y
当到达物料速度越高时,这个报警更多,

) v8 j* u+ }2 s0 T! j% F6 [& t3 T6 r另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-19 23:24 , Processed in 0.019462 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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