数控车床宏程序编程
数控车宏程序编程方法及编程指令应用

项目八 数控车宏程序编程方法及指令应用
一、宏程序的基本概念与原理 6、转移和循环
3)循环(While语句) 在 WHILE 后指定一个条件表达式,当指定条件满足时,执行从
DO 到END之间的程序。否则,转到 END后的程序段。 例如:
的无限循环。 • 未定义的变量 在使用 EQ 或 NE 的条件表达式中 <空>和零有不同的效果。
在其它形式的条件表达式中 <空>被当作零。 • 处理时间 当在 GOTO 语句中有标号转移的语句时。进行顺序号检索,
反向检索的时间要比正向检索长。用 WHILE 语句实现循环可减少 处理时间。
项目八 数控车宏程序编程方法及指令应用
G01 X80 Z-50 Z-90
X100 Z-110 M05
M30
项目八 数控车宏程序编程方法及指令应用
二、典型编程案例 3、椭圆加工编程 案例2
项目八 数控车宏程序编程方法及指令应用
二、典型编程案例 3、椭圆加工编程 案例2
O5521 T0101 M03 S1200 F0.1 G0 X80 Z50 G1 Z-15 X50 #1=360 WHILE [#1 GT 180] DO1 #2=30*COS[#1]-45 #3=24*SIN[#1]+50 G01 X[#3] Z[#2] F200 #1=#1-1 END1 G01 X80 Z50 M30
(6)
项目八 数控车宏程序编程方法及指令应用
二、典型编程案例 3、椭圆加工编程 案例3
O5218 T0101 M03 S1200 F0.1 G0 X80 Z50 G1 Z0 X0 #1=50 WHILE [#1 GE -40] DO1 #2=40*SQRT[50*50-#1*#1]/50 G01 X[#2] Z[#1-50] F0.2 #1=#1-0.2 END1 G01 X24 Z-90 X100 M30
新代数控车床宏程序说明

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

数控车床宏程序FANUC数控车第一章编程代码----------------------------------------------------------1 1.准备功能G------------------------------------------------------------1 2.辅助功能M-----------------------------------------------------------6 第二章用户宏程序-------------------------------------------------------71. 运算符号---------------------------------------------------------------72.转移和循环-----------------------------------------------------------7 3.运算指令--------------------------------------------------------------8第三章宏程序编程------------------------------------------------------11 1.车V型圆锥- --------------------------------------------------------11 2.车U圆弧-------------------------------------------------------------12 3.方程曲线车削加工-------------------------------------------------13 5.车梯形螺纹36×6--------------------------------------------------14 6.蜗杆-------------------------------------------------------------------15 7.加工多件--------------------------------------------------------------17 第四章自动编程---------------------------------------------------------------21 1.UG建模--------------------------------------------------------------------21 2.创建几何体----------------------------------------------------------------24 附录--------------------------------------------------------------------------29第一章编程代码1.准备功能G00快速定位G01直线插补G02顺弧插补G03逆弧插补G04暂停G9,G60,G64准确/连续停G20英制输入G21米制输入G40取消刀具补偿G41建立左刀具补偿G42建立右刀具补偿G50坐标设定/主轴最高速设定G70精车循环格式:G70 P(ns) Q(nf)ns: 精加工形状程序的第一个段号。
宏程序编程例子入门

