圆弧插补C语言程序
圆弧插补指令G02(精)

圆弧插补指令G02/G03指令格式:G02R__X (U )__ Z (W )__ F__ ;G03 I__ K__指令意义:刀具沿X 、Z 两轴同时从起点位置(当前程序段运行前的位置)以R 指定的值为半径或以I 、K 值确定的圆心顺时针(G02)/逆时针(G03)圆弧插补至X(U )、Z (W )指定的终点位置。
指令地址:G02:顺时针圆弧插补,见图3-15A ; G03:逆时针圆弧插补,见图3-15B ;X :终点位置在X 轴方向的绝对坐标值,其取值范围是:-9999.999mm ~+9999.999mm;Z :终点位置在Z 轴方向的绝对坐标值,其取值范围是:-9999.999mm ~+9999.999mm;U :终点位置相对起点位置在X 轴方向的坐标值,其取值范围是:-9999.999mm ~+9999.999mm;W :终点位置相对起点位置在Z 轴方向的坐标值,其取值范围是:-9999.999mm ~+9999.999mm;I :圆心相对圆弧起点在X 轴上的坐标值,其取值范围是:-9999.999mm ~+9999.999mm;K :圆心相对圆弧起点在Z 轴上的坐标值,其取值范围是:-9999.999mm ~+9999.999mm;R :圆弧半径;F :沿圆周运动的切线速度,其取值范围是:1~15000mm/min,其速度合成图见本手册3.6节进给功能F 代码。
图3-15A G02轨迹图图3-15B G03轨迹图指令说明:● 顺时针或逆时针是从垂直于圆弧所在平面的坐标轴的正方向看到的回转方向,它是与采用前刀座坐标系还是后刀座坐标系有关的,如图3-16;图3-16 圆弧方向的确定● 圆弧中心用地址I 、K 指定时,其分别对应于X ,Z 轴。
I 、K 表示从圆弧起点到圆心的矢量分量,是增量值:I =圆心坐标X -圆弧起始点的X 坐标; K =圆心坐标Z -圆弧起始点的Z 坐标;OKI图3-17 圆弧I 、K 值I 、K 根据方向带有符号,I 、K 方向与X 、Z 轴方向相同,则取正值;否则,取负值。
圆弧插补指令编程

•%
小结
所有不同型号的数控车床、铣床都必须用到G00、G01、G02、 G03指令,这四个指令在所有数控系统中都通用。在数控车、铣床 自动编程中,任何平面、曲面加工的路径最后都是由直线、圆弧插 补组成。所以说,这四个指令是数控编程的最基本组成单元。
① 用绝对值编程时,圆弧终点坐标为圆弧终点在工件坐标系中的坐标值,用X、Z 表 示。当用增量值编程时,圆弧终点坐标为圆弧终点相对于圆弧起点的增量值,用U、W表示。
② 圆心坐标(I, K)为圆弧起点到圆弧中心点所作矢量分别在X、Z坐标轴方向上分矢 量(矢量方向指向圆心)。本系统I、K为增量值,并带有“±”号,当矢量的方向与坐标轴 的方向不一致时取“”号。
安全操作和注意事项
(1)选刀时,刀尖角一定要控制在40°以下,如果刀尖角过大,凹圆 弧将过切。
(2)装刀时,刀尖同工件中心高对齐,对刀前,先将工件端面车平。 (3)为保证精加工尺寸准确性,可分半精加工、精加工。 (4)由于暂不计刀尖圆弧半径,因此实际圆弧存有过切或欠切现象。
工件的参考程序
• O0304 (O0304); • G40G97G99M03S500T0101F
用G02、G03指令加工圆弧面时,要注意顺、逆方向及圆弧半径 和圆心坐标编程的不同之处。
通过实训项目的学习,了解数控车床对刀与工件坐标系之间的 关系;通过半精加工、精加工掌握如何控制工件尺寸。
数控机床操作入门
模块三 单一指令加工应用
G02 G03圆弧插补指令编程

