发明名称 一种数控机床热误差建模与补偿的方法
摘要 本发明公开了一种数控机床热误差建模与补偿的方法,步骤包括:步骤1、采用红外成像仪寻找机床发热点,利用红外成像仪显示的机床每部分发热红外图像,找到每个发热区域温度最高区域,并在每个发热区域的温度最高位置布置温度传感器;步骤2、先通过实验测量热源处温度作为输入信号和机床的热变形量作为输出信号,然后采用反卷积的方法得到系统脉冲响应模型;步骤3、补偿时依次输入温度变化序列和对应的机床脉冲响应模型进行卷积,即得到机床的热误差预测值。本发明的方法,寻求最佳测温点简单快捷;采用反卷积方法,建模精度高;采用脉冲响应模型,可移植性好;反应速度快,完全能够满足机床补偿的实时性要求。
申请公布号 CN103034169A 申请公布日期 2013.04.10
申请号 CN201210574388.7 申请日期 2012.12.26
申请人 西安理工大学 发明人 高峰;张成新;李艳;武鹏飞;赵柏涵
分类号 G05B19/404(2006.01)I;B23Q17/00(2006.01)I 主分类号 G05B19/404(2006.01)I
代理机构 西安弘理专利事务所 61214 代理人 李娜
主权项 一种数控机床热误差建模与补偿的方法,其特征在于,按照以下步骤实施:步骤1、布置温度传感器采用红外成像仪寻找机床发热点,利用红外成像仪显示的机床每部分发热红外图像,找到每个发热区域温度最高区域,并在每个发热区域的温度最高位置布置温度传感器;步骤2、得到系统的脉冲响应模型先通过实验测量热源处温度作为输入信号,机床的热变形量作为输出信号,然后采用反卷积的方法得到系统脉冲响应模型,将目标机床视为一个多输入多输出系统,每个温度传感器作为系统一个输入,热误差在空间各个方向上的变化为系统输出,根据选定好的温度传感器,测得温度变化序列xj=(xj0,xj1,xj2,...xjn),j=1,2...r,其中的r为系统输入端个数,n为输入的采样个数;机床热误差序列yi=(yi0,yi1,yi2,...,yin,yi(n‑1),...,yi(n‑m)),i=1,2,...p,其中的p为系统输出个数,m为输出比输入多的采样个数,n>m,具体取值根据建模精度决定;对应第i个输出的机床系统脉冲响应模型矩阵为 <mrow> <msub> <mi>H</mi> <mi>i</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>H</mi> <mrow> <mi>i</mi> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>H</mi> <mrow> <mi>i</mi> <mn>2</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>H</mi> <mi>ir</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>对于第i个输出: <mrow> <msub> <mi>Y</mi> <mi>i</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>X</mi> <mn>1</mn> </msub> </mtd> <mtd> <msub> <mi>X</mi> <mn>2</mn> </msub> </mtd> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> <mtd> <msub> <mi>X</mi> <mi>r</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>H</mi> <mrow> <mi>i</mi> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>H</mi> <mrow> <mi>i</mi> <mn>2</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>H</mi> <mi>ir</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>+</mo> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo>,</mo> </mrow>其中的vi为系统测量误差,X1,X2,...Xr和Yi分别为温度变化序列xj和机床热误差序列yi构成的矩阵,如下 式(1)所示: <mrow> <msub> <mi>X</mi> <mi>j</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mn>0</mn> </mrow> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mn>0</mn> </mrow> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mn>2</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mn>0</mn> </mrow> </msub> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mi>jn</mi> </msub> </mtd> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mrow> <mo>(</mo> <mi>n</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> </msub> </mtd> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mrow> <mo>(</mo> <mi>n</mi> <mo>-</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow> </msub> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mn>0</mn> </mrow> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>x</mi> <mi>jn</mi> </msub> </mtd> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mrow> <mo>(</mo> <mi>n</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> </msub> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mn>0</mn> </mrow> </msub> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> </mtd> <mtd> </mtd> <mtd> <msub> <mi>x</mi> <mi>jn</mi> </msub> </mtd> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mrow> <mo>(</mo> <mi>n</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> </msub> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <mo>.</mo> </mtd> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>x</mi> <mrow> <mi>j</mi> <mn>0</mn> </mrow> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mi>j</mi> <mo>=</mo> <mn>1,2</mn> <mo>,</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mi>r</mi> <mo>,</mo> </mrow> <mrow> <msub> <mi>Y</mi> <mi>i</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mn>0</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mn>2</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mi>in</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mrow> <mo>(</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mrow> <mi>i</mi> <mrow> <mo>(</mo> <mi>n</mi> <mo>+</mo> <mi>m</mi> <mo>)</mo> </mrow> </mrow> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>则机床热误差的输出公式简写为:Yi=XHi+Vi,X=[X1,X2,...,Xr], <mrow> <msub> <mi>H</mi> <mi>i</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>H</mi> <mrow> <mi>i</mi> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>H</mi> <mrow> <mi>i</mi> <mn>2</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <mo>.</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>H</mi> <mi>ir</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>采用最小二乘反卷积方法求解机床脉冲响应估计,经推导得到脉冲响应模型表达式为:Hi=(XTX)‑1XTYi,          (2)其中的T表示对矩阵X进行转置;步骤3、得到系统的热误差预测值补偿时依次输入温度变化序列xj=(xj0,xj1,xj2,...)和对应的机床脉冲响应模型Hi,进行卷积Yi=XHi,X=[X1,X2,...,Xr],即得到机床的热误差预测值。
地址 710048 陕西省西安市金花南路5号