2.2 程序的结构和组成

2.2.1 程序有关的术语

通过如下简单的程序,来说明程序有关的术语,如图2-12所示,主轴从工件坐标系G54的原点,沿箭头方向,逆时针运动。

图2-12 简单加工

程序如下:

O0001(MAKINO);        程序号O0001,括弧内的内容为注释
N1 G90 G54 G00 X0 Y0 M03 S1000;        快速移动到G54原点,主轴正转,转速1000r/min
/N3 Z100        移动到Z100位置,“/”为单段跳过。N3为顺序号
N4 G01 X0 Y-50.0 F100;        从G54原点移动到1点
X100.0;        从1点移动到2点
Y50.0;        从2点移动到3点
X-100.0;        从3点移动到4点
Y-50.0;        从4点移动到5点
X0;        从5点移动到1点
N8 Y0 M05;        从1点移动到原点,主轴停止转动
N9 M30;        程序结束,并返回到程序的开始位置

(1)程序

程序的结构如图2-13所示,程序是由许多单段组成,一系列单段所组成的集合称为程序。

图2-13 程序结构

(2)单段

每一个程序段由若干个字组成(如图2-14所示),每个字是控制系统的具体指令,字由表示地址的英语字母与随后的若干位十进制数字组成。即字=地址(字母)+数字。

图2-14 段的组成

在每个单段的前端,可以包含一个顺序号码N□□□□,在单段末端以“;”表示程序段结束。中间部分为程序段的内容。

(3)字的含义

程序段中的每个字都是指定一种特定的功能,主要功能包括:准备功能字如G01,尺寸功能字如Y-50,进给功能字如F200,主轴功能字如S900,刀具功能字如T01,辅助功能字如M03等。

每个程序段并不是须包括所有的功能字,根据需要可以由一个字或几个功能字组成。但一般在程序中要完成一个动作必须具备以下内容:

①刀具移动路线轨迹:如G01直线、G02圆弧等准备功能字。

②刀具移动目标位置,如尺寸字X、Y、Z表示终点坐标值。

③刀具移动的速度,如进给功能字F。

④刀具的切削速度,如主轴转速功能字S。

⑤使用哪把刀具,如刀具功能字T。

⑥其他机床辅助动作、辅助功能字M等。

一个程序段除程序段号与程序段结束字符外,其余各字的顺序并不严格,可先可后,但为编写、检查程序的方便,习惯上可按N—G—X—Y—Z—F—S—T—M的顺序编程。

表2-1为FANUC系统可用的地址(字母)和它们的含义。

表2-1 FANUC主要功能字

(4)主要功能字指令值的范围

地址后所带数据根据功能不同,它的大小范围、是否可以有负号、是否可带小数点都有一定的规则,其中G代码和M代码的数字是由系统指定。表2-2为FANUC系统主要地址和指定值的范围。

表2-2 功能字的指令值范围

从表2-2可以看出,程序名O、顺序号N、准备功能代码G、刀具指令T、辅助指令M、指定程序号指令P和重复次数指令P后所带数字除有一定的数值范围外,要求都必须是整数,且不可以用负号来表示。

凡有计量单位的功能字,例如暂停地址所带数值单位为秒,尺寸字地址所带数值单位为毫米,这些尺寸字、进给、主轴有计量单位地址字都为工艺参数和切削用量,需编程人员计算出精确数字,其他的功能字所带数字都为编号之类的数字,由编程人员任意或对应指定即可。

2.2.2 程序的结构

(1)程序编号

程序编号的结构如图2-15所示,程序被保存在存储器中,程序编号被用来区别不同的程序。

图2-15 程序编号

(2)序号

序号格式:N □□□□□

序号以N开始,其取值范围为1~99999。序号不要求连续,在单段中,它可有可无,作用是对程序进行校对和检索修改时作为标记,或在程序执行转换指令时作为条件转向的目标号,即作为转向目的程序段的名称。

(3)单段跳过