圆弧终点坐标
确定圆心位置 进给速度
绝对值 X、Z 增量值 U、W 混合编程 X、W
α≤180° 用+R 360°>α>180° 用-R
车床刀架前后置,圆弧顺逆不相同 刀架后置为标准,前置顺逆方向反
教学重点
圆弧顺、逆的判断和圆心位置R正负的确定。
教学难点
圆弧顺逆的判断。
主目录
能力训练题:
YHCNC实 习 卡 片
N78 G01X21
(切断工件 )
N80 G00X100
(X轴方向退刀)
N82 Z120 M09 (回换刀点,切削液关 )
N84 M30
(程序结束,返回第一条程序段 )
四、典型零件加工演示
(用YHCNC仿真软件)
课堂小结
G02(G03)X(U)——Z(W)—— R—— F——
圆弧顺、逆
刀架后置 刀架前置
N62 T0404
(换切断刀)
N64 G00X82S400M03(点定位到φ82,正转,400r/min )
N66 Z-44
(快速点定位到离端面44处)
N68 G01X75F200 (切槽 )
N70 G00X82
(退刀到φ82 )
N72 W2
(增量移动2mm )
N74 G01X80F200 (进刀到φ80 ) N76 G?03X76W-2R2 (车R2圆弧 )
模块 学习单元
FANUC-0i数控车
G02、G03圆弧插补 指令编程
考核项目 考 核 标 准 配 分 得 分 总 分
编程考核 任错一处扣5分 70
设 YHCNC 学时
软件操作考核 任错一处扣10分 30
备 仿真软件 件数 1 记 事
数字积分法插补C语言程序

