由浅入深宏程序入门基础示例之欧阳光明创编

由浅入深宏程序入门基础示例之欧阳光明创编
由浅入深宏程序入门基础示例之欧阳光明创编

由浅入深宏程序1-宏程序入门基础之销轴加工

欧阳光明(2021.03.07)

对于没有接触过宏程序人,觉得它很神秘,其实很简单,只要掌握了各类系统宏程序的基本格式,应用指令代码,以及宏程序编程的基本思路即可。

对于初学者,尤其是要精读几个有代表性的宏程序,在此基础上进行模仿,从而能够以此类推,达到独立编制宏程序的目的。本教程将分步由浅入深的将宏程序讲解给大家,作者水平有限,也希望各位同仁提供更好的思路。

下面大家先看一个简单的车床的程序,图纸如下:

要求用外圆刀切削一个短轴,这里只列举程序的前几步:

T0101

M3S800

G0X82Z5

G0X76

G1Z-40F0.2

X82

G0Z5

G0X72

G1Z-40F0.2

X82

G0Z5

G0X68

G1Z-40F0.2

X82

G0Z5

G0X68

G1Z-40F0.2

X82

G0Z5

........

G0X40

G1Z-40F0.2

X82

G0Z5

G0X150Z150

M5

M30

从上面程序可以看出,每次切削所用程序都只是切削直径X有变化,其他程序代码未变。因此可以将一个变量赋给X,而在每次切削完之后,将其改变为下次切削所用直径即可。

T0101

M3S800

G0X82Z5

#1=76赋初始值,即第一次切削直径

