数控高级编程 - 宏程序高级教程 联系客服

发布时间 : 星期二 文章数控高级编程 - 宏程序高级教程更新完毕开始阅读

数控高级编程讲义 34

注意:不能给零件数赋负值。 2.8模态信息 Model information

在程序段中指定的模态信息,直到(当前程序段)之前的程序段中是可读出的。 变量号 功能 分组 #4001 G00 G01 G02 G03 G33 Group 1 #4002 G17 G18 G19 Group 2 #4003 G90 G91 Group 3 #4004 Group 4 #4005 G94 G95 Group 5 #4006 G20 G21 Goup 6 #4007 G40 G41 G42 Group 7 #4008 G43 G44 G49 Group 8 #4009 G73 G74 G76 G80~G89 Group 9 #4010 G98 G99 Group 10 #4011 G50 G51 Group 11 #4012 G65 G66 G67 Group 12 #4014 G54~G59 Group 14 #4015 G61~G64 Goup 15 #4016 G68 G69 Group 16 ┊ ┊ ┊ #4022 Group 22 #4102 B code #4107 D code #4109 F code #4111 H code #4113 M code #4114 程序段顺序号 #4115 程序号 #4119 S code #4120 T code 2.9当前位置 位置信息是只读的。 变量号 #5001~#5004 #5021~#5024 #5041~#5044 #5061~#5064 #5081~#5084 #5101~#5104 位置信息 程序段终点 当前位置 当前位置 跳转信号位置 刀具补偿值 伺服位置误差 坐标系统 工件坐标系 机床坐标系 工件坐标系 工件坐标系 刀具补偿值 不包含 包含 包含 包含 运动期间读操作 允许 禁止 禁止 允许 禁止 禁止 说明: ? 变量号的未位代表轴编号,1对应X轴,2对应Y轴,3对应Z轴,4对应第四轴。 ? #5081~5084存储的刀具偏置值是当前执行值,不是后面程序段的处理值。

? 在G31(跳转功能)程序段中跳转信号接通时的刀具位置存储在变量#5061~# 5064 中.当

G31段跳转信号接通不接通时, 这些变量中贮存指定程序段终点.

34

数控高级编程讲义 35

? 运动期间读为禁止指由于缓冲(预读)功能的原因, 无法读取期望值。 2.10工件坐标系补偿值(工件坐标系零点偏置值)

工件坐标系偏置值可以读写。 变量号 功能 #2500~#2506 外部工件坐标系、G54~G59第一轴零点偏置值 #2600~#2606 外部工件坐标系、G54~G59第二轴零点偏置值 #2700~#2706 外部工件坐标系、G54~G59第三轴零点偏置值 #2800~#2806 外部工件坐标系、G54~G59第四轴零点偏置值 #7001~#7004 工件坐标系G54 P1第一~四轴的零点偏置值 #7021~#7024 工件坐标系G54 P2第一~四轴的零点偏置值 ┋ ┋ #7941~#7944 工件坐标系G54 P48第一~四轴的零点偏置值 变量#2500~#2806是工件坐标系的任选变量,而变量#7001~#7944(G54P1~G54P48)是附加的48个工件坐标系的任选变量。

(G54Pp)的第n轴的工件零点偏置变量号由下式获得:#[7000+[p-1]*20+n]

3 算术和逻辑运算

在表16.2(a)中列出的操作可以使用变量完成。表中右边的表达式可用常量或变量与函数或运算符组合表示。表达式中的变量#j和#k可用常量替换,也可用表达式替换。 ? 表3(a) 算术和逻辑运算

函 数 赋值 求和 求差 乘积 求商 正弦 余弦 正切 反正切 平方根t 绝对值 四舍五入 向下取整 向上取整 或OR 异或XOR 与AND 十——二进制转换 二——十进制转换 说明: 格 式 #i=#j #i=#j+#k #i=#j-#k #i=#j*#k #i=#j/#k #i=SIN[#j] #i=COS[#j] #i=TAN[#j] #i=ATAN[#J]/[#k] #i=SQRT[#j] #i=ABS[#J] #I=ROUND[#J] #I=FIX[#J] #I=FUP[#J] #I=#J OR #K #I=#J XOR #K #I=#J #I=BIN[#J] #I=BCD[#J] 备 注 角度用十进制度表示。 逻辑运算用二进制数按位操作 用于转换发送到PMC的信号或从PMC 接收的信号 35

