NURBS曲线曲面插补算法基于S12的测试

时间:2022-09-26 02:53:02

NURBS曲线曲面插补算法基于S12的测试

摘要:传统的基于直线和圆弧的插补算法已经不能满足数控技术发展的需要,采用基于自由曲线的插补算法是大势所趋。目前关于NURBS曲线插补的研究大部分还停留在单段的研究上,没有突破传统数控技术的范围。在目前开放式数控技术日益重要的情况下,提出了基于整条曲线或者整个曲面的插补算法,并将该算法应用在S12单片机上进行测试,测试结果显示能够满足要求。

关键词:插补算法;NURBS;S12微处理器

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)09-2155-03

Research on NURBS Curve and Surface Interpolation Algorithm and its Test Based on Microprocessor S12

WEI Sheng-li, CHANG Guo-quan

(Computer Science and Information Engineering Department, Anyang Institute of Technology, Anyang 455000, China)

Abstract: The traditional interpolation algorithm can not satisfy the development of NC technology, and a new interpolation algorithm based on free curve or surface is becoming the research focus. At present, the research on interpolation algorithm based on NURBS is still focus on sole-section stage and its application is still confined in the traditional NC domain. With the development of open NC technology, present a interpolation algorithm based on a whole NURBS curve or surface. Last the algorithm is tested on a microprocessor S12, and the results display its validity.

Key words: interpolation algorithm; NURBS; microprocessor S12

传统的数控系统往往只提供直线和圆弧插补程序,对于非直线或圆弧的曲线则采用直线或圆弧分段拟合的方法进行插补。这种方法在处理复杂曲线时会导致诸如数据量大,精度较差,进给速度不均,通用性差,编程复杂等一些问题[1-2]。基于以上原因,一些学者提出了曲面直接插补(SDI,Surface Direct Interpolation)算法[3]。所谓直接插补算法,指的是在一系列插补周期中沿插补曲线求出曲线上的一系列型值点,然后用连接这些型值点的短直线去逼近插补曲线的插补方法。这种插补方法极大地提高了插补精度和插补速度,具有很大的优点[4]。

目前,关于直接插补算法的研究多集中在B样条曲线曲面这样的自由曲线曲面上面(如参考文献[4-5])。但由于一般的B样条曲线曲面不能统一地描述标准的解析形体(圆锥曲线、旋转面等),所以现在有学者研究基于NURBS(非均匀有理B样条)曲线曲面的插补算法[2]。NURBS曲线曲面可以用一个统一的表达式描述自由曲线曲面和标准的解析形体(圆锥曲线、旋转面等)。NURBS是B样条的扩展,NURBS包含B样条的所有内容。这些关于NURBS曲线插补的研究大部分还停留在单段的研究上,没有突破传统数控技术的范围。本文实现了一个基于完整的三次NURBS曲线、曲面插补算法,并将算法移植到S12单片机上进行测试。

1 NURBS概述

样条函数的概念首先是由舍恩伯格(Schoenberg)在40年代提出来的,当时并未引起重视,直到70年代,人们才发现了它的价值。1972年德布尔(de Boor)和考克斯(Cox)给出了B样条的递推定义和一套标准算法[6]。

1974年美国通用汽车公司的戈登(Gordon)和里森费尔德(Riesenfeld)将B样条理论应用于形状描述,提出了B样条曲线曲面。它几乎继承了贝塞尔方法的一切优点,克服了贝塞尔方法的缺点,较成功地解决了局部控制问题,又轻而易举地在参数连续性基础上解决了连接问题[7]。

B样条方法较成功地解决了自由型曲线曲面形状地描述问题。然而B样条方法不能准确地表示圆锥截线及初等解析曲面,都只能给出近似表示,不能适应大多数机械产品的要求。80年代后期,人们希望找到一种既能描述复杂曲线曲面又能描述二次曲线和二次曲面的统一的数学方法,在这种情况下,非均匀有理B样条(NURBS ,Non-Uniform Rational B-Spline)方法应运而生。70年代初,里森费尔德(Riesenfeld)等人研究了非均匀B样条,1975年,美国锡拉丘斯(Syracuse)大学的佛斯普里尔Versprille完成了有关有理B样条的博士论文。20世纪80年代后期,美国的皮格尔(Piegl)和Tiller将有理B样条发展成为非均匀有理B样条(NURBS)方法。其它国内外的学者也对NURBS方法进行了深入的研究。

