宏程序编程知识
数控车床华中系统用户宏程序编程

③系统变量:系统变量为#1000~#1199,它能获取包含在机床处理器或NC内存 中的只读或读/写信息,包括与机床处理器有关的交换参数、机床状态获取参 数、加工参数等系统信息
格式(ii) : IF 条件表达式 … ENDIF
.
7
5、 循环语句WHILE,ENDW
❖ 格式:WHILE 条件表达式 ❖… ❖ ENDW
.
8
6、 宏程序/子程序调用的参数传递规则
❖ G 代码在调用宏(子程序或固定循环, 下同)时,系统会将当前程序段各字 段(A~Z共26个字段,如果没有定义 则为零)的内容拷贝到宏执行时的局 部变量#0 ~ #25,同时拷贝调用宏时 当前通道九个轴(轴0~轴8)的绝对 位置(机床绝对坐标)到宏执行时的局 部变量#30 ~ #38。 ❖ 宏程序的调用格式为: ❖ M98 P(宏程序名)<变量赋值> ❖ 或G65 P(宏程序名)<变量赋值>。
.
12
用户宏程序训练
.
13
数控车削加工中公式曲线宏程序编程模板的 应用
一、公式曲线宏程序编程模板的原理和使用步骤 1、如何选定自变量 1)公式曲线中的X和Z坐标任意一个都可以被定义为自变量
2)一般选择变化范围大的一个作为自变量,如图1 ★ 3)根据表达式方便情况来确定X或Z作为自变量,如图3★
4)为了表达方便,在这里将和X坐标相关的变量设为#1、 #11、#12等,将和Z坐标相关的变量设为#2、#21、#22等。 际中变量的定义完全可根据个人习惯进行定义
❖ 分别用宏变量#1、#2代替上式中的X、Z,即得因变量#1相 对于自变量#2的宏表达式:
宏程序入门基础学习资料

宏程序入门基础学习资料其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出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程序段,如果不符合就继续执行下面的程序段.用户宏程序能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。
宏程序编程例子入门

宏程序编程例题椭圆解析:椭圆关于中心、坐标轴都是对称的,坐标轴是对称轴,原点是对称中心;对称中心叫做椭圆中心;椭圆和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。
数控车宏程序编程讲解

矩形螺纹
刀具
• 12. [矩形螺纹].
• 编程:
• O0001:(主程序) O0002: (子程序)
• N1 T0202 G99; G0 U–0.3; G0 U10; U–10;
• N2 M3 S200;
G32 Z–55 F12; Z14; M99;
• N3 G0 X82 Z12; G0 U10;
数控车床(宏程序)编程
特形零件练习
正切曲线方程:
椭圆
抛物线方程:
椭圆
双头螺纹.
材料:45#刚. 毛坯: 50*140.
华中系统(宏程序)编程
• 1. 图1.
方向
右偏刀
1.
• 抛物线方程:– X*X/10. • ①以(X轴)作变量. • 编程: • O0001; • N1 #1= 0; (X轴的起点) • N2 WHILE #1 LE [10]; (X轴的终点). • N3 #2= – #1*#1/10; (抛物线的公式) • N4 G01 X[2*#1] Z[#2]; (X,Z轴的坐标变量) • N5 #1= #1+0.1; (X轴的增量) • N6 ENDW; (调用返回) • ②以(Z轴)作变量. • 编程: • O0001; • N1 #1= 0; (Z轴的起点) • N2 WHILE #1 LE [10]; (Z轴的终点) • N3 #2= SQRT[#1*10]; (抛物线的公式) • N4 G01 X[2*#2] Z[–#1]; (X,Z轴的坐标变量) • N5 #1= #1+0.1; (Z轴的增量) • N6 ENDW; (调用返回)
图2.
方向
图2
右偏刀
• 2. 抛物线方程:–X*X/10. • ①以(X轴)作变量. • 编程: • O0001; • N1 #1= 0; • N2 #2= – #1*#1/10; • N3 G01 X[2*#1] Z[#2]; • N4 #1= #1+0.1; • N5 IF #1 LE [10] GOTO2; • ②以(Z轴)作变量. • 编程: • O0001; • N1 #1= 0; • N2 #2= SQRT[#1*10]; • N3 G01 X[2*#2] Z[–#1]; • N4 #1= #1+0.1; • N5 IF #1 LE [10] GOTO2;
宏程序

