|
|
%
O889 (反向沉头孔主程序-螺旋/分层双模式)
T3 M6
G0 G90 G54 X60.Y60. M3 S1200
G43 H3 Z100.M8
F2000
; 调用说明(最终版:B=厚度,R<Z,刀具直径<D):
; A=沉头直径 B=T型刀厚度 D=刀杆直径(必须<A)
; R=名义起点Z Z=名义终点Z(必须满足 R < Z)
; Q=每层上刀量 U=铣削进给 E=模式(1=螺旋 2=分层)
G66 P8002 A50 B8 D10 R-27 Z-1 Q0.5 U1500 E1.
X0.Y0.
G67
M5
M9
G91 G28 G0 Z0.
M30
%
%
O8002 (==FANXING CHENTOU== T型刀版-校验逻辑精准修正)
#33=1
IF [#33 EQ 0] GOTO 99
#3003=1
; ===================== 参数定义(最终版) =====================
; A=#1(沉头直径) B=#2(T型刀厚度) D=#7(刀杆直径)
; R=#18(名义起点Z) Z=#26(名义终点Z)
; Q=#17(每层上刀量) U=#21(铣削进给) E=#8(模式)
IF[#9 EQ #0] THEN #9=#4109
#15=#9
IF[#21 EQ #0] THEN #21=#9
IF[#24 EQ #0] THEN #24=#5001
IF[#25 EQ #0] THEN #25=#5002
#6=#5003
; ===================== 参数合法性校验(核心修正:刀具直径报警) =====================
IF[#1 LE 0.] THEN #3000=1 (A ER:沉头直径≤0,请输入正数)
IF[#2 LE 0.] THEN #3000=2 (B ER:T型刀厚度≤0,请输入正数)
IF[#7 GE #1] THEN #3000=3 (D/A ER:刀具直径≥沉头直径,会撞刀,无法加工)
IF[#7 LT 0.] THEN #3000=4 (D ER:刀具直径<0,请输入正数)
; 强化R<Z报警
IF[#18 GE #26] THEN #3000=5 (R/Z ER:名义R值≥Z值!R必须小于Z,检查参数)
IF[#17 LE 0.] THEN #3000=6 (Q ER:每层上刀量≤0,请输入正数)
IF[#4003 EQ 91] THEN #3000=7 (G91 ER:禁止增量坐标,请切换G90)
IF[#8 NE 1. AND #8 NE 2.] THEN #3000=8 (E ER:仅支持E1(螺旋)/E2(分层)模式)
; ===================== 加工半径+实际RZ计算(核心不变) =====================
#20=[#1 - #2]/2 (加工半径=(沉头直径-T型刀厚度)/2)
#30=#18 - #2 (实际起点=名义R-B → -27-8=-35)
#31=#26 - #2 (实际终点=名义Z-B → -20-8=-28)
; ===================== 模式分支 =====================
IF[#8 EQ 1.] GOTO 10
IF[#8 EQ 2.] GOTO 20
; ===================== E1:螺旋铣削模式 =====================
N10
#10=#30 (初始Z=实际起点-35)
G0 G90 X#24 Y#25
Z[#10 - 2.] (实际起点下方2mm安全位-37)
G01 Z#10 F#9
G91 G03 X#20 Y0. I[#20/2] J0. F#21
G90
WHILE[#10 LT #31 - 0.01] DO1
#10=#10 + #17
IF[#10 GT #31] THEN #10=#31
G03 G90 I[-#20] Z#10 F#21
END1
G03 G90 I[-#20] F#21
G91 G03 X[-#20] Y0. I[-#20/2] J0. F#21
G90
GOTO 80
; ===================== E2:分层铣削模式 =====================
N20
#10=#30 (初始Z=实际起点-35)
G0 G90 X#24 Y#25
Z[#10 - 2.] (实际起点下方2mm安全位-37)
G01 Z#10 F#9
WHILE[#10 LT #31 - 0.01] DO2
G91 G03 X#20 Y0. I[#20/2] J0. F#21
G90
G03 G90 I[-#20] F#21
G91 G03 X[-#20] Y0. I[-#20/2] J0. F#21
G90
#10=#10 + #17
IF[#10 GT #31] THEN #10=#31
G01 G90 Z#10 F#9
END2
G91 G03 X#20 Y0. I[#20/2] J0. F#21
G90
G03 G90 I[-#20] F#21
G91 G03 X[-#20] Y0. I[-#20/2] J0. F#21
G90
; ===================== 通用抬刀段 =====================
N80
G01 G90 Z[#18 + 10.] F#9
G0 Z#6 F#15
; ===================== 程序结束 =====================
N99
#24=#0
#25=#0
M99
%
|
|