一日一例——数铣内方宏程序_子程序

程序参考:

%

O001;

#107=1;

#108=500;

#109=1500;

#111=-75.;

#112= 75.;内腔右壁位置坐标(x+)

#113=-40.;内腔下壁位置坐标(Y-)

#114=40.;内腔上壁位置坐标(Y+)

#115=15.;内圆角R

#116=16.;刀具直径数值

#117=1.;第一次下切深度

#118=1.;每一次下切深度

#119=2.;最终下切深度

#121=0.;   0=粗加Z 1=精加工

#131= [#111+#112]/2;内方中心点X坐标

#132= [#113+#114]/2;内方中心点Y坐标

#133= #116* 0.6;刀具切削步距

#134= [ #114-#113]/2;内腔X长度的一半

#101= #114-#115;去除圆角的Y+坐标

#102= #112-#115;去除圆角的X+坐标

#103= #111+#115;去除圆角的X一坐标

#104= #113+#115;去除圆角的Y坐标

M6T#107;换刀指令

G90G54G0X#131Y#132;快速移动到内腔中心点

G43H#107Z100.;刀具长度补偿设置

M3 S#108;转速设置

M98P405;调用405号子程序

G90G0Z100.;回到安全高度

M30;程序结束

%

%

O405;

    WHILE[#117LE #119] DO2;深度逻辑运算

    #125=1.;最小内圆角

    #135=FIX[#134/#133];取整,计算内圈环绕次数

    #136= #133*#135;粗加工切除距中心一侧的毛坯量

    #140=#111+#136+#116/2;左侧第一刀需要切除的残留量

    #141=#111+#136+#116/2-#133;左侧粗加工内层(X-)

    #142=#112-#136-#116/2+#133;右侧粗加工内层(X+)

    #143=#132+#133;上侧粗加工内层(Y+)

    #144=#132-#133;下侧粗加工内层(Y-)

    #121=#143-#125;去除圆角的位置( Y+-R)

    #122=#142-#125;去除圆角的位置(X+-R)

    #123=#141+#125;去除圆角的位置(X-+R)

    #124=#144+#125;去除圆角的位置( Y-+R)

    G90G54G0Z[10.-#117];快速降到切削高度以上10mm

      G1 Z-#117F#194/4;切入切削深度

      G90G1X#140F#109;向左侧清理残留量

    IF[#121EQ1] THEN #135=1;判断粗精加工

    IF [#135 EQ 1] GOTO 100;精加工判断

    N110G90G1X #122F# 109;粗加工开始,向右侧

      G91G3X#125Y#125R#125;右下拐角圆角

      M98 P406;调用406号子程序:水平螺旋环绕

      #135=#135-1;粗加工环绕次数递减运算

    IF[#135GT1 ]GOTO 110;粗加工内循环

      N100 M98P407;调用407号精加工子程序,精加工最外轮廓

      #117= #117+#118;深度累加运算

      END 2;深度循环结束

      M99;返回001主程序

%

      %螺旋加工子程序

      O406   粗加工,由内向外逆时钊

      G90G1X#142Y#121F#109;向上

      G91 G3X-#125Y#125R#125;右上角的圆角加工

      G90G1X#123;向左

      G91G3X-#125Y #125R#125;左上角的圆角加工

      G90G1Y#124;向下

      G91G3X#125Y#125R#125;左下角的圆角加_工

      G90;转换为绝对坐标模式

      #141=#141-#133; 左侧粗加工内层向外累加一个步距

      #142=#142+#133;右侧粗加工内层向外累加一个步距

      #143=#143+#133;上侧粗加工内层向外累加一个步距

      #144=#144-#133;下侧粗加工内层向外累加一个步距

      #121=#143-#125;去除圆角的位置(Y+-R)

      #122=#142-#125;去除圆角的位置(X+-R)

      #123=#141+#125;去除圆角的位置(X-+R)

      #124=#144+#125;去除圆角的位置(y-+R)

      M99;返回405子程序

%

%

O407;最外一圈轮廓精加工

    G90G41G1X#112D#107F#109;向右侧加工,到达右侧壁

    Y#101;向上行进至上轮廓

    #120=#116/2;刀具半径数值

    IF[#115 GT #120]GOTO 350;内圆角与刀具半径的大小判断

    #115=#120+1;若刀具半径小于圆角半径,重新设置圆角半径

    N350 G3X[#112-#115]Y#114R#115;右上角的圆角加工

    G90G1X#103;向左

    G3X#111Y#101 R#115;左上角的圆角加工

    G1Y#104;                     J,向下

    G3X#103 Y#113 R#115;左下角的圆角加工

    G1X#102;向右侧行进至右侧壁

    G3X#112Y#104 R#115;右下角的圆角加工

    G1Y#101;                     向上行进至上轮廓

    G3X#102Y#114R#115;右上角的圆角加工

    G91 G1X-#115;向左加工一个圆角半径的距离

    G3X-#115Y #115R#115;圆角退刀

    G40G90Y0;退出刀具补偿

G90G1Z10.F800;抬刀

G90G0X#131 Y#132;返回内腔中心点

M99;返回405子程序

%