今天给大家分享一篇纯干货的文章,以一个案例:螺旋插补铣锥孔的例子,来教大家一个编写宏程序的关键点:逻辑推理
宏程序编程的逻辑推理关键点在于:推导出变量之间的关系式。
举个例子,前段时间有师傅在数控铣床上面加工孔口倒角,虽然是孔口倒角,但他干的是航天产品,质量要求比较高。他用的是倒角刀具,直接扎下去。
这么做的结果:
1, 孔口产生了毛刺,影响产品质量
2, 刀具费用有点高,因为用的是专用倒角刀具
那么,提高产品质量的改进的方法有哪些呢?
其中从编程角度来讲,其中有一种方法那就是: 螺旋插补铣走刀
1, 孔和倒角可以用一把标准刀具,都采用螺旋插补铣的方式,一次铣出来,避免倒角和孔有接刀痕以及毛刺等的产生。
2, 要求程序通用性好,一个程序要满足不同尺寸的倒角。后面再次加工不同大小的孔,不同角度的锥面,刀具直径如果变化等都可以用此程序搞定。
这两点,如何通过数控编程宏程序来实现呢?
这是我今天分享的重点:逻辑推理
以螺旋插补铣锥孔为例(螺旋插补铣孔以及孔口倒圆弧以前分享过不再赘述,如需要联系,我把50页的PPT送给你)。
逻辑推理关键点在于:推导出变量之间的数学关系式
让数学关系式来参与运算,从而完成程序的编辑!
这么讲空泛,具体看下面简图,思考一个问题:
假如设置点P 是圆弧上面的任一点,它的X,Y,Z坐标我们用机床识别的宏变量:#24 ,#25,#3分别表示。
你如何计算出#24 ,#25,#3的数学关系式呢?也就是圆锥上面任一点的点位坐标呢?
在一个直角三角形中,根据三角函数,夹角#1和边的关系,可以推出以下关系:
#24=#18*COS[#1]
#25= #18*SIN[#1]
因为由夹角#1的转动,就会绘制出一个半径为#18的圆弧
这就是简单的逻辑关系, 由夹角#1的取值范围不同,那么就会有对应的圆弧
比如:
让#1从0 ~180 自增运算,执行下面程序就是半圆了。
比如:
#1取值的范围从从0 ~270 ,执行下面程序就就走出一个3/4的圆了。
比如:
#1 从0 ~360 ,就是一个整圆了。
好,我们要X,Y,Z三轴联动螺旋插补铣锥,而不是在一个平面上走圆弧
试想2个问题:
第1个:关于变量#3(Z方向)关系式的推算 (随着#1的变化而变化)
#1自增 ,范围0~360将会是一个整圆,那么#1自增的过程 同时让Z方向的数值也逐渐变化 。如果我把#1的数值 直接赋值给#3 ,即:#3=#1
上面程序中的G01X#24Y#25 添加一个Z-#3 ,不就完成了一个圆的螺旋线了吗!
那么,我们看#1的数值 直接赋值给#3,(Z方向)会是什么情况?
当#1=0的时候 #3 也就等于0
当#1=1的时候 #3 也就等于1
当#1自增到360的时候, #3的数值也就等于了360
G01X#24Y#25Z-#3
也就是走一整圆的同时#3(Z方向)下降了-360
每走一圈我想让Z方向下降1mm,怎么办呢?
如下关系式:
#3=#1/360
很容易推算出来,即给#1除了一个系数360
#3=#1/360 当#1自增到360时候, #1/360运算的数值也就赋值给了#3
比如,我们看下面程序段:
#1自增,范围0~360,也就是一圈圆,Z下降了1mm。
#1自增,范围为0~720,也就是2圈圆,Z下降了2mm。
2、关于圆锥上面任一 P点 X Y算数式的推算
#24=#18*COS[#1]
#25= #18*SIN[#1]
这是铣圆,但是三轴联动螺旋插补铣锥孔,随着Z的下降,半径(#18)也会变化
AN[#6]=#2/#3 可以计算出
#2= TAN[#6]* #3
好,这个#2就是变化量,因#3(Z方向的下刀深度)变化而变化
关系式为:#2= TAN[#6]* #3 (备注:#6代表锥度变量)
那么圆锥上面任一 P点 X Y算数式为:
#24=[#18-#2]*COS[#1]
#25=[#18-#2]*SIN[#1]
这才是圆锥上任一点P的X, Y坐标 。
推算出了圆锥上任一点P的X、 Y还有Z坐标算数式:
#3=#1/360 (每走一圈,Z的下降的深度)
那么,很快就可以完成零件的编程。
比如
#1自增的范围围0~3600,也就是10圈圆,Z下降了10mm
备注:
变量#18代表圆弧的半径值,并没有把刀具计算在内
给#18赋值的时候需要计算即:#18=(倒角直径-刀具直径为)/2
我可以单独设置两个变量,分别代表倒角直径,刀具直径,比如下图:
#7 代表 倒角大端直径
#20 代表刀具直径
根据倒角的大小,刀具的直径,要加工的锥度大小,分别给#7,#20,#6赋值即可。
好,你有没有发现,上面程序中
1, 设置的变量#3=#1/360 每圈下降的深度是固定的,即1mm
2, 零件Z方向的总深度,是由#1来决定的
1圈圆弧,#1的范围是0-360
2圈圆弧,#1的范围是0-720
……
10圈圆弧,#1的范围是0-3600
由上面两点,每圈切深和总圈数决定了要加工的倒角总深度
实际上,我们希望直接给变量赋值,来决定我们要加工的总深度,而不是什么圈数。比如在程序中设置一个变量#26代表零件Z方向的总深度。
设置一个变量#4代表每圈下刀深度
那么#26/#4 就代表要走的圈数
#5=FUP[#26/#4] 圈数取整
备注:
FUP是宏程序中的一个取整函数,什么意思?
运算式计算的结果如果有小数,把小数部分变为整数1,并加到整数部分
比如,
#26=16(零件深度)
#4=2.2 (每圈切深)
16/2.2=7.272
那么#5=FUP[#26/#4]
#5的结果为8(#26/#4运算的数值,小数部分变为整数1,并加到整数部分 )
好,变量之间的推理就分享到这儿,直接上部分程序:
我是邹军,长期分享数控编程,加工小技巧!关注邹军爱数控,拿福利,再学干货!
点赞,转发,留言,多多交流!