第二章 数控机床的编程规则
2.1 数控机床的坐标系*
2.2 数控机床编程基础*
2.3 思考与练习题*
本章知识
数控机床的坐标系及其运动方向
数控机床程序编制的内容及步骤
数控机床程序组成及程序段格式
数控机床程序编制常用的程序字
数控装置所用的计算机属于专用计算机,它使用的自动控制语言与通用计算机使用的BASIC、FOTRAN等高级语言属于不同的范畴。尽管这种自动控制语言也像高级语言那样有严格的规则和格式,但它没有类似高级语言那样的语法。
数控系统的种类繁多(SIEMENS、FANUC、KND、DMG、华中等),它们使用的数控语言规则和格式也不尽相同,编制数控加工程序时,应严格按照机床编程手册中的规定进行程序的编制。
#p# 数控机床的坐标系#e#
2.1 数控机床的坐标系
1.标准坐标系及其运动方向
为了保证数控机床的正确运动,避免工作时的不一致性,我国根据ISO841国际标准制定的JB3051—82数控标准,统一规定了数控机床坐标轴的代码及其运动的正、负方向,这给数控系统和机床的设计、使用和维修带来了极大的方便。
(1)规定原则
◆右手直角坐标系
标准的坐标系为右手直角坐标系,如图2.1所示。*它规定了X、Y、Z三坐标轴的关系:用右手的拇指、食指和中指分别代表X、Y、Z三轴,3个手指互相垂直,所指方向分别为X、Y、Z轴的正方向。围绕X、Y、Z各轴的回转运动分别用A、B、C表示,其正向用右手螺旋定则确定。与+X、+Y、+Z、……,+C相反的方向用带“'”的+X'、+Y'、+Z'、……,+C'表示。
图2.1 右手直角坐标系
◆刀具运动坐标系与工件运动坐标系
数控机床的坐标系是机床运动部件进给运动的坐标系。由于进给运动可以是刀具相对工件的运动(车床),也可以是工件相对刀具的运动(铣床)。
所以统一规定:用字母不带“‘”的坐标表示刀具相对“静止”工件而运动的刀具运动坐标;带“’”的坐标表示工件相对“静止”刀具而运动的工件运动坐标。
◆运动的正方向
是使刀具与工件之间距离增大的方向。
(2)坐标轴确定的方法及步骤
◆Z轴
一般取产生切削力的主轴轴线为Z轴,刀具远离工件方向为正向,图2.2所示为车床坐标轴,图2.3所示为铣床坐标轴。
图2.2 车床坐标轴
图2.3 铣床坐标轴 a)立式 b)卧式
X轴
一般位于平行工件装卡面的水平面内。对工件作回转切削运动的机床(车床、磨床),在水平面内取垂直工件回转轴线(Z轴)的方向为X轴,刀具远离工件方向为正向,如图2.2所示。*
对刀具作回转切削运动的机床(铣床、镗床),当Z轴竖直(立式)时,人面对主轴,向右为正X方向,如图2.3a所示;当Z轴水平(卧式)时,则向左为正X方向,如图2.3b所示。*
Y轴
根据已确定的X、Z轴,按右手直角坐标系确定。
◆A、B、C轴
此三轴为回转进给运动坐标。根据已确定的X、Y、Z轴,用右手螺旋法则来确定。
◆附加坐标
若机床除有X、Y、Z(第一组)主要直线运动外,还有平行于它们的坐标运动,则分别命名为U、V、W。
#p#数控机床两种坐标系#e#
(1)机床坐标系
机床坐标系又称机械坐标系,是机床运动部件的进给运动坐标系,其坐标轴及方向按标准规定,其坐标原点的位置则由各机床生产厂设定。
数控车床的机床坐标系(XOZ)的原点O一般位于卡盘端面,如图2.4所示。*
数控铣床的机床坐标系(XYZO)的原点O一般位于机床零点,即机床移动部件沿其坐标轴正向的极限位置,如图2.5所示。*

