第三章 变量赋值与运算

各位同行,今天我们来聊聊宏程序里最基础、也最核心的一块——变量赋值与运算。说实话,我刚接触宏程序那会儿,觉得这东西不就是给个数字嘛,有啥好学的?后来才发现,这里面的门道可真不少。

3.1 变量的赋值方式

变量赋值,说白了就是把一个值存到变量里。在FANUC系统里,我们常用的是#100到#199、#500到#999这些公共变量。我个人习惯把#100系列用在临时计算上,#500系列用在需要断电保持的参数上。

赋值的基本格式很简单:

#100 = 50.0        ; 直接赋值
#101 = #100        ; 变量间赋值
#102 = #100 + 20   ; 表达式赋值

嗯,这里要注意一点——变量名和等号之间不要留空格。我曾经有个徒弟,写程序时习惯性加了个空格,结果机床报警报了半天,最后发现是这么个低级错误。

⚠️ 避坑指南: 我曾经在调试一台卧加时,发现#500系列变量怎么赋值都不对。后来查了半天,原来是系统参数里把#500系列锁住了。所以啊,用#500系列前,先确认一下参数#6031和#6032的设置。

3.2 算术运算

算术运算这块,大家应该都不陌生。加减乘除,跟数学课上学的差不多。但用在宏程序里,有些细节你得留个心眼。

运算符 含义 示例 说明
+ 加法 #1 = #2 + 10 把#2的值加10赋给#1
- 减法 #1 = #2 - 5 把#2的值减5赋给#1
* 乘法 #1 = #2 * 2.5 把#2的值乘以2.5赋给#1
/ 除法 #1 = #2 / 3 把#2的值除以3赋给#1

你想想看,如果我要算一个圆的等分点坐标,用算术运算就特别方便:

#101 = 360 / 8        ; 每份角度45度
#102 = 50 * SIN[45]   ; X坐标计算
#103 = 50 * COS[45]   ; Y坐标计算
💡 个人经验: 我在做大型模具加工时,经常要用到变量运算来算刀具补偿。比如#100 = #100 + 0.5,这种自加运算在循环加工中特别好用。但要注意,别让变量值超出机床行程范围,否则撞刀了可别怪我没提醒你。

3.3 逻辑运算

逻辑运算,说白了就是做判断用的。AND、OR、NOT这三个家伙,在条件判断里可是主力军。

先说说AND(与运算):

IF [#1 GT 10] AND [#1 LT 20] THEN GOTO 100

这段代码的意思是:如果#1大于10并且小于20,就跳转到N100。两个条件都得满足,缺一不可。

OR(或运算)就宽松多了:

IF [#1 EQ 0] OR [#1 EQ 999] THEN #2 = 1

只要#1等于0或者等于999,就把#2设为1。我在项目中遇到过这种情况——有时候刀具磨损补偿值要么是0(新刀),要么是999(极限磨损),用OR判断就特别省事。

NOT(非运算)是取反的意思:

IF NOT [#1 EQ 0] THEN GOTO 200

如果#1不等于0,就跳转。说白了就是「不是这个条件」就执行。

🔑 核心要点:
  • AND:所有条件都成立才为真
  • OR:只要有一个条件成立就为真
  • NOT:把真变假,把假变真

3.4 实战中的组合应用

光说不练假把式。我给大家看一个我实际用过的例子——一个简单的深度控制循环:

#100 = 0        ; 当前深度
#101 = -50      ; 目标深度
#102 = 5        ; 每层切深

N10 #100 = #100 - #102
IF [#100 GT #101] AND [#100 GT -50] THEN GOTO N10
G0 Z#100

这段代码的逻辑是:每次往下切5毫米,直到达到-50毫米的深度。用AND判断是为了防止过切——既不能超过目标深度,也不能超过极限位置。

⚠️ 重要提醒: 逻辑运算里,比较符号一定要写对。GT是大于,LT是小于,EQ是等于。我见过有人把GT写成>,结果机床直接报警。记住,宏程序里不能用数学符号,得用字母缩写。

3.5 常见错误与调试技巧

说到调试,我给大家分享几个我踩过的坑:

  • 变量未初始化:用之前先赋值,否则系统默认是空值,运算会出问题
  • 除零错误:做除法前,先判断分母是不是0
  • 精度问题:浮点数运算会有微小误差,判断相等时用范围判断更稳妥
; 错误写法
IF [#100 EQ 0.1] THEN ...   ; 可能永远不成立

; 正确写法
IF [ABS[#100 - 0.1] LT 0.001] THEN ...  ; 用范围判断

嗯,说到这儿,我想起一个事儿。有次我在调试一台五轴机,发现变量运算结果总是不对。折腾了半天,最后发现是系统参数里把小数点位数设成了整数。所以啊,变量运算前,先确认系统参数设置,这个习惯能帮你省不少事。

📌 我的建议: 刚开始学宏程序时,可以在程序开头加一段变量初始化代码。把所有要用到的变量都赋个初值,这样既清楚又安全。我现在的每个程序开头都会写这么一段,已经成习惯了。

好了,这一章的内容就到这里。变量赋值和运算看似简单,但用好了,能让你写出的宏程序既高效又可靠。下一章我们聊聊条件判断和循环控制,到时候再给大家分享更多实战经验。