当前位置:首页 > 图文解说 Fanuc B类宏程序高级编程手册
角度单位
函数SIN,COS,ASIN,ACOS,TAN 和ATAN 的角度单位是度。如
90°30ˊ表示为90.5 度。
ARCSIN # i=ASIN[#j] ", 取值范围如下:
当参数(No.6004#0)NAT 位设为0 时,270°~90° 当参数(No.6004#0)NAT 位设为1 时,-90°~90° 当#j 超出-1 到1 的范围时,发出P/S 报警No.111。 常数可替代变量#j。
ARCCOS # i =ACOS[#j] ", 取值范围从180°~0°。 当#j 超出-1 到1 的范围时,发出P/S 报警No.111。 常数可以替代变量#j
ARCTAN ·指定两个边的长度,并用斜杠(/)分开。 #i=ATAN[#j]/[#k]; ·取值范围如下:
当NAT 位(参数No.6004,#0)设为0 时:0°到360° [例如]当指定#1=ATAN[-1]/[-1];时,#1=225°。
当NAT 位(参数No.6004,#0)设为1 时,-180°到180° [例如]当指定#1=ATAN[-1]/[-1];时,#1=-135.0°。 · 常数可以代替变量# j。
·注意,相对误差可能大于10-8。 自然对数#i=LN[#j];
·当反对数(# j)为0 或小于0 时,发出P/S 报警No.111。 ·常数可以代替变量# j。
·注意,相对误差可能大于10-8。 指数函数#i=EXP[#j]
·当运算结果超过3.65×1047(j 大约是110)时,出现溢出并发出P/S 报警No.111。
·常数可以代替变量#j。
ROUND(舍入)函数 ·当算术运算或逻辑运算指令IF 或WHILE 中包含ROUND 函数时,则ROUND 函数在第1 个小数位置四舍五入。 例:
当执行#1=ROUND[#2];时,此处#2=1.2345,变量1 的值是1.0。 ·当在NC 语句地址中使用ROUND 函数时,ROUND 函数根据地址的最小
设定单位将指定值四舍五入。 例:
编制钻削加工程序,按变量#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.2345+2.3456=3.5801,移动距离为3.580,刀具 不会返回到初始位置。
该误差来自于舍入之前还是舍入之后相加。必须指定G00 X-[ROUND[#1]+ROUND[#2]]以使刀具返回到初始位置。 上取整和下取整
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。
算术与逻辑运算指令的缩写 程序中指令函数时,函数名的前二个字符可以用于指定该函数(见Ⅲ—9.7 节)。 例如:
ROUND→RO FIX→FI
运算次序 ① 函数
② 乘和除运算(*、/、AND)
③ 加和减运算(+、-、OR、XOR)
括号嵌套
括号用于改变运算次序。括号可以使用5 级,包括函数内部使用的括 号。当超过5 级时,出现P/S 报警No.118。
限制
括号 ([,])用于封闭表达式。注意,圆括号用于注释。 运算误差 运算时,可能出现误差。 表15.3(b) 运算中的误差
注
1 相对误差取决于运算结果。 2 使用两类误差的较小者。
3 绝对误差是常数,而不管运算结果。 4 函数TAN 执行SIN/COS。
5 如果SIN、COS 或TAN 函数的运算结果小于1.0×10-8 或由于 运算精度的限制不为0 的话,设定参数No.6004#1 为1,则 运算结果可以规算为0。
·变量值的精度约为8 位十进制数。当在加/减运算中处理非常大的数 时,将得不到期望的结果。 例:
当试图把下面的值赋给变量#1 和#2 时: #1=9876543210123.456 #2=9876543277777.777 变量值变成:
#1=9876543200000.000 #2=9876543300000.000
此时,当计算#3=#2-#1;时,结果为#3=100000.000。
(该计算的实际结果稍有误差,因为是以二进制执行的。)
·还应该意识到,使用条件表达式EQ,NE,GE,GT,LE 和LT 时可 能造成误差。 例如:
IF[#1EQ#2]的运算会受 #1 和#2 的误差的影响,由此会造成错误的判 断。
因此,应该用IF[ABS[#1-#2]LT0.001]代替上述语句,以避免两个变 量的误差。
当两个变量的差值未超过允许极限(此处为0.001)时,则认为两个 变量的值是相等的。
·使用下取整指令时应小心。 例如:
当计算#2=#1*1000,式中#1=0.002 时,变量#2 的结果值不是准确的 2,可能是1.99999997。
这里,当指定#3=FIX[#2]时,变量3 的结果值不是2,而是1.0。此 时,可先纠正误差,再执行下取整,或是用如下的四舍五入操作, 即可得到正确结果。 #3=FIX[#2+0.001]
共分享92篇相关文档