飞扬范文网
当前位置 首页 >思想汇报 >

浅谈数控编程中加工轨迹的确定及算法实现

发布时间:2021-12-20 15:04:59 浏览数:

  要:对数控编程中的轮廓加工轨迹生成方法及原理进行了介绍,在此基础上对加工轨迹的生成算法进行了详细说明,重点对二维轮廓中交点相切的相邻直线或圆弧,以及相邻互不相切的直线或圆弧间的等距机制和补偿算法进行了研究,其结果对数控程序的开发及准确代码的生成都有着重要的意义。

关键词:数控编程;加工轮廓;刀具轨迹;算法

    数控编程是随着数控机床的诞生而发展起来的一门技术,随着生产的要求而不断的发展完善。数控编程技术经过手工编程,基于语言的计算机自动编程和基于图形的自动编程三个阶段,现在数控技术的发展正处于第三阶段,即利用CAD软件的图形编辑功能将零件的几何图形绘制到计算机上,形成零件的图形文件,然后调用数控编程模块,采用人机交互的方式在计算机屏幕上指定被加工的部位,再输入相应的加工参数,计算机便可自动进行必要的数字处理并编制出数控加工程序,同时在计算机屏幕上动态地显示出刀具的加工轨迹。基于图形的自动化编程得到了越来越广泛的应用。

数控编程的一大基本功能,是根据用户输入的零件参数自动输出数控代码。一般情况下,用户输入的零件参数是零件的设计参数,而数控代码的编制则是以加工轨迹为基准。因此加工轨迹的确定是整个CAM系统的根本。在数控加工中,由于刀具直径不能忽略,刀具中心的行走轨迹往往与零件的设计轮廓并不重合,再加上特殊加工工艺,需要人为地对零件设计轮廓进行偏移。因此,为了获得正确的数控代码,有必要对设计轮廓的偏移策略进行研究。另外,一般情况下,用户在绘制零件轮廓时,并不会严格遵循加工的顺序,因此在进行轨迹偏移之前需要进行轮廓排序等预处理。

1  轨迹生成步骤与原理

1.1  创建刀具库

在SQL Server中,创建名称为CutterBase的数据库,表单中的字段为刀具的属性参数。然后在windows操作系统的控制面板中找到“管理工具”图标,双击这个图标可以看到“数据源(ODBC)”图标,打开ODBC数据源管理器,根据提示创建CutterBase数据库的数据源,名称为CutterBaseSource。

ODBC是为客户应用程序访问关系数据库时提供的一个标准接口,对不同的数据库,ODBC提供了一套统一的API,使得应用程序可以应用所提供的API,访问任何提供了ODBC驱动程序的数据库。而且,由于ODBC已经成为一种标准,所以现在几乎所有的关系数据库都提供了ODBC的驱动程序,从而使得ODBC应用更加广泛。

用VC开发工具的MFC(Microsoft Foundation Class)类库就可以自动生成刀具库对话框。MFC封装了ODBC的Cdatabase和CrecordSet类。前者用于应用程序建立同数据源的连接,后者实现对结果集的数据操作。

1.2  加工轮廓排序

图形元素的排序也就是确定加工轨迹,加工轨迹一般是一条连续的曲线,由首尾相接的一系列单元轮廓构成。因此轮廓排序的基本思想就是:以用户选择的加工起始点为起点,以用户选择的加工方向为排序方向,将杂乱无章的轮廓按首尾相接的要求顺序排列,组成连续的有向曲线。

图1所示的三个双向链表是实现此项技术的关键:第一条链表m_Figure主要是存储图形的输入与编辑后的数据结构;把复制结果粘贴在第二链表m_CopyFig中;排序结果存放在第三链表m_FigSort中,通过几个链表的操作来实现图形元素的排序。图形元素的排序操作也就是对链表m_CopyFig进行操作。系统根据零件轮廓线上前、后图素邻接的原则,确定了加工方向和起始点,然后对该链表进行排序,排好序的单元轮廓将按顺序存入轨迹链表,以备后用。

排序后轨迹链表中的曲线一般包括直线、圆弧和自由曲线等。要求前一段曲线的终点为下一段曲线的起点,其基本拓扑数据结构如图2所示。在曲线有序化过程中,系统程序要求对分段曲线是否连续进行判断,判断的方法很简单,就是判断前后两段曲线的终点和起点是否相同,如果不是同一点,则需要重新修改曲线。串连生成的曲线可以是封闭的,也可以是开放的。