宏程序一、概念:含有变量的、能够根据设定数据变化而自行计算的,并运用的程序。
(一)格式:1、作为子程序的程序段。
2、作为结构化的子程序。
(用G65/G66调用)(二)分类:1、A类宏程序:调系统参数后调用即可。
2、B类宏程序:向用户开放的,自己编写的宏程序。
(三)步骤:1、工艺设计(刀具、走刀、流程)2、流程图:决定宏程序的思路,根据工艺进行设计。
二、常用指令(一)变量类型:1、局部变量:#1~#33可自由赋值,定义。
但在同一级程序中,同一个符号含义相同。
断电后初始化,清空不起作用,故称局部变量。
Ⅰ类地址宏变量Ⅰ类地址宏变量Ⅰ类地址宏变量A #1 J #5 V #22B #2 K #6 W #23C #3 M #13 X #24D #7 Q #17 Y #25E #8 R #18 Z #26F #9 S #19H #11 T #20I #4 U #21Ⅱ类地址宏变量Ⅱ类地址宏变量Ⅱ类地址宏变量A #1 J1#5 K2#9..B #2 K1#6 .......... #..........C #3 I2#7 J33#33I1#4 J2#8 K33#33使用过程中,Ⅰ类地址和Ⅱ地址可分开使用,也可以混合使用,在应用过程中,以后一个赋值为准,(即后指定的有效)CNC自动识别。
编程时I、J、K后的小数子角码不出现(CNC按顺序自动识别:I30、I50表示I1为30赋值#4,I2为50赋值于#7,即#4=30、#7=50)。
例:G65 P1000 I-3.0 I4.0 D5.0;含义为:调用O1000号子程序,其中的#4=-3.0,#7=5.0,(其中I4.0赋值#7=4.0、D5.0赋值#7=5.0,后一个有效,I4.0失效)。
2、公共变量:#100~#131、#500~#531。
在编程中,尽量避免使用公共变量,即使在不同的程序当中,同一变量含义相同,赋值也相同,在调用当中要千万小心。
3、系统变量:#2001~#2400、#11001~#12400(刀补)#4001~#4130、G、S、M等代码#5001~#5104;G54~G59等公共变量与系统变量一般都不用,重要学习的是基本Ⅰ、Ⅱ类变量的局部变量。
第6章 宏程序指令编程

例6-4 如图6-5所示,在立式加工中心上铣削内半球体。假 设大部分余量已通过预钻孔去除,现选用适当直径的球头铣刀 (φ12)对半球体进行精加工。若要用同一程序以及用不同半径的 球头铣刀加工不同半径的内球体,则对球体和球头铣刀的半径 用变量表示。若内球体半径为SR,铣削时刀具中心轨迹半径为 RP,球头铣刀半径为r,若每步铣刀沿着z向进刀的角度为α, 则图中刀具进给时刀具中心的坐标为: X=RPCOSα; Z= RPSINα; 主程序中使用如下程序段调 用宏程序: C65 Aa Bb Dd; ’ 其中: Aa:内球体半径(#1); Bb:球头铣刀半径(#2); Dd:每步进刀的角度(#7)。
6.1.1 变量
1、变量的表示
——(变量号i=0,1,2,3,4……) 例:#8、#110、#1100 #i ——表达式必须用括号括起来 例:#[#1+#2-12] #[表达 式] 2、变量的引用 例:F#10——当#10=20时,F20被指令。 <地址>#1 X- #20——当#20=100.时,X-100.被指令。 <地址> - #1 G#130——当#130=2时,G2被指令。
举例:求1到10之和。
O7200; #1=0; #2=1; WHILE [#2 LE 10] DO 1; #1 =#1+#2; #2=#2+1; END 1; M30;
6.2 数控车床宏程序指令编程
例6-1 加工如图6-1所示的槽
主程序为: 宏程序为:
应用调用指令:G66 P9110 U u F f 式中:u——槽深,增量值; f——槽加工的进给速度
系统变 量
固定用途的变 量
4、自变量的赋值 自变量赋值Ⅰ ——使用除去G、L、N、O、P以外的其他字母作为 地址。
加工中心宏程序编程入门讲解

加工中心宏程序编程入门讲解
一、宏程序编程的概念
宏程序编程是一种编程技术,它可以让程序员在编写程序时,使用一组特定的指令来实现某些功能。
宏程序编程的优点在于,它可以让程序员在编写程序时,使用更少的代码来实现更多的功能,从而提高程序的效率。
二、宏程序编程的基本原理
宏程序编程的基本原理是,程序员可以使用一组特定的指令来实现某些功能,而不是使用更多的代码。
宏程序编程的基本原理是,程序员可以使用一组特定的指令来实现某些功能,而不是使用更多的代码。
宏程序编程的基本原理是,程序员可以使用一组特定的指令来实现某些功能,而不是使用更多的代码。
宏程序编程的基本原理是,程序员可以使用一组特定的指令来实现某些功能,而不是使用更多的代码。
三、宏程序编程的应用
宏程序编程可以应用于各种编程语言,如C、C++、Java等,它可以用来实现自动化任务,如
自动生成代码、自动检查代码格式、自动更新文件等。
此外,宏程序编程还可以用于实现更复杂的功能,如自动生成报表、自动处理数据等。
宏程序编程

On the evening of July 24, 2021
宏程序应用
Courseware template
2、变量设置
变量名称
变量意义
#1
孔所在圆周半径 R
#2
均匀分布孔总个数 n
#3
第 i 个孔
第#4i 个 孔 的 孔 中 心 与 编 程 坐 标 X 轴 夹 角i
#10
第 i 个 孔 的 孔 中 心 X 坐 标 值xi
#11
第 i 个孔的孔中心 Y 坐标值 yi
#6
孔深度
#7
R 平面高度
On the evening of July 24, 2021
宏程序应用
Courseware template
3、宏程序
#1=50 #2=6 #3=1 #5=3.14159/180 #6=-20 #7=5 while#3LE#2 #4=360/#2*[#3-1]*#5 #10=#1*COS (#4) #11=#1* SIN (#4)
On the evening of July 24, 2021
Courseware template
2. 宏程序应用
例1
主程序:O0001 G40 G90 G92 X0 Y0 Z0 ; 确定坐标系;
N10 G65 P0002 A100 B120 C150 ;调用宏程序并赋初值;
N20 M30 ;
程序结束;
On the evening of July 24, 2021
四、分支和循环
Courseware template
在程序中可用GOTO语句和IF语句改变控制执行顺 序。
❖ 分支和循环操作共有三种类型:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
工件偏置量:G10 L2 P X Y Z (加工中心)。
G41X Y DG90G54P1G00X Y S M03G90G10L2P0X Y ZG10L1P RG10 P U V W C Q可编程参数入口:G10 L50………G11G10数据设置模式入口、L50可编程参数入口模式(固定的)N……P……R……指定参数入口(N=参数号,P=轴号,R=设置值)G11数据设置模式取消宏程序的调用:G65 P LG65P包含宏程序的程序号(存储为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-#13Q-#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 FUPROUND表示四舍五入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位信号#1133用于一次向PMC写入所有32位信号——-99999999到+99999999的数值可用于#1133 #2001through#2200 (A刀具补偿值)(B磨损偏置值)(H代码C)#2201through#2400(B几何偏置值)(H代码C)#2500表示沿X轴的外部工件偏置值。
#2501—G54 #2502-G55 #2503-G56#2504-G57 #2505-G58 #2506-G59#2600表示沿Y 轴的外部工件偏置值#2601—G54 #2602-G55 #2603-G56#2604-G57 #2605-G58 #2606-G59#2700表示沿Z轴的外部工件偏置值#2701—G54 #2702-G55 #2703-G56#2704-G57 #2705-G58 #2706-G59#2800表示沿第四轴的外部工件偏置值#2801—G54 #2802-G55 #2803-G56#2804-G57 #2805-G58 #2806-G59#3000用户宏程序产生报警#3001时钟1-单位1ms#3002时钟2-单位1h#3003单段控制,等待信号FIN#3004进给保持控制,技能给速度倍率控制,准确停止检查控制#3005设置#3011时钟信息—年月日#3012时钟信息—时分秒#4001至#4022模态信息预读程序段-G代码组#4102至#4130模态信息预读程序段-B,D,F,H,M,N,O,S,T,P代码#5001至#5008程序段结束位置#5021至#5028机床坐标位置#5041至#5048工件坐标位置(绝对位置)#5061至#5068跳跃信号位置21:10 2010-1-8#5081至#5088刀具长度补偿值#5101至#5108伺服系统偏置#5201至#5208外部工件偏置值#5221至#5228:G54工件偏置值#5241至#5248:G55工件偏置值#5261至#5268:G56工件偏置值#5281至#5288:G57工件偏置值#5301至#5308:G58工件偏置值#5321至#5328:G59工件偏置值用于模态命令的系统变量:#4001至#4022模态信息(G-代码组)系统变量G代码组G代码命令备注#4001 01 G00 G01 G02 G03 G33 注意G31属于00组#4002 02 G17 G18 G19#4003 03 G90 G91#4004 04 G22 G23#4005 05 G93 G94 G95#4006 06 G20 G21#4007 07 G40 G41 G42#4008 08 G43 G44 G45#4009 09 G73 G74 G76 G80 G81 G82 G83 G84 G85 G86 G87 G88 G89#4010 10 G98 G99#4011 11 G50 G51#4012 12 G65 G66 G67#4013 13 G96 G97#4014 14 G54 G55 G56 G57 G58 G59#4015 15 G61 G62 G63 G64#4016 16 G68 G69#4017 17 G15 G16#4018 18 N/A#4019 19 G40.1 G41.1 G42.1#4020 20 对FS-M和FS-T控制器的N/A#4021 21 N/A#4022 22 G50.1 G51.1高级CNC控制系统的典型G代码模态信息:预处理程序段:#4001到#4022执行程序段:#4201到#4222高级FANUC控制器的系统变量:系统变量号程序地址预处理程序段执行程序段#4102 #4302 B代码—分度轴位置#4107 #4307 D代码—刀具半径偏置号#4108 #4308 E代码—进给速度值(如果可用)#4109 #4309 F代码—进给速度值#4111 #4311 H代码—刀具长度偏置号#4113 #4313 M代码—辅助功能#4114 #4314 N代码—顺序号#4115 #4315 O代码—程序号#4119 #4319 S代码—主轴转速值#4120 #4320 T代码—刀具号#4130 #4330 P代码—附加工件偏置号变量的类型:空变量#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分支和循环:IF 函数:IF[条件为真]GOTO nIF[条件为真]THEN[语句]其中AND和OR 等的使用WHILE循环结构:WHILE[条件]DO n有单级嵌套、两级嵌套、三级嵌套。
报警#3000=xxx(xxxxxxxx等内容)宏程序中的定时器:#3001这是一个毫秒定是变量。
#3002是一个小时定时变量。
#3011是保持当前时间。
#3012是指示当前时间。
轴位置数据:ABSIO已编程的前面程序段的终点坐标,#5001到#5015分别对应第1轴到第15轴。
ABSMT机床位置,通常指当前的机床坐标,#5021到#5035分别对应第1轴到第15轴。
ABSOT绝对位置,通常指当前的绝对位置,#5041到#5055分别对应第1轴到第15轴。
ABSKP在G31程序段中执行跳跃运动时存储的相应位置,#5061到#5075分别对应第1轴到第15轴。
刀具偏置值范围#5081到#5095表示当前刀具偏置值,而不是上一个值。
解释系统变量#3007#3901已完成的零件数#3902 需要加工的零件数参数化(相似零件)的编程:外部输出:POPEN开启I/O设备 PCLOS关闭I/O设备BPRNT和DPRNT功能BPRNT是以位为单位输出,仅对数据有效DPRNT是以纯文本格式输出,数据或文本(ISO或ASCII文本)注意穿孔机可以是任何外部的RS-232设备关于G31的应用:基本用于测量用。
G代码宏程序调用—10个可用选项—G65 G66和G67除外。
FANUC 系统16/18/21参数号描述《有效数据位1—255》6050 G代码调用存储在程序O9010中的用户宏程序6051 G代码调用存储在程序O9011中的用户宏程序6052 G代码调用存储在程序O9012中的用户宏程序6053 G代码调用存储在程序O9013中的用户宏程序6054 G代码调用存储在程序O9014中的用户宏程序6055 G代码调用存储在程序O9015中的用户宏程序6056 G代码调用存储在程序O9016中的用户宏程序6057 G代码调用存储在程序O9017中的用户宏程序6058 G代码调用存储在程序O9018中的用户宏程序6059 G代码调用存储在程序O9019中的用户宏程序M代码子程序调用的9个选项:(设置值为:1到97)参数号SUB CALL M 代码调用6071 SUB CALL M 代码程序O9001中的子程序6072 SUB CALL M 代码程序O9002中的子程序6073 SUB CALL M 代码程序O9003中的子程序6074 SUB CALL M 代码程序O9004中的子程序6075 SUB CALL M 代码程序O9005中的子程序6076 SUB CALL M 代码程序O9006中的子程序6077 SUB CALL M 代码程序O9007中的子程序6078 SUB CALL M 代码程序O9008中的子程序6079 SUB CALL M 代码程序O9009中的子程序M代码宏程序调用—10个可用选项参数号描述《有效数据为1—97》6080 M代码调用存储在程序O9020中的用户宏程序6081 M代码调用存储在程序O9021中的用户宏程序6082 M代码调用存储在程序O9022中的用户宏程序6083 M代码调用存储在程序O9023中的用户宏程序6084 M代码调用存储在程序O9024中的用户宏程序6085 M代码调用存储在程序O9025中的用户宏程序6086 M代码调用存储在程序O9026中的用户宏程序6087 M代码调用存储在程序O9027中的用户宏程序6088 M代码调用存储在程序O9028中的用户宏程序6089 M代码调用存储在程序O9029中的用户宏程序#0空变量。
FANUC系统 0G代码宏程序调用—10个选项:参数号从220到229分别调用O9010到O9019中的宏程序。
M代码宏程序调用—10个选项:参数号从230到239分别调用O9020到O9029中的宏程序。
FANUC 系统10/11/15G代码宏程序调用—10个选项:参数号从7050到7059分别调用O9010到O9019中的宏程序。