宏程序编程例题椭圆解析:椭圆关于中心、坐标轴都是对称的,坐标轴是对称轴,原点是对称中心;对称中心叫做椭圆中心;椭圆和X轴有2两个交点,和Y轴有两个交点,这四个交点叫做椭圆顶点;椭圆标准方程:x2 / a2 + y2 / b2 = 1 a为长半轴,b为短半轴,a > b > 0椭圆参数方程:x=acosMy=bsinM a为长半轴,b为短半轴,a > b > 0 ,M是夹角,是椭圆上任意一点到椭圆中心连线与X正半轴所成的夹角,顺时针为负,逆时针为正;二、数控车床:根据椭圆标准方程:x2 / a2 + y2 / b2 = 1 a为长半轴,b为短半轴,a > b > 0 根据椭圆参数方程:x=acosMy=bsinM a为长半轴,b为短半轴,a > b > 0 ,M是夹角,是椭圆上任意一点到椭圆中心连线与X正半轴所成的夹角,顺时针为负,逆时针为正;可得车床标准方程:z2 / a2 + x2 / b2 = 1 a为长半轴,b为短半轴,a > b > 0 可得椭圆参数方程:z=acosMx=2bsinM 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 1G01 X 2+ D Z 2 + E X正,Z正,表示走逆时针,D、E表示椭圆中心X、Z绝对坐标1=1-1IF 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 1G01 X 2+ D Z -2 + E X正,Z负,表示走顺时针,D、E表示椭圆中心X、Z 绝对坐标1=1 + 1IF 1 LE 0 GOTO10 这是加工第二象限的椭圆,90度椭圆;通常这是利用反刀加工;IF 1 LE 5 GOTO10 这是从第二象限加工到第一象限的椭圆,180度椭圆;正反刀都可以加工;关于D、E椭圆中心坐标位置的说明,D为直径表达,E的位置有三种:当E=-a时 2 + E =0,椭圆中心离工件原点相差一个长半轴距离;E=-a+Δ时 2 + E >0,椭圆中心在Z轴上向右偏移,中心离工件原点距离小于一个长半轴;E=-a-Δ时 2 + E <0,椭圆中心在Z轴上向左偏移,中心离工件原点距离大于一个长半轴;二车通过参数方程加工椭圆可以加工0-180度内任意角度,直接通过参数方程加工即可;例题:长半轴a=5,短半轴b=4的椭圆;有以下几种情况:1、设1为M,为角度自变量,x、z为因变量:则1=0 1=0 表示从0度开始加工,即Z正半轴开始加工,若写1=90表示从X正半轴开始加工,其他以此类推N10 Z = 2 = a COS 1X = 3 = 2b SIN 1G01 X 3 +D Z 2 + E X正,Z正,表示走逆时针,D、E表示椭圆中心X、Z绝对1=1+1 + 表示走逆时针方向IF 1 LE 90 GOTO10 这是加工第一象限部分,90度椭圆;IF 1 LE 180 GOTO10 这是从第一象限加工到第二象限的椭圆,180度椭圆; 如果写LE180就是加工0-180度椭圆,其他任意角度以此类推;2、设1为M,为角度自变量,x、z为因变量:则1=180 1=180 表示从180度开始加工,即Z负半轴开始加工,其他任意角度以此类推N10 Z = 2 = a COS 1X = 3 =2 b SIN 1G01 X 3 + D Z -2 + E X正,Z负,表示走顺时针,D、E表示椭圆中心X、Z 绝对坐标1=1-1 - 表示走顺时针方向IF 1 GE 90 GOTO10 这是加工第二象限部分,90度椭圆;通常这是利用反刀加工;IF 1 GE 0 GOTO10 这是从第二象限加工到第一象限的椭圆,180度椭圆;正反刀都可以加工;通过可以通过参数方程和标准加工,通过上述举例可以发现,参数方程编程简单,程序简洁,可以加工任意角度的椭圆;关于椭圆的编程介绍到此为止;椭圆例题图形1O0001N010 G99 G97 G21N020 T0101N030 S600 M03N040 G0 X45 Z5 M08N050 G73 U23 W0 R21N060 G73 P70 Q190 0.1 FN070 G00 X0 S1000N080 G42 G01 0 FN090 101=20N100 WHILE101GE0DO1N110 102=26SQRT1-101101/2020 N120 G01 X102 Z101-20N130 101=N140 END1N150 Z-30N160 G02 X36 Z-35 R5N170 G01 X38N180 X42 Z-37N190 X45N200 G70 P70 Q190N210 G40 G00 X100 Z100 M09N220 T0100 M05N230 M30%方法2O0002N010 G99 G97 G21N020 T0101N030 S600 M03N040 G0 X45 Z5 M08N050 G73 U23 W0 R21N060 G73 P70 Q180 0.1 FN070 G00 X0 S1000N080 G42 G01 0 FN090 101=20N100 102=26SQRT1-101101/2020 N110 G01 X102 Z101-20N120 101=N130 IF101GE0GOTO100N140 Z-30N150 G02 X36 Z-35 R5N160 G01 X38N170 X42 Z-37N180 X45N190 G70 P70 Q180N200 G40 G00 X100 Z100 M09 N210 T0100 M05N220 M30图形2方法1O0001N010 G99 G97 G21N020 T0101N030 S600 M03N040 G0 X53 Z5 M08N050 G73 U25 W0 R23N060 G73 P70 Q210 0.1 FN070 G00 S1000N080 G42 G01 0 FN090 Z-2N100 Z-18N110 X20N120 Z-25N130 101=20N140 WHILE101GE0DO1N150 102=18SQRT1-101101/2020 N160 G01 X102 Z101-45N170 101=N180 END1N190 G01 X38N200 Z-60N210 X50N220 G70 P70 Q210N230 G40 G00 X100 Z100 M09N240 T0100 M05N250 M30%方法2O0001N010 G99 G97 G21N020 T0101N030 S600 M03N040 G0 X53 Z5 M08N050 G73 U25 W0 R23N060 G73 P70 Q200 0.1 FN070 G00 S1000N080 G42 G01 0 FN090 Z-2N100 Z-18N110 X20N120 Z-25N130 101=20N140 102=18SQRT1-101101/2020 N150 G01 X102 Z101-45N160 101=N170 IF101GE0GOTO140N180 G01 X38N190 Z-60N200 X50N210 G70 P70 Q200N230 G40 G00 X100 Z100 M09N240 T0100 M05N250 M30%图形2 切槽与螺纹均不编图形3O0001N010 G99 G97 G21N020 T0101N030 S700 M03N040 G00 X53 Z2 M08N050 G73 U25 W0 R23N060 G73 P70 Q230 0.1 FN070 G00 X0 S1000N080 G42 G01 0 FN090 G03 X16 Z-8 R8N100 G01N110 X20N120N130N140 101=0N150 102=30SQRT1-101101/2020 N160 G01 X52.98-102 ZN170 101=N180 IFGOTO150N190 G01 X32N200 Z-27N210 Z-50N220 X46N230 X48 Z-51N240 G70 P70 Q230N250 G40 G00 X100 Z100 M09 N260 T0100 M05N270 M30N280%图形3 切槽与螺纹均不编图形4O0001N010 G99 G97 G21N020 T0101N030 S700 M03N040 G00 X52 Z2 M08N050 G73 U12 W0 R10N060 G73 P70 Q200 0.1 FN070 G00 X26 S1000N080 G42 G01 0 FN090 G01 X30 Z-2N100 G01 Z-5N110 X36N120 G03 X40 R20N130N140 101=14N150 102=16SQRT1-101101/1414 N160 G01 X44-102 Z101-31N170 101=N180 IF101GE-14GOTO150N190 G01 X44N200 Z-51N210 G70 P70 Q200N220 G40 G00 X100 Z100 M09N230 T0100 M05N240 M30N250%图形4 切槽与螺纹均不编图形5O0001N010 G99 G97 G21N020 T0101N030 S700 M03N040 G00 X62 Z2 M08N050 G73 U13 W0 R10N060 G73 P70 Q190 0.1 FN070 G00 X51 S1000N080 G42 G01 0 FN090 G01 X52N100 G01N110 101=25N120 102=24SQRT1-101101/2525 N130 G01 X58-102 Z101-43N140 101=N150 IF101GE0GOTO120N160 G01 Z-43N170 X51N180 X52 Z-44N190 X60N200 G70 P70 Q190N210 G40 G00 X100 Z100 M09N220 T0100 M05N230 M30N240图形6O0001N010 G97 G99 G21N020 T0101N030 S600 M03N040 G0 X53 Z5 M08N050 G73 U10 W0 R9N060 G73 P70 Q180 0 FN070 G00 X38N080 G42 G01 Z0 1200 FN090 101=0N100 102=38SQRT1-101101/5050 N110 G01 X102 Z101N120 101=N130 IFGOTO100N140 G01 Z-36N150 G02 X38 Z-40 R4N160 G01 X47N170 X48N180 X50N190 G70 P70 Q180N200 G40 G00 X100 Z100 M09N210 T0100 M05N220 M30N230模拟轨迹O0001N010 G97 G99 G21N020 T0101N030 S600 M03N040 G0 X73 Z5 M08N050 G73 U13 W0 R11N060 G73 P70 Q160 0 FN070 G00 X44N080 G42 G01 Z0 1200 FN090 101=20N100 102=24SQRT1-101101/2020N110 G01 X102+44 Z101-20N120 101=N130 IF101GE0GOTO100N140 G01 X68N150 Z-90N160 X70N170 G70 P70 Q160N180 G40 G00 X100 Z100 M09 N190 T0100 M05N200 M30N210。
数控车床华中系统用户宏程序编程

