后处理

2023-6-9

Ucancam 后处理 

        目前数控系统,主要以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
公制单位指令
SPN_CW
主轴顺时针旋转指令
FILE_EXTENSION
文件扩展名
UNITS
长度单位
XYZ_SEQ
输出坐标XYZ顺序
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
每行的结束符
DRILL_CYC
钻孔循环指令
THREAD_CYC
攻丝循环指令


以下列表是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 当前刀具名称
FR 主轴快速移动速度
FC 主轴切割进给速度
FP 下刀速度
SPN_SPEED
主轴转速
SAFE_ZPOS
安全高度
DRILL_DZ
钻孔最大深度
DRILL_RZ
钻孔回退深度
DRILL_QZ
钻孔每次钻深




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.000 Z0.000
G01 x010.000 Y 20.000 Z-5.000

设置语句: OMIT_SAME_GCODE <1>
则输出为: G01 x010.000 Y 20.000 Z0.000
x010.000 Y 20.000 Z-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.000 Z0.000
G01 x010.000 Y 20.000 Z-5.000

如果设置了语句: OMIT_SAME_XYZ <1>
输出为:G01 x010.000 Y 20.000 Z0.000
G01 Z-5.000

15.RAPID_XY_Z 

RAPID_XY_Z <1> 
快速移动,先XY,然后Z。否则,XYZ联动。
可选值; 0 或 1
缺省值:1

如果设置了语句 : RAPID_MOVE_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_Z_POS

安全高度。


25. DRILL_CYC

      钻孔循环

26.THREAD_CYC

      攻丝循环


THREAD_CYC <M29>
THREAD_CYC <G99 G84 Z[DRILL_ZPOS] R[DRILL_RPOS] Q[DRILL_QZ]>
THREAD_CYC <G80>




以下是由ucancam软件生成的后处理程序。
例1:general CNC后置处理程序
//line number
//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_MOVE_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>