表面计量学综合滤波软件的开发.docx

上传人:b****2 文档编号:20135075 上传时间:2023-04-25 格式:DOCX 页数:51 大小:300.27KB
下载 相关 举报
表面计量学综合滤波软件的开发.docx_第1页
第1页 / 共51页
表面计量学综合滤波软件的开发.docx_第2页
第2页 / 共51页
表面计量学综合滤波软件的开发.docx_第3页
第3页 / 共51页
表面计量学综合滤波软件的开发.docx_第4页
第4页 / 共51页
表面计量学综合滤波软件的开发.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

表面计量学综合滤波软件的开发.docx

《表面计量学综合滤波软件的开发.docx》由会员分享,可在线阅读,更多相关《表面计量学综合滤波软件的开发.docx(51页珍藏版)》请在冰豆网上搜索。

表面计量学综合滤波软件的开发.docx

表面计量学综合滤波软件的开发

南京林业大学

本科毕业设计(论文)

 

二O一一年五月

摘要

表面测量技术、表面评定理论与方法是科学技术的一个不可或缺的分支。

与模拟的波度滤波器相比较,数字滤波器有较为突出的优点。

本设计采用了一种递归滤波算法,此算法包括两个差分方程,运算过程简单,更加容易的实现了高斯滤波。

使用Matlab实现递归滤波算法,Matlab相对于其他计算工具,它的程序语言更为简单。

Matcom是能将在Matlab中运行的M文件转化成相同功能C++代码的工具,可以独立于Matlab运行。

相比Matlab自带的编译器Compiler,用Matcom转化代码要简单和方便得多。

在使用Matlab实现算法的基础上使用Matcom来对其进行编译,将其转换为可以在VC中运行的C++语言。

Matcom编译的主要是数据计算部分的程序,在软件界面设计过程中还必须结合C++语言,实现界面显示。

在运行软件后可以看到滤波的图形显示,在粗糙度显示一栏可以清晰得知各个粗糙度参数的值。

这款软件结合了Matlab的计算功能,Matcom的编译功能,以及VC的界面设计功能,

充分的利用了各软件的突出优势,使得软件的程序得到简化。

关键词:

滤波器;粗糙度;高斯快速算法;滤波中线

Abstract

TheSurfacemeasurementtechnology,surfaceevaluationtheoryandmethodisoneoftheindispensableofscienceandtechnologyofthebranch.Andthesimulationofwavedegreescompared,digitalfiltersfilterhasmoreoutstandingqualities.

Thisdesignusingarecursivefilteringalgorithm,thisalgorithmincludetwodifferenceequation,operationsimple,moreeasytorealizethegaussianfiltering.UseMatlabrecursivefilteringalgorithm,Matlabrelativetoothercalculationtool,it'sprogramlanguagemoresimple.MatcomisinMatlaboperationcanbetransformedintotheMfilesofc++codesamefunctionindependentlyofMatlabtoolsthatcanrun.MatlabtobringtheCompilercomparedwithMatcomtransformationCompilercode,muchmoresimpleandconvenient.IntheuseofMatlabalgorithmbasedontheuseofitsMatcomtocompile,converttocanruninVC++language.ThemainisMatcomcompileddatacomputationpartoftheprogram,insoftwareinterfacedesignprocessalsomustbeintegratedwiththec++language,realizeinterfacedisplay.Aftertherunsoftwarecanbeseeninthegraphicdisplay,filterdisplayabarcanbeclearroughnessthatthevalueofeachroughnessparameter.

ThissoftwarecombinesMatlabcalculationfunction,Matcomcompilerfunction,andVCinterfacedesignfunctions,Fullyutilizetheprominentadvantagesofsoftware,makesoftwareprogramaresimplified.

Keywords:

filter,roughness,Gaussianfastalgorithm,filteringcenterline

目录

摘要I

AbstractII

1绪论1

1.1研究背景1

1.2相关理论2

1.3相关软件工具3

1.3.1MATLAB3

1.3.2MATCOM3

1.3.3MicrosoftVisualC++4

1.4本文研究工作和章节安排4

2表面粗糙度测量中的高斯滤波快速算法理论6

2.1高斯滤波器幅度特性的逼近方法6

