分享

利用通用宏程序车削凹圆弧螺纹

 hekulai2250 2019-02-01

这个是一个凹圆弧的通用宏程序,右旋螺纹带多头功能,分粗车精车,对于圆弧螺纹的牙深小于等于圆弧半径的任意螺纹都适用,这个程序没有空刀,刀具左右两侧间隔进刀,刀具刀刃磨损情况大体一致,节省刀具(以前的圆弧螺纹都是单刃进刀,刀具磨损快,费刀)

源程序有两个:源程序(一)应用范围最广,但是要求编程者逻辑性较强

源程序(二)比较好理解,程序本身的逻辑性强

源程序(一)详解

O0001

T105(刀具号及刀补号,用球刀或是圆弧切刀)

M03 S100(主轴正转,转速;根据实际情况选择转速)

#1=80(外径)

#2=6(圆弧半径)

#3=4(螺纹的深度)

#4=12(螺距)

#7=200(螺纹长度)

(上面的数据决定了任意一个凹圆弧螺纹,圆弧螺纹的深度小于等于圆弧半径的时适用)

#30=1(头数)(多头螺纹,一般正常情况都是一头的)

#5=2(刀具半径)

(刀具半径,刀具用圆弧刀,标准机夹刀)

#6=#3(分层)

(圆弧螺纹一刀车削不到位,需要X向多次进刀车削,相对于螺纹的每次进刀,只是这个进刀量要大些)

#8=1(分层吃刀量)(每次的进刀量)

#9=1(下刀点控制)(螺纹左右下刀点的初始赋值)

#31=5(粗车角度)

#32=2(精车角度)

(这个程序为了提高车削的效率,分粗车和精车)

#26=#4*#30(螺纹的导程)

#29=360/#30(每相邻的两个螺纹之间端面所夹的角度,也就是多头螺纹分头的角度值

用Q来表示或者叫编程的数据)

(Q值的基本单位根据不同机床系统,有不同的规定,大致是3种:360、360000、3600000,这个是看机床角度后面的小数点位数来确定)

