本章先以图1-5所示零件圆周均布钻孔为例,说明设计一个数控加工宏程序算法的主要思路。
图1-4 最基本的逻辑判断流程框图
图1-5 零件示意图
1.实例问题的提出
此例零件直径为100mm,厚度为20mm,端面上共有10个直径为10mm均匀分布在直径为60mm圆周上的通孔,材料为铸铁,应如何编写本实例的程序算法呢?
2.实例思路的分析
可以依次考虑以下几个问题:
①分析零件图以及毛坯图,确定合理的装夹方式(采用外圆底面定位和外圆夹紧)。
②选择合理的刀具。
③确定钻孔的加工顺序和工艺路线。
④考虑钻孔时的转速以及进给量。
⑤钻1个孔应采取什么样的步骤,是先采用中心钻定位,还是直接采用直径为10mm的钻头钻孔呢?
⑥钻孔过程中是采取一次性钻至要求的深度,还是分几次钻至要求的深度呢?即是考虑选择G81还是选择G83的问题。
⑦钻完一个孔后应该怎样计算和确定下一个孔的位置(相互间的位置关系)?
其实考虑这些问题的时候,就是在设计圆周上均匀分布孔钻孔程序的算法。其中对①至⑦问题的思考,是在普通机床的加工、采取普通数控程序编制以及采用CAM软件编程时都需要考虑的问题。但是采用宏程序编程序时,还要进一步考虑和确定各孔之间的位置关系、各孔加工顺序等因素,可见宏程序编程更注重逻辑的使用和算法的设计。(www.xing528.com)
其中①至⑥的问题本书不作讨论,主要针对问题⑦,下面提出了4种算法。
算法1:直接计算每个φ10mm通孔圆心点的坐标值(两个方向),计算量较大。
算法2:采用CAD软件来绘制图形,然后找出各个圆心点的坐标值(这也有局限性,要求必须会使用CAD软件)。
算法3:利用机床自带能计算三角函数的功能,让机床数控系统根据指定的公式和基本尺寸,自行计算出各个圆心点的坐标值。
算法4:可以利用极坐标(G16)的功能并结合宏编程,来实现孔与孔之间位置的计算。
以上4种算法都可以解决各孔之间位置关系的问题,但第1种算法不可取,前3种算法编出的程序又只能算是普通程序,在此着重讨论第4种算法,结合G16功能进行宏编程。
编程思路归纳如下:由图1-5分析可知,两孔之间相隔角度均为36°,且均匀分布在圆周上,这正好满足宏程序编程的一大特点:有规律可循。因此,优先考虑宏程序编程,指定角度的增量为变量#100,可以设#100=0,#100=#100+36,用IF[#100 LT 360]GOTO n来实现角度的变化;同时由于各个孔均匀分布在同一圆周上,就可以采用G16极坐标指令功能。
将上述的思路采用流程框图来表达,可以画出图1-6所示编制宏程序的流程框图。
除上述的思路外,还可以采用另外一种思路:设一个变量#101代表钻孔的数量,相当于计数器的功能,即每钻完一个孔,判断没有加工的个数是否为0。如果为0就退出循环,否则重新定位孔的位置,开始新一轮的钻孔循环,直到未加工孔的个数为0,退出循环意味零件加工完毕,这样规划宏程序的流程框图如图1-7所示。
图1-6 编制宏程序的流程框图
图1-7 宏程序编程的流程框图(另外一种思路)
由上可以看出不同的算法和思路,编写宏程序代码有所不同,程序的复杂程度也不一样(在此仅讨论该题的算法,关于具体的宏程序代码,本节不列出,在后面实例中会给出完整的宏程序代码)。
在编制宏程序时,一个好的算法是非常重要的,学习宏程序的关键不是学习如何定义变量,也不是学习控制流向的语句(语法),而是学习算法。根据算法,再合理设置相关的变量,正确选择控制流向的语句,才能写出高质量且能被数控系统识别的宏程序代码,从而提高加工零件的质量和效率。
变量是基础,控制流向的语句(语法)是工具,算法才是灵魂。因而在学习过程中,不能一味地记忆代码,而忽视了算法的训练和积累。另外,每一种数控系统宏编程的语句和变量都不尽相同,也是不断发展的,因此实际编程中,编程人员应当以数控机床厂家提供的操作手册和参数说明书为准。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。