当前位置:文档之家› 宏程序基础

宏程序基础

1.1概述1.21.31.4一、宏程序的分类1.5首先我们来讲一下宏程序的分类,A类和B类。

首先在数控车系统比较老的时候,我们系统里面有A类宏,A类宏格式为G65格式,现在已经基本淘汰。

随着科技发达,系统的升级优化,现在的数控系统大多支持B类宏程序,总体而言,现在B类宏是一个主流发展趋势,所以接下来我们的实例讲解都以B类宏程序为例。

1.61.71.8二、宏程序的概念1.91.10简单来理解宏程序是什么可以这样理解,宏程序就是利用数学公式,函数等计算方式,配合数控系统中的G代码编制出的一种程序,主要加工一些像椭圆,曲线,各类大螺距螺纹和刀具路线相识的一些零件。

随着科技发达,像椭圆,抛物线,等线性零件,用软件或则系统自代G代码可以完成加工,而大螺距异型螺纹这类零件,软件还没达到成熟,所以我们学会宏程序在加工中可以起到一个非常大的作用。

可以弥补多年来数控车对大螺距螺纹的编程难的一个提高。

1.111.121.13三、宏程序的特征1.141.151.赋值1.16在宏程序中我们通常用法最多的就是变量,比如:1.17#1=1 它就是一个变量。

我们把这一过程,称为赋值。

也就是说,我们把等号后面的数值1,赋值给#1。

而现在#1的值就等于1,也可以理解为#1就是一个代号,用来代替数值1。

1.181.192.变量和应用1.20比如:#1=2(把数值2赋值给#1)1.21#2=1(把数值1赋值给#2)1.22#2=#1(程序从上往下执行,思考一下现在#2的值等于多少)1.231.24解:当程序执行第一步的时候#1的值等于2,当执行第二步的时候#2的值等于1,当执行第三步的时候这里要注意了,刚才讲过赋值过程,是等号后面的值赋值给等号前面,所以当#1在第一步赋值以后,#1已经等于2了,所以在执行第三步的时候#2的值应该等于2,不在是第二步的1了。

从这里我们可以看出,当程序中有相同的变量#的时候,后面的#号代替前面的#号。

1.25比如:#1=21.26#1=31.271.28最后结果#1的值因该是等于3的。

所以说后面的代替前面的。

