宏程序的运算指令类似于数学运算,它包括算术运算指令、逻辑运算指令、函数运算指令、控制转移指令等。
1.运算指令
常见的运算指令见表3-2。
表3-2 运算指令

(1)运算的优先级 宏程序数学运算的优先次序为:函数(SIN、COS、ATAN等)→乘、除类运算(*、÷、AND等)→加、减类运算(+、-、OR、XOR等)。
例如:#1=#2+#3*SIN[#4]或R1=R2+R3*SIN[R4];运算顺序为:函数SIN[#4]→乘#3*…→加#2+…。
(2)括号的嵌套 当要变更运算的优先顺序时,使用括号。包括函数的括号在内,括号最多可用到5重,超过5重时则出现报警。
例如:#1=SIN[[[#2+#3]*#4+#5]*#6]。
(3)角度单位 在FANUC数控系统和SIEMENS数控系统中,角度以度(°)为单位,如:90°30′表示成90.5°;而在HNC—21/22M数控系统中角度以弧度(rad)为单位,因此在进行三角函数运算时,应将角度转换为弧度,如计算正弦30°的值,应书写成SIN[30*PI/180](PI=π)。
2.控制语句
在程序中使用GOTO、IF语句(条件转移,如果…)、WHILE语句(循环,当…)。
(1)HNC—21/22M数控系统
1)条件判别语句:IF ELSE ENDIF。
格式(i):IF条件表达式
…条件成立(真)
ELSE
…条件不成立(假)
ENDIF
格式(ii):IF条件表达式
…条件成立(真)
ENDIF
2)循环语句:WHILE ENDW。
格式:WHILE条件表达式
…条件成立(真)
ENDW
(2)SIEMENS数控系统
1)绝对跳转。
指令格式:GOTOF Label(标记符);向前跳转
GOTOB Label(标记符);向后跳转

2)有条件跳转。
指令格式:IF条件GOTOF Label;向前跳转
IF条件GOTOB Label;向后跳转

(3)FANUC数控系统(https://www.xing528.com)
1)无条件转移(GOTO语句):无条件转移到顺序号为n的程序段。
指令格式:GOTO n;
其中:n为顺序号,可取1~99999;顺序号也可用表达式表示。
例:GOTO 1;
GOTO#10;
2)条件转移(IF语句):IF后面是条件式,如果条件成立,则转移到顺序号为n的程序段语句,否则,执行下一个程序段。
例如:如果#1值比10大,则转移到顺序号N60的程序段。
指令格式:IF[#1GT 10]GOTO 60;
条件不成立→按程序顺序执行;条件成立→执行N60程序段。
说明:
a)条件式是在比较的两个变量之间,或一个常量与一个变量之间,写上比较运算符,然后再用方括号[]全部括起来而构成的。不用变量,也可用运算式。
b)运算符由两个英文字母构成,用来判断大、小或相等,见表3-3。
表3-3 条件表达式种类

例:编写求1~10之和的数控程序。
用FANUC 0i和SIEMENS系统编程,为

3.循环语句
(1)HNC—21/22M数控系统 循环语句WHILE ENDW
指令格式:WHILE条件表达式
…条件成立(真)
ENDW
(2)FANUC数控系统 在WHILE语句后指定一个条件表达式。
指令格式:WHILE[条件式]DOm(m=1,2,3)
…条件不成立(假)
END m;
…
说明:
1)在条件成立期间,HNC—21/22M数控系统执行WHILE之后到ENDW间的程序,FANUC 0i数控系统执行ENDm后的程序;条件不成立时,HNC—21/22M数控系统执行ENDW的下一个程序段,FANUC 0i数控系统执行WHILE之后的DO到ENDm间的程序。条件式和运算符与IF语句相同。FANUC 0i数控系统中的DO和END后的m数值是指定执行范围的识别符,可使用1、2、3;非1、2、3时,报警。
2)嵌套。在DO~END之间的循环识别号(1~3)可使用任意次,但是不能执行交叉循环,否则报警。见表1-23。
注意:如果省略WHILE语句,只指令了DO m,则从DO~END之间形成无限循环。
例:使用WHILE循环语句编写求1~10之和的数控程序。
用HNC—21/22M和FANUC 0i系统编程,为

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
