FANUC宏程序使用举例单轴外圆数控磨床,径向采用数控轴(X轴)控制,轴向仍用液压油缸驱动,因此无法使用两轴磨床数控系统提供的磨削循环功能。在实践中,可以使用FANUC系统提供的用户宏程序,编制单轴的磨削循环功能。根据机床的具体结构,又编制了砂轮手动修整、自动补偿及手动测量工件、自动补偿的控制功能。在青海重型机床厂生产的CA8311B轴颈车磨床上,经过一年多的生产使用,证明是实用的。下面分别介绍软件的内容。 1 功能介绍 1.1 外圆磨削循环 由于只有径向控制轴(X轴),无法实现连续进给磨削,只能实现两端进给的轴向磨削循环。因此在左右两端各设1个轴向行程识别开关(如图1所示)。 当砂轮移到工件的左端时,左端行程开关闭合,发出到位信号,程序中用接口输入变量#1005=1表示。控制系统接到该信号后,发出X轴进给移动指令,砂轮前进一个A值;同理,当系统接到右端行程开关发出的到位信号,程序中用接口输入变量#1006=1表示,砂轮前进一个B值。依次循环,直到到达指令的位置。 实现给定磨削量的磨削加工,可以按A、B两值相加为一个循环,将被磨除量均分。砂轮快速移至R点,经n次(A+B)磨削之后,其剩余量为hʹ。若砂轮在工件左端,且hʹ<A时,按hʹ进给,否则按A值进给。若在工件右端,且hʹ<B值时,按hʹ进给,否则按B值进给。软件必须保证只在工件两端进给,中间不得进给。当磨除量变为零时,必须磨到另一端才能退砂轮。整个磨削过程分粗磨、精磨和光磨。在实际使用中,在R点设置一个暂停,操作者可以插入手动磨削,以利于修活使用,也可以再转为自动磨削。磨削初值用现在位置变量#5041取值。 1.2 测量值的自动补偿 在粗磨结束后,精磨开始前插入手动测量,操作者将测量结果输入到系统中,系统根据指令值与实测值之差,对磨削量进行补偿。 是否需要测量,由面板上的开关设置,此开关状态用接口输入信号#1007输入系统。当开关接通,即信号为“1”时进行测量。当开关断开,即信号为“0”时,则不进行测量,直接进行精磨加工。当实测值与指令值相同时,可以不输入实测值,此时,系统不修正磨削量,仍按原磨削量进行磨削。如需测量,在测量之前安排光磨加工,以求与完成零件磨削的状态相同。 1.3 砂轮修整量的自动补偿 根据机床采用普通金刚笔修整砂轮、手动进给、手动换向修整这样的操作,软件自动计算修整量,并修正工件坐标原点设定值。砂轮修整之后,不需对刀,即可进行磨削加工。 在面板上设置砂轮修整开关,此开关状态用接口输入信号#1004输入系统。当修整开关合上,即信号为“1”时,执行砂轮修整服务程序。当开关断开,即信号为“0”时,系统执行磨削加工。 2 软件框图 按主程序、子程序结构编制软件。(1)主程序(O0001) 见图2。(2)砂轮修整子程序(O0020) 见图3。(3)磨削子程序(O0010) 见图4。 (4)测量子程序(O0030) 见图5。 3 菜单编程 将磨削所需数据用系统断电不清除的宏变量表示。编程时,操作者只需把所需数据输入,不需要修改程序。零件变化时,只需改变相关尺寸数据。 具体设置如下: #500 粗磨开始点 #501 粗磨结束点,即精磨开始点 #502 精磨结束点,即光磨开始点,亦即零件尺寸 #503 粗磨左进刀量,即第一次切深 #504 粗磨右进刀量,即第二次切深 #505 粗磨进刀进给速度 #506 精磨左进刀量 #507 精磨右进刀量 #508 精磨进刀进给速度 #509 光磨次数 #510 工件坐标原点设定值 #511 金刚笔尺寸 #514 测量点设定值(系统自动设置) #515 测量点实测值(先由系统自动设置为设定值,再由操作者修改) 4 程序 (1)主程序 O0001; G98; IF[#1004EQ0]G0T010; (修砂轮开关,1:修砂轮,0:磨工件) M98P0020; (修砂轮 N10M98P0010; (磨工件 N20M30; (2)磨削子程序 O0010; G50X#510; (设置工件坐标原点) G00X[#500+1.0]; (分段趋近工件) G01X[#500+0.6]F500; X#500F#505; N30M00; (手动磨削,手动_自动磨削,自动磨削) #9=#509; #20=#5041; (砂轮现在位置) N50IF[#20EQ#501]G0T0110; (粗磨结束) N60IF[#1006EQ0]G0T060; N70IF[#1005EQ0]G0T070; (粗磨加工,左端进给) IF[#20EQ#501]G0T0110; (粗磨左端结束) #20=#20-#503; IF[#20GE#501]G0T080; #20=#501; N80G01X#20F#505; N90IF[#1006EQ0]G0T090; (右端进给) IF[#20EQ#501]G0T0110; #20=#20-#504; IF[#20GE#501]G0T0100; #20=#501; N100G01X#20F#505; G0T070; N110IF[#1007EQ0]G0T0120; (测量开关,1:测量,0:磨工件) M98P0030; (测量子程序) N120IF[#1006EQ0]G0T0170;(精磨加工) N130IF[#1005EQ0]G0T0130;(左端进给) IF[#20EQ#502]G0T0180;(精磨结束) #20=#20-#506; IF[#20GE#502]G0T0140; #20=#502 N140G01X#20F#508; N160IF[#1006EQ0]G0T0160;(右端进给) IF[#20EQ#502]G0T0190;(精磨结束) #20=#20-#507; IF[#20GE#502]G0T0170; #20=#502;〖ZK)〗 N170G01X#20F#508; G0T0130; N180IF[#1005EQ0]G0T0180; (光磨) IF[#9EQ0]G0T0200; #9=#9-1; N190IF[#1006EQ0]G0T0190; IF[#9EQ0]G0T0200; #9=#9-1; G0T0180; N200G28U1.0; N300M99; (3)砂轮修整子程序 O0020; G50X#510; G00X[#511+1.0]; (砂轮分段趋近金刚笔) G01X[#511+0.6]F500; X#511F#508; N400M00; (手动修整砂轮) #21=#5041 N450IF[#1004EQ1]G0T0450; #22=#511-#21; (计算修整量) #510=#510+#22; (修正工件坐标原点设定值) G28U1.0; M99P20; (返回主程序,结束) (4)测量子程序 O0030; #19=#509; (设置光磨走刀次数) IF[#1006EQ1]G0T0510; N500IF[#1005EQ0]G0T0500; (测量前光磨) IF[#19EQ0]G0T0520; #19=#19-1; N510IF[#1006EQ0]G0T0510; IF[#19EQ0]G0T0520; #19=#19-1;G0T0500; N520#514=#501; (测点设定值) #515=#514; (预先赋值) G28U1.0; N530M00; (手动测量,实测值输入#515) N540IF[#1007EQ1]G0T0540; G00X[#514+1.0]; G01X[#514+0.6]F500; X#514F#508; IF[#515EQ#514]G0T0580; (不修正精磨量) #23=#515-#514; #510=#510+#23; (修正工件坐标原点设定值) G50X#515; (修正工件坐标原点) #20=#515; (修改砂轮现在位置) N580M99;