去年接了一批法兰盘,12 种规格,每种上面均布 6 个 φ12 的孔。用 CAM 编 12 遍?太蠢了。我用宏程序写了一个通用钻孔子程序,换规格只改两个变量,十分钟搞定。
变量的三种类型
FANUC 里变量分三类,搞清楚这个再往下写:
#100 = 50.0 (局部变量,断电清零)
#500 = 100.0 (公共变量,断电保留)
#1000 = 1 (系统变量,读写机床状态)我日常编程只用 #100-#199 局部变量,够用且安全。公共变量 #500-#999 适合存刀具寿命、工件计数这类要跨程序保留的数据。
算术运算实操
宏程序支持加减乘除、三角函数、平方根。看个真实例子——圆周均布孔的坐标计算:
#100 = 6 (孔数)
#101 = 40.0 (分布圆半径)
#102 = 0 (起始角度)
WHILE [#102 LT 360.] DO 1
#103 = #101 * COS[#102]
#104 = #101 * SIN[#102]
G90 G81 X#103 Y#104 Z-15. R3. F120
#102 = #102 + 360. / #100
END 1这段代码用三角函数算出每个孔的坐标,孔数和半径一改就完事。比手动算 6 个坐标快多了,还不容易出错。
赋值的几种写法
赋值很简单:#100 = 50.0。但有几个坑要注意:
第一,等号两边不能有空格写成 #100=50 而非 #100 = 50——有些老系统不认带空格的写法。FANUC 0i 系列两种都行,但广数 980 就挑食。
第二,变量值不能超过系统限制。FANUC 单精度浮点,整数部分最大 8 位。你写 #100 = 999999999 直接报警。
第三,变量可以用表达式嵌套:
#105 = [#100 + #101] * 2.0 / #102方括号可以嵌套好几层,但别写太深,写深了自己都看不懂。我最多嵌两层,再复杂就拆成几步。
现场用法:刀具磨损补偿
批量加工时我把磨损量存在公共变量里:
#500 = 0.0 (X向磨损)
#501 = 0.0 (Y向磨损)
G01 X[100. + #500] Y[50. + #501] F400操作工只需在 MDI 里改 #500 的值,不用动程序。这招在精加工时特别好用,省得反复改程序试切。
宏程序的门槛不高,但思维要变——从"写死坐标"变成"定义关系"。写多了自然就顺手了。