机械FANUC宏程序知识-数控机床参考资料工程课件

上传人:lil****n07 文档编号:228487036 上传时间:2023-08-21 格式:PPT 页数:43 大小:276KB
返回 下载 相关 举报
机械FANUC宏程序知识-数控机床参考资料工程课件_第1页
第1页 / 共43页
机械FANUC宏程序知识-数控机床参考资料工程课件_第2页
第2页 / 共43页
机械FANUC宏程序知识-数控机床参考资料工程课件_第3页
第3页 / 共43页
点击查看更多>>
资源描述
一.宏程序概念 所谓宏程序是以变量的组合,通过各种算术和逻辑运算,转移和循环等命令,而编制的一种可以灵活运用 的程序。即数控程序中含有变量的程序称为宏程序。只要改变变量的值,即可完成不同的加工或操作。宏程序可以简化程序的编制,提高工作效率。加工程序中可以像调用子程序一样用一个简单指令即可调用宏程序。1.变量 宏程序中使用的变量与日常生活中使用的变量不同,变量用符号“#”后跟变量的变量号指定。变量可分为四种类型。A.空变量#0为空变量,该变量不能赋值。我们将尚未定义变量值的状态叫做“空值”。变量#0、#3100 永远是空变量,它不能写入,但能读取。(a)引用变量在引用一个尚未定义的变量时,地址本身也被忽略。原来的指令 G90 X100 Y#1#1=空值时的等效指令 G90 X100时的等效指令 G90 X100 Y0(b)定义替换、加法运算、乘法运算、将局部变量或公共变量直接替换为空值时,其结果也为空值。将系统变量直接替换为空值时,或者替换使用空值运算出来的结果是,均作为变量值0 来对待。原来的运算式子(局部变量例)#2=#1#2=#1*5#2=#1+#1替换结果(#1=空值时)空值00替换结果(#1=0 时)000原来的运算式子(公共变量)#100=#1#100=#1*5#100=#1+#1替换结果(#1=空值时)空值00替换结果(#1=0 时)000原来的运算式子(系统变量)#2001=#1#2001=#1*5#2001=#1+#1替换结果(#1=空值时)000替换结果(#1=0 时)000(c)比较运算若是EQ 和NE 的情形,空值和0 被判定为不同的值。若是GE、GT、LE、LT 的情形,空值和0 被判定为相同的值。将空值代入#1 时条件表达式的表达方式#1 EQ#0#1 NE#0#1 GE#0#1 GT 0#1 LE#0#1 LT 0评价结果 成立成立(真)成立(真)成立(真)不成立(假)成立(真)不成立(假)将0 代入#1 时条件表达式的表达方式#1 EQ#00#1 NE 0#1 GE#0#1 GT 0#1 LE#0#1 LT 0评价结果 成立成立(真)成立(真)成立(真)不成立(假)成立(真)不成立(假)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.01.控制指令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;#j EQ k#j EQ k#j 是否k#j#j GT#kGT#k#j 是否k#j GE k#j GE k#j 是否#k#j NE#k#j NE#k#j 是否#k#j LT#k#j LT#k#j 是否#k#j LE#k#j LE#k#j 是否#k3、循环(、循环(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;G67;铣削内半球体:铣削内半球体:在数控铣床上用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,即#1=40,即此表达式满足条件,则程序跳转到N10继续执行。M03S1200 当不满足#1=40,即#140,则跳过循环判断语句,由此句继续向后执行。G0X40 由此开始精加工G1Z-40F0.1X82G0X150Z150M5M30
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 机械理论


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!