有人喜欢这首歌格格党:数控宏程序

来源:百度文库 编辑:中财网 时间:2024/04/28 04:22:32
课题三:A类宏程序编程一、用户宏程序简介用户宏程序是FANUC数控系统及类似产品中的特殊编程功能。用户宏程序的实质与子程序相似,它也是把一组实现某种功能的指令,以子程序的形式预先存储在系统存储器中,通过宏程序调用指令执行这一功能。在主程序中,只要编入相应的调用指令就能实现这些功能。一组以子程序的形式存储并带有变量的程序称为用户宏程序,简称宏程序;调用宏程序的指令称为“用户宏程序指令”或宏程序调用指令。宏程序与普通程序相比较,普通程序的程序字为常量,一个程序只能描述一个几何形状,所以缺乏灵活性和适用性。而在用户宏程序的本体中,可以使用变量进行编程,还可以用宏指令对这些变量进行赋值、运算等处理。通过使用宏程序能执行一些有规律变化(如非圆二次曲线轮廓)的动作。用户宏程序分为A、B两类。通常情况下,FANUC0TD系统采用A类宏程序,而FANUC0i系统则采用B类宏程序。二、A类宏程序1、变量在常规的主程序和子程序内,总是将一个具体的数值赋给一个地址,为了使程序更加具有通用性、灵活性,故在宏程序中设置了变量。(1)变量的表示。一个变量由符号“#”和变量序号组成,如:#i(i=1,2,3,…)。(2)变量的引用。将跟随在地址符后的数值用变量来代替的过程称为引用变量。例C01X#100Y-#10lF#102;当#100=100.0、#101=50.0、#102=80时,上面这句程序即表示为G01X100.OY-50.OF80;(3)变量的种类变量分为局部变量、公共变量(全局变量)和系统变量三种。在A、B类宏程序中,其分类均相同。1)局部变量:局部变量(#1~#33)是在宏程序中局部使用的变量:当宏程序1调用宏程序2而且都有变量#1时,由于变量#l服务于不同的局部,所以1中的#l与2中的#1不是同一个变量,因此可以赋于不同的值,且互不影响。2)公共变量。公共变量(#100~#149、#500~#549)贯穿于整个程序过程。同样,当宏程序1调用宏程序2而且都有变量#100时,由于#100是全局变量,所以1中的#100与2中的#100是同一个变量。3)系统变量。系统变量是指有固定用途的变量,它的值决定系统的状态。系统变量包括刀具偏置值变量、接口输入与接口输出信号变量及位置信号变量等。2、用户宏程序的格式及调用(1)宏程序格式用户宏程序与子程序相似。以程序号O及后面的4位数字组成,以M99指令作为结束标记。比较一下主程序、子程序和宏程序的格式。O0060;G65H01P#100Q100;将值100赋给#100G00X#100Y……;……M99;宏程序结束(2)宏程序的调用。宏程序的调用有两种形式:一种与子程序调用方法相同,即用M98进行调用。另一种用指令G65进行调用,如:G65P0070X100.0Y100.0Z-30.0;此处的X、Y、Z并不代表坐标功能字其中,G65为调用宏程序指令,该指令必须写在句首;P0070表示宏程序的程序号为O0070;L5表示调用次数为5;X100.0Y100.0Z-30.0变量引数,引数为有小数点的正、负数。3、宏程序的运算和转移指令(表3-2)指令 H码 功能 定义G65 H01 定义、替换 #i=#jG65 H02 加 #i=#j+#kG65 H03 减 #i=#j-#kG65 H04 乘 #i=#j×#kG65 H05 除 #i=#j/#kG65 H11 逻辑或 #i=#jOR#kG65 H12 逻辑与 #i=#jAND#kG65 H13 异或 #i=#jXOR#kG65 H21 平方根 #i= G65 H22 决定值 #i= G65 H23 求余 #i=#j-trunc(#j/#k)×#kG65 H24 十进制码变为二进制码 #i=BIN(#j)G65 H25 二进制码变为十进制码 #i=BCD(#j)G65 H26 复合乘/除 #i=(#i×#j)/#kG65 H27 复合平方根1 #i= G65 H28 复合平方根2 #i= G65 H31 正弦 #i=#j×sin(#k)G65 H32 余弦 #i=#j×cos(#k)G65 H33 正切 #i=#j×tan(#k)G65 H34 反正切 #i=arctan(#j/#k)G65 H80 无条件转移 GOTOnG65 H81 条件转移1(EQ) IF#j=#k,GOTOnG65 H82 条件转移2(NE) IF#j #k,GOTOnG65 H83 条件转移3(GT) IF#j>#k,GOTOnG65 H84 条件转移4(LT) IF#j<#k,GOTOnG65 H85 条件转移5(GE) IF#j #k,GOTOnG65 H86 条件转移6(LE) IF#j #k,GOTOnG65 H99 产生P/S报警 P/S报警号500+n出现(1)宏程序的运算指令宏程序的运算指令通过G65的不同表达形式实现,其指令的一般形式为:G65H(m)P(#i)Q(#j)R(#k):其中,m可以是01~99中的任何一个整数,表示运算指令或转移指令的功能;#i表示存放运算结果的变量;#j为需要运算的变量1,也可以是常数,常数可以直接表示,不带“#”;#k为需要运算的变量2,也可以是常数,常数可以直接表示,不带“#”;指令所代表的意义为:#i=#j #k; 代表运算符号,它由H(m)指定。例1G65H02P#100Q#10lR#102:表示#100=#101+#102G65H03P#100Q#101R15;表示#100=#101—15G65H04P#100Q-100R#102:表示#100=-100×#102G65H05P#100Q-100R#102;表示#100=-100÷#102变量值是不含小数点的数值,它以系统的最小输入单位为其值的单位。例如,当#100=10时,X#100代表0.01mm。当运算结果出现小数点后的数值时,其值将被舍去。另外,用G65指定的H代码,对选择刀具长度补偿的偏置号没有任何影响。例2若#100=37,#101=10执行如下指令,其运算结果如下:#110=#100÷#101;结果为3;小数点后的数值被舍去。在使用宏程序运算指令中,当变量以角度形式指定时,其单位是0.0010。在各运算中,当必要的Q、R没有指定时,系统自动将其值作为“0”参加运算。而且运算、转移指令中的H、P、Q、R都必须写在G65之后,因此在G65以前的地址符只能有0、N。(2)宏程序的转移指令宏程序的转移指令与运算指令相似,即通过指令G65的不同表达形式实现。A类宏程序的转移指令格式见表4—8,分为无条件转移和条件转移两类。1)无条件转移指令。指令格式:G65H80Pn;“n”为目标程序段号。例G65H80P120;执行该程序段时,将无条件转移到N120程序段。2)条件转移指令。指令格式:G65H8PnQ#JR#k;H81~H86。例G65H83P1000Q#20lR#202;当#201>#202时,转移到N1000程序段,当#201 #202时,程序继续执行。4、A类宏程序编程示例例:试用A类宏程序编写如图3-3所示的椭圆加工的数控车床加工程序。图3-3椭圆加工课题分析:本例以Z为自变量,每次增量为-0.1mm。X为应变量(注意公式中的X为半径值),直径量X=2 = 。编写该工件宏程序时,使用以下变量进行操作运算。#101:曲线上各点的Z坐标。#102:曲线上各点的X坐标。曲线精加工程序如下:O0501;      主程序……      程序开始部分G00X0.0Z2.0;    宏程序起点G65G01P#101Q0;   Z坐标赋初值G65G01P#102Q0;   X坐标附初值N100G01X#102Z#101F100;G65H03P#101Q#101R100; Z坐标每次减0.1mmG65H04P#100Q#101R-64000; 注意R值为64000,而不能用64G65H21P#102Q#100;   X坐标值G65H86P100Q#102R32000; 如果X坐标小于32mm,则返回N100G01X100.0Z100.0;M30;三、编程实例例:试用A类宏程序的编程方法编写如图3-4所示的椭圆手柄的数控车床精加工程序。图3-4椭圆手柄课题编程与加工思路:本课题的轮廓表面为非圆曲线,无法采用常规的直线和圆弧指令进行编程。因此,本课题引人宏程序编程的方式进行曲线拟合编程。其加工程序见表3-3。1、编程说明如图3-4所示,该椭圆的方程为X2/12.52+(Z+25)2/252=1;该椭圆方程的另一种表达式为“X=12.5sin ,Z=25cos -25”,椭圆上各点坐标分别是(12.5sin ,25cos -25),坐标值随角度的变化而变化,“ ”是自变量,每次角度增量为0.10,而坐标“X”和“Z”是应变量。注:用极坐标编写该椭圆时,应注意M点处的极角不等于图样上已知的平面角14630需经换算后得到该点的极角为12686。本课题编程时使用以下变量进行运算(过渡用变量略)#100:椭圆X向半轴A的长度。#101:椭圆Z向半轴B的长度。#102:椭圆上各点对应的角度a。#103:Asina。#104:Bcosa。#105:椭圆上各点在编程坐标系中的X坐标。#106:椭圆上各点在编程坐标系中的Z坐标。2、参考程序(表3-3)刀具 1号刀具:930硬质合金外圆车刀程序段号 FANUC0i系统程序 程序说明O0400; 主程序N10 G98G40G21F100; 程序开始部分N20 T0101; 换菱形刀片外圆车刀,选精加工转速N30 M03S1200;N40 G00X0.0Z5.0; 宏程序起点N50 M98P402; 调用精加工宏程序N60 G02X20.0Z-70.0R40.0; 加工圆弧N70 G01Z-85.0;N80 G00X100.0Z100.0; 程序结束N90 M30;O0402N10 G65H01P#100Q12500;N20 G65H01P#101Q25000;N30 G65H01P#102Q0;N40 G65H31P#103Q#100R#102;N50 G65H32P#104Q#101R#102;N60 G65G04P#105Q#103R2;N70 G65H03P#106Q#104R25000;N80 G01X#105Z#106F100;N90 G65H02P#102Q#102R100;N100 G65H86P40Q#102R126860;N110 M99;课题四:B类宏程序编程一、B类宏程序在FANUC0MD等老型号的系统面板上没有“+”、“一”、“×”、“/”、“=”、“[]”等符号,故不能进行这些符号输入,也不能用这些符号进行赋值及数学运算。所以,在这类系统中只能按A类宏程序进行编程。而在FANUC0i及其后(如FANUC18i等)的系统中,则可以输入这些符号,并运用这些符号进行赋值及数学运算,即按B类宏程序进行编程.1、变量B类宏程序的变量与A类宏程序的变量基本相似,主要区别有以下几个方面。(1)变量的表示B类宏程序除可采用A类宏程序的变量表示方法外,还可以用表达式进行表示,但其表达式必须全部写入方括号“[]”中,程序中的圆括号“()”仅用于注释。例#[#l+#2+lO]当#1=lO,#2=100时,该变量表示#120。(2)变量的引用引用变量也可以采用表达式。例G01X[#l00-30.0]Y-#101F[#101+#103];当#100=100.O,#101=50.O,#103=80.O时,上面语句即表示为G01X70.OY-50.OF130。2、变量的赋值(1)直接赋值变量可以在操作面板上用MDI方式直接赋值,也可在程序中以等式方式赋值,但等号左边不能用表达式。例#100=100.0;#100=30.O+20.O:(2)引数赋值宏程序以子程序方式出现,所用的变量可在宏程序调用时赋值。例G65P1000x100.0Y30.OZ20.0F100.0;该处的X、Y、Z并不代表坐标字,F也不代表进给字,而是对应于宏程序中的变量号,变量的具体数值由引数后的数值决定。引数宏程序中的变量对应关系有两种,这两种方法可以混用,其中G、L、N、O、P不能作为引数代替变量赋值。例1变量引数赋值方法IG65P0030A50.0I40.0J100.0K0I20.0J10.0K40.0;经赋值后#l=50.0,#4=40.0,#5=100.0,#6=0,#7=20.0,#8=10.0,#9=40.0。表3-4变量引数赋值方法Ι表3-5变量引数赋值方法Ⅱ例2变量引数赋值方法ⅡG65P0020A50.0X40.0F100.0;经赋值后#1=50.0,#24=40.0,#9=100.0。例3变量引数赋值方法I和Ⅱ混合使用G65P0030A50.0D40.0I100.0K0I20.0;经赋值后,I20.0与D40.0同时分配给变量#7,则后一个#7有效,所以变量#7=20.0,其余同上。实例采用变量赋值后,图3-4实例的A类精加工宏程序可改成如下形式:O0503;主程序……C65P0504A12.5B25.0CO.0D126.86F100.0;赋值后,X向半轴长#l=12.5,Z向半轴长#2=25.0,角度起始角#3=0.0,角度终止角#7=126.86,进给速度#9=100.0 。……O504;精加工宏程序N1000#4=#l×SIN[#3];#5=#2×COS[#3];#6=#4×2;#8=#5-#2;G01X#6Z#8F#9;#3=#3+0.0l:IF[#3LE#7]GOTO1000;M99;3、运算指令B类宏程序的运算指令与A类宏程序的运算指令有很大的区别,它的运算类似于数学运算,仍用各种数学符号来表示。运用运算指令见表:表3-6B类宏程序变量的各种运算(1)函数SIN、COS等的角度单位是0,’和”要换算成0。如90030’应表示为90.50,30018’应表示为30.30。(2)宏程序数学计算的次序依次为:函数运算(SIN、COS、ATAN等),乘和除运算(×、/、AND等),加和减运算(+、-、OR、XOR等)。例#l=#2+#3×SIN[#4];运算次序为:函数SIN[#4]→乘和除运算#3×SIN[#4]→加和减运算#2+#3×SIN[#4]。(3)函数中的括号。括号用于改变运算次序,函数中的括号允许嵌套使用,但最多只允许嵌套5层。例#1=SIN[[[#2+#3]×4+#5]/#6];(4)宏程序中的上、下取整运算。CNC处理数值运算时,若操作产生的整数大于原数时为上取整,反之则为下取整。例设#1=1.2,#2=-1.2执行#3=FUP[#1]时,2.0赋给#3;执行#3=FIX[#l]时,1.O赋给#3;执行#3=FUP[#2]时,-2.O赋给#3;执行#3=FIX[#2]时,-1.0赋给#3;4控制指令:控制指令起到控制程序流向的作用。(1)分支语句格式一GOTOn;例GOTO1000该例为无条件转移。当执行该程序段时,将无条件转移到N1000程序段执行。格式二IF[条件表达式]GOTOn;例IF[#1GT#100]GOTO1000该例为有条件转移语句。如果条件成立,则转移到N1000程序段执行;如果条件不成立,则执行下一程序段:条件表达式的种类见表3-7。表3-7B类宏程序条件表达式的种类注意:条件判断中条件的表示方法(2)循环指令循环指令格式为:WHlLE[条件表达式]DOm(m=l、2、3…)……ENDm:当条件满足时,就循环执行WHlLE与END之间的程序段m次;当条件不满足时,就执行ENDm的下一个程序段。5、B类宏程序编程示例例:试用B类宏程序编写如图3-5所示的玩具喇叭凸模曲线的精加工程序。图3-5B类宏程序编程示例实例分析:本例的精加工采用B类宏程序编程,以Z值为自变量,每次变化0.1mm、X值为应变量,通过变量运算计算出相应的X值。编程时使用以下变量进行运算:注:宏程序编程时,首先要找出各点X坐标和Z坐标之间的对应关系。#101为方程中的Z坐标(起点Z=72);#102为方程中的X坐标(起点半径值X=3.5);#103为工件坐标系中的Z坐标,#103=#101-72.0;#104为工件坐标系中的X坐标,#104=R2×2;精加工程序如下:0420……G00X9.0Z2.0;宏程序起点#101=72.0:#102=3.5:N100#103=#10l-72.O;跳转目标程序段#104=#102×2;C01X#104Z#103;#101=#101-0.1;Z坐标每次增量-0.1mm#102=36/#101+3;变量运算出X坐标IF[#101GE2.0]GOTO100;有条件跳转G28U0W0;M30:二、编程实例例:试用B类宏程序编写图3-6所示绕线筒曲线轮廓的数控车床加工程序。图3-6应用B类宏程序的示件本例编程与加工思路:本课题的精加工轮廓采用B类宏程序编程。由于宏程序编程中不能使用复合固定循环。因此,本课题粗加工时,采用坐标平移指令(G52)编写出类似于仿形车复合循环G73指令的加工程序。其加工程序见表3-8。1、实例分析该正弦曲线由两个周期组成,总角度为7200(-6300~900)。将沿Z轴方向将该曲线分成1000条线段,每段直线在Z轴方向的间距为0.04mm,对应其正弦曲线的角度增加7200/1000。根据公式,计算出曲线上每一线段终点的X坐标值,X=34+6sin 。工件粗加工时,采用局部坐标进行编程,编程时使用以下变量进行运算:#100为局部坐标系中的X坐标变量;#10l为正弦曲线角度变量;#102为正弦曲线各点X坐标;#103为正弦曲线各点Z坐标。2、参考程序(见表3-8)表3-8数控车床参考程序刀具 1号刀具:350硬质合金外圆车刀程序段号 FANUC0i系统程序 程序说明O0400; 主程序N10 G98G40G21F100; 程序开始部分N20 T0101;N30 M03S800;N40 G0042.0Z-13.0; 宏程序起点N50 #100=10.0; 局部坐标系X附初值N60 N200G52X#100Z0; 局部坐标系N70 M98P402; 调用宏程序N80 #100=#100-2.0; 径向每次切深2mmN90 IF[#100GE0]GOTO200; 条件判断N100 G00X100.0Z100.0; 程序结束N110 M30;O0402 曲线加工宏程序N10 G01X40.0Z-15.0; 加工与曲线相连的直线段N20 Z-20.0;N30 #101=90.0; 正弦曲线角度赋初值N40 #103=-20.0; 曲线Z坐标赋初值N50 N300#102=34+6×SIN[#101]; 曲线X坐标N60 G01X#102Z#102F100; 直线段拟合曲线N70 #101=#101-0.72; 角度增量为-0.720N80 #103=#103-0.04; Z坐标增量为-0.04mmN90 IF[#101GE-630.0]GOTO300; 条件判断N100 G01X40.0Z-67.0; 加工与曲线相连的线段并退刀N110 X42.0;N120 G00Z-13.0;N130 M99; 返回主程序