IF[#3 GT #2]GOTO2 (判断;当圆弧的深度大于圆弧的半径的时候,直接跳出不执行)

N10(程序段号,循环体用,这个循环体分层车削的循环)

#27=0(多头循环初始角度赋值)

N80(程序段号,循环体用,这个循环体多头螺纹车削的循环)

IF[#6 LT #8]THEN#31=#32(粗精车循环的判断)

#11=ASIN[[#2-#3]/#2](基准角度)

(这个角度是计算切入与切出角度的基准)

#12=#11-180(切角)

#13=-#11(切角)

这两个切角后面我们在公众号用图详细解释

IF[#9 EQ 1] GOTO50 (判断,在左侧下还是右侧下刀)

IF[#9 EQ 2] GOTO40 (判断,在左侧下还是右侧下刀)

GOTO30

N50

WHILE[#12 LE #13]DO1(角度车削循环,当#12小于等于#13循环执行,完成圆弧车削)

#14=#1+2*[#2-#3] (圆弧圆心点,X向的值)

#15=#14+2*[#2-#5]*SIN[#12]+2*#6 (在多层车削中,圆弧上所有点的集合,这里所有的点指的是X向的值)

#16=#4+[#2-#5]*COS[#12] (在多层车削中,圆弧上所有点的集合,这里所有的点指的是Z向的值)

#22=#1+2*#5 (去空刀位置计算)

#23=-#7-#4 (螺纹的车削长度,为增量编程用)

#24=#1+2*#3+2+2*#6 (X向的每次退刀计算)

IF[#15 GE #22 ]GOTO3 (判断, 去空刀,当刀具在工件上方空车削的时候,直接跳转到运算程序,机床不动作)

G0 X#15 (X向车削定位点)

Z#16(Z向车削定位点)

G32 W#23 F#26 Q#27 (螺纹的车削,#23为刀具每次相对起点所走的距离,#26为螺纹的导程,#27为多头车削的角度变量)

G0 X#24 (X向退刀)

Z#16 (Z向退刀)

N3(车削段号,用来标记去空刀跳转位置)

IF[#12 EQ #13]GOTO1(判断,当#12等#13的角度值的时候跳出车削循环)

#12=#12+#31(角度每次增量,这里是从左往右车削,所以角度是逐渐增大的,这里为加号)

IF[#12 GT #13]THEN #12=#13 (判断,当#12中的数据大于#13中的数据时,强制赋值,防止车削不到位)

END1

N1(跳出循环标记位置)

(上面的循环为左侧下刀循环)

#9=#9+1(循环体执行选择运算公式)

GOTO30(强制跳转)

N40(跳转标记,执行右侧下刀循环)

WHILE[#13 GE #12]DO1(角度车削循环,当#13大于等于#13循环执行,完成圆弧车削,这里在设置角度变量的时候正好是和上面相反的,这样才能实现左右间隔下刀)

#14=#1+2*[#2-#3] (圆弧圆心点,X向的值)

#15=#14+2*[#2-#5]*SIN[#13]+2*#6(在多层车削中,圆弧上所有点的集合,这里所有的点指的是X向的值)

#16=#4+[#2-#5]*COS[#13](在多层车削中,圆弧上所有点的集合,这里所有的点指的是Z向的值)

#22=#1+2*#5(去空刀位置计算)

#23=-#7-#4(螺纹的车削长度,为增量编程用)

#24=#1+2*#3+2+2*#6(X向的每次退刀计算)

IF[#15 GE #22]GOTO6 (判断, 去空刀,当刀具在工件上方空车削的时候,直接跳转到运算程序,机床不动作)

G0 X#15 (X向车削定位点)

Z#16(Z向车削定位点)

G32 W#23 F#26 Q#27(螺纹的车削,#23为刀具每次相对起点所走的距离,#26为螺纹的导程,#27为多头车削的角度变量)

G0 X#24(X向退刀)

Z#16(Z向退刀)

N6(车削段号,用来标记去空刀跳转位置

IF[#13 EQ #12]GOTO5(判断,当#13等#12的角度值的时候跳出车削循环)

#13=#13-#31(这里是从右往左车削,所以角度是逐渐减小的,这里为减号)

IF[#13 LT #12]THEN #13=#12(当#13中的数值减小到小于#12中的数值时,强制赋值,防止车削不到位)

END1

N5

#9=#9-1(循环体执行选择运算公式)(N20到N5之间的循环为右侧下刀循环))

N30(跳转标记)

#27=#27+#29

IF[#27 LT 360]GOTO80(多头车削循环体)

IF[#6 EQ 0]GOTO2(判断,分层车削判断,当分层车削到位时,直接跳出循环)

#6=#6-#8(每次分层的车削量,#6为每次分层后剩余的余量,#8为每次的车削量)

IF[#6 LT 0]THEN #6=0(判断,当#6小于0时,强制赋值,防止车削不到位)

IF[#6 GE 0]GOTO10(分层车削循环体)

N2

G0 X200

Z200

M30

源程序(二)详解

O0001

T105(刀具号及刀补号,用球刀或是圆弧切刀)

M03 S100(主轴正转,转速;根据实际情况选择转速)

#1=80(外径)

#2=6(圆弧半径)

#3=4(螺纹的深度)

#4=12(螺距)

#7=200(螺纹长度)

(上面的数据决定了任意一个凹圆弧螺纹,圆弧螺纹的深度小于等于圆弧半径的时适用)

#30=1(头数)(多头螺纹,一般正常情况都是一头的)

#5=2(刀具半径)(刀具半径,刀具用圆弧刀,标准机夹刀)

#6=#3(分层)(圆弧螺纹一刀车削不到位,需要X向多次进刀车削,相对于螺纹的每次进刀,只是这个进刀量要大些)

#8=1(分层吃刀量) (每次的进刀量)

#9=1(下刀点控制)(螺纹左右下刀点的初始赋值)

#31=5(粗车角度)

#32=2(精车角度) (这个程序为了提高车削的效率,分粗车和精车)

#26=#4*#30 (螺纹的导程)

#29=360/#30 (每相邻的两个螺纹之间端面所夹的角度,也就是多头螺纹分头的角度值用Q来表示或者叫编程的数据)(Q值的基本单位根据不同机床系统,有不同的规定,大致是3种:360、360000、3600000,这个是看机床角度后面的小数点位数来确定)

IF[#3 GT #2]GOTO2 (判断, 当圆弧的深度大于圆弧的半径的时候,直接跳出不执行)

N10(程序段号,循环体用,这个循环体分层车削的循环)

#27=0(多头循环初始角度赋值)

N80(程序段号,循环体用,这个循环体多头螺纹车削的循环)

IF[#6 LT #8]THEN#31=#32(粗精车循环的判断)

#11=ASIN[[#2-#3]/#2](基准角度)(这个角度是计算切入与切出角度的基准)

#12=#11-180(切角)

#13=-#11(切角)(这两个切角后面我们在公众号用图详细解释)

IF[#9 EQ -1] GOTO20(判断,在左侧下还是右侧下刀)

WHILE[#12 LE #13]DO1(角度车削循环,当#12小于等于#13循环执行,完成圆弧车削)

#14=#1+2*[#2-#3] (圆弧圆心点,X向的值)

#15=#14+2*[#2-#5]*SIN[#12]+2*#6(在多层车削中,圆弧上所有点的集合,这里所有的点指的是X向的值)

#16=#4+[#2-#5]*COS[#12](在多层车削中,圆弧上所有点的集合,这里所有的点指的是Z向的值)

#22=#1+2*#5(去空刀位置计算)

#23=-#7-#4(螺纹的车削长度,为增量编程用)

#24=#1+2*#3+2+2*#6(X向的每次退刀计算)

IF[#15 GE #22 ]GOTO3 (判断, 去空刀,当刀具在工件上方空车削的时候,直接跳转到运算程序,机床不动作)

G0 X#15 (X向车削定位点)

Z#16(Z向车削定位点)

G32 W#23 F#26 Q#27(螺纹的车削,#23为刀具每次相对起点所走的距离,#26为螺纹的导程,#27为多头车削的角度变量)

G0 X#24(X向退刀)

Z#16(Z向退刀)

N3(车削段号,用来标记去空刀跳转位置)

IF[#12 EQ #13]GOTO1(判断,当#12等#13的角度值的时候跳出车削循环)

#12=#12+#31(角度每次增量,这里是从左往右车削,所以角度是逐渐增大的,这里为加号)

IF[#12 GT #13]THEN #12=#13(判断,当#12中的数据大于#13中的数据时,强制赋值,防止车削不到位)

END1

N1(跳出循环标记位置)

(上面的循环为左侧下刀循环)

GOTO30(强制跳转)

N20(跳转标记,执行右侧下刀循环)

WHILE[#13 GE #12]DO1(角度车削循环,当#13大于等于#13循环执行,完成圆弧车削,这里在设置角度变量的时候正好是和上面相反的,这样才能实现左右间隔下刀)

#14=#1+2*[#2-#3] (圆弧圆心点,X向的值)

#15=#14+2*[#2-#5]*SIN[#13]+2*#6(在多层车削中,圆弧上所有点的集合,这里所有的点指的是X向的值)

#16=#4+[#2-#5]*COS[#13](在多层车削中,圆弧上所有点的集合,这里所有的点指的是Z向的值)

#22=#1+2*#5(去空刀位置计算)

#23=-#7-#4(螺纹的车削长度,为增量编程用)

#24=#1+2*#3+2+2*#6(X向的每次退刀计算)

IF[#15 GE #22]GOTO6(判断, 去空刀,当刀具在工件上方空车削的时候,直接跳转到运算程序,机床不动作)

G0 X#15 (X向车削定位点)

Z#16(Z向车削定位点)

G32 W#23 F#26 Q#27(螺纹的车削,#23为刀具每次相对起点所走的距离,#26为螺纹的导程,#27为多头车削的角度变量)

G0 X#24(X向退刀)

Z#16 (Z向退刀)

N6(车削段号,用来标记去空刀跳转位置

IF[#13 EQ #12]GOTO5(判断,当#13等#12的角度值的时候跳出车削循环)

#13=#13-#31(这里是从右往左车削,所以角度是逐渐减小的,这里为减号)

IF[#13 LT #12]THEN #13=#12(当#13中的数值减小到小于#12中的数值时,强制赋值,防止车削不到位)

END1

N5(N20到N5之间的循环为右侧下刀循环))

N30(跳转标记)

#27=#27+#29

IF[#27 LT 360]GOTO80(多头车削循环体)

IF[#6 EQ 0]GOTO2(判断,分层车削判断,当分层车削到位时,直接跳出循环)

#6=#6-#8(每次分层的车削量,#6为每次分层后剩余的余量,#8为每次的车削量)

IF[#6 LT 0]THEN #6=0(判断,当#6小于0时,强制赋值,防止车削不到位)

#9=-#9(左右间隔下刀的计算公式)

IF[#6 GE 0]GOTO10(分层车削循环体)

N2

G0 X200

Z200

M30

这两个程序是其他任何地方没有的,逻辑性强,效率高,希望能够帮到需要的你!无论是机床升级还是学习宏程序,以后会持续的分享高效的通用宏程序!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多