首页 理论教育 运算指令的程序编程方法及注意事项

运算指令的程序编程方法及注意事项

时间:2023-07-02 理论教育 版权反馈
【摘要】:运算指令可像一般的算术式子一样编程。例如,25°51′,表示为25.85°。“G00 X[#1+#2];”:由于1.2345mm+2.3456mm=3.5801mm,移动量在正向为3.580mm,而非返回原来位置。但是,参数No.6007#4为1时,自变量在传递的同时被变换为0.01,因此不可使用ADP函数。

运算指令的程序编程方法及注意事项

可以在变量之间进行各类运算。运算指令可像一般的算术式子一样编程。FANUC系统算术和逻辑运算见表5-4。

例如:#i=<表达式>

<表达式>:运算指令右边的<表达式>是常量、变量、函数或算符的组合。代之以下面的#j、#k,也可以使用常量。在<表达式>中使用的不带数点的常量,视为其末尾有小数点

5-4 FANUC系统算术和逻辑运算

978-7-111-52218-8-Chapter05-28.jpg

1.角度单位

在SIN、COS、TAN、ASIN、ACOS、ATAN函数中使用的角度,其单位用度表示。例如,25°51′,表示为25.85°。

2.反正弦#i=ASIN[#j];

数学上表示为arcsin,计算器上表示为sin-1。解的范围如下:

1)当参数NAT(No.6004#0)设为0时:270°~90°。

2)当参数NAT(No.6004#0)设为1时:-90°~90°。

3)当#j超出-1~1时,会有PS0119报警发出。

4)可用常量替代变量#j

3.反余弦i=ACOS[#j];

数学上表示为arccos,计算器上表示为cos-1

1)解的范围为0°~180°。

2)当#j超出-1~1时,会有PS0119报警发出。

3)可用常量替代变量#j

4.反正切#i=ATAN[#j/[#k];(2自变量

数学上表示为arctan,计算器上表示为tan-1

1)即使指定ATAN[#j,#k],也与ATAN[#j/[#k]等效。

2)该函数由XY平面上的点(#k,#j)给定时,返还相对于由该点构成的角度的反正切的值。

3)可用常量替代变量#j

4)解的范围如下:

