由浅入深宏程序入门基础示例
宏程序编程实例与技巧方法
![宏程序编程实例与技巧方法](https://img.taocdn.com/s3/m/52d832e6d0f34693daef5ef7ba0d4a7302766cd3.png)
宏程序编程实例与技巧方法概述宏程序是一种程序设计技术,它可以帮助程序员更高效地编写代码。
宏程序可以在代码中定义一系列指令,然后在需要的时候通过宏调用来简化代码。
本文将介绍宏程序编程的一些实例以及一些技巧方法,帮助读者更好地理解和应用宏程序。
宏程序的使用场景宏程序常常用于编写重复性高的代码,例如循环结构、条件判断等。
通过宏程序,可以减少代码量,提高代码的可读性和维护性。
同时,宏程序还可以用来定义一些常用的功能模块,如计算、字符串操作等,以便在多个地方复用。
宏的定义和调用在开始介绍宏程序编程的实例之前,我们先来了解一下宏的定义和调用。
在大多数编程语言中,宏的定义是通过使用特定的关键字或语法来定义的。
一旦定义了宏,就可以通过宏调用来使用它。
下面是一个简单的示例,展示了如何定义和调用一个简单的宏:// 定义一个宏#define MAX(a, b) ((a) > (b) ? (a) : (b))// 使用宏int maxNum = MAX(10, 20);在上面的示例中,我们定义了一个名为MAX的宏。
这个宏接受两个参数a和b,并返回它们中较大的一个。
在使用宏的时候,我们直接使用MAX(10, 20)来调用它。
宏编程的实例实例一:计算平方有时候,我们需要计算一个数的平方。
下面是一个使用宏实现计算平方的例子:// 定义一个宏#define SQUARE(x) ((x) * (x))// 使用宏int squareNum = SQUARE(5); // squareNum 的值为25在上面的例子中,我们定义了一个名为SQUARE 的宏,它接受一个参数x,并返回x的平方。
在使用宏的时候,我们直接使用SQUARE(5)来调用它,得到结果25。
实例二:计算阶乘下面是一个使用宏实现计算阶乘的例子:// 定义一个宏#define FACTORIAL(n) ((n == 0) ? 1 : (n * FACTORIAL(n - 1)))// 使用宏int factorialNum = FACTORIAL(5); // factorialNum的值为120在上面的例子中,我们定义了一个名为FACTORIAL的宏,它接受一个参数n,并返回n的阶乘。
两步教你编写数控宏程序,就是这么简单!
![两步教你编写数控宏程序,就是这么简单!](https://img.taocdn.com/s3/m/45ec5ad8a0c7aa00b52acfc789eb172ded6399fb.png)
两步教你编写数控宏程序,就是这么简单!UG数控编程经常有朋友问我,如何学数控宏编程?复杂的事情简单化,简单的事情流程化比如面对一张产品图,尤其是复杂的,一看都懵其实世上无难事,只要肯分解。
工艺员主要就是干这事情的,把产品图分解成工序图,在细分每序如何装夹,用什么刀具,量具等等都会确定下来,从而形成工艺文件。
有了这个工艺文件,组织生产加工零件就容易多了,照着流程做就行了。
这个流程可以大幅度减少我犯错的概率,让我把做事情的难度降低好多倍。
知道流程化的威力后,回到数控编程上面来,我传授大家一个两步编写宏程序的流程。
两步教你编写宏程序第一步:设定确定变量关系在编写宏程序前,不知道从哪儿下手,先别管其它的,复杂的事情简单化,先从我告诉的第一步开始,拿出笔和纸,设定变量,并找出各变量之间的关系,列出变量之间的数学算式。
第二步:套用宏案例掌握了分层铣的这个案例,现在要编写一个类似程序,设置变量等然后套用我给你提供的案例即可。
比如上图分层铣的例子:铣一圈,刀具Z向下降一定深度,然后在铣一圈,Z向下降再下降一定深度,依次类推至到铣到加工深度为止。
如果我用一个变量来代替铣削深度,比如#1,设置每层下1mm,那么#1=#1-1(让变量#1自运算,每运算一次#1的数值减少1),开始执行的时候给#1赋值为0,作为运算起点。
第一步设定确定的变量关系如下:第一步,设置了#1代表铣削深度,假如零件总深-10,(总深也可以设置个变量)让#1与总深做比较,即#1LE-10当中括号中的表达式成立,就依次执行WHILE到END1之间的程序段。
也就实现了分层加工。
在比如下面这个案例:在数铣上加工半径为SR10的球面。
选取D12的铣刀采用G02顺铣每铣一圈,刀具下降一定深度再铣一圈,依次类推至到铣到加工深度为止(也就是软件编程中的等高环绕加工方法)如果我用一个变量来代替铣削深度,比如#1,设置每层下0.1mm,那么#1=#1+0.1(让变量#1自运算,每运算一次#1的数值增加0.1) #1=_____初始变量赋值#1=#1+0.1 每层切0.1深有了我设定的初始下刀深度#1,可以推算出Z方向的递减数值,设为#3,可以推算出#3=10-#1(如下图)比如初始下刀深度为1mm 即 #1=1 ,那么#3的值9。
宏程序实例讲解基础
![宏程序实例讲解基础](https://img.taocdn.com/s3/m/a84f7ef5910ef12d2af9e7dd.png)
实例1,以下是一个正六角形,尺寸如图,在cnc上的加工程序
编制有多种走刀方法。
下面我们来编制其cnc加工的宏程序。
因为这是一个标准图形,每个角度和尺寸都是一样的,所以编制起来是很容易的。
如果我们以图形的中心点为工件坐标原点,已知边长那么用G91编制普通程序就很简单了。
如果编制宏程序也很方便。
现在我们需要知道中心点到每个顶点线性距离。
我们需要用到三角函数来计算这个长度,具体的算法涉及到数学几何,在这里不做过多的赘述。
总之这个距离可以用三角函数表示为(6/cos30)。
我们在宏程序中可以只编制右上角的两条边,然后以中心点为参考把角度设为变量,利用G68坐标旋转,这里用顺时针旋转,所以角度取负值。
具体程序如下:G90G54G00X0Y0
M03S3000
G43H1Z10
#1=-60
WHILE[#1GE-360]DO1
G68X0Y0R#1
G00X0Y[6/cos30-4xcos30] X6
G69
#1=[#1-60]
END1
G00Z5
M05
G91G28Z0
M30。
宏程序入门基础学习资料
![宏程序入门基础学习资料](https://img.taocdn.com/s3/m/c48a40a18e9951e79a8927d5.png)
宏程序入门基础学习资料其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.由于现在B类宏程序的大量使用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A类宏的引用;A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx 格式输入的xx的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM~~~~~.#xx就是变量号,关于变量号是什么意思再不知道的的话我也就没治了,不过还是教一下吧,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,一般OTD系统中有#0~~~#100~#149~~~#500~#531关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据.我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么简单.好现在我来说一下H代码,大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A类宏,那么这个H 就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义:以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行,基本指令:H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到#101中G65H01P#101Q#10:把10赋予到#101中H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101G65 H02 P#101 Q#102 R10G65 H02 P#101 Q10 R#103G65 H02 P#101 Q10 R20上面4个都是加指令的格式都是把Q后面的数值或变量号内的数值加上R后面的数值或变量号内的数值然后等于到P后面的变量号中.H03减指令;格式G65 H03 P#101 Q#102 R#103,把#102的数值减去#103的数值赋予#101G65 H03 P#101 Q#102 R10G65 H03 P#101 Q10 R#103G65 H03 P#101 Q20 R10上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数值或变量号内的数值然后等于到P后面的变量号中.H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101G65 H04 P#101 Q#102 R10G65 H04 P#101 Q10 R#103G65 H04 P#101 Q20 R10上面4个都是乘指令的格式都是把Q后面的数值或变量号内的数值乘上R后面的数值或变量号内的数值然后等于到P后面的变量号中.H05除指令;格式G65 H05P#101 Q#102 R#103,把#102的数值除以#103的数值赋予#101G65 H05 P#101 Q#102 R10G65 H05 P#101 Q10 R#103G65 H05 P#101 Q20 R10上面4个都是除指令格式都是把Q后面的数值或变量号内的数值除以R后面的数值或变量号内的数值然后等于到P后面的变量号中.(余数不存,除数如果为0的话会出现112报警)三角函数指令:H31 SIN正玄函数指令:格式G65 H31 P#101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*SIN#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值.H32 COS余玄函数指令:格式G65 H32 #101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*COS#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值.H33和H34本来应该是TAN 和ATAN的可是经过我使用得数并不准确,希望有知道的人能够告诉我是为什么?开平方根指令:H21;格式G65 H21 P#101 Q#102 ;意思是把#102内的数值开了平方根然后存到#101中(这个指令是非常重要的如果在车椭圆的时候没有开平方跟的指令是没可能用宏做到的.无条件转移指令:H80;格式:G65 H80 P10 ;直接跳到第10程序段有条件转移指令:H81 H82 H83 H84 H85 H86 ,分别是等于就转的H81;不等于就转的H82;小于就转的H83;大于就转的H84;小于等于就转的H85;大于等于就转的H86;格式:G65 H8x P10 Q#101 R#102;将#101内的数值和#102内的数值相比较,按上面的H8x的码带入H8x中去,如果条件符合就跳到第10程序段,如果不符合就继续执行下面的程序段.用户宏程序能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。
宏程序编程实例与技巧方法
![宏程序编程实例与技巧方法](https://img.taocdn.com/s3/m/6062adf62cc58bd63186bd3a.png)
按位执行
22、从BCD转为BIN
23、从BIN转为BCD 注: ①ARCSIN
#i=BIN[#j ];
#i=BCD[#j ]; 取值范围
#i=ASIN[#j]
当No.6004.0=0时 :270°~90° No.6004.0=1时 :-90°~90° ②ARCCOS #I=ACOS[#j] 取值范围 180°~0°
下午7时44分
13
宏程序编程实例
O5000;FANUC G54 G90 G00 Z40 X70 Y20 M08 M03 S600 G43 Z3 H01 G01 Z-5 F100 #0=18 N10 #1=80*COS#0 #2=80*SIN#0 G41 X#1 Y#2 D01 #0=#0+72 IF [#0 LT 360] GOTO 10 G40 X70 Y70 Z40 M05 下午7M30 时44分
下午7时44分
11
下午7时44分
12
宏程序编程实例
ZH7640立式加工中心由北京 第三机床厂产生,采用华中铣床、加 工中心数控系统。加工范围 600mm×400mm×500mm。刀 库可容纳20把刀。可用于镗、铣、 钻、铰、攻丝等各种加工。实例为 在预先处理好的 100mm×100mm×80mm合金铝 锭毛坯上加工如图所示的零件,其 中正五边形外接圆直径为80mm。
下午7时44分 20
二、FANUC宏程序的变量
FANUC数控系统变量表示形式为# 后跟1~4位 数字,变量种类有四种:
变量号 #0 #1—— #33 变量类型 空变量该变量 总是空, 局部变量 功能 没有任何值能赋给该变量
局部变量只能用在宏程序中存储数据,例 如运算结果。当断电时局部变量被初始化 为空,调用宏程序时自变量对局部变量赋 值。
数控车B类宏程序的简单入门
![数控车B类宏程序的简单入门](https://img.taocdn.com/s3/m/3801307501f69e314332940e.png)
数控车B类宏程序的简单入门前言很多做数控车的朋友,看着别人都能够熟练的运用宏编程和加工,自己除了羡慕外也曾经多少次暗暗下决心决定学好宏,但苦于没有老师和实际的教材(网络中的教材大多需要有一定的基础才能看懂)一次次的被宏拒绝与门外。
我写此文的目的就是希望大家能够对宏有一个基本的了解并且能够入门。
下面我就通过一些简单的例子来引导各位进入宏的大门。
(文中的宏编程都是以GSK980TDb)宏的简单说明:学习宏就需要对宏的语法有一个简单的了解,下面就通过对宏运用实例的一些简单说明来带领大家学习宏。
简单的赋值语句●#101=300 把变量#101初始值定义为300●#102=240 把变量#102初始值定义为240●#103=#101+#102 #103的值是#101和#102的和●#104=#101-#102 #104的值是#101和#102的差●举例1:●O0001●N010 G97 恒转速●N020 G99 mm/r●N030 T0101 M03S500 调用1号刀具1号刀补●N040 #101=300 把变量#101初始值定义为300●N050 #102=240 把变量#102初始值定义为240●N060 G00 X400 Z#102 快速定位到X400 Z240的位置●N070 G00 X#101 Z0 快速定位到 X300 Z0的位置●N080G01 X-1 F0.2 切削到X-1的位置●N090 G00 X#101Z#102 快速定位到 X300 Z240的位置●N100 M30 程序结束并返回程序开始●复杂的赋值语句●N10 #101=100●N20 #101=#101-2●我想刚开始接触宏且没有接触过计算机语言的人对N20那段程序理解吧,很多人会这样理解●如果#101=#101-2 那就可以推出 0等于-2,其实这里”=”并不是等于号,而是赋值号。
●其实可以这样理解●N10#101=100 有个人的名字叫#101他的口袋里有100块钱●N20#102=140●N30#101=#101-5 #101买瓶水花掉5块钱,那么他口袋的钱就只有95块,也就是说买水前他口袋是100块,他从口袋里拿出5块钱付账,然后把身上的钱又放回袋子里,口袋里是不是就只有95块了,而口袋还是这个口袋没有变,但是钱却少了,注意是执行完这个动作。
宏程序编程例子入门
![宏程序编程例子入门](https://img.taocdn.com/s3/m/e6d8802d001ca300a6c30c22590102020640f261.png)
宏程序编程例子入门了解过数控宏程序的人都知道:宏程序里面应用了大量的编程技巧,数学关系式的表达,加工刀具的选择,走刀方式的取舍等;宏程序也最能反映编程者的工艺思想,同时程序特别精炼。
但是问题来了?宏程序到底难不难学?这就像小马过河似一样,小马准备过一条河,然后大象说水非常浅,还不到膝盖,然后松鼠说,水非常深,把自己的同伴都淹死了。
宏程序之所以难学,那是因为市面上的资料等书籍把宏程序讲解的太高大上了,于是看的越多,智障越多,烦恼就越多。
人生苦短,时间宝贵,看看我怎么给您讲解数控宏程序编程,只要你会普通程序,我就能让你快速掌握宏程序编程。
相信大家见过宏程序的朋友,你们一定会见到很多的犹如#1、#2、#3....#149等宏变量以及一些IF[#1LE#3]GOTO100等之类的宏语句,其实用诸如用#1、#2等变量编写的程序就叫宏程序。
下面我们进入正题。
一,变量(学宏之前先懂变量)1,变量的含义:我们普通程序(如G01X100.Y100.F200)X,Y地址后面都是些常量,如果我们把这些常量用变量来编写如G01X#1Y#2F200,这就是我们所谓的宏程序。
那么#和后面的1、2、3、4.....数字标识到底什么关系。
让我们用最白话的方式理解它吧。
这些#号,它是宏代码,1、2、3....是区分这些宏代码的标记。
什么意思呢,举个最简单的例子:如果有三个人,他们的名字叫小李、小李、小李。
那么当你呼叫小李的时候,会发生一个问题,这三个人都会回答,但你其实只想喊其中的一个。
这就分不清了。
同理,#1#1#1,如果后面的数字都是一样,当系统使用#1的时候,它也会发生糊涂,到底让我用哪个呢?所以为了区分它们,就把后面的数字写成不同的,比如#1,#2,#3。
此时如果系统使用#1,就不会发生混乱了。
当然了,标示数字的不同,宏变量的意义也不同,分局部变量、公共变量、系统变量等等,就目前来说,我们使用的是局部变量,能把它用好就不错了,基础打好了再说!宏变量的目前就介绍到这。
由浅入深,巧学宏程序
![由浅入深,巧学宏程序](https://img.taocdn.com/s3/m/7296db7da417866fb84a8ec1.png)
#5 =2 0 7 M9 8Pc
#5 =2 8 0 6. M9 8P0 2 O 0 6. =2 6 M9 8P00 2 G00 O O X8 Z3
M3 0
%0 2 o
X 5 】 O
G3 2ZOF1
5 、宏程序 流程 控制
程 序 流 程 控 制 形 式 有许 多种 ,都 是 通 过 判 断 某 个 “ 件 ” 条 是 否 成立 来 决定 程序 走 向 的 。所谓 “ 条件 ” ,通 常是 对 变量 或 变 量 表 达 式 的 值 进 行 大 小 判 断 的 式 子 ,称 为 “ 件 表 达 式 ” 。 华 条 中数 控 系统 有 两 种流 程 控 制命 令 :I 卜 E NDI ,w HI E — F L—
舵 = 51 * QRT[5 1 挣 】 2 ,5 S 1 5 1
ENDW G01X3 2
Go0X5 0Z1 o 0
M3 0
6 . 2变螺 距螺纹 的车 削 : ( 图二 )
% 3 00 0H
TO1 0 0 01M 3S6 o G92X8 0Z3 O Go0X3 0Z4
ENDW 。
1 什 么宏程 序
简单 地说 ,宏程 序是 一种具 有 计算 能 力和 决策 能 力的数 控 程 序 。宏程 序具 有如 下特点 : 使用了变量或表达式( 计算能力)例如: , (G 1 35 ; 1 0 + ]有表达 式3 5 ) X【 + () 0 4F# 】 有变量 } 2G 0 【l ; X } 1 ( G 1 5 I 3】有 函数运 算 3 0 OSN[ ; ) Y【 ] 使用 了程序 流程控 制( 决策 能力 ) 如: , 例 () 1F鹕 G 有选择 执行 命令 … … E D F I E9; N I ( WHL l T舭 有 条件循环 命令 …… E D 2 ) IE# L 5; N W
宏程序编程例子入门
![宏程序编程例子入门](https://img.taocdn.com/s3/m/3afcd4c3a5e9856a571260a2.png)
宏程序编程例题椭圆解析:椭圆关于中心、坐标轴都是对称的,坐标轴是对称轴,原点是对称中心。
对称中心叫做椭圆中心。
椭圆和X轴有2两个交点,和Y轴有两个交点,这四个交点叫做椭圆极点。
椭圆标准方程:x2 / a2 + y2 / b2 = 1 ( a为长半轴,b为短半轴,a > b > 0 )椭圆参数方程:x=a*cosMy=b*sinM ( a为长半轴,b为短半轴,a > b > 0 ,M是夹角,是椭圆上任意一点到椭圆中心连线与X正半轴所成的夹角,顺时针为负,逆时针为正。
)二、数控车床:依照椭圆标准方程:x2 / a2 + y2 / b2 = 1 ( a为长半轴,b为短半轴,a > b > 0 )依照椭圆参数方程:x=a*cosMy=b*sinM ( a为长半轴,b为短半轴,a > b > 0 ,M是夹角,是椭圆上任意一点到椭圆中心连线与X正半轴所成的夹角,顺时针为负,逆时针为正。
)可得车床标准方程:z2 / a2 + x2 / b2 = 1 ( a为长半轴,b为短半轴,a > b > 0 )可得椭圆参数方程:z=a*cosMx=2b*sinM ( a为长半轴,2b为短轴(直径),a > b > 0 ,M是夹角,是椭圆上任意一点到椭圆中心连线与Z正半轴所成的夹角,顺时针为负,逆时针为正。
)通过标准方程推导X的表达式:x =b / a * SQRT [a * a– z * z ] a、b为长、短半轴是常数表示。
(一)车床车削椭圆一般是加工椭圆X正方向部份(回转体),用标准方程车削椭圆时,通常设Z为自变量,通过方程把X表达出来,最多确实是车削到180度椭圆,然后利用G01插补拟合成椭圆。
通过椭圆车床标准方程推导,能够有如下进程:z2 / a2 + x2 / b2 = 1可推导x2 / b2 =1- [ z2 / a2 ] = [ a2 – z2 ] / a2可推导x2 = [ b2 / a2 ] * [ a2 – z2 ] x =b / a * SQRT [a2 – z2 ]转换为数控格式就为x =2b / a * SQRT [a * a– z * z ] a为长半轴、2b为短轴(直径编程)常数表示。
数控车床由浅入深的宏程序实例
![数控车床由浅入深的宏程序实例](https://img.taocdn.com/s3/m/5d4d3b0ff705cc1754270989.png)
宏程序之杨若古兰创作裳华职业技术中专鲍新涛宏程序概述其实说起来宏就是用公式来加工零件的,比方说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线迫近,如果是个光洁度请求很高的工件的话,那么须要计算很多的点,可是利用了宏后,我们把椭圆公式输入到零碎中然后我们给出Z坐标而且每次加10um那么宏就会主动算出X坐标而且进行切削,实际上宏在程序中次要起到的是运算感化..宏普通分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是以直接的公式和说话输入的和C说话很类似在0i零碎中利用比较广.宏程序的感化数控零碎为用户配备了强无力的类似于高级说话的宏程序功能,用户可以使用变量进行算术运算、逻辑运算和函数的混合运算,此外宏程序还提供了轮回语句、分支语句和子程序调用语句,利于编制各种复杂的零件加工程序,减少乃至免除手工编程时进行繁琐的数值计算,和精简程序量.宏程序指令适合抛物线、椭圆、双曲线等没有插补指令的曲线编程;适合图形一样,只是尺寸分歧的系列零件的编程;适合工艺路径一样,只是地位参数分歧的系列零件的编程.较大地简化编程;扩展利用范围.宏的分类B类宏因为此刻B类宏程序的大量使用,很多书都进行了介绍这里我就不再反复了,但在一些老零碎中,比方发那科(FANUC)OTD零碎中因为它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果利用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控零碎中,可是如果我们没有PC机和RSN-32电缆的话怎样办呢,那么只要通过A类宏程序来进行宏程序编制了,上面我介绍一下A类宏的援用;A类宏A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式输入的,xx的意思就是数值,是以um级的量输入的,比方你输入100那就是.#xx就是变量号,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,普通OTD零碎中有#0~#100~#149~#500~#531.关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531坚持数据.我们如果说#100=30那么此刻#100地址内的数据就是30了,就是这么简单.好此刻我来说一下H代码,大家可以看到A类宏的尺度格式中#xx和xx都是数值,而G65暗示使用A类宏,那么这个H就是要暗示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以利用了,好,此刻说一下H代码的各个含义:利用以下都以#100和#101和#102,及数值10和20做为例子,利用的时候别把他们当格式就行,基本指令H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到#101中G65H01P#101Q#10:把#10赋予到#101中H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101G65 H02 P#101 Q#102 R10G65 H02 P#101 Q10 R#103G65 H02 P#101 Q10 R20上面4个都是加指令的格式都是把Q后面的数值或变量号内的数值加上R后面的数值或变量号内的数值然后等于到P后面的变量号中.H03减指令;格式G65 H03 P#101 Q#102 R#103,把#102的数值减去#103的数值赋予#101G65 H03 P#101 Q#102 R10G65 H03 P#101 Q10 R#103G65 H03 P#101 Q20 R10上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数值或变量号内的数值然后等于到P后面的变量号中.H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101G65 H04 P#101 Q#102 R10G65 H04 P#101 Q10 R#103G65 H04 P#101 Q20 R10上面4个都是乘指令的格式都是把Q后面的数值或变量号内的数值乘上R后面的数值或变量号内的数值然后等于到P后面的变量号中.H05除指令;格式G65 H05P#101 Q#102 R#103,把#102的数值除以#103的数值赋予#101G65 H05 P#101 Q#102 R10G65 H05 P#101 Q10 R#103G65 H05 P#101 Q20 R10上面4个都是除指令格式都是把Q后面的数值或变量号内的数值除以R后面的数值或变量号内的数值然后等于到P后面的变量号中.(余数不存,除数如果为0的话会出现112报警)三角函数指令H31 SIN正玄函数指令:格式G65 H31 P#101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*SIN#103,也就是说可以直接用这个求出三角形的另一条边长.和之前的指令一样Q和R后面也能够直接写数值.H32 COS余玄函数指令:格式G65 H32 P#101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*COS#103,也就是说可以直接用这个求出三角形的另一条边长.和之前的指令一样Q和R后面也能够直接写数值.H33和H34本来应当是TAN 和ATAN的可是经过我使用得数其实禁绝确,但愿有晓得的人能够告诉我是为何?开平方根指令H21;格式G65 H21 P#101 Q#102 ;意思是把#102内的数值开了平方根然后存到#101中(这个指令是非常次要的如果在车椭圆的时候没有开平方根的指令是没可能用宏做到的.无条件转移指令H80;格式:G65 H80 P10 ;直接跳到第10程序段有条件转移指令H81 H82 H83 H84 H85 H86 ,分别是等于就转的H81;不等于就转的H82;小于就转的H83;大于就转的H84;小于等于就转的H85;大于等于就转的H86;格式:G65 H8x P10 Q#101 R#102;将#101内的数值和#102内的数值比拟较,按上面的H8x的码带入H8x中去,如果条件符合就跳到第10程序段,如果不符合就继续履行上面的程序段.4B类宏程序定义能完成某一功能的一系列指令像子程序那样存入存储器,用户可以设定M、S、T、G代码调用它们,使用时只需给出这个指令代码就能履行其功能,也能够像调用子程序一样使用.如许的程序也称感化户宏程序l 调用宏程序的指令————宏指令l 特点:使用变量变量的暗示和使用(一)变量暗示#I(I=1,2,3,…)或#[<式子>]例:#5,#109,#501,#[#1+#2-12](二)变量的使用1.地址字后面指定变量号或公式格式:<地址字>#I这里的“I”代表变量号例:F#103,设#103=15 则为F15Z-#110,设#110=250 则为Z-250X[#24+#18*COS[#1]]2.变量号可用变量代替例:#[#30],设#30=3 则为#33.变量不克不及使用地址O,N,I例:下述方法下答应O#1;I#2 6.00×100.0;N#3 Z200.0;4.变量号所对应的变量,对每个地址来说,都有具体数值范围例:#30=1100时,则M#30是不答应的5. #0为空变量,没有定义变量值的变量也是空变量6.变量值定义:程序定义时可省略小数点,例:#123=149MDI键盘输一.变量的品种1. 局部变量#1~#33一个在宏程序中局部使用的变量,其运算结果其他程序不成使用.例:A宏程序B宏程序……#10=20 X#10 不暗示X20……断电后清空,调用宏程序时代入变量值2. 公共变量.初期(#100~#149,#500~#531 )、新零碎(#100~#199,#500~#999)各用户宏程序内公用的变量,其运算结果任何程序调用都不异.例:上例中#10改用#100时,B宏程序中的X#100暗示X20#100~#149 断电后清空#500~#531坚持型变量(断电后不丢失)3. 零碎变量固定用处的变量,其值取决于零碎的形态例:#2001值为1号刀补X轴抵偿值#5221值为X轴G54工件原点偏置值入时必须输入小数点,小数点省略时单位为μm 运算指令运算式的右侧可所以常数、变量、函数、式子式中#j,#k也可为常量式子右侧为变量号、运算式1.定义#I=#j2.算术运算#I=#j+#k#I=#j-#k#I=#j*#k#I=#j/#k3.逻辑运算#I=#JOK#k#I=#JXOK#k#I=#JAND#k4.函数#I=SIN[#j] 正弦#I=COS[#j] 余弦#I=TAN[#j] 正切#I=ATAN[#j] 反正切#I=SQRT[#j] 平方根#I=ABS[#j] 绝对值#I=ROUND[#j] 四舍五入化整#I=FIX[#j] 上取整#I=FUP[#j] 下取整#I=BIN[#j] BCD→BIN(二进制)#I=BCN[#j] BIN→BCD1.说明1) 角度单位为度例:90度30分为90.5度2) ATAN函数后的两个边长要用“/ ”隔开例:#1=ATAN[1]/[-1]时,#1为了35.03) ROUND用于语句中的地址,按各地址的最小设定单位进行四舍五入例:设#1=1.2345,#2=2.3456,设定单位1μmG91 X-#1;X-1.235X-#2 F300;X-2.346X[#1+#2];X3.580未返回原处,应改为X[ROUND[#1]+ROUND[#2]];4) 取整后的绝对值比原值大为上取整,反之为下取整例:设#1=1.2,#2=-1.2时若#3=FUP[#1]时,则#3=2.0若#3=FIX[#1]时,则#3=1.0若#3=FUP[#2]时,则#3=-2.0若#3=FIX[#2]时,则#3=-1.05) 指令函数时,可只写开头2个字母例:ROUND→ROFIX→FI6) 优先级函数→乘除(*,1,AND)→加减(+,-,OR,XOR)例:#1=#2+#3*SIN[#4];7) 括号为中括号,最多5重,园括号用于正文语句例:#1=SIN[[[#2+#3]*#4+#5]*#6];(3重)转移与轮回指令1.无条件的转移格式:GOTO 1;GOTO #10;2.条件转移格式:IF[<条件式>] GOTO n条件式:#j EQ#k 暗示=#j NE#k 暗示≠#j GT#k 暗示>#j LT#k 暗示<#j GE#k 暗示≥#j LE#k 暗示≤例:IF[#1 GT 10] GOTO 100;…N100 G00 G91 X10;例:求1到10之和O9500;#1=0#2=1N1 IF [#2 GT10] GOTO 2#1=#1+#2;#2=#2+1;GOTO 1N2 M301.轮回格式:WHILE[<条件式>]DO m;(m=1,2,3)………ENDm说明:1.条件满足时,履行DOm到ENDm,则从DOm的程序段不满足时,履行DOm到ENDm的程序段2.省略WHILE语句只要DOm…ENDm,则从DOm到ENDm之间构成死轮回3.嵌套4.EQ NE时,空和“0”分歧其他条件下,空和“0”不异例:求1到10之和O0001;#1=0;#2=1;WHILE [#2LE10] DO1;#1=#1+#2;#2=#2+#1;END1;M30由浅入深宏程序1-宏程序入门基础之销轴加工对于没有接触过宏程序人,觉得它很神秘,其实很简单,只需把握了各类零碎宏程序的基本格式,利用指令代码,和宏程序编程的基本思路即可.对于初学者,特别是要精读几个有代表性的宏程序,在此基础上进行模仿,从而能够以此类推,达到独立编制宏程序的目的.本教程将分步由浅入深的将宏程序讲解给大家,作者水平无限,也但愿各位同仁提供更好的思路.上面大家先看一个简单的车床的程序,图纸如下:请求用外圆刀切削一个短轴,这里只列举程序的前几步:T0101M3S800 G0X82Z5 G0X76G1Z-40FG0Z5 G0X72G1Z-40F82 G0Z5 G0X68G1Z-40F82 G0Z5 G0X68G1Z-40F82 G0Z5 ........ G0X40G1Z-40FX82 G0Z5 G0X150Z150 M5 M30从上面程序可以看出,每次切削所用程序都只是切削直径X有变更,其他程序代码未变.是以可以将一个变量赋给X,而在每次切削完以后,将其改变成下次切削所用直径即可.O5679T0101M3S800G0X82Z5#1=76赋初始值,即第一次切削直径N10 G0X[#1]将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值.N10是程序G1Z-40F 段的编号,用来标识本段,为后面轮回跳转所用.X82G0Z5#1=#1-4每行切深为2mm,直径方向递减4mmIF [#1GE40] GOTO 10如果#1 >= 40,即此表达式满足条件,则程序跳转到N10继续履行.G0X150Z150 当不满足#1 >= 40,即#1<40,则跳过轮回判断语句,由此句继续向后履行.M5M30由浅入深宏程序2-宏程序之销轴粗精加工本篇文章利用宏程序简单模仿数控零碎的外圆车削轮回功能.在此用前一篇的图纸与程序原程序:O0985T0101M3S800G0X82Z5 粗加工开始#2=0.05 Z向的加工余量#3=0.5 外圆方向的加工余量#4=0.3 每层切削后的回退量#1=76+2*#3考虑了精加工余量的第一次切削直径N10 G0X[#1]将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值.N10是程序G1Z[-40+#2] 段的编号,用来标识本段,为后面轮回跳转所用.X[#1+#4] 每次切削只回退#4的值G0Z5#1=#1-4单边切深为2mm,直径方向每次递减4mmIF [#1GE40] GOTO 10如果#1 >= 40,即此表达式满足条件,则程序跳转到N10继续履行.M03S1200 当不满足#1 >= 40,即#1<40,则跳过轮回判断语句,由此句继续向后履行.G0X40 由此开始精加工G1Z-40FX82G0X150Z150M5M30由浅入深宏程序3-宏程序车半球面在不使用轮回切削加工圆弧时,可以有几种分歧的方式来安插走刀轨迹,本篇文章采取将圆弧段沿X方向偏移,由外籍内的加工方式进行.如图所示R20圆弧,假设刀具每次单边切深2mm,直径每刀吃4mm,则由端面切入的地位可以计算出须要切削:40/4=10 刀每条圆弧起点和起点的Z坐标不变,但X坐标都同时向+X方向偏移一个不异的值,是以可设偏移量为#1,初始值为#1=36圆弧起点 X坐标为 #2=0+#1圆弧起点 X坐标为 #3=40+#1宏程序编制如下:O3456T0101M3S800G0X42Z5#1=36赋初始值,即第一个圆弧直径偏移量N10 #2=0+#1 计算圆弧起点的X坐标#3=40+#1 计算圆弧起点的X坐标G0X[#2]快速到达切削直径G1Z0F0.1 直线切至圆弧起点G3X[#3]Z-20R20F0.1 切削圆弧G1X42 直线插补切削至外圆G0Z5 退至端面外侧#1=#1-4直径方向递减4mmIF [#1GE0] GOTO 10如果#1 >= 0,即此表达式满足条件,则程序跳转到N10继续履行.G0X150Z150 当不满足#1 >=0,即#1<0,则最初一条圆弧曾经切完,跳出轮回.M5M30由浅入深宏程序4-圆的尺度方程编制宏程序车半球面我们晓得不管什么样的曲线,数控零碎都是CAD/CAM软件在处理时都会将其按照内部的算法划分成小段的直线进行加工,接上去我们利用圆的方程来将直线划分成小段直线在利用宏程序对其加工.下图为圆的尺度方程X*X+Y*Y=R*R,若将X和Y用参数变量代替可改写为#1*#1+#2*#2=R*R圆弧可沿#1方向划分成有数小段直线,然后求出其响应端点坐标,再求出绝对的数控车床中的坐标,再按直线进行编程加工.如下图所示:则此段圆弧精加工轨迹为:G0X0G1Z0F#1=0N10 #2=SQRT[20*20-#1*#1] SQRT暗示开平方#3=#1-20 圆的原点在工件坐标左边20,所以圆弧上所有点坐标Z 要减20#4=2*#2 圆的方程计算出的为半径值,需转化为直径值才干与直径编程对应.G1X[#4]Z[#3]F0.1 沿小段直线插补加工#1=#1-0.5 递减一小段距离,此值越小,圆弧越光滑.IF [#1GE0] GOTO 10 条件判断是否到达起点.G1X42 直线切出外圆如果要再加上分层的粗加工,设偏移量为#5,则程序改为O6789T0101M3S800G0X42Z5#5=36N5 G0X[#5]G1Z0F#1=20N10 #2=SQRT[20*20-#1*#1] SQRT暗示开平方#3=#1-20 圆的原点在工件坐标左边20,所以圆弧上所有点坐标Z 要减20#4=2*#2+#5 圆的方程计算出的为半径值,需转化为直径值才干与直径编程对应.G1X[#4]Z[#3]F0.1 沿小段直线插补加工#1=#1-0.5 递减一小段距离,此值越小,圆弧越光滑.IF [#1GE0] GOTO 10 条件判断是否到达起点.G1X42 直线插补切出外圆G0Z5#5=#5-4IF [#5 GE 0] GOTO 5G0X150Z150M5M30以上程序分内外二层轮回,外层轮回为分层加工,内层轮回为小段直线插补一条圆弧.由浅入深宏程序5-圆的参数方程编制宏程序车半球面圆的尺度方程为:X=R*COSθY=R*SINθ可改写为: #1=20*cos[#3] #3为参数方程对应图纸中角度#2=20*sin[#3]使用参数方程比圆的尺度方程具有一个长处,从下图中可以看出,使用尺度方程式,在工件最右端,划分直线坡度较大,从右至左划分线段不均匀,而使用圆的参数方程所划分的直线段是按照圆周方向划分的,是以分布均匀,从而使用零件概况加工质量好.响应程序点窜如下:O9876T0101M3S800G0X42Z5#6=36N5 G0X[#6]G1Z0F#3=0N10 #1=20*COS[#3]#2=20*SIN[#3]#4=2*#2+#6 圆的方程计算出的为半径值,需转化为直径值才干与直径编程对应.#5=#1-20G1X[#4]Z[#5]F0.1 沿小段直线插补加工#3=#3+3 递减3度,此值越小,圆弧越光滑.IF [#3 LE 90] GOTO 10 条件判断是否到达起点.G1X42 直线插补切到工件外圆以外G0Z5#6=#6-4IF [#6 GE 0] GOTO 5G0X150Z150M5M30由浅入深宏程序6-利用椭圆尺度方程编制数控车宏程序椭圆的尺度方程:椭圆宏程序结构流程:如果看了前几篇,那么接上去这两篇加工椭圆的宏程序应当很容易理解.椭圆尺度方程X*X/a*a+Y*Y/b*b=1,其中a为长半轴,b为短半轴,若将X和Y用参数变量代替可改写为#1*#1/a*a+#2*#2/b*b=1椭圆可沿长半轴#1方向划分成有数小段直线,然后求出其响应端点坐标,再求出绝对的数控车床中的坐标,再按直线进行编程加工.如下图所示:假设椭圆a=30,b=20,只加工半个椭圆,则此段椭圆精加工轨迹为:G0X0G1Z0F#1=30N10 #2=20*SQRT[1-30*30/#1*#1] SQRT暗示开平方#3=#1-30 椭圆的原点在工件坐标左边30,所以椭圆上所有点坐标Z要减20#4=2*#2 方程计算出的为半径值,需转化为直径值才干按直径编程.G1X[#4]Z[#3]F0.1 沿小段直线插补加工#1=#1-1 递减一小段距离,此值越小,椭圆越光滑.IF [#1GE0] GOTO 10 条件判断是否到达起点.G1X42 直线切出外圆如果要再加上分层的粗加工,设偏移量为#5,则程序改为O5678T0101M3S800G0X42Z5#5=36N5 G0X[#5]G1Z0F#1=30N10 #2=20*SQRT[30*30-[#1*#1]]/30 SQRT暗示开平方#3=#1-30 椭圆的原点在工件坐标左边30,所以椭圆上所有点坐标Z要减20#4=2*#2 方程计算出的为半径值,需转化为直径值才干按直径编程.G1X[#4]Z[#3]F0.1 沿小段直线插补加工#1=#1-1 递减一小段距离,此值越小,椭圆越光滑.IF [#1GE0] GOTO 10 条件判断是否到达起点.G1X42 直线插补切出外圆G0Z5#5=#5-4IF [#5 GE 0] GOTO 5G0X150Z150M5M30以上程序分内外二层轮回,外层轮回为分层加工,内层轮回为小段直线插补一条四分之一椭圆弧.由浅入深宏程序7-椭圆的参数方程编制宏程序车椭球面椭圆的参数方程为:X=a*COSθY=b*SINθ可改写为: #1=30*cos[#3] #3为参数方程对应的中角度#2=20*sin[#3]响应程序点窜如下:O3456T0101M3S800G0X42Z5#6=36N5 G0X[#6]G1Z0F#3=0N10 #1=30*COS[#3]#2=20*SIN[#3]#4=2*#2+#6 计算出的为半径值,需转化为直径值才干与直径编程对应.#5=#1-30G1X[#4]Z[#5]F0.1 沿小段直线插补加工#3=#3+3 递减3度,此值越小,工件概况越光滑.IF [#3 LE 90] GOTO 10 条件判断是否到达起点.G1X42 直线插补切到工件外圆以外G0Z5#6=#6-4IF [#6 GE 0] GOTO 5G0X150Z150M5M30由浅入深宏程序8-车床任意地位椭圆宏程序的编制不在轴线上的椭圆宏程序编制也没有什么特殊的,只是改下偏置的数值而已.椭圆的参数方程为:X=a*COSθY=b*SINθ可改写为: #1=30*cos[#3] #3为参数方程对应的中角度#2=20*sin[#3]图中椭圆长半轴30mm,短半轴20mm,椭圆中间地位如图所示,不在轴线上,是以在计算编程所用的坐标值时,X方向要再加上40,Z 方向要减去30+10=30响应程序如下:O2345T0101M3S800G0X82Z5#6=36N5 G0X[#6+40]G1Z-10F#3=0N10 #1=30*COS[#3]#2=20*SIN[#3]#4=2*#2+#6+40 计算出的为半径值,需转化为直径值才干与直径编程对应.#5=#1-30-10G1X[#4]Z[#5]F0.1 沿小段直线插补加工#3=#3+3 递减3度,此值越小,工件概况越光滑.IF [#3 LE 90] GOTO 10 条件判断是否到达起点.G1X82 直线插补切到工件外圆以外G0Z5#6=#6-4IF [#6 GE 0] GOTO 5G0X150Z150M5M30由浅入深宏程序9-车床扭转椭圆宏程序的编制要对斜椭圆进行编程,首先要晓得单个坐标点扭转所用的公式.如下图所示,单个点逆时针扭转必定角度,公式推导如下:s = r cos(a + b) = r cos(a)cos(b) –r sin(a)sin(b) (1.1) t = r sin(a + b) = r sin(a)cos(b) + r cos(a) sin(b) (1.2) 其中x = r cos(a) , y = r sin(a) 代入(1.1), (1.2) , s = x cos(b) –y sin(b) (1.3) t = x sin(b) + y cos(b) (1.4)根据下图,本来的点(#1,#2),扭转后的点(#4,#5),则公式:#4=#1*COS[30]-#2*SIN[30]#5=#1*SIN[30]+#2*COS[30]下图中椭圆扭转了30度,即#1=30扭转前后的点坐标的坐标原点都是椭圆中间.程序如下:O1234T0101M3S800G0X82Z5#6=16 工件毛坯假设为90mm,#6为每层切削时椭圆弧向+X的偏移量.N5 G0X[#6+30+40] 斜椭圆与端面的交点直径为70G1Z0F#3=0N10 #1=30*COS[#3]对应角度#3的椭圆上的一个点的坐标,此为未扭转的椭圆的点#2=20*SIN[#3]#4=#1*COS[30]- #2*SIN[30] 扭转30度以后对应的坐标值#5=#1*SIN[30]+ #2*COS[30]#7=2*#4+#6+40坐标平移后的坐标.#8=#1-26G1X[#7]Z[#8]F0.1 沿小段直线插补加工#3=#3+3 递减3度,此值越小,工件概况越光滑.IF [#3 LE 90] GOTO 10 条件判断是否到达起点.G1X92 直线插补切到工件外圆以外G0Z5#6=#6-4IF [#6 GE 0] GOTO 5G0X150Z150M5M30椭圆加工:零件材料45钢,毛坯为φ50mm×100mm,按图请求完成数控加工程序.O0001;T0101 ;M03 S800;G0 X51. Z2.;G71 U1.5 R1. ;(粗车右端外形轮廓)G71 P10 Q20 U0.5 W0.1 F150 ;N10 G;(椭圆处外径)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.;S800 F150;#150 = 26.;(定义椭圆加工余量)N30 IF [#150 LT 1] GOTO 40;(如果余量小于1,跳到40句)M98 P0003;(调用椭圆加工宏程序)#150 = #150 - 2;(每次递减2mm)GOTO 30 ;(无条件跳转到30句)N40 G0 X30. Z2.;S1500 F80;#150 =0;(开始精加工椭圆轮廓)M98 P0003;G0 X100. Z5.;M30;O0003;(椭圆加工子程序)#101=20.;(椭圆长半轴)#102=13.;(椭圆短半轴)#103=20.;(起点处Z坐标)N20 IF [#103 LT 1] GOTO 50;(如果Z值小于1跳转到50句)#104 = SQRT[#101*#101 - #103*#103]#105 = #102*#104/#101G01 X[2*#105 + #150] Z[#103 – 20];(直径值定义加上加工余量,Z向偏移椭圆长半轴);(Z坐标递减)GOTO 20;(绝对跳转到20句)N50 G00 U2. Z2.;(退刀)M99;椭圆轮廓编程技巧O0027;T0101 ;G98;M43;M03 S800;G0 X80. Z5.;G73 U25 R25;(调用粗车轮回加工椭圆轮廓)G73 P10 Q20 U0.5 W0 F150 ;N10 G1 X30 Z0;(轮廓起点)Z-8.79;#100=-8.79;(椭圆起点Z坐标)#103=SQRT[36*36-#102];(构造)#104=10+2/3*#103;10mm)#105=2*#104;G01 X#105 Z#100;#100=#100-2;(Z向递减2mm)IF [#100GT-72.102] GOTO 15(如果Z坐标值大于-72.102跳转到15句)G00 U30;N20 X70;G00 X80 Z5;G70 P10 Q20 F100;(精加工椭圆轮廓)G00 X100;Z100;M05;M30;参数方程编写椭圆宏程序:O0271;T0101;M03 S800;G0 X36 Z26;#20=26;(X 向总加工余量)N56 G0 U2;Z26;(Z 向加工起点)N100 #20=[#20-2];(X 向递减2mm )#1=12.5;(椭圆短半轴)#2=25;(椭圆长半轴)#3=0.5;(起始处椭圆离心角)#5=90;(终止处椭圆离心角)WHILE [#3 LT #5] DO2;(当起始角小于终止角时履行DO2到END2之间的程序段)#6=#2*COS[#3];(构造 )#7=2*#1*SIN[#3];(构造 ) G1 X[#7+#20] Z#6 F150;(椭圆X坐标加余量值)#3=#3+#4;(椭圆离心角递增)#10=#7+#20;(X向当前点坐标)IF [#10 GT 26] GOTO 56;(如果X向当前点坐标大于26跳转到56句从新定起点)END 2G0 U2; )(*αCOS a )(**2αSIN bZ26;(退刀)IF [#20 GE 0] GOTO 100;(如果余量大于等于0跳转到100句)G0 X100;M05;M30;抛物线类零件的宏程序编制抛物线宏程序编制:O0272;M03 S800;G98;G00 X90Z100;N10 #24=0;(抛物线顶点处X值)#26=0; (抛物线顶点处Z值)#17=-10;(常量)#22=42;(抛物线开口处直径)#6=1;(每次步进量)#9=100;(进给率)G00 X#24 Z[#26+5];(加工起点)G01 Z#26 F[2*#9];N30 #24=#24+#6;#26=[#24*#24]/[#17]; ()G01X2*#24 Z#26 F#9;N60 IF [#24 LT #22/2] GOTO 30;(如果X值小于开口处直径一半跳转到30句)G01 X#22 Z#26 F[3*#9];M05;M30;双曲线过渡类零件的宏程序编制焦点在X轴上的双曲线,其尺度方程为焦点在Y轴上的双曲线宏程序编制:程序编制:O0273;T0101;M03 S500;G98;G01 X10;Z-5.05;X17.524;#1=20;N10 #2=38-10/SIN[#1];#3=-60+20/TAN[#1];G01 X2*#2 Z#3;#1=#1+1;IF [#1 LT 80] GOTO 10;G01 X56 Z-56.473;X60;G00 X100;Z100;M05;M30;焦点在X轴上的双曲线宏程序编程:O0045;T0101;G98;M03 S500;G00 X60 Z0;G01 X0;#100=0;N15 #101=4/3*SQRT[[#100-6]*[#100-6]-36]; G01 X2*#101 Z#100;#100=#100-1;IF [#100 GT -16.594] GOTO 15;G01 X58 Z-16.594; X60; G00 Z0; G00 X100; Z100; M05; M30;椭圆轮廓的加工对椭圆轮廓,其方程有两种方式.对粗加工,采取G71/G72走刀方式时,用直角坐标方程比较方便;而精加工(仿形加工)用极坐标方程比较方便.加工图7-2所示椭圆轮廓,棒料Φ45,编程零点放在工件右端面.● 极坐标方程⎩⎨⎧⋅=⋅=θθcos sin 2b z a xa —X 向椭圆半轴长;b —Z 向椭圆半轴长;θ—椭圆上某点的圆心角,零角度在Z 轴正向.● 直角坐标方程:2222224114a xb z b z a x -⋅==+抛物线加工示例7-3,加工图7-3所示抛物线孔,方程为Z=X 2/16,换算成直径编程方式为Z=X 2/64,则X=sqrt[Z]/8.采取端面切削方式,编程零点放在工件右端面中间,工件预钻有Φ30底孔.%200G50 X100 Z200; T0101;G95 G0 X41 Z2 M03 S800;G1 Z-100 F0.3; 粗加工开始 G0 X42; Z2;#1=20*20*4; 4a 2 #2=60; b#3=35 ; X 初值(直径值)WHILE[ #3 GE 0] DO1; 粗加工控制 #4=#2*SQRT[1-#3*#3/#1]; Z G0 X[#3+1] ; 进刀 G1 Z[#4-60+0.2] F0.3; 切削 G0 U1; 退刀 Z2; 返回#3=#3-7; 下一刀切削直径 END1;#10=0.8; x 向精加工余量 #11=0.1; z 向精加工余量WHILE[ #10 LE 0] DO1; 半精、精加工控制G0 X0 S1500; 进刀,筹办精加工 #20=0 ; 角度初值WHILE [#20 LE 90] DO2; 曲线加工 #3=2*20*SIN[#20]; X #4=60*COS[#20]; ZG1 X[#3+#10] Z[#4+#11] F0.1; #20=#20+1; END2; G1 Z-100; G0 X45 Z2; #10=#10-0.8; #11=#11-0.1; END1;G0 X100 Z200 T0100; M30;%120G50 X100 Z200;T0101;G90 G0 X28 Z2 M03 M07 S800;#1=-3; ZWHILE #1 GE -81 DO1; 粗加工控制#2=SQRT[100+#1]/8; XG0 Z[#1+0.3];G1 X[#2-0.3] F0.3;G0 X28 W2;#1=#1-3;;END1;#10=0.2;#11=0.2;WHILE #10 GE 0 DO1; 半精、精加工控制#1=-81;G0 Z-81 S1500;WHILE #1 LT 0.5 DO2; 曲线加工控制#2=SQRT[100+#1]/8; XG1 X[#2-#10] Z[#1+#11] F0.1;#1=#1+0.3;END2;G0 X28;#10=#10-0.2;#11=#11-0.2;END1;G0 X100 Z200 M05 M09;T0100;M30;。
excel宏程序编程100例
![excel宏程序编程100例](https://img.taocdn.com/s3/m/adce170966ec102de2bd960590c69ec3d5bbdb9f.png)
excel宏程序编程100例Excel宏程序是一种自动化工具,可以帮助我们在Excel中完成繁琐重复的操作。
通过编写宏程序,我们可以将一系列的操作步骤录制下来,并通过简单的点击按钮或快捷键就能够实现这些操作。
下面,我将为大家介绍100个关于Excel宏程序编程的例子,希望能够帮助大家更好地理解和应用宏程序。
1. 创建一个新的宏:在Excel中点击“开发工具”->“宏”->“录制新宏”,然后按照提示进行操作。
2. 修改宏的名称和快捷键:在宏录制窗口中,点击“选项”按钮,可以修改宏的名称和设置快捷键。
3. 执行宏:在Excel中,点击“开发工具”->“宏”->“宏”,选择要执行的宏,点击“运行”。
4. 删除宏:在Excel中,点击“开发工具”->“宏”->“宏”,选择要删除的宏,点击“删除”。
5. 定义宏的起始位置:在宏录制窗口中,点击“选项”按钮,可以选择宏的起始位置,可以是当前工作簿或者是个人工作簿。
6. 使用相对引用:在宏录制窗口中,点击“选项”按钮,选择“使用相对引用”,可以让录制的宏适用于不同的单元格。
7. 使用绝对引用:在宏录制窗口中,点击“选项”按钮,取消“使用相对引用”,可以让录制的宏始终适用于固定的单元格。
8. 停止录制宏:在Excel中,点击“开发工具”->“宏”->“停止录制”,或者使用快捷键“Ctrl + Shift + S”。
9. 设置宏的安全性:在Excel中,点击“文件”->“选项”->“信任中心”->“宏设置”,可以设置宏的安全性级别。
10. 使用MsgBox函数:在宏中使用MsgBox函数可以显示一个消息框,比如提示用户输入信息或者显示某个结果。
11. 使用InputBox函数:在宏中使用InputBox函数可以显示一个输入框,用于接收用户输入的信息。
12. 使用Cells函数:在宏中使用Cells函数可以实现对单元格的操作,比如赋值、格式设置等。
数控车床宏程序实例
![数控车床宏程序实例](https://img.taocdn.com/s3/m/611c4f15cc175527072208f6.png)
宏程序概述其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用。
.宏一般分为A类宏和B类宏。
A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广。
宏程序的作用数控系统为用户配备了强有力的类似于高级语言的宏程序功能,用户可以使用变量进行算术运算、逻辑运算和函数的混合运算,此外宏程序还提供了循环语句、分支语句和子程序调用语句,利于编制各种复杂的零件加工程序,减少乃至免除手工编程时进行繁琐的数值计算,以及精简程序量。
宏程序指令适合抛物线、椭圆、双曲线等没有插补指令的曲线编程;适合图形一样,只是尺寸不同的系列零件的编程;适合工艺路径一样,只是位置参数不同的系列零件的编程。
较大地简化编程;扩展应用范围。
宏的分类B类宏由于现在B类宏程序的大量使用,很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如发那科(FANUC)OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A类宏的引用;A类宏A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式输入的,xx 的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM.#xx就是变量号,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,一般OTD系统中有#0~#100~#149~#500~#531.关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据.我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么简单.好现在我来说一下H代码,大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A类宏,那么这个H就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义:应用以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行,基本指令H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到#101中G65H01P#101Q#10:把#10赋予到#101中H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101G65 H02 P#101 Q#102 R10G65 H02 P#101 Q10 R#103G65 H02 P#101 Q10 R20上面4个都是加指令的格式都是把Q后面的数值或变量号内的数值加上R后面的数值或变量号内的数值然后等于到P后面的变量号中.H03减指令;格式G65 H03 P#101 Q#102 R#103,把#102的数值减去#103的数值赋予#101G65 H03 P#101 Q#102 R10G65 H03 P#101 Q10 R#103G65 H03 P#101 Q20 R10上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数值或变量号内的数值然后等于到P后面的变量号中.H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101G65 H04 P#101 Q#102 R10G65 H04 P#101 Q10 R#103G65 H04 P#101 Q20 R10上面4个都是乘指令的格式都是把Q后面的数值或变量号内的数值乘上R后面的数值或变量号内的数值然后等于到P后面的变量号中.H05除指令;格式G65 H05P#101 Q#102 R#103,把#102的数值除以#103的数值赋予#101G65 H05 P#101 Q#102 R10G65 H05 P#101 Q10 R#103G65 H05 P#101 Q20 R10上面4个都是除指令格式都是把Q后面的数值或变量号内的数值除以R后面的数值或变量号内的数值然后等于到P后面的变量号中.(余数不存,除数如果为0的话会出现112报警)三角函数指令H31 SIN正玄函数指令:格式G65 H31 P#101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*SIN#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值.H32 COS余玄函数指令:格式G65 H32 P#101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*COS#103,也就是说可以直接用这个求出三角形的另一条边长.和以前的指令一样Q和R后面也可以直接写数值.H33和H34本来应该是TAN 和ATAN的可是经过我使用得数并不准确,希望有知道的人能够告诉我是为什么?开平方根指令H21;格式G65 H21 P#101 Q#102 ;意思是把#102内的数值开了平方根然后存到#101中(这个指令是非常重要的如果在车椭圆的时候没有开平方根的指令是没可能用宏做到的.无条件转移指令H80;格式:G65 H80 P10 ;直接跳到第10程序段有条件转移指令H81 H82 H83 H84 H85 H86 ,分别是等于就转的H81;不等于就转的H82;小于就转的H83;大于就转的H84;小于等于就转的H85;大于等于就转的H86;格式:G65 H8x P10 Q#101 R#102;将#101内的数值和#102内的数值相比较,按上面的H8x的码带入H8x中去,如果条件符合就跳到第10程序段,如果不符合就继续执行下面的程序段.4B类宏程序定义能完成某一功能的一系列指令像子程序那样存入存储器,用户可以设定M、S、T、G代码调用它们,使用时只需给出这个指令代码就能执行其功能,也可以像调用子程序一样使用。
数控车床宏程序案例上课讲义
![数控车床宏程序案例上课讲义](https://img.taocdn.com/s3/m/876dfc4fbed5b9f3f90f1cc3.png)
数控车床宏程序案例由浅入深宏程序数控车床旋转正弦函数宏程序正弦函数曲线旋转宏程序坐标点旋转1s = x cos(b) – y sin(b)t = x sin(b) + y cos(b)根据下图,原来的点(#1,#2),旋转后的点(#4,#5),则公式:#4=#1*COS[b]- #2*SIN[b]#5=#1*SIN[b]+ #2*COS[b]公式中角度b,逆时针为正,顺时针为负。
下图中正弦曲线如果以其左边的端点为参考原点,则此条正弦曲线顺时针旋转了16度,即b=-16正弦函数旋转图纸1此正弦曲线周期为24,对应直角坐标系的360对应关系【0,360】 y=sin(x)【0,24】 y=sin(360*x/24)可理解为:360/24是单位数值对应的角度360*x/24是当变量在【0,24】范围取值为x时对应的角度sin(360*x/24)是当角度为360*x/24时的正弦函数值旋转正弦函数曲线粗精加工程序如下:T0101M3S800G0X52Z5#6=26 工件毛坯假设为50mm,#6为每层切削时向+X的偏移量。
N5 G0X[#6+18.539]G1Z0F0.1#1=48N10 #2=sin【360*#1/24】#4=#1*COS[-16]- #2*SIN[-16] 旋转30度之后对应的坐标值#5=#1*SIN[-16]+ #2*COS[-16]#7=#4-【50-3.875】坐标平移后的坐标。
#8=45+2*#5+#6G1X[#8]Z[#7]F0.1 沿小段直线插补加工#1=#1-0.5 递减0.5,此值越小,工件表面越光滑。
IF [#1 GE 0] GOTO 10 条件判断是否到达终点。
Z-50G1X52 直线插补切到工件外圆之外G0Z5#6=#6-2IF [#6 GE 0] GOTO 5G0X150Z150M5M30镂空立方体宏程序范例镂空立方体图纸及宏程序范例此零件六个面加工内容相同,在加工时,调面装夹时要注意考虑夹紧力。
宏程序编程实例与技巧方法
![宏程序编程实例与技巧方法](https://img.taocdn.com/s3/m/04805509ff4733687e21af45b307e87101f6f8b7.png)
宏程序编程实例与技巧方法宏程序是一种解决重复性工作的自动化工具,通过编写宏代码,可以一次性完成繁琐的操作,提高工作效率。
下面是关于宏程序编程的实例和技巧方法。
一、宏程序编程实例:1.宏程序自动填充表格例如,在Excel中有一个表格需要填写,每一行都有一系列的列需要填写相同的内容。
可以通过编写宏程序来自动填充表格。
首先,录制宏,选择填写表格的第一行,然后在宏中添加循环语句,使其重复执行填写操作,直到填写完所有行。
2.宏程序数据处理例如,有一个包含大量数据的Excel表格,需要进行一系列的数据处理操作,如排序、筛选、转换等。
可以通过编写宏程序来批量执行这些操作。
首先,录制宏,选择第一个数据处理操作,然后在宏中添加其他操作,使其顺序执行。
再将宏应用于需要处理的表格,即可自动进行数据处理。
3.宏程序自动生成报告例如,在Word中需要编写包含大量数据的报告,需要根据数据的不同生成不同的内容。
可以通过编写宏程序来自动生成报告。
首先,录制宏,选择第一个数据生成操作,然后在宏中添加条件语句,根据数据的不同生成不同的内容,最后将宏应用于需要生成报告的位置,即可自动生成报告。
二、宏程序编程技巧方法:1.合理规划宏程序结构在编写宏程序之前,应该先规划好宏程序的结构。
将整个操作分解为多个步骤,然后为每个步骤编写相应的宏代码。
这样可以使代码结构清晰,易于维护和修改。
2.使用合适的循环语句和条件语句在宏程序中,经常需要对一组数据或一系列操作进行重复执行或根据条件进行判断。
因此,在编写宏程序时,应该熟练掌握循环语句(如for循环、while循环)和条件语句(如if语句、switch语句),以便灵活运用。
3.添加错误处理机制在宏程序中,有时会遇到意外情况,如数据不完整、文件不存在等。
为了提高宏程序的健壮性,需要添加错误处理机制。
可以使用Try...Catch语句来捕获异常,并给出相应的错误提示。
4.使用合适的变量和函数命名在宏程序中,合适的变量和函数命名可以使代码更易读、易懂。
数控编程宏程宏入门,变量的认识,由浅入深学会宏程序!
![数控编程宏程宏入门,变量的认识,由浅入深学会宏程序!](https://img.taocdn.com/s3/m/bb7009c49f3143323968011ca300a6c30c22f162.png)
数控编程宏程宏入门,变量的认识,由浅入深学会宏程序!觉得此文对你有所帮助的朋友,请收藏转发!收藏同时也请不要吝惜在评论区给小编任意留言,或文末点个赞!也好让小编知道有多少人看,也是以后更新的动力!1.什么是宏程序?在数控编程中,用户宏程序是数控系统中的特殊编程功能。
所谓用户宏程序其实是把一组带有变量的子程序事先存储在系统存储器中,并通过主程序中的宏程序调用指令调用并执行这一组程序。
由于数控系统的指令功能有限,而宏程序功能可以显著地增强机床的加工能力,同时可精简程序,所以宏程序编程是加工编程的重要补充。
用户宏程序可以用公式来加工零件,例如加工椭圆,如果用常规的编程方法,需要逐点算出曲线上的点,然后用直线或圆弧进行拟合逼近,所以编程时需要计算很多的点。
如果使用用户宏程序,可以直接把椭圆公式编入到程序中,加工零件时系统会自动计算出曲线上各点的坐标,大大减轻了编程的工作量。
2.什么是变量?变量是指在程序的运行过程中随时可以发生变化的量。
普通加工程序直接用数值指定G代码和移动距离;例如,G01和X100.0等,这些数值都是常量,所以一个程序只能描述一个几何形状。
而用户宏程序本体中可以使用变量进行编程,编程时可以使用变量进行算术运算、逻辑运算和函数的混合运算,这样就可以实现编制一个程序,即可加工尺寸不同但是形状相同的工件,加工时只需修改少数几个参数,从而可以使用宏程序执行一些有规律变化的动作。
变量分局部变量,公共变量(全局变量)和系统变量三种。
局部变量是一个在宏程序中局部使用的变量,即只在本程序内起作用。
例如当宏程序A调用宏程序B而且都有变量#1时,由于变量#1服务于不同的宏程序,所以宏程序A中数控cnc的#1与宏程序B 中的#1不是同一个变量,因此可以赋于不同的值,相互间互不影响。
局部变量不能在程序运行时加以修改,只能由程序控制。
在使用局部变量时,必须在程序中赋初值。
当断电时,局部变量被初始化为空,调用宏程序时,自变量对局部变量赋值,公共变量贯穿于整个程序过程,即在所有程序中起相同的作用。
G54数控宏程序教程(车床篇)讲解
![G54数控宏程序教程(车床篇)讲解](https://img.taocdn.com/s3/m/563417205727a5e9856a6192.png)
由浅入深宏程序1-宏程序入门基础之销轴加工对于没有接触过宏程序人,觉得它很神秘,其实很简单,只要掌握了各类系统宏程序的基本格式,应用指令代码,以及宏程序编程的基本思路即可。
对于初学者,尤其是要精读几个有代表性的宏程序,在此基础上进行模仿,从而能够以此类推,达到独立编制宏程序的目的。
本教程将分步由浅入深的将宏程序讲解给大家,作者水平有限,也希望各位同仁提供更好的思路。
下面大家先看一个简单的车床的程序,图纸如下:要求用外圆刀切削一个短轴,这里只列举程序的前几步:T0101M3S800G0X82Z5G0X76G1Z-40F0.2X82G0Z5G0X72G1Z-40F0.2X82G0Z5G0X68G1Z-40F0.2X82G0Z5G0X68G1Z-40F0.2X82G0Z5........G0X40G1Z-40F0.2X82G0Z5G0X150Z150M5M30从上面程序可以看出,每次切削所用程序都只是切削直径X有变化,其他程序代码未变。
因此可以将一个变量赋给X,而在每次切削完之后,将其改变为下次切削所用直径即可。
T0101M3S800G0X82Z5#1=76赋初始值,即第一次切削直径N10 G0X[#1] 将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值。
N10是程序G1Z-40F0.2 段的编号,用来标识本段,为后面循环跳转所用。
X82G0Z5#1=#1-4每行切深为2mm,直径方向递减4mmIF [#1GE40] GOGO 10如果#1 >= 40,即此表达式满足条件,则程序跳转到N10继续执行。
G0X150Z150 当不满足#1 >= 40,即#1<40,则跳过循环判断语句,由此句继续向后执行。
M5M30由浅入深宏程序2-宏程序之销轴粗精加工本篇文章利用宏程序简单模仿数控系统的外圆车削循环功能。
在此用前一篇的图纸与程序原程序:T0101M3S800G0X82Z5 粗加工开始#2=0.05 Z向的加工余量#3=0.5 外圆方向的加工余量#4=0.3 每层切削后的回退量#1=76+2*#3考虑了精加工余量的第一次切削直径N10 G0X[#1] 将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值。
数控车床由浅入深的宏程序实例
![数控车床由浅入深的宏程序实例](https://img.taocdn.com/s3/m/cb77a7e481eb6294dd88d0d233d4b14e85243ecc.png)
数控车床由浅入深的宏程序实例数控车床是现代机械加工领域中的一种高精度、高效率加工设备。
与传统的机械车床相比,数控车床不仅在加工精度和速度上有明显的优势,更为重要的是,它具备灵活多变的加工方式,充分适应各种复杂零件的加工需求。
而宏程序,作为数控车床加工中最为常用的编程方式之一,更是可以提高加工效率、简化加工工艺、保证加工质量等多个方面的优势。
本文将从浅入深,分别介绍数控车床宏程序的编写方法和实例。
一、基本概念宏程序是一种在数控机床上直接进行的加工操作指令序列。
它是由NC语言编写成的,常常用于完成较为简单的重复模式和复杂工件的加工,实现加工自动化。
通过宏程序编写,可以将较繁琐、复杂的加工操作转化为简单的编程操作,同时进一步提高加工精度和效率。
为了实现宏程序的编写,我们需要提前设定好工件坐标系、刀具的长度和半径、加工的切削速度、进给速度等参数,这些参数将会在宏程序的运行过程中派生出具体的加工路径。
二、编写方法1.确定加工参数在编写宏程序之前,我们需要明确加工零件所需的具体参数,包括切削速度、进给速度、划刀深度、工件坐标系等。
这些参数一旦确定,将成为宏程序编写的基础。
2.配置宏程序头每一份宏程序都需要设置头部信息,包括文件名、创建日期、作者、所在单位等。
这些信息一方面可以为以后的使用提供便利,同时也可以作为程序的基本属性进行管理和控制。
3.设置初调参数初调参数是指在程序运行前必须进行设置以保证加工成功的参数。
通常有复位、机床坐标系选择、刀具半径、工件相对坐标系设定等。
这些参数一旦设置好,将会对后续的加工过程产生重要的影响。
4.编写宏程序体宏程序体是指实际进行加工的NC语言命令组成的区域。
它根据预定义的加工参数,将加工路径进行编程,并且在运行时依次完成各个加工过程。
在编写宏程序体时,需要根据加工路径、刀具半径等参数进行具体调整和修改。
宏程序体可以是由多个程序段组成的序列,供后续加工流程使用。
5.结束宏程序宏程序在结束前需要进行清理性工作,包括退回初始点、关闭冷却液、跳转到下一程序等。
宏程序基础
![宏程序基础](https://img.taocdn.com/s3/m/ccdfb285ddccda38366bafe7.png)
第一章宏程序的基础1.1概述一、宏程序的分类首先我们来讲一下宏程序的分类,A类和B类。
首先在数控车系统比较老的时候,我们系统里面有A类宏,A类宏格式为G65格式,现在已经基本淘汰。
随着科技发达,系统的升级优化,现在的数控系统大多支持B类宏程序,总体而言,现在B类宏是一个主流发展趋势,所以接下来我们的实例讲解都以B类宏程序为例。
二、宏程序的概念简单来理解宏程序是什么?可以这样理解,宏程序就是利用数学公式,函数等计算方式,配合数控系统中的G代码编制出的一种程序,主要加工一些像椭圆,曲线,各类大螺距螺纹和刀具路线相识的一些零件。
随着科技发达,像椭圆,抛物线,等线性零件,用软件或则系统自代G代码可以完成加工,而大螺距异型螺纹这类零件,软件还没达到成熟,所以我们学会宏程序在加工中可以起到一个非常大的作用。
可以弥补多年来数控车对大螺距螺纹的编程难的一个提高。
三、宏程序的特征1.赋值在宏程序中我们通常用法最多的就是变量,比如:#1=1 它就是一个变量。
我们把这一过程,称为赋值。
也就是说,我们把等号后面的数值1,赋值给#1。
而现在#1的值就等于1,也可以理解为#1就是一个代号,用来代替数值1。
2.变量和应用比如:#1=2(把数值2赋值给#1)#2=1(把数值1赋值给#2)#2=#1(程序从上往下执行,思考一下现在#2的值等于多少?)解:当程序执行第一步的时候#1的值等于2,当执行第二步的时候#2的值等于1,当执行第三步的时候这里要注意了,刚才讲过赋值过程,是等号后面的值赋值给等号前面,所以当#1在第一步赋值以后,#1已经等于2了,所以在执行第三步的时候#2的值应该等于2,不在是第二步的1了。
从这里我们可以看出,当程序中有相同的变量#的时候,后面的#号代替前面的#号。
比如:#1=2#1=3最后结果#1的值因该是等于3的。
所以说后面的代替前面的。
四、变量的取值范围1.局部变量(#1-#33)什么叫局部变量,局部变量就是在局部或则可以理解为在单个程序中有效。
数控车床由浅入深的宏程序实例-精选.
![数控车床由浅入深的宏程序实例-精选.](https://img.taocdn.com/s3/m/28ea6a4f76a20029bc642d0d.png)
1.局部变量#133
一个在宏程序中局部使用的变量,其运算结果其他程序不可使用。
例: A宏程序 B宏程序
… …
#10=20 10 不表示X20
… …
断电后清空,调用宏程序时代入变量值
2. 公共变量。早期(#100149,#500531 )、新系统(#100199,#500999)
各用户宏程序内公用的变量 ,其运算结果任何程序调用都相同。
应用
以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行,
基本指令
H01赋值;格式65H01101102:把#102内的数值赋予到#101中
G65H0110110:把#10赋予到#101中
H02加指令;格式G65 H02 101 102 103,把#102的数值加上#103的数值赋予#101
宏程序指令适合抛物线、椭圆、双曲线等没有插补指令的曲线编程;适合图形一样,只是尺寸不同的系列零件的编程;适合工艺路径一样,只是位置参数不同的系列零件的编程。较大地简化编程;扩展应用范围。
宏的分类
B类宏
由于现在B类宏程序的大量使用,很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如发那科()系统中由于它的键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过32接口传输的数控系统中,可是如果我们没有机和32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A类宏的引用;
例:#1[1]/[-1]时,#1为了35.0
3) 用于语句中的地址,按各地址的最小设定单位进行四舍五入
例:设#1=1.2345,#2=2.3456,设定单位1μm
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由浅入深宏程序1-宏程序入门基础之销轴加工对于没有接触过宏程序人,觉得它很神秘,其实很简单,只要掌握了各类系统宏程序得基本格式,应用指令代码,以及宏程序编程得基本思路即可、对于初学者,尤其就是要精读几个有代表性得宏程序,在此基础上进行模仿,从而能够以此类推,达到独立编制宏程序得目得。
本教程将分步由浅入深得将宏程序讲解给大家,作者水平有限,也希望各位同仁提供更好得思路。
下面大家先瞧一个简单得车床得程序,图纸如下:要求用外圆刀切削一个短轴,这里只列举程序得前几步:T0101M3S800G0X82Z5G0X76G1Z-40F0、2X82G0Z5G0X72G1Z—40F0、2X82G0Z5G0X68G1Z-40F0、2X82G0Z5G0X68G1Z—40F0。
2X82G0Z5。
、。
、、、G0X40G1Z-40F0、2X82G0Z5G0X150Z150M5M30从上面程序可以瞧出,每次切削所用程序都只就是切削直径X有变化,其她程序代码未变。
因此可以将一个变量赋给X,而在每次切削完之后,将其改变为下次切削所用直径即可。
T0101M3S800G0X82Z5#1=76赋初始值,即第一次切削直径N10G0X[#1]将变量赋给X,则X方向进刀得直径则为#1变量中实际存储值。
N10就是程序G1Z—40F0、2 段得编号,用来标识本段,为后面循环跳转所用。
X82G0Z5#1=#1-4每行切深为2mm,直径方向递减4mmIF[#1GE40]GOGO10如果#1 >=40,即此表达式满足条件,则程序跳转到N10继续执行。
G0X150Z150当不满足#1〉= 40,即#1〈40,则跳过循环判断语句,由此句继续向后执行。
M5M30由浅入深宏程序2-宏程序之销轴粗精加工本篇文章利用宏程序简单模仿数控系统得外圆车削循环功能。
在此用前一篇得图纸与程序原程序:T0101M3S800G0X82Z5 粗加工开始#2=0。
05 Z向得加工余量#3=0。
5 外圆方向得加工余量#4=0、3 每层切削后得回退量#1=76+2*#3考虑了精加工余量得第一次切削直径N10G0X[#1] 将变量赋给X,则X方向进刀得直径则为#1变量中实际存储值。
N10就是程序G1Z[-40+#2]F0、2 段得编号,用来标识本段,为后面循环跳转所用。
X[#1+#4] 每次切削只回退#4得值G0Z5#1=#1-4单边切深为2mm,直径方向每次递减4mmIF [#1GE40]GOGO 10如果#1〉= 40,即此表达式满足条件,则程序跳转到N10继续执行。
M03S1200当不满足#1 〉= 40,即#1〈40,则跳过循环判断语句,由此句继续向后执行、G0X40 由此开始精加工G1Z-40F0。
1X82G0X150Z150M5M30由浅入深宏程序3-宏程序车半球面在不使用循环切削加工圆弧时,可以有几种不同得方式来安排走刀轨迹,本篇文章采用将圆弧段沿X方向偏移,由外籍内得加工方式进行。
如图所示R20圆弧,假设刀具每次单边切深2mm,直径每刀吃4mm,则由端面切入得位置可以计算出需要切削:40/4=10 刀每条圆弧起点与终点得Z坐标不变,但X坐标都同时向+X方向偏移一个相同得值,因此可设偏移量为#1,初始值为#1=36圆弧起点X坐标为#2=0+#1圆弧终点X坐标为#3=40+#1宏程序编制如下:T0101M3S800G0X42Z5#1=36赋初始值,即第一个圆弧直径偏移量N10#2=0+#1计算圆弧起点得X坐标#3=40+#1 计算圆弧终点得X坐标G0X[#2] 快速到达切削直径G1Z0F0。
1直线切至圆弧起点G3X[#3]Z-20R20F0、1切削圆弧G1X42直线插补切削至外圆G0Z5退至端面外侧#1=#1-4直径方向递减4mmIF[#1GE0] GOGO 10如果#1>= 0,即此表达式满足条件,则程序跳转到N 10继续执行。
G0X150Z150 当不满足#1 〉=0,即#1<0,则最后一条圆弧已经切完,跳出循环。
M5M30由浅入深宏程序4—圆得标准方程编制宏程序车半球面我们知道无论什么样得曲线,数控系统都就是CAD/CAM软件在处理时都会将其按照内部得算法划分成小段得直线进行加工,接下来我们利用圆得方程来将直线划分成小段直线在利用宏程序对其加工。
下图为圆得标准方程X*X+Y*Y=R*R, 若将X与Y用参数变量代替可改写为#1*#1+#2*#2=R*R 圆弧可沿#1方向划分成无数小段直线,然后求出其相应端点坐标,再求出相对得数控车床中得坐标,再按直线进行编程加工。
如下图所示:则此段圆弧精加工轨迹为:G0X0G1Z0F0。
1#1=0N10 #2=SQRT[20*20—#1*#1]SQRT表示开平方#3=#1-20圆得原点在工件坐标左侧20,所以圆弧上所有点坐标Z要减20#4=2*#2圆得方程计算出得为半径值,需转化为直径值才能与直径编程对应。
G1X[#4]Z[#3]F0、1 沿小段直线插补加工#1=#1—0、5递减一小段距离,此值越小,圆弧越光滑。
IF[#1GE0]GOTO10 条件判断就是否到达终点。
G1X42 直线切出外圆如果要再加上分层得粗加工,设偏移量为#5,则程序改为T0101M3S800G0X42Z5#5=36N5 G0X[#5]G1Z0F0、1#1=20N10 #2=SQRT[20*20-#1*#1]SQRT表示开平方#3=#1-20 圆得原点在工件坐标左侧20,所以圆弧上所有点坐标Z要减20#4=2*#2+#5 圆得方程计算出得为半径值,需转化为直径值才能与直径编程对应。
G1X[#4]Z[#3]F0。
1沿小段直线插补加工#1=#1—0。
5 递减一小段距离,此值越小,圆弧越光滑。
IF[#1GE 0] GOTO 10条件判断就是否到达终点。
G1X42 直线插补切出外圆G0Z5#5=#5—4IF [#5 GE 0]GOTO 5G0X150Z150M5M30以上程序分内外二层循环,外层循环为分层加工,内层循环为小段直线插补一条圆弧。
由浅入深宏程序5—圆得参数方程编制宏程序车半球面圆得标准方程为:X=R*COSθY=R*SINθ可改写为: #1=20*cos[#3] #3为参数方程对应图纸中角度#2=20*sin[#3]使用参数方程比圆得标准方程具有一个优点,从下图中可以瞧出,使用标准方程式,在工件最右端,划分直线坡度较大,从右至左划分线段不均匀,而使用圆得参数方程所划分得直线段就是按照圆周方向划分得,因此分布均匀,从而使用零件表面加工质量好、相应程序修改如下:T0101M3S800G0X42Z5#6=36N5 G0X[#6]G1Z0F0。
1#3=0N10 #1=20*COS[#3]#2=20*SIN[#3]#4=2*#2+#6圆得方程计算出得为半径值,需转化为直径值才能与直径编程对应。
#5=#1-20G1X[#4]Z[#5]F0、1沿小段直线插补加工#1=#1+3 递减3度,此值越小,圆弧越光滑。
IF[#1 LE 90] GOTO10 条件判断就是否到达终点、G1X42 直线插补切到工件外圆之外G0Z5#6=#6-4IF[#6 GE 0] GOTO 5G0X150Z150M5M30由浅入深宏程序6—利用椭圆标准方程编制数控车宏程序如果瞧了前几篇,那么接下来这两篇加工椭圆得宏程序应该很容易理解。
椭圆标准方程X*X/a*a+Y*Y/b*b=1,其中a为长半轴,b为短半轴,若将X与Y用参数变量代替可改写为#1*#1/a*a+#2*#2/b*b=1椭圆可沿长半轴#1方向划分成无数小段直线,然后求出其相应端点坐标,再求出相对得数控车床中得坐标,再按直线进行编程加工、如下图所示:假设椭圆a=30,b=20,只加工半个椭圆,则此段椭圆精加工轨迹为:G0X0G1Z0F0。
1#1=30N10#2=20*SQRT[1-30*30/#1*#1] SQRT表示开平方#3=#1-30 椭圆得原点在工件坐标左侧30,所以椭圆上所有点坐标Z要减20#4=2*#2 方程计算出得为半径值,需转化为直径值才能按直径编程、G1X[#4]Z[#3]F0。
1 沿小段直线插补加工#1=#1—1 递减一小段距离,此值越小,椭圆越光滑。
IF[#1GE0]GOTO 10条件判断就是否到达终点、G1X42直线切出外圆如果要再加上分层得粗加工,设偏移量为#5,则程序改为T0101M3S800G0X42Z5#5=36N5G0X[#5]G1Z0F0。
1#1=30N10 #2=20*SQRT[1—30*30/#1*#1] SQRT表示开平方#3=#1-30椭圆得原点在工件坐标左侧30,所以椭圆上所有点坐标Z要减20 #4=2*#2 方程计算出得为半径值,需转化为直径值才能按直径编程。
G1X[#4]Z[#3]F0、1沿小段直线插补加工#1=#1—1 递减一小段距离,此值越小,椭圆越光滑。
IF [#1GE0]GOTO 10 条件判断就是否到达终点。
G1X42 直线插补切出外圆G0Z5#5=#5-4IF [#5GE0]GOTO5G0X150Z150M5M30以上程序分内外二层循环,外层循环为分层加工,内层循环为小段直线插补一条四分之一椭圆弧、由浅入深宏程序7-椭圆得参数方程编制宏程序车椭球面椭圆得参数方程为:X=a*COSθY=b*SINθ可改写为: #1=30*cos[#3] #3为参数方程对应得中角度#2=20*sin[#3]相应程序修改如下:T0101M3S800G0X42Z5#6=36N5G0X[#6]G1Z0F0。
1#3=0N10 #1=30*COS[#3]#2=20*SIN[#3]#4=2*#2+#6计算出得为半径值,需转化为直径值才能与直径编程对应。
#5=#1-30G1X[#4]Z[#5]F0、1 沿小段直线插补加工#1=#1+3 递减3度,此值越小,工件表面越光滑。
IF[#1 LE90]GOTO 10 条件判断就是否到达终点、G1X42 直线插补切到工件外圆之外G0Z5#6=#6-4IF [#6GE0] GOTO5G0X150Z150M5M30由浅入深宏程序8—车床任意位置椭圆宏程序得编制不在轴线上得椭圆宏程序编制也没有什么特殊得,只就是改下偏置得数值罢了。
椭圆得参数方程为:X=a*COSθY=b*SINθ可改写为: #1=30*cos[#3] #3为参数方程对应得中角度#2=20*sin[#3]图中椭圆长半轴30mm,短半轴20mm,椭圆中心位置如图所示,不在轴线上,因此在计算编程所用得坐标值时,X方向要再加上40,Z方向要减去30+10=30相应程序如下:T0101M3S800G0X82Z5#6=36N5G0X[#6+40]G1Z—10F0、1#3=0N10#1=30*COS[#3]#2=20*SIN[#3]#4=2*#2+#6+40 计算出得为半径值,需转化为直径值才能与直径编程对应。