1.算法的设计
(1)此实例是矩阵孔的加工,每行相邻两个孔之间的间距为20mm,每列中相邻两孔之间的间距也为20mm,因此可以采用增量(G91)编程方式来简化程序。
(2)设置#100号变量来控制X向加工孔数量的变化,#101号变量控制Y向加工孔的数量,通过语句#100=#100-1和IF[#100 GT 0]GOTO n实现X向孔加工的循环过程,X向孔加工完毕后,Y向通过移动一个步距,再进行X向孔的加工,如此循环来完成整个矩阵孔的加工。
(3)关于矩阵孔加工的进给路径选择,有以下两种加工路径:
1)X向孔加工完毕后,返回X向孔加工的起点,Y向移动一个步距,然后再进行X向孔的加工,如此循环形成单向的进给路线。该路线每次加工完X向所有孔后,X、Y向皆有移动,会造成一定的空刀,影响加工效率,但该进给路径避免了机床反向移动而产生的间隙问题,提高了孔加工的位置精度,在孔的几何公差要求较高情况下,选择单向的进给路径可以提高零件的加工质量。
2)X向加工完毕后,Y向移动一个步距,然后再进行X向孔的加工,X向孔加工完毕后,Y向再移动一个步距再进行X向的孔的加工,如此循环形成往复式进给路径,该路径相对于单向进给路径,避免了过多X、Y向的空移动现象,因此加工效率相对较高,但这样的往复式加工路径,会增加机床的移动间隙,对于对孔位置有较高要求的零件(如精密模具、航空航天零件的加工),不宜采用往复式进给路径,而对加工零件孔位置精度没有过高要求的情况,选择往复式进给路径,明显可以提高加工效率。
(4)把X向或Y向排孔的加工,编制一个独立的子程序(在本实例中,采用的是将X向的排孔编制一个独立的子程序),采用调用子程序的方式完成矩阵孔的加工,每调用一次子程序后,在Y向增加一个步距,直到Y向到达原点至最终孔在Y向的位置(Y向最后一排孔),再一次调用子程序,就完成整个矩阵孔的加工。
(5)此编程中涉及标识符的应用。一个标识符放在一个变量前时,它后面设置的变量就应以此变量为基准,如果一个程序多次重复使用此变量,该变量的值则以第一次累加结果为基准进行变化,如果仍需使用变量第一次的初始值,则需要在使用该变量时,对此变量重新赋予初始值,否则程序使用的是第一次循环结束时累加的值。
2.程序流程框图设计
根据以上算法设计分析,规划钻孔的进给路径如图4-17和图4-18所示,程序流程框图的设计如图4-19和图4-20所示(注意比较两种不同进给路径的差别)。
图4-17 往复式进给路径
图4-18 单向进给路线
图4-19 往复式进给路径程序设计流程框图
图4-20 单向进给路径程序设计流程框图
3.根据算法以及流程框图编写加工的宏程序代码
程序1:往复式进给路径的宏程序代码
实例4-4 程序1编程要点提示:(www.xing528.com)
(1)该程序的钻孔路径如图4-17所示,采用的是往复式进给路径,为了简化编程采用G91增量方式编程。从图样可知,孔与孔的行间距和列间距都是20mm,采用增量方式编程要比采用绝对值(G90)方式编程简洁得多。
(2)采用往复式进给路径,要处理好奇数行的孔和偶数行孔在X向增量方式不一样的问题,这是该程序编程的关键点之一。在程序中,行的下标从0开始,因此加工偶数行孔时,X向增量值为正;加工奇数行孔时,X向增量为负值。加工完一行孔时,Y向先移动一个行间距的值,再进行下一行孔的加工。不管是奇数行还是偶数行,增量的值都要取负值运算(见程序中的#102=-#102语句)。
(3)程序采用#100号变量控制每行加工孔的数量,当每行孔加工完毕时,#100号变量值累计为0,但程序又要进行下一行孔的加工,而下一行孔的数量还是8个,因此,进行下一行孔加工之前,#100号变量需要重新赋值,见程序IF[#100 GT 0]GOTO 10语句后的#100=8,注意#100=8重新赋值语句的位置。
(4)每行孔的加工循环,构成该程序的内层循环。从图样中可知该零件一共由8行这样的群孔构成,因此在内层循环之外,需要一层循环控制加工的行数,在本程序中设置了#103号变量控制加工孔的行数,见程序中控制行加工的循环语句IF[#103 LE 8]GOTO 20。
程序2:单向进给路径的宏程序代码
实例4-4 程序2编程要点提示:
(1)该程序的钻孔路径如图4-18所示,采用的是单向式进给路径。
(2)本实例程序O4017和程序O4016唯一的区别在于孔加工进给路径不同。在程序O4016中,每行孔加工完毕后,Y向移动行间距后,再进行下一行孔的加工。程序O4017中,每行孔加工完毕后,X向移动到该行孔加工的起始位置X30处,然后Y向再移动行的间距,再进行下一行孔的加工。
(3)采用单向式进给路径,不管加工奇数行孔,还是偶数行孔,每行加工孔与孔之间的增量方式是一致的。因此,在每行孔加工完毕后,控制孔与孔列间距的变量#102不需要进行取负运算。
(4)关于每行孔加工完毕后,#100号变量需要重新赋值以及控制行数加工的变量#103等相关问题,可以参考程序O4016编程要点提示。
程序3:X向排孔编制一个独立的子程序,采用子程序嵌套的宏程序代码
实例4-4 程序3编程要点提示:
(1)本实例程序04018采用子程序嵌套的方式实现矩阵孔的加工,需要注意该程序的编程思路和采用宏编程的相同点和不同点。本程序的钻孔路径如图4-18所示,采用单向进给路径,注意和程序04017的区别。
(2)本程序04018编程关键在于子程序之间的衔接问题,这是采用子程序嵌套编程的难点和关键点所在,下面结合程序04018分析子程序嵌套衔接的几个问题:
1)分析主程序中调用一级子程序的语句。从主程序中可知调用一级子程序之前刀具位置在X30 Y5处,从图样可知X30是每行第一个孑L距离编程原点的X向绝对位置,调用一级子程序的语句为M98 P94019,可以看出调用一级子程序的次数为9,而孔的行数是9行,从该语句可知,把每行加工孔的程序编制成一个独立的子程序,在主程序中调用该子程序即可实现矩阵群孔的加工。
2)在一级子程序O4019中来分析G90 G0 X30、G91 Y20和G90三个语句的作用。G90 G0 X30的作用是将刀具移动到当前加工行的第一个孔位置,G91 Y20是将刀具移动到下一行第一个孔的加工位置(每行加工孔的起始位置)。G90转换为绝对值方式编程,作为实现行移动语句中采用的增量方式。由此可见,子程序的作用就是实现行的移动,为下一行孔的加工做准备。
3)在调用二级子程序O4020时,刀具没有移动而是直接调用了三级子程序O4021,从三级子程序O4021中的语句可知:三级子程序实现的是钻一个孔循环。三级子程序调用结束后返回二级子程序,G91 X20实现的是:每行孔加工中,钻好一个孔后,移到该行下一个孔的加工。而调用二级子程序的次数为8,实现的是一行孔的加工。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。