①当参数NAT(No.6004#0)设为0时:0°~360°。

例如:#1=ATAN[1]/[1]时,#1是45.0°;

#1=ATAN[1]/[-1]时,#1是135.0°;

#1=ATAN[-1]/[-1]时,#1是225.0°;

#1=ATAN[-1]/[1]时,#1是315.0°;

②当参数NAT(No.6004#0)设为1时:-180°~180°。

例如:#1=ATAN[1]/[1]时,#1是45.0°;

#1=ATAN[1]/[-1]时,#1是135.0°;

#1=ATAN[-1]/[-1]时,#1是-135.0°;

#1=ATAN[-1]/[1]时,#1是-45.0°;

注意:“[]/[]”,代表所在平面的坐标值,如在G17平面,“[1]/[-1]”,代表该坐标Y值为1,X值为-1;如在G18平面,“[1]/[-1]”,代表该坐标X值为1,Z值为-1;如在G19平面,“[1]/[-1]”,代表该坐标Z值为1,Y值为-1。千万别混淆了顺序!

5.反正切#i=ATAN[#j];(1个自变量

1)如上所述,在以1个自变量来指定ATAN时,该功能将返还反正切的主值(-90°<ATAN[#j]<90°)。也即,成为计算器型规格的ATAN。

2)在将该函数作为除法运算的被除数使用时,必须以[]括起来以后再指定,不括起来的情形视为ATAN[#j/[#k]。

例如,“#100=[ATAN[1]]/10;”:将1个自变量ATAN除以10,即4.5°。

“#100=[ATAN[-1]]/10;”:将1个自变量ATAN除以10,即-4.5°。

“#100=ATAN[1]/[10];”:作为2个自变量ATAN执行,即5.7106°。

“#100=[ATAN[-1]/[1]]/10;”:视为先运算ATAN[-1]/[1],然后再把结果除以10,当参数No.6004#0设为0时,为31.5°;当参数No.6004#0设为1时,为-4.5°。

“#100=ATAN[1]/10;”:视为2个自变量ATAN,但是由于G17平面上X坐标的“10”指定中没有[],会有PS1131报警发出。

注意:反正弦、反余弦、反正切函数,在数学上的表示方法为arcsin、arccos、arctan,在计算器上的表示方法为sin-1、cos-1、tan-1,在数控机床上的表示方法为ASIN、ACOS、ATAN。

建议采用含两个自变量的反正切函数:ATAN[#j]/[#k]。

6.自然对数i=LN[#j];

1)当反对数(#j)小于或等于0时,会有PS0119报警发出。

2)可用常量替代变量#j

7.指数函数i=EXP[#j];

1)运算结果溢出时,会有PS0119报警发出。

2)可用常量替代变量#j

8.ROUND函数

1)当运算指令以及IF语句或WHILE语句中包含取整函数时,取整函数则从第一位小数起四舍五入

例如,“#1=ROUND[#2];”,其中#2为1.2345,则变量#1的值是1.0。

2)当ROUND函数用在NC的语句地址中时,取整函数将按地址的最小输入增量对指定的值四舍五入。

例如,按照变量#1和#2的值,编写一个钻孔程序,完成后返回原来位置。

假设设定单位是1/1000mm,变量#1的值是1.2345,变量#2的值是2.3456。

“G00 G91 X-#1;”:负向移动1.235mm。

“G01 X-#2 F300;”:负向移动2.346mm。

“G00 X[#1+#2];”:由于1.2345mm+2.3456mm=3.5801mm,移动量在正向为3.580mm,而非返回原来位置。

注意:差别来源于是四舍五入前相加的还是四舍五入后相加的

为了使刀具返回原来位置,必须指定“G00 X[ROUND[#1]+ROUND[#2]];”。

9.ADP(Add Decimal Point)函数

设定ADP[#n](n=1~33),对于不带小数点传递的自变量,可以在子程序端添加小数点。

例如,在用“G65 P X10;”调用的子程序端,ADP[#24]的值与在自变量的最后带有小数点的情形相同,也即为“10.”。它在不希望在子程序端考虑设定单位时使用。但是,参数No.6007#4为1时,自变量在传递的同时被变换为0.01,因此不可使用ADP函数。

注意:出于程序的兼容性考虑,不建议用户使用ADP函数在指定宏程序调用的自变量中添加上小数点。

10.只入不舍和只舍不入(FUPFIX)(www.xing528.com)

当CNC对一个数进行操作后,其整数的绝对值比该数原来的绝对值大,这种操作称为只入不舍;相反,对一个数进行操作后,其整数的绝对值比该数原来的绝对值小,这种操作称为只舍不入。

当处理负数时,要格外小心。

例如,假设#1=1.2,#2=-1.2:

当执行“#3=FUP[#1];”时,将2.0赋予#3。

当执行“#3=FIX[#1];”时,将1.0赋予#3。

当执行“#3=FUP[#2];”时,将-2.0赋予#3。

当执行“#3=FIX[#2];”时,将-1.0赋予#3。

11.运算指令的缩写

当函数在程序中被指定时,只需要前面的两个字符,后面的可以省略。

例如:ROUND→RO

FIX→FI

注意:

①POW不可省略。

②在以省略方式输入了运算指令的情况下,显示也为省略方式。

例如,如果输入“RO”,则不会变换显示为实际的运算指令ROUND,而显示“RO”。

12.运算的优先顺序

1)函数。

2)乘除运算(∗,/,AND)。

3)加减运算(+,-,OR,XOR)。

例如:978-7-111-52218-8-Chapter05-29.jpg

13.括号嵌套

括号被用来改变运算的优先顺序。括号可含5层,包括函数外面的括号。因为超过5层,会有PS0118报警发出。

例如,978-7-111-52218-8-Chapter05-30.jpg

14.逻辑运算说明

逻辑运算符号是在二进制数值上使用的运算符号。宏变量为浮点数字。当在宏变量上使用逻辑运算符号时,只使用浮点数字的整数部分。逻辑运算符号是:

OR:两个数值一起Logically OR(或)。

XOR:两个数值一起Exclusively OR(异或)。

AND:两个数值一起Logically AND(与)。

逻辑运算相对于算术运算来说较为特殊,具体说明如下:

978-7-111-52218-8-Chapter05-31.jpg

说明:

①AND的运算法则为:检查所有条件是否都为TRUE(真),如果所有参数都为TRUE(真),则结果为TRUE(真);只要有一个条件为FALSE(假),则结果为FALSE(假)。

例如:#1=5.2;

#2=3.6;

IF[[#1 GT 4.5]AND[#2 LT 9.8]]GOTO 19;

检查“[#1 GT 4.5]”条件为TRUE(真),“[#2 LT 9.8]”条件为TRUE(真),即两者都为TRUE(真),则出现GOTO(前进),跳转到N19程序段。只要有一个条件为FALSE(假),就不出现跳转。

②OR的运算法则为:如果任一条件为TRUE(真),则结果为TRUE(真);只有当所有条件均为FALSE(假)时,结果才为FALSE(假)。

例如:#1=1.0; 00000001

#2=2.0; 00000010

#3=#1 OR#200000011 在OR操作后,变量#3会包含3.0。

③XOR的运算法则为:如果a、b两个值不相同,则异或结果为1;如果a、b两个值相同,则异或结果为0。

例如:十进制5异或11,先转化为二进制,再异或,异或值为“1110”,即十进制14。

978-7-111-52218-8-Chapter05-32.jpg

注意:当使用逻辑运算符时,必须小心操作,这样才会得到所要求的结果。

15.运算精度

978-7-111-52218-8-Chapter05-33.jpg

相对误差与运算结果有关。

②两类误差中,采用较小的一类。

绝对误差是常量,与运算结果无关。

④函数TAN运算的是SIN/COS。

说明:

①变量值的精度大约是8位十进制数字,当对非常大的数进行加法或减法运算时,可能得不到预期的结果。

例如:#1=9876543210123.456,即使#2=9876543277777.777为真值,变量值为#1=9876543200000.000,#2=9876543300000.000。

此时,在计算#3=#2-#1时,#3=100000.000,而不是期望的差值67654.321。由于系统是以二进制进行计算的,实际结果还存在一定的差异。

注意:误差还会来自使用EQ、NE、GE、GT、LE、LT的条件表达式。

例如:IF[#1 EQ#2]受#1和#2的误差影响,可能导致判断错误

因此,如IF[ABS[#1-#2]LT 0.001]所示,求出两个变量之差,如果该差值不超过允许值(在这个例子中为0.001),则可以判定这两个变量的值相等。

③对一个数值进行只舍不入时,应小心。

例如:#1=0.002,计算#2=#1∗1000时,#2的结果不正好是2,而是1.99999997。此时,如果指定#3=FIX[#2],则变量#3的结果值不正好是2.0,而是1.0。

在这种情况下,进行误差修正之后,对该值应进行只舍不入或四舍五入,使结果大于预期的整数值。

#3=FIX[#2+0.001];

#3=ROUND[#2];

④括号。在表达式中使用的括号为方括号[ ]。

注意:圆括号( )用于注释。

⑤除数。除法运算中分母为“0”时,会有PS0112报警发出。

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

我要反馈