搜索

西门子用户循环开发技巧

2016-08-26   《金属加工(冷加工)》单位:山推工程机械股份有限公司作者:崔

  因为西门子系统在用户手写程序功能扩展方面比较强大,所以我厂一直都是自己开发循环配合西门子循环组合使用。因为西门子标准的循环要考虑很多问题,尤其是安全问题,这就制约了程序的功能,现重点介绍下我厂最早开发的一个用户循环。此循环开发之初是为了在镗孔时使刀具在距离最终深度一定距离时,自动地改变进给和转速。程序源代码(参数和标准循环顺序一样,各参数为返回平面、参考平面安全距离、最终深度坐标、孔深、距离最终坐标需要变换的距离、变换后的进给及变换后的转速)如下:
  %_N_TMK_SPF
  ;$PATH=/_N_CUS_DIR
  PROC TMK(REAL RTP,REAL RFP,REAL SDIS,REAL DP,REAL DPR,REAL RJS,REAL JSF,REAL JSS) SAVE SBLOF DISPLOF
  ;VERSION: 11.5.31 MAY 31, 2011
  ;CHANGE : 11.5.31 MAY 31, 2011
  ;DEVELOPER: KECHENGCUI
  DEF REAL RBLS,RF,RJSF,RJSS
  DEF AXIS A_3
  DEF INT IPB5
  DEFINE LX AS G01 G60 G90
  DEFINE LY AS G00 G64 G90
  A_3=$P_AXN3
  RBLS=$P_S[1]
  IF ($P_SUBPAR[2]==FALSE)
    RFP=$AA_IW[$P_AXN3] SDIS=0
  ENDIF
  IF ($P_SUBPAR[4]<>TRUE)AND($P_SUBPAR[5]==TRUE)
  DP=RFP+DPR
  ENDIF
  IPB5=(RFP-DP)/ABS(RFP-DP)
  LY AX[$P_AXN3]=SDIS*IPB5+ RFP
  RF=$P_F
  IF $P_SUBPAR[6]==TRUE
    LX AX[A_3]=DP+RJS*IPB5;
    IF JSF<0;
      IF ABS(JSF)<1
        RJSF=ABS(JSF)*RF
      ELSE
        RJSF=RF/ABS(JSF)
      ENDIF
    ELSE
      RJSF=JSF
    ENDIF
    IF ($P_SUBPAR[8]==TRUE)AND(JSS<0)
      IF ABS(JSS)<1
        RJSS=ABS(JSS)*RBLS
      ELSE
        RJSS=RBLS/ABS(JSS)
      ENDIF
    ELSE
      RJSS=JSS
    ENDIF
    IF $P_SUBPAR[8]==TRUE
      LX AX[A_3]=DP FB=RJSF S=RJSS
    ELSE
      LX AX[A_3]=DP FB=RJSF
    ENDIF
  ELSE
    LX AX[A_3]=DP
  ENDIF
  G04 S2
  IF RBLS<>$P_S[1]
    S=RBLS F=RF
  ENDIF
  IF ($P_SUBPAR[1]==TRUE)AND($P_SUBPAR[2]==TRUE)
    LY AX[A_3]=RTP
  ENDIF
  M17
  上面程序只有一个减速的功能,下面是使用实例:
  G54 G90 G00 X0 Y0 Z100 D1
  S300 F60 M3
  TMK(100,0,5,-50,,5,20,350)
  M5
  G00 SUPA Z0 D0
  M30
  程序先定位然后主轴正转,刀具定位到参考平面的安全距离处,然后以循环外设定的进给和转速加工到孔底坐标的减速距离处,进给变为循环设定的进给,转速设定为循环设定的转速,进给和转速都可不填或者只添一项,如果都不填就类似于一个cycle81;然后刀具返回到返回平面,返回平面可以不填,也可以是任意值,如果不是返回到安全的方向建议不填,因为不填的话刀具到孔底就停止循环,这个设计是为了和其他循环配合使用。
  在我厂车间经常加工一些隔板孔,即在一个坐标上有两个以上的孔,因为西门子的标准循环不允许返回平面,而在参考平面的另一个方向,或者加工完成后停留在孔底不返回,所以在编程时只能用“G0”“G1”这种代码写几行甚至十几行程序,计算和修改都很麻烦,后期维护也比较麻烦。此循环设计就完美解决了这个问题,下面是三层孔的加工程序:
  G54 G90 G00 X0 Y0 Z100 D1
  S300 F60 M3
  TMK(,0,5,-50)
  TMK(,-100,5,,-50)
  TMK(100,-200,5,,-50)
  M5
  G00 SUPA Z0 D0
  M30
  程序加工完第一个孔,由于没填参考平面,所以程序加工到孔底就没有后续动作了,循环结束;进入下一个循环,下一个循环正常执行,结束后没有返回数据,所以不返回,进入下一个循环;最后一个循环到孔底后,有返回平面数据,所以执行返回平面。简洁明了,方便维护。
  此外,程序还可以写成如下形式:
  G54 G90 G00 X0 Y0 Z100 D1
  S300 F60 M3
  TMK(-95,0,5,-50)
  TMK(-195,,,,-50)
  TMK(100,,,-50)
  M5
  G00 SUPA Z0 D0
  M30
  第一个循环结束后,返回到第二个孔的孔端处,由于第二个孔的参考平面没有填写,所以就以当前点为参考平面,进行加工。这段程序在铣孔倒角用的用户循环中优势明显,当同一轴线上加工多个整圆时只需填一个参数即可。
  参考文献:
  [1] 陈灿,刘鑫. 西门子840D数控系统数据采集的开发和实现[J]. 机械工程师,2009(5):122-124.
  [2] 廖正菊,雷艳华,郑元明. 基于西门子840D数控系统的硬件配置设计[J]. 机械工程师,2009(5):122-124.

关键词: | 作者 :

最新评论

查看更多评论   

关于我们

因为有你 新闻才更精彩

欢迎来投稿

版权所有

机械工业信息研究院· 金属加工在线MW1950 copyright © 2006-2018 mw1950.com .All Rights Reserved