如图2,Z坐标为自变量#2,则X坐标为因变量#1,那么X用Z表示为:
分别用宏变量#1、#2代替上式中的X、Z,即得因变量#1相对于自变量#2的宏表达式:
如图1,Z坐标为自变量#2,则X坐标为因变量#1,那么X用Z表示为:
3、如何进行函数变换,确定因变量相对于自变量的宏表达式
如图3,X坐标为自变量#1,因Z坐标为因变量#2,那么Z用X表示为:
IF 条件表达式 IF 条件表达式
02
… …
ELSE ENDIF
…
05
ENDIF
格式:WHILE 条件表达式
…
ENDW
5、循环语句WHILE,ENDW
二、公式曲线宏程序编程模板的具体应用实例
运用以上公式曲线宏程序模板,结合粗加工循环指令,就可以快速准确实现零件公式曲线轮廓的编程和加工。具体应用示例如下: 例1:如图1所示零件的外轮廓粗精加参考程序如下(设毛坯为直径25毫米的棒料): %0001(程序头) T0101(调用01号外圆刀及01号刀具偏置补偿) G90 M03 S700(绝对值编程;主轴以700转/分正转) G00 X33 Z2(快速定位到粗加工循环起点) G71 U1 R0.5 P10 Q20 X0.6 F100(外径粗车循环) N10 G01 X10 F60 S1000(精加工起始程序段) Z-10 X24 Z-22(公式曲线起点) #2=8(设Z为自变量#2,给自变量#2赋值8:Z1=8) WHILE #2 GE [-8](自变量#2的终止值-8:Z2=-8) (因变量#1: 用#1、#2代替X、Z) #11=-#1+15(工件坐标系下的X坐标值#11:编程使用的是负轮廓,#1前冠以负;ΔX=15) #22=#2-30(工件坐标系下的Z坐标值#22:ΔZ=-30) G01 X[2*#11] Z[#22](直线插补,X为直径编程) #2=#2-0.5(自变量以步长0.5变化) ENDW(循环结束) N20 G01 Z-50(精加工终止程序段) G00 X100 Z80(快速定位到退刀点) M30(程序结束)
数控车宏程序编程方法及技巧

