在一般的加工程序中,G代码移动距离可以直接用数值指令,如G00 X100.0。但在用户宏程序中,数值可以直接指定,也可以用变量号指定。因此,变量是指可以在宏主体的地址上代替具体数值,在调用宏主体时再用引数进行赋值的符号,例如#i(i=1,2,3,…)。使用变量可以使宏程序具有通用性。宏主体中可以使用多个变量,以变量号码进行识别。
1.变量形式
变量是用符号#或R后面加上变量号码所构成的,即#i或R i(i=1,2,3,…),例如:#5或R5、#109.或R109;也可以用公式的形式指令,但此时必须用括号把公式括起来,即#[表达式]或R[表达式]。例如:#[#1+#2-12]或R[R1+R2-12]。
2.变量的引用
在程序内引用变量时,是在地址符后指定变量号。例如:F#33,当#33=1.5时,与F1.5相同;Z-#18,当#18=20.0时,与Z-20.0指令相同。
用公式指定时,在公式的前、后要加上括号。例如:G01 X[#1+#2]F#3。
注意:
1)作为地址符的O、N、/等,不能引用变量。例如:O#27、N#1等都是错误的。
2)用程序定义变量值时,可以省略小数点。没有小数点变量的数值单位为各地址字的最小设定单位。因此,传递没有小数点的变量,将会因机床的系统设置不同而发生变化。在宏程序调用中使用小数点可以提高程序的兼容性。
3)被引用的变量值按各地址的最小设定单位进行四舍五入。例如:对于最小设定单位为1/1000的CNC,当#1为12.3456,若执行G00 X#1,相当于G00 X12.346;若要改变变量值的符号引用时,要在“#”符号前加上“-”号,例如:G00 X-#1。
3.未定义变量
在FANUC 0i数控系统中,#0通常为空变量,即没有定义变量值的状态。此状态可以读取但不能写入。空变量不等于变量值为0的状态。
注意:(www.xing528.com)
1)引用未定义变量时,连同地址字无效。例如:#1为0、#2为<空>时,若执行G00X#1 Z#2时,为G00 X0。
2)在运算式中,除了被<空>置换的场合以外,未定义变量与数值0相同。
3)在等于或不等于这些条件的比较式中,<空>与零不同。例如:#1=<空>、#2=100、#3=50,若执行#3=#1+#2以后,#3=100。
4.变量的种类
按变量号码可将变量分为局部变量、公共变量、系统变量,其用途和性质都不同,见表3-1
表3-1 变量的种类和功能
(1)局部变量(自变量)所谓局部(自变量)变量就是在宏程序中局部使用的变量。换句话说,在某一时刻调出的宏程序中所使用的局部变量#1和另一时刻调用的宏程序(无论与前一个宏程序相同还是不同)中所使用的#1是不同的。因此,在多重调用时,当宏指令地址A调用宏指令地址B的情况下,也不会将A中的变量破坏。
(2)公共变量(全局变量)与局部变量相反,公共变量(全局变量)是在主程序以及调用的子程序中通用的变量。因此,在某个宏程序中运算得到的公共变量(全局变量)的结果#i可以用到别的用户宏程序中。
(3)系统变量 系统变量是根据用途而被固定的变量。
在宏程序中要改变某些模态信息,可以先保存进入时的模态信息,结束时再恢复状态。这样可以使数控系统保持该宏程序运行前后模态信息的一致。这样的宏程序具有很好的安全性,即使不是该宏程序的编写者也可以放心地使用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。