数控编程 非圆曲线数学处理的基本过程.docx
《数控编程 非圆曲线数学处理的基本过程.docx》由会员分享,可在线阅读,更多相关《数控编程 非圆曲线数学处理的基本过程.docx(150页珍藏版)》请在冰豆网上搜索。
数控编程非圆曲线数学处理的基本过程
数控编程非圆曲线数学处理的基本过程
数控系统一般只能作直线插补和圆弧插补的切削运动。
如果工件轮廓是非圆曲线,数控系统就无法直接实现插补,而需要通过一定的数学处理。
数学处理的方法是,用直线段或圆弧段去逼近非圆曲线,逼近线段与被加工曲线交点称为节点。
字串4
例如,对图1.42所示的曲线用直线逼近时,其交点A、B、C、D、E、F等即为节点。
字串4
图1.42 零件轮廓的节点
在编程时,首先要计算出节点的坐标,节点的计算一般都比较复杂,靠手工计算已很难胜任,必须借助计算机辅助处理。
求得各节点后,就可按相邻两节点间的直线来编写加工程序。
字串7
这种通过求得节点,再编写程序的方法,使得节点数目决定了程序段的数目。
如图1.42中有6个节点,即用五段直线逼近了曲线,因而就有五个直线插补程序段。
节点数目越多,由直线逼近曲线产生的误差δ越小,程序的长度则越长。
可见,节点数目的多少,决定了加工的精度和程序的长度。
因此,正确确定节点数目是个关键问题,也请参考本教程CAD/CAM部分
数控加工误差的组成
字串1
字串3
字串2
字串4
字串4
字串2
图1.43 逼近误差
字串7
数控加工误差△数加是由编程误差△编、机床误差△机、定位误差△定、对刀误差△刀等误差综合形成。
即:
△数加=f(△编+△机+△定+△刀)
字串4
其中:
(1)编程误差△编由逼近误差δ、圆整误差组成。
逼近误差δ是在用直线段或圆弧段去逼近非圆曲线的过程中产生,如图1.43所示。
圆整误差是在数据处理时,将坐标值四舍五入圆整成整数脉冲当量值而产生的误差。
脉冲当量是指每个单位脉冲对应坐标轴的位移量。
普通精度级的数控机床,一般脉冲当量值为0.01mm;较精密数控机床的脉冲当量值为0.005mm或0.001mm等。
字串9
(2)机床误差△机由数控系统误差、进给系统误差等原因产生。
字串4
(3)定位误差△定是当工件在夹具上定位、夹具在机床上定位时产生的。
(4)对刀误差△刀是在确定刀具与工件的相对位置时产生。
数控程序编制中的数值计算
根据零件图样,按照已确定的加工路线和允许的编程误差,计算数控系统所需输入的数据,称为数控加工的数值计算。
手工编程时,在完成工艺分析和确定加工路线以后,数值计算就成为程序编制中一个关键性的环节。
除了点位加工这种简单的情况外,—般需经繁琐、复杂的数值计算。
为了提高工效,降低出错率,有效的途径是计算机辅助完成坐标数据的计算,或直接采用自动编程。
字串3
一个零件的轮廓往往是由许多不同的几何元素所组成,如直线、圆弧、二次曲线以及阿基米德螺线等。
各几何元素间的联结点称为基点。
如两直线间的交点,直线与圆弧或圆弧与圆弧间的交点或切点,圆弧与二次曲线的交点或切点等。
显然,相邻基点间只能是一个几何元素。
对于由直线与直线或直线与圆弧构成的平面轮廓零件,由于目前一般机床数控系统都具有直线、圆弧插补功能,故数值计算比较简单。
此时,主要应计算出基点坐标与圆弧的圆心点坐标。
将组成零件轮廓的曲线,按数控系统插补功能的要求,在满足允许的编程误差的条件下进行分割,即用若干直线段或圆弧段来逼近给定的曲线,逼近线段的交点或切点称为节点。
字串3
对刀时是通过一定的测量手段使刀位点与对刀点重合,数控系统从对刀点开始控制刀位点运动,并由刀具的切削刃部分加工出要求的零件轮廓。
用直线逼近零件轮廓曲线的节点计算非圆曲线节点坐标的计算
非圆曲线节点坐标的计算,用直线逼近零件轮廓曲线的节点计算
字串3
常用的计算方法有:
等间距法、等弦长法、等误差法和比较迭代法等。
等间距法就是将某一坐标轴划分成相等的间距。
如图2-12(a)所示,沿X轴方向取∆X为等间距长,根据已知曲线的方程y=f(x),可由xi求得yi,xi+1=xi+x,yi+1=f(xi+∆x)。
如此求得的一系列点就是节点。
将相邻节点联成直线,用这些直线段组成的折线代替原来的轮廓曲线。
坐标增量∆X取得愈小则δ插愈小,这使得节点增多,程序段也增多,编程费用高,但等间距法计算较简单。
字串5
a) b)字串8
图2-12 等间距法和等弦长法
字串7
a)等间距法 b)等弦长法
字串5
等弦长法就是使所有逼近直线段长度相等,如图2-12(b)所示。
由于零件轮廓曲线y=f(x)的曲率各处不等,因此首先应求出该曲线的最小曲率半径Rmin,由Rmin及δ允确定允许的步长l,然后从曲线起点a开始,按等步长l依次截取曲线,得b、c、d、…点,则ab=bc=…=l即为所求各直线段。
字串1
总的看来,此种方法比等间距法的程序段数少一些。
但当曲线曲率半径变化较大时,所求节点数将增多,所以,此法适用于曲率变化不大的情况。
等误差法是使逼近线段的误差相等,且等于δ允,所以此法较上两种方法合理,特别适合曲率变化较大的复杂曲线轮廓。
如图2-13所示。
下面介绍用等误差法计算节点坐标的方法。
设零件轮廓曲线的数学方程为Y=f(X)。
图2-13 等误差法
(1)以起点a(Xa,Ya)为圆心,以为半径作圆。
其圆方程为
(2-1)
字串4
式中Xa、Ya为已知的a点坐标值。
字串1
(2)作δ允圆与曲线Y=f(X)的公切线MN,则可求公切线MN的斜率K
字串7
为求YN,YM,XN,XM,需解下面的方程组:
字串1
字串8
字串7
字串1
字串9
式中的允差圆即δ允圆,Y=F(X)表示δ允圆的方程,见(2-1)式。
(3)过a点作斜率为K的直线,则得到直线插补段ab,其方程式为
字串7
Y-Ya=K(X-Xa)
字串3
(4)求直线插补节点b的坐标。
字串6
联立方程组:
字串1
字串3
求的交点b(Xb,Yb)的坐标值,便是第一个直线插补节点。
字串5
(5)按以上步骤顺次求得c,d、… 各节点坐标。
字串6
用等误差法,虽然计算较复杂,但可在保证δ允的条件下,得到最少的程序段数目。
此种方法的不足之处是直线插补段的联结处不光滑,使用圆弧插补段逼近,可以避免这一缺点。
用圆弧逼近零件轮廓曲线的节点计算非圆曲线节点坐标的计算
用圆弧逼近零件轮廓曲线的节点计算
用圆弧逼近非圆曲线,目前常用的算法有曲率圆法、三点圆法和相切圆法等。
(1)曲率圆法圆弧逼近的节点计算
字串1
1)基本原理 曲率圆法是用彼此相交的圆弧逼近非圆曲线。
字串4
已知轮廓曲线Y=f(X)如图2-14所示,从曲线的起点开始,作与曲线内切的曲率圆,求出曲率圆的中心。
以曲率圆中心为圆心,以曲率圆半径加(减)δ允为半径,所作的圆 (偏差圆)与曲线Y=f(X)的交点为下一个节点,并重新计算曲率圆中心,使曲率圆通过相邻的两节点。
字串3
字串6
图2-14 曲率圆法圆弧段逼近
字串8
重复以上计算即可求出所有节点坐标及圆弧的圆心坐标。
字串2
2)计算步骤
字串3
①以曲线起点(xn,yn)开始作曲率圆:
字串6
字串6
圆心 字串5
字串2
半径
字串3
字串8
②偏差圆方程与曲线方程联立求解:
字串3
字串5
字串5
字串4
得交点(xn+1,yn+1)
字串2
③求过(xn,yn)和(xn+1,yn+1)两点,半径为Rn的圆的圆心:
字串9
字串1
得交点(ζm,ηm),该圆即为逼近圆。
字串6
(2).三点圆法圆弧逼近的节点计算
字串2
字串9
图2-15 三点圆弧段逼近
字串3
三点圆法是在等误差直线段逼近求出各节点的基础上,通过连续三点作圆弧,并求出圆心点的坐标或圆的半径。
如图2-15所示,首先从曲线起点开始,通过P1、P2、P3三点作圆。
圆方程的一般表达形式为
字串8
x2+y2+Dx+Ey+F=0
字串7
其圆心坐标
字串4
字串7
半径
字串2
字串8
字串7
通过已知点P1(x1,y1)、P2(x2,y2),P3(x3,y3)的圆,其
字串2
字串3
字串8
为了减少圆弧段的数目,应使圆弧段逼近误差δ=δ允,为此应作进一步的计算。
设已求出连续三个节点P1、P2、P3处曲线的曲率半径分别为RP1、RP2、RP3,通过P1、P2、P3三点的圆的半径为R,取
字串4
字串4
,按算出δ值,
字串9
字串2
按δ值进行一次等误差直线段逼近,重新求得P1、P2、P3三点,用此三点作一圆弧,该圆弧即为满足δ=δ允条件的圆弧。
字串8
(3).相切圆法圆弧逼近的节点计算
字串1
1)基本原理 如图2-16所示粗线表示工件廓形曲线,在曲线的一个计算单元上任选四个点A、B、C、D,其中A点为给定的起点。
AD段(一个计算单元)曲线用两相切圆弧M和N逼近。
具体来说,点A和B的法线交于M,点C和D的法线交于N,以点M和N为圆心,以MA和ND为半径作两圆弧,则M和N圆弧相切于MN的延长线上G点。
字串1
曲线与M、N圆的最大误差分别发生在B、C两点,应满足的条件是:
字串8
字串7
图2-16 用相切圆弧逼近轮廓线
两圆相切G点 (2-2)
字串9
满足δ允要求 (2-3)
字串4
2)计算方法:
字串2
① 求圆心坐标的公式。
点A和B处曲线的法线方程式为
字串2
(x-xA)-kA(y-yA)=0
字串8
(x-xB)-kB(y-yB)=0字串1
式中kA和kB为曲线在点A和B处的斜率,k=dy/dx。
字串5
解上两式得两法线交点M(圆心)的坐标为:
字串5
字串8
(2-4)
字串9
字串7
字串9
同理可通过C、D两点的法线方程求出N(圆心)点坐标为:
字串4
(2-5)
字串6
字串9
字串5
② 求B、C、D三点坐标。
根据(2-2)和(2-3)式,得
字串1
(2-6)字串5
字串2
字串4
(2-7)
字串7
字串7
式中的A、B、C、D的y坐标值分别由以下公式求出
字串9
yA=f(xA),yB=f(xB)
字串3
yC=f(xA),yD=f(xD)
字串8
再代入(2-6)和(2-7)式,用迭代法可求出B、C、D坐标值。
字串6
③求圆心M、N坐标值和RM、RN值。
将B、C、D坐标值代入(2-4)和(2-5)式即求出圆心M和N的坐标值,并由此求出RM和RN值。
字串2
应该指出的是,在曲线有拐点和凸点时,应将拐点和凸点作为一个计算单元(每一计算单元为四个点)的分割点
FUNAC用户宏程序简介
用户宏程序
字串8
能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。
字串6
l所存入的这一系列指令——用户宏程序
l调用宏程序的指令————宏指令
字串8
l特点:
使用变量字串6
一.变量的表示和使用字串8
(一)变量表示
#I(I=1,2,3,…)或#[<式子>]字串4
例:
#5,#109,#501,#[#1+#2-12]
字串1
(二)变量的使用
1.地址字后面指定变量号或公式字串1
格式:
<地址字>#I
字串1
<地址字>-#I
字串5
<地址字>[<式子>]字串1
例:
F#103,设#103=15 则为F15
字串3
Z-#110,设#110=250 则为Z-250
字串5
X[#24+#18*COS[#1]]
2.变量号可用变量代替
字串2
例:
#[#30],设#30=3 则为#3
字串2
3.变量不能使用地址O,N,I
例:
下述方法下允许
O#1;字串5
I#26.00×100.0;
字串3
N#3Z200.0;
字串9
4.变量号所对应的变量,对每个地址来说,都有具体数值X围
例:
#30=1100时,则M#30是不允许的
字串7
5.#0为空变量,没有定义变量值的变量也是空变量
字串8
6.变量值定义:
程序定义时可省略小数点,例:
#123=149字串4
MDI键盘输一.变量的种类
字串7
1.局部变量#1~#33
一个在宏程序中局部使用的变量
字串1
例:
A宏程序 B宏程序
字串1
……
#10=20X#10 不表示X20
字串9
……字串7
断电后清空,调用宏程序时代入变量值
字串5
2.公共变量#100~#149,#500~#531
字串7
各用户宏程序内公用的变量
字串5
例:
上例中#10改用#100时,B宏程序中的字串5
X#100表示X20
字串4
#100~#149 断电后清空
字串5
#500~#531保持型变量(断电后不丢失)字串7
3.系统变量
字串6
固定用途的变量,其值取决于系统的状态
字串1
例:
#2001值为1号刀补X轴补偿值
字串7
#5221值为X轴G54工件原点偏置值
入时必须输入小数点,小数点省略时单位为μm
字串6
一.运算指令
字串9
运算式的右边可以是常数、变量、函数、式子字串9
式中#j,#k也可为常量
式子右边为变量号、运算式
字串5
1.定义
字串6
#I=#j字串8
2.算术运算
#I=#j+#k
#I=#j-#k
#I=#j*#k
#I=#j/#k
字串6
3.逻辑运算
字串1
#I=#JOK#k
字串1
#I=#JXOK#k
#I=#JAND#k
4.函数字串9
#I=SIN[#j]正弦
字串3
#I=COS[#j]余弦
#I=TAN[#j]正切
字串7
#I=ATAN[#j]反正切
#I=SQRT[#j] 平方根
字串5
#I=ABS[#j] 绝对值
#I=ROUND[#j] 四舍五入化整
字串7
#I=FIX[#j] 下取整
字串1
#I=FUP[#j] 上取整字串1
#I=BIN[#j]BCD→BIN(二进制)
字串3
#I=B[#j]BIN→BCD
字串7
1.说明
字串1
1)角度单位为度字串1
例:
90度30分为90.5度
2)ATAN函数后的两个边长要用“1”隔开
字串1
例:
#1=ATAN[1]/[-1]时,#1为了35.0
字串2
3)ROUND用于语句中的地址,按各地址的最小设定单位进行四舍五入
例:
设#1=1.2345,#2=2.3456,设定单位1μm字串5
G91X-#1;X-1.235
X-#2F300;X-2.346字串4
X[#1+#2];X3.580
字串3
未返回原处,应改为字串1
X[ROUND[#1]+ROUND[#2]];
4)取整后的绝对值比原值大为上取整,反之为下取整
字串7
例:
设#1=1.2,#2=-1.2时
若#3=FUP[#1]时,则#3=2.0
若#3=FIX[#1]时,则#3=1.0
若#3=FUP[#2]时,则#3=-2.0
字串2
若#3=FIX[#2]时,则#3=-1.0
字串4
5)指令函数时,可只写开头2个字母
例:
ROUND→RO
字串5
FIX→FI字串5
6)优先级字串6
函数→乘除(*,1,AND)→加减(+,-,OR,XOR)
字串1
例:
#1=#2+#3*SIN[#4];
7)括号为中括号,最多5重,园括号用于注释语句
字串5
例:
#1=SIN[[[#2+#3]*#4+#5]*#6];(3重)
一.转移与循环指令
1.无条件的转移
格式:
GOTO1;
GOTO #10;
字串4
2.条件转移字串8
格式:
IF[<条件式>]GOTOn字串1
条件式:
字串8
#jEQ#k表示=
字串8
#jNE#k表示≠字串3
#jGT#k表示>
#jLT#k表示<
字串2
#jGE#k表示≥
#jLE#k表示≤
字串6
例:
IF[#1GT10]GOTO100;
字串5
…字串5
N100G00691X10;
字串9
例:
求1到10之和
字串6
O9500;
字串8
#1=0字串1
#2=1
字串9
N1IF[#2GT10]GOTO2
#1=#1+#2;
字串1
#2=#2+1;
字串3
GOTO1
字串6
N2M301.循环字串8
格式:
WHILE[<条件式>]DOm;(m=1,2,3)
字串8
…字串6
…
字串5
…字串8
ENDm
字串7
说明:
1.条件满足时,执行DOm到ENDm,则从DOm的程序段字串7
不满足时,执行DOm到ENDm的程序段
2.省略WHILE语句只有DOm…ENDm,则从DOm到ENDm之间形成死循环字串4
3.嵌套
字串6
4.EQNE时,空和“0”不同
字串2
其他条件下,空和“0”相同
字串9
例:
求1到10之和
O0001;
#1=0;
#2=1;
字串9
WHILE[#2LE10]DO1;
#1=#1+#2;字串6
#2=#2+#1;
END1;
字串8
M30;
使用FANUC宏程序编制单轴磨削循环及补偿功能
单轴外圆数控磨床,径向采用数控轴(X轴)控制,轴向仍用液压油缸驱动,因此无法使用两轴磨床数控系统提供的磨削循环功能。
在实践中,可以使用FANUC系统提供的用户宏程序,编制单轴的磨削循环功能。
根据机床的具体结构,又编制了砂轮手动修整、自动补偿及手动测量工件、自动补偿的控制功能。
在XX重型机床厂生产
字串1
的CA8311B轴颈车磨床上,经过一年多的生产使用,证明是实用的。
下面分别介绍软件的内容。
字串8
1 功能介绍
1.1 外圆磨削循环
字串7
由于只有径向控制轴(X轴),无法实现连续进给磨削,只能实现两端进给的轴向磨削循环。
因此在左右两端各设1个轴向行程识别开关(如图1所示)。
字串3
当砂轮移到工件的左端时,左端行程开关闭合,发出到位信号,程序中用接口输入变量#1005=1表示。
控制系统接到该信号后,发出X轴进给移动指令,砂〖LL〗轮前进一个A值;同理,当系统接到右端行程开关发出的到位信号,程序中用接口输入变量#1006=1表示,砂轮前进一个B值。
依次循环,直到到达指令的位置。
字串5
实现给定磨削量的磨削加工,可以按A、B两值相加为一个循环,将被磨除量均分。
砂轮快速移至R点,经n次(A+B)磨削之后,其剩余量为h′。
若砂轮在工件左端,且h′<A时,按h′进给,否则按A值进给。
若在工件右端,且h′<B值时,按h′进给,否则按B值进给。
软件必须保证只在工件两端进给,中间不得进给。
当磨除量变为零时,必须磨到另一端才能退砂轮。
整个磨削过程分粗磨、精磨和光磨。
在实际使用中,在R点设置一个暂停,操作者可以插入手动磨削,以利于修活使用,也可以再转为自动磨削。
磨削初值用现在位置变量#5041取值。
字串4
字串5
1.2 测量值的自动补偿字串4
在粗磨结束后,精磨开始前插入手动测量,操作者将测量结果输入到系统中,系统根据指令值与实测值之差,对磨削量进行补偿。
是否需要测量,由面板上的开关设置,此开关状态用接口输入信号#1007输入系统。
当开关接通,即信号为“1”时进行测量。
当开关断开,即信号为“0”时,则不进行测量,直接进行精磨加工。
当实测值与指令值相同时,可以不输入实测值,此时,系统不修正磨削量,仍按原磨削量进行磨削。
如需测量,在测量之前安排光磨加工,以求与完成零件磨削的状态相同。
字串7
1.3 砂轮修整量的自动补偿
字串7
根据机床采用普通金刚笔修整砂轮、手动进给、手动换向修整这样的操作,软件自动计算修整量,并修正工件坐标原点设定值。
砂轮修整之后,不需对刀,即可进行磨削加工。
字串9
在面板上设置砂轮修整开关,此开关状态用接口输入信号#1004输入系统。
当修整开关合上,即信号为“1”时,执行砂轮修整服务程序。
当开关断开,即信号为“0”时,系统执行磨削加工。
字串9
2 软件框图字串5
按主程序、子程序结构编制软件。
字串6
(1)主程序(O0001) 见图2。
(2)砂轮修整子程序(O0020) 见图3。
字串3
(3)磨削子程序(O0010) 见图4。
字串2
(4)测量子程序(O0030) 见图5。
字串1
字串5
3 菜单编程
字串7
将磨削所需数据用系统断电不清除的宏变量表示。
编程时,操作者只需把所需数据输入,不需要修改程序。
零件变化时,只需改变相关尺寸数据。
具体设置如下:
字串8
#500 粗磨开始点
字串1
#501 粗磨结束点,即精磨开始点字串1
#502 精磨结束点,即光磨开始点,亦即零件尺寸
#503 粗磨左进刀量,即第一次切深
#504 粗磨右进刀量,即第二次切深
字串9
#505 粗磨进刀进给速度
字串1
#506 精磨左进刀量
#507 精磨右进刀量
字串8
#508 精磨进刀进给速度
字串1
#509 光磨次数
字串8
#510 工件坐标原点设定值
#511 金刚笔尺寸
#514 测量点设定值(系统自动设置)
字串2
#515 测量点实测值(先由系统自动设置为设定值,再由操作者修改)〖字串1
4 程序
字串8
(1)主程序
字串2
O0001;字串6
G98;字串8
IF[#1004EQ0]G0T010;(修砂轮开关,1:
修砂轮,0:
磨工件)字串1
M98P0020; (修砂轮)字串9
N10M98P0010; (磨工件)
字串5
N20M30;
字串5
(2)磨削子程序
字串9
O0010;
G50X#510; (设置工件坐标原点)
字串8
G00X[#500+1.0]; (分段趋近工件)字串9
G01