后置设置
目前数控系统,主要以ISO G代码作为控制指令。但也有如Roland的控制系统使用HPGL3D的控制指令。
另外国际通用的ISO G代码指令,在不同数控系统的中,其格式也会有所差异。有的系统采用浮点数输出,如X60.323 Y10.290 Z5.00。有的系统则采用整数输出,如X60323 Y10290 Z500,每一整数位表示0.001。
将软件生成的中性加工路径,转换为特定数控机床所需要的代码格式,这种处理过程就叫做“后处理”。
菜单【加工路径 >后置设置】
下面是一个ucancam后处理程序的例子:
////////////////////////////
FORMAT <X|X%1.3f |1.0>
FORMAT <Y|Y%1.3f |1.0>
FORMAT <Z|Z%1.3f |1.0>
FORMAT <S|S%d |1>
FORMAT <F|F%d |1>
////////////////////////////
UNITS<MM>
////////////////////////////
FILE_EXTENSION<nc>
////////////////////////////
PROG_HEAD<G90G17G21>
TOOLCHANGE<M06 T[TN]>
PROG_TAIL<M30>
简单的说,后处理文件主要分为4个部分:
1. 全局声明
比如定义输出文件的扩展名,输出单位是毫米还是英寸,数字输出格式等。
2. 程序头
这部分描述指令将出现在加工程序的头部,比如程序名称,主轴旋转等。
如:PROG_HEAD<%日期为:[DATE]时间为:[TIME]>
PROG_HEAD<G90G17G21>
其中的[ ],说明的单词是变量。
3. 程序尾
这部分描述指令将出现在加工程序的最后,通常包括停止主轴旋转,刀具会加工原点等。如:PROG_TAIL<M30> PROG_TAIL<%>
4.换刀指令
如果机床配备了自动换刀系统,或者用户想要通过输出相应指令,以更方便地使用手动换刀。就可以把换刀指令设置在这里。
如:TOOLCHANGE <M05>
TOOLCHANGE<M06 T[TN]>
第一行指令表示换刀前暂停,第二行表示为换刀。
TN: 表示刀具号
由以上示例的后处理文件可以看出:每一行的第一个单词是系统内定的关键词,在随后的括号<>中, 定义相应的变量或指令。即:关键词 <指令/变量>
例如:UNITS<MM> 定义长度单位为毫米
在Ucancam后处理系统的关键词包括2种,一种是“指令”关键词,另外一种是“变量”关键词,在后处理文件中用英文状态下的中括号“[ ]”进行引用。
以下列表是Ucancam软件后处理器用到的指令关键词:
指令关键词 |
含义 |
FORMAT |
定义数据输出格式 |
PROG_HEAD |
程序头指令 |
PROG_TAIL |
程序尾指令 |
TOOLCHANGE |
换刀指令 |
G00_DEF |
定义快速定位指令 |
G01_DEF |
定义直线切削指令 |
G02_DEF |
定义圆弧顺时针切削指令: |
G03_DEF |
定义圆弧逆时针切削指令: |
G04_DEF |
定义暂停指令 |
DWELL_DEF |
定义暂停语句 |
FIRST_ G00_MOVE_DEF |
定义第一次快速移动指令 |
G00_MOVE_DEF |
定义所有的快速移动指令 |
FIRST_ G01_MOVE_DEF |
定义第一次直线切削指令 |
G01_MOVE_DEF |
定义所有的直线切削指令 |
FIRST_ G02_MOVE_DEF |
定义第一段圆弧顺时针切削指令 |
G02_MOVE_DEF |
定义所有的圆弧顺时针切削指令 |
FIRST_ G03_MOVE_DEF |
定义第一段圆弧逆时针切削指令 |
G03_MOVE_DEF |
定义所有的圆弧逆时针切削指令 |
G20_DEF |
英制单位指令 |
G21_DEF |
公制单位指令 |
DCMP_LFT |
刀具半径左补偿 |
DCMP_RGH |
刀具半径右补偿 |
DCMP_OFF |
关闭刀具半径补偿 |
SPN_CW |
主轴顺时针旋转指令 |
FILE_EXTENSION |
文件扩展名 |
UNITS |
长度单位 |
LINE_NUM_START |
开始行号 |
LINE_NUM_INCREMENT |
行号增量 |
LINE_NUM_MAXIMUM |
行号最大值 |
OMIT_SAME_GCODE |
省略相同G代码 |
OMIT_SAME_XYZ |
省略相同XYZ代码 |
RAPID_XY_Z |
快速移动XY then Z |
ARC_TO_LINES |
圆弧转换直线 |
END_OF_LINE |
每行的结束符 |
以下列表是Ucancam软件后处理器用到的“变量”关键词:
变量关键词 |
含义 |
DATE |
日期变量 |
TIME |
时间变量 |
FILENAME |
文件名称变量 |
TOOLPATHNAME |
加工路径名称变量 |
XSIZE |
加工路径x方向大小 |
YSIZE |
加工路径y方向大小 |
ZSIZE |
加工路径z方向大小 |
XMIN |
加工路径的x最小值 |
YMIN |
加工路径的y最小值 |
ZMIN |
加工路径的z最小值 |
XMAX |
加工路径的x最大值 |
YMAX |
加工路径的y最大值 |
ZMAX |
加工路径的z最大值 |
WK_XSIZE | 加工材料的X方向大小 |
WK_YSIZE | 加工材料的Y方向大小 |
WK_XMIN | 加工材料X向最小值 |
WK_YMIN | 加工材料Y向最小值 |
WK_XMAX | 加工材料X向最大值 |
WK_YMAX | 加工材料Y向最大值 |
X |
当前x坐标 |
Y |
当前y坐标 |
Z |
当前z坐标 |
I |
当前圆弧圆心相对于起点的增量坐标X值 |
J |
当前圆弧圆心相对于起点的增量坐标Y值 |
K |
当前圆弧圆心相对于起点的增量坐标Z值 |
IA |
当前圆弧的圆心绝对坐标X值 |
JA |
当前圆弧的圆心绝对坐标Y值 |
KA |
当前圆弧的圆心绝对坐标Z值 |
IE |
当前圆弧圆心相对于终点的增量坐标X值 |
JE |
当前圆弧圆心相对于终点的增量坐标Y值 |
KE |
当前圆弧圆心相对于终点的增量坐标Z值 |
LN |
行号 |
TN |
当前刀具号 |
TOOL_DESC |
当前刀具名称 |
NUM_CIRCLE_TO_ARC |
圆转换为圆弧的个数 |
FC |
切割进给速度 |
FP |
下刀速度 |
FR |
快速移动速度 |
SPN_SPEED |
主轴转速 |
SAFE_ZPOS |
安全高度 |
1.FORMAT
定义数据输出的格式包括:
FORMAT<N|N%d >
FORMAT<X|X%1.3f |1.0>
FORMAT<Y|Y%1.3f |1.0>
FORMAT<Z|Z%1.3f |1.0>
FORMAT<S|S%d |1>
FORMAT<F|F%d |1>
FORMAT<I|I%1.3f |1.0>
FORMAT<J|J%1.3f |1.0>
FORMAT<K|K%1.3f |1.0>
FORMAT<R|R%1.3f |1.0>
FORMAT<A|A%1.3f |1.0>
定义的内容在<>内,|为分隔符,以FORMAT<X|X%1.3f |1.0>为例: <>括号内的内容用分隔符分为三部分。第一部分X为特定名称,表示当前定义的数据格式为点的X坐标值,UCancam后置处理可以定义的数据格式的特定名称如下: N X Y Z S F I J K R A。
N表示行号,X、Y、Z表示坐标值,S为主轴转速、F为进给速度,R为圆弧半径,A为角度,I、J、K为圆弧坐标
第二部分X为点坐标x的实际输出名称,一般情况下仍然为X字符。 1表示数值的位数至少保留一位,3表示小数点后保留三位,f表示数值为浮点型;d表示整数型。
第三部分为比例系数:缺省值为1。
对于圆弧输出来说, 如果定义了IJK数据输出格式,则圆弧以IJK形式输出 ;如果定义了R数据输出格式,则圆弧以R形式输出;缺省时,,圆弧以R形式输出。
2.G00_DEF、G01_DEF、G02_DEF、G03_DEF、G04_DEF、G20_DEF、G21_DEF
不同的数控系统,对快速移动、线性切削、圆弧切削、暂停、英制、公制指令的定义不同,软件中提供了再定义功能。如:G00_DEF <G172>
3.圆弧指令
1)圆弧用折线表示
ARC_TO_LINES<1> ,1是布尔变量表示真。
可选值; 0 或1
缺省值:0
2)圆弧用半径R表示
FORMAT <R|R%1.3f |1.0>
3)圆弧用I、J、K(圆弧起点到圆心的增量坐标方式)方式表示
FORMAT <I|I%1.3f|1.0>
FORMAT <J|J%1.3f|1.0>
FORMAT <K|K%1.3f|1.0>
4)圆弧用IA、JA、KA(当前圆弧的圆心绝对坐标)方式表示
5)圆弧用IE、JE、KE(圆弧终点到圆心的增量坐标方式)方式表示
缺省值: R format
4. FIRST_ G00_MOVE_DEF
定义第一次快速移动指令,用于区别后续的快速移动指令。
G00_MOVE_DEF
定义所有的快速移动指令,或定义除第一次以外的快速移动指令。
5.FIRST_G01_MOVE_DEF
定义第一次直线切削移动指令,用于区别后续的直线切削移动指令。
G01_MOVE_DEF
定义所有的直线切削移动指令,或定义除第一次以外的直线切削移动指令。
6.FIRST_G02_MOVE_DEF
定义第一段圆弧顺时针移动指令,用于区别后续的圆弧顺时针移动指令。
G02_MOVE_DEF
定义所有的圆弧顺时针移动指令,或定义除第一段以外的圆弧顺时针移动指令。
7.FIRST_G03_MOVE_DEF
定义第一段圆弧逆时针移动指令,用于区别后续的圆弧顺时针移动指令。
G03_MOVE_DEF 定义圆弧逆时针移动指令
定义所有的圆弧逆时针移动指令,或定义除第一段以外的圆弧逆时针移动指令。
8. DWELL_DEF
定义暂停语句,如果未定义该语句,缺省值为G04 X秒数。
如:G04 X2.000 表示钻孔到底部的暂停时间为2秒。
9.输出行号
FORMAT<N|N%d >
设定在代码中输出行号,如果未定义该语句,则表示不输出行号。
LINE_NUM_START<1>
起始行号,缺省值为1
LINE_NUM_INCREMENT<1>
行号增量,缺省值为1
10.UNITS
定义长度单位,长度单位有两种表示方式,分别为公制(毫米)和英制(英寸)
UNITS<MM> 公制单位,进给速度为mm/min
UNITS<INCH> 英制单位,进给速度为inches/min
缺省值:MM
11.FILE_EXTENSION
路径文件扩展名,如FILE_EXTENSION<nc> 输出G代码文件后缀(扩展名)为*.nc。
缺省值:nc
12.ROTARY_AXIS
旋转轴设置,支持旋转轴机器。
可选值; Y 或X
如:ROTARY_AXIS<Y>,表示Y坐标映射为旋转角度,X轴不变。
定义了该语句,UCancam在路径输出时会弹出对话框,提示用户输入旋转轴的直径。
13.OMIT_SAME_GCODE
OMIT_SAME_GCODE<1>。 省略相同的G代码,即当前行代码与上一行代码的G指令相同,则省略G指令。
可选值; 0 或1
缺省值:0,即不省略相同的G代码。
例如: G01 x010.000 Y 20.000Z0.000
G01 x010.000 Y 20.000 Z-5.000
设置语句: OMIT_SAME_GCODE<1>
则输出为: G01 x010.000 Y 20.000Z0.000
x010.000 Y 20.000Z-5.000
14.OMIT_SAME_XYZ
OMIT_SAME_XYZ<1>
省略相同的XYZ代码,即当前行代码与上一行代码的X、Y、Z的值相同,则省去相同的X、Y、Z代码。
可选值; 0 或1
缺省值:0,即不省略相同的X、Y、Z代码;
例如: G01 x010.000 Y 20.000Z0.000
G01 x010.000 Y 20.000 Z-5.000
如果设置了语句: OMIT_SAME_XYZ<1>
输出为:G01x010.000 Y 20.000 Z0.000
G01Z-5.000
15.RAPID_XY_Z
RAPID_XY_Z<1>
快速移动,先XY,然后Z。否则,XYZ联动。
可选值; 0 或1
缺省值:1
如果设置了语句 : RAPID_XY_Z <1>
刀具从点PointA(0,0,10)to point pointB(100,50,0)的快速移动,将分为两部分:首先从点pointA(0,0,10)to 中间点midpoint(100,50,10),然后从midpoint(100,50,10)to pointB(100,50,0).以避免可能的产生的刀具碰撞。
16.END_OF_LINE
代码行的尾部符号,如在plt指令中设置:END_OF_LINE <;>,在输出的代码中每行的末尾就会有“;”
缺省值:无
17.XSIZE、YSIZE、ZSIZE
加工路径的在X、Y、Z轴向的尺寸
18.XMIN、YMIN、ZMIN、XMAX、YMAX、ZMAX
当前加工路径X、Y、Z方向坐标的最小值与最大值。
19.X、Y、Z
当前X、Y、Z坐标。
20.SPN_SPEED
设置主轴转速,如:TOOLCHANGE <M06 T[TN] S[SPN_SPEED]>
21.FC
设置加工进给速度。
22.FR
设置快速移动速度。
23.FP
设置下刀移动速度。
24.SAFE_ZPOS
安全高度。
以下是由ucancam软件生成的后处理程序。
例1:generalCNC后置处理程序
//linenumber
//FORMAT<N|N%d >
///////////////////
FORMAT<X|X%1.3f >
FORMAT<Y|Y%1.3f |1.0>
FORMAT<Z|Z%1.3f |1.0>
FORMAT<S|S%d |1>
FORMAT<F|F%d |1>
//////////////////////////////
UNITS<MM>
/////////////////////////////////
FILE_EXTENSION<nc>
/////////////////////////////////
LINE_NUM_START<1>
LINE_NUM_INCREMENT<1>
/////////////////////////////////
PROG_HEAD<G90G17G21>
TOOLCHANGE<M05>
TOOLCHANGE<M06 T[TN]>
PROG_TAIL<M30>
例2:HP_PLT3D后置处理程序
//precision = 0.025, 1/0.025=40
FORMAT<X|%1.0f, |40.0>
FORMAT<Y|%1.0f, |40.0>
FORMAT<Z|%1.0f |40.0>
///////////////////////////////////
UNITS<MM>
//convert arc into lines
ARC_TO_LINES <1>
RAPID_XY_Z <0>
END_OF_LINE <;>
///////////////////////////////////
FILE_EXTENSION<plt>
//////////////////////////////////
PROG_HEAD <IN;>
PROG_HEAD <SP1>
G00_DEF<PU>
G01_DEF<PD>
TOOLCHANGE<SP[TN]>
PROG_TAIL<SP0>