碧波液压网 欢迎你,游客。 登录 注册

基于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上求解,得

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签: MATLAB
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论