#include<stdio.h>#include<math.h>#include<stdlib.h>/********************************************************************/ /* 函数名: InsertPoint *//* 功能:控制机床各轴进给并将进给结果写入文件中 *//* 参数:double x, double y 插补点单位:毫米 *//* 说明:与机床硬件关联,每产生一个点调用一次 *//********************************************************************/ void InsertPoint(double xCur,double yCur){extern FILE *fp;char ch=10;printf("xCur=%f,yCur=%f\n",xCur,yCur);fprintf(fp,"%f,%f",xCur,yCur);fputc(ch,fp);}/********************************************************************/ /* 函数名: Judge_Quadrant *//* 功能:判断参数坐标的所在象限并返回相应象限值 *//* 参数:double x mm *//* double y mm *//********************************************************************/ unsigned short Judge_Quadrant(double x, double y){unsigned short nDir;if (x>=0){ //象限判断if (y>=0){nDir=1;return 1;}else{nDir=4;return 4;}}else{if (y>=0){nDir=2;return 2;}else{nDir=3;return 3;}}}/********************************************************************/ /* 函数名: DDA_Line */ /* 功能:数字积分法直线插补 *//* 参数:double XEnd, double YEnd 插补终点 mm *//* int step 步长 mm *//* unsigned short n 寄存器位数 *//********************************************************************/ void DDA_Line(unsigned short n, int step, double XEnd, double YEnd){long XRes,YRes; //寄存器溢出后余数long xEnd,yEnd; //插补终点值long XCur=0,YCur=0; //当前位置int IPCount=0;//累加值int nQuadrant;//象限int Q; //累加器容量int bInterpXEnable,bInterpYEnable;XRes=YRes=0;bInterpXEnable=bInterpYEnable=0;xEnd=labs(XEnd);yEnd=labs(YEnd);Q=(fabs(YEnd)+fabs(XEnd))/step;nQuadrant=Judge_Quadrant(XEnd,YEnd);//计算插补象限switch(nQuadrant){case 1:while (IPCount<Q){XRes+=xEnd/step;YRes+=yEnd/step;if (XRes>=Q){XRes=XRes%Q;XCur+=step;bInterpXEnable=1;}if (YRes>=Q){YRes=YRes%Q;YCur+=step;bInterpYEnable=1;}if (bInterpXEnable==1||bInterpYEnable==1) {InsertPoint(XCur,YCur);bInterpXEnable=bInterpYEnable=0;}IPCount++;}break;case 2:while (IPCount<Q){XRes+=xEnd/step;YRes+=yEnd/step;if (XRes>=Q){XRes=XRes%Q;XCur-=step;bInterpXEnable=1;}if (YRes>=Q){YRes=YRes%Q;YCur+=step;bInterpYEnable=1;}if (bInterpXEnable==1||bInterpYEnable==1) { InsertPoint(XCur,YCur); bInterpXEnable=bInterpYEnable=0;}IPCount++;}break;case 3:while (IPCount<Q){XRes+=xEnd/step;YRes+=yEnd/step;if (XRes>=Q){XRes=XRes%Q;XCur-=step;bInterpXEnable=1;}if (YRes>=Q){YRes=YRes%Q;YCur-=step;bInterpYEnable=1;}if (bInterpXEnable==1||bInterpYEnable==1) {InsertPoint(XCur,YCur); bInterpXEnable=bInterpYEnable=0;}IPCount++;}break;case 4:while (IPCount<Q){XRes+=xEnd/step;YRes+=yEnd/step;if (XRes>=Q){XRes=XRes%Q;XCur+=step;bInterpXEnable=1;}if (YRes>=Q){YRes=YRes%Q;YCur-=step;bInterpYEnable=1;}if (bInterpXEnable==1||bInterpYEnable==1) {InsertPoint(XCur,YCur); bInterpXEnable=bInterpYEnable=0;}IPCount++;}break;}}/********************************************************************//* 函数名: DDA_Line *//* 功能:数字积分法圆弧插补 *//* 参数:double XEnd, double YEnd 插补终点 mm *//* int step 步长 mm *//* unsigned short n 寄存器位数 *//********************************************************************/void DDA_Circle(unsigned short n, int step, double XStart, double YStart, double XEnd, double Y End, double radius, int bIsCW){double xCur=XStart,yCur=YStart;long xRes=0,yRes=0;int ndir,Q;int judge=1;int full_circle=0;int xEnable,yEnable;xEnable=yEnable=0;Q=radius;//溢出基值,也可取为pow(2,n)InsertPoint(xCur,yCur);if(XStart==XEnd&YStart==YEnd)full_circle=1;//判断是否要画整圆while(judge==1||full_circle==1)//检测终点{xRes+=fabs(xCur);yRes+=fabs(yCur);if(xRes>=Q&fabs(yCur)<=radius){xRes=xRes%Q;yEnable=1;}if(yRes>=Q&fabs(xCur)<=radius){yRes=yRes%Q;xEnable=1;}if(bIsCW==0)//逆圆插补{ndir=Judge_Quadrant(xCur,yCur);if(yEnable==1)//xRes溢出,y轴进给{switch(ndir){case 1:if(fabs(yCur)<radius) yCur+=step;break;//防止y轴超出半径范围case 2:yCur-=step;break;case 3:if(fabs(yCur)<radius) yCur-=step;break;//防止y轴超出半径范围case 4:yCur+=step;break;}}if(xEnable==1)//yRes溢出,x轴进给{switch(ndir){ case 1:xCur-=step;break;case 2:if(fabs(xCur)<radius) xCur-=step;break;//防止x轴超出半径范围case 3:xCur+=step;break;case 4:if(fabs(xCur)<radius) xCur+=step;break;//防止x轴超出半径范围}}}else//顺圆插补{ndir=Judge_Quadrant(xCur,yCur);if(yEnable==1)//xRes溢出,y轴进给{switch(ndir){case 1:yCur-=step;break;case 2:if(fabs(yCur)<radius) yCur+=step;break;//防止y轴超出半径范围case 3:yCur+=step;break;case 4:if(fabs(yCur)<radius) yCur-=step;break;//防止y轴超出半径范围}}if(xEnable==1)//yRes溢出,x轴进给{switch(ndir){case 1:if(fabs(xCur)<radius) xCur+=step;break;//防止x轴超出半径范围case 2:xCur+=step;break;case 3:if(fabs(xCur)<radius) xCur-=step;break;//防止x轴超出半径范围case 4:xCur-=step;break;}}}judge=(fabs(xCur-XEnd)>=step||fabs(yCur-YEnd)>=step);if(xEnable||yEnable)//判断并进行进给运动{InsertPoint(xCur,yCur);xEnable=yEnable=0;full_circle=0;}}}FILE *fp;int main(){char fn[10];printf("please input filename:\n");scanf("%s",fn);if((fp=fopen(fn,"w"))==NULL) { printf("can't open file\n"); exit(0);}DDA_Circle(4,1,50,0,40,-30,50,1);//输入要插补的圆弧的参数// DDA_Line(4,1,50,-20);//输入要插补的圆弧的参数fclose(fp);return 0;}。
G2G3 圆弧插补指令

