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 |
攻丝循环指令 |
关键词 | 含义 |
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>