和云敏
(长江工程职业技术学院,武汉 430212)
Visual Basic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言,简称VB,源自BASIC编程语言。由于其具有结构简单,编写程序对系统的资源占有极低等优点,已成为程序编写者编写小型程序的第一选择[1]。在数控加工领域,由于数控标准ISO代码只包含直线和圆弧两种插补指令,当遇到椭圆、抛物线等特殊曲线时采用宏指令编写宏程序才能满足要求。宏程序包含多种宏变量,代码较多,编程思路复杂,对编程人员是一大挑战[2]。若借助CAXA等自动编程软件,又小题大做,其绘图、路径规划及编程模拟的过程也使得编程效率不高。此时采用VB编程,再用宏程序工具生成宏程序即可解决这一难题。
数控车床是加工中小批量、形状复杂轴套类零件的重要设备。图1所示为我国某企业生产的用于造纸机械的辊轴装配组件。
图1 辊轴装配组件
辊轴包含4个零件,装配完成后外轮廓有一段为椭圆弧,分别分布于件1、3、4上,其中件1和件4通过件2进行螺纹连接。如果采用传统的工艺,很难保证装配后椭圆弧处光滑无接缝;另外,需对应编写3个零件的椭圆弧程序,程序编写效率不高,当产品更新换代后还需重新编写[3]。
以某企业辊轴装配组件为例,利用VB工具开发一个数控车床宏程序工具,用户只需要输入曲线参数、工件坐标等必要编程要素即可一键完成宏程序生成与汇出,大大提高了数控编程效率和准确性,降低了数控编程人员的劳动强度。
图2、图3为辊轴装配组件零件图,装配完成后要求外表面椭圆弧处光滑无接痕。
图2 件1和2零件图
图3 件3和4零件图
根据光滑无接痕的装配要求和4个零件精度要求,椭圆弧处的加工必须待4个零件装配好用一个单独的程序进行一体加工,即用一个程序一次性完成件1、3、4外圆椭圆弧的加工。基于以上分析,辊轴装配组件加工工艺设计如表1所示。
辊轴装配组件中的件2是关键零件,需要先行加工到位。件2一方面控制件1和件4螺纹的配合松紧情况和拧入长度,保证件1和件4同时拧入时两零件端面不能相互顶住;另一方面,控制件3长度尺寸大于件2长度尺寸0~0.04mm,使得组件装配时件3能被件1和件4夹紧,以保证件1、3和4三个零件外圆椭圆弧能够被一体加工到位。
由于件1、3和4三个零件外圆椭圆弧是在装配后一体加工的,在巨大的切削力作用下螺纹配合会非常紧密,极有可能造成装配组件无法拆卸的情况,因此必须借助皮带扭力扳手强行将件1和4拧出。为减少拆卸的难度,可以在装配加工之前将螺纹装配处进行清理、去毛刺和涂抹润滑油等操作,便于加工后的拆卸。
由于ISO代码仅包含直线G01和圆弧G02/3两种准备性工艺代码,因此针对椭圆弧等特殊曲线,需单独编写宏程序。宏程序的编写类似于C语言编程,变量多,逻辑性强,对程序员应变不同位置特殊曲线的编程能力是极大的考验[4]。为快速、准确、有效地完成特殊曲线程序编写,降低劳动强度,可以利用Visual Basic语言开发一款数控车床宏程序,能根据用户需要和曲线方位,设置特殊曲线的方程参数,路径起点、终点及切削参数等,自动生成宏程序[5]。
(1)宏程序工具界面
在工程实际中,特殊曲线有很多种,如抛物线、椭圆、双曲线等。为适应不同的特殊曲线自动生成NC程序,可以通过VB中添加窗体程序将常用的曲线罗列于宏程序工具初始界面[6],如图4所示。
(2)曲线参数设置
以辊轴装配组件外圆椭圆弧为例说明曲线参数的设置,如图5所示。
图5 曲线参数设置界面(椭圆弧)
曲线参数设置必须包括四大要素,即曲线方程参数、曲线起终点参数、切削参数和其他参数。以辊轴装配组件外圆椭圆弧为例,其曲线方程参数包括长半轴a值、短半轴b值、椭圆中心x、z坐标及椭圆弧段(凸、凹);曲线起终点参数包括椭圆弧起点x、z坐标和椭圆弧终点x、z坐标;切削参数包括进给量F、主轴转速S、刀具号T、背吃刀量U、粗加工直径方向余量X值和长度方向Z值;其他参数包括确定循环起点的毛坯尺寸D值、曲线加工精度J值。
在曲线参数设置界面中,【程序头】和【程序尾】是为了配合不同用户的需求,可以仅生成曲线宏程序粘贴到已有程序中使用。若单独需要生成一个完整的NC程序,可以将【程序头】和【程序尾】勾上,点击【生成代码】则可生成包含外轮廓复合循环指令的宏程序,直接用于机床实操现场,【汇出代码】可将程序导入到指定控制介质中。
(3)VB程序编写
在完成曲线参数设置后,可以点击【生成代码】功能按钮编写VB程序。
Private Sub Command1_Click()
Dim s1 As Integer
Dim crlf As String
Dim sTR1 As String
Dim strHEAD As String
Dim strTAIL As String
s1 = 1
If Check1.Value = 1 Then
s1 = 1
Else
s1 = 0
End If
crlf = Chr(13) &Chr(10)
sTR1 = ""
strHEAD = "N1" &crlf
strHEAD = strHEAD &"G00 G90 G95 G97 M03 S" &txtdegree2.Text &" F" &txtdegree1.Text &" T0" &txtdegree3.Text &"0" &txtdegree3.Text &crlf
strHEAD = strHEAD &"G00 X" &Val(txtradiusd.Text + 2) &" Z" &txtz1.Text &crlf
If 0.1 * Val(txtdegree4.Text) <1 Then
strHEAD = strHEAD &"G71 U" &txtdegree4.Text &" R0" &(0.1 * Val(txtdegree4.Text)) &" P10 Q20"
If s1 = 1 Then
strHEAD = strHEAD &" E" &txtdegree5.Text &crlf
Else
strHEAD = strHEAD &" X" &txtdegree5.Text &" Z" &txtdegree6.Text &crlf
End If
Else
strHEAD = strHEAD &"G71 U" &txtdegree4.Text &" R" &(0.1 * Val(txtdegree4.Text)) &" P10 Q20"
If s1 = 1 Then
strHEAD = strHEAD &" E" &txtdegree5.Text &crlf
Else
strHEAD = strHEAD &" X" &txtdegree5.Text &" Z" &txtdegree6.Text &crlf
End If
End If
'head
If Check2.Value = 1 Then
sTR1 = strHEAD
Else
sTR1 = ""
End If
sTR1 = sTR1 &"#10=" &Val(txtz1.Text - txtyd.Text) &crlf
If s1 = 1 Then
sTR1 = sTR1 &"#11=" &(Val(txtyb.Text) * -1) &"*" &"SQRT[1-#10*#10/" &txtxa.Text &"/" &txtxa.Text &"]" &crlf
Else
sTR1 = sTR1 &"#11=" &txtyb.Text &"*" &"SQRT[1-#10*#10/" &txtxa.Text &"/" &txtxa.Text &"]" &crlf
End If
sTR1 = sTR1 &"N10 G00 G42 X" &txtx1.Text &crlf
sTR1 = sTR1 &"Z" &txtz1.Text &crlf
sTR1 = sTR1 &"WHILE #10 GE " &Val(txtz2.Text - txtyd.Text) &crlf
sTR1 = sTR1 &"G01 X[" &txtxc.Text &"+2*#11]" &" Z[" &txtyd.Text &"+#10]" &" F" &txtdegree1.Text &crlf
sTR1 = sTR1 &"#10=#10-" &txtdegree7 &crlf
If s1 = 1 Then
sTR1 = sTR1 &"#11=" &(Val(txtyb.Text) * -1) &"*" &"SQRT[1-#10*#10/" &txtxa.Text &"/" &txtxa.Text &"]" &crlf
Else
sTR1 = sTR1 &"#11=" &txtyb.Text &"*" &"SQRT[1-#10*#10/" &txtxa.Text &"/" &txtxa.Text &"]" &crlf
End If
sTR1 = sTR1 &"ENDW" &crlf
sTR1 = sTR1 &"N20 G00 X" &Val(txtradiusd.Text + 2) &crlf
'tail
strTAIL = strTAIL &"G00 X100" &crlf
strTAIL = strTAIL &"G00 Z100" &crlf
strTAIL = strTAIL &"M30" &crlf
If Check3.Value = 1 Then
sTR1 = sTR1 &strTAIL
End If
txtresult.Text = sTR1
End Sub
Private Sub Command2_Click()
Open "wenjian.txt" For Output As #1
Print #1, txtresult.Text
Close #1
End Sub
完成VB程序编写后点击【文件】菜单,【生成mymain.exe程序】后生成宏程序,如图6所示。
图6 宏程序
以辊轴装配组件右端面中心点为工件原点,完成椭圆弧各参数设置后生成宏程序。图6右侧文本框为采用华中数控系统编程格式生成的宏程序。同理,可以根据工程实际加工需求,生成“抛物线”“双曲线”等对应的宏程序,从而形成宏程序工具。
通过【汇出程序】将宏程序工具生成的宏程序导出,并采用宇龙数控仿真系统对程序进行仿真验证,仿真结果如图7所示。
图7 计算机仿真结果
在数控仿真系统中对零件进行尺寸测量且各项尺寸均满足图纸要求之后,将NC宏程序导入数控机床进行实操验证,如图8所示。
图8 NC宏程序导入数控机床进行实操验证
通过对加工的产品进行测量,均达到图纸要求。由此可以得出结论,由数控车床宏程序工具生成的NC宏程序可以直接用于数控加工现场,效率高、可靠性好。
工程实际中,编程人员在编写程序之前必须要进行加工工艺分析。而笔者开发的数控车床宏程序工具在实际使用时,仅需要输入数控加工工艺分析中所必须的“毛坯尺寸”“特殊曲线类型”“加工部位”“切削参数”“加工精度”等参数,即可一键生成宏程序,简单快捷方便。
宏程序工具中囊括了不同的回转体零件中所常见的“抛物线”“双曲线”“椭圆”等特殊曲线,且VB源代码具备二次开发定制功能,当用户需要定制大批量零件所需宏程序时,可以对VB程序进行更改和优化来满足要求。
针对具有椭圆弧等特殊曲线轮廓而必须采用宏指令才能编写程序的零件,开发了一个数控车床宏程序工具,可以帮助编程人员准确、迅速地完成宏程序编写与输出,经计算机仿真和现场实操验证结果表明:工艺方法选择恰当,采用由宏程序工具生成的NC程序加工的零件各项尺寸均满足精度要求,输出程序效率高、准确,可以直接用于加工现场。且宏程序VB源代码具有二次开发定制功能,具有较高的通用性和有效性,为从事数控车床编程及操作的技术人员解决相关难题提供了一个有效的工具。