数控宏程序资料.pdf
君子忧道不忧贫。——孔丘
宏程序
数控程序中含有变量的程序称为宏程序。
虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许
使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更
简便。例如型腔加工宏程序和用户开发固定循环。使用时,加工程序
可用一条简单指令调出用户宏程序,和调用子程序完全一样。
1.1变量
普通加工程序直接用数值指定G代码和移动距离;例如,G01和X100.0。
使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序
或用MDI面板操作改变。
#1=#2+100;
G01X#1F300;
说明变量的表示
一般编程方法允许对变量命名,但用户宏程序不行。变量用变量符号(#)
和后面的变量号指定。
1
君子忧道不忧贫。——孔丘
例如:#1
表达式可以用于指定变量号。此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]
变量的类型
变量根据变量号可以分成四种类型。
变量值的范围
局部变量和公共变量可以为0值或下面范围中的值:
-1047到-10-29
或
10-29到1047
如果计算结果超出有效范围,则发出P/S报警No.111
小数点的省略当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1的实际值是123.000。
2
君子忧道不忧贫。——孔丘
变量的引用
在地址后指定变量号即可引用其变量值。当用表达式指定变量时,要把表达式放在括
号中。
例如:G01X[#1+#2]F#3;
被引用变量的值根据地址的最小设定单位自动地舍入。
例如:
当系统的最小输入增量为1/1000mm单位,指令G00X#1,并将
12.3456赋值给变量#1,实际指令值为G00X12.346;。
改变引用变量的值的符号,要把负号(—)放在#的前面。
例如:G00X—#1;
当引用未定义的变量时,变量及地址字都被忽略。
例如:
当变量#1的值是0,并且变量#2的值是空时,G00X#1Y#2的执行
结果为G00X0;。
双轨迹(双轨迹控制)的公共变量
对双轨迹控制,系统为每一轨迹都提供了单独的宏变量。但是,根
据参数No.6036和6037的设定,某些公共变量可同时用于两个轨
迹。
未定义的变量
当变量值未定义时,这样的变量成为“空”变量。变量#0总是空变量。
它不能写,只能读。
(a)引用
当引用一个未定义的变量时,地址本身也被忽略。
3
君子忧道不忧贫。——孔丘
(b)运算
除了用空赋值以外,其余情况下空与0相同。
4
君子忧道不忧贫。——孔丘
当变量值是空白时,变量是空。
5
君子忧道不忧贫。——孔丘
符号********表示溢出(当变量的绝对值大于时)或下
溢出(当变量的绝对值小于0.0000001时)。
限制程序号,顺序号和任选程序段跳转号不能使用变量。
例:
下面情况不能使用变量:
○#1;
/#2G00X100.0;
N#3Y200.0;
1.2系统变量
系统变量用于读和写NC内部数据,例如,刀具偏置值和当前位置数据。
但是,某些系统变量只能读。系统变量是自动控制和通用程序开发的基础。说明接口
信号是可编程机床控制器(PMC)和用户宏程序之间交换的信号。
刀具补偿值用系统变量可以读和写刀具补偿值。
可使用的变量数取决于刀补数,是否区分外形补偿和磨损补偿以及是否区分刀长补偿
和刀尖补偿。当偏置组数小于等于200时,也可使用#2001~#2400。
6
君子忧道不忧贫。——孔丘