基于MATLAB的直线度误差精确评定
?
0 引言
直线度误差用于限制给定平面内或空间直线的形状误差,应用非常广泛,如加工零件的直线度、直线运动部件的直线度。国家标准规定最小条件法是评定形位误差的基本准则,它具有准确性和唯一性的特点[1]。目前常用的平面内直线度误差评定方法主要有:最小二乘法、两端点连线法、控制线旋转法、凸体法、优化法,它们都是一种近似的方法,各有利弊[1-3]。最小区域法虽然符合国家标准,这些算法需要作图,不便于工程人员的使用,尤其是当点增多的时候。本文提出了一种基于MATLAB软件的符合最小条件的直线度误差精确计算方法,该方法计算速度快、算法简单、便于运用。
1 直线度误差评定的数学模型
计算直线度误差的主要任务就是找出理想直线l
求出实际直线对该直线的最大变动量,从而得到直线度误差。直线度误差曲线如图1所示。设有n个测点(xi, yi), i=1,2,,, n,将直线l向下平移一个足够大的量Δb得到直线l',
使实际直线上的各点位于lc之上。那么
fmin为直线度误差。
直线度误差的评定就转化为求函数f(k)的最小值问题。
2 基于MATLAB的直线度误差精确评定
MATLAB是一种功能强大、简单易学、编程效率高的科学计算语言,它融数值计算、符号计算、绘图等为一体。MATLAB中用于求函数在指定区间上最小值的函数是:
fmin(f, a, b)求单变量函数f(x)在区间(a, b)上的最小点[4]。
可用此函数来求直线度误差。
f(k)函数文件f1m定义如下:
function f=f(k)
fid=fopen(.data1txt.,.r.); %打开数据文件
n=fscanf(fid,.%d.,1); %读入测点的个数
x=fscanf(fid,.%f., n); %读入x的坐标
y=fscanf(fid,.%f., n); %读入y的坐标
fclose(fid); %关闭数据文件
for j=1Bn
r(j)=y(j)-k*x(j)+200;
end
f=max(r)-min(r);
数据文件data1txt是一个文本文件,格式如下:81 2 3 4 5 6 7 80 -4 -5 -4 -2 +4 +2 -3数据文件包括三部分,第一部分为测量点的个数,第二部分为测点的x坐标或当量坐标,第三部分为测点的y坐标。
用语句km in=fm in(.f., -2, 2)即可求得f(k)取得最小值时的k值。由f(kmin)即可求得直线度误差。
3 实例分析
用水平仪按7个相等跨距测量机床导轨的直线度误差,各测点读数分别为-4, -1, +1, +2, +6,-3, -5(单位μm)。则数据见表1。
计算各个测点的坐标值,构造数据文件data1txt,如第2部分所示。根据数据可以大致估计20<k<20,因此可用语句fmin(.f., -20, 20)求kmin。在MATLAB610上求解,得
相关文章
- 2024-09-30基于特征点位置及速度的空间非合作目标质心位置测量方法
- 2023-04-20激光三角测量中图像传感器参量自适应控制
- 2023-11-01利用小型后坐冲击模拟试验装置进行重锤加速度的测量与分析
- 2024-05-24利用ADuC834构成二次仪表系统
- 2023-06-02基于模板匹配和神经网络的车牌字符识别方法
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。