2.2冲激响应不变法设计高斯数字滤波器8

2.3零相移的高斯滤波差分递归算法9

2.4结论10

3高斯算法的Matlab实现12

3.1优势12

3.2高斯算法的Matlab的实现方法14

4Matcom的运用17

4.1详细介绍如何将m文件编译后放入VC中。

18

4.1.1新建m文件18

4.1.2在VC中用MFCWizard(exe)创建工程19

5粗糙度国际标准21

5.1基本术语21

5.2表面轮廓参数定义21

5.3用Matlab求得粗糙度参数22

6Matcom与VisualC++联合编译技术25

6.1基本技术简介25

6.1.1数据处理系统的关键技术25

6.1.2ADO数据库访问技术25

6.1.3初始化COM库26

6.2Matcom与VisualC++联合编译的设计流程28

6.3VisualC++应用部分29

6.4设计结果29

7结束语32

致谢33

参考文献34

附录36

1绪论

1.1研究背景

随着科学技术的不断进步,表面计量学取得了迅猛的发展,表面测量技术、表面评定理论与方法已经成为科学技术的一个不可或缺的分支。

表面形貌也称为表面微观几何形态,是指零件加工过程中,由刀具和零件的摩擦、切削分离时的塑性变形和金属撕裂,以及加工系统中的高频振动等原因,在零件的被加工表面上残留的各种不同形状和尺寸的凸峰和凹谷[1]。

表面形貌不仅与加工过程中的加工方法及工艺参数相关,而且其纹理特征在很大程度上决定了零部件的使用性能。

因此准确地测量和评定表面形貌,不但能正确地识别出加工过程中的变化与缺陷,而且对控制和改进加工方法、研究表面几何特性与使用性能的关系,以及提高加工表面的质量和产品性能都有着重要意义。

正确地规定和控制表面形貌,其作用往往不亚于采用一种新材料和新结构,有着重大的经济价值。

表面轮廓参数的测量是一个复杂的过程。

加工后的表面轮廓通常是包含有表面粗糙度、表面波度和几何形状误差的复合轮廓[2],所以在研究表征表面粗糙度的表面轮廓参数时,把这些附加的成分分离开很必要。

在表面轮廓的自适应测量中,常常需要自动调整增大取样长度[3],这样虽然可以得到更多的粗糙度信息,但却混进了较多的波度成分,从而影响了测量结果的准确性。

因此必须想办法尽量将波度成分去除。

因而滤波器在表面数据分析中具有现实的研究意义。

滤波器主要分为RC滤波器,样条滤波器,高斯滤波器。

RC滤波器存在相位差,使滤波轮廓产生畸变存在边沿效应,必须在测量之前对轮廓进行预处理。

另外,还有对被测轮廓的形状跟随性差、不稳定、受细长深谷影响较大等等。

目前依靠计算机技术的发展RC模拟滤波器已基本被淘汰。

高斯滤、样条滤波器作为主要使用的数字滤波器。

与模拟的波度滤波器相比较,该数字滤波器有以下优点[4]:

(1)精度高,稳定性好。

数字滤波器依靠程序实现,不象模拟滤波器那样受滤波元件的精度、温度和时间等因素影响。

因而精度高。

(2)成本低。

要滤除很低的波度频率,需要价格昂贵的大容量电容器(如钽电容),为了提高滤波的效果,还需要增加滤波的级数和各级之间的缓冲器。

而采用数字滤波,只要简单地执行程序几次,即可实现多级滤波,从而大大节省了滤波的成本。

(3)可调性好,能适应各种测量条件的需要。

在实际测量中,截止波长常需根据不同的表面进行调整,应用数字滤波,只要简单地改变其程序入口参数即可。

而采用RC模拟波度滤波,必须改变R值或C值,使用不方便。

(4)应用范围大。

数字滤波可以对频率很低(如0.01Hz)的波度信号实现滤波,克服了模拟滤波器体积大等缺陷。

目前在生产领域大多采用二维测量方法,即测取一段轮廓曲线用于评定表面粗糙度[5]。

显然,用这种方法评定表面特征及功能具有片面性。

反映表面质量及功能的应是参与工作的表面,工件表面的三维形貌才能反映表面的真实情况[6]。