3、G2/G3 :圆弧插补指令刀具从现处位置沿圆弧轨迹移动至圆弧终点。
移动的速度由进给速度F指令指定。
编程格式:XY平面圆弧: G2或G3 X — Y — R — F—X — Y—:为圆弧的终点位置坐标。
R—:圆弧的半径。
F—:为刀具移动的速度,即切削进给速度。
G2 —:顺时针圆弧插补。
G3 —:逆时针圆弧插补。
G2/G3 :圆弧插补指令应用将执行动作:刀具从现处位置C点沿CD之间的圆弧轨迹移移动至圆弧终点D。
CD段圆弧是一段顺时针圆弧轨迹,所以用G2指令。
加工程序:绝对坐标编程:N80 G90 G2 X63.0 Y20.0 R23.0相对坐标编程:N80 G91 G2 X23.0 Y-23.0 R23.0 F100平面的选择:数控系统一般可以加工XY、XZ、YZ平面的圆弧。
G17:该指令表示选择XY平面,在此平面中进行圆弧插补和刀具补偿。
此代码为系统初始代码。
电源一接通G17 就作为平面选择的起始代码而自动生效。
G18:该指令表示选择XZ平面,在此平面中进行圆弧插补和刀具补偿。
G19:该指令表示选择YZ平面,在此平面中进行圆弧插补和刀具补偿。
G17、G18、G19平面顺逆圆弧判断示意图:G17、G18、G19平面顺逆圆弧判断用IJK代替R编程I:表示圆心点相对起点在X轴上的增量坐标。
J:表示圆心点相对起点在Y轴上的增量坐标。
K:表示圆心点相对起点在Z轴上的增量坐标。
用IJK代替R编程应用加工程序:。
N50 G1 G90 X15 Y0N60 G2 I-15 。
直线圆弧插补指令编程

