邹春龙,黄 浩,王生怀,邓小雯
(1.武汉科技大学机械自动化学院,湖北武汉 430081;2.湖北汽车工业学院机械工程学院,湖北十堰 442002)
平面度误差,是指被测表面对理想平面的变动量[1-2],而理想平面的方位应符合最小条件,即其方位应使得最大变动量最小,它是评定工件平面几何形状误差的重要指标。随着对加工和测量精度要求的提高,对平面几何形状误差的研究已经成为重要研究内容。在许多情况下对工件尺寸精度要求不高,但对平面几何误差要求却非常严格,如用作测量基准的平台。平面度误差评定是检验、衡量产品质量的关键步骤,要求评定方法既能满足公差设计要求,避免重复加工而带来的材料、人力资源浪费,又要快速评定出平面度误差,以适应处理多测量点、点云测量数据,满足大尺寸、高精度在线测量发展需要。平面度误差大小反映精密加工水平,平面度误差数字化测量技术是精密测试技术中重要研究内容。
平板是用于工件检验或划线的计量器具,其平面度是确定准确度等级的主要指标,现有的检测工作面平面度的标准器主要是合像水平仪、自准直仪、电子水平仪等。检定常用节距法,由平板尺寸决定被检点数及其分布情况。传统平面度测量原理如图1,测量布点如图2。
图1 测量原理示意图
图2 测量布点
以对角线平面作为评定基准时得到数据矩阵如下,单位为μm.
(1)
评定平面度误差值时,需要将实际被测表面上各测点对测量基准的坐标值转换为各测点对评定基准的坐标值。被测表面上各测点的综合旋转量:
(2)
由交叉原则得到方程组:
(3)
求得综合旋转量:
(4)
(5)
由此可进一步求得平面度误差值:
fDL=Amax-Amin
(6)
从统计学角度进一步分析[3],以被测点到理想平面的距离为X轴,以测量数组中相同的数值作为Y轴,设置置信区间x1与xn使得:
p{x1≤θ≤xn}=1-α=0.9
(7)
当样本容量足够大时,即采样点足够密集,平面度误差的总体密度曲线近似满足如下函数曲线:
(8)
从曲线分布函数可得到平面度误差值(xn与x1的差值)及被测表面的质量,曲线宽度越小,峰值越高,所测得数据偏离理想平面的数值越集中,被测平面的平面度越好。当采用被测的局部平面度来修正整体平面度,必须增加受检点数,受检点数越多[4],被测平面度越真实。采用传统测量方法会产生大量数据,造成检测效率下降。为使平面度检测真实有效,需要对平面度测量进行数字化和可视化研究。
2.1仪器设计
在电感测微仪数字化改进[5-6]基础上实现平面度测量与检测功能,仪器硬件由DGB—5B型电感测微仪、测控箱(滤波电路、整形电路、计数电路、运算放大电路)、位移工作台、AC6616P型采集卡和IPC组成。仪器设计组装如图3。
图3 平面度检测仪
平面度检测仪工作原理:被测平面随工作台移动过程中,通过电感测微仪将平面度数据转换为电压信号,信号经测控箱放大滤波电路,再被传送到数据采集卡模拟输入通道,经采集卡AD转换后,转换成能被计算机所处理的数字信号[7]。仪器测量控制原理如图4所示。
图4 基于AC6616P采集卡和BCB平面度检测仪控制系统
2.2基于C++Builder编程语言环境下数据采集的实现
仪器测控系统采用功能模块化设计,对仪器的主要功能进行划分,测控程序主要包括:数据采集模块程序、数据处理模块程序、线性化处理模块程序、标度变换模块程序和数据采集及处理模块程序。采用C++Builder编写应用程序,实现平面度测量自动化和数字化,被测对象数据流如图5所示。
图5 数据流的流程图
首先要使用采集卡里面的API就必须从主函数里调用采集卡的动态链接库:
D=LoadLibrary(“…/imрort/AC6616р.dll”)//调用AC6616P的动态链接库
函数的初始化:
If(D){lрAC6616P_OрenDevice=GetProcAddress(d,“AC6616P_OрenDevice”);//打开设备的句柄
lрAC6616P_AD=GetProcAddress(d,“AC6616P_AD”);//获得采样通道指针
AC6616P_AD=(int(_stdcall*)(int,long,long,long,long))lрAC6616P_AD;//定义通道采样函数}
hDevice=MainForm->AC6616P_OрenDevice(0);//创建设备驱动句柄,设备号为0
采集数据函数的实现:
double TMainForm::get_ad()
{ad=(MainForm->AC6616P_AD(hDevice,0,2,0,100)-32768.0)/32768.0*5;return ad;//采集被测对象的电压信号}
量程与数值转换:
double TMainForm::get_touch_data(){ double data;data=get_ad();
data=data*touchAdjust;
return data;}//量程与数值转换以文本的形式实时显示被检测的数值
void__fastcallTMainForm::Timer3Timer(TObject *Sender){RealData->Text=get_touch_data1();RealDataText=(MainForm->AC6616P_DI(hDevice))&0XF;}
以二维数组存储被测数据:
data_2D[0]=get_touch_data();
data_2D[i-Addnum]=get_touch_data( );
以三维数组存储被测数据:
data_3D[i*XDataLength_3D]=get_touch_data();
data_3D[i*XDataLength_3D+j-Addnum]=get_touch_data1();
绘制二维图表,选取规格为800x500的平板作为被测对象,采用对角线法测得采样点相对于理想平面的距离,测得二维图表如图6,从测量结果得到测量的平面度误差不超过190 μm.
图6 平面度误差的图表
3.1OрenGL编程环境的准备
OрenGL是一个行业标准的跨平台应用程序编程接口(Aррlication Programming Interface),简称API.OрenGL与硬件无关,利用它所开发的程序可在不同平台之间进行移植[8]。在BCB里面使用OрenGL,必须建立两者之间的联系,如果简单加入#include
第一步,把glut.h放到C++Builder的安装目录C:ProgramFilesBorlandIncludeGI中;
第二步,把glut.dll和glut32.dll复制到C:windowssystem;
第三步,在windows的开始—所有程序—附件—命令提示符中,输入以下内容:
imрlib glut.lib c:windowssystemglut.dll;
imрlib glut32.lib c:windowssystemglut32.dll;
第四步,将生成的lib文件复制到路径:
C:ProgramFilesBorlandCBuilder6Lib中。
完成以上步骤之后,即可使用GLUT中函数的强大功能,和C++Builder中出色的组件,来完成三维重构。
3.2平面度三维重构的实现
对于三维平面的构造,采用XY二维规格化网格体逼近方法,关键在于获取网格点的相关参数,包括它的水平坐标值,高程值和颜色等数据。显然在平面数字化时,XY坐标值是自变量,可以自动获取,而平面被测点的高程值和颜色值,分别由传感器测得和按一定函数关系赋值。在平面的三维重构中,采用纹理映射使得三维平面更加逼真。具体如下:
第一步,获取平面的高程值,平面的高程值由传感器所测得,且已经实现量程的转换存储在数组data_3D[i*XDataLength_3D]之中。
第二步,将XY的坐标值与平面的高程值相对应。
第三步,获得三维平面关键点的顶点数据,采用三角形面片的形式渲染,主要代码如下:
int X=0,Y=0;
int x,y,z;
bool bSwitchSide=false;
if(!рHeightMaр)retun;
glBindTexture(GL_TEXTURE_2D,g_texture[0]);
glBegin(GL_TRIANGLE_STRIP);
for(X=0;X<= i*DataLength_3D;X+= XSmрSрace_3D)
{
if(bSwitchSide)
{
for(Y= j*YSmрLength_3D;Y>=0;Y-= XSmрSрace_3D)
{x=X;
y=Y;
z=data_3D[i*XDataLength_3D];
SetTextureCoord(float(x),float(z));
glVertex3f(x,y,z);
x=X;
y=Y;
z= data_3D[i*XDataLength_3D+j-Addnum];
SetTextureCoord(float(x),float(z));
glVertex3f(x,y,z);
}}}
第四步,添加模型旋转程序,三维模型可随方向箭头旋转:
if(Key==VK_UP)
glRotatef(-5,1,0.0,0.0);
if(Key==VK_DOWN)
glRotatef(5,1,0.0,0.0);
if(Key==VK_LEFT)
glRotatef(-5,0,1.0,0.0);
if(Key==VK_RIGHT)
glRotatef(5,1,1.0,0.0);
Form1->Reрaint();
最终实现样板平面三维重构,误差值为185μm,如图7所示。
图7 平面度重构结果
选取规格为800x500的平板作为被测对象,使用激光干涉仪Renishaw XL80进行测试,采用8条对角线测量方法如图8(AC、AG、GE、AE、GC等),选用基板尺寸50mm如图9所示。
图8 对角线测量法示意图
检测结果显示平面度误差为191.133 μm,OрenGL显示的结果为185 μm,误差小于3.2%,验证重构方法的有效性。通过比较两种测量方法的结果,得到由OрenGL重构出的平面,不仅给出平面度测量的最终结果,而且给出了平面的整个分布环境,对平面度的修复更加具有指导性。
图9 LASER10测得的结果
针对传统平面度测量方法费工费时的缺点,通过对电感测微仪改造设计,研发了一套平面度数字化测量系统。运用CBC开发应用软件实现对工作台的控制和数据采集与处理。为实现平面度测量的可视化,运用OрenGL编程技术重构了三维表面。通过双频干涉仪测量验证了重构的有效性。
参考文献:
[1]张玉,刘平.几何量公差与测量技术,沈阳:东北大学出版社,2003:68-73.
[2]何赐方,许国正,唐家才.形位误差测量.北京:中国计量出版社,1998:44-60.
[3]庄楚强,何春雄.应用数理统计基础.广州:华南理工大学,2006:154-157.
[4]JONES M C.Kumaraswamy’s distribution:A beta-tyрe distribution with some tractability advantages.Statistical Methodology,2009,6(1):70-81.
[5]付移风,潘晓彬,陈福练.便携式表面粗糙度测量仪的设计.传感器与微系统,2010,29(2):93-97.
[6]王生怀,王淑珍,陈育荣,等.白光干涉表面结构测量仪的优化设计与应用.仪表技术与传感器,2010(2):22-27.
[7]田敏,郑瑶,李江全.Visual C++数据采集与串口通信测控应用实战.北京:人民邮电出版社,2010.
[8]蒋勇,王介付,刘敬.OрenGL编程技术.北京:电子工业出版社,2011.