邹军写文章的目标:让每篇文章都能解决你一个问题 今天给大家分享两个案例 比如下图零件端面上均匀分布了60个孔,要求: OP10钻孔 OP20铣孔 一、钻孔 要想编写出钻孔程序,主要问题是求出孔的点位坐标。 根据图纸提供的信息,已知条件: 1、360度均布分布的孔,也就是每6度一个孔。 2、孔分布在直径为D1200的圆周上。 如下图: 如何求出任意点#24(X方向坐标点);#25 (Y方向坐标点)呢? 我们回顾下数学中的三角函数,如下图 已知角度#5和斜边长度,要求出#24,#25,根据三角函数公式,可以得出: COS[#5]=#24/600 SIN[#5]=#25/600 那么: #24=COS[#5]*600 #25=SIN[#5]*600 其中#5角度变量,角度#5的变化规律为:每次递增6度,即#5=#5+6 分析到这清风我直接上程序如下: 二、螺旋插补铣 如何铣孔,还是来个图直观,见下图。 上图的走刀路径很像弹簧吧。刀具同时在圆弧路径(X和Y)和轴向(Z)上移动。也就是说通过G02/G03 X_ Y_Z_......三轴联动实现插补铣。 现在我们来个具体的简图,来编写螺旋插补铣孔 宏程序吧!首先看到这个简图,我们要得到几个信息: 孔的直径是#1,孔深#2,刀具直径#3。 有人会奇怪,孔的直径,刀具直径等都是变量,怎么不是具体的数! 因为我想给#1,#2,#3等变量赋予不同值,便可以加工出不同大小及深度的孔。 在开始编写程序前我们先做个刀具路径路分析: 首先刀具快速移动到下刀点, 然后刀具每走一圈的同时下一定的距离(简称 每圈距),至到铣至我需要的深度为止。(假设 圆心为G54圆点,顶面为Z0面 ) 大家都知道编程的时候下刀点和退刀点很重要,无论是软件出程序,还是手工编写程序,以及现场调试程序的时候,需要重视这两点,以防刀具与零件碰撞……。 上图#1代表被加工孔的直径,#3代表刀具直径 那么下刀点: X方向坐标点是:#6=[#1-#3]/2,也就是孔半径减去刀具半径。 Y方向坐标是:0 退刀点坐标: 铣完孔之后,刀具需要远离零件孔内壁,可以计算出#6-1.。 注意方向:朝负方向回退1mm所以[#1-#3]/2-1。 上面讲了螺旋插补铣的刀路,每旋转一圈的同时Z需要下一定深度,至到铣至我需要的深度为止 重要的事说三遍: 每旋转一圈的同时Z需要下一定深度。 每旋转一圈的同时Z需要下一定深度。 每旋转一圈的同时Z需要下一定深度。 此时你能联想到清风我上面讲过的某个知识点么? 是不是和变量的自增减有关? 至到铣至我需要的深度为止。 至到铣至我需要的深度为止。 至到铣至我需要的深度为止。 此时你能联想到清风我上面讲过的某个知识点么? 是不是可以利用IF[ ] GOTO语句,当铣至我需要的深度后,程序就跳转。 变量自增:比如变量#4 法拉克的格式为:#4=#4+1 ,后面的+1代表每运算一次变量#4就增加1。(当然,根据需要你也可以+2,代表每运算一次变量#4就增加2。) IF [ ] GOTO语句: 如果变量#4的值小于#2,那么就跳转至指定的程序段,比如N1。如果#4的值大于#2,那么程序就往下运行,(也就是说加工到深度了。)程序格式如下: N1 …… ……. IF [#4LT #2]GOTO 1 好了,有了上面的分析,清风我把上面的分析归纳如下: 下面开始编写宏程序 螺旋插补铣孔程序如下: %O0001 #1=10 (孔直径) #2=30 (孔深) #3=6(刀具直径) #4=0 (Z的初始变量) #6=[#1-#3]/2 (刀具中心的回转直径,即下刀点) S2000 M03 G54 G90 G00 X0 Y0 Z50. G0X#6 Y0(G0快速移动到下刀点的上方) Z1. N1#4=#4+1(每圈距) G3I-#6Z-#4F500.(G03顺时针螺旋插补加工程序) IF[#4LT#2]GOTO1(当加工深度#4小于孔深#2时,就跳转至N1程序段,从N1程序段又依次往下运行。) G1X[#6-1](G01向中心退回1,即退刀) G0Z50. M30 % 整个程序的工作步骤,清风给您分析一遍。 1, 程序从开始运行,读取#1,#2,#3,#4,#6的数据。 2, 程序快速移动到下刀点上方Z=1处。 3, 当运行到N1#4=#4+1时,由于之前#4的值为0,通过运算0+1=1,此时#4的值为1.。 4, 接着往下运行读取G3I-#6Z-#4F500.螺旋插补铣了一圈。 5, 接着往下运行,遇到IF语句,系统判断了下,#4的值是1,小于#2的值,于是就跳转至N1 6, 接着运行N1#4=#4+1,由于之前#4的值为1,又运算了一遍1+1=2,此时#4的值为2.。 7, 遇到螺旋插补程序段G3I-#6Z-#4F500 ,又铣了一圈。 8, 接着往下运行,遇到IF语句,系统判断了下,#4的值是2,小于#2的值,于是就跳转至N1 9, 程序又往下运行,一直到IF语句,系统判断了下,当#4的值不小于#2值的时候,系统知道,条件不满足了,于是就执行IF 下面的语句,即:G1X[#6-1]。 10, 接着运行G0Z50.至到M30 程序仿真如下: 好了,上面就是螺旋插补铣孔宏程序。但是工件坐标系是以孔为中心来编写的。 而实际图纸的孔是在D1200的外圆上,怎么解决呢? 清风给您分享一个,利用局部坐标G52,来解决编程原点不重合问题。 在工件坐标系(G54-G59)内再设定子坐标系,这个子坐标系叫局部坐标系 。 格式: G52 X_ Y_ Z_ (设定局部坐标系) ………. G52 X0 Y0 Z0 (注销局部坐标系) 用心看一下上面程序。 用心看下右侧图示。 简单吗? 很有用,不信,你现在试试! |
|
来自: 阿明哥哥资料区 > 《16.工艺.编程.VB.软件》