因此,通过对表面进行三维测量以获取三维轮廓是表面测量技术发展的必然趋势。

由于表面三维形貌的测量与评定需要较昂贵的设备且效率较低,因此在生产上仍以二维测量与评定为主[7]。

在表面三维形貌测量中,表面轮廓中包含了轮廓的形状、波纹和粗糙度这三部分的信息,为了客观的评定表面粗糙度,必须将其信号从轮廓信号中分离出来。

三维测量中所得的数据是一个二维函数,所以必须使用二维数字滤波器进行滤波[8]。

其设计方法是:

先根据一维模拟滤波器设计出相应的一维递归数字滤波器,然后将一维递归数字滤波器推广到二维递归数字滤波器,再将一维数字滤波器推广到二维时采用可分离法,即将两个一维递归数字滤波器的系通函数相乘,组成一个可分离型二维递归数字滤波器。

由高通滤波器得到三维粗糙度数据,由低通滤波器得到的是波度数据,并可通过改变滤波器截止频率将形貌数据中感兴趣的部分取出,低通滤波器中的低频信号代表形貌测量中的宏观形状可以用机械方法测得[9]。

1.2相关理论

国际标准ISO11562提出用零相移的高斯滤波中线作为表面粗糙度测量中的评定中线[10]。

高斯滤波的幅度特性是一个高斯函数,既要精确又要快速推荐的一种快速计算方法,就是以牺牲滤波器的传输精度为代价的,其传输特性偏差5%[11-16]。

一种用高斯函数的逼近法和冲激响应不变法设计出高斯数字滤波器,并给出了其零相移的递归滤波算法。

递归计算方法计算量小,因而速度快,适当增加滤波器节数,在不增加很多计算量的情况下,可以达到很高的精度。

8级零相移滤波器进行滤波,其最大传输偏差大约为2%,用16级零相移滤波器进行滤波,则其最大传输偏差小于1%。

这远小于国际标准[17]推荐的简化方法的传输偏差。

在我们设计的表面粗糙度测量系统中,即使是用低效率的VisualBasic语言设计的滤波程序,上述两种滤波耗时均不到1s,即可完成11200点的轮廓数据的滤波[18]。

1.3相关软件工具

1.3.1MATLAB

MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。

它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB和Mathematica、Maple并称为三大数学软件。

它在数学类科技应用软件中在数值计算方面首屈一指。

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

本设计主要运用MATLAB的工程计算功能。

1.3.2MATCOM

MathTools公司有一系列的产品,包括MIDEVA、MATCOM、VisualMATCOM、Matrix。

其中Matrix是所有产品的核心,它是一个C++数学图形图像库,里面包含了约600个经过严格测试的函数,是实现将M文件转化为C++文件的基础。

MATCOM是基于Matrix的一个编译器,VisualMATCOM可以看成是一个集成到VC环境中的MATCOM。

而MIDEVA是M文件的解释器和集成开发环境,它通过一个完整而强大的开发和运行M文件的环境包含并拓展了MATCOM的功能,可以和MATLAB相媲美。

为了方便,通常将MathTools公司的这些产品统称为MATCOM。

它是个第三方控件,很小(8M多),使用该工具可以将m脚本文件和m函数转化成相同功能的C\C++文件,相比其它方法使用MATCOM具有如下优点:

转换过程简单(由MATCOM工具自动实现),容易实现;可以方便的生成动态链接库文件(dll)和可执行文件(exe);不仅可以转换独立的脚本文件,也可以转换嵌套脚本文件;设置环境后,可以使用MATLAB的工具箱函数;但MATCOM也有不足对struct等类的支持有缺陷,对class数据类型;部分绘图语句无法实现或得不到准确图像,尤其是三维图像;因此在不涉及到三维做图以及m文件不大的情况下方便使用。

在本设计中运用MATCOM对MATLAB所编的计算程序进行编译。

1.3.3MicrosoftVisualC++