编程灵活、高效、快捷。宏程序不 仅可以实现象子程序那样,对编制 相同加工操作的程序非常有用,还 可以完成子程序无法实现的特殊功 能,例如: 系列零件加工宏程序、
椭圆加工宏程序、抛物线加工宏程 序、双曲线加工宏程序等。
数控车床宏程序编程特征 ➢ 宏程序中的变量 ➢ 宏程序变量间的运算指令 ➢ 宏程序的控制语句 数控车床宏程序编程技巧编程实例 ➢ 宏程序用于系列零件的加工 ➢ 椭圆类零件的宏程序编制 ➢ 抛物线类零件的宏程序编制 ➢ 双曲线过渡类零件的宏程序编制
变量及变量的引用
(1)、变量的表示
#i #[表达式]
——(变量号i=0,1,2,3,4……) 例:#8、#110、#1100 ——表达式必须用括号括起来 例:#[#1+#2-12]
(2)、变量的引用
<地址>#1 <地址> - #1
例:F#10——当#10=20时,F20被指令。 X- #20——当#20=100.时,X-100.被指令。 G#130——当#130=2时,G2被指令。
…… END 3; …… END 2 …… END 1;
1.宏程序用于系列零件的加工
宏程序用于系列零件的加工,此系列零件形状 相同,但是部分尺寸不同,如果将这些不同的尺寸 用宏变量表示,由程序自动将相关基点坐标进行计 算则可用同一个程序完成一个系列零件的加工。
以上图为例。该系列零件的右端面半球球径可取 R10与R15,可将球径用变量表示,编程原点设在工 件右端面中心,毛坯直径¢45.从图中可以看出编程所 需基点A·D ·E三点外,B ·C点均与球径R相关, 下面给出各基点坐标:
2.宏程序变量间的运算
加法:#i=#j + #k 减法: #i=#j - #k 乘法: #i=#j * #k 除法: #i=#j / #k
数控车床宏程序编程
数控车床宏程序编程数控宏程序一.什么是宏程序?什么是数控加工宏程序?简单地说,宏程序是一种具有计算能力和决策能力的数控程序。
宏程序具有如下些特点:1.使用了变量或表达式(计算能力),例如:1)G01 X[3+5]。
有表达式3+52)G00 X4 F[#1]。
有变量#13)G01 Y[50*SIN[3]]。
有函数运算2.使用了程序流程控制(决策能力),例如:1)IF #3 GE 9.有选择执行命令ENDIF2)WHILE #1 LT #4*5.有条件循环命令XXX二.用宏程编程有什么好处?1.宏程序引入了变量和表达式,还有函数功能,具有实时动态计算能力,可以加工非圆曲线,如抛物线、椭圆、双曲线、三角函数曲线等;2.宏步伐可以完成图形一样,尺寸分歧的系列零件加工;3.宏程序可以完成工艺路径一样,位置不同的系列零件加工;4.宏程序具有一定决策能力,能根据条件选择性地执行某些部分;5.使用宏程序能极大地简化编程,精简程序。
适合于复杂零件加工的编程。
一.宏变量及宏常量1.宏变量先看一段简单的程序:G00 X25.0上面的步伐在X轴作一个快速定位。
个中数据25.0是固定的,引入变量后可以写成:1=25.0.#1是一个变量G00 X[#1]。
#1就是一个变量宏步伐中,用“#”号背面紧跟1~4位数字透露表现一个变量,如#1,#50,#101,……。
变量有甚么用呢?变量可以用来代替步伐中的数据,如尺寸、刀补号、G指令编号……,变量的使用,给步伐的设想带来了极大的灵活性。
使用变量前,变量必须带有精确的值。
如1=25G01 X[#1]。
表示G01 X251=-10.运行过程中可以随时改变#1的值G01 X[#1]。
表示G01 X-10用变量不仅可以透露表现坐标,还可以透露表现G、M、F、D、H、M、X、Y、……等各类代码后的数字。
如:2=3G[#2] X30.表示G03 X30例1使用了变量的宏子步伐。
100050=20.先给变量赋值M98 P1001.然后调用子程序50=350.重新赋值M98 P1001.再挪用子步伐M301001G91 G01 X[#50]。
数控宏程序教程(车床篇)1(经典)
由浅入深宏程序1-宏程序入门基础之销轴加工对于没有接触过宏程序人,觉得它很神秘,其实很简单,只要掌握了各类系统宏程序的基本格式,应用指令代码,以及宏程序编程的基本思路即可。
对于初学者,尤其是要精读几个有代表性的宏程序,在此基础上进行模仿,从而能够以此类推,达到独立编制宏程序的目的。
本教程将分步由浅入深的将宏程序讲解给大家,作者水平有限,也希望各位同仁提供更好的思路。
下面大家先看一个简单的车床的程序,图纸如下:要求用外圆刀切削一个短轴,这里只列举程序的前几步:O0001T0101;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,直径方向递减4mmIF [#1GE40] GOTO 10如果#1 >= 40,即此表达式满足条件,则程序跳转到N10继续执行。
G0X150Z150;当不满足#1 >= 40,即#1<40,则跳过循环判断语句,由此句继续向后执行。
M5;M30;由浅入深宏程序2-宏程序之销轴粗精加工本篇文章利用宏程序简单模仿数控系统的外圆车削循环功能。
数控车床宏程序实例
宏程序概述其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出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代码调用它们,使用时只需给出这个指令代码就能执行其功能,也可以像调用子程序一样使用。
FANUC数车宏程序
x向精加工余量 z向精加工余量 半精精加工控制 进刀,准备精加工 角度初值 曲线加工 X Z
FANUC Oi-T
抛物线加工
加工下图所示抛物线孔,方程为Z=X2/16,换算成直径编程形式 为Z=X2/64,则X=sqrt[Z]/8。采用端面切削方式,编程零点放在
工件右端面中心,工件预钻有Φ30底孔。
回刀
• #3=#3+2 进刀
• END1 粗加工结束
• G0Z100 退刀
• X100
• S1200M3
• T0202
• G0X30Z2
• G0X80
• G1Z1.4 精加工定位
• #1=80 X初始值
• WHILE[#1GE30]DO1 精加工条件控制
• #2=[#1*#1]/64
Z值
• #1=#1-0.2
• 变量的赋值
程序中的地址
A B C D E F H I J K M
在宏程序体中的 变量
#1 #2 #3 #7 #8 #9 #11 #4 #5 #6 #13
程序中的地址
Q R S T U V W X Y Z
在宏程序体中的 变量
#17 #18 #19 #20 #21 #22 #23 #24 #25 #26
可粗一些,易保ห้องสมุดไป่ตู้加工质量。
精加工:一般应采用仿形加工,即半精车、精车各一次
• 椭圆轮廓的加工
对椭圆轮廓,其方程有两种形式。对粗加工,采用G71/G72走刀方 式时,用直角坐标方程比较方便;而精加工(仿形加工)用极坐标 方程比较方便。
极坐标方程
直角坐标方程:
注意:方程式中的X、Z为数车坐标轴,通常a<b,且X为直径值。
• #1=#2+100
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数控宏程序一.什么是宏程序什么是数控加工宏程序简单地说,宏程序是一种具有计算能力和决策能力的数控程序。
宏程序具有如下些特点:1.使用了变量或表达式(计算能力),例如:(1)G01 X[3+5] ;有表达式3+5(2)G00 X4 F[#1] ;有变量#1(3)G01 Y[50*SIN[3]] ;有函数运算2.使用了程序流程控制(决策能力),例如:(1)IF #3 GE 9 ;有选择执行命令……ENDIF(2)WHILE #1 LT #4*5 ;有条件循环命令……ENDW二.用宏程编程有什么好处1.宏程序引入了变量和表达式,还有函数功能,具有实时动态计算能力,可以加工非圆曲线,如抛物线、椭圆、双曲线、三角函数曲线等;2.宏程序可以完成图形一样,尺寸不同的系列零件加工;3.宏程序可以完成工艺路径一样,位置不同的系列零件加工;4.宏程序具有一定决策能力,能根据条件选择性地执行某些部分;5.使用宏程序能极大地简化编程,精简程序。
适合于复杂零件加工的编程。
一.宏变量及宏常量1.宏变量先看一段简单的程序:G00上面的程序在X轴作一个快速定位。
其中数据是固定的,引入变量后可以写成:#1= ;#1是一个变量G00 X[#1] ;#1就是一个变量宏程序中,用“#”号后面紧跟1~4位数字表示一个变量,如#1,#50,#101,……。
变量有什么用呢变量可以用来代替程序中的数据,如尺寸、刀补号、G指令编号……,变量的使用,给程序的设计带来了极大的灵活性。
使用变量前,变量必需带有正确的值。
如#1=25G01 X[#1] ;表示G01 X25#1=-10 ;运行过程中可以随时改变#1的值G01 X[#1] ;表示G01 X-10用变量不仅可以表示坐标,还可以表示G、M、F、D、H、M、X、Y、……等各种代码后的数字。
如:#2=3G[#2] X30 ;表示G03 X30例1 使用了变量的宏子程序。
%1000#50=20 ;先给变量赋值M98 P1001 ;然后调用子程序#50=350 ;重新赋值M98 P1001 ;再调用子程序M30%1001G91 G01 X[#50] ;同样一段程序,#50的值不同,X移动的距离就不同M992.局部变量编号#0~ #49的变量是局部变量。
局部变量的作用范围是当前程序(在同一个程序号内)。
如果在主程序或不同子程序里,出现了相同名称(编号)的变量,它们不会相互干扰,值也可以不同。
例%100N10 #3=30 ;主程序中#3为30M98 P101 ;进入子程序后#3不受影响#4=#3 ;#3仍为30,所以#4=30M30%101#4=#3 ;这里的#3不是主程序中的#3,所以#3=0(没定义),则:#4=0#3=18 ;这里使#3的值为18,不会影响主程序中的#3M993.全局变量编号#50~ #199的变量是全局变量(注:其中#100~#199也是刀补变量)。
全局变量的作用范围是整个零件程序。
不管是主程序还是子程序,只要名称(编号)相同就是同一个变量,带有相同的值,在某个地方修改它的值,所有其它地方都受影响。
例%100N10 #50=30 ;先使#50为30M98 P101 ;进入子程序#4=#50 ;#50变为18,所以#4=18M30%101#4=#50 ; #50的值在子程序里也有效,所以#4=30#50=18 ;这里使#50=18,然后返回M99为什么要把变量分为局部变量和全局变量如果只有全局变量,由变量名不能重复,就可能造成变量名不够用;全局变量在任何地方都可以改变它的值,这是它的优点,也是它的缺点。
说是优点,是因为参数传递很方便;说是缺点,是因为当一个程序较复杂的时候,一不小心就可能在某个地用了相同的变量名或者改变了它的值,造成程序混乱。
局部变量的使用,解决了同名变量冲突的问题,编写子程序时,不需要考虑其它地方是否用过某个变量名。
什么时候用全局变量什么时候用局部变量在一般情况下,你应优先考虑选用局部变量。
局部变量在不同的子程序里,可以重复使用,不会互相干扰。
如果一个数据在主程序和子程序里都要用到,就要考虑用全局变量。
用全局变量来保存数据,可以在不同子程序间传递、共享、以及反复利用。
刀补变量(#100~#199)。
这些变量里存放的数据可以作为刀具半径或长度补偿值来使用。
如#100=8G41 D100 ;D100就是指加载#100的值8作为刀补半径。
注意:上面的程序中,如果把D100写成了D[#100],则相当于D8,即调用8号刀补,而不是补偿量为8。
4.系统变量#300以上的变量是系统变量。
系统变量是具有特殊意义的变量,它们是数控系统内部定义好了的,你不可以改变它们的用途。
系统变量是全局变量,使用时可以直接调用。
#0~#599是可读写的,#600以上的变量是只读的,不能直接修改。
其中,#300 ~#599是子程序局部变量缓存区。
这些变量在一般情况下,不用关心它的存在,也不推荐你去使用它们。
要注意同一个子程序,被调用的层级不同时,对应的系统变量也是不同的。
#600~#899是与刀具相关系统变量。
#1000~#1039坐标相关系统变量。
#1040~#1143参考点相关系统变量。
#1144~#1194系统状态相关系统变量。
(详见:)有时候需要判断系统的某个状态,以便程序作相应的处理,就要用到系统变量。
5.常量PI 表示圆周率,TRUE 条件成立(真),FALSE 条件不成立(假)。
二.运算符与表达式1.算术运算符加+ ,减- ,乘* ,除/2条件运算符用在程序流程控制IF和WHILE的条件表达式中,作为判断两个表达式大小关系的连接符。
注意:宏程序条件运算符与计算机编程语言的条件运算符表达习惯不同。
3.逻辑运算符在IF或WHILE语句中,如果有多个条件,用逻辑运算符来连接多个条件。
AND (且) 多个条件同时成立才成立OR (或) 多个条件只要有一个成立即可NOT (非) 取反(如果不是)例#1 LT 50 AND #1GT 20 ——表示:[#1<50]且[#1>20]#3 EQ 8 OR #4 LE 10 ——表示:[#3=8]或者[#4≤10]有多个逻辑运算符时,可以用方括号来表示结合顺序,如:NOT[#1 LT 50 AND #1GT 20]——表示:如果不是“#1<50 且#1>20”更复杂的例子,如:[#1 LT 50 ] AND [#2GT 20 OR #3 EQ 8] AND [ #4 LE 10]4.函数正弦:SIN[a] 余弦:COS[a] 正切:TAN[a] 注:a为角度,单位是弧度值。
反正切:ATAN[a] (返回:度,范围:-90~+90)反正切:ATAN2[a]/[b] (返回:度,范围:-180~+180) (注:华中数控暂不支持)绝对值:ABS[a],表示|a|取整:INT[a],采用去尾取整,非“四舍五入”取符号:SIGN[a],a为正数返回1,0返回0,负数返回-1开平方:SQRT[a] ,表示√a指数:EXP[a],表示e a5.表达式与括号包含运算符或函数的算式就是表达式。
表达式里用方括号来表示运算顺序。
宏程序中不用圆括号,因圆括号是注释符。
例如175/SQRT[2] * COS[55 * PI/180 ]#3*6 GT 146.运算符的优先级方括号→函数→乘除→加减→条件→逻辑技巧:常用方括号来控制运算顺序,更容易阅读和理解。
7.赋值号 =把常数或表达式的值送给一个宏变量称为赋值,格式如下:宏变量= 常数或表达式例如#2 = 175/SQRT[2] * COS[55 * PI/180 ]#3 =#50 = #3+12特别注意,赋值号后面的表达式里可以包含变量自身,如:#1 = #1+4 ;此式表示把#1的值与4相加,结果赋给#1。
这不是数学中的方程或等式,如果#1的值是2,执行#1 = #1+4后,#1的值变为6。
三.程序流程控制程序流程控制形式有许多种,都是通过判断某个“条件”是否成立来决定程序走向的。
所谓“条件”,通常是对变量或变量表达式的值进行大小判断的式子,称为“条件表达式”。
华中数控系统有两种流程控制命令:IF——ENDIF,WHILE ——ENDW。
1.条件分支IF需要选择性地执行程序,就要用IF命令。
格式1:(条件成立则执行)IF条件表达式条件成立执行的语句组ENDIF功能:条件成立执行IF与ENDIF之间的程序,不成立就跳过。
其中IF、ENDIF称为关键词,不区分大小写。
IF为开始标识,ENDIF为结束标识。
IF语句的执行流程如图1所示。
例:IF #1 EQ 10 ;如果#1=10M99 ;成立则,执行此句(子程返回)ENDIF ;条件不成立,跳到此句后面例:IF #1 LT 10 AND #1 GT 0;如果#1<10 且#1>0G01 x20 ;成立则执行Y15ENDIF ;条件不成立,跳到此句后面格式2:(二选一,选择执行)形式:IF条件表达式条件成立执行的语句组ELSE条件不成立执行的语句组ENDIF例:IF #51 LT 20G91G01 X10F250ELSEG91G01X35F200 ENDIF功能:条件成立执行IF与ELSE之间的程序,不成立就执行ELSE与ENDIF之间的程序。
IF语句的执行流程如图1所示。
2.条件循环WHILE格式:WHILE条件表达式条件成立循环执行的语句ENDW功能:条件成立执行WHILE与ENDW之间的程序,然后返回到WHILE再次判断条件,直到条件不成立才跳到ENDW后面。
WHILE语句的执行流程如图 1 所示。
例:#2=30WHILE #2 GT 0 ;如果#2>0G91G01X10 ;成立就执行#2=#2-3 ;修改变量,ENDW ;返回G90 G00 z50 ;不成立跳到这里执行WHILE中必须有“修改条件变量”的语句,使得其循环若干次后,条件变为“不成立”而退出循环,不然就成为死循环。
图1 流程控制四.子程序及参数递传1.普通子程序普通子程序指没有宏的子程序,程序中各种加工的数据是固定的,子程序编好后,子程序的工作流程就固定了,程序内部的数据不能在调用时“动态”地改变,只能通过“镜像”、“旋转”、“缩放”、“平移”来有限的改变子程序的用途。
例%4001G01 X80 F100 M99子程序中数据固定,普通子程序的效能有限。
2.宏子程序宏子程序可以包含变量,不但可以反复调用简化代码,而且通过改变IF…ELSE …ENDIF 流程图IF …ENDIF 流程图WHILE …ENDW 流程图变量的值就能实现加工数据的灵活变化或改变程序的流程,实现复杂的加工过程处理。
例%4002G01 Z[#1] F[#50] ;Z坐标是变量;进给速度也是变量,可适应粗、精加工。