推广 热搜: 电解铝  铝合金  阳极氧化  氧化  热处理  工艺  铝及铝合金  技术  铝土矿  铝材加工 
 

Think3的GPL语言开发挤压模模孔线割自动化程序设计与应用

   日期:2013-12-03     来源:铝博士    浏览:916    评论:0    
 摘 要:简述通过Think3的GPL语言,利用曲线偏移的功能产生铝型材挤压模模孔线割刀路及对应G代码的过程,并对模孔进行自动相切检查。
关键词:挤压模线切割; G代码; 偏移; 暂停点

作者来自亚洲铝厂
 
  在挤压模制作过程中,线切割加工是非常重要的一个环节。模孔表面质量将直接影响挤出铝型材的表面质量。 我司对该环节一向非常重视,率先引进高精度慢走丝对模孔进行加工,极大的提高了模具表面质量。随着公司业务的扩大及对制造精度的不懈追求,对线割编程的要求也越来越高。
  由于现有线割编程软件参数设置繁琐, 产生的NC代码与机床性能不完全匹配,需再次检查及更改,不同机床须分别处理。而在挤压模线割编程编程中,加工参数相对固定,为减轻线割编程员劳动强度,降低新人培训周期,遂提出通过CAD软件Think3的GPL语言,利用曲线偏移的功能产生挤压模模孔线割刀路及对应G代码的过程,并对模孔进行自动相切检查的设想。
  具体流程如下:
  1.输入待割型材选择集,要保证集合首尾顺序相接。若所选起始点或方向不合适可通过起始点前移/后移及反相进行变更。
                                          
2.对待割铝型材选择集进行自动检查,以保证过渡圆滑。
对待割铝型材选择集进行自动检查设置界面示截图
  具体方法为:由程序对相邻两图素进行检查:
  (1)若为直线和圆弧,通过求直线两端点与圆弧起点和终点距离取得交点,再判断交点与圆心所成直线与直线夹角,若非90度则判定直线和圆弧非相切关系,在交点处按指定图层及颜色绘点提醒此处需更正;
  (2)若为圆弧和圆弧,判断圆心距离是否等于半径和或差,若不等判定圆弧和圆弧非相切关系,在交点处按指定图层及颜色绘点提醒此处需更正;
  (3)若为直线和直线,直接在交点处按指定图层及颜色绘点提醒编程员检查。
3.定义加工参数,入丝点:
  主要输入切割厚度,入丝点,精加工次数。
     
4.用偏移功能产生加工轨迹线:
  依加工参数确定偏移距离,利用CAD软件的偏移功能产生偏移线(将偏移线第一刀放到999层,即粗割轨迹线;其余依次放到998、997...层),对输入待割型材的总长与新产生轨迹线总长比对,轨迹线总长大于待割型材的总长则将其删除,变更偏移方向,重新产生轨迹线。具体GPL程序代码如下:
  #procedure  SelsOfst(IDS,offsetDist,InOut)  !No005将给定图素偏移指定距离 若相等则失败不产生偏移图素[自ek_confw.prbs]W::->WrTp::
  *保留原始环境WrTp::SelsOfst(ek_prese(1),0.2,1)  //SelsOfst(ek_prese(1),0.2,1)
  currCol:=$PG(EP_COL)   ekpar EP_COL 60 !EP_COL
  currLTYPE:=$PG(EP_LTYPE) ekpar EP_LEV 999 !EP_LTYPE
  currWIDTH:=$PG(EP_WIDTH) ekpar EP_WIDTH 2 !EP_WIDTH
  currLEV:=$PG(EP_LEV)   ekpar EP_LEV 999 !EP_LEV 
TmpTPth_IDS
  TmpTPth_IDS::=0#0
  ekpar EP_CVOF_DIST 1 !DIST/point
    
Sids::=IDS !保留待处理集合
    
exitflag::=0
    
m(IDS,"IDS")
    
Sperim::=WrTp::GetLensBySels(IDS)
    
lastEnt::=$lastent
    
m($lastent,"$lastent Prv")
      WrTp::SelsHIGHZYYSXS(Sids,20,1) 
    
AAG_2011::SelByIds(Sids)
      ekpar EP_CVOF_DIST 1 !DIST/point
    
ekpar EP_OFFSET_N offsetDist !0.2/-0.2 offsetDist
    
ekpar EP_OFF_OPTMC 0 !copy 0/Move 1 -》ekpar EP_OFF_OPTMC 1
  *    ekpar EP_CVOF_NUMOF ek_num_edit
    
ekpar EP_CVOF_NUMOF 1 !层数 UNDO
    
ekpar EP_CVOF_TRFL 1 !Extended0/1Fillet是否倒圆
      user::ek_offset_onpln  !执行 产生偏移线
    
eos
    
Halt
    