N10 G0X[#1]将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值。N10是程序

G1Z-40F0.2 段的编号,用来标识本段,为后面循环跳转所用。X82

G0Z5

#1=#1-4每行切深为2mm,直径方向递减4mm

IF [#1GE40] GOGO 10如果#1 >= 40,即此表达式满足条件,则程序跳转到N10继续执行。

G0X150Z150 当不满足#1 >= 40,即#1<40,则跳过循环判断语句,由此句继续向后执行。

M5

M30

由浅入深宏程序2-宏程序之销轴粗精加工

本篇文章利用宏程序简单模仿数控系统的外圆车削循环功能。在此用前一篇的图纸与程序

原程序:

T0101

M3S800

G0X82Z5 粗加工开始

#2=0.05 Z向的加工余量

#3=0.5 外圆方向的加工余量

#4=0.3 每层切削后的回退量

#1=76+2*#3考虑了精加工余量的第一次切削直径

N10 G0X[#1]将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值。N10是程序

G1Z[-40+#2]F0.2 段的编号,用来标识本段,为后面循环跳转所用。

X[#1+#4] 每次切削只回退#4的值

G0Z5

#1=#1-4单边切深为2mm,直径方向每次递减4mm

IF [#1GE40] GOGO 10如果#1 >= 40,即此表达式满足条件,则程序跳转到N10继续执行。

M03S1200 当不满足#1 >= 40,即#1<40,则跳过循环判断语句,由此句继续向后执行。

G0X40 由此开始精加工

G1Z-40F0.1

X82

G0X150Z150

M5

M30

由浅入深宏程序3-宏程序车半球面

在不使用循环切削加工圆弧时,可以有几种不同的方式来安排走刀轨迹,本篇文章采用将圆弧段沿X方向偏移,由外籍内的加工方式进行。如图所示R20圆弧,假设刀具每次单边切深2mm,直

径每刀吃4mm,则由端面切入的位置可以计算出需要切削:40/4=10 刀

每条圆弧起点和终点的Z坐标不变,但X坐标都同时向+X方向偏移一个相同的值,因此可设偏移量为#1,初始值为#1=36圆弧起点 X坐标为 #2=0+#1

圆弧终点 X坐标为 #3=40+#1

宏程序编制如下:

T0101

M3S800

G0X42Z5

#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直径方向递减4mm

IF [#1 GE 0] GOGO 10如果#1 >= 0,即此表达式满足条件,则程序跳转到N10继续执行。

G0X150Z150 当不满足#1 >=0,即#1<0,则最后一条圆弧已经切完,跳出循环。

M5

M30

由浅入深宏程序4-圆的标准方程编制宏程序车半球面

我们知道无论什么样的曲线,数控系统都是CAD/CAM软件在处理时都会将其按照内部的算法划分成小段的直线进行加工,接下来我们利用圆的方程来将直线划分成小段直线在利用宏程序对其加工。下图为圆的标准方程

X*X+Y*Y=R*R,若将X和Y用参数变量代替可改写为#1*#1+#2*#2=R*R

圆弧可沿#1方向划分成无数小段直线,然后求出其相应端点坐标,再求出相对的数控车床中的坐标,再按直线进行编程加工。如下图所示:

则此段圆弧精加工轨迹为:

G0X0

G1Z0F0.1

#1=0

N10 #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,则程序改为

T0101

M3S800

G0X42Z5

#5=36

N5 G0X[#5]

G1Z0F0.1

#1=20

N10 #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 [#1 GE 0] GOTO 10 条件判断是否到达终点。

G1X42 直线插补切出外圆

G0Z5

#5=#5-4

IF [#5 GE 0] GOTO 5

G0X150Z150

M5

M30

以上程序分内外二层循环,外层循环为分层加工,内层循环为小段直线插补一条圆弧。

由浅入深宏程序5-圆的参数方程编制宏程序车半球面

圆的标准方程为:X=R*COSθ

Y=R*SINθ

可改写为: #1=20*cos[#3] #3为参数方程对应图纸中角度

#2=20*sin[#3]

使用参数方程比圆的标准方程具有一个优点,从下图中可以看出,使用标准方程式,在工件最右端,划分直线坡度较大,从右至左划分线段不均匀,而使用圆的参数方程所划分的直线段是按照圆周方向划分的,因此分布均匀,从而使用零件表面加工质量好。

相应程序修改如下:

T0101

M3S800

G0X42Z5

#6=36

N5 G0X[#6]

G1Z0F0.1

#3=0

N10 #1=20*COS[#3]

#2=20*SIN[#3]

#4=2*#2+#6 圆的方程计算出的为半径值,需转化为直径值才能与直径编程对应。

#5=#1-20

G1X[#4]Z[#5]F0.1 沿小段直线插补加工

#1=#1+3 递减3度,此值越小,圆弧越光滑。

IF [#1 LE 90] GOTO 10 条件判断是否到达终点。

G1X42 直线插补切到工件外圆之外

G0Z5

#6=#6-4

IF [#6 GE 0] GOTO 5

G0X150Z150

M5

M30

由浅入深宏程序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,只加工半个椭圆,则此段椭圆精加工轨迹

为:

G0X0

G1Z0F0.1

#1=30

N10 #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,则程序改为

T0101

M3S800

G0X42Z5

#5=36

N5 G0X[#5]

G1Z0F0.1

#1=30

N10 #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-4

IF [#5 GE 0] GOTO 5

G0X150Z150

M5

M30

以上程序分内外二层循环,外层循环为分层加工,内层循环为小段直线插补一条四分之一椭圆弧。

由浅入深宏程序7-椭圆的参数方程编制宏程序车椭球面

椭圆的参数方程为:X=a*COSθ

Y=b*SINθ

可改写为: #1=30*cos[#3] #3为参数方程对应的中角度

#2=20*sin[#3]

相应程序修改如下:

T0101

M3S800

G0X42Z5

#6=36

N5 G0X[#6]

G1Z0F0.1

#3=0

N10 #1=30*COS[#3]

#2=20*SIN[#3]

#4=2*#2+#6 计算出的为半径值,需转化为直径值才能与直径编程对应。

#5=#1-30

G1X[#4]Z[#5]F0.1 沿小段直线插补加工

#1=#1+3 递减3度,此值越小,工件表面越光滑。

IF [#1 LE 90] GOTO 10 条件判断是否到达终点。

G1X42 直线插补切到工件外圆之外

G0Z5

#6=#6-4

IF [#6 GE 0] GOTO 5

G0X150Z150

M5

M30

由浅入深宏程序8-车床任意位置椭圆宏程序的编制

不在轴线上的椭圆宏程序编制也没有什么特殊的,只是改下偏置的数值罢了。

椭圆的参数方程为:X=a*COSθ

Y=b*SINθ

可改写为: #1=30*cos[#3] #3为参数方程对应的中角度

#2=20*sin[#3]

图中椭圆长半轴30mm,短半轴20mm,椭圆中心位置如图所示,不在轴线上,因此在计算编程所用的坐标值时,X方向要再加上40,Z方向要减去30+10=30

相应程序如下:

T0101

M3S800

G0X82Z5

#6=36

N5 G0X[#6+40]

G1Z-10F0.1

#3=0

N10 #1=30*COS[#3]

#2=20*SIN[#3]

#4=2*#2+#6+40 计算出的为半径值,需转化为直径值才能与直径编程对应。

#5=#1-30-10

G1X[#4]Z[#5]F0.1 沿小段直线插补加工

#1=#1+3 递减3度,此值越小,工件表面越光滑。

IF [#1 LE 90] GOTO 10 条件判断是否到达终点。

G1X82 直线插补切到工件外圆之外

G0Z5

#6=#6-4

IF [#6 GE 0] GOTO 5

G0X150Z150

M5

M30

由浅入深宏程序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旋转前后的点坐标的坐标原点都是椭圆中心。

程序如下:

T0101

M3S800

G0X82Z5

#6=16 工件毛坯假设为90mm,#6为每层切削时椭圆弧向+X的偏移量。

N5 G0X[#6+30+40] 斜椭圆与端面的交点直径为70

G1Z0F0.1

#3=0

N10 #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-26

G1X[#7]Z[#8]F0.1 沿小段直线插补加工

#1=#1+3 递减3度,此值越小,工件表面越光滑。

IF [#1 LE 90] GOTO 10 条件判断是否到达终点。

G1X92 直线插补切到工件外圆之外

G0Z5

#6=#6-4

IF [#6 GE 0] GOTO 5

G0X150Z150

M5

宏程序入门基础学习资料

宏程序入门基础学习资料 其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出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内的数值赋予到

新代数控车床宏程序说明

一.用户宏程序的基本概念 用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储的功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能。 在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。其代表指令称为用户宏命令,也称作宏程序调用指令。 用户宏有以下四个主要特征: 1)在用户用户宏程序中可以使用变量,即宏程序体中能含有复杂的表达式; 2)能够进行变量之间的各种运算; 3)可以用用户宏指令对变量进行赋值,就象许多高级语言中的带参函数或过程,实参能赋值给形参; 4)容易实现程序流程的控制。 使用用户宏时的主要方便之处在于由于可以用变量代替具体数值,因而在加工同一类的工件时.只得将实际的值赋予变量既可,而不需要对每个不同的零件都编一个程序。 二.基本书写格式 数控程序文档中,一般以“%”字符作为第一行的起头,该行将被视为标题行。当标题行含有关键字“@MACRO”时整个文档就会以系统所定义的MACRO语法处理。如果该行无“@MACRO”关键词此档案就会被视为一般ISO程序文档格式处理,此时将不能编写用户宏和使用其MACRO语法。而当书写ISO程序文档时标题行一般可以省略,直接书写数控程序。“@MACRO”关键词必须是大写字母。 对于程序的注释可以采用“//……”的形式,这和高级语言C++一样。 例一:MACRO格式文档 % @MACRO //用户宏程序文档,必须包含“@MACRO”关键词 IF @1 = 1 THEN G00 X100.; ELSE G00 Z100.; END_IF; M99; 例二:ISO格式文档 % 这是标题行,可当作档案用途说明,此行可有可无 G00 X100.; G00 Z100.; G00 X0; G00 Z0; M99;

数控车床由浅入深的宏程序实例

宏程序 裳华职业技术中专鲍新涛 宏程序概述 其实说起来宏就是用公式来加工零件的,比如说,如果没有宏的话,我们要逐点算出上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出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的数值赋予#101

宏程序编程知识

工件偏置量:G10 L2 P X Y Z (加工中心)。 G41X Y D G90G54P1G00X Y S M03 G90G10L2P0X Y Z G10L1P R G10 P U V W C Q 可编程参数入口:G10 L50 ……… G11 G10数据设置模式入口、 L50可编程参数入口模式(固定的) N……P……R……指定参数入口(N=参数号,P=轴号,R=设置值) G11数据设置模式取消 宏程序的调用:G65 P L G65 P包含宏程序的程序号(存储为O ) L宏程序的循环次数 变量的类型:空变量#0 局部变量:#1—#33 全局变:#100—#149或#500—#531 系统变量:#1000—。。。。。。 局部变量的赋值:A-#1 B-#2 C-#3 D-#7 E-#8 F-#9 H-#11 I-#5 J-#6 K-#6 M-#13 Q-#17 R-#18 S-#19 T-#20 U-#21 V-#22 W-#23 X-#24 Y-#25 Z-#26 模态宏程序的调用G66仅用于某个轴运动命令调用宏程序 G67取消模态宏程序调用 宏程序函数:有SIN COS TAN ATAN ASIN ACOS 其他函数:ROUND FIX FUP ROUND表示四舍五入 FIX表示与之最小的整数 FUP表示与之最大的整数 辅助函数: SQRT表示开方 ABS表示绝对值 LN表示自然对数函数 EXP表示以E为底的指数函数、 ADP表示添加小数点的函数、 逻辑函数:EQ表示等于、NE表示不等于、GT表示大于、LT表示小于、GE表示大于等于、LE 表示小于等于。 系统变量: 从#1000开始 #1000through#1015数据输入DI 从PMC向宏程序发送16位信号(逐位读取) #1032用于一次读取所有16位信号 #1100through#1115数据输出DO从宏程序向PMC发送16位信号(逐位写入) #1132用于一次向PMC写入所有16位信号

由浅入深宏程序入门基础示例之欧阳光明创编

由浅入深宏程序1-宏程序入门基础之销轴加工 欧阳光明(2021.03.07) 对于没有接触过宏程序人,觉得它很神秘,其实很简单,只要掌握了各类系统宏程序的基本格式,应用指令代码,以及宏程序编程的基本思路即可。 对于初学者,尤其是要精读几个有代表性的宏程序,在此基础上进行模仿,从而能够以此类推,达到独立编制宏程序的目的。本教程将分步由浅入深的将宏程序讲解给大家,作者水平有限,也希望各位同仁提供更好的思路。 下面大家先看一个简单的车床的程序,图纸如下: 要求用外圆刀切削一个短轴,这里只列举程序的前几步: T0101 M3S800 G0X82Z5 G0X76 G1Z-40F0.2 X82 G0Z5 G0X72 G1Z-40F0.2

X82 G0Z5 G0X68 G1Z-40F0.2 X82 G0Z5 G0X68 G1Z-40F0.2 X82 G0Z5 ........ G0X40 G1Z-40F0.2 X82 G0Z5 G0X150Z150 M5 M30 从上面程序可以看出,每次切削所用程序都只是切削直径X有变化,其他程序代码未变。因此可以将一个变量赋给X,而在每次切削完之后,将其改变为下次切削所用直径即可。 T0101 M3S800

G0X82Z5 #1=76赋初始值,即第一次切削直径 N10 G0X[#1]将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值。N10是程序 G1Z-40F0.2 段的编号,用来标识本段,为后面循环跳转所用。X82 G0Z5 #1=#1-4每行切深为2mm,直径方向递减4mm IF [#1GE40] GOGO 10如果#1 >= 40,即此表达式满足条件,则程序跳转到N10继续执行。 G0X150Z150 当不满足#1 >= 40,即#1<40,则跳过循环判断语句,由此句继续向后执行。 M5 M30 由浅入深宏程序2-宏程序之销轴粗精加工 本篇文章利用宏程序简单模仿数控系统的外圆车削循环功能。在此用前一篇的图纸与程序 原程序: T0101 M3S800 G0X82Z5 粗加工开始 #2=0.05 Z向的加工余量 #3=0.5 外圆方向的加工余量

宏程序基础

1.1概述 1.2 1.3 1.4一、宏程序的分类 1.5首先我们来讲一下宏程序的分类,A类和B类。 首先在数控车系统比较老的时候,我们系统里 面有A类宏,A类宏格式为G65格式,现在已 经基本淘汰。随着科技发达,系统的升级优化,现在的数控系统大多支持B类宏程序,总体而 言,现在B类宏是一个主流发展趋势,所以接 下来我们的实例讲解都以B类宏程序为例。1.6 1.7 1.8二、宏程序的概念 1.9 1.10简单来理解宏程序是什么可以这样理解,宏程 序就是利用数学公式,函数等计算方式,配合 数控系统中的G代码编制出的一种程序,主要 加工一些像椭圆,曲线,各类大螺距螺纹和刀 具路线相识的一些零件。随着科技发达,像椭 圆,抛物线,等线性零件,用软件或则系统自 代G代码可以完成加工,而大螺距异型螺纹这 类零件,软件还没达到成熟,所以我们学会宏 程序在加工中可以起到一个非常大的作用。可 以弥补多年来数控车对大螺距螺纹的编程难的 一个提高。 1.11 1.12 1.13三、宏程序的特征 1.14 1.151.赋值 1.16在宏程序中我们通常用法最多的就是变量,比 如: 1.17#1=1 它就是一个变量。我们把这一过程,称为 赋值。也就是说,我们把等号后面的数值1,赋 值给#1。而现在#1的值就等于1,也可以理解 为#1就是一个代号,用来代替数值1。 1.18 1.19 2.变量和应用 1.20比如:#1=2(把数值2赋值给#1) 1.21#2=1(把数值1赋值给#2)1.22#2=#1(程序从上往下执行,思考一下现在#2的 值等于多少) 1.23 1.24解:当程序执行第一步的时候#1的值等于2, 当执行第二步的时候#2的值等于1,当执行第 三步的时候这里要注意了,刚才讲过赋值过程,是等号后面的值赋值给等号前面,所以当#1在 第一步赋值以后,#1已经等于2了,所以在执 行第三步的时候#2的值应该等于2,不在是第 二步的1了。从这里我们可以看出,当程序中 有相同的变量#的时候,后面的#号代替前面的# 号。 1.25比如:#1=2 1.26#1=3 1.27 1.28最后结果#1的值因该是等于3的。所以说后面 的代替前面的。 1.29 1.30 1.31四、变量的取值范围 1.32 1.331.局部变量(#1-#33) 1.34什么叫局部变量,局部变量就是在局部或则可 以理解为在单个程序中有效。断电以后系统自 动清零。 1.35 1.36 2.公共变量(#100-#199,#500-#999) 1.37公共变量和局部变量的区别在于,局部变量是 在局部,或则单个程序中有效,而公共变量是 指如果一个程序同时拥有主程序和子程序的情 况下,在主程序中如果已经赋值,在子程序中 可以不用从新赋值,可以共用。而#100-#199和 #500-#999的区别在于,前者断电清零,而后者 不会清零会一直保存在系统内部。比如: 1.38#500=TAN[15] 1.39 1.40#500一旦赋值就将保存在系统内部,下次可以 直接调用#500使用。 1.41 1.423.系统变量(#1000-#17200) 1.43系统变量是用于我们机床系统储存一些刀补数 据参数等等的东西,我们可以不用管它,不会 用的,慎用) 1.44

宏程序基础知识

瑞鹄汽车模具有限公司内部教材 第一章宏程序基础知识 第一节常量与变量的含义 常量与变量的含义及编程案例 数控程序中含有变量的程序称为宏程序。虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。 常量 普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。 变量 使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。 #1=#2+100 G01 X#1 F300 变量用变量符号(#)和后面的变量号指定。例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#[#1+#2-12] 变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量 1.空变量: #0 该变量总是空,没有值能赋给该变量. 2.局部变量: #1-#33 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值. 3.公共变量 #100-#199 #500-#999 公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失. 4.系统变量:#1000以上的变量 系统变量用于读和写CNC的各种数据,例如刀具补偿,当前位置信息, 变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在

括号中。例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如:当G00X#1;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346. 改变引用变量的值的符号,要把负号(-)放在#的前面。例如:G00X-#1 当引用未定义的变量时,变量及地址都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0 未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。 当#1= (空)时 G90 X100 Y#1实际与 G90 X100运行结果一样 当#1=0 时 G90 X100 Y#1实际与 G90 X100 Y0 运行结果一样 运算 除了用<空>赋值以外,其余情况下<空>与0 相同。

SIEMENS系统宏程序

SIEMENS系统宏程序应用 一、计算参数 SIEMENS系统宏程序应用的计算参数如下: R0~R99----可自由使用; R100~R249----加工循环传递参数(如程序中没有使用加工循环,这部分参数可自由使用); R250~R299----加工循环内部计算参数(如程序中没有使用加工循环,这部分参数可自由使用)。 二、赋值方式 为程序的地址字赋值时,在地址字之后应使用“=”,N、G、L除外。 例:G00 X=R2 三、控制指令 控制指令主要有: IF 条件 GOTOF 标号 IF 条件 GOTOB 标号 说明: IF----如果满足条件,跳转到标号处;如果不满足条件,执行下一条指令; GOTOF----向前跳转; GOTOB----向后跳转; 标号----目标程序段的标记符,必须要由2~8个字母或数字组成,其中开始两个符号必须是字母或下划线。标记符必须位于程序段首;如果程序段有顺序号字,标记符必须紧跟顺序号字;标记符后面必须为冒号。 条件----计算表达式,通常用比较运算表达式,比较运算符见表6.6。 表6.6 比较运算符

例: …… N10 IF R1<10 GOTOF LAB1 …… N100 LAB1: G0 Z80 四、应用举例 例6-5:用镗孔循环 LCYC85加工图6.6所示矩阵排列孔,无孔底停留时间,安全间隙2mm。 N10 G0 G17 G90 F1000 T2 D2 S500 M3 N20 X10 Y10 Z105 N30 R1=0 N40 R101=105 R102=2 R103=102 R104=77 R105=0 R107=200 R108=100 N50 R115=85 R116=30 R117=20 R118=10 R119=5 R120=0 R121=10 N60 MARKE1:LCYC60 N70 R1=R1+1 R117=R117+10 N80 IF R1<5 GOTOB MARKE1 N90 G0 G90 X10 Y10 Z105 N100 M2

宏程序基础知识资料

第一章宏程序基础知识 第一节常量与变量的含义 常量与变量的含义及编程案例 数控程序中含有变量的程序称为宏程序。虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。 常量 普通加工程序直接用数值指定G代码和移动距离;例如,1和X100.0。变量 使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用面板上的操作改变。 #1=#2+100 G01 1 F300 变量用变量符号(#)和后面的变量号指定。例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#[#12-12] 变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量 1.空变量: #0 该变量总是空,没有值能赋给该变量. 2.局部变量:

#133 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值. 3.公共变量 #100199 #500999 公共变量在不同的宏程序中的意义相同.当断电时,变量#100199初始化为空.变量#500999的数据保存,即使断电也不丢失. 4.系统变量1000以上的变量 系统变量用于读和写的各种数据,例如刀具补偿,当前位置信息,变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。例如:G01X[#12]3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如:当G001;以1/1000的单位执行时,把123456赋值给变量#1,实际指令值为G00X12346. 改变引用变量的值的符号,要把负号(-)放在#的前面。例如:G00X -#1 当引用未定义的变量时,变量及地址都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G001 2的执行结果为G00X0 未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。 当#1= (空)时 G90 X100 1实际与G90 X100运行结果一样 当#1=0 时 G90 X100 1实际与G90 X100 Y0 运行结果一样 运算 除了用<空>赋值以外,其余情况下<空>与0 相同。

宏程序基础知识资料

瑞鹄汽车模具有限公司内部教材 第一章第一节宏程序基础知识常量与变量的含义 常量与变量的含义及编程案例 数控程序中含有变量的程序称为宏程序。虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。 常量 普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。 变量 使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。 #1=#2+100 G01 X#1 F300 变量用变量符号(#)和后面的变量号指定。例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#[#1+#2-12] 变量根据变量号可以分成四种类型:1.空变量2.局部变量3.公共变量4.系统变量 1.空变量: #0 该变量总是空,没有值能赋给该变量. 2.局部变量: #1-#33 局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值. 3.公共变量 #100-#199 #500-#999 公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失. 4.系统变量:#1000以上的变量 系统变量用于读和写CNC的各种数据,例如刀具补偿,当前位置信息, 变量的引用 为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放

在括号中。例如:G01X[#1+#2]F#3; 被引用变量的值根据地址的最小设定单位自动地舍入。 例如:当G00X#1;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346. 改变引用变量的值的符号,要把负号(-)放在#的前面。例如:G00X-#1 当引用未定义的变量时,变量及地址都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1Y#2的执行结果为G00X0 未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。 当#1= (空)时 G90 X100 Y#1实际与G90 X100运行结果一样 当#1=0 时 G90 X100 Y#1实际与G90 X100 Y0 运行结果一样 运算 除了用<空>赋值以外,其余情况下<空>与0 相同。

数控宏程序编程入门

宏程序 大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出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的数值赋予#101 G65 H02 P#101 Q#102 R10 G65 H02 P#101 Q10 R#103 G65 H02 P#101 Q10 R20 上面4个都是加指令的格式都是把Q后面的数值或变量号内的数值加上R后面的数 值或变量号内的数值然后等于到P后面的变量号中. H03减指令;格式G65 H03 P#101 Q#102 R#103,把#102的数值减去#103的数值赋予#101 G65 H03 P#101 Q#102 R10 G65 H03 P#101 Q10 R#103 G65 H03 P#101 Q20 R10 上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数 值或变量号内的数值然后等于到P后面的变量号中. H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101 G65 H04 P#101 Q#102 R10

FANUC用户宏程序学习教程

用户宏程序 宏程序是指含有变量的子程序,在程序中调用用户宏程序的那条指令叫做用户宏指令(这里用G65) 1、变量 用一个可赋值的代号代替具体的坐标值,这个代号称为变量。变量分为系统变量、全局变量和局部变量三类,它们的性质和用途个不相同。(1)系统变量是固定用途的变量,它的值决定了系统的状态。FANUC 中的系统变量为#1000~#1005、#1032、#3000等。 (2)全局变量是指在主程序内和由主程序调用的各用户宏程序内公用的变量。FANUC中的全局变量有60个,它们分两组,一组是#100~#149;另一组是#500~#509。 (3)局部变量是仅局限于在用户宏程序内使用的变量。同一个局部变量在不同的宏程序内的值是不通用的。FANUC中的局部变量有33个,分别为#1~#33。 表1 FANUC系统中局部变量赋值(部分)对照表

2、变量的演算 (1)加减型运算加减型运算包括加、减、逻辑加和排它的逻辑加。分别用以下四个形式表达: #i = #j +#k #i = #j -#k #i = #j OR #k #i = #j XOR #k 式中,i、j、k为变量;+、-、OR、XOR称为为演算子。 (2)乘除型运算乘除型运算包括乘、除和逻辑乘。分别用以下形式表达: #i = #j * #k #i = #j / #k #i = #j AND #k 4.变量的赋值 由于系统变量的赋值情况比较复杂,这里只介绍公共变量和局部变量的赋值。变量的赋值方式可分为直接和间接两种。

(1)直接赋值 例:#1=115(表示将变量115赋值于#1变量) #100=#2(表示将变量#2的即时值赋于变量#100) (2)间接赋值间接赋值就是用演算式赋值,即把演算式内演算的结果赋给某个变量。在演算式中有自变量代号,自变量每得到一个即时值,相应就得到一个演算结果,该结果就赋值给变量,该变量也叫应变量。5.转向语句 转向语句分为无条件转向语句和条件转向语句两种。 (1)无条件转向语句 程序段格式:GOTO N ;其中N后面的数值为程序段号。 例如:GOTO 55;表示无条件转向执行N55程序段,而不论N55程序段在转向语句之前还是之后。 (2)条件转向语句条件转向语句一般由判断条件式和转向目标两部分构成。 程序段格式:IF [a GT b ] GOTO c;表示为“如果a>b,那么转向执行第Nc句程序段”。a和b可以是数值、变量或含有数值及变量的算式,c 是转向目标的程序段。 大于、等于、大于等于、小于等于分别用GT、EQ、GE、LE表示。

宏程序编程例子入门(精编文档).doc

【最新整理,下载后即可编辑】 宏程序编程例题 椭圆解析: 椭圆关于中心、坐标轴都是对称的,坐标轴是对称轴,原点是对称中心。对称中心叫做椭圆中心。椭圆和X轴有2两个交点,和Y轴有两个交点,这四个交点叫做椭圆顶点。 椭圆标准方程:x2 / a2 + y2 / b2 = 1 ( a为长半轴,b为短半轴,a > b > 0 ) 椭圆参数方程:x=a*cosM y=b*sinM ( a为长半轴,b为短半轴,a > b > 0 ,M是夹角,是椭圆上任意一 点到椭圆中心连线与X正半轴 所成的夹角,顺时针为负,逆时 针为正。) 二、数控车床: 根据椭圆标准方程:x2 / a2 + y2 / b2 = 1 ( a为长半轴,b为短半轴,a > b > 0 ) 根据椭圆参数方程:x=a*cosM y=b*sinM ( a为长半轴,b为短半轴,a > b > 0 ,M是夹角,是椭圆上任 意一点到椭圆中心连线与X正 半轴所成的夹角,顺时针为负, 逆时针为正。) 可得车床标准方程:z2 / a2 + x2 / b2 = 1 ( a为长半轴,b为短半 轴,a > b > 0 ) 可得椭圆参数方程:z=a*cosM x=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为短轴(直径编程)常数表示。 设z为自变量#1,则x为因变量#2,根据上述公式有:#2 =b / a * SQRT [a * a- #1 * #1 ] 例题:长半轴a=5,短半轴b=4的椭圆。有以下几种情况: 1、#1为z,为自变量: 则#1=5 (#1=5 表示从Z正半轴开始加工。) N10 #2 = 8 / 5 * SQRT [5 * 5 - #1 * #1 ] G01 X [ #2+ D ] Z [ #2 + E ] F0.2 (X正,Z正,表示走逆时针,D、E表示椭圆中心X、Z绝对坐标) #1=#1-1 IF [ #1 GE 0 ] GOTO10 这是加工第一象限的椭圆,90度椭圆。 IF [ #1 GE -5 ] GOTO10 这是从第一象限加工到第二象限的椭圆,180度椭圆。 2、#1为x,为自变量: 则#1=-5 (#1=-5 表示从Z轴负方向开始加工。) N10 #2 = 8 / 5 * SQRT [5 * 5 - #1 * #1 ] G01 X [ #2+ D ] Z [ -#2 + E ] F0.2 (X正,Z负,表示走顺时针,D、E表示椭圆中心X、Z绝对坐标) #1=#1 + 1 IF [ #1 LE 0 ] GOTO10 这是加工第二象限的椭圆,90度椭

手把手教你A类宏程序编程

手把手教你编A类宏程序 大家都在问宏程序~其实说起来宏就是用公式来加工零件的, 比如说椭圆,如果没有宏的话, 我们要逐点算出曲线上的点, 然后慢慢来用直线逼近, 如果是个光洁度要求很高的工件的话, 那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广. 由于现在B类宏程序的大量使 用很多书都进行了介绍这里我就不再重复了, 但在一些老系统中, 比如法兰克OTD系统中由于它的MD键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32S口传输的数控系统中,可是如果我们没有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~#53关1 闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据. 我们如果说#100=30那么现在 #100地址内的数据就是30了,就是这么简单.好现在我来说一下Hf弋码, 大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A 类宏,那么这个H就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算, 可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义: 以下都以#100和#101和#102,及数值10和20做为例子, 应用的时候别把他们当格式就行, 基本指令: H01赋值;格式:G65H01P#101Q#102E#102内的数值赋予到#101中 G65H01P#101Q#10巴10赋予到#101 中 H02加指令;格式G65 H02 P#101 Q#102 R#103把#102的数值加上 #103 的数值赋予#101 G65 H2 P#101 Q10 R#103

(整理)数控宏程序教程(车床篇)1(经典)

由浅入深宏程序1-宏程序入门基础之销轴加工对于没有接触过宏程序 人,觉得它很神秘,其实很简单,只要掌握了各类系统宏程序的基本格式,应用指令代码,以及宏程序编程的基本思路即可。 对于初学者,尤其是要精读几个有代表性的宏程序,在此基础上进行模仿,从而能够以此类推,达到独立编制宏程序的目的。本教程将分步由浅入深的将宏程序讲解给大家,作者水平有限,也希望各位同仁提供更好的思路。 下面大家先看一个简单的车床的程序,图纸如下: 要求用外圆刀切削一个短轴,这里只列举程序的前几步: O0001 T0101; M3S800; G0X82Z5; G0X76; G1Z-40F0.2; X82; G0Z5; G0X72; G1Z-40F0.2; X82; G0Z5;

G0X68; G1Z-40F0.2; X82; G0Z5; G0X68; G1Z-40F0.2; X82; G0Z5; ........ G0X40; G1Z-40F0.2; X82; G0Z5; G0X150Z150; M5; M30; 从上面程序可以看出,每次切削所用程序都只是切削直径X有变化,其他程序代码未变。因此可以将一个变量赋给X,而在每次切削完之后,将其改变为下次切削所用直径即可。 T0101; M3S800; G0X82Z5; #1=76;赋初始值,即第一次切削直径 N10 G0X[#1] ;将变量赋给X,则X方向进刀的直径则为#1变量中实际存储值。N10是程序 G1Z-40F0.2;段的编号,用来标识本段,为后面循环跳转所用。 X82; G0Z5; #1=#1-4;每行切深为2mm,直径方向递减4mm IF [#1GE40] GOTO 10如果#1 >= 40,即此表达式满足条件,则程序跳转到N10继续执行。G0X150Z150;当不满足#1 >= 40,即#1<40,则跳过循环判断语句,由此句继续向后执行。M5; M30;

用户宏程序

用户宏程序 1.概念 反复进行同一切削动作时,使用子程序效果较好,但若使用用户宏程序的话,可以使用运算指令、条件转移等,适于编制更简单、通用性更强的程序。并且与子程序一样,在加工程序中用简单地命令就可以调用用户宏程序。在FANUC系统中,包含变量、转向、比较判别等功能的指令称为宏指令。包含有宏指令的子程序称为宏程序。这里以FANUC系统中B类用户宏程序来作简单介绍,也就是FANUC Power Mater O系统所用的方法。 宏程序的最大特征有以下几个方面: (1)可以在宏程序主体中使用变量。 (2)可以进行变量之间的演算。 (3)可以用宏程序命令对变量进行赋值。 使用宏程序时的主要方便之处在于由于可以用变量代替具体数值,因而在加工同一类的工件时,只需将实际的值赋与变量既可,而不需要对每一个零件都编一个程序。 例:a=10,b=20,c=5,d=8时其精加工轨迹运行程序为: N10 G00 X0 Z0; N20 G03 X10. W-5. R5. F100; N30 G01 X20. W-8.; N40 G00 X100. Z100.; a,b,c,d值变化时则又需要编一个程序。 实际上我们可以将程序写为: N10 G00 X0. Z0.; N20 G03 Xa W-c Rc F100; N30 G01 Xb W-d; N40 G00 X100. Z100.; 此时可以将其中变量,用宏程序中的变量# i的对应为:a:#1;b:#2;c:#3;d:#7。则宏程序即可写成如表6-14所示形式: 表6-14 例6-10宏程序编写 用A,B,C,D分别代表变量#1,#2,#3和#7,用a,b,c和d赋值后,用宏命令G65 P9810 Aa Bb Cc Dd来调用。 如上述所示,当加工同一类,但只是尺寸不同的工件时,只需改变宏命令的数值即可,而没有必要针对每一个零件都编一个程序。 2.变量 在一般的加工程序中,G代码移动距离可直接用数值指令,如G00 X100.0。但在用宏程序中,数值可直接指定,也可用变量号指定。因此,变量是指可以在宏主体的地址上代替具体数值,在调用宏主体时再用引数进行赋值的符号:# i(i=1,2,3……)。使用变量可以

宏程序

FUNN宏程序 用户宏程序 能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。 l 所存入的这一系列指令——用户宏程序 l 调用宏程序的指令————宏指令 l 特点:使用变量 一.变量的表示和使用 (一)变量表示 #I(I=1,2,3,…)或#[<式子>] 例:#5,#109,#501,#[#1+#2-12] (二)变量的使用 1.地址字后面指定变量号或公式 格式:<地址字>#I <地址字>-#I <地址字>[<式子>] 例:F#103,设#103=15则为F15 Z-#110,设#110=250则为Z-250 X[#24+#18*COS[#1]] 2.变量号可用变量代替 例:#[#30],设#30=3则为#3 3.变量不能使用地址O,N,I 例:下述方法下允许 O#1; I#2 6.00×100.0; N#3Z200.0; 4.变量号所对应的变量,对每个地址来说,都有具体数值范围 例:#30=1100时,则M#30是不允许的 5.#0为空变量,没有定义变量值的变量也是空变量 6.变量值定义: 程序定义时可省略小数点,例:#123=149 MDI键盘输一.变量的种类 1. 局部变量#1~#33 一个在宏程序中局部使用的变量 例:A宏程序B宏程序 …… #10=20X#10不表示X20 …… 断电后清空,调用宏程序时代入变量值 2. 公共变量#100~#149,#500~#531 各用户宏程序内公用的变量 例:上例中#10改用#100时,B宏程序中的 X#100表示X20 #100~#149断电后清空 #500~#531保持型变量(断电后不丢失) 3. 系统变量 固定用途的变量,其值取决于系统的状态 例:#2001值为1号刀补X轴补偿值 #5221值为X轴G54工件原点偏置值 入时必须输入小数点,小数点省略时单位为μm 一.运算指令 运算式的右边可以是常数、变量、函数、式子

FANUC宏程序编程

运算符 运算符由2个字母组成,用于两个值的比较,以决定它们是相等还是一个值小于或大于另一 示例程序下面的程序计算数值1~10的总和 O9500;#1=0;………………………………….存储和的变量初值 #2=1;………………………………….被加数变量的初值 N1 IF[#2GT 10]GOTO 2;…………….当被加数大于10时转移到N2 #1=#1+#2;…………………………….计算和 #2=#2+#1;…………………………….下一个被加数 GOTO 1;………………………………转移到N1 N2 M30;................................................程序结束 算术和逻辑运算

角度单位: SIN、ASIN、COS、ACOS、TAN和A TAN的角度单位是度 ARCSIN #i=ASIN[#j]: ●取值范围如下:当参数(N0.6004¥0)NA T位设为0时,270~90度;当参数(N0.6004¥0)NA T位设为1时,-90~90度。 ●当#j超过-1到1的范围时,发出P/S报警N0.111。 ●常数可替代变量#j。 ARCCOS #i=ACOS[#j]; ●取值范围从180~0度。 ●当#j超过-1到1的范围时,发出P/S报警N0.111。 ●常数可替代变量#j。 ARCTAN #i=A TAN[#j]; ●指定两边的长度,并用斜杠(/)分开 ●取值范围如下:当参数(N0.6004¥0)NA T位设为0时,0~360度[例如:当指定 #i=A TAN[-1]/[-1];时,#1=225度]。当参数(N0.6004¥0)NA T位设为1时,-180~180度[例如:当指定#i=A TAN[-1]/[-1];时,#1=-135度] ●常数可替代变量#j。 自然对数#i=LN[#j]; ●注意,相对误差可能大于10-8。 ●当反对数(#j)为0或小于0时,发出报警N0.111。 ●常数可替代变量#j。 指数函数#i=EXP[#j]: ●注意,相对误差可能大于10-8 ●当运算结果超过3.65×1047(j大约是110)时,出现溢出报警N0.111 ●常数可替代变量#j。 上取整下取整: CNC处理数值运算时,若操作后产生整数绝对值大于原数的绝对值时为上取整;小于为下取整。例如: 假设#1=1.2,#2=-1.2。当执行#3=FUP[#1]时,2.0赋给#3;当执行#3=FIX[#1]时1.0赋给#3;当执行#3=FUP[#2]时,-2.0赋给#3;当执行#3=FIX[#2]时,-1.0赋给#3。 宏程序语句:包含算术或逻辑运算(=)的程序;包含控制语句(例如,用GOTO,DO,END)的程序;包含宏程序调用指令(例如,用G65,G66,G67或其它G代码,M代码调用宏程序)的程序段;除宏程序以外任何程序段都为NC语句。 与NC语句的不同: 即使置于单段程序运行方式,机床也不停止。但是,当参数N0.6000#5SBM设定位、为1时,在单段程序方式中,机床停止。在刀具半径补偿方式中宏程序语句段不做为移动程序段处理 与宏程序语句相同性质的NC语句: 含有子程序调用指令(例如,用M98或其它M代码或用T代码调用子程序)但没有除O,N,P或L地址之外的其它地址指令的NC语句,其性质与宏程序语句相同;不包含除O,N,P或L以外的指令地址的程序段其性质与宏程序语句相同。 无限循环; 当指定DO而没有指定WHILE语句时,产生从DO到END的无限循环。

相关文档
最新文档