第四章:算术运算在宏程序中的实现
各位工程师朋友,今天我们来聊聊宏程序里的算术运算。说实话,这部分内容看着基础,但真正用好的没几个。我见过太多人只会用G01、G02这些基本指令,一碰到变量计算就头疼。其实说白了,宏程序的核心就是让机床自己算、自己判断、自己干活。
4.1 加减乘除:最基础的运算
先看个最简单的例子。你要在工件上钻一排孔,间距10mm,共5个孔。传统写法你得写5行G代码。用宏程序呢?
#1 = 0 ; 起始位置
#2 = 10 ; 间距
#3 = 1 ; 计数器
WHILE [#3 LE 5] DO1
G90 G00 X#1 Y0
G81 R2 Z-10 F100
#1 = #1 + #2 ; 加法运算
#3 = #3 + 1 ; 计数器加1
END1
看到没?#1 = #1 + #2 这一行,就是加法。我刚开始学的时候总觉得别扭——怎么变量还能自己加自己?后来想明白了,这就是把右边的计算结果赋给左边。
#100 = #100 + #101,这样一眼就能看出哪个是累加器。
减法、乘法、除法同理:
#10 = #20 - #30 ; 减法
#10 = #20 * #30 ; 乘法
#10 = #20 / #30 ; 除法
这里有个坑,我踩过好几次。除法时,如果分母是0,机床直接报警停机。所以做除法前,一定要检查分母:
IF [#30 EQ 0] GOTO 100
#10 = #20 / #30
...
N100 #3000 = 100 (分母为零,程序终止)
4.2 取余运算:被忽视的好工具
取余运算,符号是MOD。它返回的是除法后的余数。你可能觉得这玩意儿没用,但我在项目中用它解决过不少实际问题。
举个例子:你要在圆周上均布6个孔。怎么判断当前是不是第6个孔?用取余:
#1 = 1 ; 当前孔号
#2 = 6 ; 总孔数
WHILE [#1 LE #2] DO1
; 加工第#1个孔
IF [#1 MOD 2 EQ 0] THEN
; 偶数孔,做特殊处理
ENDIF
#1 = #1 + 1
END1
我曾经做过一个项目,需要在每加工3个孔后执行一次刀具检测。用MOD就特别方便:
IF [#100 MOD 3 EQ 0] THEN
; 执行刀具检测
ENDIF
#10 = #20 MOD #30 要求#30必须是正整数。我曾经在0i系统上吃过亏,用了负数做模数,结果报警了。
4.3 三角函数:让机床会算角度
三角函数在宏程序里太常用了。尤其是做斜面加工、圆弧插补、坐标旋转时,没有三角函数寸步难行。
常用的有:SIN(正弦)、COS(余弦)、TAN(正切)、ASIN(反正弦)、ACOS(反余弦)、ATAN(反正切)。
看个实际例子:你要在直径100mm的圆上,每隔30度钻一个孔。共12个孔。用三角函数算坐标:
#1 = 50 ; 半径
#2 = 0 ; 起始角度
#3 = 30 ; 角度增量
WHILE [#2 LT 360] DO1
#10 = #1 * COS[#2] ; X坐标
#11 = #1 * SIN[#2] ; Y坐标
G90 G00 X#10 Y#11
G81 R2 Z-10 F100
#2 = #2 + #3
END1
这里要注意,宏程序里的角度单位是度,不是弧度。我见过有人把数学里的弧度直接搬过来用,结果孔位全偏了。
#1 = ATAN[#2 / #3],结果发现当#3为0时直接报警。后来我改成 #1 = ATAN[#2] / [#3] 的形式,先判断分母是否为0。
4.4 运算优先级与括号
宏程序的运算优先级和数学一样:先乘除后加减,括号优先。但我的建议是——多用括号,别省。
看这两个表达式:
#10 = #1 + #2 * #3 ; 先乘后加
#10 = [#1 + #2] * #3 ; 先加后乘
结果完全不同。我习惯把所有运算都用括号括起来,哪怕优先级是对的。这样别人看你的程序,一眼就能明白运算顺序。
| 运算符 | 功能 | 示例 |
|---|---|---|
| + | 加法 | #1 = #2 + #3 |
| - | 减法 | #1 = #2 - #3 |
| * | 乘法 | #1 = #2 * #3 |
| / | 除法 | #1 = #2 / #3 |
| MOD | 取余 | #1 = #2 MOD #3 |
| SIN | 正弦 | #1 = SIN[#2] |
| COS | 余弦 | #1 = COS[#2] |
| TAN | 正切 | #1 = TAN[#2] |
| ATAN | 反正切 | #1 = ATAN[#2] |
4.5 知识体系总览
下面这张图,是我自己总结的算术运算知识结构。你照着这个框架去学,不会乱。
这张图把算术运算分成了四大块。你仔细看,加减乘除是基础,取余是技巧,三角函数是进阶,优先级是规矩。我建议你从基础开始练,每练熟一个分支,再往下走。
#1 = 10 + 20,然后看变量显示对不对。这一步能帮你建立信心。
好了,算术运算这部分就讲到这里。记住一句话:宏程序里的算术,就是让机床替你算。你只要把逻辑写对,剩下的交给机床。下次遇到重复性的加工,别傻傻地写几十行G代码了,试试用宏程序,你会爱上这种感觉的。