图2.4 车床的两种坐标系
图2.5 铣床的两种坐标系
1——工件 2——工作台
2)工件坐标系
工作坐标系又称编程坐标系,供编程使用。规定工件坐标系是刀具相对工件而运动的刀具运动坐标系。如图2.4中的XpOpZp及图2.5中XpYpZpOp。*
工件坐标系的原点Op,也称工件零点或编程零点,其位置由编程者设定,一般设在工件的设计、工艺基准处,便于尺寸计算。
#p#2.2 数控机床的编程基础
1.数控机床编程概述
(1)程序编制的内容及一般步骤
◆确定工艺过程及工艺路线
既要按照一般的工艺原则确定加工方法,划分加工阶段,选择机床、夹紧定位方法、加工路线(如对刀点、换刀点、进给路线)刀具、切削用量等工艺参数(如进给速度、主轴转速、切削宽度和切削深度等),又要根据数控机床加工特点,做到工序集中、换刀次数少、空行程路线短等。
◆计算刀具轨迹的坐标值
根据零件的形状、尺寸、走刀路线,计算出零件轮廓线上各几何元素的起点、终点、圆弧的圆心坐标。
若数控系统无刀具补偿功能,则应计算刀心位置。当用直线、圆弧来逼近非圆曲线时,应计算曲线上各节点的坐标值。
◆编写零件加工程序
根据所计算出的刀具运动轨迹坐标值和已确定的切削用量以及辅助动作,结合数控系统规定使用的指令及程序格式,编写零件加工程序。
◆程序输入数控系统
程序编写好之后,可通过键盘直接将程序输入数控系统,也可制作成控制介质(穿孔纸带、磁盘、磁带等),再将控制介质上的程序输入数控系统。
◆程序检验和零件试切
编制好的程序必须经过检验和试切才能正式使用。
检验的方法是直接将控制介质上的信息输入到数控系统中,检查刀具的运动轨迹是否正确。但验不出对刀误差和某些计算误差引起的加工误差以及加工精度。
首件试切可用铝、塑料、石腊等易切材料。若发现零件不符合要求,则应对程序作修改,以及采用误差补偿方法,直到加工出合格的零件为止。
(2)数控程序的编制方法
◆手工编程
从零件图分析、工艺处理、轨迹计算、编写程序、制作控制介质直到程序检验等各个阶段均由人工完成的编程方法,称为手工编程。
对于几何形状不太复杂的零件,轨迹计算较为简单,所需的程序段不多,程序编制容易实现,比较适于手工编程。因此,手工编程被广泛用于点位加工和形状简单的轮廓加工中。
以下情况不适合用手工编程:
①形状较复杂的零件,特别是由非圆曲线、空间曲线等几何元素组成的零件。
②几何元素并不复杂但程序量很大的零件。
③当铣削轮廓时,数控系统不具备刀具半径补偿功能,而且只能以刀具中心的运动轨迹进行编程的情况。
◆自动编程
由计算机完成程序编制中的大部分或全部工作的编程方法,称为自动编程。
其软件有美国的MASTERCAM、Pro/E、 UG和中国的CAXI等。
自动编程可以大大减轻编程人员的劳动强度,将编程效率提高几十倍甚至上百倍。同时解决了手工编程无法解决的复杂零件的编程难度。
2.程序代码
数控加工程序是根据数控机床规定的语言规则及程序格式来编制的。
目前,国际上有两种通用的数控标准,即国际标准化组织的ISO标准和美国电子工业协会的EIA标准。我国根据ISO标准制定了JB3208—83标准。这些标准是数控加工编程的基本准则。
#p#火花机编程程序格式#e#
3.程序格式
(1)程序组成
一个完整的数控加工程序由程序名(号)、程序内容和程序结束指令3部分组成。例如:
程序号: O0001
N10 G00 X0 Y0 Z2 T01 S1500 M03
N20 G01 Z-2 F200
程序内容: N30 G91 X20 Y20
┇ ┇ ┇ ┇ ┇
N100 G00 Z100
程序结束指令:N110 M02
上述例子表示一个完整的加工程序,由11个程序段组成。程序号位于程序主体之前,是程序的开始部分,一般独占一行。程序号一般由规定的字母O打头,后面紧跟若干位数字组成。常用2位或4位两种,前零可省略。
程序内容是程序的核心,它由若干个程序段组成。在书写时,一个程序段一般占一行。程序段是数控加工程序中的一句,用来指令机床执行某一个动作或一组动作。每个程序段由若干个程序字组成。
程序字简称字,字则由地址字(字母)和数值字(数字及符号)组成。如上述程序的第一个程序段,由8个字组成,其中N、G、X、Y、Z、T、S、M为地址字符,后面跟相应的数值字。
字的功能类别由它的地址决定。根据功能的不同,程序字可分为顺序号字、准备功能字符、辅助功能字、尺寸字、进给功能字、主轴转速功能字和刀具功能字。
常用程序字的含义如表2.1所示。
程序结束指令位于程序内容的后面,用M02(程序结束)或M30(纸带结束,光标返回)。
在使用中,用M02结束程序时,自动运行结束后光标停在程序结束处;而用M30来结束程序时,自动运行结束后光标和屏幕显示能自动返回到程序开头处,一按启动按钮就可以再一次运行程序。
(2)程序段格式
程序段的格式是指一个程序段中“字”的排列方式和顺序,以及每个“字”和整个段的长度规定。不同数控系统的格式各异,须按说明书编程,否则会报警出错。
目前使用的程序段格式称为字地址程序段。
字地址程序段格式的主要特点如下:
◆程序字的排列顺序不严格要求;
◆程序段的长度可变;
◆具体的数控系统对各类字的允许字长都有规定,格式表达为:
N4 G2 X±5.3 Y±5.3 Z±5.3 F±4.3 S4 T4 M2
该格式的含义为N字最多能用不含小数点的4位数,X字最多能用小数点前5位、小数点后3位的数字,而且可带正负号,其余类推。数字前的零和正号可省略。
#p#火花机编程常用的程序字#e#
4.常用的程序字
(1)顺序号字
顺序号字又称程序段号。其位于程序段的开始,它由地址字N和随后的2~4位数字组成,如N30或N0030。
顺序号只是程序段的名称,与程序的执行顺序无关。
N与数字之间、数字与数字之间不能有空格;顺序号的数字并不非要从小到大使用。建议以N10开始设顺序号,以间隔10递增,以便调试时可插入新的程序段。
(2)准备功能字
准备功能字的地址字是G,所以又称为G功能、G指令或G代码。G00~G99,共100种。
它的定义是建立数控机床或控制系统工作方式的一种命令。为数控系统的插补运算、刀补运算、固定循环等作好准备。
依据ISO1056—1975(E)国际标准,国内制订了JB3208—83部颁标准,其中规定了G指令的功能含义。(3)辅助功能字
辅助功能字的地址字是M,所以又称M功能、M指令或M代码。 M00~M99,共100种。
它主要用来指令数控机床辅助装置的接通和断开(即开关动作),表示机床各种辅助动作及其状态。
依据ISO1056—1975(E)国际标准,国内制订了JB3208—83部颁标准,其中规定了M指令的功能含义。
(4)尺寸字
尺寸字也叫尺寸指令。尺寸字在程序段中主要用来指令机床上刀具运动达到的坐标位置。常用的地址字符有3组:
第一组是X、Y、Z、U、V、W,主要用于指令到达点的直线坐标;
第二组是A、B、C,主要用于指令到达点的角度坐标;
第三组是I、J、K和R,主要用于指令零件圆弧轮廓圆心点的坐标和圆弧半径。
(5)进给功能字
进给功能字的地址符用F,所以又称F功能或F指令,由地址符F与其后的若干位数字组成。它的功能是指令切削的进给速度。
对于车床,可分为每分钟进给和主轴每转进给两种,一般分别用G94(mm/min)、G95(mm/r)规定;对于车削之外的控制,一般只用每分钟进给。F地址字在螺纹切削程序段中还常用来指定导程。
(6)主轴转速功能字
主轴转速功能字的地址字用S,所以又称S功能或S指令,由地址字S与其后的若干位数字组成。它的功能是指令机床主轴的转速。
S后续的数字直接表示每分钟主轴转速,单位为r/min(G97方式)。在数控车床上,有时使用恒线速方式,单位为m/min(G96方式)。
(7)刀具功能字
刀具功能字的地址符用T,所以又称T功能或T指令,由地址符T与其后的若干位数字组成。它的功能含义主要用来指令加工时使用的刀具号。
车床上,T后的数字有4位。前2位数字代表刀具号,后2位数字代表刀具长度补偿号和刀夹半径补偿号。
铣床上,T后的数字一般1~4位,表示刀具号或X、Z向的刀具长度补偿号。换刀使用M06 T~指令,如M06T0203表示将原来的刀具换成2号刀,刀具长度补偿值为3。
#p#火花机常用编程指令#e#
5.常用编程指令
(1)绝对坐标方式与增量坐标方式
指令:G90、G91
G90状态下,程序段中的尺寸数字为绝对坐标值,即刀具所有轨迹点的坐标值,均以工件零点为基准而得。
G91状态下,程序段中的尺寸数字为增量坐标值,即刀具当前点的坐标值是以刀具前一点为基准而得。
例:如图2.5所示,分别写出A、B两点的绝对坐标方式和增量坐标方式。
绝对方式:
A(30,30)
B(10,12)
增量方式:
A(20,18)
B(10,12
对于FANUC用于车床的数控系统,如果用标准组G代码,那么其内没有G90/G91指令。这时程序内用X~、Z~为绝对坐标方式,用U~、W~为增量坐标方式。这类表达方式的特点是不但在同一程序中,而且在同一程序段中,绝对坐标与增量坐标可以混用;另外,两种坐标指令属于哪一种将一目了然,无须看前面的是G90还是G91,这样可减少错误。
(2)预置寄存
指令:G92
该指令的作用是按照程序规定的尺寸字设置或修改坐标位置,不产生机床运动。
通过该指令设定起刀点即程序开始运动的起点,从而建立加工坐标系。
注意:该指令只是设定坐标系,机床(刀具或工作台)并未产生任何运动。
程序格式:G92 X Y Z
其中:X、Y、Z指定起刀点相对于加工原点的位置。
例:若加工坐标系如图2.6a所示,则设定该加工坐标系的程序段为:

刀具起点在A点:G92 X30 Y30
刀具起点在B点:G92 X10 Y12
3)坐标平面选择
坐标平面选择指令是用来选择圆弧插补的平面和刀具补偿平面的,如图2.7所示。*
指令:G17、G18、G19
程序格式:G17/G18/G19
移动指令与平面选择无关,例G17 Z ,这条指令可使机床在Z轴方向上产生移动。
程序格式:G00 X Y Z
其中:X、Y、Z——指目标位置的坐标值。
例:如图2.8所示*,从A点到B点快速移动的程序段为:
G00 X20 Y25
(5)直线插补
指令:G01
该指令使刀具以一定的进给速度,从所在点出发,直线移动到目标点。可使机床沿X、Y、Z方向执行单轴运动或在各坐标平面内执行具有任意斜率的直线运动,也可使机床三轴联动,沿指定空间直线运动。
程序格式:G01 X Y Z F
其中:X、Y、Z——指目标位置的坐标值。
F——指进给速度。有3种方式表示:
①每分钟进给量(mm/min);
②每转进给量(mm/r,一般用于车床);
③代码表示法。F后面的数值不直接表示进给量的大小,只是进给量的代号,如某机床将进给速度分为20级,用F00~F19表示。
例:如图2.9所示,从A点到B点的直线插补运动,其程序段为:
(6)圆弧插补
指令:G02、G03
G02表示按指定进给速度的顺时针圆弧插补,G03表示按指定进给速度的逆时针圆弧插补。
圆弧顺、逆时针的判别方法是沿着圆弧所在平面(如XOZ)相垂直的另一坐标轴的负方向(如-Y)看去,顺时针方向为G02,逆时针方向为G03,如图2.10所示。
程序格式:
XY平面:
G17 G02 X Y I J (R) F
G17 G03 X Y I J (R) F
ZX平面:
G18 G02 X Z I K (R) F
G18 G03 X Z I K (R) F
YZ平面:
G19 G02 Y Z J K (R) F
G19 G03 Y Z J K (R) F
其中:X、Y、Z——指定圆弧终点的位置;
I、J、K——指定圆弧的圆心位置。I、J、K在任何情况下都是圆弧坐标相对于圆弧起点坐标的增量尺寸。
在G02/G03指令的程序段中,可直接指令圆弧半径,而不必再指令I、J、K字,一般指令半径的尺寸字地址是R。当圆弧的圆心角小于等于180°时,R为正值。当圆弧的圆心角大于180°时,R值为负。当圆弧的圆心角为360°时,只能用I、J、K字编程。
例:如图2.11所示,所有圆弧的起点为A,终点为B,试分别写出它们的程序段。
(7)刀具补偿
◆刀具半径补偿
在零件轮廓铣削加工时,由于刀具半径尺寸影响,刀具的中心轨迹与零件轮廓往往不一致。为了避免计算刀具中心轨迹、直接按零件图样上的轮廓尺寸编程,可使用数控系统提供的刀具半径补偿功能。
指令:G41/G42、G40
G41是左偏刀具半径补偿:指沿着刀具运动方向向前看(假设工件不动),刀具位于零件左侧的刀具半径补偿;G42是右偏刀具半径补偿:指沿着刀具运动方向向前看(假设工件不动),刀具位于零件右侧的刀具半径补偿;G40是刀具半径补偿撤销,如图2.12所示*。