2 NURBS相关理论

目前NURBS方法已成为用于曲线曲面描述的最广为流行的技术。非有理与有理贝塞尔和非有理B样条曲线曲面都被统一在NURBS标准形式之中,因而可以用统一的数据库。国际标准组织(ISO )继美国的PDES标准之后,于1991年颁布了关于工业产品数据交换的STEP国际标准,把NURBS作为定义工业产品几何形状的唯一数学方法。当前在数控加工领域,FANUC、SIEMENS等高档数控系统已能直接进行NURBS插补,UG等高档CAD/CAM软件也能输出NURBS插补代码,NURBS插补方法将逐渐在CNC中占重要地位。

在需要加工的产品中,有很多具有自由曲线和曲面形状,而传统的插补算法对此有时显得无能为力,特别是针对复杂的、需要进行高精度和高速度加工的自由曲线曲面的时候[1]。而基于B样条或者NURBS曲线曲面的直接插补算法无疑是解决这一问题的有效途径。1991年,STEP(Standard for the Exchange of Product Model Data,产品模型数据交换标准)把NURBS作为定义工业产品几何形体的标准数学表达方法[5]。而当前在数控加工领域,FANUC、SIEMENS等高档数控系统已能直接进行NURBS插补,UG等高档CAD/CAM软件也能输出NURBS插补代码,NURBS插补方法将逐渐在CNC中占重要地位。

由de Boor和Cox分别导出的B样条递推定义,B样条曲线可表示为[6]:

(1)

Vi(i=0,1,…, )是控制顶点,Bi,k(u)称为B样条基函数,由下面的递推公式定义:

、ui称为节点,当ui+1-ui=常数时,则表示均匀B样条函数,反之称为非均匀B样条函数。如果在公式(1)中给控制顶点乘以相应的权因子,则称之为有理B样条曲线,如果节点也是不均匀的,那就演化为NURBS曲线了。

B样条曲面则定义为:

其中:其中Vi,j为控制顶点,Bi,k(u)和Bi,k(ω)分别为k次和l次B样条基函数,u和ω是曲面的两个参数,ui和ωj分别是两个方向的节点。

NURBS曲线的定义如下:

其中Vi为控制顶点,Wi为权因子,Bi,k(u)为k次B样条基函数。NURBS曲面则由下式定义:

其中Vi,j为控制顶点矢量,Wi.j为权因子,Bi,k(u)和Bi,j(ω)分别为沿u向k次和沿ω向l次B样条基函数。

3 NURBS曲线曲面插补算法

插补算法的实质是点的密化,对于NURBS曲线则转化为求解曲线上的点。NURBS曲线是参数曲线,点的密化需要参数的密化。参数密化的方法有:1)等距法,也就是说参数是均匀增加的;2)等步长法,就是保证每次插补的步长基本恒定,通常用泰勒展开式实现,为了保证步长的稳定性,还可以进行校正;3)自适应法,随插补曲线的曲率或者挠率的变化自适应的改变进给步长以保证加工精度。文献[8-9]采用了等步长法,并采用了一定的措施进行校正。文献[10]则采用了自适应方法。

对于曲面插补,首先要将曲面离散成曲线,如图1所示。常用的将曲面离散成曲线的方法有以下两种:一是用一组平面切割曲面以获得一组NURSB曲线,然后按曲线进行插补。二是首先将曲面的两个参数中的一个进行离散,获得一系列的值,将这些值代入曲面公式可以获得一系列的NURBS曲线,最后可按这些曲线进行插补。文献[11-12]采用了第一种方法。在第二种方法中,首先要对两个参数中的一个进行密化以获得一系列的值,密化的方法有当然可以采用前面的密化方法,但在这里我们采用一种所谓的残留误差控制法来控制刀径之间的残留误差。为了提高插补的速度和平稳性,按照这些曲线进行插补时最好采用“之”形的路线进行,我们的研究采用一种方法较好的解决了这个问题。

获得了两个参数之后,就可以求出曲线相应的点了(型值点),求的时候可以首先将NURBS曲线曲面用矩阵的方法来表示,然后进行求解。这种方法可以将一部分计算放在插补前集中进行以提高插补的实时性。也可以用de Boor方法来进行求解,这是一种递推方法,适宜于在计算机中使用。在算法实现中我们采用了de Boor方法。这种方法的好处是可以在求型值点的时候将该点的一阶二阶导矢同时求出,加快计算速度,同时我们也利用了NURSB的局部性质来加快计算速度,提高插补的实时性。根据图1可以根据两个参数求出该点的型值点、两个参数方向的切矢、法矢等值,有了这些值就可以根据坐标变换公式求出相应的坐标轴的相对运动,实现刀具的移动,具体方法可以参考文献[4]。