1.3  定义刀具轨迹

进刀/退刀线是为了防止过切、碰撞和飞边而设置的。图3所示是使有三个参数指定进入和退出一个切削操作的刀具轨迹示意图。在轮廓加工中,由于刀具总有一定的半径(如铣刀半径或线切割的钼丝半径等),刀具中心的运动轨迹与所需加工零件的实际轮廓并不重合。在进行内轮廓加工时,刀具中心偏离零件的内轮廓表面一个刀具半径值。在进行外轮廓加工时,刀具中心偏离零件的外轮廓表面一个刀具半径值。这种偏离,习惯上称为刀具半径补偿 [1][2]。根据ISO标准,当刀具中心轨迹在编程轨迹(即零件轮廓)前进方向的右边时,称为右刀补,用G42表示;反之,称为左刀补,用G41表示。在实际的轮廓加工过程中,刀具半径补偿执行过程一般分为三步,即刀具补偿建立、刀具补偿进行、刀具补偿撤销。刀具补偿机制也是实现数控代码正确生成的重要前提。

2  加工轨迹生成算法

二维轮廓轨迹的生成算法是平面区域加工轨迹生成算法的基础,二维轮廓的等距轨迹在CAD/CAM等各个领域中起着很重要的作用,迄今为止,对二维轮廓的等距线轨迹算法已有许多文献论述,但是所设计的算法大都比较复杂、实现困难且不具通用性。现在的算法都是在对被加工轮廓按直线和圆弧段等距后构造两条直线,然后分4种不同情况分别处理而获得最终的刀具轨迹。这种方法求解复杂、编程困难,往往得不到理想的结果。本文的这种方法大大简化了等距轨迹的生成算法,其基本思想是:

①交点相切的相邻两直线或圆弧在等距后其等距线首尾相连且交点仍然相切;②被加工平面零件的二维轮廓,在相邻两条互不相切的直线或圆弧之间插入一个半径为零的过渡圆弧等价于二维轮廓。

2.1  轮廓轨迹的定义

被加工零件的轮廓轨迹不同于刀具运行的轨迹,刀具运行的轨迹是刀具中心轨迹,而加工轮廓是刀具切削刃(点或线)的轨迹。如数控机床上用立铣刀加工外轮廓表面或内轮廓表面,其刀具中心轨迹分别为图4中的O1和O2,从两种刀具中心轨迹可以看出:轮廓线段相接处有相接和相切方式连接,完全相切连接(光滑连接)时刀具中心轨迹运行,不能完全保证获得工件轮廓的理想轨迹,有些地方无法加工,如加工凹面时线段相交处或当刀具半径r大于圆半径时,有些地方往往会产生刀具干涉(过切)破坏加工表面,在软件中可通过修正刀具轨迹的方法来处理。

用C代表X,Y平面内的一曲线段,T代表在C处某一点Q上的单位切矢,N=Z×T 为Q点的法矢,Z为矢量(0,0,0)。

则P={Ci}  1≤i≤n这一组曲线的集合就称为二维轮廓,在这个二维轮廓中Ci段曲线的终点与Ci+1段的起始点相接(1≤i≤n-1),并规定在{Ci}中曲线段无相交,在程序中用一个单向的链表数据结构来定义:

typedefs{

short…………………………flag;

double…………………………spot[2];

double…………………………cpot[2];

double…………………………epot[2];

struct  jn-loop…………………………*next;

} JN-loop;

它实际上是所有曲线段顶点以及圆弧的圆心坐标组成的一个链表,通称为环,这个环可以是开环,也可以是闭环。

P={{Ci}}中,规定Qis为第i段曲线的起点,Qie为终点, Ti和Ni分别代表切矢和法矢。如d是一个非零实数,则对应于曲线段C的等距线可表示为:

O=C±d·N……………………………………(1)

2.2  基本元素的等距

(1)直线段等距:设直线段起点为S(Sx,Sy),终点为E(Ex,Ey),等距值为d,N为单位法矢:

N={-(Ey-Sy)/|SE|,(Ex-Sx)/|SE|}…………(2)

则等距后的直线段起点和终点矢量值为:

Os=S ± d·Ns, Os=E ± d·Ne…………(3)

(2)圆弧段等距:设圆弧的圆心为C(Cx,Cy),起点为S(Sx,Sy),终点为E(Ex,Ey),等距值为d, N为单位法矢:

Ns={-(Sx-Cx)/|CS|, (Sy-Cy)/|CS|}