单段跳过格式:/N□□□□

当单段的前端加上一个“/”,该单段被忽略,不被执行。

(4)尺寸字

尺寸字格式:轴的地址+移动值。

尺寸字定义了刀具的移动,它由移动轴的地址及移动值组成。表示沿X轴方向移动,移动的值的变化取决于是绝对还是相对编程。小数点的位数,与机床的NC装置最小取值有关。

(5)准备功能(G)

准备功能格式:G □□ ,功能编号2位(0~99)。

准备功能是建立机床或控制数控系统工作方式的一种指令。表2-3为FANUC-0i MA数控铣削系统的准备功能G指令。

表2-3 G代码功能

G代码可分成两类:单(非)模态和模态,见表2-4。

表2-4 单(非)模态和模态的含义

模态指令又称续效指令,是指在同一个程序中,在前程序段中出现,对后续程序段保持有效,此时在后程序段中可以省略不写,直到需要改变工作方式时,指令同组其他G指令时才失效。另外所有的F、S、T指令和部分M代码都属模态指令。

例如下列O3002与O3003两程序功能完全相同,但O3002程序清晰明了,避免了大量指令的重复。

非模态指令是指只在本程序段中有效,下一程序段需要时必须重写,如表2-4中00组中的G04暂停、G28参考点、G92设工件坐标系等指令属非模态指令。

(6)辅助功能

辅助功能格式:M□□,功能编号2位(0~99)。M功能定义了主轴回转的启动、停止,切削液的开、关等辅助功能。表2-5为FANUC-0i-MA数控系统的常用的辅助功能M代码及其功能。

表2-5 辅助功能M代码及其功能

①程序暂停M00。

M00程序自动运行停止,模态信息保持不变。按下机床控制面板上的循环启动键,程序继续向下自动执行。

②程序选择停止M01。

M01与机床控制面板上M01选择按钮配合使用。按下此按钮,程序即暂停。如果未按下选择按钮,则M01在程序中不起任何作用。

③程序结束M02、M30。

M02:程序结束,主轴运动、切削液供给等都停止,机床复位。若程序再次运行,需要手动将光标移动到程序开始。

M30:程序结束,光标返回到程序的开头。可直接再次运行。

④主轴顺时针旋转M03、主轴逆时针旋转M04。

该指令使主轴以S指令的速度转动。M03顺时针旋转,M04逆时针旋转。

⑤主轴停止旋转M05。

⑥刀具交换指令M06。

M06用于加工中心上的换刀。

⑦切削液开、关 M08、M09。

开启切削液M08,停止切削液供给M09。

⑧调用子程序M98。

⑨子程序返回 M99。

数控系统允许在一个程序段中最多指定三个M 代码。但是M00 、M01、 M02、 M30、 M98、M99不得与其他M 代码一起指定,这些M 代码必须在单独的程序段中指定。

(7)切削进给速度F、主轴回转数S

切削进给速度格式:F □□□□,切削的进给速度,4位以内。

F代码可以用每分钟进给量(mm/min)和每转进给量(mm/r)指令来设定进给单位。准备功能G94设定每分钟进给量,G95设定每转进给量。

例:G94 F01,表示切削进给速度1mm/min;

G95F0.1,表示切削进给速度0.1mm/ r。

主轴回转数格式:S □□□□,主轴的回转数,4位以内。

主轴转速根据加工需有两种转速单位设定,用指令指定为每分钟多少转,单位是r/min;用G96指定为线速度,每分钟多少米,单位是m/min。

例:G97 S100,表示主轴100r/min;

G96 S400,表示主轴线速度400m/min。

用户使用下列公式可求解主轴的回转数:

