发明名称 五坐标联动机床数控程序后置处理方法
摘要 本发明公开一种五坐标联动机床数控程序后置处理方法,包括步骤(1)引用机床几何误差补偿参数的方法编写数控程序,实现代码在同类系统的机床上通用,(2)将机床软件生成的数控程序点反算到编程坐标系中的点位,再将编程坐标系中的点位顺算到其它系统的机床,实现代码在各类系统的机床上通用。解决了传统编程模式程序不能通用的问题,也解决了RPCP&RTCP编程模式和车间工人调试程序传统惯的矛盾,调试简单、快捷、可靠,杜绝了出错。
申请公布号 CN103048947A 申请公布日期 2013.04.17
申请号 CN201210590865.9 申请日期 2012.12.29
申请人 东方电气集团东方汽轮机有限公司 发明人 钟成明;李启元;甘娜;梁鹏;熊凯
分类号 G05B19/18(2006.01)I 主分类号 G05B19/18(2006.01)I
代理机构 成都蓉信三星专利事务所 51106 代理人 刘克勤;段雪茵
主权项 一种五坐标联动机床数控程序后置处理方法,根据工件的特征参数,用编程软件编写机床的数控程序,该程序包括前置程序和后置处理程序,其特征在于,所述后置处理程序的编写步骤是:(1)、引用机床几何误差补偿参数的方法编写数控程序,实现代码在同系统不同结构的机床上通用,详细步骤如下:I、建立机床运动链数学模型设刀具上一点在刀具坐标系Oc中、工件坐标系Qw中和机床坐标系Ob中的坐标分别为rc、rW和rB,固连在刀具上的两个正交矢量m、n在刀具坐标系、工件坐标系和机床坐标系中的方向余弦分别为(m,mW,mB)和(nc,nW,nB),则根据机床运动链可得 <mrow> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>r</mi> <mi>B</mi> </msub> </mtd> <mtd> <msub> <mi>m</mi> <mi>B</mi> </msub> </mtd> <mtd> <msub> <mi>n</mi> <mi>B</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <msub> <mi>M</mi> <mi>BC</mi> </msub> <mo>&CenterDot;</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>r</mi> <mi>C</mi> </msub> </mtd> <mtd> <msub> <mi>m</mi> <mi>C</mi> </msub> </mtd> <mtd> <msub> <mi>n</mi> <mi>C</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <munderover> <mi>&Pi;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>m</mi> <mo>+</mo> <mn>1</mn> </mrow> </munderover> <mo>[</mo> <mi>P</mi> <mrow> <mo>(</mo> <msub> <mi>r</mi> <mi>Ci</mi> </msub> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <mi>M</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mi>Ci</mi> </msub> <mo>,</mo> <msub> <mi>s</mi> <mi>Ci</mi> </msub> <mo>)</mo> </mrow> <mo>]</mo> <mo>&CenterDot;</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>r</mi> <mi>C</mi> </msub> </mtd> <mtd> <msub> <mi>m</mi> <mi>C</mi> </msub> </mtd> <mtd> <msub> <mi>n</mi> <mi>C</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> <mrow> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>r</mi> <mi>B</mi> </msub> </mtd> <mtd> <msub> <mi>m</mi> <mi>B</mi> </msub> </mtd> <mtd> <msub> <mi>n</mi> <mi>B</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <msub> <mi>M</mi> <mi>BW</mi> </msub> <mo>&CenterDot;</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>r</mi> <mi>W</mi> </msub> </mtd> <mtd> <msub> <mi>m</mi> <mi>W</mi> </msub> </mtd> <mtd> <msub> <mi>n</mi> <mi>W</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <munderover> <mi>&Pi;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>m</mi> <mo>+</mo> <mn>1</mn> </mrow> </munderover> <mo>[</mo> <mi>P</mi> <mrow> <mo>(</mo> <msub> <mi>r</mi> <mi>Wi</mi> </msub> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <mi>M</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mi>Wi</mi> </msub> <mo>,</mo> <msub> <mi>s</mi> <mi>Wi</mi> </msub> <mo>)</mo> </mrow> <mo>]</mo> <mo>&CenterDot;</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>r</mi> <mi>W</mi> </msub> </mtd> <mtd> <msub> <mi>m</mi> <mi>W</mi> </msub> </mtd> <mtd> <msub> <mi>n</mi> <mi>W</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow> <mrow> <munderover> <mi>&Pi;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>m</mi> <mo>+</mo> <mn>1</mn> </mrow> </munderover> <mo>[</mo> <mi>P</mi> <mrow> <mo>(</mo> <msub> <mi>r</mi> <mi>Ci</mi> </msub> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <mi>M</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mi>Ci</mi> </msub> <mo>,</mo> <msub> <mi>s</mi> <mi>Ci</mi> </msub> <mo>)</mo> </mrow> <mo>]</mo> <mo>&CenterDot;</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>r</mi> <mi>C</mi> </msub> </mtd> <mtd> <msub> <mi>m</mi> <mi>C</mi> </msub> </mtd> <mtd> <msub> <mi>n</mi> <mi>C</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <munderover> <mi>&Pi;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </munderover> <mo>[</mo> <mi>P</mi> <mrow> <mo>(</mo> <msub> <mi>r</mi> <mi>Wi</mi> </msub> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <mi>M</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mi>Wi</mi> </msub> <mo>,</mo> <msub> <mi>s</mi> <mi>Wi</mi> </msub> <mo>)</mo> </mrow> <mo>]</mo> <mo>&CenterDot;</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>r</mi> <mi>W</mi> </msub> </mtd> <mtd> <msub> <mi>m</mi> <mi>W</mi> </msub> </mtd> <mtd> <msub> <mi>n</mi> <mi>W</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>式中: <mrow> <msub> <mi>M</mi> <mi>BC</mi> </msub> <mo>=</mo> <munderover> <mi>&Pi;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>m</mi> <mo>+</mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>Q</mi> <mi>Ci</mi> </msub> <mo>=</mo> <munderover> <mi>&Pi;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>m</mi> <mo>+</mo> <mn>1</mn> </mrow> </munderover> <mo>[</mo> <mi>P</mi> <mrow> <mo>(</mo> <msub> <mi>r</mi> <mi>Ci</mi> </msub> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <mi>M</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mi>Ci</mi> </msub> <mo>,</mo> <msub> <mi>s</mi> <mi>Ci</mi> </msub> <mo>)</mo> </mrow> <mo>]</mo> </mrow> <mrow> <msub> <mi>M</mi> <mi>BW</mi> </msub> <mo>=</mo> <munderover> <mi>&Pi;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>Q</mi> <mi>Wi</mi> </msub> <mo>=</mo> <munderover> <mi>&Pi;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </munderover> <mo>[</mo> <mi>P</mi> <mrow> <mo>(</mo> <msub> <mi>r</mi> <mi>Wi</mi> </msub> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <mi>M</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mi>Wi</mi> </msub> <mo>,</mo> <msub> <mi>s</mi> <mi>Wi</mi> </msub> <mo>)</mo> </mrow> <mo>]</mo> </mrow>式中:P(rWi)――由坐标系之间的初始位置关系决定的平移变换矩阵; <mrow> <mi>P</mi> <mrow> <mo>(</mo> <msub> <mi>r</mi> <mi>Wi</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <mi>E</mi> </mtd> <mtd> <msub> <mi>r</mi> <mi>Wi</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>式中:rWi――坐标系OWi的原点在坐标系OW(j‑1)中的位置矢量;M(nWi,SWi)――坐标系OWi随其运动副动构件沿nWi或者绕nWi相对初始位置移动或者转动运动量SWi的变换矩阵,当机床坐标轴为平动轴时,SWi为直线运动位移,M(nWi,SWi)为平动变换矩阵; <mrow> <mi>M</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mi>Wi</mi> </msub> <mo>,</mo> <msub> <mi>S</mi> <mi>Wi</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mi>T</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mi>Wi</mi> </msub> <mo>,</mo> <msub> <mi>S</mi> <mi>Wi</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <mi>E</mi> </mtd> <mtd> <msub> <mi>s</mi> <mi>Wi</mi> </msub> <msub> <mi>n</mi> <mi>Wi</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>s</mi> <mi>Wi</mi> </msub> <msub> <mi>l</mi> <mi>Wi</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>s</mi> <mi>Wi</mi> </msub> <msub> <mi>m</mi> <mi>Wi</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>s</mi> <mi>Wi</mi> </msub> <msub> <mi>n</mi> <mi>Wi</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>当机床坐标轴为转动轴时,SWi为转角位移,M(nWi,SWi)为旋转变换矩阵; <mrow> <mi>M</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mi>Wi</mi> </msub> <mo>,</mo> <msub> <mi>s</mi> <mi>Wi</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mi>T</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mi>Wi</mi> </msub> <mo>,</mo> <msub> <mi>s</mi> <mi>Wi</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <mi>E</mi> </mtd> <mtd> <msub> <mi>s</mi> <mi>Wi</mi> </msub> <msub> <mi>n</mi> <mi>Wi</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <mi>a</mi> </mtd> <mtd> <mi>b</mi> </mtd> <mtd> <mi>c</mi> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mi>d</mi> </mtd> <mtd> <mi>e</mi> </mtd> <mtd> <mi>f</mi> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mi>g</mi> </mtd> <mtd> <mi>h</mi> </mtd> <mtd> <mi>i</mi> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>式中: <mrow> <mi>a</mi> <mo>=</mo> <msubsup> <mi>l</mi> <mi>Wi</mi> <mn>2</mn> </msubsup> <mo>+</mo> <mo>&lt;</mo> <mn>1</mn> <mo>-</mo> <msubsup> <mi>l</mi> <mi>Wi</mi> <mn>2</mn> </msubsup> <mo>></mo> <msub> <mrow> <mi>cos</mi> <mi>s</mi> </mrow> <mi>Wi</mi> </msub> </mrow>b=lWimWi(1‑cossWi)‑nWisinsWic=nWilWi(1‑cossWi)+mWisinsWid=lWimWi(1‑cosSWi)+nWisinsWi <mrow> <mi>e</mi> <mo>=</mo> <msubsup> <mi>m</mi> <mi>Wi</mi> <mn>2</mn> </msubsup> <mo>+</mo> <mo>&lt;</mo> <mn>1</mn> <mo>-</mo> <msubsup> <mi>m</mi> <mi>Wi</mi> <mn>2</mn> </msubsup> <mo>></mo> <msub> <mrow> <mi>cos</mi> <mi>s</mi> </mrow> <mi>Wi</mi> </msub> </mrow>f=mWinWi(1‑cossWi)‑lWisinsWig=nWilWi(1‑cosSWi)‑mWisinsWih=mWinWi(1‑cosSWi)+lWisinsWi <mrow> <mi>i</mi> <mo>=</mo> <msubsup> <mi>n</mi> <mi>Wi</mi> <mn>2</mn> </msubsup> <mo>+</mo> <mo>&lt;</mo> <mn>1</mn> <mo>-</mo> <msubsup> <mi>n</mi> <mi>Wi</mi> <mn>2</mn> </msubsup> <mo>></mo> <msub> <mrow> <mi>cos</mi> <mi>s</mi> </mrow> <mi>Wi</mi> </msub> </mrow>II、引用机床几何参数,将之存入R参数,将刀具与距离刀具最近的一个运动副之间的平移和旋转变换计算写入含R参数的G代码,让机床软件自行计算,按下式计算机床x、y、z三个轴的平动运动量;x=xw‑tcr*sin(b)y=‑zw*sin(a)‑yw*cos(a)z=zw*cos(a)‑tcr*cos(b)+yw*sin(a)式中:tcr=L1+L2,L1为机床几何误差尺寸,L2为刀具尺寸;a为机床A旋转轴的旋转角度值;b为机床B旋转轴的旋转角度值;xw、yw、zw分别为前置程序编制软件给出的x、y、z轴到位点坐标;令x1=xwy1=‑zw*sin(a)‑yw*cos(a)z1=zw*cos(a)+yw*sin(a)(2)、将机床软件生成的数控程序点反算到编程坐标系中的点位,再将编程坐标系中的点位顺算到其它系统的机床,实现代码在各类系统的机床上通用,详细步骤如下:A、按下式将机床的G代码各轴运动量反算到机床软件的编程坐标系下:R5‑1*P1*P2*P3*R4*(0 0 0 1)T=(xw zw yw 1)T    (6)式中:R代表旋转运动变换矩阵即式5所示矩阵;Xw,yw,zw分别代表编程坐标系各平动轴的点位坐标;B、求解式(6),得到以机床xf,yf,zf三个平动轴运动量为变量的编程坐标系xw,yw,zw代数式:P14*P15*R16*(0 0 tcr 1)T=P11*R12*(xw zw yw 1)T    (7)式中:P代表平动变换矩阵即式4所示矩阵;R代表旋转运动变换矩阵即式5所示矩阵;后面的数字代表运动副在运动链中的编号顺序;C、将式6求解结果代入式7的求解结果,得到机床三个平动轴的运动量,即用于该机床G代码中的X,Y,Z值。
地址 618000 四川省德阳市高新技术产业园区金沙江西路666号
您可能感兴趣的专利