数控高级编程讲义 36

? 1、角度单位

SIN、COS、TAN和ATAN 函数使用的角度单位为十进制度。 ? 2、反正切函数ATAN

在反正切函数后指定两条边的长度,并用斜线隔开(y/x)。结果为0<=result<360。 如:#1=ATAN[1]/[-1]; #1的值为135.0。 ? 3、四舍五入函数ROUND

当ROUND函数包含在数学或逻辑操作命令中,IF、WHILE语句中时,四舍五入在第一个小数位进行。

如:#2=1.2345; #1=ROUND[#2]; 则#1=1.0。

当ROUND函数使用于NC语句中的指令地址后时,四舍五入按地址的最小精度进行。 例:钻孔程序,系统精度0.001mm #1=1.2345; #2=2.3456;

G00 G91 X-#1; 移动1.235mm G01 X-#2; 移动2.346mm G00 x[#1+#2]; 移动3.580mm

由于1.2345+2.3456=3.5801,四舍五入后为3.580mm,刀具未返回原位。刀具位移误差来至于运算时,先加后园整。为使刀具返回原位,最后的程序段应改为:

G00 X[ROUND[#1]+ROUND[#2]];

(注:G90编程时,上述问题不一定存在。) ? 4、向上和向下取整

向上取整是指园整后的整数,其绝对值比原值的绝对值大,而向下园整是指园整后的整数,其绝对值比原值的绝对值小。当对负数取整时,需特别注意。

例: #1=1.2;

#3=FUP[#1]; 2.0 #3=FIX[#1]; 1.0 #2=-1.2;

#3=FUP[#2]; -2.0 #3=FIX[#1]; -1.0 ? 5、函数缩写(Abbreviation) 可用函数的前两个字符表示该函数。 如:ROUND——RO,FIX——FI ? 6、运算优先级

1、函数;

2、乘除类运算(*、/、AND、MOD); 3、加减类运算(+、-、OR、XOR). ? 7、方括号嵌套bracket nesting

36

数控高级编程讲义 37

方括号用于改变运算顺序。方括号的嵌套深度为五层,含函数自己的方括号。当方括号超过五层时,发生118号报警。 限制

? 1、方括号Brackets

方括号用于封闭表达式,注意不能用园括号。 ? 2、运算误差

运算时会产生误差 表3(b) 运算涉及的错误 Average error 运算 平均误差 a=b*c 1.55?10?10 a=b/c 4.66?10?10 1.24?10?9 a?b Maximum error 最大误差 4.66?10?10 1.88?10?9 3.73?10?9 误差类型 type of error 相对误差relative error (*1) ? a??a=b+c ?10?10取小值min, (*2) 2.33?10 5.32?10 a=b-c bca=sin[b] ?9?8绝对误差absolute error(*3) 5.0?101.0?10 a=cos[b] ? degrees(度) a=atan[b]/[c] 1.8?10?6 3.6?10?6 注意: 1、相对误差大小与运算结果有关; 2、取两误差中较小的一个。

3、绝对误差大小为常值,与运算结果无关。 4、正切函数TAN用SIN/COS完成。 说明:

①由于变量值的精度为8位小数(在NC中变量用科学计数法表示),当在加减运算中处理很大的数时,会出现意想不到的结果。

如:试图给#1、#2如下赋值 #1=9876543210123.456; #2=9876543277777.777; 变量的实际值为: #1=9876543200000.000 #2=9876543300000.000

此时如计算#3=#2-#1,则结果为#3=100000.000。 运算结果的误差由变量是用二进制数运算引起的。(在nc中用于存储变量的二进制位是有限的,为表示尽能大的数,将数转换成科学计数法表示,变量的二进制位中的后几位表示指数,其余的位存储小数部分,当数的有效位多于变量的最大有效位时,多余的部分进行四舍五入,从而引起误差。此误差相对数本身来说,误差极小,但对结果的影响就可能很大。编程时,应尽可能避免本例的情况。)

②因数据精度的原因,在条件表达式中用EQ、NE、GE、GT、LE和LT时,也可能出现误差

例:IF [#1 EQ #2]

当#1和#2的值存在近似时,结果就会出现误差。

37