|
|
O0002(G65键槽分层铣削主程序 - 支持坐标旋转)
G91G28 Z0.(Z轴回参考点)
M6 T1(更换1号刀具)
G90 G54 G0 X0 Y0(快速定位到工件坐标系原点)
G43 H1 Z100.(刀具长度补偿,安全高度100mm)
M3 S3000(主轴正转,转速8000rpm)
(设置坐标旋转 - 以X0Y0为中心旋转45度)
G68 X0 Y0 R0.
(调用键槽铣削宏程序)
(参数说明:A=圆弧圆心距离(直线段长度),B=键槽宽度,D=刀具直径,Q=每层切深,R=初始平面)
(X=键槽中心X,Y=键槽中心Y,Z=最终深度,F=进给速度)
G65 P9002 A30 B20 D10 Q0.5 R0. X0 Y0 Z-10. F1200
(取消坐标旋转)
G69
(程序结束处理)
G0 Z100.(快速抬刀到安全高度)
M5(主轴停止)
M9(关闭切削液)
G28 Z0.(Z轴回参考点)
G28 X0 Y0.(X/Y轴回参考点)
M30(程序结束并复位)
%
O9002(键槽分层铣削宏程序)
(参数对应关系:字母参数→系统变量)
(A→#1=圆弧圆心距离(直线段长度),B→#2=键槽宽度,D→#7=刀具直径)
(Q→#17=每层切削深度,R→#18=初始Z平面)
(X→#24=键槽中心X坐标,Y→#25=键槽中心Y坐标,Z→#26=最终深度,F→#9=进给速度)
(参数验证与错误检查)
IF[#7 GE #2] THEN #3000=1(错误1:刀具直径不能大于等于键槽宽度)
IF[#26 GE #18] THEN #3000=2(错误2:最终深度应小于初始平面)
IF[#17 LE 0] THEN #3000=3(错误3:每层切深必须大于0)
IF[#9 LE 0] THEN #3000=4(错误4:进给速度必须大于0)
(计算中间变量)
#510=#18(当前切削深度,从初始平面开始)
#511=#24(保存键槽中心X坐标)
#512=#25(保存键槽中心Y坐标)
#513=#1/2(直线段长度的一半)
#514=[#2-#7]/2(宽度方向单边切削量)
#515=#9(保存进给速度)
(快速定位到键槽起点)
G90 G0 X[#511+#513] Y#512(移动到键槽直线段的一端)
M8(开启切削液)
G0 Z[#18+2](快速下刀到初始平面上方2mm处)
(分层铣削循环)
WHILE[#510 GT #26] DO1(循环条件:当前深度大于最终深度)
G90 G1 Z#510 F[#515 * 0.5](工进下刀到当前层深度,下刀速度减半)
(移动到宽度方向的一侧)
G1 Y[#512+#514] F#515(移动到键槽宽度方向的一侧)
(相对坐标模式下进行一层切削)
G91 G1 X-[#1] F#515(向左切削直线段长度,距离=圆弧圆心距离)
G3 Y-[#2-#7] R[[#2-#7]/2] F#515(下端圆弧过渡,半径=(宽度-刀具直径)/2)
G1 X[#1] F#515(向右返回切削直线段)
G3 Y[#2-#7] R[[#2-#7]/2] F#515(上端圆弧过渡,完成一圈)
G90(切换回绝对坐标模式)
(更新深度值,准备下一层切削)
#510=#510-#17
IF[#510 LT #26] THEN #510=#26(防止过切,确保不超过最终深度)
END1
(底部光刀加工 - 确保底面加工质量)
G90 G1 Z#26 F[#515 * 0.5](确保到达最终深度)
G1 Y[#512+#514] F#515(移动到底面切削起点)
G91 G1 X-[#1] F[#515 * 0.8](底面光刀,降低进给速度)
G3 Y-[#2-#7] R[[#2-#7]/2] F[#515 * 0.8]
G1 X[#1] F[#515 * 0.8]
G3 Y[#2-#7] R[[#2-#7]/2] F[#515 * 0.8]
G90
(退刀和安全处理)
G90 G1 Y#512 F#515(退回键槽中心Y位置)
G0 Z[#18+10](快速抬刀到初始平面上方10mm安全高度)
M99(宏程序结束,返回主程序)
%
|
|