在宏程序中,可以使用多个变量,这些变量可以通过变量编号进行识别。以下是宏程序中使用多个变量的方法:
变量的表示
变量可以用符号``或`@`后面加上变量编号来表示,例如:`1`、`109`、`1005`。也可以使用`[]`的形式,例如:`[100]`、`[1001-1]`、`[6/2]`。
使用符号`@`加上变量编号构成的变量称为全局变量,但一般不提倡在用户宏程序中使用。
变量的引用
在地址符后的数值可以用变量置换。例如:`F33`表示当`33=1.5`时,与`F1.5`相同;`Z-18`表示当`18=20.0`时,与`Z-20.0`相同。
注意,作为地址符的`O`、`N`、`/`等不能引用变量,例如:`O27`、`N1`是错误的。
未定义变量
尚未被定义的变量被称为空(VACANT),变量`0`和`@0`始终为空,经常被用作空变量使用。
变量的类型及功能
变量号从`1`到`33`是局部变量,只能在宏程序中存储数据,断电时数值被清除,调用宏程序时可重新赋值。
变量号从`100`到`199`是井变量(局部变量),断电时数据被清除,但在宏程序中被视为公共变量。
变量号从`500`到`999`是公共变量,不同的宏程序中意义相同,断电时数据被保存不会丢失。
变量号从`1000`开始是系统变量,用于读和写CNC运行时的各种数据,例如刀具的当前位置和补偿值。
示例
```fanuc
% macro sortuntil(n=10)
% do i = 1 %to n
% let data = i
% do %until (&data eq &seq(i))
% let seq(i) = data
% let data = i
% end
% end
% endmacro
% main
% set seq(1) = 3
% set seq(2) = 1
% set seq(3) = 4
% set seq(4) = 2
% call sortuntil(4)
% % display seq
% endmain
```
在这个示例中,宏`sortuntil`使用了一个局部变量`i`和一个数组`seq`,通过循环和条件判断对数组进行排序。
建议
在使用宏程序时,建议尽量使用局部变量,以减少全局变量的使用,避免不同宏程序间的数据冲突。
对于需要在多个宏程序间共享的数据,可以考虑使用公共变量或系统变量。
在编写宏程序时,注意变量的定义和引用方式,避免未定义变量和错误的变量引用。