Ne={-(Ex-Cx) /|CE|, (Ex-Cy)/|CE|}…………(4)

则等距后的圆弧段起点和终点矢量值为:

Os=S±d·N, Os=E±d·N …………(5)

2.3 刀具轨迹的生成

整个二维轮廓的刀具轨迹生成由程序实现可分为如下4个步骤:二维轮廓的获取;过渡圆弧插入;二维轮廓的等距;轮廓等距后自交的处理。

(1)二维轮廓的获取

在CAD/CAM系统中,通过人机交互方式设计出的一个平面加工零件,其轮廓是由各种曲线(包括直线、圆弧及椭圆、抛物线、B样条曲线、NURBS曲线等非圆曲线)组成的,而现有的数控机床只能进行直线和圆弧插补,所以加工非圆曲线就必须用一连串直线段或圆弧来拟合,只要原曲线误差不超过允许范围即可。

一般CAD所设计的二维轮廓线段,在几何数据库中不一定是按首尾相接的顺序存放的,为此建立一个环的捡取程序,指定环的起始段和终止段,通过判断每一段的终点坐标与起始坐标是否相等来确定曲线段的连接关系,如有分枝则屏幕提示由交互方式来确定轮廓的走向,当捡取到非圆弧曲线段时,执行曲线拟合程序,然后建立一个首尾相连的由直线和圆弧段的起点坐标、终点坐标和圆心坐标等数据组成的链表。如二维轮廓起始段和终止段首尾相接则为闭环轮廓,否则为开环轮廓。

(2)二维轮廓的预处理

检查相邻两直线或圆弧是否相切,如不相切则在相交点插入一个半径为零的过渡圆弧,具体算法如下:

遍历整个链表,计算出每一个结点(直线或圆弧)的起点和终点的单位切矢Tsi、Tei,比较Ci终点的单位切矢Tei与Ci+1的起点的单位切矢Tsi+1的值,如两端点单位切矢不等,则表明两曲线段在该处不相切,故需插入一个半径为零的过渡圆弧:

设lp为指向Ci的指针,计算Tei, Tsi+1,如果Tei≠Tsi+1则:

lp1=(jn-loop*) malloc(sizeof(jn-loop));

lp1->spot[]=lp1->epot[]=lp1->cpot[]=lp->epot;

lp2=lp->next;

lp->next=lp1;

lp1->next=lp2;

否则:lp=lp->next;

由于经过处理后的二维轮廓是一个首尾相连的直线和圆弧线段的组合,且相邻两线段的交点都是相切的,故其轮廓的等距变成了直线和圆弧的等距,等距算法变得很简单。等距后的一个曲线段组合也是一个两两相连并且相切的二维轮廓,其曲线段数与等距前的环相同,把它放在一个链表中,其结构同原来二维轮廓的结构相同。

① 等距算法:记环P={Ci},i=1~n (n≥1),等距环为OP={Oi}i+1 (n≥1);

a.等距Ci得其等距线Oi,i=1;

b.如果Ci是零半径圆则进行零半径圆弧段的等距;

c.否则等距Ci,得其等距线Oi,1≤i≤n。

② 零半径圆弧段的等距:设Ci线段为零半径过渡圆弧,因其半径为零,所以|Ce|=|Cs|=0,不能用式(4)求等距。根据交点相切的相邻两直线或圆弧在等距后其等距线首尾相连且交点仍然相切的原则,其等距后圆弧起点应为上一等距线段的终点Oei-1,终点为下一线段的始点Osi+1,故可以得到等距圆弧为Oi,其起点为Osi=Oei-1,终点为Oei=Osi-1,圆心坐标为第i-1段曲线Ci-1的终点坐标。

设lp为指向Ci的指针,op1为指向Oi-1的指针,如果lp1->spot[]=lp1->epot[]=lp1->cpot[],

op2= (jn-loop*)malloc(sizeof(jn-loop)),

计算Osi+1

op=(jn-loop*)malloc(sizeof(jn-loop)),

op->spot[]=op1->epot[],

op->epot[]=op2->spot[],

op->cpot[]=lp->epot[],

否则 lp=lp->next;

3  结论

(1)本文用SQL Server数据库在windows操作系统下创建了刀具库,并定义了加工轨迹的排序方法,在此基础上对内、外轮廓加工轨迹的生成算法进行了详细说明。

相关热词搜索: 浅谈 算法 数控 轨迹 编程