1.291.301.31四、变量的取值范围1.321.331.局部变量(#1-#33)1.34什么叫局部变量,局部变量就是在局部或则可以理解为在单个程序中有效。

断电以后系统自动清零。

1.351.362.公共变量(#100-#199,#500-#999)1.37公共变量和局部变量的区别在于,局部变量是在局部,或则单个程序中有效,而公共变量是指如果一个程序同时拥有主程序和子程序的情况下,在主程序中如果已经赋值,在子程序中可以不用从新赋值,可以共用。

而#100-#199和#500-#999的区别在于,前者断电清零,而后者不会清零会一直保存在系统内部。

比如:1.38#500=TAN[15]1.391.40#500一旦赋值就将保存在系统内部,下次可以直接调用#500使用。

1.411.423.系统变量(#1000-#17200)1.43系统变量是用于我们机床系统储存一些刀补数据参数等等的东西,我们可以不用管它,不会用的,慎用)1.441.45总结:一般情况下我们写程序用#1-#33,当有子程序的时候我们用#100-#199.1.461.471.48五、宏程序中常用的计算1.491.501.加法运算1.51例如:#1=21.52#1=#1+3 那么#1的值等于2+3=51.531.542.减法运算1.55例如:#1=31.56#1=#1-1 那么经过计算我们的#1的值等于3-1=2 1.571.583.乘法运算1.59程序中用*号来代替乘法1.60例如:#1=51.61#2=#1*2 那么计算出来#2的值等于5*2=101.621.634.除法运算1.64程序中用/ 号来代替除法运算1.65例如:#1=101.66#1=#1/2 那么经过计算#1的值等于10/2=51.671.681.69六、常用三角函数运算1.70(正切)1.71例如#1=2*TAN[20] 中括号里面是角度1.721.73(正玄)1.74例如#1=3*SIN[3] 同上1.751.76(余玄)1.77例如#1=COS[15]1.781.79、ACOS、ATAN(反三角)1.801.81(数学中的开平方的意思,和数学中根号一样)1.82例如#1=SQRT[9] 那么计算出来#1的值等于3 1.831.841.85七、宏程序的常用符号和含义1.86G T(大于)1.87G E(大于或等于)1.88L T(小于)1.89L E(小于或等于)1.90E Q(等于)1.91N E(不等于)1.92A BS(绝对值)1.93A ND(与)1.94O R(或者)1.951.96八、常用的语法和应用1.971.无条件转移GOTO n(n表示数值)1.98例如:GOTO01 此程序段的意思是当程序中执行到这一程序段的时候无条件跳转到程序段中N1的地方,执行N1后面的程序段。

1.99M3 S500 G991.1001.101T101 M081.1021.103GOTO 10 (当程序执行到这里的时候,直接跳转到N10那个程序段执行M30,跳过了G0那一步,所以这叫做无条件跳转,和我们一般程序中跳段功能一样)1.1041.105G0 X100. Z100.1.1061.107N10 M301.1081.1092.有条件跳转IF[条件表达式] GOTO n1.110例如:IF[#1 GT 15] GOTO 10 从这段程序当中,我们这样理解,如果中括号里面的条件满足,那么就执行后面的GOTO跳转语句,如果中括号里面条件不满足,那么不执行后面的GOTO 跳转,执行后面一个程序段。

1.111我们简单来写一个程序:1.112M3 S500 G991.1131.114T101 M081.1151.116N10#1=30(把数值30赋值给#1)1.1171.118IF[#1 LT 50] GOTO 10(首先判断中括号是不是满足条件,如果满足执行跳转,不满足执行下一步)1.119M301.1201.121从这个程序中我们可以发现当#1=30的时候,我们执行条件判断,我们来判断一下,#1现在等于30,那么重括号里面就可以理解为30小于50,现在条件满足。

所以他会执行后面GOTO跳转语句,跳转到N10地方继续执行)1.1221.123 3.强制赋值语句IF[条件表达式]THEN(执行语句)1.124例如:IF[#1 GT 20] THEN#1=20 (我们这样来理解这个语句,如果#1大于20,那么#1等于20,也就是说和上面一样,中括号里面条件满足的话,执行后面THEN语句,如果不满足,不执行后面then语句。

)1.125写一段简单程序:1.1261.127#1=3(把数值3赋值给#1)1.1281.129#1=#1-5(把#1-5计算出来的值从新赋值给#1,也就是3-5=-2,现在#1=-2)1.1301.131IF[#1 LT 0] THEN#1=0(强制赋值,如果#1小于0,那么强制让#等于0)1.1321.133M301.1341.135我们来分析一下上面程序段,当我们#1执行完减法运算以后#1的值已经等于-2,那么我们在执行强制赋值语句的时候我们来判断一下中括号里面条件是不是满足,-2小于0,条件满足,所以执行后面THEN语句,如果不满足的时候不执行THEN语句)1.1361.137 4.条件判断语句WHILE[表达式]DO n ( n为数值,取值范围1-99)1.138END n(n 与开头n的数值对应)1.1391.140例如:WHILE[#12 GT 50]DO 11.1411.142END 11.1431.144下面写一个程序段:1.1451.146#1=601.1471.148WHILE[#1 GT 50] DO 11.1491.150G0 X#11.1511.152G1 Z-20.1.1531.154G0 U1. Z1.1.1551.156END 11.1571.158M301.1591.160这个程序当条件判断语句里面中括号里面条件满足的时候执行DO 1和END 1中间的程序段,如果条件不满足,执行END 1后面的程序段M30。

1.1611.1621.1631.1641.1651.1661.167以上介绍的语法格式用法,以FANUCoi系列,广数,三菱系统为例。

西门子,宝源,新代等系统以说明书为准!!!实例1.单外径粗车宏的应用本实例介绍一个简单的车削外径的宏程序,目的为了让读者熟悉宏语句用法和逻辑。

上图为一个单一外圆车削图,材料为直径50的棒料,车削到直径30,长度30.图纸要求,平面见光就行,采用宏程序粗加工,每刀吃刀量为3毫米。

工艺分析1.采用3爪自定心卡盘夹持直径50,台阶爪定位左端面。

2.选择加工刀具,选用90度外圆机架刀车刀。

宏程序编程思路1.模仿G71路线。

2.毛培直径50赋值给#1,通过毛培每次递减,实现车削到指定直径。

3.图纸要求直径30赋值给#24.吃刀量赋值给#3,每层吃刀量为3.加工程序编程与注释O0010M3 S300 G99T101 M08G0 X51. Z10.Z0.G1 (平端面).#1=50(毛培赋值)#2=30(图纸要求尺寸)#3=3(吃刀量赋值)N10#1=#1-#3(利用减法运算,计算出每一层的X值)G0 X#1(X进刀)G1 Z-30.G0 U1. Z1.IF[#1 GT #2] GOTO 10(如果#1大于#2,那么执行跳转到N10的地方执行后面程序,如果不满足,执行后面一步)G0 X120. Z130.M30程序编制完成,我们来检查一下这个程序对不对,首先我们来看#1=#1-#3这一步,当#1等于50,#3=3的时候,我们就因该是50-3=47,然后把47从新赋值给#1,当执行完一刀外径车削以后,我们条件判断,如果#1大于#2,也可以理解为如果47大于30,跳转到N10继续执行N10后面程序段,现在47明显大于30,所以跳回N10的地方,继续执行,当跳回N10以后,#1=#1-#3,现在的#1应该是前面计算出来的47,也就是说#1现在等于47-3=44,然后在执行外径车削,条件判断。

但是我们现在来想一下,当他一直这样循环,循环6次以后,每次吃刀量3,也就是50-3*6=32,当#1等于32的时候,#1任然大于#2,所以他会继续跳转N10,循环第七次,当第7次执行#1=#1-#3的时候,结果#1=32-3=29,然后在执行G0X#1,也就是G0X29. 通过这里我们就可以看出如果程序这样编制,它会过切一个毫米,也就是说本来图纸要求直径为30,现在它车到了直径29,所以报废!下面我们看一下下面的程序怎么改进。

相关主题