独立数控机床维修服务 · 技术资料与故障排查 手机 / 微信 18025212569

FANUC宏程序空值与零:为什么补一句“加0”会改变缺省参数的含义?

发布于

依据16i/18i-MB宏程序规则,区分未定义变量、数值零、直接赋值和算术转换。用自拟位置与判断表说明缺省输入应在运算前识别,不能用非零判断代替是否提供参数。

文章目录
  1. 本版规则:空值不是另一种写法的0
  2. 先做运算,可能丢掉“没有提供”的信息
  3. 路径后果可以相差很大

宏程序允许省略一个输入,与允许输入数值0,是两件不同的事。若程序把两者混在一起,原本表示“这个轴不参与”的空输入,可能被转换成“这个轴的目标坐标就是零”。

本版规则:空值不是另一种写法的0

FANUC 16i/18i-MB操作手册B-63534EN/02,§15.1第394–395页、§15.5第414页(原厂手册公开镜像)说明:#0恒为空值;空变量直接作为轴地址值时,该地址被忽略;直接赋值能保留空状态,参加算术则按0处理。EQ、NE可以区分空值与0,其他比较把空值按0处理。本文只讨论本版Custom Macro语义,不假定其他系列的变量寿命相同。

先做运算,可能丢掉“没有提供”的信息

自拟输入变量#1代表一个可选的Y绝对坐标。在读取输入后直接令#2=#1,若#1为空,#2仍为空;若为了“统一格式”改成#2=#1+0,#2就成为数值0。算术结果看似没有改变数值,却已经改变了输入的状态。

输入状态#1 EQ #0#1 NE 0#1+0的结果
未定义成立成立数值0
明确输入0不成立不成立数值0
明确输入12不成立成立数值12

所以“NE 0成立”不能证明调用者提供了一个非零输入:未定义也会让这个判断成立。缺省状态应在乘倍率、加偏置或取数学函数之前识别,否则计算后的0已无法说明它来自省略还是明确输入。

路径后果可以相差很大

以下为离线几何示意,不是切削程序。假设当前XY=(10,37) mm,采用绝对坐标的直线运动,X目标为32,Y来自#2;没有其他坐标变换或刀补。#2为空时不指定Y,终点为(32,37),长度22 mm;#2为0时终点变为(32,0),长度√(22²+37²)≈43.046 mm。

差异不仅是路径变长,还包括多出37 mm的Y向位移。因此宏接口应先区分“缺省”“明确零”“其他数值”,再按该输入的业务含义决定是否允许它。不能在本来允许零坐标的接口里简单禁止0,也不能用加0把缺省值偷偷改成有效坐标。更多宏程序主题见OPTION栏目。

相关技术资料

FANUC可选旋转轴控制:绝对指令的正负号如何指定转向FANUC方向相关高速位置开关:同一坐标为何可能出现不同输出?FANUC柔性同步控制:速度追平与相位对齐是两个条件