用户宏程序加工训练
- 格式:doc
- 大小:333.50 KB
- 文档页数:16
东南大学工业发展与培训中心欢迎您!用户宏程序骆号luohao_seu@用户宏程序作用我们的不同的数控系统给我们提供了基本的G01,G02,G03和一些复合循环指令,但是复合循环指令的基础还是基本的直线和圆弧插补构成,因此当遇到椭圆,抛物线或者二次曲线的时候我们就无法下手,但是不同的数控系统留下一些参数空间给我们用户使用,并且提供了一些三角函数,算术运算符和逻辑关系运算等功能,对这些复杂图形的加工有了很大的帮助,学好用户宏程序比较重要。
A、B类宏程序在fanuc系统中,分为A类和B类宏程序,A类宏程序是用户根据实际需要灵活编制加工程序,而B类宏程序使用G65、G66采用参数值传递的方法传递参数变量,实现对一系列轮廓相似,但是尺寸变化的零件的加工。
两者之间有着很大的相似性,因此这里主要讲解A类宏指令,B类宏指令请参阅机床说明书或编程指导书。
基本概念变量:变量是指在程序的运行过程中随时可以发生变化的量。
变量表示:用#加变量号指定,如#1,表达式也可以用于指定变量,但是必须用[]刮起来。
例如#1=10;#[#1]就表示#10里面的数值。
变量范围:-1047到-10-29,0,10-29到1047。
在变量定义的过程中,小数点可以省略。
基本概念变量类型:空变量#0;局部变量#1-#33;公共变量:#100-#999系统变量:#1000-,主要功能如下:读写CNC 运行的各种数据,如刀具补偿。
系统变量#1000-#100-#199初始化为空,断电消失,#200-#999断电不消失。
公共变量#100-#199#200-#999该变量只能在宏程序中存储数据,调用宏程序时对局部变量赋值,不能跨程序或者循环赋值。
局部变量#1-#33变量为空,不能赋值给该变量空变量#0功能变量类型变量号基本概念变量引用除了O,N,/(斜线)外,全部的地址都可以使用,如:X#1(直接使用);X-#2(变量值补码使用);#3=#4,#5=1000(变量定义);#1=#2+#3-#4-100,X[#2+#3+100](变量算术式定义)同一单节和地址不能定义变量,必须分开定义,如X#1=#3+100要改写成#1=#3+100;X#1;如果变量重复赋值,以最后一次赋值为准,如#1=100,#1=200,#2=200+#1;#3=#1+#2;则最后计算结果为#1=200,#2=400,#3=600。
第一节用户宏程序加工训练用户宏功能是提高数控机床性能的一种特殊功能,使用中,通常把能完成某一功能的一系列指令像子程序一样存入存储器,然后用一个总指令代表它们,使用时只需给出这个总指令就能执行其功能。
用户宏功能主体是一系列指令,相当于子程序体。
既可以由机床生产厂提供,也可以由机床用户自己编制。
宏指令是代表一系列指令的总指令,相当于子程序调用指令。
用户宏功能的最大特点是,可以对变量进行运算,使程序应用更加灵活、方便。
FANUC系统宏程序编程一变量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。
使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100G01 X#1 F300说明:变量的表示计算机允许使用变量名,用户宏程序不行。
变量用变量符号(#)和后面的变量号指定。
例如:#1表达式可以用于指定变量号。
此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]变量的类型变量根据变量号可以分成四种类型变量号变量类型功能#0 空变量该变量总是空,没有值能赋给该变量.#1-#33 局部变量局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空.调用宏程序时,自变量对局部变量赋值,#100-#19 9#500-#99 9公共变量公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失.#1000 系统变量系统变量用于读和写CNC运行时各种数据的变化,例如,刀具的当前位置和补偿值.变量值的范围局部变量和公共变量可以有0值或下面范围中的值:1047-到1029--或1029-到1047如果计算结果超出有效范围,则发出P/S报警NO.111.小数点的省略当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1的实际值是123.000。
巧用宏程序编程提高加工效率2010-04-27 11:24:49 来源:我的网站浏览:555次陈亚岗(江苏省盐城技师学院数控技术系江苏盐城224002)【摘要】宏程序在数控编程中应用较为广泛,其典型的作用是可以简化程序,可以实现常规程序无法实现的加工功能,本文将以椭圆为例,利用宏程序,通过平移轨迹法实现高效加工椭圆的粗加工循环功能。
【关键词】数控编程用户宏程序椭圆提高一、用户宏程序简介编程工作中,我们经常把能完成某一功能一系列指令像子程序那样存入存储器,用一个总指令来代表它们,使用时只需给出这个总指令就能执行其功能。
所存入这一系列指令称为用户宏程序本体,简称宏程序。
这个总指令称作用户宏程序调用指令。
编程时,编程员记住宏指令而不必记住宏程序。
用户宏程序与普通程序区别在于用户宏程序本体中,能使用变量,可以给变量赋值,变量间可以运算,程序可以跳转;而普通程序中,只能指定常量,常量之间不能运算,程序只能顺序执行,不能跳转,功能是固定,不能变化。
用户宏功能是用户提高数控机床性能一种特殊功能,批量工件加工中巧用宏程序将起到事半功倍效果。
宏程序本体既可以由机床生产厂提供,也可以由机床用户自己编制。
使用时,先将用户宏主体像子程序一样存入到内存里,然后用子程序调用指令调用。
二、椭圆编程实例分析如图1所示零件图样,利用FANUC 0i TB手工编程加工该椭圆。
图1 零件图样图2 加工轨迹1.常用平移轨迹法加工编程椭圆轮廓加工时,常用平移轨迹法加工,粗加工程序编制如下:该程序执行时空刀很多,且空刀时仍然保持工进速度,这样在加工中浪费时间很严重,加工效率太低。
2.巧用宏程序的高效粗加工编程(1)设计流程图同样采用上面所讲的平移轨迹法加工,但是考虑空刀切削时浪费时间严重,因此,高效粗加工的设计思路是,当刀具加工位置大于毛坯时,就立即退刀返回起点,进行下一次循环,以提高加工效率。
具体设计思路见高效粗加工流程图,见图3。
图3 高效加工流程图(2)高效粗加工程序编制(3)加工轨迹高效粗加工编程轨迹如图4所示,同样采用平移轨迹法加工,当加工过程中,刀具移动位置大于毛坯时,此时刀具迅速退离工件,返回起点,进行下一次循环加工。
一组织教学1 学生进入教室,检查出勤,并做好记录;2 督促学生整齐着装;3 认真检查电脑设备等使用前的情况,做好交接班记录。
二入门指导1复习提问:问:椭圆标准方程是怎样转换编程用方程的?答:椭圆标准方程X2/a2+y2/b2=1可编程坐标系下的方程X2/b2+z2/a2=12 讲解新课:2.1零件图一2.2艺分析(1)零件图分析零件需要手控加工右端面,外轮廓用复合循环套用分支语句编程。
半长轴为20mm ,半短轴10mm,设Z轴步距为0.1mm.(2)确定加工路线粗、精车外轮廓(留0.8mm精加工余量)从右端抛物线开始至左端Ø34外轮廓结束。
(3)选择刀具 35°机加刀,刀尖圆弧半径为0.4mm,刀尖方位为3,置01刀位。
2.3切削用量端面:手控车削外轮廓粗精车:转速S800/S1800 进给速度F0.4/0.1 被吃刀量2/0.22.4程序0101S800M03G0X40.Z2.G1X34.Z-25.G28U0W0M05M00T0101S800M03G0X42.Z2.G73U10.W0R5G73P10Q20U0.2W0.1F0.2N10G0X0Z0#1=0WHILE[#1GE-10.]DO1#2=SQRT[ABS[-10.*#1]]G1X[2*#2]Z[#1]#1=#1-0.1END1G1Z-18.X23.X27.W-2.Z-24.#3=17.5WHILE[#3GE-17.5]DO2#4=10./20.*SQRT[400.-#3*#3] G1X[2.*[#4+8.6]]Z[#3-41.5] #3=#3-0.1END2G1W-6.X34.W-2.X42.N20Z2.G70P10Q20G0x80.z80.m30零件图二:程序(说明:以下程序内容不含内孔程序) M3S800T0101 G0X52.Z2. G73U11.W0 R5G73P1Q2U0.3W0F0.2 N1G0X27.G1Z0 S1500 F0.1 X29.7Z-1.5 Z-16. X30.W-1. Z-22.G2U4.W-2.R2. G1X46. X48.W-1. Z-43.X30.Z-58. Z-62.X48.0W-15. N2G1X52.G70P1Q2G0X150.Z10.;S500M03 T0202G0X55.0Z-62. G0X32.0 G1X28.0F0.1 G1X32.0F0.2 G0X150.0 Z10.0 M3S800T0101 G0X52.Z2. Z-60.; G0X38.; #1=1.42;N5#2=-3.*#1;#3=2.*TAN[57.296*#1];G1X[38.+2.*#2]Z[#3-72.322]F0.05; #1=#1-0.02;IF[#1GE-1.373]GOTO5;G1X48.5;G0X150.Z10.;T0303M3S600G0X33.Z5.G92X29.Z-16.F2.X28.5X28.X27.5X27.4X27.4G0X150.Z10.M5M00T0101G97S800M03G0X50.0Z3.0 G73U7.0W0.5R3G73P3Q4U0.5W0.05F0.2N3G0X34.641Z1.G1Z0.0 S1500 F0.1G3X36.81Z-17.826R20.0G2X42.332Z-22.0R3.0G1X44.0X48.0Z-33.034Z-43.N4G1X50.0G70P3Q4G0X52.Z-60.;G0X38.;#1=1.42;N6#2=-3.*#1;#3=2.*TAN[57.296*#1];G1X[38.+2.*#2]Z[#3-72.322]F0.05; #1=#1-0.02;IF[#1GE-1.373]GOTO6;G1X48.5;G0X150.Z10.;M30零件图三:双曲线程序如下:M3S800T0101G0X100.Z2.#1=-30. (双曲线加工起点在坐标原点中的Z值)WHILE[#1GE-36.6]DO1 (-36.6是将直径X的值70/2代入到图中方程得来) #2=50./30.*SQRT[#1*#1-900.]G1 X[2.*#2] Z[#1+30.] F0.3#1=#1-0.02END1W-10.#1=43.4WHILE[#1GE-[50.*SQRT[42.425*42.425/900.-1.]]]DO1(将直径X的值84.85/2代入到图中第二个方程得到双曲线终点在坐标系中的Z值,此处没有直接写出具体值,而是用方程式表示)#2=30./50.*SQRT[#1*#1+2500.]G1 X[2.*#2] Z[#1-60.] F0.3#1=#1-0.02END1G1W-10.G0X100.Z2.M30零件图四:1 上图抛物线右侧长度:Z=12,12代入方程后得到直径为34.24左侧按方程计算得15.81。
第一节用户宏程序加工训练用户宏功能是提高数控机床性能的一种特殊功能,使用中,通常把能完成某一功能的一系列指令像子程序一样存入存储器,然后用一个总指令代表它们,使用时只需给出这个总指令就能执行其功能。
用户宏功能主体是一系列指令,相当于子程序体。
既可以由机床生产厂提供,也可以由机床用户自己编制。
宏指令是代表一系列指令的总指令,相当于子程序调用指令。
用户宏功能的最大特点是,可以对变量进行运算,使程序应用更加灵活、方便。
FANUC系统宏程序编程一变量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。
使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100G01 X#1 F300说明:变量的表示计算机允许使用变量名,用户宏程序不行。
变量用变量符号(#)和后面的变量号指定。
例如:#1表达式可以用于指定变量号。
此时,表达式必须封闭在括号中。
例如:#[#1+#2-12]变量的类型变量根据变量号可以分成四种类型变量号变量类型功能#0 空变量该变量总是空,没有值能赋给该变量.#1-#33 局部变量局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空.调用宏程序时,自变量对局部变量赋值,#100-#19 9#500-#99 9公共变量公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失.#1000 系统变量系统变量用于读和写CNC运行时各种数据的变化,例如,刀具的当前位置和补偿值.变量值的范围局部变量和公共变量可以有0值或下面范围中的值:1047-到1029--或1029-到1047如果计算结果超出有效范围,则发出P/S报警NO.111.小数点的省略当在程序中定义变量值时,小数点可以省略。
例:当定义#1=123;变量#1的实际值是123.000。
变量的引用为在程序中使用变量值,指定后跟变量号的地址。
当用表达式指定变量时,要把表达式放在括号中。
例如:G01X[#1+#2]F#3;被引用变量的值根据地址的最小设定单位自动地舍入。
例如:当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.改变引用变量的值的符号,要把负号(-)放在#的前面。
例如:G00X-#1当引用未定义的变量时,变量及地址都被忽略。
例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0。
未定义的变量当变量值未定义时,这样的变量成为空变量。
变量#0总是空变量。
它不能写,只能读。
(a) 引用当引用一个未定义的变量时,地址本身也被忽略。
当#1=<空> 当#1=0G90 X100 Y#1 G90 X100 G90 X100 Y#1 G90 X100 Y0(b) 运算除了用<空>赋值以外,其余情况下<空>与0相同。
当#1=<空>时当#1=0时#2=#1 #2=<空> #2=#1 #2=0#2=#*5 #2=0 #2=#*5 #2=0#2=#1+#1 #2=0 #2=#1+#1 #2=0(c)条件表达式EQ和NE中的<空>不同于0。
当#1=<空>时当#1=0时#1EQ#0 成立#1EQ#0 不成立#1 NE #0 成立#1 NE #0 不成立#1 GE #0 成立#1 GE #0 不成立#1 GT #0 不成立#1 GT #0 不成立限制程序号,顺序号和任选程序段跳转号不能使用变量。
例:下面情况不能使用变量:0#1;/#2G00X100.0;N#3Y200.0;二FANUC控制指令说明分支和循环在程序中可用GOTO语句和IF语句改变控制执行顺序。
分支和循环操作共有三种类型: GOTO 语句——无条件分支(转移)IF语句——条件分支;if…,then…WHILE语句——循环;while…1无条件分支GOTO语句控制转移(分支)到顺序号n所在位置。
当顺序号超出1~9999的范围时,产生128号报警。
顺序号可用表达式指定。
格式:GOTO n;n——(转移到的程序段)顺序号例:GOTO1;GOTO#10;2 条件分支IF语句在IF后指定一条件,当条件满足时,转移到顺序号为n的程序段,不满足则执行下一程序段。
格式:IF [表达式] GOTOn;处理;Nn …;说明:⑴条件表达式条件表达式由两变量或一变量一常数中间夹比较运算符组成,条件表达式必需包含在一对方括号内。
条件表达式可直接用变量代替。
⑵比较运算符比较运算符由两个字母组成,用于比较两个值,来判断它们是相等,或一个值比另一个小或大。
注意不能用不等号。
3 循环WHILE 语句在WHILE 后指定一条件表达式,当条件满足时,执行DO到END之间的程序,[然后返回到WHILE 重新判断条件,]不满足则执行END后的下一程序段。
格式:WHILE [条件表达式] DO m; [m=1, 2, 3]处理;END m;说明:WHILE语句对条件的处理与IF 语句类似。
在DO和END后的数字是用于指定处理的范围(称循环体)的识别号,数字可用1、2、3表示。
当使用1、2、3之外的数时,产生126号报警。
While的嵌套对单重DO-END循环体来说,识别号(1~3)可随意使用且可多次使用。
但当程序中出现循环交叉[DO范围重叠]时,产生124号报警。
⑴识别号(1~3)可随意使用且可多次使用WHILE […] DO1;ProcessingEND1;…WHILE […] DO1;ProcessingEND1;⑵DO循环体最大嵌套深度为五重WHILE […] DO1;…WHILE […] DO2;…WHILE […]DO3;ProcessingEND3;…END2;…END1;3控制不能跳转到循环体外WHILE […] DO1;…IF […] GOTO n;…END1;Nn … ;⑷分支不能直接跳转到循环体内IF […] GOTO n;…WHLE […] DO1;…Nn … ;…END1;说明:⑴无限循环当指定Do m而未指定WHILE语句时,将产生一个从DO到END为循环体的无限循环。
⑵处理时间在处理有标号转移的GOTO语句时,程序段根据顺序号检索。
反向检索的时间比正向检索长。
此时使用WHILE 语句循环可减少处理时间。
⑶未定义变量在条件表达式中使用EQ和NE判断时,空值(null)和0会产生不同的结果,在其它类型的条件表达式中,空值(null)被认为是0。
例程求1~10的和O9501;#1=0;#2=1;WHILE [#2 LE 10] DO1;#1=#1+#2;#2=#2+1;END1;M30;4 非模态调用G65当指定G65调用时,地址P后指定的用户宏程序被调用,同时数据(实参)被传递给用户宏程序。
格式:G65 Pp Ll <实参描述>;p——被调宏程序号;l——调用次数,缺省值为1。
实参——传送给宏程序的数据。
例:O0001; O9010;…#3=#1+#2;G65 P9010 L2 A1.0 B2.0; IF [#3 GT 360] GOTO 9;…G00 G91 X#3;M30; N9 M99;说明:调用在G65后用地址P指定需调用的用户宏程序号;当重复调用时,在地址L后指定调用次数(1~99)。
L省略时,既定调用次数是1。
使用自变量指定,数值被指定给相应的局部变量。
SINUMERIK系统参数编程一计算参数R1.功能要使一个NC程序不仅仅适用于特定数值下的一次加工,或者必须要计算出数值,两种情况均可以使用计算参数,你可以在程序运行时由控制器计算或设定所需要的数值;可以通过操作面板设定参数数值。
如果参数已经赋值,则它们可以在程序中对由变量确定地址进行赋值。
2.编程R0=...到R249=...3.说明一共250个计算参数可供使用。
R0...R99 - 可以自由使用R100...R249 -加工循环传递参数如果你没有用到加工循环,则这部分计算参数也同样可以自由使用。
4.赋值举例一:R0=3.5678 R1=-37.3 R2=2 R3=-7 R4=-45678.1234用指数表示法可以赋值更大的数值范围:(10-300...10+300).指数值写在EX符号之后;最大符号数:10(包括符号和小数点).EX值范围:-300到+300举例二:R0=-0.1EX-5 ;意义:R0=-0.000 0001R1=1.874EX8 ;意义:R1=187 400 000注释:一个程序段中可以有多个赋值语句;也可以用计算表达式赋值。
5.给其他的地址赋值通过给其它的NC地址分配计算参数或参数表达式,可以增加NC程序的通用性。
可以用数值、算术表达式或R参数对任意NC地址赋值。
但对地址N、G和L例外。
赋值时在地址符之后写入符号“=”赋值语句也可以赋值-负号。
给坐标轴地址(运行指令)赋值时,要求有一独立的程序段。
举例:N10 G0 X=R2 ;给X轴赋值6.参数的计算在计算参数时也遵循通常的数学运算规则。
原括号内的运算优先进行。
另外,乘法和除法运算优先于加法和减法运算。
二标记符――程序跳转目标1.功能1)标记符用于标记程序中所跳转的目标程序段,用跳转功能可以实现程序运行分支。
2)标记符可以自由选取,但必须由2一个字母或数字组成,其中开始两个符号必须是字母或下划线。
3)跳转目标程序段中标记符后面必须为冒号。
标记符位于程序段段首。
如果程序段有段号,则标记符紧跟着段号。
4)在一个程序段中,标记符不能含有其它意义。
2.程序举例N10 MARKE1:G1 X20 ;MARKE1为标记符,跳转目标程序段...TR789:G0 X10 Z20 ;TR789为标记符,跳转目标程序段没有段号三绝对跳转1.功能NC程序在运行时以写入时的顺序执行程序段。
程序在运行时可以通过插入程序跳转指令改变执行顺序。
跳转目标只能是有标记符的程序段。
此程序段必须位于该程序之内。
绝对跳转指令必须占用一个独立的程序段。
2.编程GOTOF Lable ;先前跳转GOTOB Lable ;向后跳转AWL 说明GOTOF 向前跳转(向程序结束的方向跳转)GOTOB 向后跳转(向程序开始的方向跳转)Lable 所选的标记符四有条件跳转1.功能用IF-条件语句表示有条件跳转.如果满足跳转条件(也就是值不等于零),则进行跳转.跳转目标只能是有标记符的程序段.该程序段必须在此程序之内.有条件跳转指令要求一个独立的程序段.在一个程序段中可以有许多个条件跳转指令.使用了条件跳转后有时会使程序得到明显的简化.2.编程IF条件GOTOF Lable ;先前跳转IF条件GOTOB Lable ;向后跳转AWL 说明GOTO向前跳转(向程序结束的方向跳转)FGOTO向后跳转(向程序开始的方向跳转)BLable 所选的标记符IF 跳转条件导入符条件作为条件的计算参数,计算表达式3.比较运算运意义算符= = 等于不等<>>大于<小于大于或等于>=<= 小于或等于用上述比较运算表示跳转条件,计算表达式也可用于比较运算.比较运算的结果有两种,一种为“满足”,另一种为“不满足”。