程序格式:
G00/G01 G41/G42 X Y Z H(D)
┇
G00/G01 G40 X Y Z
上段中:X、Y、Z——指建立刀具补偿直线段的终点坐标值;
H(D)——指刀具偏置代号的地址字,后面一般用两位数字表示代号;H(D)代码中存放刀具半径值作为偏置量,用于数控系统计算刀具中心的运动轨迹,偏置量可用CRT/MDI方式输入。
刀具补偿过程的运动轨迹分为3个组成部分:
①形成刀具补偿的建立补偿程序段;
②零件轮廓切削程序段;
③补偿撤销程序段。
数控系统一启动,总是处在补偿撤销状态,这时刀具的偏移向量为0,刀具中心轨迹与编程路线一致。
◆刀具长度补偿
指令:G43、G44、G49
G43是刀具长度正补偿;G44是刀具长度负补偿;G49是撤销刀具长度补偿。刀具长度补偿指令,一般用于刀具轴向(Z方向)的补偿。
刀具长度补偿可以使刀具在Z方向上的实际位移量大于或小于程序给定值,即实际位移量=程序给定值+补偿值。
程序格式:G43/G44 Z H(D)
┇
G01 G49
其中:H(D)同上述刀具半径补偿时含义相同,不过偏置号中放入刀具的长度补偿值作为偏置量。
无论采用G90/G91方式编程,在程序执行时,都是将存放在偏置地址H(D)中的偏置量与Z坐标的尺寸字进行运算后,按其结果进行Z轴的移动。使用G43指令时,是将H(D)中的值加到Z尺寸字上;使用G44指令时,是从Z向尺寸字中减去H(D)中的数值。
1.数控车床与数控铣床坐标系的区别是什么?各坐标轴如何确定?
2.数控机床加工程序的编程主要包括哪些内容?
3.数控编程中常用的程序字有哪些?尺寸字的单位如何确定?
◆刀具长度补偿
指令:G43、G44、G49
G43是刀具长度正补偿;G44是刀具长度负补偿;G49是撤销刀具长度补偿。刀具长度补偿指令,一般用于刀具轴向(Z方向)的补偿。
刀具长度补偿可以使刀具在Z方向上的实际位移量大于或小于程序给定值,即实际位移量=程序给定值+补偿值。
程序格式:G43/G44 Z H(D)
┇
G01 G49
其中:H(D)同上述刀具半径补偿时含义相同,不过偏置号中放入刀具的长度补偿值作为偏置量。
无论采用G90/G91方式编程,在程序执行时,都是将存放在偏置地址H(D)中的偏置量与Z坐标的尺寸字进行运算后,按其结果进行Z轴的移动。使用G43指令时,是将H(D)中的值加到Z尺寸字上;使用G44指令时,是从Z向尺寸字中减去H(D)中的数值。
2.3 思考与练习题
1.数控车床与数控铣床坐标系的区别是什么?各坐标轴如何确定?
2.数控机床加工程序的编程主要包括哪些内容?
3.数控编程中常用的程序字有哪些?尺寸字的单位如何确定?