曹智梅
(广东松山职业技术学院,广东 韶关 512126)
数控加工编程一般分为手工编程和自动编程。手工编程编制的程序简洁明了,识读性强,程序段少。自动编程通常是借助CAD/CAM软件来实现,其程序段多,占用内存大,可读性差。在近年的数控大赛中,数控车床、数控铣床和加工中心都包含椭圆曲线的加工。对于椭圆曲线,数控机床中并没有提供专门的加工指令。虽然现在越来越多的操作者喜好用CAD/CAM自动编程软件进行曲线的加工,但由于宏程序具有通用性好、易读性强、程序段短等优点,在数控加工中仍然占有非常重要的地位。
宏程序使用起来事半功倍,但在真正编写宏程序时,由于点的坐标表达较繁琐,编写过程中极易出错。本文借助VB软件,对椭圆加工参数进行了一般表达,将其长半轴、短半轴、加工刀具号、进给率、主轴转速、坐标位置和坐标旋转角度等多个参数设置为可输入的变量。当这些变量发生改变时,程序对应进行自动修改,大大减轻了编程人员的工作量,结合自动编程和手工编程的优势,在保证程序可读性的前提下,提高了程序的正确性和编写效率[1]。
采用宏程序加工椭圆时,一般采用椭圆参数方程。椭圆的参数方程为:x=acosθ,y=bsinθ。椭圆参数方程中的参数θ是宏程序的编程变量,它控制着椭圆曲线加工的起止点位置。方程中每一个θ对应于一个x和一个y,当θ从0°变化到360°时,就可以求出椭圆上插补点对应的(x,y)坐标,无论加工哪个象限的椭圆,仅需要用一个表达式来表达。
椭圆标准参数方程描述的椭圆中心刚好位于坐标原点,且椭圆的长半轴与X轴坐标重合。当椭圆的中心不与原点重合,且椭圆的长半轴与X轴逆时针成一定角度时,椭圆上点的坐标则需要进一步计算[2]。
椭圆图形位置如图1所示。图1a中,已知椭圆中心O′在XOY坐标系中的坐标值为(x0,y0),椭圆长半轴长度为a,椭圆短半轴长度为b,则椭圆上任意点的坐标可表达为:
x=acosθ+x0
y=bsinθ+y0
a) 椭圆平移
b) 椭圆平移+旋转
当椭圆平移后,椭圆长轴双绕椭圆中心逆时针旋转角度φ(见图1b),则此时需要对椭圆上点的坐标重新计算。
当数控机床具备旋转指令G68时,旋转中心为(x0,y0),旋转角度为φ,编写的程序为G68 Xx0Yy0Rφ。若机床没有可供使用的旋转指令,则椭圆上点的坐标可表达为:
x=(acosθ+x0)cosφ+(bsinθ+y0)sinφ
y=(bsinθ+y0)cosφ-(acosθ+x0)sinφ
在进行宏程序编制时,要用到变量表达,首先要将图形上的点的坐标进行数值表达。宏程序主要有程序开头、程序中间和程序结尾3部分,程序开头主要是描述加工前的准备状态,如主轴启动、换刀、快速定位、冷却液开关控制等;程序中间部分是整个程序的核心,主要通过循环语句来控制走刀的路线,重点是插补点的坐标计算公式。程序结尾主要是退刀,以及程序结束语句等。
VB是一种可视化编程语言,具备强大的计算功能、输出功能和控制功能,能很好地完成条件判断,以及按计划的输出。
本程序的界面设计如图2所示。整个界面分成4个区域,第1个区域为椭圆参数区,将椭圆长半轴、短半轴、椭圆中心点坐标、椭圆旋转角度等参数进行输入;第2个区域为加工参数区,主要是将加工过程中的刀具号、主轴转速、进给率、切削液开关控制等参数进行设定;第3个区域为椭圆图形显示区,方便使用者理解各个参数的含义;第4个区域为宏程序生成区,也是整个软件的结果输出区,是整个系统界面中的核心区域[3-4]。
图2 椭圆宏程序自动生成系统初始界面
椭圆曲线参数和切削加工参数都是编程过程中需要设置的变量。
1)椭圆曲线参数主要包括椭圆的定形尺寸和定位尺寸,椭圆的定形尺寸有椭圆长半轴a和短半轴b,椭圆的定位尺寸有椭圆中心位置的坐标x0和y0,椭圆的旋转角度φ。这些基本参数在加工过程中会随着具体加工对象的不同而改变,也是会变动的变量,均设置成变量,编程前可以按实际情况进行修改。
2)切削加工参数主要包括刀具号、刀具直径、转速和进给率、切削深度以及切削液开关控制等。在加工过程中,切削参数也是需要变化的量,设置好后,可以在自动编程中体现。
图2中,椭圆长半轴长度默认值设置成50,椭圆短半轴长度默认值设置成30,椭圆中心坐标X向平移和Y向平移均默认设置为0,椭圆长轴与X轴旋转角度默认为0,椭圆插补角度增量也就是椭圆参数方程中的变量θ默认值设置为1;加工参数中刀具号默认值设置为01,主轴转速默认值设置为2 500,进给率设置为100,切削液默认值设置成开(即M8)。
为了对编程中的变量进行控制,VB程序设计时需要设置10个变量值,即6个椭圆参数、3个加工参数和1个冷却液控制参数进行对应,编程加工参数设置如下:
Option Explicit
Private Sub Command1_Click()
Dim A1!, B2!, C3!, D4!, E5!, F6!, G7%, H8!, I9%, I%, J10%
List1.Clear
A1 = Val(Text1.Text) '椭圆长半轴
B2 = Val(Text2.Text) '椭圆短半轴
C3 = Val(Text3.Text) '椭圆中心坐标X向平移
D4 = Val(Text4.Text) '椭圆中心坐标Y向平移
E5 = Val(Text5.Text) '椭圆的旋转角度
F6 = Val(Text6.Text) '椭圆插补角度增量
G7 = Val(Text7.Text) '刀具号码
H8 = Val(Text8.Text) '主轴转速
I9 = Val(Text9.Text) '进给率
J10 = 8 '切削液开
整个自动编程算法包含3个部分:第一部分是输入已知参数,通过已知参数来计算编程的变量。第二部分是VB程序计算,通过椭圆宏程序的部体框架设计,将计算的数值替代程序中的具体位置;第三部分是输出加工宏程序,将替换完变量的程序进行输出,同时保证输出的程序满足机床输入标准,可直接用于机床加工[5-6]。其算法流程图如图3所示[7-8]。
图3 算法流程图
设置好变量后,应对核心部分进行编写,具体编写如下:
If Option2.Value = True Then J10 = 9
List1.AddItem "O0001; " '宏程序名称
List1.AddItem "G40 G80 G49 G69 G21 G17; " '宏程序初始化
List1.AddItem "G90 G54 G0 X0 Y0 S" & H8 & " M03; " '主轴转速
List1.AddItem "M6 T" & G7 & "; " '换刀
List1.AddItem "G43 Z50 H" & G7 & " ; " '刀长补正
List1.AddItem "G0 Z5; "
List1.AddItem "#1=0; "
List1.AddItem "#5=" & a1 & "; "
List1.AddItem "#6=" & B2 & "; "
List1.AddItem "G68 X" & C3 & " Y" & D4 & " R" & E5 & "; " '坐标旋转
List1.AddItem "#7=" & a1 & "+" & C3 & ";" '下刀点位置计算
List1.AddItem "G0 X#7 Y" & D4 & " M" & J10 & "; " '切削液
List1.AddItem "G1 Z-2 F" & I9 & "; " '进给率
List1.AddItem "WHILE [#1 LE 360] DO1 ;"
List1.AddItem "#101=#5*COS[#1]+ X" & C3 & ";"
List1.AddItem "#102=#6*SIN[#1]+ Y" & D4 & ";"
List1.AddItem "G01 X[#101] Y[#102];"
List1.AddItem "#1=#1+1 ;"
List1.AddItem "END1; "
List1.AddItem "G1 Z2 ; "
List1.AddItem "G49 G69 "
List1.AddItem "G0 Z50 M5 M9; "
List1.AddItem "G0 X0 Y0; "
List1.AddItem "M30"
End Sub
为了更好地使用编写的宏程序,可以在“编制程序”按钮中加入输出指令,将编写好的宏程序写入电脑中,并以a.txt为文件名保存到C盘要目录中,方便使用者。
Open "c:a.txt" For Output As #1
For i = 0 To List1.ListCount - 1
Print #1, List1.List(i)
Next i
Close
当椭圆参数如图4所示时,单击“编制程序”按钮,编写的宏程序如图4所示;可以验证绘制的宏程序形式正确,内容完整,能直接输入数控机床进行加工。用不同的数值来测试,其程序的正确性也得到了验证。椭圆插补角度增量θ可根据实际需要来取值,当加工的椭圆插补误差偏大时,应适当减小θ的数值。
图4 椭圆宏程序自动编程系统运行结果
以记事本形式打开C盘根目录下的a.txt文件,得到的宏程序如下,其程序可以直接传输到机床进行数控加工。
O0001;
G40 G80 G49 G69 G21 G17;
G90 G54 G0 X0 Y0 S2500 M03;
M6 T1;
G43 Z50 H1 ;
G0 Z5;
#1=0;
#5=50;
#6=30;
G68 X10 Y20 R10;
#7=50+10;
G0 X#7 Y20 M8;
G1 Z-2 F100;
WHILE [#1 LE 360] DO1 ;
#101=#5*COS[#1]+ X10;
#102=#6*SIN[#1]+ Y20;
G01 X[#101] Y[#102];
#1=#1+1 ;
END1;
G1 Z2 ;
G49 G69
G0 Z50 M5 M9;
G0 X0 Y0;
M30
本程序中,为了研究方便:1)研究的加工对象为完整椭圆,若加工的为椭圆弧,则还需要进一步计算椭圆圆弧起止点的对应参数,并设置成变量,编制程序时应保证从起点到止点为逆时针方向;2)忽略了刀具补偿,刀具只沿着轨迹直接进刀,实际加工过程中较多情况下会有刀具补偿的情况,程序中需要加入G41或G42指令,下刀点需要从轨迹外部下刀;3)切削深度没有设置成变量,且在Z方向没有分层铣削,只切削了一层,接下来要考虑Z向分层加工和XY分层加工。
本文在研究宏程序编程的基础上,应用VB软件实现椭圆宏程序的自动生成,主要研究工作如下。
1)将椭圆宏程序编写进行模块化和规范化处理,将加工过程中需要设置的值进行直观化变量处理,并给出了通用的自动编程思路和方法。
2)克服了传统CAD/CAM软件不能自动生成宏程序的弊端,提高了椭圆宏程序的编写效率。
3)应用VB软件的直观性,结合宏程序的便捷性,由椭圆宏程序作为示例,可以移植到其他曲线的宏程序自动编程,具有较好的借鉴性,极大地方便了工程技术人员,有很高的应用价值和推广前景。