N=1000V/(πD

式中 V——切削速度,m/min;

π——圆周率,3.14;

D——刀具直径,mm;

N——主轴回转数,r/min。

例:用高速钢立铣刀加工中碳钢材料零件时,一般铣削速度取20~40m/min。现假定用ϕ16mm的立铣刀,铣削速度取30m/min,试计算主轴转速。

用户使用下列公式可求解切削进给速度:

F=fZZN

式中 fZ——每齿进给量,mm/齿;

Z——刀具的齿数;

F——切削进给速度,mm/min。

例:ϕ16mm的立铣刀为3个齿,每齿进给量为0.07mm,试求切削进给速度。

(8)绝对(G90)和增量(G91)

程序制作有绝对(用ABS表示)和增量(用INC表示)两种方法。ABS方式,以移动后主轴位置的坐标来表示,而INC方式以主轴相对前一位置移动的距离来表示。

例:如图2-16所示。

图2-16 ABS和INC方式

·括号内的指令可以省略。

·增量(INC)值的正、负,取决于运动的距离在各轴上的分量是否与工件坐标系各轴的正方向相同,若相同,增量的值为正,反之为负。

·绝对和相对增量的使用场合。

例:图2-17,各孔的坐标以原点为基准,用绝对编程很容易实现各孔的加工。图2-18,各孔以该孔的前一孔为基准,用孔间距离标出各孔的坐标,比较适合用相对增量编程实现各孔的加工。

图2-17 绝对的使用

图2-18 相对的使用

提示:程序中绝对和相对的使用,主要根据加工的图纸来确定,以方便编程者和操作者对程序进行检查为原则。

2.2.3 子程序

如果程序包含固定的加工路线或多次重复的图形,这样的加工路线或图形可以编成单独的程序作为子程序。这样在工件上不同的部位实现相同的加工,或在同一部位实现重复加工,大大简化编程。

子程序作为单独的程序存储在系统中时,任何主程序都可调用,最多可达999次调用执行子程序。

当主程序调用子程序时,它被认为是一级子程序,在子程序中可再调用下一级的另一个子程序,子程序调用可以嵌套4级,如图2-19所示。

图2-19 程序嵌套

(1)子程序的结构

子程序与主程序一样,也是由程序名、程序内容和程序结束三部分组成。子程序与主程序唯一的区别是结束符号不同,子程序用M99,而主程序用M30或M02结束程序。

例:

O1000     子程序名
N010 ……           程序段
……
M99;        子程序结束

M99指令为子程序结束,并返回主程序,在开始调用子程序的程序段“M98 P”的下一程序段,继续执行主程序。M99可不必作为独立的程序段指令,例如“X100.0 Y100.0 M99;”。

(2)子程序调用格式

①M98 P ×××□□□□

×××表示子程序被重复调用的次数,□□□□表示调用的子程序名(数字)。

例如:M98 P51234;表示调用子程序O1234重复执行5次。

当子程序调用只一次时,调用次数可以省略不写,如M98 P1010;表示调用程序名为O1010的子程序一次。

②有些系统用以下格式来调用子程序:

M98 P××××L□□ 

××××表示子程序名,□□表示子程序调用次数。如P1L2;表示调用程序名为O0001的子程序2次。

(3)子程序使用中注意的问题

①在主程序中,如果执行M99指令,控制回到主程序的开头。

例如(图2-20),当单段插入到主程序适当位置时,选择性单段跳跃在OFF,会执行M99,控制回到主程序的开头,再度执行主程序。

图2-20 选择性单段跳跃在程序中的应用

如果选择性单段跳跃在ON,“/M99” 被省略,控制进入下一个单段。如果插入“/M99Pn;” 控制不回到主程序的开头,而是回到序号“n”的单段,回到序号“n”的处理时间较回到程序的开头长。

思考:如果在主程序中仅仅使用“M99Pn;”,程序将会出现死循环,为了避免此种情况的发生,一般使用 “/M99Pn;”,并配合机床操作面板上的“选择性单段跳跃”。

②在子程序的最后一个单段用P指定序号(图2-21),子程序不回到主程序中呼叫子程序的下一个单段,而是回到P指定的序号。返回到指定单段的处理时间较通常回到主程序的时间长。

图2-21 子程序返回到指定的单段