宏程序在数控编程中的应用.docx
- 文档编号:10274243
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:17
- 大小:75.99KB
宏程序在数控编程中的应用.docx
《宏程序在数控编程中的应用.docx》由会员分享,可在线阅读,更多相关《宏程序在数控编程中的应用.docx(17页珍藏版)》请在冰点文库上搜索。
宏程序在数控编程中的应用
第七章宏程序在数控编程中的应用
7.1概述
用户宏程序是以变量的组合,通过各种算术和逻辑运算、转移和循环等命令,而编制的一种可以灵活运用的程序,只要改变变量的值,即可完成不同的加工或操作。
用户宏功能是提高数控机床性能的一种特殊功能。
使用中,通常把能完成某一功能的一系列指令像子程序一样存入存储器,然后用一个总指令代表它们,使用时只需给出这个总指令就能执行其功能。
用户宏功能主体是一系列指令,相当于子程序体。
既可以由机床生产厂提供,也可以由机床用户自己编制。
宏指令是代表一系列指令的总指令,相当于子程序调用指令。
用户宏功能的最大特点是,可以对变量进行运算,使程序应用更加灵活、方便。
用户宏功能有A、B两类。
7.2A类宏程序
7.2.1变量
在常规的主程序和子程序内,总是将一个具体的数值赋给一个地址。
为了使程序更具通用性、更加灵活,在宏程序中设置了变量,即将变量赋给一个地址。
(1)变量的表示
变量可以用“#”号和跟随其后的变量序号来表示:
#i(i=1,2,3......)
例:
#5,#109,#501。
(2)变量的引用
将跟随在一个地址后的数值用一个变量来代替,即引入了变量。
例:
对于F#103,若#103=50时,则为F50;
对于Z-#110,若#110=100时,则Z为-100;
对于G#130,若#130=3时,则为G03。
(3)变量的类型
0MC系统的变量分为公共变量和系统变量两类。
1)公共变量
公共变量是在主程序和主程序调用的各用户宏程序内公用的变量。
也就是说,在一个宏指令中的#i与在另一个宏指令中的#i是相同的。
公共变量的序号为:
#100~#131;#500~#531。
其中#100~#131公共变量在电源断电后即清零,重新开机时被设置为“0”;#500~#531公共变量即使断电后,它们的值也保持不变,因此也称为保持型变量。
2)系统变量
系统变量定义为:
有固定用途的变量,它的值决定系统的状态。
系统变量包括刀具偏置变量,接口的输入/输出信号变量,位置信息变量等。
系统变量的序号与系统的某种状态有严格的对应关系。
例如,刀具偏置变量序号为#01~#99,这些值可以用变量替换的方法加以改变,在序号1~99中,不用作刀偏量的变量可用作保持型公共变量#500~#531。
接口输入信号#1000~#1015,#1032。
通过阅读这些系统变量,可以知道各输入口的情况。
当变量值为“1”时,说明接点闭合;当变量值为“0”时,表明接点断开。
这些变量的数值不能被替换。
阅读变量#1032,所有输入信号一次读入。
7.2.2宏指令G65
宏指令G65可以实现丰富的宏功能,包括算术运算、逻辑运算等处理功能。
一般形式:
G65HmP#iQ#jR#k
式中:
m--宏程序功能,数值范围01~99;
#i--运算结果存放处的变量名;
#j--被操作的第一个变量,也可以是一个常数;
#k--被操作的第二个变量,也可以是一个常数。
例如,当程序功能为加法运算时:
程序 P#100Q#101R#102...... 含义为#100=#101+#102
程序 P#100Q-#101R#102...... 含义为#100=-#101+#102
程序 P#100Q#101R15...... 含义为#100=#101+15
7.2.3宏功能指令
1.算术运算指令(表7.1)
表7.1算术运算指令
G码
H码
功能
定义
G65
H01
定义,替换
#i=#j
G65
H02
加
#i=#j+#k
G65
H03
减
#i=#j-#k
G65
H04
乘
#i=#j×#k
G65
H05
除
#i=#j/#k
G65
H21
平方根
#i=√#j
G65
H22
绝对值
#i=|#j|
G65
H23
求余
#i=#j-trunc﹙#j/#k﹚·#k
Trunc;丢弃小于1的分数部分
G65
H24
BCD码→二进制码
#i=BIN﹙#j﹚
G65
H25
二进制码→BCD码
#i=BCD﹙#j﹚
G65
H26
复合乘/除
#i=﹙#i×#j﹚÷#k
G65
H27
复合平方根1
#i=√#j2+#k2
G65
H28
复合平方根2
#i=√#j2-#k2
1)变量的定义和替换#i=#j
编程格式G65H01P#iQ#j
例G65H01P#101Q1005;(#101=1005)
G65H01P#101Q-#112;(#101=-#112)
2)加法#i=#j+#k
编程格式G65H02P#iQ#jR#k
例G65H02P#101Q#102R#103;(#101=#102+#103)
3)减法#i=#j-#k
编程格式G65H03P#iQ#jR#k
例G65H03P#101Q#102R#103;(#101=#102-#103)
4)乘法#i=#j×#k
编程格式G65H04P#iQ#jR#k
例G65H04P#101Q#102R#103;(#101=#102×#103)
5)除法#i=#j/#k
编程格式G65H05P#iQ#jR#k
例G65H05P#101Q#102R#103;(#101=#102/#103)
6)平方根#i=
编程格式G65H21P#iQ#j
例G65H21P#101Q#102;(#101=
)
7)绝对值#i=│#j│
编程格式G65H22P#iQ#j
例G65H22P#101Q#102;(#101=│#102│)
8)复合平方根1#i=
编程格式G65H27P#iQ#jR#k
例G65H27P#101Q#102R#103;(#101=
9)复合平方根2#i=
编程格式G65H28P#iQ#jR#k
例G65H28P#101Q#102R#103(#101=
2.逻辑运算指令(表7.2)
表7.2逻辑运算指令
G码
H码
功能
定义
G65
H11
逻辑“或”
#i=#j·OR·#k
G65
H12
逻辑“与”
#i=#j·AND·#k
G65
H13
异或
#i=#j·XOR·#k
1)逻辑或#i=#jOR#k
编程格式G65H11P#iQ#jR#k
例G65H11P#101Q#102R#103;(#101=#102OR#103)
2)逻辑与#i=#jAND#k
编程格式G65H12P#iQ#jR#k
例G65H12P#101Q#102R#103;(#101=#102AND#103)
3.三角函数指令(表7.3)
表7.3三角函数指令
G码
H码
功能
定义
G65
H31
正弦
#i=#j·SIN﹙#k﹚
G65
H32
余弦
#i=#j·COS﹙#k﹚
G65
H33
正切
#i=#j·TAN﹙#k﹚
G65
H34
反正切
#i=ATAN﹙#j/#k﹚
1)正弦函数#i=#j×SIN(#k)
编程格式G65H31P#iQ#jR#k(单位:
度)
例G65H31P#101Q#102R#103;(#101=#102×SIN(#103))
2)余弦函数#i=#j×COS(#k)
编程格式G65H32P#iQ#jR#k(单位:
度)
例G65H32P#101Q#102R#103;(#101=#102×COS(#103))
3)正切函数#i=#j×TAN#k
编程格式G65H33P#iQ#jR#k(单位:
度)
例G65H33P#101Q#102R#103;(#101=#102×TAN(#103))
4)反正切#i=ATAN(#j/#k)
编程格式G65H34P#iQ#jR#k(单位:
度,0o≤#j≤360o)
例G65H34P#101Q#102R#103;(#101=ATAN(#102/#103))
4.控制类指令(表7.4)
表7.4控制类指令
G码
H码
功能
定义
G65
H80
无条件转移
GOTOn
G65
H81
条件转移1
IF#j=#k,GOTOn
G65
H82
条件转移2
IF#j≠#k,GOTOn
G65
H83
条件转移3
IF#j>#k,GOTOn
G65
H84
条件转移4
IF#j<#k,GOTOn
G65
H85
条件转移5
IF#j≥#k,GOTOn
G65
H86
条件转移6
IF#j≤#k,GOTOn
G65
H99
产生PS报警
PS报警号500+n出现
1)无条件转移
编程格式G65H80Pn(n为程序段号)
例G65H80P120;(转移到N120)
2)条件转移1#jEQ#k(=)
编程格式G65H81PnQ#jR#k(n为程序段号)
例G65H81P1000Q#101R#102
当#101=#102,转移到N1000程序段;若#101≠#102,执行下一程序段。
3)条件转移2#jNE#k(≠)
编程格式G65H82PnQ#jR#k(n为程序段号)
例G65H82P1000Q#101R#102
当#101≠#102,转移到N1000程序段;若#101=#102,执行下一程序段。
4)条件转移3#jGT#k(>)
编程格式G65H83PnQ#jR#k(n为程序段号)
例G65H83P1000Q#101R#102
当#101>#102,转移到N1000程序段;若#101≤#102,执行下一程序段。
5)条件转移4#jLT#k(<)
编程格式G65H84PnQ#jR#k(n为程序段号)
例G65H84P1000Q#101R#102
当#101<#102,转移到N1000;若#101≥#102,执行下一程序段。
6)条件转移5#jGE#k(≥)
编程格式G65H85PnQ#jR#k(n为程序段号)
例G65H85P1000Q#101R#102
当#101≥#102,转移到N1000;若#101<#102,执行下一程序段。
7)条件转移6#jLE#k(≤)
编程格式G65H86PnQ#jQ#k(n为程序段号)
例G65H86P1000Q#101R#102
当#101≤#102,转移到N1000;若#101>#102,执行下一程序段。
7.2.4使用注意
为保证宏程序的正常运行,在使用用户宏程序的过程中,应注意以下几点;
(1)由G65规定的H码不影响偏移量的任何选择;
(2)如果用于各算术运算的Q或R未被指定,则作为0处理;
(3)在分支转移目标地址中,如果序号为正值,则检索过程是先向大程序号查找,如果序号为负值,则检索过程是先向小程序号查找。
(4)转移目标序号可以是变量。
7.2.5用户宏程序应用举例
例1:
用宏程序和子程序功能顺序加工圆周等分孔。
设圆心在O点,它在机床坐标系中的坐标为(X0,Y0),在半径为r的圆周上均匀地钻几个等分孔,起始角度为α,孔数为n。
以零件上表面为Z向零点。
见图7.1。
图7.1 等分孔计算方法
使用以下保持型变量:
#502:
半径r;
#503:
起始角度α;
#504:
孔数n,当n>0时,按逆时针方向加工,当n<0时,按顺时针方向加工;
#505:
孔底Z坐标值;
#506:
R平面Z坐标值;
#507:
F进给量。
使用以下变量进行操作运算:
#100:
表示第i步钻第i孔的记数器;
#101:
记数器的最终值(为n的绝对值);
#102:
第i个孔的角度位置θi的值;
#103:
第i个孔的X坐标值;
#104:
第i个孔的Y坐标值;
用用户宏程序编制的钻孔子程序如下:
O9010
N110G65H01P#100Q0 //#100=0
N120G65H22P#101Q#504 //#101=│#504│
N130G65H04P#102Q#100R360 //#102=#100×360o
N140G65H05P#102Q#102R#504 //#102=#102/#504
N150G65H02P#102Q#503R#102//#102=#503+#102当前孔角度位置θi=α+(360o×i)/n
N160G65H32P#103Q#502R#102 //#103=#502×COS(#102)当前孔的X坐标
N170G65H31P#104Q#502R#102 //#104=#502×SIN(#102)当前孔的Y坐标
N180G90G00X#103Y#104 //定位到当前孔(返回开始平面)
N190G00Z#506 //快速进到R平面
N200G01Z#505F#507 //加工当前孔
N210G00Z#506 //快速退到R平面
N220G65H02P#100Q#100R1 //#100=#100+1孔计数
N230G65H84P-130Q#100R#101//当#100<#101时,向上返回到130程序段
N240M99//子程序结束
调用上述子程序的主程序如下:
O0010
N10G54G90G00X0Y0Z20 //进入加工坐标系
N20M98P9010 //调用钻孔子程序,加工圆周等分孔
N30Z20 //抬刀
N40G00G90X0Y0 //返回加工坐标系零点
N50M30程序结束
设置G54:
X=-400,Y=-100,Z=-50。
变量#500~#507可在程序中赋值,也可由MDI方式设定。
例2:
根据以下数据,用用户宏程序功能加工圆周等分孔。
如图7.2:
在半径为50mm的圆周上均匀地钻8个ф10的等分孔,第一个孔的起始点角度为30o,设圆心为O点,以零件的上表面为Z向零点。
图7.2 等分孔应用举例
首先在MDI方式中,设定以下变量的值:
#502:
半径r为50;
#503:
起始角度α为30;
#504:
孔数n为8;
#505:
孔底Z坐标值为-20;
#506:
R平面Z坐标值为5;
#507:
F进给量为50。
加工程序为:
O6100
N10G54G90G00X0Y0Z20
N20M98P9010
N30G00G90X0Y0
N40Z20
N50M30
设置G54:
X=-400,Y=-100,Z=-50。
6、思考
如图7.3所示在边长为100毫米的正方形上钻8个孔,正方形的中心作为O点,Z向零点设在工件的上表面,孔深为35毫米,采用用户宏程序编写其加工程序。
图7.3例题图
7.3B类宏程序
如何使加工中心这种高效自动化机床更好地发挥效益,其关键之一,就是开发和提高数控系统的使用性能。
B类宏程序的应用,是提高数控系统使用性能的有效途径。
B类宏程序与A类宏程序有许多相似之处,因而,下面就在A类宏程序的基础上,介绍B类宏程序的应用。
宏程序的定义:
由用户编写的专用程序,它类似于子程序,可用规定的指令作为代号,以便调用。
宏程序的代号称为宏指令。
宏程序的特点:
宏程序可使用变量,可用变量执行相应操作;实际变量值可由宏程序指令赋给变量。
7.3.1基本指令
1、宏程序的简单调用格式
宏程序的简单调用是指在主程序中,宏程序可以被单个程序段单次调用。
调用指令格式:
G65 P(宏程序号) L(重复次数)(变量分配)
其中:
G65――宏程序调用指令
P(宏程序号)――被调用的宏程序代号;
L(重复次数)――宏程序重复运行的次数,重复次数为1时,可省略不写;
(变量分配)――为宏程序中使用的变量赋值。
宏程序与子程序相同的一点是,一个宏程序可被另一个宏程序调用,最多可调用4重。
2、宏程序的编写格式
宏程序的编写格式与子程序相同。
其格式为:
0 ~(0001~8999为宏程序号)//程序名
N10 ……//指令
.
.
N~M99//宏程序结束
上述宏程序内容中,除通常使用的编程指令外,还可使用变量、算术运算指令及其它控制指令。
变量值在宏程序调用指令中赋给。
3、变量
(1)变量的分配类型I
这类变量中的文字变量与数字序号变量之间有如表7.5确定的关系。
表7.5文字变量与数字序号变量之间的关系
A #1
I #4
T #20
B #2
J #5
U #21
C #3
K #6
V #22
D #7
M #13
W #23
E #8
Q #17
X #24
F #9
R #18
Y #25
H #11
S #19
Z #26
上表中,文字变量为除G、L、N、O、P以外的英文字母,一般可不按字母顺序排列,但I、J、K例外;#1~#26为数字序号变量。
例:
G65 P1000A1.0 B2.0 I3.0
则上述程序段为宏程序的简单调用格式,其含义为:
调用宏程序号为1000的宏程序运行一次,并为宏程序中的变量赋值,其中:
#1为1.0,#2为2.0,#4为3.0。
(2)变量的级别
1)本级变量#1~#33
作用于宏程序某一级中的变量称为本级变量,即这一变量在同一程序级中调用时含义相同,若在另一级程序(如子程序)中使用,则意义不同。
本级变量主要用于变量间的相互传递,初始状态下未赋值的本级变量即为空白变量。
2)通用变量#100~#144,#500~#531
可在各级宏程序中被共同使用的变量称为通用变量,即这一变量在不同程序级中调用时含义相同。
因此,一个宏程序中经计算得到的一个通用变量的数值,可以被另一个宏程序应用。
4、算术运算指令
变量之间进行运算的通常表达形式是:
#i =(表达式)
(1)变量的定义和替换
#i =#j
(2)加减运算
#i =#j + #k//加
#i =#j - #k //减
(3)乘除运算
#i =#j ╳ #k //乘
#i =#j ╱ #k //除
(4)函数运算
#i =SIN[#j] //正弦函数(单位为度)
#i =COS[#j] //余函数(单位为度)
#i =TANN[#j] //正切函数(单位为度)
#i =ATANN[#j]╱ #k //反正切函数(单位为度)
#i =SQRT[#j] //平方根
#i =ABS[#j] //取绝对值
(5)运算的组合
以上算术运算和函数运算可以结合在一起使用,运算的先后顺序是:
函数运算、乘除运算、加减运算。
(6)括号的应用
表达式中括号的运算将优先进行。
连同函数中使用的括号在内,括号在表达式中最多可用5层。
5、控制指令
(1)条件转移
编程格式:
IF [条件表达式] GOTO n
以上程序段含义为:
1)如果条件表达式的条件得以满足,则转而执行程序中程序号为n的相应操作,程序段号n可以由变量或表达式替代;
2)如果表达式中条件未满足,则顺序执行下一段程序;
3)如果程序作无条件转移,则条件部分可以被省略。
4)表达式可按如下书写:
#j EQ #k 表示=
#j NE #k 表示≠
#j GT #k 表示>
#j LT #k 表示<
#j GE #k 表示≥
#j LE #k 表示≤
(2)重复执行
编程格式:
WHILE [条件表达式]DOm(m = 1,2,3)
.
.
.
ENDm
上述“WHILE…ENDm”程序含意为:
1)条件表达式满足时,程序段DOm至ENDm即重复执行;
2)条件表达式不满足时,程序转到ENDm后处执行;
3)如果WHILE [条件表达式]部份被省略,则程序段DOm至ENDm之间的部份将一直重复执行;
注意:
1)WHILE DOm和ENDm必须成对使用;
2)DO语句允许有3层嵌套,即:
DO 1
DO 2
DO 3
END 3
END 2
END 1
3)DO语句范围不允许交叉,即如下语句是错误的:
DO 1
DO 2
END 1
END 2
以上仅介绍了B类宏程序应用的基本问题,有关应用详细说明,请查阅FANUC-0i系统说明书。
7.3.2应用举例
如图7.4所示的圆环点阵孔群中各孔的加工,我们曾经用A类宏程序解决过这类问题,这里再试用B类宏程序方法来解决问题:
图7.4圆环点阵孔群的加工
宏程序中将用到下列变量:
#1――第一个孔的起始角度A,在主程序中用对应的文字变量A赋值;
#3――孔加工固定循环中R平面值C,在主程序中用对应的文字变量C赋值;
#9――孔加工的进给量值F,在主程序中用对应的文字变量F赋值;
#11――要加工孔的孔数H,在主程序中用对应的文字变量H赋值;
#18――加工孔所处的圆环半径值R,在主程序中用对应的文字变量R赋值;
#26――孔深坐标值Z,在主程序中用对应的文字变量Z赋值;
#30――基准点,即圆环形中心的X坐标值XO;
#31――基准点,即圆环形中心的Y坐标值YO;
#32――当前加工孔的序号i;
#33――当前加工第i孔的角度;
#100――已加工孔的数量;
#101――当前加工孔的X坐标值,初值设置为圆环形中心的X坐标值XO;
#102――当前加工孔的Y坐标值,初值设置为圆环形中心的Y坐标值YO。
用户宏程序编写如下:
O8000
N8010 #30=#101 //基准点保存
N8020#31=#102 //基准点保存
N803
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 数控 编程 中的 应用