第一讲:参数编程基础 0 前言 《参数编程》课程说明:参数编程属于高阶的数控手工编程方法,在实际生产中有着较广泛的应用空间,同时在数控工种的《国家技能鉴定标准》中,也是较重要的环节。本课程着重于参数编程的基础知识和应用实例,并通过在实训环节中的应用,使学员能够在较短的时间内掌握参数编程的基本方法和一般规律,扩展解决特定加工难题和工艺难题的能力,进一步提高自身的编程和工艺水平。 1 参数编程基本概念 1.1 参数编程是做什么的? 问题1:数控加工最本质关键的是什么? 用数(数字量)来控制,数控加工的整个工艺过程(工件、机床、夹具、刀具等)最终都要转化为数字量(数值、数据),通过数字量来控制机床完成对工件的加工。数是关键,也就是说没有数据就没法控制,没有高质量的数据就没有高质量的产品。高质量、高可靠性的数据是产品高质量的前提保证,越是高精尖的零件加工越是对数据的要求高。 问题2:数从何而来? 测量、计算而来,得到数的方法、手段是我们从事数控机加必须掌握、具备的基本技能,是我们天天要研究、琢磨的事。 三大手段:①简单的通过手工计算;②复杂的借助CAD/CAM软件;③编写程序通过数控机床自动计算(发挥计算机的本质,基本所有操作系统都能实现,就是参数编程,本课程的学习内容)。 现在我们再回答这个问题:参数编程是做什么的?是处理数控加工中所用到的数据的。 0 1 1.2 参数编程的应用 参数编程可理解成数控系统对用户的开放,让用户可以对数控系统进行一定功能的扩展。应用归纳为: ①零件家族:大量结构形状相似,而只是尺寸、位置、角度上有差异的零件,编制通用程序,只要通过修改其中一个或几个参数来实现不同零件的加工 ②固定循环:钻、车、铣、阵列等循环,机床现有和没有的,开发宏程序 ③复杂运动:机床不具备的复杂运动,曲线、曲面加工 ④驱动机床附件:如测头在线测量、实现自动找正、防错等的功能 ⑤优化程序:便于编辑,通过对关键数据的处理(传输、运算、判断)提高数据、程序的高质量和高可靠性,进行加工质量控制。 1 1.3 两个基本概念 概念一:参数,也叫变量。 变量,数学上的概念,(按某种数学规律)变化的量,相对常量来说。 数控是用数字量来控制机床运动。数字量:常数和变量。数控为什么要用变量?常量控制一个固定的指令、加工位置(尺寸)、零件。变量,可根据用户需要进行更加灵活的控制,扩展性、柔性更强。 注意:不要和机床(的技术)参数概念混淆。 概念二:宏程序,由机床厂家或用户编制的参数程序,实现某一特定功能,由专用指令(宏指令)调用。 FANUC系统有此明确的定义,西门子、海德汉系统无此定义,统称参数程序。 1.4 参数编程的特性 参数编程归根到底还算手工编程的范畴,但和我们平时一般的手工编程不太一样,有其自身的特性。 ①计算机有关的特征 参数编程与计算机高级语言编程很相似,具有许多与计算机有关的特征,如变量赋值、算数逻辑运算、循环、转跳等指令。 ②CNC有关的特性 这种编程语言应用于CNC控制系统环境下,还具有许多与CNC有关的特性,通过编制用户化的宏程序(宏指令),可以使CNC用户直接与CNC控制系统联系,如刀具偏置、工件零点、各轴的位置等数据进行主动读写、运算,而仅用G、M指令编程是不可能有这些功能的。 所以,参数编程表面看起来很高深,看似很神秘,可一旦我们掌握了最基本的方法以后,它其实并不难,并不神秘。
第一节FANUC (0i)系统参数编程基础 1、变量 在宏程序中设置了变量,即将变量赋给一个地址。
(1)变量的表示 b、变量还可以用“#”号和跟随其后的变量表达式来表示:#[表达式m] 这里的m必须是如下的一种: 数值 #[123] 变量 #[#123] 运算式 #[#123+#321] 表达式 #[[#123+#321]*#123] 函数 #[SIN[#123]] 使用变量表达式时:“#”号后必须紧随“[”
#500~#531。 FANUC系统不同版本其变量序号数量各不相同,高级版本其公共变量序号可到#999; 其中#100~#131公共变量在电源断电后即清零,重新开机时被设置为“0”; #500~#531公共变量即使断电后,它们的值也保持不变,因此也称为保持型变量。 2)局部变量#1~#33 在FANUC系统中提供了G65宏指令,该指令使用地址码加数字组成: 如:G65 P666 L10X10. Y11. Z12. I13. I14. 其中: P666 子程序号 L10 子程序调用次数 X10. #24=10. Y11. #25=11. Z12. #26=12. I13. #4=13. I14. #7=14. 也就是说:当把自变量作为一个局部变量引入宏子程序时,可用相应的地址码指定所需的数据,此时如X、Y、Z等其后面的数值已不再是相应的坐标数值了,即与地址码无关了,而是给地址码所对应的变量赋值。 自变量分为I和II型两类; ——其中I、J、K必须按顺序指定; ——I和II型混用时,如果指定了两个自变量,那么最后一个起作用 自变量类型I:地址码和变量号之间的关系
自变量类型II:地址码和变量号之间的关系
3)系统变量 这一变量在不同程序级中调用时含义相同。因此,一个宏程序中经计算得到的一个通用变量的数值,可以被另一个宏程序应用。 变量能用于除O、N和/的所有地址。 #i=ROUND[#j] 四舍五入取整数 #i=FIX[#j] 舍去小数部分取整数
3、控制指令 (1)条件转移
4、宏指令的设置 (1)用 G代码调用宏程序 在参数中设置调用宏程序的 G 代码,与非模态调用(G65)同样的方法用该代码调用宏程序。 说明 在参数(No.6050到No.6059)中设置调用用户宏程序(O9010到9019)的G代码号(从 1到9999),调用户宏程序的方法与G65 相同。例如,设置参数,使宏程序 O9010 由 G81 调用,就可以调用由用户宏程序编制的加工循环。
· 参数号与程序号之间的对应关系 程序号 参数号 O9010 6050 O9011 6051 O9012 6052 O9013 6053 O9014 6054 O9015 6055 O9016 6056 O9017 6057 O9018 6058 O9019 6059
·重复 与非模态调用一样,地址 L可以指定从 1 到9999 的重复次数。
· 自变量指定 与非模态调用一样,两种自变量指定是有效的:自变量指定Ⅰ和自变量指 定Ⅱ。根据使用的地址自动地决定自变量的指定类型。
限制 · 使用 G代码的宏调用的嵌套 在 G 代码调用的程序中,不能用 G 代码调用宏程序。这种程序中的 G 代码被处理为普通 G 代码。在用 M 或 T 代码作为子程序调用的程序中,不能用 G 代码调用宏程序。这种程序中的 G 代码也处理为普通G 代码。
(2)用 M代码调用宏程序 在参数中设置调用宏程序的 M代码,与非模态调用(G65)的方法一样用该代码调用宏程序。 说明 在参数(No.6080 到No.6089)中设置调用用户宏程序(O9021到O9029)的M代码(从 1 到 9999),用户宏程序能与G65 同样的方法调用。
·参数号和程序号之间的对应关系 程序号 参数号 O9020 6080 O9021 6081 O9022 6082 O9023 6083 O9024 6084 O9025 6085 O9026 6086 O9027 6087 O9028 6088 O9029 6089
·重复 与非模态调用一样,地址 L可以指定从 1 到9999 的重复次数。
· 自变量指定 与非模态调用一样,两种自变量的指定是有效的:自变量指定Ⅰ和自变量 指定Ⅱ。根据使用的地址自动地决定自变量指定的类型。
· 调用宏程序的M代码必须在程序段的开头指定。 限制 · 用G代码调用的宏程序或用M代码或T代码作为子程序调用的程序中,不能用 M 代码调用宏程序。这种宏程序或程序中的 M 代码被处理为普通的M代码。
第二节SINUMERIK (840D)系统参数编程基础 1 参数 一般西门子系统供用户自由使用的R参数范围为R0~R99。 2 零点数据的读写 通过找正得到的工件零点内的任何一个数据,都可以通过系统参数进行可编程的读出和写入的操作。 1 2 2.1读取零点数值 R51=$p_uifr[1,x,tr] [ ]内:“1”表示修改G54中的坐标; $P_UIFR[0] 对应G500 $P_UIFR[1] 对应G54 $P_UIFR[2] 对应G55 …依次累推 “X”表示修改X轴的坐标; “TR”表示实际值。 $p_uifr[3,Z,RT] RT :表示工件坐标系旋转角度 Z-ROT $P_UIFR[1, X,FI] “FI”:表示修正值 2.2写入零点数值 $p_uifr[1,x,tr]=R1 将参数R1中的数值写入零点G54的X轴。 例如:想要设定G54中的X偏置值为10,Y轴的偏置值为20,Z轴的偏置值为30,具体编程指令如下: $P_UIFR[1, X, TR] =10 $P_UIFR[1, Y, TR]=20 $P_UIFR[1, Z, TR]=30
3 运算功能
4. 跳转 4.1无条件跳转 GOTOB __向后跳转至标签__(方向:程序起始) GOTOF __向前跳转至标签__(方向:程序结束) 1 2 3 4 4.2有条件程序跳转 IF 表达式 GOTOB __ IF 表达式 GOTOF __
5 循环功能 WHILE 比较运算 NC 程序段 ENDWHILE 符合条件时,执行WHILE 程序循环。
第三节 HEIDENHAIN (iTNC530)系统参数编程基础 1 Q参数的功能范围 Q参数由字母Q和0到399之间的数字组成,分为3个值域:
2 零点数据的读写 通过找正得到的工件零点内的任何一个数据,都可以通过系统参数进行可编程的读出和写入的操作。 2 2.1读取系统参数 FN18:SYS-DATUM READ Qn=ID_ NR_IDX_ 将读取的某一系统参数存入指定的Q参数中,Qn(n=0~99) ID编号:每一组系统参数对应的一个ID编号 NR序号:每一组系统参数所包含的各项系统参数的序号 IDX索引号:每些项系统参数下所包含的对应某一具体系统参数的索引号 系统参数所对应的各编号,可通过系统参数表查找。详见《HEIDENHAIN编程手册》,此处略。 仅列出找正操作的常用系统参数。
例:读取零点表数据 FN18:SYSREAD Q1=ID 503 NR1 IDX1 执行上述指令,读取零点表PRESET.PR中第一组零点的X轴数值,并存入参数Q1中。 参数含义: ID 503:ID号503表示零点表PRESET.PR数据 NR1:编号1表示零点表PRESET.PR中第一组,第二组则为NR2,依次类推 IDX1:索引号1表示第一轴(X轴),第二轴(Y轴)则为IDX2,依次类推 2.2写入系统参数 FN17:SYS WRITE ID_ NR_ IDX_= Qn 将某一Q参数中的数值写入到指定的系统参数中。 系统参数所对应的各编号同上。 例:写入零点表数据 FN17:SYS WRITE ID 503 NR1 IDX1=Q1 参数含义同上。 执行上述指令,将参数Q1中的数值写入零点表PRESET.PR中第二组零点的X轴。 3 测量结果的调用 测量循环运行后的当前测量结果会保存在特定的Q参数中,见下表。这些Q参数可直接被用于参数编程来处理。 测量循环测量结果
4 基本运算功能
5 三角函数
6 输入公式 调用FORMULA(公式)功能,可直接输入算式。
7 计算圆 7.1三个点确定圆 FN23:Q20=CDATA Q30 圆上3点的坐标必须依次成对存入参数Q30和后而的5个参数,即Q30~Q35。 然后,TNC将计算得到的圆心坐标X值存入参数Q20, Y值存入参数Q21,将圆半径存入参数Q22。 1 2 7.2四点确定圆 FN24:Q20=CDATA Q30 圆上4点的坐标必须依次成对存入参数Q30和后而的7个参数,即Q30~Q37。 然后,TNC将计算得到的圆心坐标X值存入参数Q20, Y值存入参数Q21,将圆半径存入参数Q22。 8 判断-转移功能 8.1无条件转移 无条件转移指令通过输入一个完全满足的条件进行转移指令编程。例: FN9:IF+1 EQ +1 GOTO LBL 5
1 2 3 4 5 6 7 8 8.2条件转移
9 输出错误信息 FN14:ERROR=_
例:FN14:ERROR=1004(超出范围) 10 直接设置当前工件零点 FN25:PRESET=__/__/__:对某一轴设置新工件零点 例:在当前坐标X+100上设置新零点。 FN25:PRESET=X/+100/+0 例:将当前坐标Z+50设置成新工件零点下的值为-20 FN25:PRESET=Z/+50/-20 11 检查和修改Q参数 在试运行、程序连续运行和程序单步运行模式下,可检查和修改Q参数。 步骤 如果程序在运行过程中,则根据需要中断程序运行(如按机床STOP(停止)按扭和lNTERNAL STOP(内部停止)软键)。如果程序在试运行过程中,要中断程序试运行。 按Q键或Q lNF0软键显示Q参数列表,TNC列出所有参数和其当前值。使用箭头键(光标移动键)或翻页键,可逐页转到所需的参数。 要想改变数值,输入新值,用ENT键确认。 不想改变值,按END键退出参数列表界面。 第四节 参数编程举例 设计钻孔循环 G181 R_Z_B_H_F_ R-#18 Z-#26 B-#2 H-#11 F-#9 程序一: O9010 #100=#2+#18(R) #101=#2-#26(Z) #102=#2+#11(R) G0Z#100 G1Z#101F#9 G0Z#102 M99 程序二: O9010 #18=ABS[#18] #26=ABS[#26] #11=ABS[#11] #100=#2+#18(R) #101=#2-#26(Z) #102=#2+#11(R) G0Z#100 G1Z#101F#9 G0Z#102 M99 程序三: O9010 IF[#18 EQ #0] THEN #18=2 IF[#26 EQ #0] GOTO 1 IF[#2 EQ #0] GOTO 2 IF[#11 EQ #0] GOTO 3 IF[#9 EQ #0] GOTO 4 #18=ABS[#18] #26=ABS[#26] #11=ABS[#11] #100=#2+#18(R) #101=#2-#26(Z) #102=#2+#11(H) G0Z#100 G1Z#101F#9 G0Z#102 M99 N1 #3000=1(NO VALUE IN Z) N2 #3000=2(NO VALUE IN B) N3 #3000=3(NO VALUE IN H) N4 #3000=4(NO VALUE IN F)
|
|