宏程序基础知识资料
宏程序
![宏程序](https://img.taocdn.com/s3/m/0c012c2acfc789eb172dc807.png)
17/57
工程实训中心
工程实训中心
12/57
五、 宏程序实例 2.加工半球体 2.加工半球体 (1)编程思路: (1)编程思路:加工半球体据图可知加工的回转面为直 编程思路 角三角形,因此可采用勾股定理建立模型。 角三角形,因此可采用勾股定理建立模型。
13/57
工程实训中心
五、 宏程序实例 (2)加工半球体程序: 加工半球体程序:
工程实训中心
3.加工半球体型腔 3.加工半球体型腔 (1)编程思路:采用三角函数关系进行建模, (1)编程思路:采用三角函数关系进行建模,对球体半 编程思路 落刀点深度、 径、落刀点深度、刀心点位置之间建立三角函数关系 进行加工。 进行加工。
15/57
工程实训中心
(2)加工半球体型腔程序: 加工半球体型腔程序:
3/57
工程实训中心
二、变量与赋值 2.变量与赋值 2.变量与赋值 变量的表示:一个变量由#符号和变量组成, (1)变量的表示:一个变量由#符号和变量组成,如#I I=1, ……),可为数值或表达式。 ),可为数值或表达式 (I=1,2,3,……),可为数值或表达式。 (2)变量的赋值:将跟随在地址后的数值用变量来 变量的赋值: 代替, G01X#100Y-#101F#102”, #100=80.、 代替,例“G01X#100Y-#101F#102”,当#100=80.、 #101=50.、#102=150时 G01X80Y-50F150”。 #101=50.、#102=150时,即“G01X80Y-50F150 。 #1~ (3)变量的种类:局部变量 #1~#33 变量的种类: 公共变量 #100~#149(#199) #100~#149(#199) #500~#549(#999) #500~#549(#999) 系统变量 #1000以上 #1000以上
宏程序基础知识
![宏程序基础知识](https://img.taocdn.com/s3/m/e9a752dd4693daef5ef73d3e.png)
瑞鹄汽车模具有限公司内部教材第一章宏程序基础知识第一节常量与变量的含义常量与变量的含义及编程案例数控程序中含有变量的程序称为宏程序。
虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。
常量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。
变量使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100G01 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未定义的变量当变量值未定义时,这样的变量成为空变量。
宏程序入门基础学习资料
![宏程序入门基础学习资料](https://img.taocdn.com/s3/m/b86a8d912e3f5727a4e9623c.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/4cd0158cbb4cf7ec4bfed029.png)
瑞鹄汽车模具有限公司内部教材第一章第一节宏程序基础知识常量与变量的含义常量与变量的含义及编程案例数控程序中含有变量的程序称为宏程序。
虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。
常量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。
变量使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100G01 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未定义的变量当变量值未定义时,这样的变量成为空变量。
宏程序基本知识
![宏程序基本知识](https://img.taocdn.com/s3/m/b387578f0129bd64783e0912a216147917117ed3.png)
程序
G54G17G90G40
G00Z30M03S2000 定位于G54上方30mm处
X=R24Y=R25 移动刀具至圆心上方
AA:Z=-R4+1
接近工件
R4=R4+R17
指定当前加工高度
G01Z=-R4F50 下刀至加工位置
L10
调用子程序加工当前层
IF R4<R2-R17 GOTOB AA 如果当前加工深度比预定的还少一个层间距以上时,
G03I=-R8
逆时针走全圆
IF R8<R6-R5 GOTOB BB当当前偏移距离比最大走圆半径还少一个行距以上
时,继续加工
G01X=R24+R6
否则刀具移动到最大圆的走刀起点
G03I=-R6
逆时针走全圆
G00Z=-R4+0.5
提刀0.5mm
X=R24Y=R25
移动至孔的中心位置
RET
子程序结束,返回主程序
运算
控制指令
程序一般是顺序执行,使用控制指令起到控制程序流向的作用,常用的有下列三种: 1、无条件分支 格式:GOTOn 例:GOTO100,含义为程序转向N100程序段处。 2、条件分支 格式:IF[条件表达式]GOTOn 含义:若条件表达式成立,则程序转向段号为n的程序段处,否则继续执行下一句程序。 3、循环 格式:WHILE[条件表达式]DOm(m=1、2、3) ------- ENDm 含义:当条件满足时,招待WHILE与END之间的程序段,否则执行ENDm下一句程序段。
关量,电源关时不消失。 (3)系统变量(#2000~):如刀具补偿值#2000~#2200,工件偏置#5201~#5326. 3、变量的使用 在地址符(O、N、G、L、P及/除外)后接变量,如: F#1:如果#1=100.0,则表示F100 Z-#26:如果#26=3.0,则表示Z-3.0
Fanuc用户宏程序基础(NC车床)
![Fanuc用户宏程序基础(NC车床)](https://img.taocdn.com/s3/m/5d7d6892a1116c175f0e7cd184254b35eefd1a96.png)
Fanuc用户宏程序基础(NC车床)Fanuc用户宏程序基础1、概要2、变量的指定3、变量(1)局部变量(2)公共变量(3)系统变量4、运算指令5、控制指令6、利用机床内部传感器测外径时宏程序的组合方法以及步骤介绍7、<空>的灵活使用8、刀具最大磨损值作为寿命值9、机床外部测量以及输入输出端口1、概要宏程序对大家来讲都比较困难,即便是阅读了使用说明书。
的确,关于宏程序是有一些比较难以理解的部分,鉴于此种情况,这一次以简单实例并加以详细说明来解释何谓宏程序。
这个教材的对象是已经能够熟练掌握了NC加工编程的人员。
本资料作为参考,希望能够对大家有所帮助。
到现在为止,宏程序是基于NC语言,由主、子程序来组合而成。
说到宏程序和子程序的最大区别就是宏程序能够调用变量。
所以最近机器人、装载机无人化系统上应用到的内部外部测定、刀具破损、刀具寿命管理、负荷监视系统、工件判断等,像这些领域,宏程序就不得不被使用到了。
不管怎么样,总之原本是人进行的作业转由机床来进行,所以要必须方方面面都要考虑到。
另外,本资料针对的是FANUC 18T, 16T, 15T, 11T, 10T, 0T(用户宏程序B), Y ASNUC作为说明对象的。
2、变量指定关于宏变量的调用,请看下例。
(1)形状相同,尺寸不同的时候、各尺寸定义为A~D等变量;(2)刀尖的进给路线1~7的程序用宏程序来编制。
主程序宏程序(3)宏调用及变量指定G65 P9000 A(#1)B(#2)C(#3)D(#7)此命令为编集、输入A~D图面尺寸值,并执行跳转至(O9000)。
像上述程序中,A~D的内容即使更改,A~D也仍然使用对应的#1、#2、#3、#7变量(最初指定后就不能更改)。
这些常数都是分配给局部变量的。
与宏程序相关的指令,除了G65以外还有G66(宏模态调用)、G67(宏模态调用取消)。
如果定义G65,定义的宏程序只被调用一次;G66是模态调用指令,每次轴移动指令都调用宏程序,直到G67(取消模态调用)。
宏程序知识
![宏程序知识](https://img.taocdn.com/s3/m/424b67a165ce05087632134d.png)
• • • • •
编程举例 MARKE1:G0 G54 X0 Y0 Z100 D1 S600 M03 G0 X100 Y100 X0 Y0 · · ·
• 有条件跳转
• 用IF—条件语句表示有条件跳转。如果满足跳转条件,则进行跳转。 跳转目标只能是有标记符的程序段,此程序段必须位于该程序之内。 有条件跳转指令必须占用一个独立的程序段;在一个程序段中可以有 很多个条件跳转指令。使用了跳转指令后有时会使程序得到明显的简 化,使程序变得简练而简单。 • 编程格式和意义 • IF条件GOTOF 条件满足后,向前跳转(向程序结束的方向跳转) • IF条件GOTOB 条件满足后,向后跳转(向程序开始的方向跳转) • 编程举例 • IF R1>1 GOTOB MARKE1
• • • • •
G01 X=R4 Y=R5 R3=R3+1 由原来的R3加上1后赋值给新的R3 IF R3<=360 GOTOB MA1 判别椭圆加工是否结束,没有的话,就继续 G90G00Z20 M30
• 绝对跳转
• NC程序在运行时以写入时的顺序执行程序段。程序在运行时可以通过 插入程序跳转指令改变执行顺序。跳转目标只能是有标记符的程序段; 此程序须位于该程序内。绝对跳转指令必须占用一个独立的程序段。 • 编程格式和意义 • GOTOF 向前跳转(向程序结束的方向跳转) • GOTOB 向后跳转(向程序开始的方向跳转)
• 用户宏程序和普通程序的简要对比
宏程序 可以使用变量,并给 只能使用常量 变量赋值 常量之间不可以运算 变量之间可以运算 程序只能顺序执行, 程序运行可以跳转 不能跳转 普通程序
计算参数R
• • • • • • • 1、编程格式 R0= ~R299= 2、值的指定 可以在以下范围内给算术参数赋值:±(0.000 0001~9999 9999) 整数值小数点可省略,正好也可以一并省去。 举例:R1=10 3、给其他的地址赋值 举例:G00 X=R1 给X轴赋值
宏程序基础
![宏程序基础](https://img.taocdn.com/s3/m/a8b40db1c8d376eeaeaa31cb.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/540e75355901020207409ce0.png)
数控宏程序编程,是用变量的方式进行数控编程的方法。
数控宏程序分为A类和B类宏程序,其中A类宏程序比较老,编写起来也比较费时费力,B类宏程序类似于C语言的编程,编写起来也很方便。
不论是A类还B类宏程序,它们运行的效果都是一样的。
一般说来,华中的数控机床用的是B类宏程序,广州数控机床用的是A类宏程序。
优点1.可以编写一些非圆曲线,如宏程序编写椭圆,双曲线,抛物线等。
2.编写一些大批相似零件的时候,可以用宏程序编写,这样只需要改动几个数据就可以了,没有必要进行大量重复编程。
使用方法A类宏程序1)变量的定义和替换#i=#j编程格式G65 H01 P#i Q#j例G65 H01 P#101 Q1005;(#101=1005)G65 H01 P#101 Q-#112;(#101=-#112)2)加法#i=#j+#k编程格式G65 H02 P#i Q#j R#k例G65 H02 P#101 Q#102 R#103;(#101=#102+#103) 3)减法#i=#j-#k编程格式G65 H03 P#i Q#j R#k例G65 H03 P#101 Q#102 R#103;(#101=#102-#103) 4)乘法#i=#j×#k编程格式G65 H04 P#i Q#j R#k例G65 H04 P#101 Q#102 R#103;(#101=#102×#103) 5)除法#i=#j / #k编程格式G65 H05 P#i Q#j R#k例G65 H05 P#101 Q#102 R#103;(#101=#102/#103)6)平方根#i=编程格式G65 H21 P#i Q#j例G65 H21 P#101 Q#102;(#101= )7)绝对值 #i=│#j│编程格式G65 H22 P#i Q#j例G65 H22 P#101 Q#102;(#101=│#102│)8)复合平方根1 #i=编程格式G65 H27 P#i Q#j R#k例G65 H27 P#101 Q#102 R#103;( #101=9)复合平方根2 #i=编程格式G65 H28 P#i Q#j R#k例G65 H28 P#101 Q#102 R#1031)逻辑或 #i=#j OR #k编程格式G65 H11 P#i Q#j R#k例G65 H11 P#101 Q#102 R#103;(#101=#102 OR #103) 2)逻辑与 #i=#j AND #k编程格式G65 H12 P#i Q#j R#k例G65 H12 P#101 Q#102 R#103;#101=#102 AND #103 (3)三角函数指令1)正弦函数#i=#j×SIN(#k)编程格式G65 H31 P#i Q#j R#k (单位:度) .例G65 H31 P#101 Q#102 R#103;(#101=#102×SIN(#103)) 2)余弦函数#i=#j×COS(#k)编程格式G65 H32 P#i Q#j R#k (单位:度)例G65 H32 P#101 Q#102 R#103;(#101=#102×COS(#103)) 3)正切函数#i=#j×TAN#k编程格式G65 H33 P#i Q#j R#k (单位:度)例G65 H33 P#101 Q#102 R#103;(#101=#102×TAN(#103)) 4)反正切#i=ATAN(#j/#k)编程格式G65 H34 P#i Q#j R#k (单位:度,0o≤#j ≤360o) 例G65 H34 P#101 Q#102 R#103;(#101=ATAN(#102/#103)(4)控制类指令编程格式G65 H80 Pn (n为程序段号)例G65 H80 P120;(转移到N120)2)条件转移1 #j EQ #k(=)编程格式G65 H81 Pn Q#j R#k (n为程序段号)例G65 H81 P1000 Q#101 R#102当#101=#102,转移到N1000程序段;若#101≠#102,执行下一程序段。
宏程序编程基础PPT课件
![宏程序编程基础PPT课件](https://img.taocdn.com/s3/m/7215c46ebe23482fb5da4c04.png)
SUCCESS
THANK YOU
2020/9/30
运算规律
SUCCESS
THANK YOU
2020/9/30
控制语句
说明
注意
用宏程序命令对变量进行赋值
赋值举例
O001
…
G65 P9010 L2 A1.0 B2.0 … M30
O9010
N10 #3=#1+#2 N20 IF[#3 GT 360] GOTO40
N30 G00 G91 X#3 N40 M99
宏程序基础知识
宏程序的定义和分类
1、概念 将一组存储器中,用一个命令作为代表,执 行时只需写出这个代表命令,就可以执行其功能。 这一组命令称做用户宏主(本)体(或用户宏程 序),简称为用户宏(Custom Macro)指令,这个 代表命令称为用户宏命令,也称作宏调用命令。 2、分类
用户宏程序功能有A、B两种类型。
A类宏程序简介
编写A类程序时,用到了Hm等宏功能指令。各Hm宏功能指令见表。
宏程序编程特征
注意: B类宏程序应用较为广泛,而A类很少使用,因
此,本节重点介绍B类宏程序,对A类宏程序不在 赘述。
在宏程序主题中使用变量
变量引用时的注意事项
变量的种类
变量的定义
宏程序的基本概念知识讲解
![宏程序的基本概念知识讲解](https://img.taocdn.com/s3/m/c45e08d7b307e87100f69617.png)
数控铣削宏程序编程(一)一、宏程序的基本概念1、宏程序的定义以一组子程序的形式存储并带有变量的程序称为用户宏程序,简称宏程序;调用宏程序的指令称为“用户宏程序指令”,或宏程序调用指令(简称宏指令)。
宏程序与普通程序相比较,普通的程序字为常量,一个程序只能描述一个几何形状,所以缺乏灵活性和适用性。
而在用户宏程序的本体中,可以使用变量进行编程,还可以用宏指令对这些变量进行赋值、运算等处理。
通过使用宏程序能执行一些有规律变化(如非圆二次曲线轮廓)的动作。
宏程序分A类和B类两种,FANUCi系统采用B类宏程序进行编程。
2、宏程序中的变量在常规的主程序和子程序内,总是将一个具体的数值赋给一个地址,为了使程序更加具有通用性、灵活性,故在宏程序中设置了变量。
1)、变量的表示:一个变量由符号“#”和变量序号组成,如:#I(I=1,2,……)。
此外,变量还可以用表达式进行表示,但其表达式必须全部写入方括号“[]”中。
例:#100,#500,#5,#[#1+#2+#10];2)、变量的引用:将跟随在地址符后的数值用变量来代替的过程称为引用变量。
同样,引用变量也可以用表达式。
例G01X#100 Y—#101F[#101+#103];当#100=100.0、#101=50.0、#103=80.0时,上例即表示为G01 X100.0 Y50.0 F130;3)、变量的种类:变量分为局部变量、公共变量(全局变量)和系统变量三种。
在A、B类宏程序中,其分类均相同。
A、局部变量(#1~#33)是在宏程序中局部使用的变量。
当宏程序C调用宏程序D而且都有变量#1时,由于变量#1服务于不同的局部,所以C中的#1与D中的#1不是同一个变量,因此可以赋予不同得不偿失值,且互不影响。
关闭电源时,局部变量被初始化成“空”。
宏调用时,自变量分配给局部变量。
B、公共变量(#100~#149/#199;#500~#549/#599)贯穿于整个程序过程。
数控宏程序入门知识讲解
![数控宏程序入门知识讲解](https://img.taocdn.com/s3/m/b77a0913bdd126fff705cc1755270722182e5977.png)
数控宏程序入门知识讲解1,何为宏程序?用变量的方式进行数控编程的方法就叫做数控宏程序编程。
我们普通程序(如G01X100.Y100.F200)X,Y地址后面都是些常量,如果我们把这些常量用变量来编写如G01X#1 Y#2 F200,这就是我们所谓的宏程序。
备注*:FUNC系统是用#1,#2等等来表示变量的。
机床系统不同表示的方式也不同,在这以FUNC系统为例)FUNC系统是用#1,#2等等来表示变量的。
即“#”和“数字”组成的。
如#1,#2……#33等。
这些#后面的数子1,2,3等等有什么含义吗?其实它只是宏变量的代号而已。
举个最简单的例子:如果有三个人,他们的名字都叫小李。
那么当你呼叫小李的时候,会发生一个问题,这三个人都会回答,但你其实只想喊其中的一个。
这就分不清了。
同理,#1 ,如果后面的数字都是一样,当系统使用#1的时候,它也会发生糊涂,到底让我用哪个呢?所以为了区分它们,就把后面的数字写成不同的,比如#1,#2,#3。
此时如果系统使用#1,就不会发生混乱了。
2,何为变量?,变量是一个会变化的量,与之对应的是常量。
(常量比如:1,2,22,65等等阿拉伯数字。
变量比如:#1,#2,#5等等,#1,#2的值到底是多少?因为它是变量,一个会变化量)。
3,变量是多少?比如把#1,#2等变量当做的银行卡,你往这些卡里存了多钱,那么这些卡里就有多钱(比如:往#1里面存了500元,此时#1就相当于500,又取走了300此时#1里面就有200)。
4,变量的赋值往#1里面存了500元等这么一个过程就叫变量赋值。
如果你不在往“#1“里面存钱,或取钱,那么#1就相当于500.也就是说#1不发生运算的情况下就是500.如果有这么一个程序段G0X#1,也就等同于此程序段G0X500.那么变量在数控机床中是怎么赋值的呢?,格式如下:(机床中的赋值中文解释备注)#5=100把100这个数值赋给变量#5把常量赋给了#5#1=#1-1把#1-1这个运算结果赋值给#1把表达式结果赋值给了#1#6= [#11 #15 3]把[#11 #15 3]这个表达式的运算结果赋值给#6把表达式结果赋值给了#65,宏程序IF…GOTO语句直观意思是:如果...就跳转到哪(或者是做什么事)。
项目五宏程序基本知识.
![项目五宏程序基本知识.](https://img.taocdn.com/s3/m/30c50f6e02768e9951e738e0.png)
1.用户宏程序概念
一组以子程序的形式存储并带有变量的程序称为用户宏程序,简称宏程 序;调用宏程序的指令称为“用户宏程序指令”或宏程序调用指令(简称 宏指令)。 宏程序与普通程序相比较,普通程序的程序字为常量,一个程序只能描 述一个几何形状,所以缺乏灵活性和适用性。而在用户宏程序的本体中, 可以使用变量进行编程,还可以用宏指令对这些变量进行赋值、运算等处 理。通过使用宏程序能执行一些有规律变化(如非圆二次曲线轮廓)的动 作。 用户宏程序分为A、B两类,FANUC 0i系统则采用B类宏程序
#i LT #j
#i LE #j
小于(< )
小于等于(≤)
IF [#5 LT #6] GOTO 20
IF [#5 LE #6] GOTO 20
任务二 宏程序的基本知识
(3)循环语句 格式:WHILE [条件表达式] DO m;(m=1、2、3)
„„
END m; 当条件满足时,就循环执行WHILE与END之间的程序段;当条件不满足时,就执行END m的下一个程序段。DO和END后的m是指定程序执行范围的标号。 例如:下面的程序计算数值1到10的总和。 O0001; #1=0; #2=1; WHILE [#2 LE 10] DO 1; #1=#1+#2; #2=#2+1; END 1;
任务二 宏程序的基本知识
例:如图所示,用宏程序在指定位置切槽。 (却图) 调用宏程序的主程序: O0003; G50 X100.0 Z200.0; S1000 M03; G66 P9110 U5.0 F0.5; U表示槽深,F槽加工的进给速度
G00 X60.0 Z80.0;
Z50.0; Z30.0; G67;
第八章 宏程序简介
![第八章 宏程序简介](https://img.taocdn.com/s3/m/e8e583956bec0975f465e2ad.png)
(2) 条件运算符 EQ(=),NE(≠),GT(>),GE(≥) , LT(<),LE(≤) (3) 逻辑运算符 AND, OR, NOT (4) 函数 SIN, COS, TAN ,ATAN ,ATAN2, ABS,INT, SIGN, SQRT, EXP (5) 表达式 用运算符连接起来的常数,宏变量构成表达 式。 例如:175/SQRT[2] * COS[55 * PI/180 ]; #3*6 GT 14 表8-3 各系统使用的条件运算符
华中世纪星
FANUC 0i
定义变量 #10=50.0 #10=50.0 变量引用 G01 X[#10] G01 X#10 改变引用 变量的值 G01 X[-#10] G01 X-#10 G01 X=-R10 的符号 (3)变量的类型 FANUC-0iM系统的变量分为公共变量和系统 变量两类。 1)局部变量 局部变量只能用在宏程序中存 储数据,例如,运算结果。当断电时,局部变 量被初始化为空。调用宏程序时,自变量对局
SINUMERIK 802D R10=50.0 G01 X=R10
变量赋值。 局部变量的序号为:#1~ #33 2)公共变量 公共变量是在主程序和主程序 调用的各用户程序内公共的变量。也就是说,在 一个宏指令中的#i与在另一个宏指令中的#i是相 同的. 公共变量的序号为:#100~#199;#500~#599。 其中#100~199公共变量在电源断电后即清零, 重新开机时被设置为“0”;#500~#599公共变量 即使断电后,它们的值也保持不变,因此也称保 持型变量。 3)系统变量 系统变量定义为:有固定用途 的变量。它的值决定系统的状态。系统变量包括
第三节
常用宏指令及其应用实 例
一、赋值语句 把常数或表达式的值送给一个宏变量 称为赋值。在赋值语句中先计算,然后再赋值。 格式:宏变量=常数或表达式 例如: #2 = 175/SQRT[2]*COS[55*PI/180 ]; #3 = 124.0 表8-5 各系统赋值语句的格式 赋值语法 系统 常数 表达式 华中世纪星 #10=50.0 #21=180*SIN[20]+#10 FANUC 0i #10=50.0 #21=180*SIN[20]+#10
搞懂宏程序的编程基础快速入门!
![搞懂宏程序的编程基础快速入门!](https://img.taocdn.com/s3/m/1f07a497336c1eb91b375d4c.png)
1. 什么场合会用到宏程序编程?其实说起来宏就是用公式来加工零件,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加一个量,那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用。
手工编程加工公式曲线(计算简单,输入快捷)有规律的切削路径(作为一个切削模块)程序间的控制(程序的调度)刀具的管理(刀具的磨损)自动测量(机内测头)2. 什么叫宏程序?在编程时,我们会把能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来调用它们,使用时只需给出这个总指令就能执行其功能所存入的这一系列指令称作用户宏程序本体,简称宏程序。
这个总指令称作用户宏程序调用指令。
在编程时,编程员只要记住宏指令而不必记住宏程序。
3. 用户宏程序与普通程序的区别1)在用户宏程序本体中,能使用变量,可以给变量赋值,变量间可以运算,程序可以跳转。
2)普通程序中,只能指定常量,常量之间不能运算,程序只能顺序执行,不能跳转,因此功能是固定的,不能变化。
3)用户宏功能是用户提高数控机床性能的一种特殊功能,在相类似工件的加工中巧用宏程序将起到事半功倍的效果。
4. 变量的三种类型数控系统变量表示形式为“#”后跟1~4位数字,变量种类有三种:(1)局部变量:#1~#33是在宏程序中局部使用的变量,它用于自变量转移。
(2)公用变量:用户可以自由使用,它对于由主程序调用的各子程序及各宏程序来说是可以公用的。
#100~#149在关掉电源后,变量值全部被清除,而#500~#509在关掉电源后,变量值则可以保存。
(3)系统变量:由后跟4位数字来定义,它能获取包含在机床处理器或NC内存中的只读或读/写信息,包括与机床处理器有关的交换参数、机床状态获取参数、加工参数等系统信息。
5. 宏程序的特点宏程序可使用变量,可用变量执行相应操作;实际变量值可由宏程序指令赋给变量。
宏程序基础知识
![宏程序基础知识](https://img.taocdn.com/s3/m/bebda06dddccda38376bafa9.png)
宏程序基础知识针对目前很多同行兄弟对宏程序不了解,本人按照自己的经验,循序渐进的引导大家去揭开宏程序的真实面目。
当然,想通过我这篇文章完全掌握宏那是不可能的,因为这需要你实际去多应用,才可能掌握的。
所以如果你想一步到位,那可以关闭本文了,本文没有这功效,如果你还有一点想法,那就开始吧,一步一步告诉你怎么样去编辑和应用宏程序:1相对编程O0001G0 X0 Z0G1 U1 W1 G98 F100M30定位到X0 Z0位置后,X/Z轴均相对插补1,终点坐标为X1 Z1,程序结束。
2相对编程重复执行同样的程序段O0002G0 X0 Z0G1 U1 W1 G98 F100U1 W1M30定位到X0 Z0位置后,X/Z轴相对插补1后,再相对插补1,终点坐标为X2 Z2,程序结束。
3调用子程序重复执行同样的程序段O0003(程序1)G0 X0 Z0N10 G1 U1 W1 G98 F100M99 P10M30定位到X0 Z0位置后,X/Z轴相对插补1后,下一段为强制返回N10段,所以再相对插补1,然后又强制返回,所以本程序将一直插补,不能结束。
O0004(程序2)G0 X0 Z0N10 G1 U1 W1 G98 F100IF #5041=10 GOTO 20(当X轴坐标=20,跳到N20段,如果不等于20,顺序执行)M99 P10N20 M30本程序与O0003程序的区别是在M99强制返回前加了一段判断语句,该判断句的意思是如果#5041=10(#5041是一个系统宏变量,表示当前X轴坐标,不同系统处理可能不同,这里仅做示例),则跳到N20段执行,如果不等于10,则顺序执行。
从程序中可以看出:第一次插补后,X轴坐标为1,不符合该判断条件,所以顺序执行下一段M99 P10,此段又将程序返回到插补段执行,执行完为X2,也不符合条件,就这样重复执行插补,直到X轴插到10,则符合条件,跳到N20段执行,结束程序,终点坐标为X10 Z10。
宏程序基础知识资料
![宏程序基础知识资料](https://img.taocdn.com/s3/m/054b69f4dd3383c4bb4cd281.png)
第一章宏程序基础知识第一节常量与变量的含义常量与变量的含义及编程案例数控程序中含有变量的程序称为宏程序。
虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。
常量普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。
变量使用用户宏程序时,数值可以直接指定或用变量指定。
当用变量时,变量值可用程序或用MDI面板上的操作改变。
#1=#2+100G01 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未定义的变量当变量值未定义时,这样的变量成为空变量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
系统变量用于读和写的各种数据,例如刀具补偿,当前位置信息,
变量的引用
为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。 例如:G01X[#12]3;
被引用变量的值根据地址的最小设定单位自动地舍入。
例如: 当G001;以1/1000的单位执行时,把123456赋值给变量#1,实际指令值为G00X12346.
变量号
功能
#3000
当#3000中有0~99间的某一值时,停止并显示报警信息。报警信息不超过26个字符,
例:#3000=1( );
报警屏幕显示“3001 。”
时间信息:
时间信息可以读写。
用于时间信息的系统变量:
变量号
功能
#3001
这个变量是一个以1毫秒为增量一直记数的记时器,上电或达到65535毫秒时复值为0。
改变引用变量的值的符号,要把负号(-)放在#的前面。例如:G00X-#1
当引用未定义的变量时,变量及地址都被忽略。例如:当变量#1的值是0,并且变量#2的值是空时,G001 2的执行结果为G00X0
未定义的变量当变量值未定义时,这样的变量成为空变量。变量#0总是空变量。它不能写,只能读。
当#1= (空)时
进给保持按钮按下又释放时,进给保持灯亮,但机床不停止;程序继续进行,机床停在最先含有进给保持使能的段。
☆当进给倍率无效时,倍率定在100%,忽略机床操作面板上的倍率开关。
☆当精确停止无效时不执行精确停止检查(定位检查),即使是包含有不执行切削的段。
☆例如G84攻丝循环时进给速度,转速,单段操作都无效,其内部程序就指定了#3003=3
用于刀具补偿内存A的系统变量
补偿号
系统变量
1
:
200
#10001(#2001)
:
#10200(#2200)
用于刀具补偿内存B的系统变量
补偿号
几何补偿
磨损补偿
1
:
200
#11001(#2201)
:
#11200(#2400)
#10001(#2001)
:
#10200(#2200)
宏报警:
用于宏报警的系统变量:
#3004=7
模态信息:
表中指定的模信息可以读出。见下表:
变量号
功能
#4001
G00,G01,G02,G03,G33
(01组)
#4002
G17,G18,G19
(02组)
#4003
G90,G91
(03组)
#4004
(04组)
#4005
G94,G95
(05组)
#4006
G20,G21
(06组)
#4007
#3002
这个变量是一个以1小时为增量、当循环启动灯亮时记数的记时器,电源关闭后记时器值依然保持,达到1145324.612小时时复值为0。
#3011
这个变量用于读当前年/月/日数据,该数据以十进制数显示。例: 28,1993表示成19930328。
#3012
这个变量用于读当前时/分/秒数据,该数据以十进制数显示。例:下午3点34分56秒表示成153456。
2.局部变量:
#133
局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空. 调用宏程序时,自变量对局部变量赋值.
3.公共变量
#100199 #500999
公共变量在不同的宏程序中的意义相同.当断电时,变量#100199初始化为空.变量#500999的数据保存,即使断电也不丢失.
自动操作控制:
自动操作的控制状态可以改变。
自动操作控制的系统变量#3003
#3003
单段
辅助功能的完成
0
使能
要等待
1
无效
要等待
2
使能
不要等待
3
无效
不要等待
☆上电时该变量值为0。
☆当不能执行单段停止时,单段停止操作不能执行,即使单段开关有效。
☆当没有指定是否等待辅助功能(M、S、T)完成时,在辅助功能完成之前,程序执行到下一段,定位完成信号不发出。
G40,G41,G42
(07组)
#4008
G43,G44,G49
(08组)
#4009
G73,G74,G76,G8089
(09组)
#4010
G98,G99
(10组)
#4011
G50,G51
(11组)
#4012
G65,G66,G67
(12组)
#4014
G5459
(14组)
#4015
G6164
(15组)
#4016
G68,G69
(16组)
:
:
#4022
(22组)
#4102
B码
#4107
D码
#4109
第一章
第一节常量与变量的含义
常量与变量的含义及编程案例
数控程序中含有变量的程序称为宏程序。虽然子程序对编制相同的加工程序非常有用,但用户宏程序由于允许使用变量、算术和逻辑运算及条件转移,使得编制同样的加工程序更简便。
常量
普通加工程序直接用数值指定G代码和移动距离;例如,1和X100.0。
变量
使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用面板上的操作改变。
3Y200.0; 错误使用方法
系统变量
系统变量能些系统变量是只读变量。对于扩展自动化操作和一般的程序,系统变量是必须的。
刀具补偿值:
使用这类系统变量可以读写刀具补偿值。可用的变量数取决于能使用的补偿对数,当补偿对数不大于200时,可以用变量#20012400。
自动操作控制的系统变量#3004
#3004
进给保持
进给倍率
精确停止
0
使能
使能
使能
1
无效
使能
使能
2
使能
无效
使能
3
无效
无效
使能
4
使能
使能
无效
5
无效
使能
无效
6
使能
无效
无效
7
无效
无效
无效
☆上电时该变量值为0。
☆当不能执行进给保持时:
进给保持按钮按下并保持时,机床以单段停止方式停止,但单段方式若因变量#3003而无效时,不执行单段停止操作。
G90 X100 1实际与 G90 X100运行结果一样
当#1=0 时
G90 X100 1实际与 G90 X100 Y0 运行结果一样
运算
除了用<空>赋值以外,其余情况下<空>与0 相同。
限制程序号,顺序号和任选程序段跳转号不能使用变量。
例:
下面情况不能使用变量:
○#1; 错误使用方法
2G00X100.0; 错误使用方法
#1=#2+100
G01 1 F300
变量用变量符号(#)和后面的变量号指定。例如:#1
表达式可以用于指定变量号。此时,表达式必须封闭在括号中。例如:#[#12-12]
变量根据变量号可以分成四种类型 :1.空变量2.局部变量3.公共变量4.系统变量
1.空变量:
#0 该变量总是空,没有值能赋给该变量.