《2022年2022年宏程序编程》由会员分享,可在线阅读,更多相关《2022年2022年宏程序编程(36页珍藏版)》请在金锄头文库上搜索。
1、第五章宏程序编程实训要点:熟悉 FANUC 系统宏程序编程的基本指令;掌握常用的几个宏程序应用范例第一节宏程序编程概述宏程序编程简单地解释就是利用变量编程的方法。在本书第二章中介绍的数控指令,其指令代码的功能是固定的,使用者只需( 只能 ) 按照指令规定的参数编程。但有时候这些指令满足不了用户的需求,数控系统因此提供了宏程序编程功能,利用数控系统提供的变量、数学运算功能、逻辑判断功能、程序循环功能等功能,来实现一些特殊的用法。宏程序编程实际上是数控系统对用户的开放,在数控系统的平台上进行二次开发,当然这里的开放和开发都是有条件和有限制的。宏程序与普通程序存在一定的区别,认识和了解这些区别,将有
2、助于宏程序的学习理解和掌握运用,表5-1 为宏程序和普通程序的简要对比。表 5-1 宏程序和普通程序的简要对比普通程序宏程序只能使用常量可以使用变量,并给变量赋值常量之间不可以运算变量之间可以运算程序只能顺序执行,不能跳转程序运行可以跳转宏程序编程的技术特点和应用领域手工编程是数控编程的基础,在手工编程中使用宏程序编程。其最大特点就是将有规律的形状或尺寸用最短的程序段表示出来,编写出的程序非常简洁,逻辑严密,通用性强。任何数控加工只要能够用宏程序完整地表达,即使再复杂,其程序篇幅都比较精炼,任何一个合理、优化的宏程序,极少会超过60 行,换算成字节数,至多不过2KB 。即使是最廉价的机床数控系
3、统,其内部程序存储空间也完全容纳得下任何复杂的宏程序。为了对复杂的加工运动进行描述,宏程序必然会最大限度地使用数控系统内部的各种指令代码,例如直线插补G01指令和圆弧插补G02 G03指令等。因此机床在执行宏程序时,数控系统的计算机可以直接进行插补运算,且运算速度快,再加上伺服电动机和机床的迅速响应,使得加工效率极高。宏程序的技术特点,使其特别适宜机械零件的批量加工。机械零件的形状主要是由各种凸台、凹槽、圆孔、斜平面、回转面等组成,很少包含不规则的复杂曲面,构成其的几何因素无外乎点、直线、圆弧,最多加上各种二次圆锥曲线( 椭圆、抛物线、双曲线) ,以及一些渐开线( 常应用于齿轮及凸轮等) ,所
4、有这些都是基于三角函数、解析几何的应用,而数学上都可以用三角函数表达式及参数方程加以表述,因此宏程序在此有广泛的应用空间,可以发挥其强大的作用。机械零件绝大多数都是批量生产,在保证质量的前提下要求最大限度地提高加工效率以降低生产成本,一个零件哪怕仅仅节省1 秒,成百上千的同样零件合计起来节省的时间就非常可观了。另外批量零件在加工的几何尺寸精度和形状位置精度方面都要求保证高度的一致名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 36 页 - - - - - - - - -
5、性,而加工工艺的优化主要就是程序的优化,这是一个反复调整、尝试的过程,要求操作者能够非常方便地调整程序中的各项加工参数(如刀具尺寸、刀具补偿值、每层切削量、步距、计算精度、进给速度等) 。宏程序在这方面有很大的优越性,只要能用宏程序来表述,操作者就根本无需触动程序本身,而只需针对各项加工参数所对应的自变量赋值做出个别调整,就能迅速的将程序调整到最优化的状态。如果使用 CAD CAM 软件编制机械零件的批量加工程序,前面提到的加工参数,只要其中一项或几项发生变化, 再智能的CAD CAM 软件也要根据变化后的加工参数重新计算刀具轨迹,再经后处理生成程序,这个过程繁琐且耗时很多。当然,宏程序也不是
6、无所不能。对于主要由大量不规则复杂曲面构成的模具成型零件,特别是各种注塑模、压铸模等型腔类模具的型芯、型腔和电极,以及汽车覆盖件模具的凸模、凹模等, 由于从设计、 分析到制造的整个产业链在技术层面及生产管理上都是通过以各种CADCAM软件为核心 ( 还包括 PDM 、CAE等) 的纽带紧密相联的,从而形成一种高度的一体化和关联性,无论从哪个角度来看,此类零件的数控加工程序几乎百分之百地依赖各种CAD CAM 软件来编制,宏程序在这里的发挥空间是非常有限的。第二节宏程序基础 (FANUC Oi 系统) FANUC 0i 系统提供两种用户宏程序,即用户宏程序功能A和用户宏程序功能B。由于用户宏程序
7、功能A的宏程序需要使用“ G65Hm ”格式的宏指令来表达各种数学运算和逻辑关系,极不直观,且可读性非常差,因而导致在实际工作中很少人使用它。由于绝大部分的 FANUC 系统都支持用户宏程序功能B,本书篇幅有限, 只介绍用户宏程序功能B的相关知识。一变量普通加工程序直接用数值指定G 代码和移动距离;例如:G01 和 X100.0。使用用户宏程序时,数值可以直接指定或用变量指定,当用变量时,变量值可用程序或由 MDl 设定或修改。例如:#1=#2+100;G01X#1 F80;1变量的表示宏程序的变量是用变量符号“#”和后面的变量号指定。例如:#2 表达式可以用于指定变量号,这时表达式必须封闭在
8、括号中。例如:#1#2+#41-15 2变量的类型变量根据变量号可以分成四种类型。表5-2 变量类型变量号变量类型功能#0 空变量该变量总是空,没有值能赋给该变量。#1#33 局部变量局部变量只能用在宏程序中存储数据,例如,运算结果。当断电时,局部变量被初始化为空。调用宏程序时,自变量对局部变量赋值。#100#199 #500#999 公共变量公共变量在不同的宏程序中的意义相同。当断电时,变量#10#199 初始化为空。变量 #500#999 的数据保存,即使断电也不丢失。#1000以上系统变量系统变量用于读和写CNC 的各种数据, 例如, 刀具的当前位置和补偿值。名师资料总结 - - -精品
9、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 36 页 - - - - - - - - - 变量从功能上主要可归纳为两种,即:系统变量 (系统占用部分),用于系统内部运算时各种数据的存储。用户变量,包括局部变量和公共变量,用户可以单独使用,系统作为处理资料的一部分。3变量值的范围局部变量和公共变量可以为0 值或下面范围中的值:-1047到 10-29或10-29到1047如果计算结果超出有效范围,则触发程序错误P/S 报警 No.111。4. 小数点的省略当在程序中定义变量值时,小数点可以省略。例
10、:当定义#1=123;变量 #1的实际值是123.000。5. 变量的引用在地址后指定变量号即可引用其变量值。当用表达式指定变量时,要把表达式放在括号中。例如: G01 X#1+#2 F#3 ;被引用变量的值根据地址的最小设定单位自动地舍入。例如:当系统的最小输入增量为0.001mm 单位,指令 G00X#1,并将 12.3456 赋值给变量 #1,实际指令值为G00X12.346; 。改变引用变量的值的符号,要把负号(-)放在 #的前面。例如:G00X -#1;当引用未定义的变量时,变量及地址字都被忽略。例如:当变量#1的值是 0,并且变量 #2的值是空时, G00 X#1 Y#2 ;的执行
11、结果为G00X0 ;。注意: 从这个例子可以看出,所谓“变量的值是0”与“变量的值是空”是两个完全不同的概念,可以这样理解: “变量的值是0”相当于“变量的数值等于0”,而“变量的值是空”则意味着“该变量所对应的地址根本就不存在,不生效”。不能用变量代表的地址符有:程序号O ,顺序号N,任选程序段跳转号。例如以下情况不能使用变量:O#11;O#22 G0 X100.0 ; N#33 Y200.0;另外,使用IS0 代码编程时,可用“#”代码表示变量,若用EIA 代码,则应用“ &”代码代替“ #”代码,因为EIA 代码中没有“ #”代码。二. 系统变量系统变量用于读和写NC 内部数据,例如,刀
12、具偏置值和当前位置数据。但是,某些系统变量只能读。系统变量是自动控制和通用加工程序开发的基础,在这里仅介绍与编程及操作相关性较大的系统变量部分。表 5-3 FANUC 0i 系统变量一览表变量号含义#1000#l015 ,#1032 接口输入变量#1100#1115,#1132,#1133 接口输出变量#10001#10400,#l1001 #11400 刀具长度补偿值#12001#12400,#13001#13400 刀具半径补偿值#2001#2400 刀具长度与半径补偿值( 偏置组数 200时) #3000 报警#3001,#3002 时钟#3003,#3004 循环运行控制#3005 设
13、定数据 (SETTING 值) #3006 停止和信息显示#3007 镜像#3011,#3012 日期和时间名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 36 页 - - - - - - - - - #3901,#3902 零件数#4001#4120,#4130 模态信息#5001#5104 位置信息#5201#5324 工件坐标系补偿值( 工件零点偏移值) #7001#7944 扩展工件坐标系补偿值( 工件零点偏移值) 1. 刀具补偿值用系统变量可读和写刀具补偿值。通
14、过对系统变量赋值,可以修改刀具补偿值。表 5-4 FANUC 0i 刀具补偿存储器C的系统变量补偿号刀具长度补偿 (H) 刀具半径补偿 (D) 几何补偿磨损补偿几何补偿磨损补偿1 2 ,24 ,400 #11001(#2201) #11002(#2202) ,#11024(#2224) ,#11400 #10001(#2001) #10002(#2002) ,#10024(#2024) ,#10400 #13001 #13002 ,#13024 ,#13400 #12001 #12002 ,#12024 ,#12400 在 FANUC 0i 系统中,刀具补偿分为几何补偿和磨损补偿,而且长度补偿
15、和半径补偿也是分开的。刀具补偿号可达400 个,理论上数控系统支持控制达400 把刀的刀库。当刀具补偿号200 时( 一般情况也的确如此) ,刀具长度补偿 (H) 也可使用 #2001#2400。刀具补偿值的系统变量,在宏程序编程中,可以这样使用:假设有一把 10mm的立铣刀,在机床上刀号为10 号刀,刀具半径补偿(D) 为 5.0 ,即#130lO=5.0 ;刀具半径补偿中的磨损补偿为0.02 ,即 #12010=0.02 。那么在应用宏程序编写加工程序时,就可以有以下形式的描述: #2=#13010 ;把 lO 号刀的半径补偿值赋值给变量#2,即 #2=5.0 。 #3=#12010 ;把
16、 lO 号刀的半径补偿值中的磨损补偿值赋值给变量#3,即 #3=0.02 。在程序中,调用#2 就可以理解为对刀具的识别,设置和调整磨损补偿值(#3) 则可以控制10 号刀铣削零件的尺寸了。2. 模态信息正在处理的当前程序段之前的模态信息可以从系统变量中读出。表 5-5 FANUC 0i 模态信息的系统变量变量号功能组号变量号功能组号#4001 #4002 #4003 #4004 #4005 #4006 #4007 #4008 #4009 #4010 #4011 #4012 #4013 G00,G01 ,G02,G03,G33 G17,Gl8,Gl9 G90,G91 G94,G95 G20,G
17、21 G40,G41 ,G42 G43,G44 ,G49 G73,G74 ,G76,G80G89 G98,G99 G50,G51 G65,G66 ,G67 G96,G97 ( 组 Ol) ( 组 02) ( 组 03) ( 组 04) ( 组 05) ( 组 06) ( 组 07) ( 组 08) ( 组 09) ( 组 10) ( 组 11) ( 组 12) ( 组 13) #4022 #4102 #4107 #4109 #4111 #4113 #4114 #4115 #4119 #4120 #4130 待定B代码D代码F代码H代码M 代码顺序号程序号S代码T代码P代码 ( 现在选择的附加工
18、件坐标系 ) ( 组 22) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 36 页 - - - - - - - - - #4014 #4015 #4016 ,G54G59 G61G64 G68,G69 ,( 组 14) ( 组 15) ( 组 16) 注: l P 代码为当前选择的附加工件坐标系。2当执行 #1=#4002 时,在 #1 中得到的值是l7 ,18 或 19。3系统变量 #4001#4l20 不能用于运算指令左边的项。4模态信息不能写,只能读。如果阅读模
19、态信息指定的系统变量为不能用的G 代码时,系统则发出程序错误 P/S 报警。3. 当前位置信息FANUC 0i 系统中当前位置信息的系统变量见表5-6。表 5-6 FANUC 0i 当前位置信息的系统变量变量号位置信息相关坐标系移动时的读操作刀具补偿值( 长度、半径补偿) #5001 #5002 #5003 #5004 X 轴程序段终点位置(ABSIO) Y 轴程序段终点位置(ABSIO) Z轴程序段终点位置(ABSIO) 第4轴程序段终点位置(ABSIO) 工件坐标系可以不考虑刀尖位置( 程序指令位置 ) #5021 #5022 #5023 #5024 X 轴当前位置 (ABSMT) Y 轴
20、当前位置 (ABSMT) Z轴当前位置 (ABSMT) 第4轴当前位置 (ABSMT) 机床坐标系不可以考虑刀具基准点位置( 机床坐标 ) #5041 #5042 #5043 #5044 X 轴当前位置 (ABSOT) Y 轴当前位置 (ABSOT) Z轴当前位置 (ABSOT) 第4轴当前位置 (ABSOT) 工件坐标系不可以考虑刀具基准点位置( 与位置的绝对坐标显示相同) #5061 #5062 #5063 #5064 X 轴跳跃信号位置(ABSKP) Y 轴跳跃信号位置(ABSKP) Z轴跳跃信号位置(ABSKP) 第4轴跳跃信号位置 (ABSKP) 工件坐标系可以已考虑刀具基准点位置#
21、5081 #5082 #5083 #5084 X 轴刀具长度补偿值Y 轴刀具长度补偿值Z轴刀具长度补偿值第4轴刀具长度补偿值不可以已考虑#5101 #5102 #5103 #5104 X 轴伺服位置补偿Y 轴伺服位置补偿Z轴伺服位置补偿第4轴伺服位置补偿不可以已考虑注: l ABSIO :工件坐标系中,前一程序段终点坐标值。ABSMT :机床坐标系中,当前机床坐标位置。 ABSOT:工件坐标系中,当前坐标位置。 ABSKP:工件坐标系中,G31程序段中跳跃信号有效的位置。 2在 G31(触发功能 ) 程序段中,当触发信号接通时的刀具位置存储在变量#5061#5064 中。当 G31程序段中的触
22、发信号不接通时,这些变量存储指定程序段的终点值。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 36 页 - - - - - - - - - 3变量 #5081#5084 所存储的刀具长度补偿值是当前的执行值( 即当前正在执行中的程序段的量) ,不是后面的程序段的处理值。 4移动期间不能读取是由于缓冲( 预读 ) 功能的原因,不能读取目标指令值。4. 工件坐标系补偿值( 工件零点偏移值) 用系统变量可以读和写工件零点偏移值(表 5-7) 。表 5-7 FANUC Oi 工
23、件零点偏移值的系统变量变量号功能变量号功能#5201 ,#5204 第1轴外部工件零点偏移值,第4轴外部工件零点偏移值#5301 ,#5304 第1轴G58工件零点偏移值,第4轴G58工件零点偏移值#5221 ,#5224 第1轴G54 工件零点偏移值,第4轴G54 工件零点偏移值#5321 ,#5324 第1轴G59工件零点偏移值,第4轴G59工件零点偏移值#5241 ,#5244 第1轴G55 工件零点偏移值,第4轴G55 工件零点偏移值#7001 ,#7004 第1轴工件零点偏移值(G54.1 P1) ,第4轴工件零点偏移值(G54.1 P1) #5261 ,#5264 第1轴G56 工
24、件零点偏移值,第4轴G56 工件零点偏移值#7021 ,#7024 第1轴工件零点偏移值(G54.1 P2) ,第4轴工件零点偏移值(G54.1 P2) #5281 ,#5284 第1轴G57 工件零点偏移值,第4轴G57 工件零点偏移值#7941 ,#7944 第1轴工件零点偏移值(G54.1 P48) ,第4轴工件零点偏移值(G54.1 P48) 三算术和逻辑运算表 5-8中列出的运算可以在变量中运行。等式右边的表达式可包含常量或由函数或运算符组成的变量。表达式中的变量#j 和#k 可以用常量赋值。等式左边的变量也可以用表达式赋值。其中算术运算主要是指加、减、乘、除函数等,逻辑运算可以理解
25、为比较运算。表 2-8 FANU0 0i算术和逻辑运算一览表功能格式备注定义、置换#i=#j 算术运算加法减法乘法除法#i=#j+#k #i=#j-#k #i=#j*#k #i=#j/#k 正弦#i=SIN#j 三角函数及反三角函数的数值均以度为单位来指定。如9030应表示为 90.5 反正弦#i=ASIN#j 余弦#i=COS#j 反余弦#i=ACOS#j 正切#i=TAN#j 反正切#i=ATAN#j/#k 平方根#i=SQRT#j 绝对值#i=ABS#j 舍入#i=ROUND#j 指数函数#i=EXP#j 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
26、- - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 36 页 - - - - - - - - - ( 自然 )对数#i=LN#j 上取整#i=FIX#j 下取整#i=FUP#j 逻辑运算与#i AND #j 逻辑运算一位一位地按二进制数执行或#i OR #j 异或#i XOR #j 从BCD 转为 BIN #i=BIN#j 用于与 PMC 的信号交换从BIN转为 BCD #i=BCD#j 以下是算术和逻辑运算指令的详细说明。1反正弦运算 #i=ASIN#j 1)取值范围如下:当参数( NO.6004#0)NAT位设置为 0 时,在 270 90范围内取值。
27、当参数( NO.6004#0)NAT位设置为 l 时,在 -90 90范围内取值。2)当#j 超出 -1 到 1 的范围时,触发程序错误P/S 报警 NO.111。3)常数可替代变量#j 。2反余弦运算 #i=ACOS#j 1)取值范围: 180 0。2)当#j 超出 -1 到 1 的范围时,触发程序错误P/S 报警 NO.111。3)常数可替代变量#j 3反正切运算 #i=ATAN#j#K 1)采用比值的书写方式(可理解为对边/邻边)。2)取值范围如下:当参数 (NO.6004#0) NAT位设置为 0 时, 取值范围为0 360。 例如, 当指定 #1=ATAN-1-1 时, #1=225
28、。当参数 (NO.6004#0)NAT 位设置为l时,取值范围为-l80 l80 。例如,当指定#1=ATAN-1 -1时, #1=-135 。3)常数可替代变量#j 。4自然对数运算#i=LN#j 1)相对误差可能大于l0-8。2)当反对数( #j )为 0 或小于 0 时,触发程序错误P/S 报警 NO.111。3)常数可替代变量#j 。5指数函数 #i=EXP#j 1)相对误差可能大于l0-8。2) 当运算结果超过3. 651047(j大约是110) 时,出现溢出并触发程序错误P/S 报警NO.111。3)常数可替代变量#j 。6上取整 #i=FIX#j和下取整 #i=FUP#j CNC
29、 处理数值运算时,无条件地舍去小数部分称为上取整;小数部分进位到整数称为下取整( 注意与数学上的四舍五入对照) 。对于负数的处理要特别小心。例如:假设 #1=1.2 ,#2=-1.2 1)当执行 #3=FUP#1 时, 2.O 赋予 #3;2)当执行 #3=FIX#1 时, 1.O 赋予 #3;3)当执行 #3=FUP#2 时, -2.O 赋予 #3;4)当执行 #3=FIX#2 时, -1.O 赋予 #3;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 36 页 - -
30、 - - - - - - - 7算术与逻辑运算指令的缩写程序中指令函数时,函数名的前二个字符可以用于指定该函数。例如: ROUND RO FIX FI 8混合运算时的运算顺序上述运算和函数可以混合运算,即涉及到运算的优先级,其运算顺序与一般数学上的定义基本一致,优先级顺序从高到低依次为:函数运算乘法和除法运算(* 、 AND) 加法和减法运算(+ 、- 、OR 、XOR)9括号嵌套用“ ”,可以改变运算顺序,最里层的 优先运算。括号 最多可以嵌套5 级( 包括函数内部使用的括号) 。当超出 5 级时,触发程序错误P/S 报警 NO.118。10逻辑运算说明逻辑运算相对于算术运算来说,比较特殊和
31、费解,详细说明见表5-9 。表 5-9 FANUC0i 逻辑运算说明运算符功能逻辑名运算特点运算实例AND 与逻辑乘 (相当于串联 ) 有 0 得 0 1 l=1 ,l 0=0,OO=O OR 或逻辑加 (相当于并联 ) 有 1 得 1 1+1=1,1+0=1,0+0=0 XOR 异或逻辑减相同得 0,不同得 l 1-1=0,l-0=1 , 0-0=0 ,0-1=1 11运算精度同任何数学计算一样,运算的误差是不可避免的,用宏程序运算时必须考虑用户宏程序的精度。用户宏程序处理数据的浮点格式为:M2E。每执行一次运算,便产生一次误差,在重复计算的过程中,这些误差将累加。FANUC 0i运算中的误
32、差精度见表5-l0 。表 5-10 FANU00i 运算中的误差运算平均误差最大误差误差类型 a=b*c 1.5510-10 4.6610-10相对误差 a=b/c 4.6610-10 1.8810-10 ( 绝对值 ) a=b 1.2410-10 3.7310-10a=b+c a=b-c 2.33 10-95.32 10-9最小b,c ( 绝对值 ) a=SlNb a=COSb 5O10-91.0 10-8绝对误差 ( 绝对值 ) 度 a=ATANb/c 1.810-6 3.610-6注:如果 SIN、COS或 TAN函数的运算结果小于10-8或由于运算精度的限制不为0 的话,设定参数 NO
33、.6004#1 为 1,则运算结果可视为0。相对误差取决于运算结果。使用两类误差的较小者。绝对误差是常数,而不管运算结果。函数 TAN执行 SIN/COS。说明: (1)加减运算由于用户宏程序的变量值的精度仅有8 位十进制数,当在加减运算中处理非常大的数时,将得不到期望的结果。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 36 页 - - - - - - - - - 例如:当试图把下面的值赋给变量#1 和#2 时:#1=687644327777.777 #2=68764
34、4321012.456 变量值实际上已经变成:#1=6876443300000.000 #2=6876443200000.000 此时,当编程计算#3=#1-#2 时,其结果 #3 并不是期望值6765321,而是 #3=100000000。(该计算的实际结果稍有误差,因为是以二进制执行的。) (2)逻辑运算逻辑运算,即使用条件表达式EQ ,NE ,GT,GE ,LT,LE 时,也可能造成误差,其情形与加减运算基本相同。例如: IF#1EQ#2 的运算会受到 #1 和#2 的误差的影响,并不总是能估算正确,要求两个值完全相同,有时不可能,由此会造成错误的判断,因此应该改用误差来限制比较稳妥,即
35、用 IFABS#1-#2LT 0.001代替上述语句,以避免两个变量的误差。此时,当两个变量的差值的绝对值未超过允许极限( 此处为 0.001) ,就认为两个变量的值是相等的。 (3)三角函数运算在三角函数运算中会发生绝对误差,它不在10-8之内,所以注意使用三角函数后的积累误差,由于三角函数在宏程序的应用非常广泛,特别在极具数学代表性的参数方程表达上,因此必须对此保持应有的重视。四赋值与变量赋值是指将一个数据赋予一个变量。例如:#1=0,则表示 #1 的值是 0。其中 #1 代表变量,“#”是变量符号 ( 注意:根据数控系统的不同,它的表示方法可能有差别),0 就是给变量 #1赋的值。这里的
36、“ =”是赋值符号,起语句定义作用。赋值的规律有: 1)赋值号“ =”两边内容不能随意互换,左边只能是变量,右边可以是表达式、数值或变量。 2)一个赋值语句只能给一个变量赋值。3)可以多次给一个变量赋值,新变量值将取代原变量值( 即最后赋的值生效) 。4)赋值语句具有运算功能,它的一般形式为:变量=表达式。在赋值运算中,表达式可以是变量自身与其他数据的运算结果,如:#1=#l+1 ,则表示 #1的值为 #1+1,这一点与数学运算是有所不同的。需要强调的是:“#1=#1+1”形式的表达式可以说是宏程序运行的“原动力”,任何宏程序几乎都离不开这种类型的赋值运算,而它偏偏与人们头脑中根深蒂固的数学上
37、的等式概念严重偏离,因此对于初学者往往造成很大的困扰,但是,如果对计算机编程语言(例如C 语言)有一定了解的话,对此应该更易理解。 5)赋值表达式的运算顺序与数学运算顺序相同。 6)辅助功能 (M 代码 ) 的变量有最大值限制,例如,将M30赋值为 300 显然是不合理的。五转移和循环在程序中, 使用 GOTO 语句和 IF 语句可以改变程序的流向。有三种转移和循环操作可供使用。GOTO 语句无条件转移IF 语句条件转移,格式为:IF ,THEN ,WHILE语句当 , 时循环1无条件转移 (GOTO 语句 ) 转移 ( 跳转 ) 到标有顺序号n( 即俗称的行号 ) 的程序段。当指定19999
38、 以外的顺序号时,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 36 页 - - - - - - - - - 会触发 P/S 报警 NO.128。其格式为:GOTO n ; n 为顺序号 (19999) 例如: GOTO 99 ,即转移至第99 行。2条件转移 (IF 语句 ) IF 之后指定条件表达式。(1)IF GOTO n 表示如果指定的条件表达式满足时,则转移 ( 跳转 ) 到标有顺序号n( 即俗称的行号 ) 的程序段。如果不满足指定的条件表达式,则顺序执行下个
39、程序段。例如:如果变量#1 的值大于 l00 ,则转移 ( 跳转 ) 到顺序号为N99的程序段。IF #1 GT l00 GOTO 99;N99 G00 G90 Z10.0 ;程序段如果条件满足如果条件不满足 2IF THEN 如果指定的条件表达式满足时,则执行预先指定的宏程序语句,而且只执行一个宏程序语句。IF#1 EQ #2 THEN #3=10;如果 #1 和#2 的值相同, 10 赋值给 #3。说明:条件表达式:条件表达式必须包括运算符。运算符插在两个变量中间或变量和常量中间,并且用“ ”封闭。表达式可以替代变量。运算符:运算符由2 个字母组成 ( 见表 5-11) ,用于两个值的比较
40、,以决定它们是相等还是一个值小于或大于另一个值。注意,不能使用不等号。表 5-11 运算符运算符含义英文注释EQ 等于 (=) EQual NE 不等于 ( ) Not Equal GT 大于 () Great Than GE 大于或等于 ( ) Great than or Equal LT 小于 () Less Than LE 小于或等于 ( ) Less than or Equal 典型程序示例:下面的程序为计算数值1 10 的累加总和。程序内容程序解释08000;#1=0;#2=1;N5 IF #2 GT 10 GOTO 99;#1=#1+#2;#2=#2+#1;GOTO 5 ;N99
41、M30;存储和数变量的初值被加数变量的初值当被加数大于10 时转移到 N99 计算和数下一个被加数转到 N5 程序结束3循环 (WHILE语句 ) 在 WHILE后指定一个条件表达式。当指定条件满足时,则执行从DO到 END之间的程序。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 36 页 - - - - - - - - - 否则,转到END后的程序段。 DO后面的号是指定程序执行范围的标号,标号值为1,2,3。如果使用了1,2,3 以外的值,会触发P/S 报警 No
42、.126。程序段如果条件满足如果条件不满足WHILE 条件表达式 DO GOTO m;(m=1,2,3)END m, (1)嵌套在 DO END循环中的标号 (1 3) 可根据需要多次使用。但是需要注意的是,无论怎样多次使用,标号永远限制在1,2,3;此外,当程序有交叉重复循环(DO 范围的重叠 ) 时,会触发 P/S 报警 No.124。以下为关于嵌套的详细说明。 1)标号 (1 3) 可以根据需要多次使用。程序段WHILE 条件表达式 DO 1 ;END 1;,程序段WHILE 条件表达式 DO 1 ;END 1;, 2)DO的范围不能交叉。程序段WHILE 条件表达式 DO 1 ;,EN
43、D 1;程序段WHILE 条件表达式 DO 2 ;END 2; 3)DO循环可以 3 重嵌套。程序段WHILE 条件表达式 DO 1 ;,END 3;,END 1;WHILE 条件表达式 DO 2 ;,WHILE 条件表达式 DO 3 ;END 2;,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 36 页 - - - - - - - - - 4)(条件)转移可以跳出循环的外面。程序段WHILE 条件表达式 DO 1 ;END 1;IF 条件表达式 GOTO n ;Nn
44、, 5) (条件 ) 转移不能进入循环区内,注意与上述第4 点对照。程序段WHILE 条件表达式 DO 1 ;END 1;IF 条件表达式 GOTO n ;Nn ,(2)关于循环 (WHILE语句 ) 的其他说明 1)DO m和 END m必须成对使用,而且DO m一定要在END m指令之前。用识别号m来识别。 2)当指定 DO而没有指定WHILE语句时,将产生从DO到 END之间的无限循环。 3)在使用EQ或 NE 的条件表达式中,值为空和值为零将会有不同的效果。而在其他形式的条件表达式中,空即被当作零。4)处理时间:当在GOTO 语句 ( 无论是无条件转移的GOTO 语句,还是“ IF,G
45、OTO ”形式的条件转移GOTO语句 ) 中有标号转移的语句时,系统将进行顺序号检索。一般来说数控系统执行反向检索的时间要比正向检索长,因为系统通常先正向搜索到程序结束,再返回程序开头进行搜索,所以花费的时间要多。因此,用WHILE语句实现循环可减少处理时间。第三节宏程序的调用用户可以用以下6 种方法来调用宏程序:宏程序调用非模态调用(G65)模态调用 (G66,G67)用G 代码调用宏程序(G)用M 代码调用宏程序(M)用M 代码调用子程序(M或M98)用T代码调用子程序首先说明用户宏程序调用(G65) 与子程序调用 (M98)之间的差别: 1)G65可以进行自变量赋值,即指定自变量( 数据
46、传送到宏程序) ,M98则不能。 2)当 M98程序段包含另一个NC指令 ( 例如, G01 X200.0 M98 P) 时,在执行完这种含有非 N、P或 L 的指令后可调用( 或转移到 ) 子程序。相反,G65则只能无条件地调用宏程序。 3)当 M98程序段包含有O 、N、P、L 以外的地址的NC指令时, ( 例如 G01 X200.0 M98P ,在单程序段方式中,可以单程序段停止( 即停机 ) 。相反, G65则不会 ( 即不停机 ) 。4)G65 改变局部变量的级别。M98不改变局部变量的级别。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
47、 - - - - - 名师精心整理 - - - - - - - 第 12 页,共 36 页 - - - - - - - - - 一、宏程序非模态调用(G65) 当指定 G65时,调用以地址P指定的用户宏程序,数据( 自变量 ) 能传递到用户宏程序中,指令格式如下所示。 G65 PL;:要调用的程序号 :重复次数 ( 默认值为 1) :传递到宏程序的数据09110;#3=#1+#2;IF #3 GE 180 GOTO 99;G00 G91 X#3 ;N99 M99;00110;,G65 P9110 L2 A1.O B2.0;,M30 ; 1调用说明 1)在 G65之后,用地址P指定用户宏程序的程
48、序号。 2)任何自变量前必须指定G65。 3)当要求重复时, 在地址 L 后指定从 19999 的重复次数, 省略 L 值时,默认 L值等于 1。4)使用自变量指定( 赋值 ) ,其值被赋值给宏程序中相应的局部变量。2自变量赋值若要向用户宏程序本体传递数据时,须由自变量赋值来指定,其值可以有符号和小数点,且与地址无关。宏程序本体使用的是局部变量(#1 #33 共有 33 个) ,与其对应的自变量赋值共有两种类型。自变量指定I 使用除了 G ,L,O ,N 和 P以外的字母,每个字母指定一次。自变量指定使用 A,B,C 和 Ii,Ji和 Ki(i 为 1 10)。根据使用的字母,自动决定自变量指
49、定的类型。这两种自变量赋值与用户宏程序本体中局部变量的对应关系见表5-12 。表 5-12 自变量赋值与局部变量的对应关系自变量赋值 I 地址用户宏程序本体中的变量自变量赋值 II 地址自变量赋值 I 地址用户宏程序本体中的变量自变量赋值 II 地址A B C #1 #2 #3 A B C S T U #19 #20 #21 I6J6K6I J K #4 #5 #6 I1J1K1 V W X #22 #23 #24 I7J7K7D E F #7 #8 #9 I2J2K2 Y Z #25 #26 #27 I8J8K8H #10 #ll #12 I3J3K3 #28 #29 #30 I9J9K9M
50、 #13 #14 #15 I4J4K4 #31 #32 #33 I10J10K10Q #16 #17 I5J5名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 36 页 - - - - - - - - - R #18 K5注:对于自变量赋值II ,上表中1、J、K 的下标用于确定自变量赋值的顺序,在实际编程中不写 ( 也无法写,语法上无法表达) 。3自变量赋值的其他说明(1) 自变量赋值I 、 II 的混合使用CNC 内部自动识别自变量赋值I 和 II 。如果自变量赋值I
51、 和 II混合赋值,较后赋值的自变量类型有效 ( 以从左到右书写的顺序为准,左为先,右为后) 。例:G65 A1.O B2.0 I-4.0 I5.0 D6.0 P1200;#11.0#22.0#3无赋值#4-4.0#5无赋值#6无赋值#75.0#76.0I5.0 和D6.0都给变量 #7赋值,但后者D6.0 有效由此可以看出,自变量赋值II用 10 组 I、 J、K来对自变量进行赋值,在表5-12 中似乎可以通过I 、 J、K 的下标很容易识别地址和变量的关系,但实际上在实际编程中无法输入下标,尽管自变量赋值II “充分利用资源”,可以对#1 #33 全部 33 个局部变量进行赋值,但是在实际
52、编程时要分清是哪一组I 、J、 K,又是第几个I 或 J 或 K,是一件非常麻烦的事。如果再让自变量赋值I 和自变量赋值II混合使用,那就更容易引起混淆。如果只用自变量赋值I进行赋值,由于地址和变量是一一对应的关系,混淆和出错的机会相当小,尽管只有21 个英文字母可以给自变量赋值,但是毫不夸张地说,绝大多数编程工作再复杂也不会出现超过21 个变量的情况。因此,建议在实际编程时,使用自变量赋值I 进行赋值。 (2)小数点的问题没有小数点的自变量数据的单位为各地址的最小设定单位。传递的没有小数点的自变量的值将根据机床实际的系统配置而定。因此建议在宏程序调用中一律使用小数点,既可避免无谓的差错,也可
53、使程序对机床及系统的兼容性好。 (3)调用嵌套调用可以四级嵌套,包括非模态调用(G65) 和模态调用 (G66) ,但不包括子程序调用 (M98) 。 (4)局部变量的级别局部变量嵌套从0 到 4 级,主程序是0 级。用 G65或 G66调用宏程序,每调用一次 (2 、3、 4 级 ) ,局部变量级别加1,而前一级的局部变量值保存在CNC中,即每级局部变量 (1 、2、3 级) 被保存,下一级的局部变量(2 、3、4 级) 被准备,可以进行自变量赋值。当宏程序中执行M99时,控制返回到调用的程序,此时,局部变量级别减1,并恢复宏程序调用时保存的局部变量值,即上一级被储存的局部变量被恢复,如同它
54、被储存一样,而下一级的局部变量被清除。二、宏程序模态调用与取消(G66、G67) 当指定G66 时,则指定宏程序模态调用,即指定沿移动轴移动的程序段后调用宏程序,G67取消宏程序模态调用。指令格式与非模态调用(G65) 相似。G66 PL:要调用的程序号名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 36 页 - - - - - - - - - :重复次数 ( 默认值为 1) :传递到宏程序的数据09110;,G1 Z-#2 F100;,N99 M99;00110;,G
55、66 P9110 L2 A1.O B2.0;G0 G90 X20.0;Y20.0;X50.Y60.;G67;,M30 ;说明:1)在 G66之后,用地址P指定用户宏程序的程序号。2)任何自变量前必须指定G66。 3)当要求重复时, 在地址 L 后指定从 19999 的重复次数, 省略 L 值时,默认 L值等于 1。 4)与非模态调用 (G65) 相同,使用自变量指定( 赋值 ) ,其值被赋值给宏程序中相应的局部变量。 5)指定 G67时,取消 G66 ,即其后面的程序段不再执行宏程序模态调用。G66和 G67应该成对使用。 6)可以调用四级嵌套,包括非模态调用(G65) 和模态调用(G66)
56、。但不包括子程序调用(M98) 。7)在模态调用期间,指定另一个G66代码,可以嵌套模态调用。8)限制:在 G66程序段中,不能调用多个宏程序。在只有诸如辅助功能(M 代码 ) ,但无移动指令的程序段中不能调用宏程序。局部变量 ( 自变量 ) 只能在G66 程序段中指定,注意,每次执行模态调用时,不再设定局部变量。三、用 G代码调用宏程序(G) 可用 G 代码代替G65 P,即: G=G65P。在参数 NO.6050NO.6059中设定调用宏程序的G代码 ,与非模态调用(G65) 同样的方法用该代码调用宏程序。对应关系见表5-13 。表 5-13 FANUC 0i 参数、 G代码与宏程序号之间
57、的对应关系参数号 G代码 被调用的用户宏程序号 6050 g1 09010 6051 g2 09011 6052 g3 09012 6053 g4 09013 6054 g5 09014 6055 g6 09015 6056 g7 09016 6057 g8 09017 6058 g9 09018 6059 g10 09019 值范围为 l 255(65 67 除外 ) 。例如:在系统中将NO.6050参数设置为50,则 G50即为 G65 P9010。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
58、 - - - 第 15 页,共 36 页 - - - - - - - - - 09010;,M99 ;00200;,G50 A2.0 B4.0;,M30 ;说明:1)重复:与非模态调用(G65 )完全一样,地址L 可以指定19999 的重复次数。2)自变量赋值:与非模态调用(G65)完全一样。3)限制:在用 G代码调用的程序中,不能用一个G代码调用多个宏程序。这种程序中的G代码被处理为普通的G代码。在用 M或 T 代码作为子程序调用的程序中,不能用一个G代码调用多个宏程序。这种程序中的 G代码也被处理为普通的G代码。四、用 M代码调用宏程序(M) 可用 M 代码代替G65 P,即: M=G65
59、P。在参数 NO.6080NO.6089中设定调用宏程序的M代码 ,与非模态调用(G65) 同样的方法用该代码调用宏程序。对应关系见表5-14 。表 5-14 FANUC 0i 参数、 M代码与宏程序号之间的对应关系参数号 M代码 被调用的用户宏程序号 6080 m1 O9020 6081 m2 O9021 6082 m3 O9022 6083 m4 O9023 6084 m5 09024 6085 m6 09025 6086 m7 09026 6087 m8 09027 6088 m9 09028 6089 m10 09029 值范围为 6255。例如:在系统中将NO.6080参数设置为50
60、,则 M50即为 G65 P9020。09020;,M99 ;00200;,M50 A2.0 B4.0;,M30 ;说明:1)重复:与非模态调用(G65 )完全一样,地址L 可以指定19999 的重复次数。2)自变量赋值:与非模态调用(G65)完全一样。3)限制:调用宏程序的M代码必须在程序段的开头指定。在用 G代码调用的宏程序或用M 、T 代码作为子程序调用程序中,不能用一个M代码调用多个宏程序。这种宏程序中的M代码被处理为普通的M代码。五、用 M代码调用子程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
61、- - - - - - 第 16 页,共 36 页 - - - - - - - - - 可用 M 代码代替 M98 P。在参数 NO.6071NO.6079中设定调用子程序的M代码 ,可与子程序调用(M98 )相同的方法用该代码调用子程序。对应关系见表5-15。表 5-15 FANUC 0i 参数、 M代码与宏程序号之间的对应关系参数号 M代码 被调用的用户宏程序号 6071 m1 O9001 6072 m2 O9002 6073 m3 O9003 6074 m4 09004 6075 m5 09005 6076 m6 09006 6077 m7 09007 6078 m8 09008 607
62、9 m9 09009 值范围为 097,但 30 和其他不能进入缓冲区寄存器的M代码除外。例如:在系统中将NO.6071参数设置为71,则 M71即为 M98 P9001。09001;,M99 ;00200;,M71;,M30 ;说明:1)重复:与非模态调用(G65 )完全一样,地址L 可以指定19999 的重复次数。2)自变量赋值:不允许自变量赋值。3)限制:在用 G代码调用的宏程序或用M 、T 代码作为子程序调用程序中,不能用一个M代码调用多个子程序。这种宏程序中的M代码被处理为普通的M代码。六、用 T 代码调用子程序可用 T 代码代替M98 P。在参数中设定调用子程序( 宏程序 ) 的
63、T 代码 ,可与子程序调用(M98)相同的方法用该代码调用子程序( 宏程序 ) 。例如:参数NO.6001的#5 位 TCS=1 ,公共变量 #149=22 09000;,M99 ;00200;,T22,M30 ;说明: 1)调用:设置参数NO.6001的#5 位 TCS=1时,可用T 代码代替M98 P9000。在加工程序中指定的T 代码 赋值到 ( 存储 ) 公共变量 #149 中。2)限制:在用G代码调用的宏程序或用M 、 T代码作为子程序调用的程序中,不能用一个T 代码调用多个子程序。这种宏程序或程序中的T 代码被处理为普通的T 代码。七、宏程序语句和NC语句1宏程序语句和NC语句的定
64、义名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 36 页 - - - - - - - - - 在宏程序中,可以把程序段分为两种语句,一种为宏程序语句,一种为NC语句。以下类型的程序段均属宏程序语句:包含算术或逻辑运算(=) 的程序段。包含控制语句( 例如, GOT0 ,DO END)的程序段。包含宏程序调用指令( 例如用 G65 ,G66 ,G67或其他 G 、M代码调用宏程序) 的程序段。除了宏程序语句以外的任何程序段都是NC语句。2宏程序语句与NC语句的区别宏程序
65、语句即使置于单程序段运行方式,机床也不停止运行。但是, 当参数 NO.6000#5SBM设定为1 时,在单程序段方式中也执行单程序段停止( 这只在调试时才使用) 。2) 在刀具半径补偿方式C中宏程序语句段不作为不移动程序段处理。 3与宏程序语句有相同功能的NC语句 NC语句含有子程序调用程序段,包括M98 、M和 T 代码调用子程序的指令,但只包括子程序调用指令和地址0、N、P、L。2)NC 语句含 M99的程序段,但只包括地址O、N、P、L。4宏程序语句的处理为了平滑加工,CNC会预读下一个要执行的NC语句,这种运行称为缓冲。在刀具半径补偿方式(G41,G42)中, CNC为了找到交点会提前
66、预读2 或 3 个程序段的NC语句。算术表达式和条件转移的宏程序语句在它们被读进缓冲寄存器后立即被处理。 CNC不预读以下三种类型的程序段:包含M00 ,M01 ,M02或 M30的程序段;包含由参数NO.3411NO.3420设置的禁止缓冲的M代码的程序段;包含G31的程序段。八、用户宏程序的使用限制1MDl 运行在 MDl 方式中,不可以指定宏程序,但可进行下列操作:调用子程序;调用一个宏程序,但该宏程序在自动运行状态下不能调用另一个宏程序。 2顺序号检索用户宏程序不能检索顺序号。3单程序段 1)除了包含宏程序调用指令、运算指令和控制指令的程序段之外,可以执行一个程序段作为一个单程序的停止
67、( 在宏程序中 ) ,换言之,即使宏程序在单程序段方式下正在执行,程序段也能停止。 2)包含宏程序调用指令(G65/G66) 的程序段中即使单程序段方式时也不能停止。 3)当设定参数SBM( 参数 No.6000 的#5 位 ) 为 1 时,包含算术运算指令和控制指令的程序段可以停止 ( 即单程序段停止) 。该功能主要用于检查和调试用户宏程序本体注意:在刀具半径补偿C 方式中,当宏程序语句中出现单程序段停止时,该语句被认为不包含移动的程序段,并且,在某些情况下,不能执行正确的补偿( 严格地说,该程序段被当作指定移动距离为0 的移动。 ) 4使用任选程序段跳过( 跳跃功能 ) 在中间出现的“”符
68、号( 即在算术表达式的右边,封闭在 中) 被认为是除法运算符,而不作为任选程序段跳过代码。 5在 EDIT 方式下的运行 1)设定参数NE8(参数 NO 3202 的#0 位) 和 NE9(参数 NO 3202 的#4 位) 为 1 时,可对程序号为 80008999 和 90009999 的用户宏程序和子程序进行保护。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 36 页 - - - - - - - - - 2)当存储器全清时,存储器的全部内容包括宏程序( 子程序
69、) 将被清除。 6复位 1)复位后,所有局部变量和从#100#149 的公共变量被清除为空值。2)设定参数CLV(参数 NO.6001 的 #7 位) 和 CCV(参数 NO.6001 的#6 位) 为 1 时,它们可以不被清除 ( 这取决于机床制诰厂的设定) 。3)复位不清除系统变量#1000#1133。4)复位可清除任何用户宏程序和子程序的调用状态并返回到主程序。7. 程序再启动的显示和 M98一样,子程序调用中使用的M 、T代码不显示。8. 进给暂停在宏程序执行期间,且进给暂停有效时,在宏程序执行完成后机床停止。但复位或出现报警时,机床停止。9. 中可以使用的常数值表达式中可以使用的常数
70、值在“+0.0000001 +99999999” 以及 “ -99999999 -0.0000001 ”范围内的8 位十进制数,如果超过这个范围,会触发P/S 报警 No.003。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 36 页 - - - - - - - - - 第四节常用的宏程序实例一、铣平面的宏程序按照加工工艺的要求,一般是先面后孔。平面加工是最基本、最简单的加工方式,常见的平面加工是矩形平面的加工。如图5-1 所示 ( 零件 X、Y 对称中心为G54原点
71、,加工刀具为高速钢 12 圆柱立铣刀 ) 。(#1)结束点刀具开始点(#2)(#3)(#14)=#380XY第n次循环结束时刀具位置刀具abdc局部放大图点a:Ya=#4点b:Yb=#4-#14=#4-0.8*#3零件上边缘点 c:Yc=#2/2刀具上边缘点 d:Yd=Yb+#3/2加工循环判断是 Yc Yd,判断表达式为:#4 LT #2/2+0.3*#3图 5-1 平面加工示意图程序正文注释说明% #1=75.0; #2=43.0; #3=12.0; #4=-#2/2; #14=0.8*#3; #5=#1+#3/2+2.0; G54G90G00X0Y0Z50.0S700M3; X#5Y#4
72、; Z0; WHILE#4LT#2/2+0.3*#3 DO1; G01X-#5F100; #4=#4+#14; Y#4; X#5; #4=#4+#14; Y#4; END1; G0Z50.0; M30; % 矩形 X 方向边长Y方向边长( 平底立铣刀 ) 刀具直径Y坐标设为自变量,赋初始值为-#2/2 变量 #14,即步距 (0.8倍刀具直径 ) 开始点的 X 坐标程序开始,定位于G54原点( 即矩形中心 ) 上方快速移至开始点位置下切至 Z0 平面 ( 假设此为加工平面) 如果刀具还没有加工到上边缘,继续以下循环开始铣削, G01移动至左边Y坐标即变量 #4 递增 #14 Y坐标向正方向G0
73、1移动 #4 G01移动至右边Y坐标即变量 #4 递增 #14 Y坐标向正方向G01移动 #14( 完成一个循环 ) 循环 1 结束循环结束,提刀至安全高度。程序结束二、单孔的铣削加工宏程序(圆孔直径D与刀具直径比值D/3)单个孔的铣削加工宏程序主要是利用了数控系统的螺旋插补功能G02 和 G03,可应用于圆孔的各种加工,例如:开粗(无论有无预先钻底孔),扩孔,精铣(实现以铣代铰、以铣代镗)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 36 页 - - - - - -
74、 - - - 等。如图 5-2 所示,设零件孔心为G54原点,顶面为Z0,采用顺铣方式。加工刀具为高速钢12 圆柱立铣刀。XYZ0(#1)(#2)(#3)(#5)0Z-16图 5-2 单孔螺旋铣削加工示意图考虑宏程序的适应性,假设为不通孔加工,即需准确控制加工深度,如果加工零件为通孔,只需把加工深度设置比通孔深度略大即可。如果要逆铣,只需把下面程序中两处的“G03 ”改为“ G02 ”即可,其余部分完全不变。程序正文注释说明% #1=23.0; #2=16.0; #3=12.0; #4=0; #17=4.0; #5=#1-#3/2; G54G90G00X0Y0Z50.0S1000M3; G0X
75、#5; Z-#4+1.0; G01Z-#4F50; WHILE#4LT#2DO1; #4=#4+#17; G03I-#5Z-#4F100; END1; G03I-#5; G01X#5-1.0; G0Z50.0; M30; % 圆孔直径圆孔深度( 平底立铣刀 ) 刀具直径Z坐标 ( 绝对值 ) 设为自变量,赋初始值为0 Z坐标 ( 绝对值 ) 每次递增量 ( 每层切深 q) 螺旋加工时刀具中心的回转半径程序开始,定位于G54原点上方安全高度快速移动到起始点上方下降至 Z-#4 面以上 1. 处( 即 Z1.处) Z方向 G01下降至当前开始加工深度(Z-#4) 如果加工深度 #4圆孔深度 #2,
76、循环 1 继续Z坐标 ( 绝对值 ) 依次递增 #17( 即层间距 q) G03逆时针螺旋加工至下一层循环 1 结束到达圆孔深度 ( 此时 #4=#2) 逆时针走一整圆G01向中心回退1. G00快速提刀至安全高度程序结束注意:加工不通孔时,应对#17 的赋值有所要求,即#2 必须能被 #17 整除,否则孔底会有余量,或加工深度超差。三、多个孔的铣削加工宏程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 36 页 - - - - - - - - - 如图 5-3 所示
77、 ( 毛坯中心为G54原点,顶面为Z0 面,全部采用顺铣。加工刀具为高速钢12 圆柱立铣刀 ) 。本实例是学习宏程序调用的指令,以及在主程序中对调用的宏程序进行相关的自变量赋值。XY0Z0Z-15图 5-3 多个孔的螺旋铣削主程序注释说明% G54G90G00X0Y0Z50.0S700M03 G52X-18.0Y-11.0 G65P2003A18.0B16.0C12.0I0Q4.0F80 G52X15.0Y7.0 G65P2003A27.0B5.0C12.0I0Q2.5F80 G65P2003A16.0Bl5.0C12.0I5.0Q2.5F80 G52X0Y0 M30 % 程序定位于原点安全高
78、度在18 孔心处建立局部坐标系调用宏程序O2003,精加工 18 的通孔在27 处建立局部坐标系调用宏程序O2003,精加工 27 的台阶孔调用宏程序O2003,精加工 16 的通孔取消局部坐标系程序结束主程序中自变量赋值的说明#1=(A) #2=(B) #3=(C) #4=(I) #9=(F) #17=(Q) 圆孔直径圆孔深度( 平底立铣刀 )刀具直径Z 坐标 ( 绝对值 ) 设为自变量进给速度Z 坐标 ( 绝对值 ) 每次递增量 ( 切深即层间距q) 子程序 O2003 注释说明% #5=#1-#3/2 G00X#5 Z-#4+1.0 G01 Z-#4 F#9*0.2 螺旋加工时刀具中心的
79、回转半径G00移动到起始点上方G00下降至 Z-#4 面以上 1.0 处Z 方向 G01下切至当前开始加工深度(Z-#4) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 36 页 - - - - - - - - - WHILE#4LT#2 DO1 #4=#4+#17 G03I-#5Z-#4F#9 END1 G03I-#5 G01X#5-1.0 G00Z50.0 M99 % 如果加工深度 #4圆孔深度 #2,循环 1 继续Z 坐标 ( 绝对值 ) 依次递增 #17( 即
80、层间距 q) G03逆时针螺旋加工至下一层循环 1 结束到达圆孔深度 ( 此时 #4=#2) 逆时针走一整圆G01向中心回退1。G00快速提刀至安全高度宏程序结束返回注意: 1)在主程序中对自变量进行赋值时,需特别注意B、I 、Q :B:即#2,内腔深度 ( 绝对值 ) 。上述的宏程序中均以Z0 面为基准,即指从Z0面到预定平面的深度。对于18 通孔来说,应该取B16.0 ;对于 27 台阶孔来说,取B5.0 ;对于 16 通孔来说,则应是B15.0 。I :即#4,Z 坐标 ( 绝对值 ) 设为自变量,与上相仿也都是以Z0 面为基准。对于18 通孔来说,是从Z0 面开始第一层加工,应是I0
81、;对于 27 台阶孔来说,也是从Z0 面开始第一层加工,显然也应是I0 :对于 16 通孔来说,是从Z-5.0 面开始第一层加工,则应是I5.0 。Q:即#17,应确保内腔实际加工深度能被#17 整除。 2)如果需要精确控制圆孔直径尺寸,在合理选用和确定其他加工参数后,只需调整#1 即 A的值即可。四、圆孔型腔的铣削加工宏程序对于大直径的圆孔类型腔(圆孔直径D 与刀具直径比值D/ 3) ,使用宏程序可以方便的完成其加工。如图 5-4 所示, 圆孔中心为G54原点, 顶面为 Z0 面, 圆孔内腔尺寸为: 直径深度 =#1#2。加工刀具为高速钢12 圆柱立铣刀,加工方式为:平底立铣刀每次从中心下刀
82、,向X 正方向走第一段距离,逆时针走整圆,采用顺铣,走完最外圈后提刀返回中心,进给至下一层继续,直 至 到 达 预 定深 度 。 如果 特 殊 情 况 下要 逆 铣 ,只 需把 下 面 程序 中 的 “G03I-#9” 改 为“G02I- #9”即可,其余部分完全不变。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 36 页 - - - - - - - - - XYZ0(#1)(#2)(#3)0123Z-21图 5-4 圆孔型腔铣削加工示意图程序正文注释说明% #1=6
83、5.0; #2=21.0; #3=12.0; #4=0; #17=3.0; #5=0.8*#3; #6=#1-#3; G54G90G00X0Y0Z50.0S700M3; WHILE#4LT#2DO1; Z-#4+1.0; G01Z-#4+#17F50; #7=FIX#6/#5; #8=FIX#7/2; WHILE#8GE0DO2; #9=#6/2-#8*#5; G01X#9F100; G03I-#9; #8=#8-1.0; END2; G00Z50.0; X0Y0; #4=#4+#17; END1; M30; % 圆孔直径圆孔深度( 平底立铣刀 ) 刀具直径Z坐标 ( 绝对值 ) 设为自变量,
84、赋初始值为0 Z坐标 ( 绝对值 ) 每次递增量 ( 每层切深即层间距q) 步距设为刀具直径的80( 经验值 ) 刀具 ( 中心 ) 在型腔加工时的最大回转直径程序开始定位于G54原点上方安全高度如果加工深度 #4内腔深度 #2,循环 1 继续快速下降至当前加工平面Z-#4 以上 1.0 处Z方向 G01下降至当前加工深度(Z-#4 处下降 #17) 刀具在内腔最大回转直径除以步距并上取整#7 是奇数或偶数都可上取整,重置#8 为初始值如果#80(即还没有走到最外一圈) ,循环 2 继续每圈在 X方向上移动的距离目标值( 绝对值 ) 以 G01移动至图中 1 点逆时针走整圆#8 依次递减至0
85、循环 2 结束 ( 最外一圈已走完 ) G00提刀至安全高度G00快速回到 G54原点,准备下一层加工Z坐标 ( 绝对值 ) 依次递增 #17( 层间距 q) 循环 1 结束 ( 此时#4=#2) 程序结束五、矩形型腔的铣削加工宏程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 36 页 - - - - - - - - - 在实际加工中,加工矩形型腔要比加工圆形型腔的情况多。如图 5-5 所示,矩形型腔中心为G54原点,顶面为 Z0 面,加工刀具为高速钢12 立铣刀。
86、矩形内腔尺寸为:长宽深=#1#2#4。加工方式为:使用平底立铣刀,每次从中心垂直下刀,以回字形走刀,先Y后 X,全部采用顺铣,走完最外圈后提刀返回中心,进给至下一层继续,直至到达预定深度。XYZ0(#4)(#1)(#2)(#3)#3/2#6=#3 80%#3/2#6=#3 80%12345Z-15图 5-5 矩形型腔铣削加工示意图程序正文注释说明% #1=75.0; #2=43.0; #3=12.0; #4=15.0; #5=0; #17=3.0; #6=0.8*#3; #7=#1-#3; #8=#2-#3; G54G90G00X0Y0Z50.0S700M03; WHILE#5LT#4DO1;
87、 Z-#5+1.0; G01Z-#5+#17F50; IF#1GE#2GOTO1; N1#9=FIX#8/#6; IF#1GE#2GOTO3; IF#1LT#2GOTO2; N2#9=FIX#7/#6; IF#1LT#2GOTO3; 矩形内腔 X 方向边长矩形内腔 Y 方向边长( 平底立铣刀 ) 刀具直径矩形内腔深度Depth( 绝对值 ) Z坐标 ( 绝对值 ) 设为自变量,赋初始值为0 Z坐标 ( 绝对值 ) 每次递增量 ( 每层切深即层间距q) 步距设为刀具直径的80( 经验值 ) 刀具 ( 中心 ) 在内腔中 X方向上最大移动距离刀具 ( 中心 ) 在内腔中 Y方向上最大移动距离程序开
88、始,定位于G54原点上方安全高度如果加工深度 #5内腔深度 #4,循环 1 继续快速下降至当前加工平面Z-#5 以上 1.0 处Z向 G01下降至当前加工深度(Z-#5 处下降 #17) 如果#1#2,跳转至N1行Y方向上最大移动距离除以步距,并上取整如果#1#2,跳转至N3行( 此时已执行完N1行) 如果 #1#2,跳转至 N2行X方向上最大移动距离除以步距,并上取整如果 #1#2,跳转至 N3行( 此时已执行完N2行) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共
89、 36 页 - - - - - - - - - N3#10=FIX#9/2; WHILE#10GE0DO2; #11=#7/2-#10*#6; #12=#8/2-#10*#6; Y#12 F100; X-#11; Y-#12; X#11; Y#12; X0; #10=#10-1.0; END2; G00Z50.0; X0Y0; #5=#5+#17; END1; M30; % #9 是奇数或偶数都上取整,重置#10 为初始值如#l0 0(即还没有走到最外一圈) ,循环 2 继续每圈在 X方向上移动的距离目标值( 绝对值 ) 每圈在 Y方向上移动的距离目标值( 绝对值 ) 以 G01移至图中 1
90、点以 G01移至图中 2 点以 G01移至图中 3 点以 G01移至图中 4 点以 G01移至图中 5 点以 G01移至中心点,一圈结束#10 依次递减至0 循环 2 结束 ( 最外一圈已走完 ) G00提刀至安全高度G00快速回到 G54原点,准备下一层加工Z坐标 ( 绝对值 ) 依次递增 #17( 层间距 q) 循环 1 结束 ( 此时#5=#4) 程序结束注意: 1)如果特殊情况下要逆铣,只需把#12 前面加上负号即可。 2)如果上述 #1、#2 值为最终尺寸,则粗加工时只需把程序中的#1、#2 值适当减小。例如内腔轮廓单边拟预留0.3mm余量,可设置为(#1-0.6)及(#2-0.6)
91、。 3)#17的设置需特别小心,需确保内腔深度#4 能被 #17 整除。 4)如果内腔深度拟预留0 3mm 余量, 可按理论值编程, 实际加工时把G54的 Z原点提高 0.3mm 。 5)例中#1 #2,如果 #1#2,由于程序中有相应语句进行自动判断,程序也完全通用。 6)由于每层都在中心垂直下刀,加工前可以考虑先行在内腔中心加工一个尺寸与刀具直径相近的圆孔以利于更顺利地下刀,否则一定要使用刀刃过中心的刀具,而且Z 方向下刀速度一定要足够慢。 7)在四个角上有残留余量,如果要去除,可在加工型腔前,在四个角上提前钻孔去除;或采用电加工方法去除残留的余量。六、曲线类零件的铣削加工宏程序曲线类零件
92、的编程,通常是用CAD/CAM软件来编程比较方便,能够用手工编程的曲线零件,其曲线是平面曲线,这些零件的曲线可以是二次曲线( 椭圆、双曲线、抛物线) ,也可以是其他平面曲线( 摆线、渐开线、螺线等) 。这类零件的共同特征是曲线能用直角坐标( 或极坐标) 参数方程来表达零件轮廓,这为使用宏程序编程提供了非常有利的数学基础和必要条件。下面以一个阿基米德螺线形凸轮的凹槽部分加工为例,介绍相关的宏程序编程方法。为了突出重点,这里尽量淡化其他各种加工因素,主要说明非圆曲线( 阿基米德螺线) 加工的宏程序表述。如图 5-6 所示,凸轮曲线由两段阿基米德螺线和半径分别为20mm和 40mm的两段圆弧组成。名
93、师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 36 页 - - - - - - - - - 图 5-6 阿基米德螺线形凸轮加工时,圆弧中心为XY的原点,凹槽上表面为Z0。刀具中心按曲线轮廓走刀,槽宽由刀具尺寸来保证。采用子程序( 宏程序 )02000 来描述凸轮曲线轮廓。在+X(即=0) 处开始加工,当刀具下到槽底时( 假设此为精加工,如果需要考虑粗加工,可以先用直径略小的刀具等高逐层加工 ) ,调用子程序进行加工。第 1 段阿基米德螺线,以角度 为自变量, =0200
94、(定义域 ) ,极坐标参数方程式为:R=20(1+ /200) , R=2040mm( 值域 ) ;第 2 段阿基米德螺线,以角度为自变量, =230330( 定义域 ) ,极坐标参数方程式为: R=40-20( -230)/100 ,R=4020mm( 值域 ) ;其余两段均为30的圆弧 ( 半径分别为20、40mm) 。主程序 O0006 注释说明% G54G90G00X0Y0Z50.0S700M03; Z5.0 M98P2006F120 G0Z50.0 M30 % 程序开始,定位于G54原点上方安全高度快速下降至加工平面Z5.0 处Z向 G01下降至加工深度调用子程序加工凹槽G00提刀至
95、安全高度程序结束子程序 O2006 注释说明% G16 #1=0 #11=0.5 #2=200.0 WHILE#1 LT#2 DO1 #3=20.0*1.0+#1/#2 G90 G01 X#3 Y#1 F100 Z-2.0 F50 #1=#1+#11 极坐标方式生效第 1 段阿基米德螺线角度为自变量,赋初始值0 角度 (#1) 递增量 ( 经验值 ) 第 1 段阿基米德螺线角度的终止值如果#1#2,循环1 继续计算第 1 段阿基米德螺线的极径R 以 G01直线逼近第 1 段阿基米德螺线Z方向 G01下切至加工深度Z-2.0( 根据需要修改 ) 自变量 #1 依次递增 #11 名师资料总结 -
96、- -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 27 页,共 36 页 - - - - - - - - - END1 G03 X40.0Y230.0R40.0 #4=230.0 #14=0.5 #5=330.0 WHILE#4LT#5 DO2 #6=40.0-20.0*#4-230.0/100.0 G90 G01 X#6 Y#4 #4=#4+#14 END2 G03X20.0Y0R20.0 G15 M99 % 循环 1 结束加工 R40圆弧,至第2 段阿基米德螺线起点第 2 段阿基米德螺线角度为自变量
97、赋初始值230.0 角度 (#4) 递增量 ( 经验值 ) 第 2 段阿基米德螺线角度的终止值如果 #4#21) 快速提刀至安全高度程序结束注意:1) 本例中的斜体部分程序是描述加工零件的轮廓,类似零件的加工只需要替换斜体部分的程序,宏程序的其他部分无须改动。2) 本例中的斜体部分程序是描述外( 封闭 ) 轮廓的,但是对于加工内( 封闭 ) 轮廓也完全适用,只需要注意的是在G41语句前应选择合理的下刀点。3) 斜体部分的程序只是针对一般的带有刀具半径补偿G41或 G42的常规编程方法,如果在该轮廓的加工程序中没有应用刀补G41或 G42 ,而是直接对刀具中心运动轨迹进行编程,则需把程序中的语句
98、“ #23=#19 - #22”更改为“ #23= - #22”,其余部分不需再作其他处理。 4)在本例中采用自下而上的走刀方式,如果要改用自上而下的方式,可按表5-16 修改。表 5-16 两种走刀方式程序比较自下而上自上而下 #11=0 #11=#21 WHILE#11LE#2 DO1 WHILE#11GT0 DO1 #11=#11+1.0 #11=#11-1.0 八、球头铣刀加工45外倒角用平底刀来完成倒角加工,如果加工步距小,则加工耗时,如果步距大,虽然角度准确,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
99、理 - - - - - - - 第 29 页,共 36 页 - - - - - - - - - 但表面粗糙度不好,主要是在粗加工时用。精加工一般是用球头铣刀来加工,如图5-8 所示,是用球头铣刀加工45外倒角的例子。这里假设顶面为Z0 面,零件中心为G54原点,加工刀具为 10 的球头铣刀。(#20)(#19)(#21)图 5-8 球头铣刀加工45外倒角程序 O3007 注释说明% #19=5.0; #20=45.0; #21=6.0; #11=0; G54G90G0X0Y0Z30.0S800M3; WHILE#11LE#21 DO1; X30.0Y0; Z2.0; G01Z-#21+#11F
100、200; #22=#11*TAN#20+#19*1-COS#20; #23=#19-#22; G10L12P01R#23; G41D01X20.0Y0F800; Y-20.0; X-20.0; Y0; G02X0Y20.0R20.0; G02X20.0Y0R20.0; #11=#11+1.0; G0Z30.0; G40; END1; G0Z50.0; M30; % 球头铣刀半径radius 倒角斜面与垂直方向夹角倒角斜面的高度Height dZ(绝对值 ) 设为自变量,赋初始值0 程序开始,刀具初始化,定位于原点上方如加工高度 #11#21,加工循环开始快速移动至 (轮廓以外的 ) 下刀点(
101、X30.0 Y0 )上方Z向快速降低至Z2.0 处以 G01速度进给至当前加工深度每次爬高 dZ 所对应的刀补的变化值每层对应的刀具半径补偿值变量 #23 赋给刀具半径补偿值D01 以 G01速度进给至轮廓上的起点斜体部分的程序是描述零件轮廓(大端轮廓)#11(dZ) 依次递增 l.0(层间距 ) 快速提刀至安全高度取消刀补循环 1 结束 ( 此时#11#21) 快速提刀至安全高度程序结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 30 页,共 36 页 - - - - - -
102、- - - 九、球头铣刀加工R倒圆角如图 5-9 所示,是用球头铣刀加工倒圆角的例子。这里假设顶面为Z0面,零件中心为G54原点,加工刀具为10 的球头铣刀。(#20)(#11)(#19)图 5-9 球头铣刀加工R倒圆角程序 O4000 注释说明% #19=5.0 #20=6.0 #11=0 #21=#19+#20 G54 G90 G00 G40 X0Y0 Z50.0 S800 M03 WHILE#11LE90.0 DO1; X30.0 Y0 #22=#21*COS#11 #23=#21*SIN#11-1.0 #24=#22-#20 Z2.0 G01 Z#23 F300 G10 L12 P01
103、 R#24 G41 D01 X20.0 Y0 F800 Y-20.0 X-20.0 Y0 G02X0Y20.0R20.0 G02X20.0Y0R20.0 #11=#11+1.0 G00Z20.0 G40 END1 G00Z50.0 M30 % (球头铣刀 ) 刀具半径 radius 周边倒 R面圆角半径Radius 角度设为自变量,赋初始值为0 倒 R面圆心与刀心连线距离( 常量 ) 程序开始,定位于原点上方如果加工角度 #1190,加工循环开始快速移动至下刀点(X30.0 Y0 )上方任意角度时刀轴线到倒R面圆心水平距离任意角度时刀尖的Z 坐标值 ( 非绝对值 ) 任意角度时对应的刀具半径补
104、偿值Z 向快速降低至Z2.0 以 G01速度进给至当前加工深度变量 #24 赋给刀具半径补偿值D01 以 G01速度进给至轮廓上的起点斜体部分的程序是描述零件轮廓(大端轮廓)角度 #11 每次以 1.0 递增快速提刀至安全高度取消刀补 ( 非常重要 ) 循环 1 结束 ( 此时 #1190) 快速提刀至安全高度程序结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 31 页,共 36 页 - - - - - - - - - 注意:1) 本例中的斜体部分程序是描述加工零件的轮廓,类似零
105、件的加工只需要替换斜体部分的程序,宏程序的其他部分无须改动。2) 本例中的斜体部分程序是描述外( 封闭 ) 轮廓的,但是对于加工内( 封闭 ) 轮廓也完全适用,只需要注意的是在G41语句前应选择合理的下刀点。3) 程序中角度变量#11 的递增可以根据粗、精加工等不同工艺要求而定。 4)在本例中采用自下而上的走刀方式,如果要改用自上而下的方式,可按表5-17 修改。表 5-17 两种走刀方式程序比较自下而上自上而下 #11=0 #11=90 WHILE#11LE90 DO1 WHILE#11GT0 DO1 #11=#11+1.0 #11=#11-1.0 十、球头铣刀加工凹槽底部的倒R圆角有些凹槽
106、零件的底部,设计有内凹的倒圆角,这类的倒圆角可以下面的宏程序来完成其加工。如图5-10 所示,是用球头铣刀加工凹槽底部的倒R 圆角的例子。这里假设顶面为Z0面,零件中心为G54原点,加工刀具为10 的球头铣刀。#19#11#20图 5-10 球头铣刀加工凹槽底部的倒R圆角程序 O5000 注释说明% #4=10.0 #19=5.0 #20=6.0 #11=90.0 #21=#20-#19 G54 G90 G00 G40 X0 Y0 Z50.0 S800 M03 WHILE#11GE0 DO1 X0.0 Y0 #22=#21*COS#11 #23=#4-#19-#21*SIN#11 #24=#2
107、0-#22 凹槽深度(球头铣刀 ) 刀具半径 radius 周边倒 R面圆角半径Radius 角度设为自变量,赋初始值为90 倒 R面圆心与刀心连线距离( 常量 ) 程序开始,定位于原点上方如果加工角度 #110,加工循环开始快速移动至下刀点(X0.0 Y0 )上方任意角度时刀轴线到倒R面圆心水平距离任意角度时刀尖的Z 坐标值 ( 非绝对值 ) 任意角度时对应的刀具半径补偿值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 32 页,共 36 页 - - - - - - - - - Z
108、2.0 G01 Z#23 F300 G10 L12 P01 R#24 G41 D01 X20.0 Y0 F800 Y5.0 G03X5.0Y20.0R15.0 G01X-5.0 G03X-20.0Y5.0R15.0 G01Y-14.0 G03X-14.0Y-20.0R6.0 G01X14.0 G03X20.0Y-14.0R6.0 G01Y0 #11=#11-1.0 G00Z20.0 G40 END1 G00Z50.0 M30 % Z 向快速降低至Z2.0 以 G01速度进给至当前加工深度变量 #24 赋给刀具半径补偿值D01 以 G01速度进给至轮廓上的起点斜体部分的程序是描述零件轮廓(大端轮
109、廓)角度 #11 每次以 1.0 递减快速提刀至安全高度取消刀补 ( 非常重要 ) 循环 1 结束 ( 此时 #110) 快速提刀至安全高度程序结束注意:1) 本例中的斜体部分程序是描述加工零件的轮廓,类似零件的加工只需要替换斜体部分的程序,宏程序的其他部分无须改动。2) 程序中角度变量#11 的递增可以根据粗、精加工等不同工艺要求而定。 3)在本例中采用自下而上的走刀方式,如果要改用自上而下的方式,可按表5-18 修改。表 5-18 两种走刀方式程序比较自下而上自上而下 #11=0 #11=90 WHILE#11LE90 DO1 WHILE#11GE0 DO1 #11=#11+1.0 #11
110、=#11-1.0 十一、大直径内螺纹的铣削加工宏程序小直径的内螺纹一般采用丝锥攻丝完成,大直径的内螺纹在数控机床上可通过螺纹铣刀铣削完成。螺纹铣刀的寿命是丝锥的十多倍,不仅寿命长,而且对螺纹直径尺寸的控制十分方便,螺纹铣削加工已逐渐成为螺纹加工的主流方式。大直径的内螺纹铣刀一般为机夹式,以单刃结构居多,与车床上使用的内螺纹车刀相似。内螺纹铣刀在加工内螺纹时,编程一般不采用半径补偿指令,而是直接对螺纹铣刀刀心进行编程,如果没有特殊需求,应尽量采用顺铣方式。表 5-19 为内螺纹铣刀铣削内螺纹的工艺分析。表 5-19 内螺纹铣刀铣削螺纹的工艺分析主轴转向Z轴移动方向螺纹类别右旋螺纹左旋螺纹插补指令
111、铣削方式插补指令铣削方式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 33 页,共 36 页 - - - - - - - - - 正转 (M03)自上而下G02 逆铣G03 顺铣自下而上G03 顺铣G02 逆铣说明1单向切削螺纹铣刀只允许单方向切削(主轴M03 )2机夹式螺纹铣刀适用于较大直径( 如D25mm) 的螺纹加工表 5-20 是编程过程中涉及到的切削参数及其参数的计算公式。表 5-20 切削参数符号及计算公式切削参数计算公式单位切削速度 (Cutting Speed) V
112、c Vc =d3.14 n1000 m/min 主轴转速 (Spindle Speed) n n= Vcl000 (d3.14) r/min 每刃进给 (Feed per Tooth) fz fz = F (z n) mm/z 每分钟进给 (Table Feed) Vf Vf =F = fzzn mm/min 注: 1表中 d 为工件外圆的直径,单位为mm 。2上表中的“ fz”在教科书中通常称为“每齿进给量”,在此为了避免与齿形的表达相混淆,特改称为“每刃进给量”XY(#1)(#3)(#4)0图 5-11 内螺纹的铣削加工轨迹下面实例为常见的右旋内螺纹的铣削加工,加工轨迹的投影见图5-11,
113、使用机夹式单齿内螺纹铣刀,只能承受单向切削(M03) ,以下宏程序的Z 轴走刀方式为自下而上,Z0 面为螺纹顶面,采用G03 逆时针螺旋插补,铣削方式为顺铣。程序正文注释说明 ( 右旋螺纹, G03自下而上 M03顺铣 ) % #1=40.0 #2=2.5 #3=#1-1.1*#2 #4=19.0 #5=36.0 #6=ROUND1000*150/#4*3.14 #7=0.1*1.0*#6 #8=ROUND#7*#1-#4/#1 #9=#1-#4/2 S#6 M03 G54G90G00X0Y0Z30.0 螺纹公称直径D0螺纹螺距 P(必须与刀具标称的螺距范围相符)螺纹底孔直径D1 ( 式中 1
114、.1 为经验值,与被加工材料等因素有关) 螺纹铣刀直径D2螺纹深度 H(绝对值 ) 。从理论切削速度Vc ( 此为 150m/min) 计算出主轴转速n,并四舍五入由铣刀刃数 (z=1) 与每刃进给量(fz=0.1 mm/z) 计算出铣刀边缘切削刃处的进给速度F1由铣刀边缘切削刃处的进给速度F1计算出铣刀中心的进给速度F2, 并四舍五入圆整铣刀中心的回转半径主轴正转程序开始,定位于G54原点(孔心)上方安全高度名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 34 页,共 36 页 -
115、 - - - - - - - - Z-#5 G01 X#9 Y0 F#8 #20=-#5 WHILE#20LE0 DO1 #20=#20+#2 G03 I-#9 Z#20 F#8 END1 G00Z30.0 G01 X0 Y0 M30 % 快速降至孔底部G01直线切入到起始点Z 坐标设为自变量,赋初始值为-#5 如果 #200,循环 1 继续Z 坐标每圈递增 #2( 即螺距 P) G03逆时针螺旋加工至上一层循环 1 结束( 经过 10 圈向上螺旋插补后Z 坐标值为 #20=-24+2.5*10=1.0) G00提刀至安全高度回到孔心程序结束注意:1)如果螺纹底孔直径D1为已知,则直接将其赋值
116、给#3,程序中“ #3=#1-1.1*#2 ”可作为计算公式对螺纹底孔直径D1进行必要的验算。 2)一般情况下螺纹加工在径向上不能一刀就直接精加工到位,而应分若干次切削( 通常分3 次较为适合 ) 。总的 ( 单边 ) 余量是一定的 (#1-#3/2),至于每次切削的余量分配,如果要求很高则要进行必要的计算使余量从大到小合理分配,主要保证最后一刀精加工时的余量控制在较小的合理数值范围( 如 0.1 0.15mm 之间 ) ,一般情况下操作者可以凭经验酌情给出。具体做法是对程序中的#1( 螺纹公称直径D0) 或#4( 螺纹铣刀直径D2) 进行分次赋值, 建议最好固定针对一个变量( 如 #1) 进
117、行赋值,以利于思路清晰,避免犯错。 3)这里假定螺纹铣刀的刀尖就是螺纹铣刀的最低点,如果刀尖高过螺纹铣刀的中央刀身部分,则在Z 向对刀时需更加小心。 4)由于是自下而上爬升,Z方向总的爬升高度( 与循环圈数直接相关) 不需要精确控制,因此程序中相应的判断条件比较简单,螺旋插补结束时刀具应该高于螺纹孔的顶面(Z0 面) ,此时刀具已完全脱离工件,因此退刀动作也可以相应简化,直接提刀至安全高度即可。 5)这里假定螺纹对深度有要求,即不允许有进刀行程,只能以法向进刀,在理论上进刀处会产生接刀痕,但仅仅集中在一个点上,对螺纹表面质量实际影响不大。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 35 页,共 36 页 - - - - - - - - - 练 习 五一、问答题1. 用宏程序指令编写的加工程序与普通程序相比有什么区别?2. 那类零件适宜使用宏程序指令来编写加工程序?名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 36 页,共 36 页 - - - - - - - - -