(57)【特許請求の範囲】
【請求項１】
工作機械の主軸の回転に伴う遠心力や発熱に起因して発生する変位を補正する工作機械の変位補正装置であって、
現時点を基準として過去の各時間範囲における主軸回転数の関数値の履歴を記憶位置番号に対応して記憶した履歴データテーブルと、
前記履歴データテーブルの各記憶位置番号に関連させた各記憶位置番号に補正係数を予め記憶した補正係数テーブルと、
補正処理手段とを備え、
前記主軸回転数の関数値は、前記主軸回転数の平方に比例する値、あるいは、前記主軸回転数の平方に比例する値を所定の補正定数で補正した値を用い、
前記補正処理手段は、
前記補正係数テーブルの中から各記憶位置番号とそれに対応する各補正係数とを読み出すとともに、前記履歴データテーブルの中から各記憶位置番号における主軸回転数の関数値を読み出し、
前記補正係数テーブルの中から読み出した各記憶位置番号k00，k01，k02，……kmに対応する各補正係数をｂ00，ｂ01，ｂ02，……ｂm、前記履歴データテーブルの中から読み出した各記憶位置番号における主軸回転数の関数値をＲ(k00)，Ｒ(k01)，Ｒ(k02)……Ｒ(km)として、変位量δを
δ＝Ｒ(k00)×ｂ00＋Ｒ(k01)×ｂ01＋Ｒ(k02)×ｂ02
……＋Ｒ(km)×ｂm
から算出し、この変位量δの符号を反転して補正値εを求め、
この補正値に基づいて前記工作機械の各軸の指令位置を補正することを特徴とする工作機械の変位補正装置。
【請求項２】
請求項１に記載の工作機械の変位補正装置において、前記補正係数は、前記主軸の回転数をランダムに変化させて主軸を回転させたときの主軸の変位実測値データと主軸の回転時間データおよび回転数データとを収集記憶し、これらのデータを基に回帰計算処理を行って求めたことを特徴とする工作機械の変位補正装置。
【請求項３】
請求項１または請求項２に記載の工作機械の変位補正装置において、前記履歴データテーブルに記憶される関数値の履歴は、主軸回転中は相対的に短い時間間隔で記憶され、主軸回転停止中は相対的に長い時間間隔で記憶されていることを特徴とする工作機械の変位補正装置。
【請求項４】
請求項１〜３のいずれかに記載の工作機械の変位補正装置において、前記履歴データテーブルの記憶位置番号を現在までの経過時間とは逆の順序に配列したことを特徴とする工作機械の変位補正装置。
【請求項５】
請求項１〜４のいずれかに記載の工作機械の変位補正装置において、前記履歴データテーブルには、データ更新時に過去の時間範囲における特定の複数の記憶位置番号の関数値の流動平均値が記憶され、前記補正係数テーブルには前記時間範囲に対応して１つの補正係数が記憶されていることを特徴とする工作機械の変位補正装置。
【請求項６】
請求項１〜５のいずれかに記載の工作機械の変位補正装置において、前記主軸回転数の関数値に代えて主軸回転数としたことを特徴とする工作機械の変位補正装置。
【発明の詳細な説明】
技術分野
本発明は、工作機械の主軸の回転に伴う遠心力や発熱に起因して発生する変位を補正する工作機械の変位補正装置に関する。
背景技術
従来、工作機械の主軸の回転に伴う発熱に起因して発生する熱変位を補正する熱変位補正装置として、主軸の温度変化を基に主軸の熱変位を補正する装置が知られている。
これは、温度変化によって熱変位が最も生じやすい部位と温度変化が比較的少ない部位との温度差、たとえば、主軸近傍とベッドとの温度差と、主軸変位との相関関係を予め求めておき、この相関関数から温度差に対応する補正値を算出し、この補正値を基に主軸の熱変位を補正する構成である。
しかし、従来の熱変位補正では、主軸がランダムな回転数で駆動される場合、主軸の熱変位量が、温度差から補正計算により求められた補正値に対して差が生じる場合が多いという欠点があった。
これは、たとえば、主軸を４０分ずつ１０００rpm、３０００rpm、０（停止）、２０００rpm、３０００rpm、１０００rpmと回転させたのち、１２０分間停止させたときの主軸の変位を実測し、この実測値と従来の補正計算による補正値とを対比させた場合、第８図に示すように、大きなずれが生じていることからも判る。
ところで、主軸が回転すると、主軸は遠心力で膨張する。主軸が遠心力で膨張すると、ポアソン効果により主軸の長さが短縮するため、それだけ工具の位置が被加工物に対して後退してしまうという欠点がある。
上述した従来の熱変位補正では、補正値を温度差から求めているため、このように主軸の回転数の変化に伴って即時的に発生する変位を補正することは不可能であった。
本発明の目的は、主軸がランダムに回転される場合でも、主軸の回転に伴う遠心力や発熱に起因して発生する変位を高精度に補正できる工作機械の変位補正装置を提供することにある。
発明の開示
本発明の工作機械の変位補正装置は、工作機械の主軸の回転に伴う遠心力や発熱に起因して発生する変位を補正する工作機械の変位補正装置であって、
現時点を基準として過去の各時間範囲における主軸回転数の関数値の履歴を記憶位置番号に対応して記憶した履歴データテーブルと、
前記履歴データテーブルの各記憶位置番号に関連させた各記憶位置番号に補正係数を予め記憶した補正係数テーブルと、
補正処理手段とを備え、
前記主軸回転数の関数値は、前記主軸回転数の平方に比例する値、あるいは、前記主軸回転数の平方に比例する値を所定の補正定数で補正した値を用い、
前記補正処理手段は、
前記補正係数テーブルの中から各記憶位置番号とそれに対応する各補正係数とを読み出すとともに、前記履歴データテーブルの中から各記憶位置番号における主軸回転数の関数値を読み出し、
前記補正係数テーブルの中から読み出した各記憶位置番号k00，k01，k02，……kmに対応する各補正係数をｂ00，ｂ01，ｂ02，……ｂm、前記履歴データテーブルの中から読み出した各記憶位置番号における主軸回転数の関数値をＲ(k00)，Ｒ(k01)，Ｒ(k02)……Ｒ(km)として、変位量δを
δ＝Ｒ(k00)×ｂ00＋Ｒ(k01)×ｂ01＋Ｒ(k02)×ｂ02
……＋Ｒ(km)×ｂm
から算出し、この変位量δの符号を反転して補正値εを求め、
この補正値に基づいて前記工作機械の各軸の指令位置を補正することを特徴とする。
ここで、補正係数は、主軸の回転数をランダムに変化させて主軸を回転させたときの主軸の変位実測値データと主軸の回転時間データおよび回転数データとを収集記憶し、これらのデータを基に回帰計算処理を行って求める。つまり、補正係数を、主軸の回転時間、回転数、経過時間を考慮した係数として求める。
また、主軸回転数の関数値としては、主軸回転数の平方に比例する値、あるいは、主軸回転数の平方に比例する値を所定の補正定数で補正した値を用いる。
たとえば、一例として、主軸回転数の平方を１６３８４で徐し、これから主軸回転数の０．１倍を差し引いた値を関数値として用いる。この場合、関数式は次のように表される。
〔関数値〕＝（〔回転数〕×〔回転数〕／１６３８４）−０．１×〔回転数〕……（１）
また、他の例として、主軸回転数の平方を１６３８４で徐し、これを更に、回転数を２５０００で徐した値の自然対数の逆数の３倍に１を加えた値で徐した値を関数値として用いる。この場合、関数式は次のように表される。
〔関数値〕＝（〔回転数〕×〔回転数〕／１６３８４）／
（１．０＋３．０／ｅｘｐ（〔回転数〕／２５０００））……（２）
一般に、遠心力は主軸回転数の平方に比例するため、遠心力に比例する変位も主軸回転数の平方に比例することになる。また、主軸に作用する力と摩擦係数が一定であれば、摩擦トルクが主軸回転数に比例する。摩擦動力は、摩擦トルクと主軸回転数の積であるから、主軸回転数の平方に比例する。発熱は、摩擦により消費したエネルギーの結果であるから、同様に、主軸回転数の平方に比例する。従って、主軸回転数の関数値として、主軸回転数の平方に比例する値を用いれば、補正精度を高めることができる。
ただ、現実には、主軸回転数の増加に伴い、作用力が増加する傾向にあるため、発熱は主軸回転数の平方の比例関係以上に急角度で変化する。従って、主軸回転数の関数値としては、主軸回転数の平方に比例する値を所定の補正定数により補正した値を用いれば、補正精度をより一層高めることができる。
補正にあたっては、補正係数テーブルの中から各記憶位置番号とともに補正係数を読み出すとともに、履歴データテーブルの中から各記憶位置番号における主軸回転数の関数値を読み出し、各記憶位置番号における関数値とこれに対応する補正係数とから補正値を算出する。
いま、補正係数テーブルの中から読み出した各記憶位置番号をk00，k01，k02，……km、これに対応する各補正係数をｂ00，ｂ01，ｂ02，……ｂmとする。また、履歴データテーブルの中から読み出した各記憶位置番号における主軸回転数の関数値をＲ(k00)，Ｒ(k01)，Ｒ(k02)……Ｒ(km)としたとき、変位量δを
δ＝Ｒ(k00)×ｂ00＋Ｒ(k01)×ｂ01＋Ｒ(k02)×ｂ02
……＋Ｒ(km)×ｂm……（３）
から算出し、この変位量δの符号を反転して補正値εを求める。
具体的には、前記（３）式における補正係数の値は微小な値となるので、補正係数の4194304倍の値を補正データテーブルに記憶しておき、計算後に4194304で徐して変位量δ求める。
たとえば、Ｘ，Ｙ，Ｚの３軸について補正する場合、補正係数テーブルの中から読み出した各記憶位置番号をk00，k01，k02……km、これに対応するＸ軸の各補正係数をｂ00x，ｂ01x，ｂ02x，……ｂmx、Ｙ軸の各補正係数をｂ00y，ｂ01y，ｂ02y，……ｂmy、Ｚ軸の各補正係数をｂ00z，ｂ01z，ｂ02z，……ｂmzとする。また、履歴データテーブルの中から読み出した各記憶位置番号における主軸回転数の間数値をＲ(k00)，Ｒ(k01)，Ｒ(k02)……Ｒ(km)としたとき、各軸に対する変位量δx，δy，δzは次式から求めることができる。
δx=(Ｒ(k00)×ｂ00x＋Ｒ(k01)×ｂ01x＋Ｒ(k02)×ｂ02x
……＋Ｒ(km)×ｂmx)／4194304
δy=(Ｒ(k00)×ｂ00y＋Ｒ(k01)×ｂ01y＋Ｒ(k02)×ｂ02y
……＋Ｒ(km)×ｂmy)／4194304
δz=(Ｒ(k00)×ｂ00z＋Ｒ(k01)×ｂ01z＋Ｒ(k02)×ｂ02z
……＋Ｒ(km)×ｂmz)／4194304……（４）
補正値は、変位量と絶対値が等しく符号を反転にしたものであるから、各軸（Ｘ，Ｙ，Ｚ軸）の補正値をεx，εy，εzとして、次式から求める。
εx＝−δx，εy＝−δy，εz＝−δz……………（５）
従って、主軸の回転時間、回転数、経過時間を考慮した補正係数と、主軸回転数の関数値とから補正値を求め、この補正値に基づいて工作機械の指令位置を補正しているから、主軸がランダムに回転される場合でも、主軸の回転に伴う遠心力や発熱に起因して発生する変位を高精度に補正できる。
すなわち、従来の補正方法では、その時点での温度差により補正値を算出しているため、主軸がランダムに回転される場合、主軸の熱変位に対して補正値が大きくなったり小さくなったりするうえ、主軸の回転数の変化に伴って発生する変位も補正不可能であるが、本発明の装置では、主軸がランダムに回転される場合でも、主軸の変位と補正値との誤差が少なく、しかも、遠心力に起因して発生する変位も補正できるので、高精度な補正を達成することができる。
以上において、履歴データテーブルに記憶される関数値の履歴は、主軸回転中は相対的に短い時間間隔で記憶され、主軸回転停止中は相対的に長い時間間隔で記憶されていることが望ましい。たとえば、主軸回転中は２０秒〜１分間隔で関数値を記憶し、主軸回転停止中は１分〜３分間隔で関数値を記憶することが望ましい。
このようにすれば、１つのテーブルで主軸回転中も主軸回転停止中も正確に変位の補正を実現できる。ちなみに、主軸回転中の変位特性と主軸回転停止中の変位特性とが異なる。これを同じ時間間隔で関数値を更新、記憶するようにすると誤差が生じやすいという欠点が考えられるが、本発明のようにすれば、１つのテーブルで主軸回転中も主軸回転停止中も正確に変位の補正を実現できる。
また、履歴データテーブルの記憶位置番号は、現在までの経過時間とは逆の順序に配列されていることが望ましい。
現在利用できる計算機用集積回路素子（以下、ＭＰＵと略称する）の多くは、メモリの記憶内容の一括転送機能を備えている。個々の数値を移動元より読み出しては移動先に書き込む処理をプログラムで記述するよりも、ＭＰＵに備えられている一括転送機能を利用すると、短時間で処理が完了する。しかし、この機能は低位の番地から高位の番地に向かって逐次的に処理が遂行されるので、転送元の範囲と転送先の範囲が重なっている場合に、転送先が転送元よりも高位にあると、重なった範囲が正しく処理されない。本発明は、履歴データテーブルの記憶位置が現在までの経過時間とは逆の順序に配列されているから、上記問題を回避できる。
また、履歴データテーブルには、データ更新時に過去の時間範囲における特定の複数の記憶位置番号の関数値の流動平均値を記憶し、前記補正係数テーブルには前記時間範囲に対応して１つの補正係数を記憶するようにしてもよい。
このようにすれば、補正係数テーブルのサイズ（行数）を節減できるとともに、補正計算の演算処理を高速化できる。
また、履歴データテーブルに記憶する値は、主軸回転数の関数値に代えて、主軸回転数を直接用いてもよい。
この場合、補正処理手段は、補正係数テーブルの中から履歴データテーブルの記憶位置番号と、これに対応する補正係数を読み出すとともに、履歴データテーブルの中からその記憶位置番号における主軸回転数を読み出し、この各記憶位置番号における主軸回転数から必要に応じて関数値を求め、これに対応する補正係数とから補正値を算出し、この補正値に基づいて前記工作機械の各軸の指令位置を補正する。
【図面の簡単な説明】
第１図は本発明にかかる変位補正装置の一実施形態を示す加工システムを示すブロック図である。
第２図は同上実施形態におけるＮＣ装置を示すブロック図である。
第３図は同上実施形態における補正係数テーブルを示す図である。
第４図は同上実施形態における補正係数の算出方法を示すブロック図である。
第５図は同上実施形態における履歴データテーブルを示す図である。
第６図は同上実施形態における履歴データテーブルの更新後の状態を示す図である。
第７図は同上実施形態において、主軸の回転数の変化と、補正計算によって求めた変位量（補正値）および変位実測値との関係を示すグラフである。
第８図は従来の補正方法による補正値と実測値との関係を示すグラフである。
発明を実施するための最良の形態
以下、本発明の一実施形態を図を参照しながら詳細に説明する。
第１図は本発明の変位補正装置を適用した加工システムを示している。同加工システムは、工作機械である横中ぐり盤１と、この横中ぐり盤１の駆動を制御するとともに、補正演算を実行するＮＣ装置２とから構成されている。
前記横中ぐり盤１は、ベッド１１と、このベッド１１上に設けられＸ軸方向（第１図の紙面と直交する方向）へ移動可能なテーブル１２と、前記ベッド１１上に立設固定されたコラム１３と、このコラム１３にＹ軸方向（第１図の上下方向）へ昇降可能に設けられた主軸ヘッド１４と、この主軸ヘッド１４にＺ軸方向（第１図の左右方向）へ進退可能に設けられたラム１５と、このラム１５内に回転可能に収納された主軸１６とから構成されている。なお、１７は前記主軸１６を回転駆動させるモータである。
前記ＮＣ装置２は、第２図に示すように、ＣＰＵ２１と、各種の処理プログラムや各種データを記憶するメモリ２２と、キーボード２３と、ディスプレイ２４と、プリンタ２５と、Ｉ／Ｏ２６，２７，２８，２９とを備えている。各Ｉ／Ｏ２６，２７，２８には前記横中ぐり盤１のＸ，Ｙ，Ｚ軸駆動系１８Ｘ，１８Ｙ，１８Ｚが、前記Ｉ／Ｏ２９には前記モータ１７が、それぞれ接続されている。ＣＰＵ２１は、前記メモリ２２に記憶された各種プログラムに従って、前記Ｘ，Ｙ，Ｚ軸駆動系１８Ｘ，１８Ｙ，１８Ｚの駆動を制御するとともに、補正処理を実行する。ここに、ＣＰＵ２１は、補正処理手段を兼ねている。
前記メモリ２２には、各種の処理プログラムを記憶する記憶エリア（図示省略）のほかに、各軸（Ｘ，Ｙ，Ｚ）の座標値を記憶する座標値テーブル２２Ａと、各軸（Ｘ，Ｙ，Ｚ）の補正値εx，εy，εzを記憶する補正値テーブル２２Ｂ、現時点を基準として過去の各時間範囲における工作機械の主軸回転数の関数値の履歴を記憶した履歴データテーブル２２Ｄと、この履歴データテーブル２２Ｄの記憶位置番号に関連させて各軸（Ｘ，Ｙ，Ｚ）の補正係数を予め記憶した補正係数テーブル２２Ｃとがそれぞれ設けられている。
前記履歴データテーブル２２Ｄへの関数値の登録と履歴の更新周期は、２０秒〜３分の間隔毎に行う。具体的には、主軸回転中は２０秒〜１分毎に、主軸回転停止中は１分〜３分毎に行う。これにより、履歴データテーブル２２Ｄに記憶される関数値の履歴は、主軸回転中は相対的に短い時間間隔で記憶され、主軸回転停止中は相対的に長い時間間隔で記憶される。
ここで、第５図および第６図は履歴データテーブル２２Ｄを示している。ここでは、説明の都合上、第５図および第６図の経過時間の欄には、仮に全範囲１分毎に登録、更新した場合の経過時間を記載したが、実際には主軸の回転停止に応じて経過時間は変動するため、必ずしもこの通りの経過時間になるとは限らない。
そこで、この不規則に変化する履歴データテーブル２２Ｄ上の経過時間をX1,X2,X3,……X512と定義する。
前記補正係数テーブル２２Ｃには、第３図に示すように、履歴データテーブル２２Ｄの記憶位置番号ｋ512〜ｋ00（以下、512〜0と記す場合がある）に関連して、現時点からX4前までは、更新周期毎の各時間範囲における各軸の補正係数
(ｂ00x，ｂ00y，ｂ00z)(ｂ01x，ｂ01y，ｂ01z)……(ｂ04x，ｂ04y，ｂ04z)
が記憶されている。
X4を超えX12前までは、X2毎の各時間範囲における各軸の補正係数
(ｂ05x，ｂ05y，ｂ05z)(ｂ06x，ｂ06y，ｂ06z)……(ｂ08x，ｂ08y，ｂ08z)
が記憶されている。
X12を超えX24前までは、X4毎の各時間範囲における各軸の補正係数
(ｂ09x，ｂ09y，ｂ09z)(ｂ10x，ｂ10y，ｂ10z)(ｂ11x，ｂ11y，ｂ11z)
が記憶されている。
X24を超えX64前までは、X8毎の各時間範囲における各軸の補正係数
(ｂ12x，ｂ12y，ｂ12z)(ｂ13x，ｂ13y，ｂ13z)……(ｂ16x，ｂ16y，ｂ16z)
が記憶されている。
X64を超えX128前までは、X16毎の各時間範囲における各軸の補正係数
(ｂ17x，ｂ17y，ｂ17z)(ｂ18x，ｂ18y，ｂ18z)……(ｂ20x，ｂ20y，ｂ20z)
が記憶されている。
X128を超えX512前までは、X32毎の各時間範囲における各軸の補正係数
(ｂ21x，ｂ21y，ｂ21z)(ｂ22x，ｂ22y，ｂ22z)……(ｂ32x，ｂ32y，ｂ32z)
が記憶されている。
ここで、補正係数テーブル２２Ｃに記憶する補正係数の求め方を説明する。
まず、実験により、主軸１６の先端部の変位実測値と主軸１６の回転時間および回転数とをデータとして収集する。ここで、主軸１６の回転数については、機械の発熱および放熱の関係を明確にするため、ランダムに変化させる（上げたり下げたりする）。
たとえば、主軸１６を３０分間５０００rpm、１時間１００００rpm、３０分間８０００rpm、１時間１５０００rpm、３０分間５０００rpm、３０分間１５０００rpmと回転させたのち停止させる。観測は回転開始前から継続的に行い、停止後も変位がほぼ復元するまで続ける。
このとき、所定時間間隔毎（たとえば、３０秒間隔毎）に、主軸１６のＸ，Ｙ，Ｘ各軸方向の変位を実測し、これを主軸回転数および時刻とともに記録する。
続いて、これらのデータに基づいて、重回帰分析の計算を行って、各補正係数を定める。
ちなみに、重回帰分析の計算は、たとえば、第４図に示す手順で行うことができる。
まず、主軸回転数の関数値を独立変数としてセットする。この場合、最近の数回は各回毎の変化が大きいので１回毎の関数値を独立変数としてセットする。経過時間がX5以上となると、各回毎の変化がやや緩慢になるので、X2間の平均の主軸回転数の関数値を独立変数としてセットする。さらに、経過時間がX12を超えると、各回毎の変化は一層緩慢になるので、X4間の平均の主軸回転数の関数値を独立変数としてセットする。このように時間の経過とともに変位の変化が緩慢になる程度に合わせて、平均する時間範囲を次第に拡大する。最後は、X481からX512までのX32間の平均値を３３番目の独立変数とする。
このように、関数値を平均化した値を独立変数とする理由は、▲１▼独立変数の個数を節約する、▲２▼独立変数相互の交絡を防止する、ことである。
つまり、独立変数の個数が多いと、その個数の元の連立方程式を解かなければならない。現状のいわゆる倍精度という浮動小数を使用する計算環境では、独立変数の個数が７０を超えると急激に計算困難に陥る。３３個はこの半分程度であるから、問題がない。
ちなみに、交絡とは、独立変数相互間の相関が独立変数と従属変数との間の相関よりも著しく強くなった状態をいう。交絡がある場合は、データの数値の僅かな変動により回帰係数が大幅に変動し、極端な場合には連立方程式の解が得られないケースが発生する。
続いて、主軸の変位実測値を従属変数としてセットたのち、積和計算を行う。すなわち、これらの独立変数と従属変数のそれぞれについて和と平均を求め、それらの相互関係において積の和を計算する。これをデータ数繰り返す。
次に、積の和のデータを和のデータで補正して積和を計算し、連立一次方程式の係数を決定し、続いて、収束値判定値を設定したのち、ガウスの掃き出し法により連立一次方程式を解いて、回帰（補正）係数を求め、この回帰（補正）係数を印刷する。これを独立変数の数だけ繰り返して、回帰（補正）係数を印刷する。
前記履歴データテーブル２２Ｄには、第５図に示すように、記憶位置番号512〜0に、現時点を基準として過去の各時間範囲における主軸回転数の関数値の履歴が記憶されるようになっている。なお、主軸回転数の関数値の算出は、前記（１）式に基づく。
ここで、履歴データテーブル２２Ｄを逐次的に更新しながら主軸回転数の関数値を記憶し、同時に流動平均を計算する方法について説明する。なお、第６図は更新後の履歴データテーブル２２Ｄの状態を示している。
最初に機械の電源を投入したときには、それ以前は主軸が回転していないから、全ての経過時間に対する関数値をゼロに初期化する。以後、１回毎に、次の（１）（２）（３）の計算を行い、これを繰り返す。なお、電源を断した場合、電源断中は履歴データテーブル２２Ｄの更新ができないが、電源が再投入された時点で電源断中に相当する回数の更新を実施する。ただし、電源断時間が履歴データテーブル２２Ｄの範囲を超える場合には最初の電源投入時と同様に全ての経過時間に対する関数値をゼロに初期化する。
（１）和の計算
▲１▼  記憶位置番号507の関数値と、記憶位置番号508の関数値とを合計して、その和をメモリＡ2に保存する。
▲２▼  記憶位置番号497の関数値と、記憶位置番号499の関数値とを合計して、その和をメモリＡ4に保存する。
▲３▼  記憶位置番号481の関数値と、記憶位置番号485の関数値とを合計して、その和をメモリＡ8に保存する。
▲４▼  記憶位置番号433の関数値と、記憶位置番号441の関数値とを合計して、その和をメモリＡ16に保存する。
▲５▼  記憶位置番号353の関数値と、記憶位置番号369の関数値とを合計して、その和をメモリＡ32に保存する。
（２）シフト
記憶位置番号1からの５１２個の関数値を、記憶位置番号0にシフトする。
（３）平均の計算
▲１▼  メモリＡ2の値を２で割り、その商を記憶位置番号506に書き込む。
▲２▼  メモリＡ4の値を２で割り、その商を記憶位置番号496に書き込む。
▲３▼  メモリＡ8の値を２で割り、その商を記憶位置番号480に書き込む。
▲４▼  メモリＡ16の値を２で割り、その商を記憶位置番号432に書き込む。
▲５▼  メモリＡ32の値を２で割り、その商を記憶位置番号352に書き込む。
ところで、現在利用できる計算機用集積回路素子（以下、ＭＰＵと略称する）の多くは、メモリの記憶内容の一括転送機能を備えている。個々の数値を移動元より読み出しては移動先に書き込む処理をプログラムで記述するよりも、ＭＰＵに備えられている一括転送機能を利用すると、短時間で処理が完了する。しかし、この機能は低位の番地から高位の番地に向かって逐次的に処理が遂行されるので、転送元の範囲と転送先の範囲が重なっている場合に、転送先が転送元よりも高位にあると、重なった範囲が正しく処理されない。この問題を避けるために、第５図および図６図においては、記憶位置番号を経過時間とは逆の順序に割り付けている。
次に、本実施形態の作用を説明する。
横中ぐり盤１およびＮＣ装置２の電源がオンされ、ＮＣ装置２からの指令に基づき横中ぐり盤１が運転されると、各軸駆動系１８Ｘ，１８Ｙ，１８Ｚの座標値が座標値テーブル２２Ａに更新記憶されるとともに、主軸１６の回転数の関数値が履歴データテーブル２２Ｄに記憶される。
この間、一定時間経過ごとに、補正処理が実行される。これには、ＣＰＵ２１が、補正を実行する時点を基準として、補正係数テーブル２２Ｃの中から各記憶位置番号とともに補正係数を読み出すとともに、その記憶位置番号における各主軸回転数の関数値を履歴データテーブル２２Ｄの中から読み出し、各記憶位置番号における主軸回転数の関数値とこれに対応する補正係数とをそれぞれ掛け算し、この各積の総和を基に補正値を算出する。
いま、Ｘ，Ｙ，Ｚの３軸について補正する場合、記憶位置番号512〜0で関連づけられた現時点X0の主軸回転数の関数値およびこれに対応する各軸の補正係数をＲ512，ｂ00x，ｂ00y，ｂ00z、X1前の時間範囲の主軸回転数の関数値およびこれに対応する各軸の補正係数をＲ511，ｂ01x ｂ01y ｂ01z、X2前の時間範囲の主軸回転数の関数値およびこれに対応する各軸の補正係数をＲ510，ｂ02x ｂ02y ｂ02z、……X5〜X6前の時間範囲の主軸回転数の関数値およびこれに対応する各軸の補正係数をＲ506，ｂ05x ｂ05y ｂ05z、……X481〜X512前の時間範囲の主軸回転数の関数値およびこれに対応する各軸の補正係数をＲ0，ｂ32x ｂ32y ｂ32zとすると、各軸に対する変位量δx，δy，δzを前記（４）式から求める。
つまり、変位量δx，δy，δzを、
δx=(Ｒ512×ｂ00x＋Ｒ511×ｂ01x＋Ｒ510×ｂ02x……
＋Ｒ506×ｂ05x……＋Ｒ0×ｂ32x)／4194304
δy=(Ｒ512×ｂ00y＋Ｒ511×ｂ01y＋Ｒ510×ｂ02y……
＋Ｒ506×ｂ05y……＋Ｒ0×ｂ32y)／4194304
δz=(Ｒ512×ｂ00z＋Ｒ511×ｂ01z＋Ｒ510×ｂ02z……
＋Ｒ506×ｂ05z……＋Ｒ0×ｂ32z)／4194304
から求める。
続いて、この変位量δx，δy，δzを前記（５）式に代入して、補正値εx（＝−δx），εy（＝−δy），εz（＝−δz）を求める。
たとえば、現時点X0の主軸回転数の関数値Ｒ512が5104、これに対応するＸ軸の補正係数ｂ00xが-2687、Ｙ軸の補正係数ｂ00yが-1080、Ｚ軸の補正係数ｂ00zが7450、
またX1前の主軸回転数の関数値Ｒ511が5104、これに対応するＸ軸の補正係数ｂ01xが2525、Ｙ軸の補正係数ｂ01yが425、Ｚ軸の補正係数ｂ01zが-6467、
また、X2前の主軸回転数の関数値Ｒ510が5104、これに対応するＸ軸の補正係数ｂ02xが1178、Ｙ軸の補正係数ｂ02yが-206、Ｚ軸の補正係数ｂ02zが-3456、
……X5〜X6前の主軸回転数の関数値Ｒ506が3605、これに対応するＸ軸の補正係数ｂ05xが223、Ｙ軸の補正係数ｂ05yが2000、Ｚ軸の補正係数ｂ05zが-3120、
……X481〜X512前の主軸回転数の関数値Ｒ0が0、これに対応するＸ軸の補正係数ｂ32xが10、Ｙ軸の補正係数ｂ32yが100、Ｚ軸の補正係数ｂ32zが-600であったとすると、各軸の変位量δx，δy，δzは次のようになる。
δx=(5104×(-2687)＋5104×2525＋5104×1178……
＋3065×223……＋0×10)／4194304
=10185628／4194304=2.428〔μｍ〕
δy=(5104×(-1080)＋5104×425＋5104×(-206)……
＋3065×2000……＋0×10)／4194304
=23201458／4194304=5.532〔μｍ〕
δz=(5104×7450＋5104×(-6467)＋5104×(-3456)……
＋3065×(-3120)……＋0×(-600))／4194304
＝-65685732／4194304=-15.661〔μｍ〕
従って、補正値εx，εy，εzは、次のようになる。
εx＝−2.428〔μｍ〕
εy＝−5.532〔μｍ〕
εz＝15.661〔μｍ〕
なお、第５図に示す経過時間に該当する経過時間の補正係数が第３図中にない場合には、これに対応する計算は行わない。たとえば、第５図の記憶位置番号499の経過時間(X12〜X13)に該当する経過時間は第３図中にないため、これに対応する計算は行わない。ただ、その時点で使われない数値もX1毎にシフトされていくことにより、何回かの後に使用される。
このようにして、現時点を基準として過去の各時間範囲における主軸回転数の関数値Ｒ512，Ｒ511，Ｒ510，……Ｒ506……Ｒ0と、この時間範囲に対応する各軸の補正係数
ｂ00x，ｂ01x，ｂ02x，……ｂ05x……ｂ32x，
ｂ00y，ｂ01y，ｂ02y，……ｂ05y……ｂ32y，
ｂ00z，ｂ01z，ｂ02z，……ｂ05z……ｂ32z，
とから各軸の変位量δx，δy，δzを算出したのち、この変位量δx，δy，δzの符号を反転して各軸の補正値εx，εy，εzを算出し、この補正値εx，εy，εzを補正値テーブル２２Ｂに更新記憶させる。
その結果、それ以降に指令されたＮＣ指令位置が、補正値テーブル２２Ｂの補正値εx，εy，εzだけ加減されて指令されることにより、各軸の変位量が補正値テーブル２２Ｂに記憶された補正値εx，εy，εzにより補正される。
本実施形態によれば、現時点を基準として過去の各時間範囲における主軸回転数の関数値の履歴を履歴データテーブル２２Ｄに記憶させるとともに、この履歴データテーブル２２Ｄの記憶位置番号に関連させて補正係数を補正係数テーブル２２Ｃに予め記憶しておき、補正にあたって、補正係数テーブル２２Ｃの中から記憶位置番号と補正係数とを読み出すとともに、履歴データテーブル２２Ｄの中から各記憶位置番号に対応する主軸回転数の関数値を読み出し、各記憶位置番号における主軸回転数の関数値とこれに対応する補正係数とから補正値を算出したのち、この補正値に基づいてＮＣ指令位置を補正するようにしたので、主軸１６がランダムに回転される場合でも、主軸１６の回転に伴う遠心力や発熱に起因して発生する変位を高精度に補正することができる。
たとえば、第７図（Ａ）に示す条件で主軸１６を回転させたとき、Ｘ，Ｙ，Ｚ軸の変位実測値と、本実施形態の補正計算によって求めた各軸の変位量δx(=−εx)，δy(=−εy)，δz(=−εz)とは、第７図（Ｂ）（Ｃ）（Ｄ）のようになった。同図から明らかなように、各変位量δx(=−εx)，δy(=−εy)，δz(=−εz)が変位実測値に対して誤差がきわめて小さく近似していることから、この補正値に基づいてＮＣ指令位置を補正すれば、主軸１６がランダムに回転される場合でも、高精度な補正を達成することができることが判る。
また、補正値εx，εy，εzの算出は、現時点を基準として過去の各時間範囲における主軸回転数の関数値をＲ512，Ｒ511，Ｒ510，……Ｒ0、補正係数をｂ00x，ｂ01x，ｂ02x，……ｂ32x、ｂ00y，ｂ01y，ｂ02y，……ｂ32y、ｂ00z，ｂ01z，ｂ02z，……ｂ32zとしたとき、各軸に対する変位量δx，δy，δzを
δx=(Ｒ512×ｂ00x＋Ｒ511×ｂ01x＋Ｒ510×ｂ02x……
＋Ｒ0×ｂ32x)／4194304
δy=(Ｒ512×ｂ00y＋Ｒ511×ｂ01y＋Ｒ510×ｂ02y……
＋Ｒ0×ｂ32y)／4194304
δz=(Ｒ512×ｂ00z＋Ｒ511×ｂ01z＋Ｒ510×ｂ02z……
＋Ｒ0×ｂ32z)／4194304
から求めたのち、この変位量δx，δy，δzの符号を反転して補正値εx，εy，εzを求めるようにしたので、きわめて簡単な演算によって補正値εx，εy，εzを求めることができる。
また、補正係数テーブル２２Ｃには、たとえば、Ｘ軸に関しては、現時点を基準としてX4前まではX1毎の各時間範囲における補正係数ｂ00x，ｂ01x，……ｂ04xを、X4を超えX12前まではX2毎の時間範囲における補正係数ｂ05x，ｂ06x，……ｂ08xを、X12を超えX24前まではX4毎の時間範囲における補正係数ｂ09x，ｂ10x，ｂ11xを、X24を超えX64前まではX8毎の時間範囲における補正係数ｂ12x，ｂ13x，……ｂ16xを、X64を超えX128前まではX16毎の時間範囲における補正係数ｂ17x，ｂ18x，……ｂ20xを、X128を超えX512前まではX32毎の時間範囲における補正係数ｂ21x，ｂ22x，……ｂ32xを、それぞれ記憶するようにしたので、つまり、現時点より過去になる程、補正係数の時間範囲を大きくしたので、少ない記憶容量で長時間前の補正係数を記憶させることができる。
また、履歴データテーブル２２Ｄに記憶する主軸回転数の関数値として、主軸回転数の平方に比例する値、あるいは、主軸回転数の平方に比例する値を主体として、それを補正した値を用いたので、主軸１６の回転に伴う遠心力や発熱に起因して発生する変位を高精度に補正することができる。
以上に述べた実施形態では、X4前まではX1毎の補正係数を、X4分を超えてX12前まではX2毎の補正係数を、X12を超えX24前まではX4毎の補正係数を、X24を超えX64前まではX8毎の補正係数を、X64を超えX128前まではX16毎の補正係数を、X128を超えX512前まではX32毎の補正係数を、それぞれ記憶させたが、これらに限定する必要はなく、任意の時間間隔に対応する補正係数を記憶させてもよい。
たとえば、０分から５１２分前まで１分毎の補正係数を記憶させる方法を採用すれば、前記実施形態に比較して、補正係数テーブル２２Ｃは１５倍以上の記憶容量が必要で、かつ、変位量および補正値を計算する際の乗算・加算回路も１５倍以上となるが、前述した（１）の和の計算および（３）の平均の計算が不要となり、補正のためのプログラムが簡単になる利点がある。
また、前記実施形態では、主軸回転数の関数値を用いて補正値を算出するようにしたが、主軸回転数を直接用いて補正値を算出するようにしも、従来の熱変位補正に比べ補正精度を向上させることができる。
本発明の工作機械の熱変位補正装置によれば、主軸がランダムに回転される場合でも、主軸の回転に伴う遠心力や発熱に起因して発生する変位を高精度に補正することができる。
産業上の利用可能性
本発明では、主軸の回転によって加工を行う工作機械、たとえば、横中ぐり盤やフライス盤などにおいて、主軸の回転に伴って発生する変位を補正するのに好適である。
【図１】
0003911296.tif 000002
【図２】
0003911296.tif 000003
【図３】
0003911296.tif 000004
【図４】
0003911296.tif 000005
【図５】
0003911296.tif 000006
【図６】
0003911296.tif 000007
【図７】
0003911296.tif 000008
【図８】
0003911296.tif 000009