分享
FANUC宏程序 (2).ppt
下载文档

ID:3125145

大小:371.50KB

页数:44页

格式:PPT

时间:2024-01-21

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
FANUC宏程序 2 FANUC 程序
,数控宏程序知识(FANUC),一.宏程序概念 所谓宏程序是以变量的组合,通过各种算术和逻辑运算,转移和循环等命令,而编制的一种可以灵活运用 的程序。即数控程序中含有变量的程序称为宏程序。只要改变变量的值,即可完成不同的加工或操作。宏程序可以简化程序的编制,提高工作效率。加工程序中可以像调用子程序一样用一个简单指令即可调用宏程序。1.变量 宏程序中使用的变量与日常生活中使用的变量不同,变量用符号“#”后跟变量的变量号指定。变量可分为四种类型。A.空变量#0为空变量,该变量不能赋值。,我们将尚未定义变量值的状态叫做“空值”。变量#0、#3100 永远是空变量,它不能写入,但能读取。(a)引用变量在引用一个尚未定义的变量时,地址本身也被忽略。原来的指令 G90 X100 Y#1时的等效指令 G90 X100 Y0(b)定义替换、加法运算、乘法运算、将局部变量或公共变量直接替换为空值时,其结果也为空值。将系统变量直接替换为空值时,或者替换使用空值运算出来的结果是,均作为变量值0 来对待。,(c)比较运算若是EQ 和NE 的情形,空值和0 被判定为不同的值。若是GE、GT、LE、LT 的情形,空值和0 被判定为相同的值。将空值代入#1 时,B.局部变量#1#33为局部变量,局部变量只能在宏程序中存储数据。当断电时局部变量被初始化为空,调用宏程序时,自变量对局部变量赋值。局部变量的数值范围最大值约10308;最小值:约10-308,如果计算结果超过该范围则发出P/S报警No.111。C.公共变量#100#199、#500#999为公共变量,公共变量在不同的宏程序中意义相同。当断电时,变量#100#199被初始化为空,变量#500#999的数据不会丢失。全局变量的数值范围10-291047或-1047-10-29,如果计算结果超过该范围则发出P/S报警No.111。,。,D.系统变量#1000为系统变量,系统变量用于读和写CNC运行时的各种数据,如刀具的当前位置和补偿 值等。2.变量的运算 对宏程序中的变量可以可以进行算术运算和逻辑运算 A.算术运算 可以进行加、减、乘、除运算。举例:G00X#1+#2X坐标的值是变量1与变量2之和。B.三角函数计算对宏程序中的变量可进行正弦(SIN)、反正弦(ASIN)、余弦(COS)、反余弦(ACOS)、正切(TAN)、反正切(ATAN)函数运算。三角函数中的角度以度为单位。,变量运算功能算术运算加法#i=#j+#k#1=#2+#3 减法#i=#j-#k#1=#2-#3乘法#i=#j*#k#1=#2*#3除法#I=#j/#k#1=#2/#3三角函数运算正弦#i=SIN#j#1=SIN#2反正弦#i=ASIN#j#1=ASIN#2余弦#i=COS#j#1=COS#2反余弦#i=ACOS#j#1=ACOS#2正切#i=TAN#j#1=TAN#2反正切#i=ATAN#j#1=ATAN#2,其它函数运算平方根#i=SQRT#j#1=SQRT#2绝对值#i=ABS#j#1=ABS#2舍入#i=ROUN#j#1=ROUN#2上取整#i=FIX#j#1=FIX#2下取整#i=FUP#j#1=FUP#2自然对数#i=LN#j#1=LN#2指数对数#i=EXP#j#1=EXP#2逻辑运算与#i=#jAND#k#1=#2AND#3或#i=#j OR#k#1=#2OR#3异或#i=#j XOR#k#1=#2XOR#3,转换运算 BCD转BIN#i=BIN#j#1=BIN#2BIN转BCD#i=BCD#j#1=BCD#23.关系运算1)等于(EQ)用EQ与两个变量(或表达式)组成表达式,当运算符EQ两边的变量(或表达式)相等时,表达式的值为真,否则为假。例如,#1EQ#2,当#1与#2相等时,表达式的值为真。(2)不等于(NE)用NE与两个变量或表达式组成表达式,当运算符NE两边的变量(或表达式)不相等时,表达式的值为真,否则为假。例如,#1NE#2,当#1与#2不相等时,表达式的值为真。,(3)大于等于(GE)用GE与两个变量或表达式组成表达式,当左边的变量(或表达式)大于或等于右边的变量(或表达式)时,表达式的值为真,否则为假。例如,#1GE#2,当#1大于或等于#2时,表达式的值为真。否则为假。(4)大于(GT)用GT与两个变量或表达式组成表达式,当左边的变量(或表达式)大于右边的变量(或表达式)时,表达式的值为真,否则为假。例如,#1GT#2,当#1大于#2时,表达式的值为真。否则为假,(5)小于等于(LE)用LE与两个变量或表达式组成表达式,当左边的变量(或表达式)小于或等于右边的变量(或表达式)时,表达式的值为真,否则为假。例如,#1LE#2,当#1小于或等于#2时,表达式的值为真。否则为假。(6)小于(LT)用LT与两个变量或表达式组成表达式,当左边的变量(或表达式)小于右边的变量(或表达式)时,表达式的值为真,否则为假。例如,#1GE#2,当#1大于#2时,表达式的值为真。否则为假。,二.宏程序调用2.1 宏程序调用指令格式:G65 P_ L_;式中:P宏程序号;L重复调用次数(19999,1次时L可省略);用以对宏程序中的局部变量赋值。自变量赋值是由地址及数值构成。2.2 自变量赋值自变量赋值自变量赋值,二.宏程序调用1.宏程序调用的方法,2.宏程序调用指令格式:G65 P_ L_;式中:P宏程序号;L重复调用次数(19999,1次时L可省略);用以对宏程序中的局部变量赋值。自变量赋值是由地址及数值构成。自变量赋值自变量赋值自变量赋值,3.宏程序嵌套层数,在G66后,用地址P为模态调用指定程序号;当需要重复次数时,可在地址L后指定从19999的数字。和简单调用G65一样,传递给宏程序的数据用实参指定。当指定G67指令时,后续程序段不再执行模态调用。,自变量赋值的地址与变量号码之间的对应关系参数6008.7=1时,自变量赋值的地址与变量号码之间的对应关系6008.7=0,例如:G65 P9301 A1.0 B2.0 I10 J12 K17;#1=1.0#2=2.0#4=10.0#5=12.0#6=17.0,1.控制指令1、无条件转移(GOTO语句)格式:GOTO n;式中:n顺序号(19999),可用变量表示。例如,GOTO6;语句组 N6 G00X100;执行GOTO6语句时,转去执行标号为N6的程序段。,2、条件转移(IF语句)格式:IF 条件式 GOTO n;条件式:O9100;#1=0;#2=1;N1 IF#2 GT 10 GOTO 2;#1=#1+#2;#2=#2+1;GOTO 1;N2 M30;,3、循环(WHILE语句)格式:WHILE 条件式 DO m;END m;式中:m循环执行范围的识别号,只能是1.2.3注意:DOEND循环能够按需要使用多次,即 循环嵌套。,4.条件转移(IF)格式:IF表达式THEN THEN后只能跟一个语句。例如,IF#1EQ#2THEN#3=0;当#1等于#2时,将0赋给变量#3。,DOEND循环嵌套:WHILE 条件式1 DO 1;WHILE 条件式2 DO 2;WHILE 条件式3 DO 3;END 3;END 2 END 1;,举例:求1到10之和。O9200;#1=0;#2=1;WHILE#2 LE 10 DO 1;#1=#1+#2;#2=#2+1;END 1;M30;,【例1】圆周等份孔加工:在半径I的圆周上钻削H个等分孔,已知加工第一个孔的起始角度为A,相邻两孔之间角度的增量为B,圆周中心坐标为(x,y)。O7500;G90 G54 G00 X0 Y0 Z100;M03 S800;G65 P9500 X50.Y150.R10.Z-20.F300I120.A0 B45.H5;G00 X0 Y0 Z100.;M30;,O9500;G99 G81 Z#26 R#18 F#9 L0;WHILE#11 GT 0 DO 1;#5=#24+#4*COS#1;#6=#25+#4*SIN#1;X#5 Y#6;#1=#1+#2;#11=#11 1;END 1;M99;,铣削内半球体:在数控铣床上用12球头铣刀对半球体进行精加工。若用同一程序以及用不同半径的刀具加工不同半径的内球体,编宏程序。O7400;G90 G54 G17 G00 X0 Y0;G43 Z5.H01 M08;M03 S900;G65 P9800 A35.B6.D5.;G00 Z5.M09;G91 G28 Z0;M30;,O9800;#101=#1;#102=#2;#103=#1#2;#104=#7;G00 X#103;G01 Z0 F120;WHILE#104 LE 90 DO 1;#110=#103*COS#104;#120=#103*SIN#104;G01 X#110 Z#120 F80;G02 I#110;#104=#104+#7;END 1;M99;,椭圆加工:零件材料45钢,毛坯为50mm100mm,按图要求完成数控加工程序。,S800 F150;#150=26.;N30 IF#150 LT 1 GOTO 40;M98 P0003;#150=#150-2;GOTO 30;N40 G0 X30.Z2.;S1500 F80;#150=0;M98 P0003;G0 X100.Z5.;M30;,O0001;T0101;M03 S800;G0 X51.Z2.;G71 U1.5 R1.;G71 P10 Q20 U0.5 W0.1 F150;N10 G1 X25.966;Z0.;Z-19.;X35.988 Z-29.;Z-46;X44.;X45.992 Z-47.;N20 Z-55.;G70 P10 Q20 S1000 F120;G00 X100.;Z50.;,O0003;#101=20.;#102=13.;#103=20.;N20 IF#103 LT 1 GOTO 50;#104=SQRT#101*#101-#103*#103;#105=#102*#104/#101;G01 X2*#105+#150 Z#103 20;#103=#103 0.5;GOTO 20;N50 G00 U2.Z2.;M99,椭圆加工:假定椭圆长轴(X向)、短轴(Y向)半长分别为A和B。编程条件:编程原点在椭圆中心,A=50,B=30,椭圆轮廓为外轮廓,下刀点在椭圆右极限点,刀具直径18,加工深度10mm。,O9800;G90 G54 G00 G17 G40;G43 Z50.H01;M03 S1000;X60.Y-15.;Z5.M08;G01 Z-12.F800;G42 X50.Y0.D01 F100;#1=0.5;(变量初始值0.5度),WHILE#1 LE 360 DO 1;#2=50*COS#1;#3=30*SIN#1;G01 X#2 Y#3;#1=#1+0.5;END 1;G01 Y15.;G00 G40 X60.;Z100.M30,加工如下图所示的椭圆表面,材料为中碳钢。由于一般的数控系统无椭圆插补功能,手工编程可用宏程序实现编程计算。本例使用20键槽铣刀分两层铣削,每一次切削深度为5mm。按刀具刀具轨迹编程。,主程序O0001N0001 G92X0.0Y0.0Z150.0;工件坐标系原点设在工件中心距顶面上N0002 M03S300;主轴正转,转速N0003 G00X-80.0;刀具移至椭圆左端点处N0004 G00Z1.0;快速接近工件N0005 G01Z0.0F100.0 慢速接近工件N0006 G65P0100A80.0B50.0C-5.0(椭圆长半轴为80,短半轴为50。Z向进刀5mm)N0007 G65P0100A80.0B50.0C-10.0椭圆长半轴为80,短半轴为50。Z向进刀5mmN0007 G00Z150.0;抬刀N0008 G00X0.0Y0.0;刀具回起点N0009 M05;主轴停N0010 M30;程序结束,宏程序O1000#10=-#1;(#1为长半轴=80,#2为短半轴=50,#10为X坐标N1000 G01Z#3;(#3为Z向进刀深度WHIL#10LE#1DO1;(X坐标小于等于80循环加工上半椭圆#11=SQRT#1*#1-#10*#10*#2/#1;(#11为Y坐标用椭圆公式计算N1001 G01X#10Y#11F100.0;(切削进给#10=#10+0.05;(修改X坐标,X+0.05END1;#10=#1;(#1为长半轴=80,#2为短半轴=50,#10为X坐标WHIL#10GE-#1DO2;(X坐标小于等于80循环加工下半椭圆#11=-SQRT#1*#1-#10*#10*#2/#1;(#11为Y坐标用椭圆公式计算N1002 G01X#10Y#11F100;(切削进给#10=#10-0.05;(修改X坐标,X-0.05END2;N1003 M99(返回主程序,O1;G90 G54 G00 X0 Y0;G43 H2 Z100.M3 S1000;G01 Z0 M8 F200;#1=0.5.每刀进给量;N10;段落符号G01 X488.F2000;Y#1;X0;Y(#1+0.5);#1=#1+1;IF#1LE320.GOTO10;如果#1小于等于320.就回到此段开头G0 Z200.;M30;,O100;#3=0;#1=30-tan10*#3;#2=30-tan10*#3+0.2;G90 G54 G00 X50.Y45.;G43 H1 Z100.M3 S1000;G1 X#1 Y#3 F100;Z0;N1;G1 X#1 Y-#3 F2000;X-#1;X-#2 Y-#3+0.2;X#2;#3=#3+0.4;IF#3LE28.356GOTO1;G0 Z100.;M30;,O100;#1=tg10*#2+19.411;#2=0;#3=75+#2/cos10.;G90 G54 G00 X25.Y0;G43 H1 Z100.M3 S1000;G1 X#1 Y#2 F100;Z0;N1;G1 X#1 Y#2 F2000;Z0;G2 X-#1 Y#2 R#3;G0 Z100.;#2=#2+0.2;IF#3LE100GOTO1;G0 Z200.;M30;,O100;X=#1=tg45*#3+15;Y=#2=cos#5*20;Z=#3=sin#5*20;#5=0;G90 G54 G00 X#1+10.Y#2+10;G43 H1 Z100.M3 S1000;G1 X#1 Y#2 F100;Z#3;N1;G1 X#1 Y#2 F2000;Z#3;x-#1;G0 Z100.;#5=#5+1.;IF#3LE15GOTO1;G0 Z200.;M30;,T0101M3S800G0X82Z5G0X76G1Z-40F0.2X82G0Z5G0X72G1Z-40F0.2X82G0Z5.G0X40G1Z-40F0.2X82G0Z5G0X150Z150M5M30从上面程序可以看出,每次切削所用程序都只是切削直径X有变化,其他程序代码未变。因此可以将一个变量赋给X,而在每次切削完之后,将其改变为下次切削所用直径即可。#1=76 赋初始值,即第一次切削直径N10 G0X#1 将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值。N10是程序G1Z-40F0.2 段的编号,用来标识本段,为后面循环跳转所用。#1=#1-4 每行切深为2mm,直径方向递减4mmIF#1GE40 GOGO 10 如果#1=40,即此表达式满足条件,则程序跳转到N10继续执行。G0X150Z150 当不满足#1=40,即#140,则跳过循环判断语句,由此句继续向后执行。M5M30,T0101M3S800G0X82Z5 粗加工开始#2=0.05 Z向的加工余量#3=0.5 外圆方向的加工余量#4=0.3 每层切削后的回退量#1=76+2*#3 考虑了精加工余量的第一次切削直径N10 G0X#1 将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值。N10是程序G1Z-40+#2F0.2 段的编号,用来标识本段,为后面循环跳转所用。X#1+#4 每次切削只回退#4的值G0Z5#1=#1-4 单边切深为2mm,直径方向每次递减4mmIF#1GE40 GOGO 10 如果#1=40,即此表达式满足条件,则程序跳转到N10继续执行。M03S1200 当不满足#1=40,即#140,则跳过循环判断语句,由此句继续向后执行。G0X40 由此开始精加工G1Z-40F0.1X82G0X150Z150M5M30,

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开