7.1.1 A类宏功能应用
用户宏功能是提高数控机床性能的一种特殊功能。使用中,通常把能完成某一功能的一系列指令像子程序一样存入存储器,然后用一个总指令代表它们,使用时只需给出这个总指令就能执行其功能。
用户宏功能主体是一系列指令,相当于子程序体。既可以由机床生产厂提供,也可以由机床用户自己编制。
宏指令是代表一系列指令的总指令,相当于子程序调用指令。
用户宏功能的最大特点是,可以对变量进行运算,使程序应用更加灵活、方便。
用户宏功能有A、B两类。
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,所有输入信号一次读入。
2.宏指令G65
宏指令G65可以实现丰富的宏功能,包括算术运算、逻辑运算等处理功能。
一般形式:G65 Hm P#i Q#j R#k
式中:
m——宏程序功能,数值范围01~99;
#I——运算结果存放处的变量名;
#j——被操作的第一个变量,也可以是一个常数;
#k——被操作的第二个变量,也可以是一个常数。
例如,当程序功能为加法运算时:
程序 P#100 Q#101 R#102…… 含义为#100=#101+#102
程序 P#100 Q-#101 R#102…… 含义为#100= −#101+#102
程序 P#100 Q#101 R15…… 含义为#100=#101+15
3.宏功能指令
(1)算术运算指令见表7-1。
表7-1 算术运算指令
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#103(#101=
(2)逻辑运算指令见表7-2。
表7-2 逻辑运算指令
1)逻辑或 #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)三角函数指令见表7-3。
表7-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(单位:度,0°≤ #j ≤360°)
例:G65 H34 P#101 Q#102 R#103;(#101=ATAN(#102/#103))
(4)控制类指令(见表7-4)
表7-4 控制类指令
1)无条件转移
编程格式 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,执行下一程序段。
3)条件转移2 #j NE #k(≠)
编程格式 G65 H82 Pn Q#j R#k(n为程序段号)
例:G65 H82 P1000 Q#101 R#102
当#101≠ #102,转移到N1000程序段;若#101=#102,执行下一程序段。
4)条件转移3 #j GT #k(> )
编程格式 G65 H83 Pn Q#j R#k(n为程序段号)
例:G65 H83 P1000 Q#101 R#102
当#101 > #102,转移到N1000程序段;若#101 ≤#102,执行下一程序段。
5)条件转移4 #j LT #k(<)
编程格式 G65 H84 Pn Q#j R#k(n为程序段号)
例:G65 H84 P1000 Q#101 R#102
当#101 < #102,转移到N1000;若#101 ≥ #102,执行下一程序段。
6)条件转移5 #j GE #k(≥)
编程格式 G65 H85 Pn Q#j R#k(n为程序段号)
例:G65 H85 P1000 Q#101 R#102
当#101≥ #102,转移到N1000;若#101<#102,执行下一程序段。
7)条件转移6 #j LE #k(≤)
编程格式 G65 H86 Pn Q#j Q#k(n为程序段号)
例:G65 H86 P1000 Q#101 R#102
当#101≤#102,转移到N1000;若#101>#102,执行下一程序段。
4.使用注意
为保证宏程序的正常运行,在使用用户宏程序的过程中,应注意以下几点:
(1)由G65规定的H码不影响偏移量的任何选择。
(2)如果用于各算术运算的Q或R未被指定,则作为0处理。
(3)在分支转移目标地址中,如果序号为正值,则检索过程是先向大程序号查找,如果序号为负值,则检索过程是先向小程序号查找。
(4)转移目标序号可以是变量。
5.用户宏程序应用举例
【例7-1】用宏程序和子程序功能顺序加工圆周等分孔。设圆心在O点,它在机床坐标系中的坐标为(X0,Y0),在半径为r的圆周上均匀地钻几个等分孔,起始角度为α,孔数为n。以零件上表面为Z向零点,见图7-1。
使用以下保持型变量:
#502:半径r;
#503:起始角度α;
图7-1 等分孔计算方法
#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坐标值;
用用户宏程序编制的钻孔子程序如下:
调用上述子程序的主程序如下:
O0010
设置G54:X= −400,Y= −100,Z= −50。变量#500~#507可在程序中赋值,也可由MDI方式设定。
【例7-2】根据以下数据,用用户宏程序功能加工圆周等分孔。
如图7-2所示,在半径为50mm的圆周上均匀地钻8个ф10的等分孔,第一个孔的起始点角度为30o,设圆心为O点,以零件的上表面为Z向零点。首先在MDI方式中,设定以下变量的值:
图7-2 等分孔应用举例
#502:半径r为50;
#503:起始角度α为30;
#504:孔数n为8;
#505:孔底Z坐标值为-20;
#506:R平面Z坐标值为5;
#507:F进给量为50。
加工程序为:
O6100
N10 G54 G90 G00 X0 Y0 Z20
N20 M98 P9010
N30 G00 G90 X0 Y0
N40 Z20
N50 M30
设置G54:X= −400,Y= −100,Z= −50
【例7-3】应用宏功能指令加工空间曲线
图7-3 空间曲线
有一空间曲线槽,由两条正弦曲线Y=35sinX和Z=5sinX迭加而成,刀具中心轨迹如图7-3所示。槽底为r=5mm的圆弧。为了方便编制程序,采用粗微分方法忽略插补误差来加工。以角度X为变量,取相邻两点间的X向距离相等,间距为0.5°,然后用正弦曲线方程Y=35sinX和Z=5sinX分别计算出各点对应的Y值和Z值,进行空间直线插补,以空间直线来逼近空间曲线。加工时采用球头铣刀(r=5mm)在一平面实体零件上铣削出这一空间曲线槽。加工坐标系设置见图7-4。
图7-4 曲线槽的加工坐标系及走刀路线图
设置保持型变量:
#500:Z向每次切入量为2mm;设置时输入“2000”;
#501:Y=35sinX的幅值为35mm,设置时输入“35000”;
#502:Z=5sinX的幅值为5mm,设置时输入“5000”;
#503:X的步距为0.5°时的终点值360°;设置时输入“360”。
设置操作型变量:
#100:X当前值,为度(°);
#110:Y坐标当前值,为mm;
#120:Z=5sinX的值,为mm;
#130:Z向每次进刀后的初始值,为mm;
#140:Z坐标当前值,为mm。
子程序O 0004:
主程序O0005:
在子程序O 0004中,N100~N130为计算当前点的X、Y和Z坐标。N140是按计算出的坐标值切削一段空间直线,用直线逼近空间曲线。N150为空间曲线结束的终点判别,以X=360°为终点,若没有到达,则返回N100再计算下一点坐标;若已到达,则结束子程序。
在主程序O 0005中,N60为调用三次O 0004子程序,每调用一次,Z坐标向负方向进2mm,分三次切出槽深。加工的走刀路线图见图7-4所示。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。