快速定位
1、G00指令格式:G00 X(U)_ Z(W)_
式中:X、Z:绝对编程时,目标点在工件坐标系中的坐标;
U、W:增量编程时刀具移动的距离。
2、G00指令刀具相对于工件以各轴预先设定的速度,从当前位置快速移动到程序段指令的 定位目标点。
3、G00指令中的快移速度由机床参数“快移进给速度”对各轴分别设定,所以快速移动速 度不能在地址F中规定,快移速度可由面板上的快速修调按钮修正。
G01倒角、倒圆功能
G01倒角控制功能可以在两相邻轨迹的程序段之间插入直线倒角或圆弧倒角。 指令格式:G01 X(U) Z(W) C_ (直线倒角)
G01 X(U) Z(W) R_ (圆弧倒角) 式中:X、Z值为在绝对指令时,是两相邻直线的交点,即假想拐角交点(G点)的坐标值;
U、W值为在增量指令时,是假想拐角交点相对于起始直线轨迹的始点E的移动距离。 C值是假想拐角交点(G点)相对于倒角始点(F点)的距离;R值是倒圆弧的半径值, 如图5-7所示
所以 ,∠CHJ = 90°∠DHI∠DHG = 90°24.62°24.51° = 40.87°
HJ=CH×cos∠CHJ=12×cos40.87°=9.075
CJ=CH×sin∠CHJ= 12×sin40.87°=7.852
所以X(C)=2HJ=18.15 ,Z(C)=33CJ=25.148 , 圆弧切点C坐标为(X18.15,Z25.148 )
② 根据图5-15得各点绝对坐标值为:
M(100, 100)、A(0, 47)、B(0, 45)、C(18.15, 25.148);
D(22, 9)、E(22, 0)、F(26, 0)。
工件参考程序与加工操作过程
(1)工件的参考程序,如表5-5所示。 (2)输入程序。 (3)数控编程模拟软件对加工刀具轨迹仿真,或数控系统图形仿真
插补程序
#include "math.h"#include "stdio.h"main(){int type;while(1){printf("请输入线型:\n");printf("1表示直线\n2表示圆弧\n3表示退出\n");scanf("%d",&type);if(type==1)Line();elseif(type==2)Arc();elsebreak;}}void Line(){int m=0,x,y,x0,y0,xe,ye,JX,JY,JS,F1=0,F2;printf("请输入直线的起点坐标和终点坐标(数据之间用逗号分隔):\n");scanf("%d,%d,%d,%d",&x0,&y0,&xe,&ye);x=x0;y=y0;JX=xe-x0;JS=abs(JX)+abs(JY);printf("偏差判别坐标进给终点判断偏差运算\n");while(JS!=0){if(F1>=0){if(JX>0)x++;elsex--;F2=F1-abs(JY);JS-=1;if(F1>0)if(JX>0)printf(" F%d>0 +X %d F%d=F%d-|Ye-Y0|=%d\n",m,JS,m+1,m,F2);elseprintf(" F%d>0 -X %d F%d=F%d-|Ye-Y0|=%d\n",m,JS,m+1,m,F2);elseif(JX<0)printf(" F%d=0 +X %d F%d=F%d-|Ye-Y0|=%d\n",m,JS,m+1,m,F2);elseprintf(" F%d=0 -X %d F%d=F%d-|Ye-Y0|=%d\n",m,JS,m+1,m,F2);F1=F2;}else{if(JY>0)y++;elsey--;F2=F1+abs(JX);if(JY<0)printf(" F%d<0 +Y %d F%d=F%d+|Xe-X0|=%d\n",m,JS,m+1,m,F2);elseprintf(" F%d<0 -Y %d F%d=F%d+|Xe-X0|=%d\n",m,JS,m+1,m,F2);F1=F2;m++;}}}void Arc(){int m=0,x,y,x0,y0,xe,ye,dox,doy,JX,JY,Ie,Je,F1=0,F2,flag;int R1,R2,R3,R4,SR1,SR2,SR3,SR4,NR1,NR2,NR3,NR4;printf("请输入圆弧类型:\n1表示顺园\n2表示逆圆\n");scanf("%d",&flag);printf("请输入圆弧的起点,终点坐标以及圆心相对起点的坐标(数据之间用逗号分隔):\n");scanf("%d,%d,%d,%d,%d,%d",&x0,&y0,&xe,&ye,&dox,&doy);x=x0;y=y0;Ie=xe-(x0+dox);Je=ye-(y0+doy);printf("偏差判别坐标进给偏差运算终点判别\n");while((Ie-JX)!=0||(Je-JY)!=0)/*for(;i<=1;)*/{R1=(JX>0)&&(JY>=0);R3=(JX<0)&&(JY<=0);R4=(JX>=0)&&(JY<0);SR1=(flag==1)&&R1;SR2=(flag==1)&&R2;SR3=(flag==1)&&R3;SR4=(flag==1)&&R4;NR1=(flag==2)&&R1;NR2=(flag==2)&&R2;NR3=(flag==2)&&R3;NR4=(flag==2)&&R4;if(F1>=0)if(SR1||NR2||SR3||NR4)if(SR3||NR4){y++;F2=F1+2*JY+1;JY+=1;if(F1>0){printf(" F%d>0 +Y F%d=F%d+2*J%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);}else{printf(" F%d=0 +Y F%d=F%d+2*J%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);}F1=F2;m++;}else{y--;F2=F1-2*JY+1;JY-=1;if(F1>0){printf(" F%d>0 -Y F%d=F%d-2*J%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);}else{printf(" F%d=0 -Y F%d=F%d-2*J%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);}F1=F2;}elseif(SR2||NR3){x++;F2=F1+2*JX+1;JX+=1;if(F1>0){printf(" F%d>0 +X F%d=F%d+2*I%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);}else{printf(" F%d=0 +X F%d=F%d+2*I%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);}F1=F2;m++;}else{x--;F2=F1-2*JX+1;JX-=1;if(F1>0){printf(" F%d>0 -X F%d=F%d-2*I%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);}else{printf(" F%d=0 -X F%d=F%d-2*I%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);}F1=F2;m++;}elseif(SR2||NR1||SR4||NR3)if(NR1||SR2){y++;F2=F1+2*JY+1;JY+=1;printf(" F%d<0 +Y F%d=F%d+2*J%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);F1=F2;else{y--;F2=F1-2*JY+1;JY-=1;printf(" F%d<0 -Y F%d=F%d-2*J%d+1=%dI%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);F1=F2;m++;}elseif(SR1||NR4){F2=F1+2*JX+1;JX+=1;printf(" F%d<0 +X F%d=F%d+2*I%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);F1=F2;m++;}else{x--;F2=F1-2*JX+1;JX-=1;printf(" F%d<0 -X F%d=F%d-2*I%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);F1=F2;}}。
圆弧插补指令
. ❖圆弧插补指令
1.G02顺时针圆弧插补:沿着刀具进给路径,圆弧段为顺时针。
2.G03逆时针圆弧插补:沿着刀具进给路径,圆弧段位逆时针。
❖圆弧半径编程
1.格式:G02/G03X_Y_Z_R_F;
2.移到圆弧初始点;
3.G02/G03+圆弧终点坐标+R圆弧半径。
(圆弧<或=半圆用+R;大于半圆
(180度)小于整圆(360度)用-R。
圆弧半径R编程不能用于整圆加工。
)
❖用I、J、K编程(整圆加工)
1.格式:G02\G03X_Y_Z_I_J_K_F_;
2.I、J、K分别表示X\Y\Z方向相对于圆心之间的距离,X方向用I表示,
Y方向用J表示,z方向用K表示(G17平面K为0)。
正负判断方法:刀具停留在轴的负方向,往正方向进给,也就是与坐标轴同向,那么就取正值,反之为负。
❖技巧
1.在加工整圆时,一般把刀具定位到中心点,下刀后移动到x轴或Y轴的
轴线上,这样就有一根轴是0,便于编程。
1 / 1'.。
项目四 圆弧轴的编程与加工
说明:用华中数控系统编写该指令与 GSK980TD一致。
任务三 编程中的简单计算
三角函数公式:
B
a
C
• • • •
正弦:sin 余弦:cos 正切:tan 余切:cot
α α α α
=对边/斜边 =邻边/斜边 =对边/邻边 =邻边/对边
A
特殊角三角函数值 正弦和余弦:Sin 、 Cos
Sin0 = 0 Sin30 = 0.5 Sin45 = √2/2 Sin60 = √3/2 Sin90 = 1
分别为800r/mi和精车1500r/min。 (3)进给速度的选择 确定粗车时每转进给量为0.2mm/r, 精车时每转进给量为0.08mm/r,再根据公式Vf=nf计算出粗、 精车进给速度分别为160mm/min和120mm/min。
二、确定工步内容
三、程序编写
程序
说明
O0001;
N0010 T0101 M03 S800 F160; N0020 G41 G00 X36.0 Z2.0; N0030 X18; N0040 G01 Z0;
2、作辅助线AC
3、通过分析在直角三角形COA中, ∠COA=10°OA=7,COS10°=O.98 4 Sin10°=0.174 根据三角函数可计算出OC和AC的长 度
任务四 带圆弧轴类零件的编程与加工练习
一、制定加工工艺
1.零件的工艺分析:
本零件主要由圆柱和圆弧构成,零件形状简单,表面粗糙度要
每把刀假想刀尖方位号与刀尖半径补偿值必须在应用刀补
前预先设置。刀尖半径补偿值在偏置页面下设置,R为刀 尖半径补偿值,T为假想刀尖方位号。
(七)G41、G42、G40运用的注意点
1、刀尖圆弧半径补偿号和刀具偏置号对应
圆弧插补指令示例程序
DRVI指令的多次应用
示例程序1
1、使用DRVI指令以频率1运行 2、在收到传感器信号1时断开DRVI指 令前的 触点, 脉冲将 减速停 止 3、清除指令前触点断开停止错误标志 位,执 行用户 自定义 任务 4、改变下一次DRVI指令要运行的参 数(频 率2、脉 冲个数 等) 5、闭合DRVI指令前的触点,进行第 二次运 行
示例程序3
DRVI指令和DRVSTOP、DRVREAD 指令联 合应用
示例程序4
1、使用DRVI指令以较低频率运行 2、在收到传感器信号时运行DRVST OP指令 ,停止 脉冲输 出 3、读取此过程发出的脉冲总数(即所 经历的 路程) 4、清除DRVSTOP强行停止错误标志 位,断 开DRVI指令 前的触 点 5、将DRVREAD指令读取的脉冲数写 入寄存 器,方 向反转 (将脉 冲个数 前加负 号即可 ) 6、闭合DRVI指令前的触点,以更高 的速度 按原路 返回至 起始点
示例程序10
圆弧插补指令
圆弧从起点(500,500)以外围速度1000Hz顺 时针运 动到终 点(1000,1000)。 在编写 指令时 ,要虚 拟圆心 坐标为 (0,0),这 时起点 的相对 坐标位 置为(- 250,- 250) ,终点 的相对 圆心坐 标位置 为(250,250),设 定加减 速时间 为500mS。
增强型运动控制指令概览
示例程序目录
示例程序1--DRVI指令的多次应用 示例程序2--DRVI指令和DRVSTOP指令联合应用 示例程序3--DRVA指令和DRVPAUSE、DRVRSME指令联合应用 示例程序4--DRVI指令和DRVSTOP、DRVREAD指令联合应用 示例程序5--DVIT指令示例 示例程序6--CAMA示例 示例程序7--CAMI示例 示例程序8--脉冲同步指令 示例程序9--直线插补指令 示例程序10--圆弧出脉冲根据比例系数同步输入脉冲 。 输出脉冲数 = 输入脉冲数 * 同步比例系数。 输出频率 = 输入频率 * 同步比例系数。