管材直线度检测机系统设计毕业论文正(编辑修改稿)内容摘要:

4 10 54 ...... ...... ...... 10 162 10 162 10 162 10 180 10 180 10 180 ...... ...... ...... 10 342 10 342 重庆理工大学毕业论文 合金管数控砂带磨床测量系统设计 21 10 342 10 10 10 160 18 160 18 160 18 160 36 160 36 160 36 ...... ...... ...... 每行第一个数代表检测点所在截面离左端面的距离,第二个数代表检测点在该截面上的角度,第三个数即检测点的壁厚。 每个点均有三次检测值,分三行显示。 由此可知,可选用三个二维数组 a(), b(), c()来分别存放三次检测值,第一维下标代表所检测的截面,第二维下标代表该截面上所检测的那个点。 定义二维数组第一维下标上界为 N1,第二维下标上界为 N2。 由前述人机界 面设计中的参数设定可知: 测量起始点离工件左端面的距离为 dis,测量终点离左端面的距离为 L,相邻两 截面的间距为 distance,每个截面上相邻两检测点间的角度为 rad,则总的截面数为:(L dis) \ distance+1,每个截面的测量点数为 360/rad。 由于数组下标从 0开始,则 N1=(L dis) \ distance N2=360/rad 1 重庆理工大学毕业论文 合金管数控砂带磨床测量系统设计 22 ( 2)提取壁厚数据 10 18 10 18 10 18 10 36 10 36 10 36 由于每行以空格开头,且有三个数,这三个数间用两个空格隔开。 两点的壁厚数据用空格行隔开。 为了提取每点的三次壁厚值,可将每行数据作为字符串来读取,先用 Trim 函数将每行的第一个空格去掉,然后用 replace 函数将每行的两个空格替代为一个空格,再用 Split 函数将字符串分割开,于是便提取出了每行的三个数。 读取完空格行后,便进入下一个点壁厚的读取,每四行一个循环,则循环 次数即为所有检测点的个数,即截面数每个截面的点数。 假设循环次数为 m+1,则 m = (N1 + 1) * (N2 + 1) 1 每个点的三次检测值,采用二维数组 g(10000,2)来存放, g( 0,0)代表第一点的第一次检测值, g( 0,1)代表第一点的第二次检测值, g( 0,2)代表第一点的第三次检测值, g( 1,0)代表第二点的第一次检测值,以此类推。 读取完毕后,将数组 g( 10000,2)中存取的数据对应赋值给二维数组 a(N1, N2), b(N1, N2), c(N1, N2)用来存放每个点的三次检 测值。 相应程序段如下(详见附表) Option Explicit Dim N1, N2 As Integer 39。 二维数组的下标上界 Dim i, j As Integer Dim dis, l As Single 39。 测量起始点,测量终点 Dim distance, rad As Single 39。 测量间距,测量角度 Dim FeedRateGA, FeedRateGX As Single 39。 A 轴转 速,磨头移动速度 重庆理工大学毕业论文 合金管数控砂带磨床测量系统设计 23 Dim count1 As Integer Dim count2 As Integer Dim a(), b(), c(), d() As Single Dim e(), f() As Boolean Sub GetParam() dis = Val() 39。 测量起始点位置 L = Val() 39。 测量终点位置 distance = Val() 39。 测量间距 rad = Val() 39。 测量角度 FeedRateGA = Val() 39。 A 轴转速 FeedRateGX = Val() 39。 磨头移动速度 N1 = (L dis) \ distance 39。 测量的截面数 N2 = 360 / rad 1 39。 每个截面测量点的数量 End Sub 39。 ************************************************************ 39。 读取数据 Private Sub Command1_Click() Call GetParam Dim m, q1, q2 As Integer Dim S1, S2, S3 As Single Dim g() As Single ReDim a(N1, N2), b(N1, N2), c(N1, N2), d(N1, N2), g(10000, 2) As Single m = (N1 + 1) * (N2 + 1) 1 39。 定义循环次数 ReDim e(N1, N2), f(N1) As Boolean Dim str1() As String ReDim str1(m) As String Dim n As Integer Dim Strconv1, Strconv2 As String Dim sss() As String 重庆理工大学毕业论文 合金管数控砂带磨床测量系统设计 24 Open D:\ For Input As 1 For n = 0 To m Line Input 1, str1(n) Strconv1 = Trim(str1(n)) ’去掉每行第一个空格 Strconv2 = Replace(Strconv1, , ) ’两个空格变为一个 sss = Split(Strconv2, ) ’提取出每行的三个数 g(n, 0) = Val(sss(2)) ’提取出每行第三个数,即壁厚值 Line Input 1, str1(n) Strconv1 = Trim(str1(n)) Strconv2 = Replace(Strconv1, , ) sss = Split(Strconv2, ) g(n, 1) = Val(sss(2)) Line Input 1, str1(n) Strconv1 = Trim(str1(n)) Strconv2 = Replace(Strconv1, , ) sss = Split(Strconv2, ) g(n, 2) = Val(sss(2)) Line Input 1, str1(n) q1 = n \ (N2 + 1) 39。 确定数组 a, b, c的一维下标 q2 = n Mod (N2 + 1) 39。 确定数组 a, b, c的二维下标 a(q1, q2) = g(n, 0) b(q1, q2) = g(n, 1) c(q1, q2) = g(n, 2) Next n Close 1 程序运行后,对每个点的三次检测值 a(i, j), b(i, j), c(i, j)添加监视,截取部分结果如下。 重庆理工大学毕业论文 合金管数控砂带磨床测量系统设计 25 二、 数据的处理 ( 1)异常数据判断及数据处理一 在理想状态下,每个点壁厚的三次检测值应当一致,可是现实中不可能保证完全重庆理工大学毕业论文 合金管数控砂带磨床测量系统设计 26 相同,还可能因为合金管存在裂纹或者水内有杂质,导致三次测量值存在很大偏差。 观察获得的数据可知,有些点壁厚的三次检测值相差很大,如 , , ,这种相差很大的便属于异常数据。 判断每点的三次壁厚检测值是否异常,可按照图 19所示的流程图 1来处理 (可见附录)。 重庆理工大学毕业论文 合金管数控砂带磨床测量系统设计 27 S 1 , S 2 , S 3 均在 0 . 5 以 内d ( i , j ) = ( a ( i , j ) + b ( i , j ) + c ( i , j ) ) / 3S 1 , S 2 , S 3 均超 过 0 . 5S 1 在 0 . 5 以 内d ( i , j ) = 0c o u n t 1 = c o u n t 1 + 1d ( i , j ) = ( a ( i , j ) + b ( i , j ) ) / 2S 2 在 0 . 5 以 内d ( i , j ) = ( b ( i , j ) + c ( i , j ) ) / 2S 3 在 0 . 5 以 内d ( i , j ) = ( a ( i , j ) + c ( i , j ) ) / 2j = j + 1j = N 2YYYYYNNYYNj = 0Nc o u n t 1 = N 2 \ 3 i = N 1c o u n t 2 = c o u n t 2 + 1f ( i ) = T r u eY结 束c o u n t 2 = N 1 \ 3 通 知 用 户 该 管 存 在 问 题YNf ( i ) = F a l s ei = i + 1N 图 19 流程图 1 重庆理工大学毕业论文 合金管数控砂带磨床测量系统设计 28 设定任意点壁厚的三次检测值分别为 a(i, j), b(i, j), c(i, j), 判断该点数据是 否异常: 如果某个点三次检测值两两间均相差不大,则说明该点测量值可信,则取三个值的平均值作为该点的厚度; 如果某个点三次检测值两两间均相差很大,则说明该点测量值不可信,将三个值均抛弃; 如果某个点三次检测值中有两个值相差不大,则可保留这两个值,并取二者平均值作为该点的厚度; 基于以上思想,可取三次检测值两两间的偏差量。 先取两两间的差值,之后取绝对值得到的三个数 S S S3,即为这三个偏差量,则 S1 = Abs(a(i, j) b(i, j)) S2 = Abs(b(i, j) c(i, j)) S3 = Abs(c(i, j) a(i, j)) 将两两数据间的偏差允许量设置为 ,则若三个偏差量均超过 ,则先将该点厚度置为 0;若三个偏差量均在 ,则取三次检测值的平均值;若三个偏差量有一个在 ,则将对应的两次检测值取平均。 处理完的壁厚值可用二维数组 d( N1, N2)来存储,第一维下标代表所检测的截面,第二维下标代表该截面上所检测的那个点。 如此循环,直至判断完一个截面所有点检测值是否异常。 设定统计值 count1和count2,如果某点检测值异常,则统计值 count1加一, 如果该截面异常点数超过检测点数的 1/3,则判定该截面为异常截面,统计值 count2加一。 之。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。