if($lastent.eq.lastEnt) ek_w_m('最后建立的[$lastent为空 请查证!'//m(IDS))  goto('e0') ! exit
      m($lastent,"$lastent Nxt")
    
OfstIds::=(lastEnt+1):$lastent !首次 产生的偏移线
    
Dperim::=WrTp::GetLensBySels(WrTp::OfstIds)

*
    
if((WrTp::Dperim.lt.WrTp::Sperim).and.(InOut.eq.1)) then !目标周长小于源+InOut=1 ->exitflag::=1
       
m('SelsOfst ok in',IDS,offsetDist,InOut,OfstIds)
       
TmpTPth_IDS::=OfstIds
       
exitflag::=1
    
elseif(WrTp::Dperim.eq.WrTp::Sperim) then
       
OfstIds::=0
       
m('SelsOfst ==',IDS,offsetDist,InOut,OfstIds)
       
exitflag::=2
    elseif((WrTp::Dperim.gt.WrTp::Sperim).and.(InOut.ne.1)) then !目标周长小于源+InOut<>1 ->exitflag::=1
       
m('SelsOfst ok Out',IDS,offsetDist,InOut,OfstIds)
       
exitflag::=1
    
else
     
ekpar EP_OFFSET_N -offsetDist
    
endif
  *
    
if(WrTp::exitflag.eq.1) m("WrTp::exitflag.eq.1") eos goto('e0') ! exit
    
if(WrTp::exitflag.eq.2)  m("WrTp::exitflag.eq.2") eos undo eos  goto('e0') ! !目标周长等于源 exit
      m("SelsOfst -offsetDist",-offsetDist,now)
    
undo
*重新设置选择集
       
WrTp::SelsHIGHZYYSXS(Sids,2,1) 
     
AAG_2011::SelByIds(Sids)
     
lastEnt::=$lastent
     
user::ek_offset_onpln  eos m("SelsOfst -offsetDist Do")   !执行 产生偏移线
       
Halt
 
if($lastent.eq.lastEnt) ek_w_m('最后建立的[$lastent为空 请查证!02'//m(IDS))  goto('e0') ! exit
     
OfstIds::=(lastEnt+1):$lastent !undo后 产生的偏移线
     Dperim::=WrTp::GetLensBySels(WrTp::OfstIds)
      if((WrTp::Dperim.lt.WrTp::Sperim).and.(InOut.eq.1)) then
  * exit
       
m('SelsOfst ok2 in',IDS,offsetDist,InOut,OfstIds)
       
TmpTPth_IDS::=OfstIds
       
exitflag::=1
    
elseif((WrTp::Dperim.gt.WrTp::Sperim).and.(InOut.ne.1)) then ! ??应无机会执行到
       
m('SelsOfst ?ok? Out2 >>ERR!',IDS,offsetDist,InOut,OfstIds)
       
exitflag::=1
    
endif
      if(exitflag.eq.1)  goto('e0') ! exit
      m('SelsOfst err ',now)
  *
  end:
  *    exit(values)  !
    
exit
  e0: m("SelsOfst->e0 ")    !TTError("PLSort",WERROR,TTMsg('_TTGEN'\\15,''))
  *恢复原始环境
    
ekpar EP_COL currCol !EP_COL 
    
ekpar EP_LTYPE currLTYPE !EP_LTYPE 
    
ekpar EP_WIDTH currWIDTH !EP_WIDTH 
    
ekpar EP_LEV currLEV !EP_LEV 
    
goto('end')
  #end
5.按给定支撑距离计算,取得支撑位打断点,并将粗割刀路打断,对打断点进行判断:
  a.所需剩余长度计算:

  依支撑所需长度,判断最后的图素长度是否足够,若不足则将“所需长度-最后图素长度”得出“所需剩余长度;同理依次对前一图素长度作判断,直至前一图素长度大于所需剩余长度。
  b.建立支撑位打断点:
  当前一图素长度大于所需剩余长度时,计算所需剩余长度占前一图素长度的比例数(以下简称为比例数),利用在曲线指定比例处画点功能建立支撑位打断点(此时需注意曲线起始点是否与切割方向吻合,当方向相反时所用比例值 =(1-比例数)。以便使点位与切割方向相符。
  c.在点位处打断,重排刀路:

接着利用曲线分割函数在刚刚建立的点位处打断曲线,将打断建立的新图素依其位置对刀路图素选择集重排,使打断产生的新图素在刀路正确的序列中。
      
 6.在易断丝处设置暂停点
  即在给定位置点将刀路打断,并在该位置建立点。(具体方法同5)
  7.对刀路进行模拟,以确认刀路序列正确。
  8.产生Nc程序
  按刀路进行模拟时图素显示顺序产生加工点位坐标序列,再在适当位置插入必要的辅助控制码及G代码。因刀路依次排列的图素不是严格按首尾相接(可能有头接尾的情况), 产生加工点位坐标序列时必须对此进行判别,以保证坐标序列正确。
  通过以上过程,实现程序所见即所得。加工参数可直接由输入的模厚自动生成,最终程序格式可根据实际机床灵活调整,避免对不同类型机床需多次编程的弊端;程序设置更加便捷.
 
打赏
 
更多>同类技术
0相关评论

推荐图文
推荐技术
点击排行

网站首页  |  铝材QQ群大全  |  大沥著名铝企  |  铝锭手机短信  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  RSS订阅  |  违规举报  |  粤ICP备18150991号  |