宏指令编程
数控系统为用户配备了强有力的类似于高级语言的宏程序功能,用户可以使用变量进行算术运算、逻辑运算和函数的混合运算,此外宏程序还提供了循环语句、分支语句和子程序调用语句,利于编制各种复杂的零件加工程序,减少乃至免除手工编程时进行繁琐的数值计算,以及精简程序量。
一 变量
使用宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板操作改变。
#1=#2+100;
G01 X#1 F300;
变量的表示
变量用变量符号#和后面的变量号指定。 例如:#1
表达式可以用于指定变量号。此时,表达式必须封闭在括号中。 例如:#[#1+#2-12]
变量的类型
变量根据变量号可以分成四种类型。
#0 | 空变量 | 该变量总是空,没有值能赋给该变量。 |
#1—#33 | 局部变量 | 局部变量只能用在宏程序中存储数据,例如,运算结果。 |
#100—#199 #500—#999 | 公共变量 | 公共变量在不同的宏程序中的意义相同。当断电时,变量#100—#199被清除,变量#500—#999即使断电也不丢失。 |
#1000— | 系统变量 | 系统变量用于读和写 CNC 的各种数据 |
变量的引用
在地址后指定变量号即可引用其变量值。当用表达式指定变量时,要把表达式放在括号中。 例如:G01X[#1+#2]F#3;
被引用变量的值根据地址的最小设定单位自动地舍入。 例如:
当系统的最小输入增量为 1/1000mm 单位,指令 G00X#1,并将12.3456 赋值给变量#1,实际指令值为 G00X12.346;。 改变引用变量的值的符号,要把负号(-)放在#的前面。 例如:G00X-#1; 当引用未定义的变量时,变量及地址字都被忽略。
例如:
当变量#1 的值是 0,并且变量#2 的值是空时,G00X#1 Y#2 的执行
限制 程序号,顺序号和任选程序段跳转号不能使用变量。
例: 下面情况不能使用变量:
O#1;
/#2G00X100.0;
N#3Y200.0;
二 运算符
1. 算术运算符:+,-,*,/
2. 条件运算符:EQ(=),NE(≠),GT(>),GE(≥),LT(<),LE(≤)
3. 逻辑运算符:AND,OR,NOT
4. 函数:SIN,ASIN,COS,ACOS,TAN,ATAN,SQRT,ABS,ROUND,FIX,FUP,IN,EXP
5. 表达式:用运算符连接起来的常数,宏变量构成表达式。
例如:175/SQRT[2] * COS[55 * PI/180 ];
#3*6 GT 14;
三 转移和循环
在程序中,使用 GOTO 语句和 IF 语句可以改变控制的流向。有三种转移和循环操作可供使用:
转移和循环 GOTO 语句(无条件转移)
IF 语句(条件转移:IF…THEN…)
WHILE 语句(当…时循环)
1. 无条件转移(GOTO 语句)
转移到标有顺序号 n 的程序段。当指定 1 到 99999 以外的顺序号时,出现 P/S 报警 No.128cnc编程代码大全。可用表达式指定顺序号。
GOTOn; n:顺序号(1 到 99999)
例:
GOTO 1;
GOTO #10;
2. 条件转移(IF 语句)
IF 之后指定条件表达式。
IF[<条件表达式>]GOTO n
如果指定的条件表达式满足时,转移到标有顺序号 n 的程序段。如果指
定的条件表达式不满足,执行下个程序段。
IF[<条件表达式>]THEN
如果条件表达式满足,执行预先决定的宏程序语句。只执行一个宏程序
语句。
如果#1 和#2 的值相同,0 赋给#3。
IF[#1 EQ #2] THEN #3=0;
说明
条件表达式
条件表达式必须包括运算符。运算符插在两个变量中间或变量和常数中
间,并且用括号([,])封闭。表达式可以替代变量。
运算符
运算符由 2 个字母组成,用于两个值的比较,以决定它们是相等还是一
个值小于或大于另一个值。注意,不能使用不等号。
EQ(=),NE(≠),GT(>),GE(≥),LT(<),LE(≤)
示例程序
下面的程序计算数值 1~10 的总和
○9500;
#1=0;……………………………存储和的变量初值
#2=1;……………………………被加数变量的初值
N1 IF[#2 GT 10]GOTO 2;………当被加数大于 10 时转移到 N2
#1=#1+#2;………………………计算和
#2=#2+#1;………………………下一个被加数
GOTO 1;…………………………转到 N1
N2 M30;…………………………程序结束
3. 循环(WHILE语句)
在 WHILE 后指定一个条件表达式。当指定条件满足时,执行从 DO 到END 之间的程序。否则,转到 END 后的程序段。
说明
当指定的条件满足时,执行 WHILE 后从 DO 到 END 之间的程序。否则,转而执行 END 之后的程序段。与 IF 语句的指令格式相同。DO 后 的数和 END 后的数为指定程序执行范围的标号,标号值为 1,2,3。 若用 1,2,3 以外的值会产生 P/S 报警 No.126。
嵌套
在 DO—END 循环中的标号(1 到 3)可根据需要多次使用。但是,当程序有交叉重复循环(DO 范围重叠)时,出现 P/S 报警 No.124。
示例程序
下面的程序计算数值 1 到 10 的总和。
四 宏程序调用
用以下方法调用宏程序:
宏程序调用 非模态调用(G65)
模态调用(G66,G67)
1. 非模态调用(G65)
当指定 G65 时,以地址 P 指定的用户宏程序被调用。数据(自变量)
能传递到用户宏程序体中。
说明
调用
·在 G65 之后,用地址 P 指定用户宏程序的程序号。
·当要求重复时,在地址 L 后指定从 1 到 9999 的重复次数。省略 L 值 时,认为 L 等于 1。
·使用自变量指定,其值被赋值到相应的局部变量。
自变量指定
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论