4 测试

插补算法最终是要在控制器上运行的。目前有很多控制器采用单片机进行实现,尤其是开放式数控系统中,控制器多采用PC机、DSP和单片机来实现。在将插补算法用C语言实现后,需要测试算法及代码在单片机上的运行情况。这里运行环境采用了MC9S12DG128微处理器。

本实验系统采用的核心版是MC9S12DG128微处理器,它是Freescale公司MC9S12系列16位单片机中的一种,其内部结构主要有单片机基本部分和CAN功能块部分组成,基本结构包括:中央处理器单元 S12(CPU)、2个异步串行通信口SCI、2个同步串行通信口SPI,8通道输入捕捉/输出比较定时器,1个8通道脉宽调制模块以及49个独立数字I/O口(其中20个具有外部中断及唤醒功能),在片内还拥有128KB的Flash ROM,8KB的RAM和2KB的EEPROM,CAN功能块包括两个兼容CAN2.0A/B协议的msCAN控制器组成,这些丰富的内部资源和外部接口资源可以满足ECU对各种数据的处理、CAN网络数据的发送和接收要求,芯片集成了两个MSCAN12模块,能够实现高低速CAN网络的网关节点功能。

运行结果通过串口传到PC机的超级终端中显示,如图2所示。算法可以实现数控系统五个轴的运动计算,为了简化程序,我们这里只输出了两个轴的值。要完整的测试该算法,最好是驱动一个五轴运动平台。但是由于条件的限制,我们只能从运算的数据进行分析测试的结果。

5 结束语

本文提出的基于NURBS曲面的插补算法是整个NURBS曲面的,有别于通常所讨论的一个粗插补段的基于NURBS曲线的精插补的算法。本文所提出的插补算法是基于开放式数控系统。可以在上位机(PC机)上面设计NURBS曲面,然后将该曲面参数传递给下位机进行插补运算,实现曲面的加工。从上面可以看出,算法可以给出正确的结果。但作为一个数控系统,需要做的任务还很多,要对算法及程序代码的稳健性进行测试,对插补的实时性进行测试,其次将控制器和多轴运动平台结合,使之成为一个完整的系统。

参考文献:

[1] 陈伟,殷苏民.五轴联动数控激光加工系统的空间曲线B样条插补算法研究[J].机床与液压,2004,1:53-55.

[2] 李杰,马跃.数控系统中NURBS插补技术[J].微计算机信息,2007,7(1):210-212.

[3] 吴光琳,林建平,李从心,等.B样条曲线的快速实时插补算法[J].模具工业,2000,10:14-16.

[4] 周济,周艳红.数控加工技术[M].北京:国防工业出版社,2002.

[5] TSENG Pai-Chung, HON Jung-Yong. The Design of Free Surface Interpolator for CNC Machining[J].JSME International Journal Series C, 2004,47(1):421-428.

[6] 朱心雄.自由曲线曲面造型技术[M].北京:科学出版社,2000.

[7] 赵巍.数控系统的插补算法及加减速控制方法研究[D].天津:天津大学,2004:4-5.

[8] Tsai M C, Cheng C W, Cheng M Y. A Real-Time NURBS Surface Interpolator for Precision Three-Axis CNC Machining[J]. International Journal of Machine Tools and Manufacture, 2003,43(12):1217-1227.

[9] Yeh S S, Hsu P L. The Speed-Controlled Interpolator for Machining Parametric Curves[J]. Computer-Aided Design,1999,(31):349-357.

[10] 游有鹏,王珉,朱剑英.参数曲线的自适应插补算法[J].南京航空航天大学学报,2000,12:667-671.

[11] Lartigue C, Thiebaut F, Maekawa T. CNC Tool Ppath in Terms of B-spline Curves[J]. Computer-Aided Design,1999,31(5):307-319.

[12] 范守文,徐礼钜,李辉.面向新型并联机床的NURBS曲面直接插补算法研究[J].机械科学与技术,2004,23(8):934-937.

上一篇:探讨Authorware自带的教学程序――ShowMe程序 下一篇:基于SCORM的课件教学资源的兼容性分析