MicrosoftVisualC++,(简称VisualC++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。

VC++整合了便利的除错工具,特别是整合了微软视窗程式设计(WindowsAPI)、三维动画DirectXAPI,Microsoft.NET框架。

目前最新的版本是MicrosoftVisualC++2010。

MicrosoftVisualC++是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。

它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。

它以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。

比如,它允许用户进行远程调试,单步执行等。

还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。

其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。

这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。

1.4本文研究工作和章节安排

第1章绪论简要介绍了本设计的研究背景,相关理论的支持,以及所要运用的软件。

第2章对表面粗糙度测量中的高斯滤波快速算法理论作了具体介绍,主要是对高斯算法的理解以用于计算粗糙度的滤波中线。

第3章简要介绍如何利用MATLAB来进行数值运算,以实现高斯算法求得粗糙度的中线。

第4章介绍了MIDEVA作为M文件的解释器和集成开发环境,它通过一个完整而强大的开发和运行M文件的环境包含并拓展了MATCOM的功能。

第5章介绍有关粗糙度的国际标准。

第6章浅析MATLAB与VisualC++联合编译。

 

2表面粗糙度测量中的高斯滤波快速算法理论

下文叙述一种用高斯函数的逼近法和冲激响应不变法设计出高斯数字滤波器,并给出了其零相移的递归滤波算法,算法简洁,易于实现。

递归计算方法计算量小,因而速度快,适当增加滤波器节数,在不增加很多计算量的情况下,可以达到很高的精度。

这一理论方法已得到了实验验证。

2.1高斯滤波器幅度特性的逼近方法

ISO11562标准规定高斯滤波器的权函数为:

(2-1)

其中t为空间域变量,

是截止波长。

是一个常量,当

时,要求高斯滤波器的传输值为50%,所以

=0.4697。

高斯滤波器的傅里叶变换仍然是高斯函数,其幅度传输特性为:

(2-2)

由于

=NcT,

=nT,Nc为截止波长

内的采样点数,n为空间波长

内的采样点数,T为采样间距所以有:

(2-3)

根据中心极限定理,对于高斯函数的逼近函数,其时域的冲激响应的自卷积是高斯函数的一个更好的逼近,当自卷积的次数不断增加时,卷积结果最终就是高斯函数。

由卷积定理可知,时域自卷积等效于频域自相乘,当自相乘的次数增加时,相乘结果亦必是高斯函数。

总之,频域自卷积或时域自相乘的最终结果都趋于高斯函数的形式。

根据这一规律,就可以用低阶的高斯逼近函数来设计IIR型数字滤波器,然后通过时域自卷积、频域自相乘来实现高斯滤波特性。

选取

(2-4)

作为

的一个逼近函数,那么式(2-4)通过频域自相乘,可以构造一系列的滤波器:

(2-5)

(2-6)

(2-7)

(2-8)

因为

时的滤波器传输值为50%,所以

=1,

=0.4142,

=0.1892,

=0.0905,

=0.0443。

这里以逼近滤波器

为例来说明问题。

它由8个基本环节级联而成。

每个基本环节如下:

(2-9)

即为:

(2-10)

由于

,所以,

(2-11)

实质上,这是一阶巴特沃思低通滤波器的幅度平方函数。

将模拟滤波器幅度平方的如下关系:

代入式(11),则:

(2-12)

其在s平面的左半平面只有一个极点

,由此可得巴特沃思滤波器系统函数为:

(2-13)

即为设计高斯逼近滤波器

的模拟滤波器原型。

2.2冲激响应不变法设计高斯数字滤波器

对式(2-13)应用冲激响应不变法,设计IIR型数字滤波器[19],得到

如下:

(2-14)

其中,

,当

≥200时,

,同样可得

对应的Z变换如下:

(2-15)

如此两个数字滤波器组成零相移滤波器,则总的幅频特性为

,而相频特性为零,即:

=

(2-16)

其中

幅频特性

如下式所示:

(2-17)

这样的零相移滤波器经过8级级联,能以很高的精度逼近高斯滤波器的幅度特性[20]。

由此得到用于表面粗糙度测量的高斯滤波流程如图1-1所示。

图1-1表面粗糙度测量的高斯滤波流程

或n=Nc时,要求传输系数为50%,所以

(2-18)

由式(18)可以求得a,它是对逼近滤波器原型巴特沃思滤波器的极点进行修正,当Nc=1600时,可得a=0.0129679。

2.3零相移的高斯滤波差分递归算法

设零相移滤波器的输入序列为x(n),中间计算结果为r(n),滤波器输出序列为y(n),其相应的z变换为x(z)、r(z)、y(z)有,它们之间有如下的关系式:

(2-19)

(2-20)

由于式(20)可以变为下式:

(2-21)

分别为

的z变换,所以输入信号x(n)经一级滤波后,将得到的结果反序,再经过同一滤波器,可以得到零相移滤波输出。

如此的正反两向滤波的零相移滤波器,其对应的差分方程为:

(2-22)

(2-23)

式中Nt表示评定长度上对表面轮廓的总的采样点数,m=1,2,…,Nt。

这样的运算经8次循环就可以精确获得高斯滤波中线。

从上式可以看出,每次运算都只有少量的加减和乘法操作。

这种递归算法计算量小,运算速度自然就快。

实验表明用8级零相移滤波器进行滤波,其最大传输偏差大约为2%,这远高于ISO11562[21]标准推荐的简化方法的5%。

如果用16级零相移滤波器进行滤波,则滤波精度[22]更高,最大传输偏差只有1%,而增加的计算量是完全可以接受的。

对于16级零相移滤波器[22],公式(22)中的系数a应为0.0184891。

更多级的零相移滤波器依然具有式(2-22)、(2-23)的形式,只是系数a不同。

对一实际工件表面进行测量,选取的截止波长

=0.8mm,截止波长内的采样点数为1600,采样间距为0.5

,在7

长度上,总共测得11200个数据,采用上述算法取中线[23]。

由于边界作用,只有中间5

长度内的数据可被用来评定表面,即用原始轮廓的中间5

长度内的数据减去对应的中线数据,将得到粗糙度轮廓[24],由此可计算表面粗糙度参数。

2.4结论

用高斯函数的逼近法设计出的高斯递归滤波算法,计算量小,计算速度快,滤波精度高,有效地解决了传统方法计算效率和滤波精度两者之间不可调和的矛盾。

用文中介绍的8级零相移滤波器进行滤波,其最大传输偏差大约为2%,用16级零相移滤波器进行滤波,则其最大传输偏差小于1%。

这远小于国际标准推荐的简化方法的传输偏差。

在我们设计的表面粗糙度测量系统中,即使是用低效率的VisualBasic语言设计的滤波程序,上述两种滤波器耗时均不到1s,即可完成11200点的轮廓数据的滤波。

可见,适当增加滤波器节数,在不增加很多计算量的情况下,可以达到很高的精度。

文中的方法可以推广用于表面粗糙度三维测量中的参考表面的确定,这种高精度和高效率的优越性更为突出。

 

3高斯算法的Matlab实现

Matlab提供了两种运行方式,即命令行方式和M文件方式。

两种运行方式各有特点。

命令行运行方式可以通过直接在命令窗口输入命令行来实现计算或作图功能。

其方法就是打开Matlab界面,在命令窗口输入命令运行即可。

M文件运行方式在Matlab窗口中单击File菜单,然后依次选择New→M-File,打开M文件输入运行界面。

与命令行方式相比,M文件方式的优点是可调试,可重复应用。

3.1优势

Matlab的应用范围非常广,包括[25]信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。

附加的工具箱(单独提供的专用Matlab函数集)扩展了Matlab环境,以解决这些应用领域内特定类型的问题。

Matlab产品族可以用来进行以下各种工作:

●数值分析

●数值和符号计算

●工程与科学绘图

●控制系统的设计与仿真

●数字图像处理技术

●数字信号处理技术

●通讯系统设计与仿真

●财务与金融工程

(1)友好的工作平台和编程环境

Matlab由一系列工具组成。

这些工具方便用户使用Matlab的函数和文件,其中许多工具采用的是图形用户界面。

包括Matlab桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。

随着Matlab的商业化以及软件本身的不断升级,Matlab的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。

而且新版本的Matlab提供了完整的联机查询、帮助系统,极大的方便了用户的使用。

简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,且能够及时地报告出现的错误及进行出错原因分析。

(2)简单易用的程序语言

Matlab一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。

用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。

新版本的Matlab

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1