(57)【要約】【課題】  数値制御式工作機械及びその熱変位補正方法において、数値制御式工作機械の稼働後、温度上昇が安定化するまでの過渡的状態での、補正量をボールネジシャフトの実際の伸び量に近似させることができ、且つ長時間にわたって機械加工を行う場合に高精度の機械加工を行うことができること。【解決手段】  メモリ運転モード又はＭＤＩ運転モードである場合（Ｓ３；Ｙｅｓ）、加工プログラムの１ブロック読み込みを行う（Ｓ４）。次に、読み込んだブロックがＧ０指令であるか否かを判断し、Ｇ０指令である場合（Ｓ５；Ｙｅｓ）、ＲＡＭ５３を参照し未処理の補正量があるか否かを判断する。今回の補正量演算タイミング経過後に補正処理を実行していないため、未処理の補正量がある場合（Ｓ６；Ｙｅｓ）、補正処理を実行する（Ｓ７）。Ｇ０指令による位置決め動作を実行した後（Ｓ８）、Ｓ１へリターンする。【選択図】  図１４
2010234500.tif 000002
【特許請求の範囲】
【請求項１】
送り駆動用ボールネジ機構と、このボールネジ機構のシャフトを回転駆動するサーボモータと、このサーボモータを加工プログラムの制御データに基づき制御するための制御手段とを有する数値制御式工作機械において、
前記加工プログラムに基づいて自動運転するメモリ運転モードと、加工プログラムを１ブロックずつ入力して運転するＭＤＩ運転モードを含む運転モードを択一的に設定可能に構成され、
前記サーボモータの回転速度を検出する速度検出手段と、
前記サーボモータの温度上昇を検知する温度検知手段と、
前記シャフトの全長を複数分割した複数区間に発生する第１発熱量を、前記サーボモータの回転速度と制御データとに基づいて短い所定時間毎に求める第１発熱量演算手段と、
前記サーボモータの温度上昇に基づいて、サーボモータから前記シャフトに所定期間の間に伝熱する第２発熱量を求める第２発熱量演算手段と、
前記複数区間の前記第１発熱量を前記所定期間分累積した合計発熱量と前記第２発熱量と非定常熱伝導方程式とに基づいて、複数区間の温度分布を前記所定期間毎に演算する温度分布演算手段と、
前記温度分布から前記シャフトの複数区間の熱変位量を前記所定期間毎に演算する熱変位量演算手段と、
前記複数区間の熱変位量に基づいて、前記シャフトのナット移動範囲を複数分割した複数の補正区間毎に前記制御データを夫々補正する補正量を前記所定期間毎に演算する補正量演算手段と、
前記メモリ運転モード又は前記ＭＤＩ運転モードにおいて、位置決め用制御データによる位置決め動作の実行前に、前記補正量に基づいて位置決め用制御データを補正する補正制御手段と、
を備えたことを特徴とする数値制御式工作機械。
【請求項２】
前記補正制御手段は、前記メモリ運転モード又は前記ＭＤＩ運転モードに設定されていない場合、前記所定期間毎に前記補正量に基づいて前記制御データを補正することを特徴とする請求項１に記載の数値制御式工作機械。
【請求項３】
送り駆動用ボールネジ機構と、このボールネジ機構のシャフトを回転駆動するサーボモータと、このサーボモータを加工プログラムの制御データに基づき制御するための制御手段とを有する数値制御式工作機械の熱変位補正方法において、
前記加工プログラムに基づいて自動運転するメモリ運転モードと、加工プログラムを１ブロックずつ入力して運転するＭＤＩ運転モードを含む運転モードを択一的に設定可能に予め構成しておき、
前記シャフトの全長を複数分割した複数区間に発生する第１発熱量を、前記サーボモータの回転速度と制御データとに基づいて短い所定時間毎に求める第１ステップと、
前記サーボモータの温度上昇を検知し、この温度上昇に基づいて、サーボモータから前記シャフトに所定期間の間に伝熱する第２発熱量を求める第２ステップと、
前記複数区間の前記第１発熱量を前記所定期間分累積した合計発熱量と前記第２発熱量と非定常熱伝導方程式とに基づいて、複数区間の温度分布を前記所定期間毎に演算する第３ステップと、
前記温度分布から前記シャフトの複数区間の熱変位量を前記所定期間毎に演算する第４ステップと、
前記複数区間の熱変位量に基づいて、前記シャフトのナット移動範囲を複数分割した複数の補正区間毎に前記制御データを夫々補正する補正量を前記所定期間毎に演算する第５ステップと、
前記メモリ運転モード又は前記ＭＤＩ運転モードにおいて、位置決め用制御データによる位置決め動作の実行前に、前記補正量に基づいて位置決め用制御データを補正する第６ステップと、
を備えたことを特徴とする数値制御式工作機械の熱変位補正方法。
【請求項４】
前記第６ステップにおいて、前記メモリ運転モード又は前記ＭＤＩ運転モードに設定されていない場合、前記所定期間毎に前記補正量に基づいて前記制御データを補正することを特徴とする請求項３に記載の数値制御式工作機械の熱変位補正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御式工作機械及びその熱変位補正方法に関し、特に数値制御式工作機械の運転中に生じるボールネジ機構の熱変位による誤差を補正するものに関する。
【背景技術】
【０００２】
ボールネジ機構は、位置決め機構として工作機械に広く使用されている。このボールネジ機構はシャフトとナット及び軸受各部との摩擦抵抗やサーボモータの発熱のために温度上昇による熱膨張を起こし、熱変位を生じる。現在のＮＣ工作機械ではセミクローズドループ型が一般的であるが、この方式のＮＣ工作機械ではシャフトの熱変位が、そのまま位置決め誤差となって現れる。
【０００３】
このため、シャフトに予張力を与え、熱膨張を吸収する方式が対策として使用されてきた。ところが最近では、太いシャフトを使用する上に送り速度が非常に速くなっているため発熱量が増大し、予張力方式で対応しようとすると、非常に大きな引張力を加えねばならず、ボールネジ機構の構造体が変形したり、スラスト軸受に無理な力が加わって焼き付く等の問題があった。
【０００４】
そこで、シャフトに無理な予張力を与えず、しかも、特別な測定装置を必要としないシャフトの熱変位補正方法が開発されており、特許文献１においてその方法が提案されている。特許文献１は、サーボモータの電機子電流と電圧との積から求めたシャフトの発熱量とシャフトを複数の区間に分割した非定常熱伝導方程式に基づく熱分布モデルとを用いる。この熱分布モデルによって温度分布を求め、さらに、シャフトの熱変位量を時々刻々に予想し、この熱変位量をＮＣ装置にピッチエラー補正として与えることにより、インプロセスで補正する方法である。
【０００５】
特許文献２は、特許文献１の方法にはサーボモータ自体の加減速のエネルギーが発熱量に含まれる問題があることに着目し、サーボモータの回転速度からボールネジシャフトの各区間の発熱量を算出する熱変位量補正方法を提案している。この方法によれば、算出された補正量をボールネジシャフトの実際の伸びに近似させることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開昭６３−２５６３３６号公報
【特許文献２】特開平４−２４００４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献２の方法では、サーボモータの発熱量が回転速度のみで算出されており、サーボモータの負荷によって発熱量が異なってくる点についての検討がなされていない。さらに、サーボモータの稼動初期と一定時間経過後における補正量算出の条件について開示されていない。それ故、サーボモータの稼動初期である過渡的状態において計算された補正量とボールネジシャフトの実際の伸びとが近似できない可能性が考えられる。
【０００８】
また、特許文献１，２の方法では一定時間経過毎に熱変位補正を行うので、切削移動中においても熱変位補正を行う。しかし、切削移動中に熱変位補正を行うとワークの加工面に加工筋が生じる可能性があるので、ワークの加工面の品質低下が問題となる。熱変位補正を行うタイミングとして、例えば加工プログラム中に熱変位補正指令用Ｍコードを設定する方法や、メモリ運転開始時に１回だけ補正を行う方法などがある。熱変位補正指令用Ｍコードを設定する方法では、作業者が加工プログラム中に熱変位補正指令用Ｍコードを設定する必要がある。それ故、多数の加工プログラムを使用しているユーザの場合、全ての加工プログラムにＭコードを設定する必要があるので大変手間がかかる。
【０００９】
一方、メモリ運転開始時に１回だけ補正する方法では、加工プログラムにＭコードを設定する必要がないという利点があるものの、運転開始時に１回補正を行った後、さらにボールネジシャフトに熱変位が発生した場合にも補正を行わない。それ故、長時間にわたって機械加工を行う場合には、ワークの加工精度が低下するという問題がある。
【００１０】
本発明の目的は、数値制御式工作機械及びその熱変位補正方法において、数値制御式工作機械の稼働後、温度上昇が安定化するまでの過渡的状態での、補正量をボールネジシャフトの実際の伸び量に近似させることができ、且つ長時間にわたって機械加工を行う場合に高精度の機械加工を行うことができることである。
【課題を解決するための手段】
【００１１】
請求項１の数値制御式工作機械は、送り駆動用ボールネジ機構と、このボールネジ機構のシャフトを回転駆動するサーボモータと、このサーボモータを加工プログラムの制御データに基づき制御するための制御手段とを有する数値制御式工作機械において、前記加工プログラムに基づいて自動運転するメモリ運転モードと、加工プログラムを１ブロックずつ入力して運転するＭＤＩ運転モードを含む運転モードを択一的に設定可能に構成され、前記サーボモータの回転速度を検出する速度検出手段と、前記サーボモータの温度上昇を検知する温度検知手段と、前記シャフトの全長を複数分割した複数区間に発生する第１発熱量を、前記サーボモータの回転速度と制御データとに基づいて短い所定時間毎に求める第１発熱量演算手段と、前記サーボモータの温度上昇に基づいて、サーボモータから前記シャフトに所定期間の間に伝熱する第２発熱量を求める第２発熱量演算手段と、前記複数区間の前記第１発熱量を前記所定期間分累積した合計発熱量と前記第２発熱量と非定常熱伝導方程式とに基づいて、複数区間の温度分布を前記所定期間毎に演算する温度分布演算手段と、前記温度分布から前記シャフトの複数区間の熱変位量を前記所定期間毎に演算する熱変位量演算手段と、前記複数区間の熱変位量に基づいて、前記シャフトのナット移動範囲を複数分割した複数の補正区間毎に前記制御データを夫々補正する補正量を前記所定期間毎に演算する補正量演算手段と、前記メモリ運転モード又は前記ＭＤＩ運転モードにおいて、位置決め用制御データによる位置決め動作の実行前に、前記補正量に基づいて位置決め用制御データを補正する補正制御手段とを備えたことを特徴としている。
【００１２】
この数値制御式工作機械では、加工プログラムに基づいて自動運転するメモリ運転モードと、加工プログラムを１ブロックずつ入力して運転するＭＤＩ運転モードを含む運転モードを択一的に設定可能に構成してある。最初に第１発熱量演算手段が、シャフトの全長を複数分割した複数区間に発生する第１発熱量を、サーボモータの回転速度と制御データとに基づいて短い所定時間毎に求める。第２発熱量演算手段が、サーボモータの温度上昇に基づいて、サーボモータからシャフトに所定期間の間に伝熱する第２発熱量を求める。温度分布演算手段が、複数区間の第１発熱量を所定期間分累積した合計発熱量と第２発熱量と非定常熱伝導方程式とに基づいて、複数区間の温度分布を所定期間毎に演算する。
【００１３】
次に熱変位量演算手段が、温度分布からシャフトの複数区間の熱変位量を所定期間毎に演算する。補正量演算手段が、複数区間の熱変位量に基づいて、シャフトのナット移動範囲を複数分割した複数の補正区間毎に制御データを夫々補正する補正量を所定期間毎に演算する。それ故、数値制御式工作機械の稼働後、温度上昇が安定化するまでの過渡的状態での、補正量をボールネジシャフトの実際の伸び量に近似させることができる。
【００１４】
メモリ運転モード又はＭＤＩ運転モードにおいて、読み込んだ制御データが位置決め用制御データであるとき、補正制御手段が、位置決め用制御データによる位置決め動作の実行前に、補正量に基づいて位置決め用制御データを補正する。位置決め動作の実行前に熱変位補正を行うので、常に最新の補正量に基づく熱変位補正を行った状態で切削移動を実行することが可能となる。それ故、長時間にわたって機械加工を行う場合にも高精度の機械加工を行うことができる。
【００１５】
請求項２の数値制御式工作機械は、請求項１の発明において、前記補正制御手段は、前記メモリ運転モード又は前記ＭＤＩ運転モードに設定されていない場合、前記所定期間毎に前記補正量に基づいて前記制御データを補正することを特徴としている。
【００１６】
請求項３の数値制御式工作機械の熱変位補正方法は、送り駆動用ボールネジ機構と、このボールネジ機構のシャフトを回転駆動するサーボモータと、このサーボモータを加工プログラムの制御データに基づき制御するための制御手段とを有する数値制御式工作機械の熱変位補正方法において、前記加工プログラムに基づいて自動運転するメモリ運転モードと、加工プログラムを１ブロックずつ入力して運転するＭＤＩ運転モードを含む運転モードを択一的に設定可能に予め構成しておき、前記シャフトの全長を複数分割した複数区間に発生する第１発熱量を、前記サーボモータの回転速度と制御データとに基づいて短い所定時間毎に求める第１ステップと、前記サーボモータの温度上昇を検知し、この温度上昇に基づいて、サーボモータから前記シャフトに所定期間の間に伝熱する第２発熱量を求める第２ステップと、前記複数区間の前記第１発熱量を前記所定期間分累積した合計発熱量と前記第２発熱量と非定常熱伝導方程式とに基づいて、複数区間の温度分布を前記所定期間毎に演算する第３ステップと、前記温度分布から前記シャフトの複数区間の熱変位量を前記所定期間毎に演算する第４ステップと、前記複数区間の熱変位量に基づいて、前記シャフトのナット移動範囲を複数分割した複数の補正区間毎に前記制御データを夫々補正する補正量を前記所定期間毎に演算する第５ステップと、前記メモリ運転モード又は前記ＭＤＩ運転モードにおいて、位置決め用制御データによる位置決め動作の実行前に、前記補正量に基づいて位置決め用制御データを補正する第６ステップとを備えたことを特徴としている。
【００１７】
加工プログラムに基づいて自動運転するメモリ運転モードと、加工プログラムを１ブロックずつ入力して運転するＭＤＩ運転モードを含む運転モードを択一的に設定可能に予め構成してある。最初に、シャフトの全長を複数分割した複数区間に発生する第１発熱量を、サーボモータの回転速度と制御データとに基づいて短い所定時間毎に求める。サーボモータの温度上昇を検知し、この温度上昇に基づいて、サーボモータからシャフトに所定期間の間に伝熱する第２発熱量を求める。複数区間の第１発熱量を所定期間分累積した合計発熱量と第２発熱量と非定常熱伝導方程式とに基づいて、複数区間の温度分布を所定期間毎に演算する。
【００１８】
次に、温度分布からシャフトの複数区間の熱変位量を所定期間毎に演算し、複数区間の熱変位量に基づいて、シャフトのナット移動範囲を複数分割した複数の補正区間毎に制御データを夫々補正する補正量を所定期間毎に演算する。メモリ運転モード又はＭＤＩ運転モードにおいて、読み込んだ制御データが位置決め用制御データであるとき、位置決め用制御データによる位置決め動作の実行前に、補正量に基づいて位置決め用制御データを補正する。これにより、請求項１の場合と同様の作用を奏する。
【００１９】
請求項４の数値制御式工作機械の熱変位補正方法は、請求項３の発明において、前記第６ステップにおいて、前記メモリ運転モード又は前記ＭＤＩ運転モードに設定されていない場合、前記所定期間毎に前記補正量に基づいて前記制御データを補正することを特徴としている。
【発明の効果】
【００２０】
請求項１の発明によれば、サーボモータの温度上昇を検知する温度検知手段を有し、温度上昇に基づく第２発熱量を用いてシャフトの複数の区間の温度分布を演算して補正量を得るので、サーボモータの温度上昇が安定化するまでの過渡的状態においても補正量をシャフトの実際の伸びに近似させることができる。
【００２１】
メモリ運転モード又はＭＤＩ運転モードにおいて、位置決め用制御データによる位置決め動作の実行前に、補正量に基づいて位置決め用制御データを補正する補正制御手段を備えたので、常に最新の補正量に基づく熱変位補正を行った状態で切削移動を実行することができる。それ故、長時間にわたって機械加工を行う場合にも高精度の機械加工を行うことが可能となる。また、切削移動中に熱変位補正を行わないので、ワークの加工面の品質が低下しない。
【００２２】
請求項２の発明によれば、補正制御手段は、メモリ運転モード又はＭＤＩ運転モードに設定されていない場合、所定期間毎に補正量に基づいて制御データを補正するので、メモリ運転又はＭＤＩ運転を実行していないときは、所定期間毎に最新の補正量に基づく熱変位補正を行うことができる。
【００２３】
請求項３の発明によれば、温度上昇に基づく第２発熱量を用いてシャフトの複数の区間の温度分布を演算して補正量を得て、メモリ運転モード又はＭＤＩ運転モードにおいて、位置決め用制御データによる位置決め動作の実行前に、補正量に基づいて位置決め用制御データを補正するので、請求項１の場合と同様の効果を奏する。
【００２４】
請求項４の発明によれば、メモリ運転モード又はＭＤＩ運転モードに設定されていない場合、所定期間毎に補正量に基づいて制御データを補正するので、請求項２の場合と同様の効果を奏する。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施例に係る数値制御式工作機械の全体斜視図である。
【図２】本工作機械の側面図である。
【図３】Ｘ軸ボールネジ機構の構成図である。
【図４】工作機械の制御系のブロック図である。
【図５】ボールネジシャフトを複数分割した複数区間を説明する説明図である。
【図６】複数区間の合計の発熱量の記憶データを説明する説明図である。
【図７】モータの回転速度と電流を一定とした場合のモータ本体温度と経過時間との関係を示す説明図である。
【図８】モータ本体温度の算出方法を説明する図であり、（Ａ）は駆動開始後０〜ｔ１までのモータ本体温度と経過時間との関係図、（Ｂ）は駆動開始後ｔ１〜ｔ２までのモータ本体温度と経過時間との関係図、（Ｃ）は駆動開始後ｔ２〜ｔ３までのモータ本体温度と経過時間との関係図、（Ｄ）は駆動開始後０〜ｔ３までのモータ本体温度と経過時間との関係図である。
【図９】複数区間に分配した分配発熱量と温度を説明する説明図である。
【図１０】ピッチ誤差補正の為の補正区間の説明図である。
【図１１】各位置における温度上昇速度を示す図である。
【図１２】固定軸受からの各区間区切り位置における熱変位量を示す説明図である。
【図１３】熱変位補正制御のタイミングチャートである。
【図１４】熱変位補正制御プログラムのフローチャートである。
【図１５】補正量演算処理プログラムのフローチャートである。
【図１６】補正区間区切り位置における補正量演算処理プログラムのフローチャートである。
【発明を実施するための形態】
【００２６】
以下、本発明を実施するための形態について説明する。
【実施例】
【００２７】
以下、本発明の実施例について図面に基づいて説明する。
図１〜図４に基づいて、マシニングセンタ（数値制御式工作機械）Ｍの構成について説明する。図１に示すように、マシニングセンタＭは、ワークと工具とが相対移動することで、ワークに所望の機械加工（例えば、「フライス削り」、「穴空け」、「切削」等）を施すことができる工作機械である。
【００２８】
マシニングセンタＭは、鋳鉄製の基台であるベース１と、ベース１の上部に設けた機械本体２と、ベース１の上部に固定したスプラッシュカバー（図示外）とを構成の主体とする。機械本体２は、ワークの切削加工を行う。スプラッシュカバーは、機械本体２とベース１の上部を覆う箱状のカバーである。ベース１はＹ軸方向（後述する）に長い略直方体状の鋳造品である。ベース１の下部の四隅は、高さ調節が可能な脚部を夫々備えている。
【００２９】
次に、機械本体２について説明する。
図１に示すように、機械本体２は、コラム４と、主軸ヘッド５と、主軸（図示外）と、工具交換装置７と、テーブル８とを主体として構成されている。コラム４は、ベース１の後部に設けたコラム座部３の上面に固定しており、且つ、鉛直上方に延びている。主軸ヘッド５は、コラム４の前面に沿って昇降可能である。主軸ヘッド５は、その内部に主軸を回転可能に支持している。工具交換装置７は、主軸ヘッド５の右側に設けてある。工具交換装置７は、主軸の先端に取り付けた工具ホルダを他の工具ホルダに交換する。工具ホルダは、工具６（図２参照）を装着している。テーブル８は、ベース１の上部に設けてある。テーブル８は、ワークを着脱可能に固定する。コラム４の背面側には、箱状の制御ボックス９が設けてある。制御ボックス９は、その内側にマシニングセンタＭの動作を制御する数値制御装置５０（図４参照）を備えている。
【００３０】
次に、テーブル８の移動機構について説明する。サーボモータであるＸ軸モータ７１（図４参照）及びＹ軸モータ７２（図４参照）は、テーブル８をＸ軸方向（図１において、右斜め下をマシニングセンタMの前方とし、マシニングセンタMの左右方向）及びＹ軸方向（マシニングセンタMの奥行き方向）に夫々移動する。テーブル８の移動機構は、以下の構成からなる。テーブル８の下側に、直方体状の支持台１０が設けてある。支持台１０は、その上面にＸ軸方向に沿って延びる１対のＸ軸送りガイドレールを備えている。１対のＸ軸送りガイドレールは、その上にテーブル８を移動可能に支持している。
【００３１】
図３に示すように、テーブル８の下面にはナット部１６を配置してある。ナット部１６は、カップリング１７を介してＸ軸モータ７１から延びる送り軸としてのＸ軸ボールネジシャフト８１と螺合することでボールネジ機構を構成している。支持台１０に固定した固定軸受（前部軸受）１８が、Ｘ軸ボールネジシャフト８１のＸ軸モータ７１側の端部を支持している。可動軸受（後部軸受）１９がＸ軸ボールネジシャフト８１の反対側の端部を支持している。
【００３２】
ベース１の上部に長手方向に沿って延びる１対のＹ軸送りガイドレールが、その上に支持台１０を移動可能に支持している。支持台１０に設けたＸ軸モータ７１は、Ｘ軸送りガイドレールに沿って、テーブル８をＸ軸方向に移動駆動する。ベース１に設けたＹ軸モータ７２は、Ｙ軸送りガイドレールに沿って、支持台１０をＹ軸方向に移動駆動する。尚、Ｙ軸の移動機構もＸ軸と同様に、送り軸としてのＹ軸ボールネジシャフト（図示略）を有するボールネジ機構（図３参照）である。
【００３３】
テレスコピック式に収縮するテレスコピックカバー１１，１２が、テーブル８の左右両側でＸ軸送りガイドレールを覆っている。テレスコピックカバー１３とＹ軸後カバーとが、支持台１０の前後で夫々Ｙ軸送りガイドレールを覆っている。テレスコピックカバー１１，１２，１３とＹ軸後カバーとは、テーブル８がＸ軸方向とＹ軸方向の何れの方向に移動した場合でも、Ｘ軸送りガイドレールとＹ軸送りガイドレールを常に覆っている。それ故、テレスコピックカバー１１，１２，１３とＹ軸後カバーは、加工領域から飛散する切粉及びクーラント液等が各ガイドレール上に落下するのを防止する。
【００３４】
次に、主軸ヘッド５の昇降機構について説明する。
コラム４の前面側で上下方向に延びるガイドレール（図示外）が、リニアガイド（図示外）を介して主軸ヘッド５を昇降自在に案内している。ナット（図示外）が、コラム４の前面側の上下方向に延びる送り軸としてのＺ軸ボールネジシャフト（図示外）に対して主軸ヘッド５を連結している。Ｚ軸モータ７３（図４参照）がＺ軸ボールネジシャフトを正逆方向に回転駆動することで、主軸ヘッド５は上下方向に昇降駆動する。
【００３５】
図１，図２に示すように、工具交換装置７は、工具マガジン１４と、工具交換アーム１５とを備えている。工具マガジン１４は、工具６を支持する工具ホルダを複数収納する。工具交換アーム１５は、主軸に取付けた工具ホルダと他の工具ホルダとを把持し、且つ搬送して交換する。工具マガジン１４は、その内側に複数の工具ポット（図示外）と、搬送機構（図示外）とを備えている。工具ポットは、工具ホルダを支持する。搬送機構は、工具ポットを工具マガジン１４内で搬送する。
【００３６】
図４は、マシニングセンタＭにおける電気的構成を示している。数値制御装置５０は、マイクロコンピュータを含む。数値制御装置５０は、入出力インタフェース５４と、ＣＰＵ５１と、ＲＯＭ５２と、ＲＡＭ５３と、軸制御部６１ａ〜６４ａ，７５ａと、サーボアンプ６１〜６４と、微分器７１ｂ〜７４ｂなどを備えている。ＣＰＵ５１は、ＲＯＭ５２と、ＲＡＭ５３と、入出力インタフェース５４と各軸制御部６１ａ〜６４ａ、７５ａとバス５５を介して接続している。サーボアンプ６１〜６４は、夫々Ｘ軸モータ７１、Ｙ軸モータ７２、Ｚ軸モータ７３、主軸モータ７４に接続するとともに、各軸制御部６１ａ〜６４ａ、７５ａと接続している。軸制御部７５ａは、マガジンモータ７５に接続している。
【００３７】
Ｘ軸モータ７１、Ｙ軸モータ７２は、テーブル８を夫々Ｘ軸方向、Ｙ軸方向に移動させる為のモータである。マガジンモータ７５は、工具マガジン１４を回転移動させる為のモータである。主軸モータ７４は、前記主軸を回転させる為のモータである。Ｚ軸モータ７３は、主軸ヘッド５を昇降させる為のモータである。以下、Ｘ軸モータ７１、Ｙ軸モータ７２、Ｚ軸モータ７３、及び主軸モータ７４を総称して、モータ７１〜７４という。モータ７１〜７４は、夫々エンコーダ７１ａ〜７４ａを備えている。
【００３８】
軸制御部６１ａ〜６４ａは、ＣＰＵ５１からの移動指令量を受けて、電流指令（モータトルク指令値）を夫々サーボアンプ６１〜６４に出力する。サーボアンプ６１〜６４は、電流指令を受けて、夫々モータ７１〜７４に駆動電流を出力する。軸制御部６１ａ〜６４ａは、夫々エンコーダ７１ａ〜７４ａからの位置フィードバック信号を受けて、位置のフィードバック制御を行う。微分器７１ｂ〜７４ｂは、夫々エンコーダ７１ａ〜７４ａが出力した位置フィードバック信号を微分して速度フィードバック信号に変換し、軸制御部６１ａ〜６４ａに速度フィードバック信号として出力する。
【００３９】
軸制御部６１ａ〜６４ａは、夫々微分器７１ｂ〜７４ｂが出力する速度フィードバック信号に基づいて、速度フィードバックの制御を行う。電流検出器６１ｂ〜６４ｂは、夫々サーボアンプ６１〜６４がモータ７１〜７４に出力する駆動電流を検出する。電流検出器６１ｂ〜６４ｂは、駆動電流を夫々軸制御部６１ａ〜６４ａにフィードバックする。軸制御部６１ａ〜６４ａは、フィードバックを受けた駆動電流に応じて、電流（トルク）制御を行う。
【００４０】
軸制御部７５ａは、ＣＰＵ５１からの移動指令を受けて、マガジンモータ７５を駆動する。ＲＯＭ５２は、マシニングセンタＭの加工プログラムを機能させるメインの制御プログラム、図１４に示す熱変位補正制御の制御プログラム、図１５に示す補正量演算処理の制御プログラム、図１６に示す補正区間区切り位置における補正量演算処理の制御プログラム等を記憶している。
【００４１】
ＲＡＭ５３は、機械構造に関するパラメータ、物理的性質に関するパラメータ、及び後述する熱分配係数（比率）ηF, ηN, ηB、ピッチ誤差補正量のテーブル等を格納している。機械構造に関するパラメータとして、例えばボールネジシャフト８１の長さ、径、後述する基準位置等がある。物理的性質に関するパラメータとして、例えば密度、比熱、線膨張係数、熱容量、熱伝達係数、式（３），（４）で用いるγ、その他の諸定数等がある。
【００４２】
ＲＡＭ５３には、図６に示す発熱量、合計発熱量、モータ７１の回転速度及び駆動電流、図９に示す分配発熱量を更新しつつ記憶するデータエリアが設けられている。尚、ＲＡＭ５３には、種々のワークを機械加工する為の複数の加工プログラムも適宜格納される。また、前記ＲＡＭ５３に記憶する代わりに、フラッシュメモリに記憶してもよい。入出力インタフェース５４は、キーボード７７とディスプレイ７８に接続している。作業者がキーボード７７を操作することで、加工プログラムに基づいて自動運転するメモリ運転モードと、加工プログラムを１ブロックずつ入力して運転するＭＤＩ運転モードを含む運転モードを択一的に設定することができる。尚、加工プログラムは、複数のブロックで構成されている。ブロックは、動作を定義するものである。
【００４３】
次に、マシニングセンタＭのボールネジ機構に発生する熱変位に基づいて、モータ７１〜７３の制御量を補正する熱変位補正装置による補正量演算処理について説明する。
この補正量演算処理において熱変位を補正する際には、求めた熱変位を用いて前記ピッチ誤差補正量を補正することにより行うものとする。
【００４４】
マシニングセンタＭのボールネジ機構は、製造公差等によりボールネジシャフト８１の回転量とナット移動量とのピッチ誤差は避けられないので、マシニングセンタＭの出荷前の調整段階において予め設定したピッチ誤差補正量のテーブルに基づいてピッチ誤差を補正するようになっている。ピッチ誤差補正量のテーブルは、Ｘ軸、Ｙ軸、Ｚ軸ボールネジ機構のピッチ誤差を夫々補正する為のテーブルである。
本実施例では、Ｘ軸ボールネジシャフト８１の熱変位を補正する例について説明するが、Ｙ軸のボールネジ機構、Ｚ軸のボールネジ機構についても基本的に同様である。
【００４５】
図１０に示すように、Ｘ軸ボールネジシャフト８１のナット移動範囲８１ｂを例えば２０ｍｍの設定長で１５個の補正区間に分割し、補正区間ごとにピッチ誤差補正を行う。
このピッチ誤差を補正する為のピッチ誤差量は、出荷前の調整段階において、ナット部１６を位置Ｘ０から位置Ｘ３００までＸ軸方向へ２０ｍｍ間隔にて補正区間ごとに移動させる。このときの指令値に対する誤差、つまり（目標値−実移動量）である誤差を精密に測定し、ピッチ誤差補正量のテーブルを作成し、そのテーブルをＲＡＭ５３に予め格納して出荷する。Ｙ軸、Ｚ軸についても同様にしてピッチ誤差補正量のテーブルを作成してＲＡＭ５３に予め格納して出荷する。
【００４６】
この熱変位量補正方法では、ボールネジシャフト８１の前側軸部８１ａと、ボールネジシャフト全長部と、後側軸部８１ｃの３領域の発熱量を求める。図５に示すように、ボールネジシャフト８１の端部８１ｅから端部８１ｆまでの区間（ボールネジシャフト全長部）を、例えば区間１〜区間５に５分割する。但し、この５分割は一例に過ぎず５分割に限定される訳ではない。上記の複数の区間について、例えば、２ミリ秒毎に、区間毎の発熱量を求める。
【００４７】
図５，図６に示すように、ＲＡＭ５３には、所定時間（例えば、３０秒）に区間１〜５に発生した合計の発熱量Ｑ1〜Ｑ5と、それら発熱量Ｑ1〜Ｑ5の合計発熱量ＱTと、Ｘ軸モータ７１の回転速度ωと駆動電流ｉを格納するデータエリアが設けられている。
【００４８】
［合計発熱量の算出］
上記の所定時間毎に、加工プログラムのＸ軸送りデータ（制御データ）に基づいて、ナット部１６がどの区間に位置しているかを判別し、エンコーダ７１ａの検出信号から求めるＸ軸モータ７１によるテーブル送り速度Ｆから発熱量を次の（１）式により求める。その発熱量はＲＡＭ５３のデータエリアに格納する。尚、ナット部１６は、例えば原点座標Ｘ０からＸ３００までの間（３００ｍｍの範囲）を移動するものとする。
【００４９】
Ｑ＝Ｋ1×ＦT                                              ・・・（１）
ここで、Ｑは発熱量、Ｆは送り速度、Ｋ1は所定の定数、Ｔは所定の定数である。
【００５０】
図６に示すように、区間１〜５におけるナット部１６の移動による発熱量は、所定時間（２ミリ秒）毎に算出され、その発熱量の前記の所定時間分の合計発熱量Ｑ1〜Ｑ5（つまり、１５０００回分の発熱量の合計）が算出されてデータエリアに格納される。３０秒の間に発生した区間１〜５の発熱量Ｑ1〜Ｑ5を合計した合計発熱量ＱTと、３０秒の間におけるＸ軸モータ７１の２ミリ秒毎の回転速度ω（つまり、ω0，ω1，・・ω14999）のデータが夫々データエリアに格納される。
【００５１】
［合計発熱量の分配］
以下に示す合計発熱量ＱTの分配方法においては、ナット全長部、前側軸部８１ａ、後側軸部８１ｃにおいて互いに他の部分への熱伝導が生じず、熱的には近似的に独立しているとみなす。合計発熱量ＱTに対する発熱部（軸受１８，１９とナット部１６）の比率は送り速度の如何に関わらずほぼ一定であるとする。
【００５２】
合計発熱量ＱT、前側軸部１８ａの発熱量ＱF、ナット全長部の発熱量ＱN、後側軸部１８ｃの発熱量ＱBとすると、これら発熱部の発熱量ＱF，ＱN，ＱBのうちの発熱量ＱN，ＱBは次式により算出することができる。
【００５３】
ＱN＝ηN×ＱT
ＱB＝ηB×ＱT
ここで比率ηN，ηBは前記知見により一定であり、実機によりＱN，ＱBを測定し、比率ηN，ηBを予め求めておくものとする。
【００５４】
［Ｘ軸モータのモータ本体の温度と発熱量ＱFの算出］
Ｘ軸モータ７１のモータ本体の温度と発熱量ＱFの算出方法について説明する。
図７に示すように、Ｘ軸モータ７１の回転速度ωおよび駆動電流ｉを一定とした場合の、モータ本体の温度変化について説明する。マシニングセンタＭの駆動を開始すると、モータ本体温度ΘMは曲線１５０を描きながら上昇し、一定の温度で飽和する。この飽和時の温度を、飽和温度Ｌ1aという。飽和温度Ｌ1aは、次の式で表すことができる。
Ｌ1a＝Ｋ2・ω＋Ｋ3・ｉ2                            ・・・（２）
Ｋ2，Ｋ3はサーボモータ固有の定数、ωはモータ回転速度、i はＸ軸モータ７１の駆動電流である。
【００５５】
モータ本体温度ΘMの上昇を示す曲線１５０は、次の式で表すことができる。
ΘM＝Ｌ1a・｛1 −ｅｘｐ（−γ・ｔ）｝                ・・・（３）
ここで、γはＸ軸モータ７１に固有の定数、ｔは駆動開始からの経過時間である。モータ本体温度ΘMが飽和温度Ｌ1aに達した後（図７ではｔ＝８時間の時点）、マシニングセンタＭを停止すると、モータ本体温度ΘMは、曲線１５１を描きながら下降する。曲線１５１は、次式で表すことができる。
ΘM＝Ｌ1a・ｅｘｐ（−γ・ｔ）                  ・・・（４）
γはサーボモータ固有の定数、ｔは駆動停止からの経過時間である。
【００５６】
上記式（３）から、マシニングセンタＭの駆動開始からａ分後のモータ本体温度ΘM1aは、次の式で表すことができる。
ΘM1a＝Ｌ1a・｛１−ｅｘｐ（−γ・ａ／６０）｝
上記式（４）から、マシニングセンタＭの駆動停止からａ分後のモータ本体温度ΘM-1aは、次の式で表すことができる。
ΘM-1a＝Ｌ1a・ｅｘｐ（−γ・ａ／６０）
【００５７】
以上では、Ｘ軸モータ７１の回転速度ωと駆動電流ｉを一定とした場合のモータ本体の温度変化について説明したが、実際のマシニングセンタＭの駆動時には、Ｘ軸モータ７１の回転速度ωと駆動電流ｉが一定とは限らない。特に、稼働初期の過渡的状態では、回転速度ωと駆動電流ｉが一定とならない。それ故、所定時間（３０秒）毎に、実際の回転速度ωと駆動電流ｉ（２ミリ秒毎に実測した回転速度と駆動電流の夫々の平均値）から、式（２）を用いてＸ軸モータ７１の飽和温度を求める。本実施例では、飽和温度と経過時間から、上記式（３）および式（４）を用いて、サーボモータ本体の温度変化を求める。本実施例では、以下のように、得られた温度変化を加算することでモータ本体の温度を求める。
【００５８】
以下に、モータ本体の温度の算出方法について図８に基づいて説明する。尚、以下の説明では、マシニングセンタＭの駆動開始後、時刻ｔ１，ｔ２，・・・（分）と時間が経過したものとして説明する。すなわち、時刻０，ｔ１，ｔ２，・・・の夫々の間隔が、夫々の処理における経過時間である。
【００５９】
モータ本体温度ΘMは、上記経過時間中は前述の式（３）に従って上昇し、その後式（４）に従って低下するものとする。図８（Ａ）に示すように、時刻０から時刻ｔ１までの間の経過時間に基づくモータ本体温度ΘMt1は、時刻０から時刻ｔ１までは上昇し、時刻ｔ１を過ぎると下降する曲線３０１を描く。モータ本体温度ΘMt1の時刻ｔ１における値ΘMt1-1は、式（３）に従って、以下のように算出できる。
ΘMt1-1＝Ｌt1・｛１−ｅｘｐ（−γ・ｔ１／６０）｝
Ｌｔ１は時刻０から時刻ｔ１間のＸ軸モータ７１の実際の回転速度ωと駆動電流ｉから求めた飽和温度である。
【００６０】
モータ本体温度ΘMt1は、時刻ｔ１以後は式（４）に従って低下するので、時刻ｔ２におけるモータ本体温度ΘMt1の値ΘMt1-2は以下のように算出する。
ΘMt1-2＝ΘMt1-1・ｅｘｐ｛−γ・（ｔ２−ｔ１）／６０｝
同様に、時刻ｔ３，ｔ４におけるモータ本体温度ΘMt1の値ΘMt1-3，ΘMt1-4も、式（４）に従って、夫々以下のように算出できる。
ΘMt1-3＝ΘMt1-1・ｅｘｐ｛−γ・（ｔ３−ｔ１）／６０｝
ΘMt1-4＝ΘMt1-1・ｅｘｐ｛−γ・（ｔ４−ｔ１）／６０｝
【００６１】
図８（Ｂ）に示すように、時刻ｔ１から時刻ｔ２までの間の経過時間に基づくモータ本体温度ΘMt2は、時刻ｔ１から時刻ｔ２までは上昇し、時刻ｔ２を過ぎると下降する曲線３０２を描く。時刻ｔ１から時刻ｔ２までの間のＸ軸モータ７１の実際の回転速度ωと駆動電流ｉから飽和温度Ｌt2が算出できるので、式（３）および式（４）を用いて、時刻ｔ２，ｔ３，ｔ４におけるモータ本体温度ΘMt2-1，ΘMt2-2，ΘMt2-3は、夫々以下のように算出できる。
【００６２】
ΘMt2-1＝Ｌt2・［１−ｅｘｐ｛−γ・（ｔ２−ｔ１）／６０｝］
ΘMt2-2＝ΘMt2-1・ｅｘｐ｛−γ・（ｔ３−ｔ２）／６０｝
ΘMt2-3＝ΘMt2-1・ｅｘｐ｛−γ・（ｔ４−ｔ２）／６０｝
図８（Ｃ）に示すように、時刻ｔ２から時刻ｔ３までの経過時間に基づくモータ本体温度ΘMt3は、時刻ｔ２から時刻ｔ３までは上昇し、時刻ｔ３を過ぎると低下する曲線３０３を描く。前述のΘMt1とΘMt2の場合と同様にして、時刻ｔ３，ｔ４，ｔ５におけるモータ本体温度ΘMt3-1，ΘMt3-2，ΘMt3-3を求めることができる。
【００６３】
前述のようにして算出したモータ本体温度ΘMt1，ΘMt2，ΘMt3・・・の各時刻における値を加算して、実際のモータ本体温度Θを算出する。例えば、時刻ｔ１，ｔ２，ｔ３，・・・の間の経過時間に基づいて、曲線３０１，３０２，３０３……（図８（Ａ）〜（Ｃ）参照）で例示するモータ本体温度ΘMt1，ΘMt2，ΘMt3を算出したとする。この場合、時刻ｔ１におけるモータ本体温度Θの値α1 は、ΘMt1-1である。時刻ｔ２におけるモータ本体温度Θの値α2 は、ΘMt1-2＋ΘMt2-1である。時刻ｔ３におけるモータ本体温度Θの値α3 は、ΘMt1-3＋ΘMt2-2＋ΘMt3-1である。同様に、各時刻におけるモータ本体温度Θの値を求めると、モータ本体温度Θは、図８（Ｄ）に示す曲線３０４で例示するように変化する。
【００６４】
次式（５）に従って、本実施例では、前述のように求めたモータ本体温度Θを用いて、前部軸受部発熱量ＱFを算出する。
ＱF＝Ｋ4（Θ−ΘS）                            ・・・（５）
ＱFは所定時間（３０秒）の間の発熱量であり、Ｋ4は係数である。ΘSはボールネジシャフト端部８１ｅ（図５参照）の温度であるが、本実施例では説明の簡単化のため、ΘSとしては区間１の右区切り位置の温度θ1の値の前回値を用いるものとする。
【００６５】
［各区間への発熱量の分配］
次に、ナット全長部の分配発熱量ＱNを５つの区間に分配する。前記データエリアに格納されている５つの合計発熱量Ｑ1〜Ｑ5と、ＱTに基づいて、次式から分配発熱量ＱNを５つの区間１〜５に分配する分配比率Ｘ1〜Ｘ5を求める。
【００６６】
Ｘ1＝区間１の合計発熱量Ｑ1/ ＱT
：
Ｘ5＝区分５の合計発熱量Ｑ5/ ＱT
こうして、各区間の分配比率Ｘ1〜Ｘ5とナット全長部の発熱量ＱNとから、次式により区間１〜５についての分配発熱量ＱN1〜ＱN5を求める。
【００６７】
ＱN1＝Ｘ1×ＱN
：
ＱN5＝Ｘ5×ＱN
上記の結果を用いて、区間１〜５の分配発熱量を図９のように表すことができる。
【００６８】
［温度分布の算出］
以上のようにして５つの区間１〜５の分配発熱量（図９参照）を求めた後、この分配発熱量から上昇した温度分布を算出する。温度分布は初期条件｛θ｝t=0、ｄ｛θ｝/ ｄｔt=0の下で次式（６）の非定常熱伝導方程式を解くことで求める。
【００６９】
［Ｃ］ｄ｛θ｝/ ｄｔ＋［Ｈ］｛θ｝＋｛Ｑ｝＝０                ・・・ (６）
ここで、［Ｃ］は熱容量マトリックス、［Ｈ］は熱伝導マトリックス、｛θ｝は温度分布、｛Ｑ｝は入出力される発熱量マトリックス、ｔは時間である。
【００７０】
具体的には、マシニングセンタＭの駆動後（ｔ＝０）、時刻がｔ１，ｔ２，‥‥（分）と時間が経過したときの温度分布を、次のように算出する。
【００７１】
図５のようにナット全長部を複数の区間に分割した場合、各部の温度、各区間に入力する発熱量を図９のように表すことができる。図９を用いて、式（６）は、次式のように表すことができる。
【００７２】
時刻ｔ＝０の時のボールネジシャフト各部の温度分布｛θ｝，およびモータ本体温度Θは既知である。それ故、本実施例は式（５）から前部軸受部発熱量ＱFを求める。式（１）から、ナット全長部の各区間の分配発熱量ＱN1〜ＱN5，及び後部軸受部発熱量ＱBも既知となる。求めた値を、式（７）の右辺に代入する。図１１に示すように、本実施例は、ボールネジシャフト各部における温度が上昇する速度（ｄ｛θ｝t=0／ｄｔ）、即ち、傾きを求めることができる。次の式に基づいて、本実施例は、求めた傾きに基づいてｔ＝ｔ１における各部の温度｛θ｝を求める。
｛θ｝t=t1＝｛θ｝t=0＋（ｄ｛θ｝t=0/ｄｔ）×ｔ１
【００７３】
本実施例は、｛θ｝t=t1のボールネジシャフト端部温度ΘSと、式（３）、（４）に基づいて求めたモータ本体温度Θとから、式（５）に基づいて、ｔ＝ｔ１におけるＱFを求める。求めた値を式（７）に代入し、ｄ｛θ｝t=t1／ｄｔを求める。その結果、ｔ＝ｔ２における各部の温度は、次の式から求めることができる。
｛θ｝t=t2＝｛θ｝t=t1＋（ｄ｛θ｝t=t1/ｄｔ）×（ｔ２−ｔ１）
ｔ＝ｔ３，‥‥の温度は、同様にして求めることができる。
【００７４】
［熱変位量の算出］
図９に示すように、ボールネジシャフト８１の５つの区間の温度θ1〜θ5を求めてから、これらの温度θ1〜θ5に基づいて、ボールネジシャフト８１の５つの区間区切り位置（図９のθ1〜θ5に対応する位置）の熱変位量を算出する。５つの区間区切り位置の熱変位量は、次式（１１）から求めることができる。
【００７５】
ΔＬ＝∫L0β×θ（Ｌ）ｄＬ                              ・・・  （１１）
ここで、ΔＬは熱変位量、βはシャフト材料の線膨張係数である。
積分記号は０〜Ｌの範囲についての積分を示し、Ｌは５つの区間に関する区間区切り位置までの長さを示す。各区間１〜４の長さを１００ｍｍとすると、０〜１００、０〜２００、０〜３００、・・等の範囲についての積分を示す。
【００７６】
［補正量の算出］
図１０は、ボールネジシャフト８１のナット移動範囲８１ｂを２０ｍｍ間隔で分割したピッチ誤差補正の補正区間１〜１５を示す。本実施例では、ナット部１６の移動範囲８１ｂがＸ０〜Ｘ３００（３００ｍｍの範囲）であり、各補正区間の長さが２０ｍｍであるため、１５個の補正区間がある。上記の補正区間１〜１５に行うピッチ誤差補正のテーブルは、マシニングセンタＭの出荷前にメーカーが試運転時の送り量誤差を測定し、その測定結果を加味して予め作成してＲＡＭ５３に格納してある。
【００７７】
ボールネジシャフト８１の５つの区間１〜５の区切り位置の熱変位量を求めてから、１５個の補正区間のピッチ誤差補正量を夫々補正する補正量を算出する。１５個の補正区間の補正量は、図１２と後述する［補正量演算式］から求めることができる。
【００７８】
図１２は、ピッチ誤差補正量を補正する補正量を求める場合の説明図である。
縦軸は固定ベアリング１８の位置を基準とする熱変位量、上側の横軸は固定軸受１８を基準とするボールネジシャフト８１の各部の位置であり、下側の横軸は１５個の補正区間の区切り位置（Ｘ０，Ｘ２０・・・，Ｘ３００）を示す。
ここで、ＤF1は区間１における熱変位量、
ＤF2は区間１と区間２における熱変位量の合計、
：
ＤF5は区間１〜区間５における熱変位量の合計である。
【００７９】
図１２に示すように、１５個の補正区間の区切り位置（Ｘ２０，・・・，Ｘ３００）の補正量を次式から求める。
［補正量演算式］
Ｘ０の補正量＝区間１の熱変位量＋区間２の熱変位量×｛（区間２の左区切り位置とＸ０間の長さ）／区間２の長さ：
Ｘ２０の補正量＝区間１の熱変位量＋区間２の熱変位量×｛（区間２の左区切り位置とＸ２０間の長さ）／区間２の長さ｝−Ｘ０の補正量：
Ｘ４０の補正量＝区間１の熱変位量＋区間２の熱変位量×｛（区間２の左区切り位置とＸ４０間の長さ）／区間２の長さ｝−Ｘ２０の補正量：
Ｘ６０の補正量＝区間１の熱変位量＋区間２の熱変位量×｛（区間２の左区切り位置とＸ６０間の長さ）／区間２の長さ｝−Ｘ４０の補正量：
Ｘ８０の補正量＝区間１の熱変位量＋区間２の熱変位量×｛（区間２の左区切り位置とＸ８０間の長さ）／区間２の長さ｝−Ｘ６０の補正量：
：
Ｘ３００の補正量＝区間１の熱変位量＋区間２の熱変位量＋区間３の熱変位量＋区間４の熱変位量＋区間５の熱変位量×｛（区間５の左区切り位置とＸ３００間の長さ）／区間５の長さ｝−Ｘ２８０の補正量：
【００８０】
次に、メモリ運転モード又はＭＤＩ運転モードにおいて，加工プログラム実行中にＧ０指令（位置決め用制御データ）が入力されたとき、位置決め動作の実行前にモータ７１〜７３の制御量の補正を実行する熱変位補正制御について説明する。最初に熱変位補正制御の概要について、図１３に基づいて説明する。
【００８１】
図１３は熱変位補正制御のタイミングチャートである。「補正サンプリングクロック」は、Ｘ軸ボールネジシャフト８１とＹ軸ボールネジシャフトとＺ軸ボールネジシャフトに発生する熱変位量を演算し、モータ７１〜７３の制御量を補正するタイミングを示すものである。図１３において「運転状態」と「Ｇ０指令」と「Ｇ１指令（切削移動用制御データ）」と「補正」については、「Ｈ」状態のとき処理が実行中であることを示し、「Ｌ」状態のときは処理が実行中でないことを示す。補正サンプリングクロックの立ち上がり（補正量演算タイミング）から次の補正サンプリングクロックの立ち上がりまでの３０秒間で補正量演算処理を実行し、演算した補正量をＲＡＭ５３に記憶させる。補正サンプリングクロックの立ち上がり毎に補正量演算処理を実行する。
【００８２】
加工プログラムを実行していない場合、補正サンプリングクロックの立ち下がり（補正処理タイミング）で、ＲＡＭ５３に記憶した補正量に基づいて補正処理を実行する。
一方、メモリ運転モード又はＭＤＩ運転モードにおいて加工プログラムを実行している場合、補正処理タイミング経過後にＧ０指令が入力されたとき、Ｇ０指令に基づく位置決め動作の実行前に補正処理を実行する。
【００８３】
次に、数値制御装置５０が実行する熱変位補正制御について、図１４のフローチャートに基づいて説明する。尚、図中Ｓｉ（ｉ＝１，２・・・）は各ステップを示す。
この熱変位補正制御は、マシニングセンタＭの電源がＯＮしている間、数値制御装置５０が継続的に実行するものである。数値制御装置５０が熱変位補正制御を開始すると、補正量演算タイミングであるか否かを判断し、補正量演算タイミングである場合（Ｓ１；Ｙｅｓ）、補正量演算処理を実行してから（Ｓ２）、Ｓ３へ移行する。補正量演算タイミングでない場合は（Ｓ１；Ｎｏ）、補正量演算処理を実行せずにＳ３へ移行する。
【００８４】
Ｓ３においては、メモリ運転モード又はＭＤＩ運転モードであるか否かを判断し、メモリ運転モード又はＭＤＩ運転モードである場合（Ｓ３；Ｙｅｓ）、加工プログラムの１ブロック読み込みを行う（Ｓ４）。次に、読み込んだブロックがＧ０指令であるか否かを判断し、Ｇ０指令である場合（Ｓ５；Ｙｅｓ）、ＲＡＭ５３を参照し未処理の補正量があるか否かを判断する。
【００８５】
今回の補正量演算タイミング経過後に補正処理を実行していないため、未処理の補正量がある場合（Ｓ６；Ｙｅｓ）、補正処理を実行する（Ｓ７）。Ｇ０指令による位置決め動作を実行した後（Ｓ８）、Ｓ１へリターンする。但し、前回の補正量演算タイミング経過後に補正処理を実行していない場合は、前回の補正量演算タイミングでＲＡＭ５３に記憶した補正量を今回の補正量に加算したうえで補正を行う。
【００８６】
一方、今回の補正量演算タイミング経過後に補正処理を実行したため、未処理の補正量がない場合は（Ｓ６；Ｎｏ）、補正処理を実行せずにＧ０指令による位置決め動作を実行した後（Ｓ８）、Ｓ１へリターンする。Ｓ５においてＧ０指令でない場合は（Ｓ５；Ｎｏ）、読み込んだブロックに対する１ブロック実行後（Ｓ９）、Ｓ１へリターンする。
【００８７】
Ｓ３において、メモリ運転モード又はＭＤＩ運転モードでない場合、つまり、加工プログラムを実行していない場合は（Ｓ３；Ｎｏ）、補正処理タイミングであるか否かを判断する。補正処理タイミングである場合（Ｓ１０；Ｙｅｓ）、未処理の補正量がある場合は（Ｓ１１；Ｙｅｓ）、補正処理を実行した後（Ｓ１２）、Ｓ１へリターンする。Ｓ１０において補正処理タイミングでない場合（Ｓ１０；Ｎｏ）、又はＳ１１において未処理の補正量がない場合は（Ｓ１１；Ｎｏ）、補正処理を実行せずにＳ１へリターンする。但し、前回の補正量演算タイミング経過後に補正処理を実行していない場合は、前回の補正量演算タイミングでＲＡＭ５３に記憶した補正量を今回の補正量に加算したうえで補正を行う。尚、Ｓ１〜Ｓ１２を実行する数値制御装置５０が補正制御手段に相当する。
【００８８】
次に、Ｓ２の補正量演算処理について、図１５のフローチャートに基づいて説明する。尚、図中Ｓｉ（ｉ＝２０，２１・・・）は各ステップを示す。尚、Ｘ軸ボールネジシャフト８１の補正量演算処理について説明するが、Ｙ軸ボールネジシャフト、Ｚ軸ボールネジシャフトについても同様である。但し、この補正量演算処理は、前述した内容と重複する部分が多いので簡単に説明する。
【００８９】
数値制御装置５０がこの処理を開始すると、最初にＳ２０において初期設定が実行される。この初期設定においては、先ず、パラメータ等の設定データから有限要素法による演算に必要なマトリックスを設定すると共に、雰囲気温度を設定したり、ＲＡＭ５３の関連するメモリエリアをクリアする等の処理を実行する。次に、Ｓ２１において、ボールネジシャフト８１を図５に示すように５つの区間１〜５に分割する。
【００９０】
次に、Ｓ２２においてカウンタＩを０に設定し、Ｓ２３では、Ｘ軸送りデータ、エンコータ７１ａの検出信号を読み込む。次に、Ｓ２４においては、区間１〜５の２ミリ秒毎の発熱量と、モータ本体温度Θを演算してＲＡＭ５３に記憶する。Ｘ軸モータ７１の回転速度ωのデータもメモリに格納する。
【００９１】
次のＳ２５では、カウンタＩが「１」だけインクリメントされ、Ｓ２６ではカウンタＩのカウンタ値が「１４９９９」であるか否かを判定し、その判定がＮｏのうちはＳ２３へ戻ってＳ２３〜Ｓ２５を繰り返す。Ｓ２６の判定がＹｅｓになるとＳ２７へ移行する。Ｓ２７では、区間１〜５における３０秒間の合計発熱量Ｑ1〜Ｑ5、これらを合計した合計発熱量ＱTを演算しＲＡＭ５３に記憶する。
【００９２】
Ｓ２８では、前述の各部の発熱量ＱF、ＱN、ＱBを演算してＲＡＭ５３に記憶し、発熱量ＱNを区間１〜５へ分配した分配発熱量ＱN1〜ＱN5を演算してＲＡＭ５３に記憶する。さらに区間１〜５についての図９に示す分配発熱量も演算しＲＡＭ５３に記憶する。尚、発熱量ＱFを算出するとき、モータ本体温度Θとしては、ＲＡＭ５３に記憶していた所定時間の１５０００個のモータ本体温度Θの平均値を用い、ΘSとしては前回のθ1を用いて計算するものとする。Ｓ２９では、図９に示す分配発熱量に基づいて区間１〜５の上昇温度θ1〜θ5を演算してＲＡＭ５３に記憶する。
【００９３】
Ｓ３０では、前記の（１１）式に基づいて、５つの区間についての区間区切り位置の熱変位量を演算してＲＡＭ５３に記憶する。Ｓ３１では、［補正量演算式］の式に基づいて、前述のようにして１５個の補正区間区切り位置における補正量を演算する。次に、Ｓ３２では、Ｓ３１において求めた補正量をＲＡＭ５３に記憶させた後この処理を終了し、図１４のＳ３へ移行する。尚、エンコーダ７１ａが速度検出手段に相当し、Ｓ２４を実行する数値制御装置５０が第１発熱量演算手段と温度検知手段に相当する。また、Ｓ２８を実行する数値制御装置５０が第２発熱量演算手段に相当し、Ｓ２９を実行する数値制御装置５０が温度分布演算手段に相当し、Ｓ３０を実行する数値制御装置５０が熱変位量演算手段に相当する。
【００９４】
次に、Ｓ３１の補正区間区切り位置における補正量演算処理について、図１６のフローチャートに基づいて説明する。尚、図中Ｓｉ（ｉ＝４０，４１・・・）は各ステップを示す。数値制御装置５０がこの処理を開始すると、カウンタｎを０にリセットし（Ｓ４０）、次に位置Ｘｎの補正量ΔＭnを次式により演算する（Ｓ４１）。
【００９５】
最初に、ΔＭn＝ＤF＋ΔＤn×｛（Ｘｎ−ＸF）／Ｌn｝−ΔＭn-20、ｎ=0とから、位置Ｘ０の補正量ΔＭ０ を求める。尚、この式は前記の[補正量演算式] を簡単に表したものである。
ここで、ＤF：位置Ｘｎよりも固定側の演算区間で発生した熱変位量の合計、
ΔＤn：位置Ｘｎを含む演算区間で発生した熱変位量、
ＸF：位置Ｘｎを含む演算区間の左区切り位置、
Ｌn：位置Ｘｎを含む演算区間の長さである。
但し、ΔＭ0を求める場合に用いるΔＭ-20を０とする。
【００９６】
Ｓ４２においてｎを２０インクリメントした後、Ｓ４３においてｎが３２０であるか否か判定する。ｎが３２０でない場合（Ｓ６３；Ｎｏ）、位置Ｘ３００までの補正量についての演算を終了していないものと判定し、Ｓ４１へ戻って位置Ｘｎの補正量ΔＭnを演算する。位置Ｘ３００の補正量ΔＭ300を求めるまではＳ４１〜Ｓ４３を繰り返し実行する。  補正量ΔＭ300を求めてから（Ｓ４１）、Ｓ４２においてｎ＝３２０となるため、Ｓ４３の判定がＹｅｓとなるため、この処理を終了して、図１５のＳ３２へ移行する。尚、Ｓ４０〜Ｓ４３を実行する数値制御装置５０が補正量演算手段に相当する。
【００９７】
次に、以上説明したマシニングセンタＭ及びその熱変位補正方法の作用、効果について説明する。
このマシニングセンタＭでは、メモリ運転モードとＭＤＩ運転モードを含む運転モードを択一的に設定可能に構成してある。２ミリ秒毎に複数区間１〜５の発熱量を演算し、その複数区間１〜５の発熱量を３０秒分累積した発熱量Ｑ1〜Ｑ5を用いて、複数区間の分配発熱量ＱN1〜ＱN5を演算する。これと同時に、モータ７１からボールネジシャフト８１に３０秒の間に伝熱する前部軸受部発熱量ＱFを演算する。
【００９８】
次に、その分配発熱量ＱN1〜ＱN5と、前部軸受部発熱量ＱFと上記の非定常熱伝導方程式を用いて複数区間の温度分布θ1〜θ5を演算する。次に、その温度分布θ1〜θ5から複数区間の熱変位量ＤF1〜ＤF5を演算し、その熱変位量ＤF1〜ＤF5に基づいてピッチ誤差補正量を補正する補正量ΔＭ0 ，ΔＭ20，ΔＭ40，・・・ΔＭ300を演算する。これにより、モータ７１の温度上昇が安定化するまでの過渡的状態においても補正量をボールネジシャフト８１の実際の伸びに近似させることができる。
【００９９】
メモリ運転モード又はＭＤＩ運転モードにおいて、Ｇ０指令による位置決め動作の実行前に、補正量に基づいて制御データを補正するので、常に最新の補正量に基づく熱変位補正を行った状態でＧ１指令による切削移動を実行することができる。それ故、長時間にわたって機械加工を行う場合にも高精度の機械加工を行うことが可能となる。また、切削移動中に熱変位補正を行わないので、ワークの加工面の品質が低下しない。一方、メモリ運転又はＭＤＩ運転を実行していないときは、３０秒毎に補正量に基づいて制御データを補正するので、所定期間毎に最新の補正量に基づく熱変位補正を行うことができる。
【０１００】
次に、前記実施例を部分的に変更した変更例について説明する。
１］前記実施例では、熱変位量に基づいてピッチ誤差補正の補正量を補正するように構成したが、一例を示すものであってこれに限定される訳ではない。即ち、ピッチ誤差補正とは独立に、熱変位量に基づいて複数の補正区間毎に加工プログラムの制御データを補正するようにしてもよい。
２］前記実施例では、発熱量を演算する演算周期２ミリ秒を例にして説明したが、この演算周期は２ミリ秒に限るものではない。同様に前記の所定期間の３０秒も一例に過ぎず、これに限定される訳ではない。
【符号の説明】
【０１０１】
Ｍ        マシニングセンタ
５０      数値制御装置
７１      Ｘ軸モータ
７１ａ    エンコーダ
８１      Ｘ軸ボールネジシャフト
【図１】
2010234500.tif 000003
【図２】
2010234500.tif 000004
【図３】
2010234500.tif 000005
【図４】
2010234500.tif 000006
【図５】
2010234500.tif 000007
【図６】
2010234500.tif 000008
【図７】
2010234500.tif 000009
【図８】
2010234500.tif 000010
【図９】
2010234500.tif 000011
【図１０】
2010234500.tif 000012
【図１１】
2010234500.tif 000013
【図１２】
2010234500.tif 000014
【図１３】
2010234500.tif 000015
【図１４】
2010234500.tif 000016
【図１５】
2010234500.tif 000017
【図１６】
2010234500.tif 000018