(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024078231
(43)【公開日】2024-06-10
(54)【発明の名称】数値制御装置及び判定方法
(51)【国際特許分類】
B23Q 15/18 20060101AFI20240603BHJP
G05B 19/404 20060101ALI20240603BHJP
B23Q 3/155 20060101ALI20240603BHJP
B23Q 17/00 20060101ALN20240603BHJP
【FI】
B23Q15/18
G05B19/404 K
B23Q3/155 F
B23Q17/00 B
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022190645
(22)【出願日】2022-11-29
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】100104178
【弁理士】
【氏名又は名称】山本 尚
(72)【発明者】
【氏名】寺田 弦
【テーマコード(参考)】
3C001
3C002
3C029
3C269
【Fターム(参考)】
3C001KA05
3C001TA01
3C001TB01
3C001TB05
3C001TB06
3C001TB10
3C002AA03
3C002DD14
3C002HH01
3C029EE01
3C029EE05
3C269AB05
3C269AB31
3C269BB03
3C269CC02
3C269EF10
3C269MN16
3C269MN23
3C269MN28
3C269MN29
(57)【要約】
【課題】主軸に対する工具の装着状態を精度よく判定できる数値制御装置及び判定方法を提供する。
【解決手段】数値制御装置は、ボールねじの伸縮量を推定する。数値制御装置は、Z軸モータの回転角度及び外乱力を取得する。数値制御装置は、Z軸モータのトルクを取得することで、トルクに含まれる外乱力を取得する。数値制御装置は、ボールねじの伸縮量、及び外乱力の時間微分である微分値の変動により決定されるピーク角度に基づき、主軸に対する工具の装着状態を判定する(S101)。
【選択図】
図15
【特許請求の範囲】
【請求項1】
工具を装着する主軸と、所定方向に延びる送り軸と、前記送り軸を前記所定方向に延びる軸周りに回転させるモータとを備え、前記モータが前記送り軸を回転させることで、前記主軸を移動して工具交換装置が把持する前記工具を前記主軸に装着可能な工作機械の動作を制御する数値制御装置において、
前記送り軸の前記所定方向への伸縮量を推定する推定部と、
前記工具の装着動作における前記モータのトルクを取得する第一取得部と、
前記推定部により推定された前記伸縮量、及び前記第一取得部により取得された前記トルクに基づき、前記主軸に対する前記工具の装着状態を判定する判定部と
を備えることを特徴とする数値制御装置。
【請求項2】
前記推定部は、
前記送り軸を介して前記主軸を前記所定方向に移動させる際に駆動する前記モータの情報を取得する第二取得部と、
前記第二取得部により取得された前記情報に基づき、前記送り軸に対して出入りする熱量を算出する算出部と
を含み、
前記算出部により算出された前記熱量に基づき、前記伸縮量を推定すること
を特徴とする請求項1に記載の数値制御装置。
【請求項3】
前記第二取得部は、前記情報として、前記トルクと、前記モータの回転速度とを取得することを特徴とする請求項2に記載の数値制御装置。
【請求項4】
前記第一取得部は、前記モータの回転角度を更に取得し、
前記判定部は、
前記第一取得部により取得された前記トルクを微分し、前記回転角度に対応する前記トルクの微分値を算出する微分部と、
前記微分部により算出された前記微分値のうち、最大又は最小の何れか一方を示す前記微分値に対応する前記回転角度をピーク角度として決定する第一決定部と、
前記第一決定部により決定された前記ピーク角度を、前記推定部により推定された前記伸縮量に基づき補正することで、補正ピーク角度を決定する第二決定部と
前記第二決定部により決定された前記補正ピーク角度に基づき、前記装着状態を判定する補正判定部と
を含むことを特徴とする請求項1に記載の数値制御装置。
【請求項5】
前記判定部は、
前記第二決定部により決定された前記補正ピーク角度を、前記主軸に対する前記工具の使用回数又は使用時間と対応付けて記憶する記憶部と、
前記記憶部により記憶された複数の前記補正ピーク角度に基づき統計処理を行い、統計値を算出する統計処理部と
前記統計処理部により算出された前記統計値に基づき、前記装着状態を判定する統計判定部と
を含むことを特徴とする請求項4に記載の数値制御装置。
【請求項6】
前記判定部は、
前記推定部によりn回目(nは二以上の整数)に推定された前記伸縮量と、前記推定部によりn-1回目に推定された前記伸縮量との差分が閾値以下の場合、前記装着状態を判定し、
前記差分が前記閾値よりも大きい場合、前記装着状態を判定しないことを特徴とする請求項1に記載の数値制御装置。
【請求項7】
前記推定部は、前記数値制御装置の制御周期に対して長い推定周期で前記伸縮量を推定することを特徴とする請求項1に記載の数値制御装置。
【請求項8】
前記第一取得部は、前記数値制御装置の制御周期ごとに前記トルク及び回転速度を取得することを特徴とする請求項1に記載の数値制御装置。
【請求項9】
工具を装着する主軸と、所定方向に延びる送り軸と、前記送り軸を前記所定方向に延びる軸周りに回転させるモータとを備え、前記モータが前記送り軸を回転させることで、前記主軸を移動して工具交換装置が把持する前記工具を前記主軸に装着可能な工作機械における前記主軸に対する前記工具の装着状態の判定方法であって、
前記送り軸の前記所定方向への伸縮量を推定する推定工程と、
前記工具の装着動作における前記モータのトルクを取得する第一取得工程と、
前記推定工程により推定された前記伸縮量、及び前記第一取得工程により取得された前記トルクに基づき、前記装着状態を判定する判定工程と
を含むことを特徴とする判定方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、数値制御装置及び判定方法に関する。
【背景技術】
【0002】
特許文献1には、工作機械の主軸に対して工具を装着したか否かを判定する数値制御装置が開示されている。工作機械は、主軸、主軸ヘッド、及びZ軸モータを備える。主軸は主軸ヘッドに回転可能に設けられる。Z軸モータの駆動により主軸ヘッドが昇降する。主軸に対して工具の装着が行われる際、Z軸モータの駆動により主軸ヘッドが下降する。このとき、数値制御装置はZ軸モータに加わるトルクを微分する。数値制御装置は、トルクの微分値と主軸ヘッドの位置とに基づき、主軸ヘッドの位置に応じて変動する微分値のピーク位置を決定する。数値制御装置は、決定したピーク位置を統計処理し、算出された統計値に基づき、主軸に対する工具の装着状態を判定する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
工作機械において、主軸ヘッドを昇降する機構として、送り軸が設けられることがある。送り軸は、上下方向に延びる。送り軸は、Z軸モータの駆動により、上下方向に延びる軸周りに正逆回転可能である。主軸ヘッドにはナットが固定される。ナットは送り軸に螺合される。送り軸が正逆方向に回転すると、ナット、及びナットに固定された主軸ヘッドが一体となって昇降する。
【0005】
送り軸は、その温度の変化により上下方向に伸縮する。送り軸が伸縮した場合、主軸に対する工具の装着状態を判定する為に算出されるトルクの微分値のピーク位置が変動する。よって、ピーク位置の変動が送り軸の伸縮の影響か、又は工具の装着状態の影響かの何れであるかを特定できず、数値制御装置は工具の装着状態を精度よく判定できない虞がある。
【0006】
本発明の目的は、主軸に対する工具の装着状態を精度よく判定できる数値制御装置及び判定方法を提供することである。
【課題を解決するための手段】
【0007】
請求項1の数値制御装置は、工具を装着する主軸と、所定方向に延びる送り軸と、前記送り軸を前記所定方向に延びる軸周りに回転させるモータとを備え、前記モータが前記送り軸を回転させることで、前記主軸を移動して工具交換装置が把持する前記工具を前記主軸に装着可能な工作機械の動作を制御する数値制御装置において、前記送り軸の前記所定方向への伸縮量を推定する推定部と、前記工具の装着動作における前記モータのトルクを取得する第一取得部と、前記推定部により推定された前記伸縮量、及び前記第一取得部により取得された前記トルクに基づき、前記主軸に対する前記工具の装着状態を判定する判定部とを備えることを特徴とする。
【0008】
数値制御装置は、モータのトルクを制御するための構成により送り軸の伸縮量を推定する。数値制御装置は、推定した伸縮量、及びモータのトルクに基づき、主軸に対する工具の装着状態を判定する。数値制御装置は、伸縮量を勘案するので、主軸に対する工具の装着状態を精度よく判定できる。
【0009】
請求項2の数値制御装置において、前記推定部は、前記送り軸を介して前記主軸を前記所定方向に移動させる際に駆動する前記モータの情報を取得する第二取得部と、前記第二取得部により取得された前記情報に基づき、前記送り軸に対して出入りする熱量を算出する算出部とを含み、前記算出部により算出された前記熱量に基づき、前記伸縮量を推定してもよい。数値制御装置は、送り軸を回転させるモータの情報を取得し、取得した情報に基づき算出した熱量に基づき、送り軸の伸縮量を推定する。よって、数値制御装置は、送り軸の伸縮量を精度よく推定できる。
【0010】
請求項3の数値制御装置において、前記第二取得部は、前記情報として、前記トルクと、前記モータの回転速度とを取得してもよい。数値制御装置は、モータのトルク及び回転速度を取得し、取得したトルク及び回転速度に基づき、送り軸に対して出入りする熱量を算出する。よって、数値制御装置は、送り軸において出入りする熱量を精度よく算出できる。
【0011】
請求項4の数値制御装置において、前記第一取得部は、前記モータの回転角度を更に取得し、前記判定部は、前記第一取得部により取得された前記トルクを微分し、前記回転角度に対応する前記トルクの微分値を算出する微分部と、前記微分部により算出された前記微分値のうち、最大又は最小の何れか一方を示す前記微分値に対応する前記回転角度をピーク角度として決定する第一決定部と、前記第一決定部により決定された前記ピーク角度を、前記推定部により推定された前記伸縮量に基づき補正することで、補正ピーク角度を決定する第二決定部と前記第二決定部により決定された前記補正ピーク角度に基づき、前記装着状態を判定する補正判定部とを含んでもよい。数値制御装置は、送り軸の伸縮量に基づきピーク角度を補正し、補正した補正ピーク角度に基づき主軸に対する工具の装着状態を判定する。これにより、送り軸の伸縮によるピーク角度と実際の主軸の位置のずれを抑制できるので、数値制御装置は、主軸に対する工具の装着状態を精度よく判定できる。
【0012】
請求項5の数値制御装置において、前記判定部は、前記第二決定部により決定された前記補正ピーク角度を、前記主軸に対する前記工具の使用回数又は使用時間と対応付けて記憶する記憶部と、前記記憶部により記憶された複数の前記補正ピーク角度に基づき統計処理を行い、統計値を算出する統計処理部と前記統計処理部により算出された前記統計値に基づき、前記装着状態を判定する統計判定部とを含んでもよい。数値制御装置は、複数の補正ピーク角度に基づく統計値に基づき、工具の装着状態を判定する。これにより、数値制御装置は、補正ピーク角度の決定におけるばらつきの影響を排して、装着状態を精度よく判定できる。
【0013】
請求項6の数値制御装置において、前記判定部は、前記推定部によりn回目(nは二以上の整数)に推定された前記伸縮量と、前記推定部によりn-1回目に推定された前記伸縮量との差分が閾値以下の場合、前記装着状態を判定し、前記差分が前記閾値よりも大きい場合、前記装着状態を判定しなくてもよい。送り軸の伸縮量の変化量が過剰に大きい場合、推定部が伸縮量精度よく推定できていない虞がある。数値制御装置は、推定した伸縮量を判定することで、伸縮量を精度よく推定できていないことによる装着状態の誤判定を抑制できる。
【0014】
請求項7の数値制御装置において、前記推定部は、前記数値制御装置の制御周期に対して長い推定周期で前記伸縮量を推定してもよい。一般的に送り軸の伸縮に要する時間は数値制御装置の制御周期に対して十分長いので、数値制御装置は送り軸の伸縮量を少ない計算量で精度よく推定できる。
【0015】
請求項8の数値制御装置において、前記第一取得部は、前記数値制御装置の制御周期ごとに前記トルク及び回転角度を取得してもよい。モータのトルク及び回転角度は正負の値を取るので、取得周期が長いと正負の値が平均化され特徴量が消失する虞があるので、数値制御装置は、取得可能な最小単位である制御周期ごとにモータのトルク及び回転角度を取得し、取得したトルク及び回転角度に基づき、主軸に対する工具の装着状態を判定する。よって、数値制御装置は、主軸に対する工具の装着状態を精度よく判定できる。
【0016】
請求項9の判定方法は、工具を装着する主軸と、所定方向に延びる送り軸と、前記送り軸を前記所定方向に延びる軸周りに回転させるモータとを備え、前記モータが前記送り軸を回転させることで、前記主軸を移動して工具交換装置が把持する前記工具を前記主軸に装着可能な工作機械における前記主軸に対する前記工具の装着状態の判定方法であって、前記送り軸の前記所定方向への伸縮量を推定する推定工程と、前記工具の装着動作における前記モータのトルクを取得する第一取得工程と、前記推定工程により推定された前記伸縮量、及び前記第一取得工程により取得された前記トルクに基づき、前記装着状態を判定する判定工程とを含むことを特徴とする。判定方法は、請求項1の数値制御装置と同様の効果を奏する。
【図面の簡単な説明】
【0017】
【
図4】工作機械1及び数値制御装置30の電気的構成を示すブロック図である。
【
図5】Z軸モータ51の回転角度θに応じて変動するZ軸モータ51に加わる外乱力F及び微分値fを示すグラフである。
【
図6】送り速度V
mに応じて変動する熱抵抗Rを示すグラフである。
【
図8】パラメータ推定処理のフローチャートである。
【
図11】パラメータ推定処理において特定されたボールねじ41の伸縮量L
bの時間変化と伸縮量L
bの推定曲線を示すグラフである。
【発明を実施するための形態】
【0018】
本発明の一実施形態を、図面を参照し説明する。以下説明は、図中に矢印で示す左右、前後、上下を使用する。工作機械1の左右方向、前後方向、上下方向は夫々、工作機械1のX軸方向、Y軸方向、Z軸方向である。右方向、前方向、上方向は夫々、正方向であり、左方向、後方向、下方向は夫々、負方向である。
図1に示す工作機械1は、工具3により被削材(図示略)に切削加工を施す機械である。数値制御装置30は、工作機械1の動作を制御する。本実施形態に記載する「ATC」とは「Automatic Tool Changer」の略称である。また、本実施形態に記載する「NC」とは「Numerical Control」の略称である。
【0019】
<工作機械1の構造>
図1、
図2に示すように、工作機械1は、ベース2、コラム5、制御箱6、テーブル装置10、主軸ヘッド7、主軸9、及び工具交換装置20を有する。ベース2は、略直方体状の金属製土台である。コラム5は、ベース2の上面の後部に固定される。コラム5は上下方向に延びる立柱である。制御箱6は、コラム5の背面に固定される。制御箱6は、数値制御装置30を収納する。
【0020】
テーブル装置10は、Y軸移動機構(図示略)、Y軸テーブル12、テーブル13、X軸移動機構(図示略)を有する。Y軸移動機構は、ベース2の上面、且つコラム5の前方に設けられ、Y軸モータ54(
図4参照)を有する。Y軸移動機構は、Y軸モータ54の駆動に応じて、Y軸テーブル12をY軸方向に移動する。X軸移動機構は、Y軸テーブル12の上部に設けられ、X軸モータ53(
図4参照)を有する。X軸移動機構は、X軸モータ53の駆動に応じてテーブル13をX軸方向に移動する。故にテーブル13は、X軸移動機構とY軸移動機構により、ベース2の上方をX軸方向とY軸方向に移動可能である。
【0021】
<Z軸移動機構8の構造>
図2に示すように、コラム5の前部には、Z軸移動機構8が設けられる。Z軸移動機構8は、ボールねじ41、軸受部42、43、カムフォロア49、Z軸モータ51(
図4参照)を有する。ボールねじ41は、コラム5の前部に設けられ、Z軸方向に延びる。軸受部42、43は、ボールねじ41に挿通され、ボールねじ41を回転可能に支持する。軸受部42は、軸受部43の上方に設けられる。カムフォロア49は、軸受部42の前方に設けられる。カムフォロア49は、後述する主軸ヘッド7の板カム47のカム面を摺動する。
【0022】
Z軸モータ51は、軸受部42の上方に固定される。ボールねじ41は、カップリング(図示略)を介して、Z軸モータ51の出力軸に連結される。ボールねじ41は、Z軸モータ51の駆動により、上下方向に延びる軸周りに正逆回転される。ボールねじ41には、軸受部42、43の間でナット44が螺合される。ナット44は、主軸ヘッド7の後端部に固定される。Z軸モータ51が正方向に回転すると、ボールねじ41が回転し、ナット44と主軸ヘッド7とが一体となって上昇する。Z軸モータ51が逆方向に回転すると、ボールねじ41が逆回転し、ナット44と主軸ヘッド7とが一体となって下降する。
【0023】
<主軸ヘッド7の内部構造>
図2に示すように、主軸ヘッド7は、コラム5の前部に設けられる。主軸ヘッド7は、箱形状である。主軸ヘッド7は、主軸モータ52、クランクレバー45、支軸46、コイルバネ48を有する。主軸モータ52は、主軸ヘッド7の上面の前部に固定される。
【0024】
支軸46は、主軸ヘッド7の後部の内側に固定される。支軸46は、左右方向に延びる棒状である。クランクレバー45は、主軸ヘッド7の上部に設けられる。クランクレバー45は、左側面視略L字状の板である。クランクレバー45の屈曲部分には、支軸46が挿通される。クランクレバー45は、支軸46を中心に揺動可能である。クランクレバー45は、板カム47を有する。板カム47の背面には、カム面が形成される。板カム47のカム面は、カムフォロア49と接離可能である。コイルバネ48は、主軸ヘッド7の後部の内側に設けられる。コイルバネ48は、前後方向に延びる。コイルバネ48の一端は主軸ヘッド7の背面に固定される。コイルバネ48の後端は、板カム47の下方で、クランクレバー45の後端部に固定される。コイルバネ48は、クランクレバー45を右側面視で時計回りに常時付勢する。
【0025】
<主軸9の内部構造>
図2、
図3に示すように、主軸9は、主軸ヘッド7の前下部の内側に設けられ、上下方向に延びる円筒状である。主軸9は、主軸ヘッド7に支持される。主軸9は、上下方向に延びる軸周りに回転可能に支持される。主軸9は、主軸モータ52の出力軸に連結する。主軸9は、主軸モータ52の駆動により、上下方向に延びる軸周りに正逆回転される。
【0026】
主軸9は、軸穴91、装着穴92、空間93、摺動穴94、クランプ軸81、ばね82を有する。軸穴91は、主軸9の上端部から下部に亘り形成され、主軸9の中心を通る。装着穴92は、主軸9の下端部に形成される。装着穴92には、工具3が装着される。空間93は、装着穴92の上部に連通して形成される。摺動穴94は、軸穴91と空間93との間を連通して形成される。
【0027】
クランプ軸81は、軸穴91の内側、且つ軸穴91に対して上下方向に移動可能に設けられる。クランプ軸81は、支持部83、軸部84、把持部85を有する。支持部83は、クランプ軸81の上端に設けられ、柱状である。支持部83は、ピン95を支持する。ピン95は、クランプ軸81に突出して設けられる。ピン95は、ピン95の上方に位置するクランクレバー45の前端部と接離可能である。
【0028】
軸部84は、支持部83から下方に延びる柱状である。把持部85は、軸部84の下端に設けられ、複数の鋼球(図示略)を有する。ばね82は、軸穴91の内側に挿通して設けられる。ばね82の上端は、支持部83と係合する。ばね82は、クランプ軸81を上方に常時付勢する。
【0029】
主軸9は、工具3を装着可能である。工具3はホルダ14及び刃具4を有する。ホルダ14の一端部は、刃具4を保持する、ホルダ14の他端部は、装着部15、プルスタッド17を有する。装着部15は、ホルダ14の他端に向けて縮径する円錐状である。プルスタッド17は、装着部15の頂上部からホルダ14の他端に向けて突出する。装着部15は、装着穴92に装着される。
【0030】
クランプ軸81がばね82の弾性力に抗して下方に移動すると、把持部85は摺動穴94から空間93に出る。把持部85は、ホルダ14のプルスタッド17の把持を解除する。クランプ軸81が下方に移動した状態からばね82の弾性力により上方に移動すると、把持部85は空間93から摺動穴94に移動する。把持部85は、複数の鋼球によりプルスタッド17を把持する。
【0031】
<工具交換装置20の構造>
図2に示すように、工具交換装置20は、主軸ヘッド7の前方に設けられる。工具交換装置20は、タレット式である。工具交換装置20は、工具マガジン21、複数のグリップアーム23、マガジンモータ55を有する。工具マガジン21は、略円盤状である。工具マガジン21は、前下方に延びる支軸25を中心に回転可能に支持される。夫々のグリップアーム23は、工具マガジン21の外周に所定間隔毎に設けられる。複数のグリップアーム23は、工具マガジン21の前後方向に揺動可能に設けられる。グリップアーム23の先端部は、工具3のホルダ14を着脱可能に把持する。マガジンモータ55の出力軸は、支軸25と連結する。工具マガジン21は、マガジンモータ55の駆動により、支軸25を中心に正逆回転される。
【0032】
<工具3の着脱、交換動作>
図2に示すように、装着穴92にホルダ14の装着部15を装着した状態で、数値制御装置30の制御指令に基づき、Z軸モータ51が正方向に回転する。ボールねじ41が軸周りに回転し、主軸ヘッド7及び主軸9はテーブル13の加工原点から上昇する。加工原点は、機械原点であり、被削材を加工可能な最上端位置である。
【0033】
主軸ヘッド7及び主軸9が上昇すると、カムフォロア49はクランクレバー45の板カム47に接触し、板カム47のカム面を摺動する。クランクレバー45は、コイルバネ48の弾性力に抗して、右側面視で支軸46を中心に反時計回りに回転する。クランクレバー45の前端は、ピン95に上方から係合し、クランプ軸81を下方に押圧する。クランプ軸81は、ばね82の弾性力に抗して把持部85を下方に付勢する。把持部85はプルスタッド17の把持を解除する。
【0034】
主軸9はATC原点まで更に上昇する。ATC原点は、主軸9の位置であり、加工原点よりも上方にある。主軸9がATC原点に位置する場合、工具マガジン21は回転可能である。
【0035】
主軸9が上昇すると、工具3は主軸9の装着穴92から脱離する。主軸9から脱離した工具3を、第一工具と称す。工具交換装置20の複数のグリップアーム23のうち、工具交換位置にある一のグリップアーム23(以下、第一グリップアームと称す。)は、主軸9から脱離した第一工具を把持する。工具交換位置は、工具マガジン21の最下方位置であり、且つ主軸9に近接して対向する位置である。
【0036】
主軸ヘッド7がATC原点に到達すると、工具交換装置20は数値制御装置30の制御指令に基づき、マガジンモータ55の駆動により工具マガジン21を回転させる。工具交換装置20は、NCプログラムの制御コマンドが指定する刃具4を保持する工具3(以下、第二工具と称す。)を工具交換位置に割り出す。このとき、工具マガジン21は第一工具が工具交換位置にある状態から、第二工具が工具交換位置にある状態まで回転する。工具マガジン21は第一工具を第一グリップアームにより把持し、且つ第二工具を他のグリップアーム23(以下、第二グリップアームと称す。)に把持した状態で回転する。工具交換位置に割り出した第二工具はATC原点に移動した主軸ヘッド7の下方に位置する。
【0037】
次いで、数値制御装置30の制御指令に基づき、Z軸モータ51が逆方向に回転する。ボールねじ41が軸周りに逆回転し、主軸9はATC原点から下降する。第二工具の装着部15が主軸9の装着穴92に進入する。
【0038】
装着穴92に装着部15が挿入した状態で、主軸9及び主軸ヘッド7は更に下降する。カムフォロア49は、板カム47のカム面を摺動した後、板カム47から離れる。クランクレバー45は、コイルバネ48の弾性力により、右側面視で支軸46を中心に時計回りに回転する。クランクレバー45の前端は、ピン95から離れ、クランプ軸81の下方への押圧を解除する。クランプ軸81は、把持部85の下方への付勢を解除する。把持部85は、空間93から摺動穴94に移動する。把持部85は、第二工具のプルスタッド17を複数の鋼球により把持して、引っ張り上げる。工具交換装置20の第二グリップアームは、第二工具のホルダ14の把持を解除する。主軸9の装着穴92に装着部15の装着が完了し、主軸9に対する第二工具の装着が完了する。主軸9に対して工具3が装着されるときのクランプ軸81、クランクレバー45の動作を、装着動作と称す。主軸9から工具3が脱離されるときのクランプ軸81、クランクレバー45の動作を、脱離動作と称す。装着動作にZ軸モータ51の回転で駆動する主軸ヘッド7、クランクレバー45等を、装着機構と称す。
【0039】
<数値制御装置30と工作機械1の電気的構成>
図4に示すように、数値制御装置30は、CPU31、ROM32、RAM33、記憶装置34、入出力インタフェイス35、駆動回路61~65を有する。CPU31は、数値制御装置30を統括制御する。ROM32は、各種プログラムを記憶する。RAM33は、処理実行中の各種データを記憶する。
【0040】
記憶装置34は、不揮発性メモリであり、NCプログラム、後述する条件テーブル59等を記憶する。NCプログラムは複数のブロックで構成される。各ブロックは、工具交換指令等の少なくとも一つの指令を含む。又、記憶装置34は、主軸9に工具3を装着した装着回数(使用回数に相当)を、工具3ごとに記憶する。CPU31は、主軸9に対する工具3の装着動作を行った場合、装着動作を行う工具3(第二工具)に対応する装着回数に1加算する。CPU31は、主軸9に装着した工具3を脱離して別の工具3に付け替えた場合、脱離した工具3に対応する装着回数を0とする。
【0041】
入出力インタフェイス35は、駆動回路61~65、エンコーダ71~75、入力部37、表示部38と電気的に接続し、各種信号の入出力を行う。入力部37及び表示部38は、工作機械1の操作盤36に設けられる。操作盤36は、工作機械1を覆うカバー(図示略)の外壁に設けられる。入力部37は、各種情報、操作指示等の入力を受け付け、入出力インタフェイス35を介して、CPU31に入力する。表示部38は、入出力インタフェイス35を介してCPU31から入力される指令に基づき、各種画面、異常情報等を表示する。
【0042】
駆動回路61は、Z軸モータ51に電気的に接続する。駆動回路62は、主軸モータ52に電気的に接続する。駆動回路63は、X軸モータ53に電気的に接続する。駆動回路64は、Y軸モータ54に電気的に接続する。駆動回路65は、マガジンモータ55に電気的に接続する。駆動回路61、62、63、64、65は、入出力インタフェイス35を介してCPU31から入力される指令に基づき、Z軸モータ51、主軸モータ52、X軸モータ53、Y軸モータ54、マガジンモータ55に駆動電流を出力する。Z軸モータ51、主軸モータ52、X軸モータ53、Y軸モータ54、マガジンモータ55は、入力された駆動電流に応じて回転するサーボモータである。駆動回路61、62、63、64、65は、戻り値として駆動電流を入出力インタフェイス35に出力する。
【0043】
Z軸モータ51はエンコーダ71を備える。主軸モータ52はエンコーダ72を備える。X軸モータ53はエンコーダ73を備える。Y軸モータ54はエンコーダ74を備える。マガジンモータ55はエンコーダ75を備える。エンコーダ71、72、73、74、75は、絶対値エンコーダであり、Z軸モータ51、主軸モータ52、X軸モータ53、Y軸モータ54、マガジンモータ55の回転角度を夫々検出する。エンコーダ71、72、73、74、75は、検出した回転角度を入出力インタフェイス35に入力する。CPU31は、エンコーダ71が検出したZ軸モータ51の回転角度を取得することで、Z軸モータ51と連結するボールねじ41の回転角度を推定し、ボールねじ41の回転により移動する主軸9のZ軸方向の位置を推定する。
【0044】
<装着動作における外乱力及び外乱力の微分値の変動>
図5(A)は、装着動作におけるZ軸モータ51の回転角度(横軸)とZ軸モータ51に加わる外乱力(縦軸)との関係を示すグラフである。
図5(A)には、工作機械1の振動等による影響を除く為、工作機械1の固有振動を除去するローパスフィルタによる処理を施してある。装着動作において、Z軸モータ51の回転角度は負方向に変化する。
【0045】
Z軸モータ51に加わる外乱力は、Z軸モータ51の駆動に対する反力としてZ軸モータ51に作用する力である。外乱力は、Z軸モータ51のトルクに含まれ、以下の数1の関係を満たす。
【数1】
数1において、T
mはZ軸モータ51のトルク(Nm)を示す。FはZ軸モータ51に加わる外乱力(Nm)を示す。θはZ軸モータ51の回転角度(rad)を示す。「θ(上付き一つドット)」は、回転角度θの一階時間微分(角速度(rad/s))を示す。「θ(上付き二つドット)」は、回転角度θの二階時間微分(角加速度(rad/s
2))を示す。J(kg・m
2)はZ軸モータ51に関する慣性モーメントを示す。右辺第二項は慣性力を示す。DはZ軸モータ51に関する粘性係数(Nm/(rad/s))を示す。右辺第三項は粘性力を示す。kはZ軸モータ51に関するクーロン摩擦に関する係数(Nm)を示す。右辺第四項はクーロン摩擦力を示す。慣性モーメントJ、粘性係数D、係数kの大きさはZ軸モータ51の動作に伴い回転するZ軸モータ51内部のロータ部分(図示略)、ボールねじ41、Z軸モータ51の動作に伴い上下に移動するナット44、主軸ヘッド7等に依るが、詳細は割愛する。
【0046】
CPU31は、Z軸モータ51の駆動電流を駆動回路61から取得し、Z軸モータ51の回転角度θをエンコーダ71から取得することで、Z軸モータ51のトルクTmを取得する。そして、CPU31は、Z軸モータ51のトルクTm、回転角度θに基づき、外乱力Fを取得する。
【0047】
CPU31は、Z軸モータ51の回転角度θをエンコーダ71から取得する。CPU31は、取得した回転角度θ及びボールねじ41のリードに基づき、主軸9のZ軸方向の位置を推定する。
【0048】
図5(B)は、装着動作におけるZ軸モータ51の回転角度θ(横軸)と外乱力Fの時間微分値(以下、微分値fと称す。)(縦軸)との関係を示すグラフである。
図5(B)において、装着動作における微分値fが最小となる場合のZ軸モータ51の回転角度θを、ピーク角度φと称す。装着動作において微分値fが最小となる(即ち、回転角度θがピーク角度φとなる)タイミングは、板カム47がカムフォロア49から離隔するタイミングである。
【0049】
<主軸9に対する工具3の装着状態>
工具3により被削材を加工でき、且つ切削精度に影響が出ない態様で主軸9に対して工具3が装着された状態を、完全装着状態と称す。これに対し、工作機械1は、主軸9に対して工具3が不完全に装着された状態(以下、不完全装着状態と称す。)で切削加工を実行した場合、切削精度が低下する可能性がある。不完全装着状態は、装着部15と装着穴92との間に異物(例えば、切削加工で生じる切粉)が付着したまま、主軸9に対して工具3が装着された状態である。不完全装着状態において、装着動作において把持部85がプルスタッド17を引っ張り上げて把持する位置は、完全装着状態における位置より下方になる。完全装着状態及び不完全装着状態を、装着状態と総称する。
【0050】
把持部85がプルスタッド17を把持する位置は、主軸9に対する工具3の装着状態により変化する。これにより、装着動作において板カム47がカムフォロア49に接触するタイミング、又は脱離動作において板カム47がカムフォロア49から脱離するタイミングは、主軸9に対する工具3の装着状態に応じて変化する。故にピーク角度φは、装着状態に応じて変化する。数値制御装置30は、装着動作毎でのピーク角度φの変化に基づき、装着状態を判定する。
【0051】
<装着状態の判定>
数値制御装置30のCPU31は、装着状態を判定するために、装着動作におけるZ軸モータ51の回転角度θ、及びZ軸モータ51に加わる外乱力Fを周期tm(s)ごとに取得する。本実施形態では、周期tmは、tm=0.5msであり、数値制御装置30における制御周期のうちで最も短い時間である。
【0052】
CPU31は、取得した外乱力Fに対してローパスフィルタをかけた後時間微分して微分値fを算出する。CPU31は、算出した微分値fと、回転角度θとを対応付けてRAM33に記憶する。CPU31は、RAM33が記憶する微分値fの変動(
図5(B)参照)からピーク角度φを決定する。CPU31は、装着動作を実行する度に、決定したピーク角度φと工具3の装着回数とを対応付けて、記憶装置34に順次記憶する。
【0053】
CPU31は、ピーク角度φを記憶装置34に記憶する度に、記憶したピーク角度に対して統計処理を行い、統計値を算出する。より具体的に、CPU31は、記憶装置34に記憶したピーク角度φから対象ピーク角度を決定する。対象ピーク角度は、最新のピーク角度(以下、第一ピーク角度と称す。)と不完全装着状態となった場合のピーク角度φを除いたピーク角度である。CPU31は、対象ピーク角度のうち、最新の対象ピーク角度(以下、第二ピーク角度と称す。)から数えて所定数のピーク角度φを抽出する。CPU31は、抽出した所定数のピーク角度φの平均値μと標準偏差σを統計値として算出する。CPU31は、第一ピーク角度(即ち、最新の装着動作におけるピーク角度φ)が、平均値μと標準偏差σの6倍との和μ+6σ(以下、判定閾値φmaxと称す。)より大きい場合、装着動作後の装着状態が不完全装着状態であると判定する。
【0054】
<ボールねじ41の伸縮>
主軸9をZ軸方向に移動させるZ軸移動機構8のボールねじ41は、Z軸モータ51の発熱、ナット44との摩擦熱により加熱される。また、ボールねじ41は、外気との温度差により放熱される。このため、ボールねじ41は、外部からの加熱、及び外部への放熱により温度が変化する。温度変化が生じると、ボールねじ41は、特に長手方向であるZ軸方向に伸縮する。
【0055】
ボールねじ41が伸縮すると、板カム47がカムフォロア49から離隔するタイミングが、ボールねじ41の伸縮量Lbに応じて変化する。即ち、伸縮量Lbに応じてピーク角度φが変化する。ピーク角度φによる装着状態の判定において、ボールねじ41の伸縮に起因するピーク角度φの変動と、不完全装着状態に起因するピーク角度φの変動とを切り分けるのは困難である。このため、CPU31は、主軸9に対する工具3の装着状態を判定する際、ボールねじ41のZ軸方向の伸縮量Lbを推定し、伸縮量Lbに基づきピーク角度φを補正する。
【0056】
<ボールねじ41の伸縮量Lbの推定>
CPU31は、数理モデルを用いてボールねじ41のZ軸方向の伸縮量Lb(m)を推定する。CPU31は、推定周期ts(s)でボールねじ41の温度Tb(K)を算出する。本実施形態では、ts=30sである。最新であるi回目(iは1以上の整数)のサンプリングでのボールねじ41の温度Tb(j)は、i-1回目のサンプリングでのボールねじ41の温度Tb(i-1)(K)、i-1回目からi回目までのボールねじ41の温度変化ΔTb(K)を用いて、数2で表される。
[数2]
Tb(i)=Tb(i-1)+ΔTb
なお、i=1の場合のサンプリングにおけるボールねじ41の温度Tb(i-1)、即ちボールねじ41の初期温度Tb(0)は、外気の温度Ta(K)と同じであり、計算の簡略化のためTa=0(K)と仮定する。
【0057】
温度変化ΔTbは以下の数3で表される。
[数3]
ΔTb=(Qm+Qf-Qba)/Hb
数3において、Qmは推定周期tsでZ軸モータ51の発熱によりボールねじ41に加えられる熱量(J)を示す。Qfは推定周期tsで摩擦によりボールねじ41に加えられる熱量(J)を示す。Qbaは推定周期tsで外気に放出される熱量(J)を示す。Hbはボールねじ41の熱容量(J/K)を示す。熱容量Hbは、ボールねじ41の比熱とボールねじ41の質量に基づき算出される。
【0058】
熱量Q
mは以下の数4で表される。
[数4]
Q
m=Pr×(L
m)
2×t
s
数4において、PrはZ軸モータ51の発熱によりボールねじ41に加えられる熱量を表す係数(J/Nm
2)を示す。L
mは、推定周期t
sでのZ軸モータ51に加わる平均負荷(Nm)を示し、以下の数5で表される。
[数5]
L
m=ΣT/t
s
数5において、ΣTは推定周期t
sでZ軸モータ51のトルクの絶対値の積算(Nm・s)であり、以下の数6で表される。
【数6】
【0059】
熱量Q
fは以下の数7で表される。
[数7]
Q
f=Fc×ΣTD
数7において、Fcは摩擦によりボールねじ41に加えられる熱量を表す係数(J/(Nm・m))を示す。ΣTDは推定周期t
sで、Z軸モータ51に加わるトルクT
mの絶対値と主軸9の周期t
mでの移動距離の絶対値との積を積算したものであり(Nm・m)、以下の数8で表される。
【数8】
数8において、V
mは、主軸9のZ軸方向の送り速度(mm/min)である。V
mは、エンコーダ71が検出するZ軸モータ51の回転角度θ及びボールねじ41のリードに基づき、決定される。
【0060】
熱量Q
baは以下の数9により表される。
[数9]
Q
ba=(T
b-T
a)t
s/R
ba
数9において、外気の温度T
aは上記の通り0(K)と仮定されている。R
baは推定周期t
sでの平均熱抵抗(sK/J)を示し、以下の数10により表される。
[数10]
R
ba=ΣR/t
s
数10において、ΣRは、推定周期t
sで算出されるボールねじ41の熱抵抗R(sK/J)の積算(s
2K/J)であり、以下の数11で表される。
【数11】
【0061】
図6は、ボールねじ41から周囲の空気に対する熱抵抗Rを、実験結果から推定したグラフである。熱抵抗Rは、主軸9のZ軸方向の送り速度V
mに基づき変動する。より具体的に、送り速度V
mが所定の境界速度V
dsより小さい場合、熱抵抗Rの大きさはR
maxでほぼ一定である。一方、送り速度V
mが境界速度V
ds以上になると、熱抵抗Rは送り速度V
mが大きくなるにつれて小さくなる。これは、Z軸モータ51の駆動により回転するボールねじ41の回転速度が大きくなり、ボールねじ41の周囲の空気に乱流が生じるためであると考えられる。一般的に、固体と流体の界面において乱流が生じると、熱抵抗が大きく低下する事が知られている。最大の送り速度V
m(以下、早送り速度V
maxと称す。)において、熱抵抗Rの大きさはR
minとなる。本実施形態では、送り速度V
mが境界速度V
dsよりも小さい場合の熱抵抗Rの大きさがR
maxであると近似する。また、送り速度V
mが境界速度V
ds以上である場合の熱抵抗Rが比例定数aで比例して変化するものとして近似する。
【0062】
以上のように、熱抵抗Rは以下の数12で表される。
【数12】
数12において、比例定数aは以下の数13で、切片bは以下の数14で表される。
[数13]
a=(R
min-R
max)/(V
max-Vds)
[数14]
b=R
max-(R
min-R
max)V
ds/(V
max-V
ds)
【0063】
i-1回目の温度T
b(i-1)が既知であり、数3~数14に基づき温度変化ΔT
bが算出されれば、数2により温度T
b(i)が算出される。ボールねじ41が初期温度(T
b(0)=T
a=0(K)と仮定)から温度T
b(i)まで変化した場合におけるボールねじ41の伸縮量L
bは、以下の数15により推定される。
[数15]
L
b=α×T
b(i)
数15において、αはボールねじ41の膨張係数(μm/K)であり、ボールねじ41の線膨張係数(1/K)とボールねじ41の有効長さ(m)との積で算出される。ボールねじ41の有効長さは、軸受部43(
図2参照)とATC原点との間のZ軸方向の距離である。
【0064】
<伸縮量Lbの推定に必要なパラメータの推定>
数15によりボールねじ41の伸縮量Lbを推定するために、数値制御装置30は、伸縮量Lbの推定に必要なパラメータを推定する。ここで、推定されるパラメータは、係数Pr、Fc、熱抵抗Rmax、Rmin、境界速度Vdsである。
【0065】
数値制御装置30は、パラメータを推定するために、工具交換を複数回行うことで伸縮量L
bを特定する。より詳細に、数値制御装置30は、工具交換における装着動作の実行毎に回転角度θに応じて変動する外乱力F(
図5(A)参照)を取得することで、微分値f(
図5(B)参照)を算出し、ピーク角度φを決定する。
【0066】
数値制御装置30は、最新の工具交換において決定したピーク角度φと、基準となるピーク角度φ(以下、基準ピーク角度φbという。)との差分ρを算出する。本実施形態では、基準ピーク角度φbは、パラメータ推定における1回目の工具交換において決定したピーク角度φである。
【0067】
ピーク角度φから、板カム47がカムフォロア49から離隔するタイミングでの主軸9の位置が推定される。φbは1回目に行われた装着動作における板カム47がカムフォロア49から離隔するタイミングでの主軸9の位置を示す。φは最新の装着動作における板カム47がカムフォロア49から離隔するタイミングでの主軸9の位置を示す。即ち、差分ρは、同じタイミングでの1回目の主軸9の位置から最新の主軸9の位置までの変化量を示す。数値制御装置30は、ピーク角度φの差分ρ(=φ-φb)に基づき、主軸9のZ軸方向の位置の変化量を算出し、当該変化量をボールねじ41のZ軸方向の伸縮量Lbとして特定する。
【0068】
当該特定方法により、工具交換における伸縮量Lbを特定できる。なお、当該特定方法では、工具交換が正常に行われることを前提としており、例えば被削材の加工においては主軸9と工具3との間で切粉が噛み込まれる等の影響で工具交換が正常に行われない可能性があるため当該特定方法では伸縮量Lbを特定できない。そのため、数15による伸縮量Lbの推定が必要である。
【0069】
パラメータの推定の際、数値制御装置30は、
図7に示す条件テーブル59に基づき制御する。条件テーブル59には、7つのブロックが含まれる。条件テーブル59は、制御指令をブロック毎に定義する。数値制御装置30は、ブロックNo.1から順に制御指令を実行する。即ちブロックNo.は、各ブロックの処理順序を示す。制御指令には、第一往復指令、第二往復指令、第三往復指令、停止指令、終了指令等が含まれる。
【0070】
制御指令は、Z軸モータ51の第一駆動条件、第二駆動条件、及び、制御指令を連続して実行する時間が対応付けられる。数値制御装置30は、各制御指令において、第一駆動条件でZ軸モータ51を所定時間(例えば5分)駆動し、所定時間が経過すると第二駆動条件でZ軸モータ51を駆動し、再度第一駆動条件でZ軸モータ51を所定時間駆動する。数値制御装置30は、制御指令が示す時間(4時間)の間、第一駆動条件及び第二駆動条件でZ軸モータ51を駆動する。
【0071】
第一往復指令では、数値制御装置30は、第一駆動条件に基づき、所定時間の間、主軸9を送り速度F5000(Vm=5000mm/min)で加工領域内をZ軸方向に往復するようにZ軸モータ51を駆動する。加工領域は、加工原点よりも下方の領域であり、工作機械1による被削材の加工において主軸9が移動する領域である。第二往復指令、第三往復指令の説明は省略する。停止指令では、数値制御装置30は、第一駆動条件に基づき、所定時間の間主軸9を加工原点で停止するようにZ軸モータ51を停止する。
【0072】
第一往復指令、第二往復指令、第三往復指令、及び停止指令(ブロックNo.1~6)では、数値制御装置30は、第二駆動条件として工具交換を実行するようにZ軸モータ51を駆動する。数値制御装置30は、工具3の装着動作においてピーク角度φの決定、及び伸縮量Lbの特定を行う。即ち、ブロックNo.1~6では、所定時間毎に伸縮量Lbが特定される。終了指令(ブロックNo.7)は、パラメータの推定を終了する為の指令である。
【0073】
<パラメータ推定処理>
図8を参照し、数値制御装置30のCPU31が実行するパラメータ推定処理を説明する。パラメータ推定処理において、CPU31は、伸縮量L
bの推定に必要なパラメータを推定する。
【0074】
作業者は、入力部37にパラメータ推定指令を入力する。入力部37は、入力されたパラメータ推定指令を受け付け、CPU31に入力する。CPU31は、パラメータ推定指令が入力された場合、ROM32に記憶された制御プログラムを読み出し、実行することによりパラメータ推定処理を開始する。
【0075】
パラメータ推定処理の開始時、主軸9は加工原点に位置する。パラメータ推定処理において用いられる変数Kは1以上の整数であり、条件テーブル59(
図7参照)のブロックNo.を示す。変数KはRAM33に記憶され、パラメータ推定処理が開始される際に値が1である。
【0076】
CPU31は、条件テーブル59から1ブロックを読み込む(S1)。CPU31は、読み込んだブロックの制御指令が終了指令であるか否かを判定する(S2)。CPU31は、読み込んだブロックの制御指令が終了指令でない場合(S2:NO)、計時を開始する(S3)。CPU31は、読み込んだブロックの制御指令における第一駆動条件処理を実行する(S4)。CPU31は、S4において、制御指令の第一駆動条件に基づき、Z軸モータ51を駆動する。
【0077】
CPU31は、S3で計時を開始してから制御指令が示す時間(4時間)が経過したか否かを判定する(S5)。CPU31は、制御指令が示す時間が経過していないと判定した場合(S5:NO)、第一駆動条件処理を開始してから所定時間(5分)が経過したか否かを判定する(S6)。CPU31は、第一駆動条件処理を開始してから所定時間が経過していないと判定した場合(S6:NO)、処理をS4に戻す。
【0078】
CPU31は、第一駆動条件処理を開始してから所定時間が経過したと判定した場合(S6:YES)、第二駆動条件処理(
図9参照、後述)を実行する(S8)。数値制御装置30は、後述する第二駆動条件処理において、工具交換を実行し、伸縮量L
bを特定する。CPU31は、第二駆動条件処理の終了後、処理をS4に戻す。
【0079】
図9、
図10を参照し、パラメータ推定処理で実行される第二駆動条件処理(S8、
図8参照)を説明する。第二駆動条件処理において用いられる変数jは1以上の整数であり、工具交換を実行した回数を示す。変数jはRAM33に記憶され、工作機械1の電源投入後において値が1に設定される。
【0080】
CPU31は、Z軸モータ51を正方向に回転し、主軸9の上昇を開始する(S21)。CPU31は、エンコーダ71が検出するZ軸モータ51の回転角度θに基づき、主軸9がATC原点に到達したか否かを判定する(S22)。
【0081】
CPU31は、主軸9がATC原点に到達していないと判定した場合(S22:NO)、処理をS22に戻す。CPU31は、主軸9がATC原点に到達したと判定した場合(S22:YES)、Z軸モータ51の回転を停止し、主軸9の上昇を停止する(S23)。
【0082】
CPU31は、Z軸モータ51を逆方向に回転し、主軸9の下降を開始する(S24)。CPU31は、Z軸モータ51の回転角度θ及び外乱力Fの取得を開始する(S25)。CPU31は、S25の処理を実行後、周期tm(=0.5ms)でZ軸モータ51の回転角度θ及び外乱力Fを取得する。
【0083】
CPU31は、S25の処理で開始したZ軸モータ51の回転角度θ及び外乱力Fを新たに取得したか否かを判定する(S26)。CPU31は、回転角度θ及び外乱力Fを新たに取得していないと判定した場合(S26:NO)、処理をS26に戻す。CPU31は、S25の処理で回転角度θ及び外乱力Fを新たに取得したと判定した場合(S26:YES)、取得した回転角度θに基づき、主軸9が加工原点に到達したか否かを判定する(S27)。
【0084】
CPU31は、主軸9が加工原点に到達していないと判定した場合(S27:NO)、CPU31は、S25の処理で取得した回転角度θ及び外乱力Fにローパスフィルタによる処理を施す(S28)。
【0085】
CPU31は、外乱力Fを時間微分して微分値fを算出する(S29)。CPU31は、回転角度θと微分値fとを対応付けてRAM33に記憶する(S30)。CPU31は、処理をS26に戻す。
【0086】
CPU31は、主軸9が加工原点に到達したと判定した場合(S27:YES)、S25の処理で開始したZ軸モータ51の回転角度θ及び外乱力Fの取得を停止する(S31)。CPU31は、Z軸モータ51の回転を停止し、主軸9の下降を停止する(S32)。
【0087】
CPU31は、RAM33に記憶された微分値fのうち、最小の微分値fに対応する回転角度θをピーク角度φ
jとして決定する(S33)。CPU31は、ピーク角度φ
jをRAM33に記憶する(S34)。CPU31は、処理をS41(
図10参照)に移行する。
【0088】
図10に示すように、CPU31は、S41の処理において、RAM33に記憶された変数jの値に基づき、実行中の工具交換処理が工作機械1の電源投入後1回目の処理であるか否かを判定する(S41)。
【0089】
CPU31は、変数jの値が1であり、実行中の工具交換処理が工作機械1の電源投入後1回目の処理であると判定した場合(S41:YES)、S22で決定したピーク角度φjを基準ピーク角度φbとして決定し、RAM33に記憶する(S42)。CPU31は、変数jの値に1加算し(S46)、処理をパラメータ推定処理に戻す。
【0090】
CPU31は、変数jの値が2以上であり、実行中の工具交換処理が工作機械1の電源投入後1回目の処理でないと判定した場合(S41:NO)、S22で決定したピーク角度φjとS42で決定した基準ピーク角度φbとの差分ρ(=φj-φb)を算出する(S43)。
【0091】
CPU31は、S43の処理で算出した差分ρに基づき、ピーク角度φでの主軸9の位置の変化量を算出し、当該変化量をボールねじ41の伸縮量Lbとして特定する(S44)。CPU31は、特定した伸縮量Lbとパラメータ推定処理の実行を開始してからの経過時間とを対応付けて、記憶装置34に記憶する(S45)。CPU31は、変数jの値に1加算し(S46)、処理をパラメータ推定処理に戻す。
【0092】
図8に示すように、CPU31は、制御指令が示す時間(4時間)が経過したと判定した場合(S5:YES)、変数Kの値に1を加算し(S10)、処理をS1に戻す。
【0093】
CPU31は、S1の処理で読み込んだブロックの制御指令が終了指令である場合(S2:YES)、パラメータ(係数Pr、Fc、熱抵抗Rmax、Rmin、境界速度Vds)を推定する(S11)。
【0094】
パラメータの推定方法について、具体例を挙げて説明する。例えば、S11の処理が開始される際、
図11の実線に示すように時間に応じて変動するボールねじ41の伸縮量L
bが記憶装置34に記憶されている。CPU31は、S11において、S44(
図10参照)で特定した伸縮量L
b(
図11の実線)と、数15で推定される伸縮量L
bとが近似するように、例えば最急降下法を用いてパラメータを推定する。数15で伸縮量L
bを推定するために必要なZ軸モータ51のトルクT
m、及び主軸9の送り速度V
mは、後述する周期取得処理(
図12参照)において取得される。
【0095】
CPU31は、S11の処理で推定したパラメータを記憶装置34に記憶する(S12)。CPU31は、パラメータ推定処理を終了する。
【0096】
<周期取得処理>
図12を参照し、数値制御装置30のCPU31が実行する周期取得処理を説明する。周期取得処理において、CPU31は、数15で伸縮量L
bを推定するために必要なZ軸モータ51のトルクT
m、及び主軸9の送り速度V
mを取得する。トルクT
m及び送り速度V
mは、制御周期毎の時系列データを記憶したリストである。CPU31は、工作機械1の電源投入後、ROM32に記憶された制御プログラムを読み出し、実行することにより周期推定処理を開始する。
【0097】
CPU31は、計時を開始する(S51)。CPU31は、計時を開始してから周期tm(=5ms)が経過したか否かを判定する(S52)。CPU31は、周期tmが経過していないと判定した場合(S52:NO)、処理をS52に戻す。
【0098】
CPU31は、回転角度θ、Z軸モータ51のトルクTm、及び主軸9の送り速度Vmを取得する(S53)。CPU31は、S53の処理において、Z軸モータ51の回転角度θをエンコーダ71から取得する。CPU31は、回転角度θを取得し、駆動回路61からZ軸モータ51の駆動電流を取得することで、トルクTmを取得する。CPU31は、回転角度θ及びボールねじ41のリードから算出される角速度(θ(上付き一つドット))に基づき、送り速度Vmを取得する。
【0099】
CPU31は、S51で取得したトルクTm、及び送り速度VmをRAM33に記憶する(S54)。CPU31は、計時をリセットして、周期tmの計時を再スタートする(S55)。CPU31は、処理をS52に戻す。CPU31は、周期tmが経過する度にトルクTm、及び送り速度Vmを取得する。
【0100】
パラメータ推定処理でパラメータ(係数Pr、Fc、熱抵抗Rmax、Rmin、境界速度Vds)が推定され、周期取得処理でZ軸モータ51のトルクTm、及び送り速度Vmが取得されるので、数値制御装置30は、数15に基づきボールねじ41の伸縮量Lbを推定できる。数値制御装置30は、後述する伸縮量推定処理を実行することで、伸縮量Lbを推定する。数値制御装置30は、伸縮量推定処理において、推定周期ts(30s)で伸縮量Lbを推定する。推定周期tsは、制御周期(0.5ms)に対して長い時間で設定される。
【0101】
<伸縮量推定処理>
図13を参照し、数値制御装置30のCPU31が実行する伸縮量推定処理を説明する。作業者は、入力部37に伸縮量推定指令を入力する。入力部37は、入力された伸縮量推定指令を受け付け、CPU31に入力する。CPU31は、伸縮量推定指令が入力された場合、ROM32に記憶された制御プログラムを読み出し、実行することにより伸縮量推定処理を開始する。伸縮量推定処理が開始される際、記憶装置34にはパラメータ推定処理で推定されたパラメータが記憶されている。
【0102】
CPU31は、計時を開始する(S61)。CPU31は、計時を開始してから推定周期ts(=30s)が経過したか否かを判定する(S62)。CPU31は、推定周期tsが経過していないと判定した場合(S62:NO)、処理をS62に戻す。
【0103】
CPU31は、推定周期t
sが経過したと判定した場合(S62:YES)、Z軸モータ51の情報として、S54(
図11参照)でRAM33に記憶したZ軸モータ51のトルクT
m、主軸9の送り速度V
m、及びS11(
図8参照)で推定されたパラメータを取得する(S63)。CPU31は、S63で取得したトルクT
m、送り速度V
m、パラメータ、及び数4、数7、数9に基づき、熱量Q
m、Q
f、Q
baを算出する(S64)。
【0104】
CPU31は、S64の処理で算出した熱量Qm、Qf、Qba、及び数15に基づき、ボールねじ41の伸縮量Lbを推定する(S65)。CPU31は、S65の処理で推定した伸縮量LbをRAM33に記憶する(S66)。CPU31は、計時をリセットして、推定周期tsの計時を再スタートする(S67)。CPU31は、処理をS62に戻す。CPU31は、推定周期tsが経過する度に伸縮量Lbを推定する。
【0105】
上述の通りピーク角度φは、装着状態に応じて変化する。数値制御装置30は、装着動作毎でのピーク角度φの変化に基づき、装着状態を判定する。数値制御装置30は、後述する工具交換処理において、推定した伸縮量Lbに基づきピーク角度φを補正し、装着状態を判定する。
【0106】
<工具交換処理>
図14、
図15を参照し、数値制御装置30のCPU31が実行する工具交換指令を説明する。工具交換指令において、CPU31は、工具交換装置20による工具3の交換、及び装着動作における装着状態の判定を行う。作業者は、入力部37に工具交換指令を入力する。入力部37は、入力された工具交換指令を受け付け、CPU31に入力する。CPU31は、工具交換指令が入力された場合、ROM32に記憶された制御プログラムを読み出し、実行することにより工具交換処理を開始する。
【0107】
工具交換処理における、主軸9は加工原点に位置する。工具交換処理における一部の処理は、第二駆動条件処理(
図9、
図10参照)と共通する。工具交換処理で実行される処理のうち、第二駆動条件処理と共通する処理については説明を簡略化する。
【0108】
図14に示すように、CPU31は、主軸9の上昇を開始する(S71)。CPU31は、主軸9がATC原点に到達したか否かを判定する(S72)。CPU31は、主軸9がATC原点に到達していないと判定した場合(S72:NO)、処理をS2に戻す。CPU31は、主軸9がATC原点に到達したと判定した場合(S72:YES)、主軸9の上昇を停止する(S73)。
【0109】
CPU31は、工具交換により主軸9に対して装着する工具3(第二工具)を示す工具情報を取得する(S74)。工具情報には、工具3の装着回数が含まれる。CPU31は、マガジンモータ55を駆動して工具マガジン21を回転し、第二工具を把持するグリップアーム23を工具交換位置に割り出す(S75)。
【0110】
CPU31は、主軸9の下降を開始する(S76)。CPU31は、Z軸モータ51の回転角度θ及び外乱力Fの取得を開始する(S77)。CPU31は、S77の処理において、周期取得処理のS54(
図12参照)で記憶されたZ軸モータ51のトルクT
mを取得することで、トルクT
mに含まれる外乱力Fを数1に基づき取得する。
【0111】
CPU31は、S77の処理で開始したZ軸モータ51の回転角度θ及び外乱力Fを新たに取得したか否かを判定する(S78)。CPU31は、回転角度θ及び外乱力Fを新たに取得していないと判定した場合(S78:NO)、処理をS78に戻す。CPU31は、S77の処理で回転角度θ及び外乱力Fを新たに取得したと判定した場合(S78:YES)、取得した回転角度θに基づき、主軸9が加工原点に到達したか否かを判定する(S79)。
【0112】
CPU31は、主軸9が加工原点に到達していないと判定した場合(S79:NO)、CPU31は、S77の処理で取得した回転角度θ及び外乱力Fにローパスフィルタによる処理を施す(S80)。
【0113】
CPU31は、外乱力Fを時間微分して微分値fを算出する(S81)。CPU31は、回転角度θと微分値fとを対応付けてRAM33に記憶する(S82)。CPU31は、処理をS78に戻す。
【0114】
CPU31は、主軸9が加工原点に到達したと判定した場合(S79:YES)、S77の処理で開始したZ軸モータ51の回転角度θ及び外乱力Fの取得を停止する(S83)。CPU31は、主軸9の下降を停止する(S84)。CPU31は、処理をS91(
図15参照)に移行する。
【0115】
図15に示すように、CPU31は、RAM33に記憶された微分値fのうち、最小を示す微分値fに対応する回転角度θをピーク角度φ
tとして決定する(S91)。CPU31は、伸縮量推定処理で推定され、RAM33に記憶されたボールねじ41の伸縮量L
bのうち、最新の伸縮量L
b1と、伸縮量L
b1の一つ前に記憶された伸縮量L
b2を取得する(S92)。CPU31は、伸縮量L
b1と伸縮量L
b2との差分ΔL
b(=L
b1-L
b2)を算出する(S93)
【0116】
CPU31は、S93で算出した差分ΔLbが閾値ΔLbmax以下であるか否かを判定する(S94)。ボールねじ41の伸縮量Lbの変化量である差分ΔLbが閾値ΔLbmaxよりも大きい場合、伸縮量Lb2を推定した際の工具交換処理から今回実行中の工具交換処理の間にボールねじ41が大きく伸縮しているので、その間に行われた被削材の加工において、主軸9の位置を精度よく制御できていない虞がある。CPU31は、差分ΔLbが閾値ΔLbmaxよりも大きいと判定した場合(S94:NO)、報知処理を実行する(S103)。CPU31は、S103の処理において報知処理として、表示部38によりエラー報知を行う。CPU31は、工具交換処理を終了する。
【0117】
CPU31は、差分ΔLbが閾値ΔLbmax以下であると判定した場合(S94:YES)、S91の処理で決定したピーク角度φtを、S92の処理で取得した伸縮量Lb1に基づき補正し、補正後のピーク角度φdを決定する(S95)。CPU31は、S95の処理において、S44の処理で行われた差分ρからの伸縮量Lbの算出に対して逆算することで、ボールねじ41の伸縮量Lb1からピーク角度φの差分ρを算出する。CPU31は、ピーク角度φtを算出した差分ρにより減算することで補正後のピーク角度φdとして決定する。CPU31は、S95の処理で決定した補正後のピーク角度φdと、S74の処理で取得した工具3の装着回数とを対応付けて、記憶装置34に記憶する(S96)。
【0118】
CPU31は、主軸9が下降する際に、工具交換位置に工具3があるか否かを判定する(S97)。CPU31は、工具交換位置に工具3がないと判定した場合(S97:NO)、報知処理を実行し(S103)、工具交換処理を終了する。CPU31は、工具交換位置に工具3があると判定した場合(S97:YES)、処理をS98に移行する。
【0119】
CPU31は、S96の処理で記憶装置34に記憶した補正後のピーク角度φdのうち対象ピーク角度(記憶された補正後のピーク角度φdのうち、第一ピーク角度φd1と不完全装着状態となった場合のピーク角度φdを除いたピーク角度)の数が所定数以上か否かを判定する(S98)。CPU31は、対象ピーク角度の数が所定数未満であると判定した場合(S98:NO)、工具交換処理を終了する。
【0120】
CPU31は、対象ピーク角度の数が所定数以上であると判定した場合(S98:YES)、統計処理を実行する(S99)。CPU31は、S99の処理において、記憶装置34に記憶した対象ピーク角度のうち第二ピーク角度から新しい順に数えて所定数分の対象ピーク角度を、装着回数に基づいて取得する。CPU31は、取得した対象ピーク角度の平均値μと標準偏差σを算出する。CPU31は、S99の処理で算出した平均値μ及び標準偏差σに基づき、μ+6σを判定閾値φmaxとして決定する(S100)。
【0121】
CPU31は、S96の処理で記憶装置34に記憶したピーク角度φdのうち、第一ピーク角度φd1が、S100の処理で決定した判定閾値φmax以下であるか否かを判定する(S101)。CPU31は、第一ピーク角度φd1が判定閾値φmaxよりも大きいと判定した場合(S101:NO)、装着動作後の装着状態が不完全装着状態であると判定する。この場合、CPU31は、記憶装置34に記憶した第一ピーク角度φd1を削除する(S102)。CPU31は、報知処理を実行し(S103)、工具交換処理を終了する。
【0122】
CPU31は、第一ピーク角度φd1が判定閾値φmax以下であると判定した場合(S101:YES)、装着動作後の装着状態が完全装着状態であると判定する。この場合、CPU31は工具交換処理を終了する。
【0123】
<本実施形態の作用、効果>
以上説明したように、ボールねじ41は、外部からの加熱、及び外部への放熱により温度Tbが変化する。温度変化ΔTbが生じると、Z軸方向においてボールねじ41は伸縮する。ボールねじ41が伸縮すると、ボールねじ41の伸縮量Lbに応じてピーク角度φが変化する。ピーク角度φによる装着状態の判定において、ボールねじ41の伸縮に起因するピーク角度φの変動と、不完全装着状態に起因するピーク角度φの変動とを切り分けるのは困難である。
【0124】
数値制御装置30のCPU31は、ボールねじ41の伸縮量Lbを推定する(S65)。CPU31は、Z軸モータ51の外乱力Fの取得する(S77)。CPU31は、S77の処理において、Z軸モータ51のトルクTmを取得することで、トルクTmに含まれる外乱力Fを取得する。CPU31は、S65の処理で推定したボールねじ41の伸縮量Lb、及び外乱力Fの時間微分である微分値fの変動により決定されるピーク角度φに基づき、装着状態を判定する(S101)。このように、数値制御装置30は、ボールねじ41の伸縮量Lbを推定する。数値制御装置30は、推定した伸縮量Lb、及びZ軸モータ51のトルクTmに基づき、主軸9に対する工具3の装着状態を判定する。数値制御装置30は、装着状態の判定において伸縮量Lbを勘案するので、装着状態を精度よく判定できる。
【0125】
CPU31は、Z軸モータ51の情報(Z軸モータ51のトルクTm、主軸9の送り速度Vm)を取得する(S63)。CPU31は、取得したトルクTm、送り速度Vmに基づき、熱量Qm、Qf、Qbaを算出する(S64)。CPU31は、算出した熱量Qm、Qf、Qba、及び数15に基づき、ボールねじ41の伸縮量Lbを推定する(S65)。数値制御装置30は、ボールねじ41の熱の出入りに起因するZ軸モータ51の情報を取得し、取得した情報に基づき熱量Qm、Qf、Qbaを算出することで、ボールねじ41の伸縮量Lbを推定する。よって、数値制御装置30は、伸縮量Lbを精度よく推定できる。
【0126】
CPU31は、Z軸モータ51の情報として、Z軸モータ51のトルクTm、主軸9の送り速度Vmを取得する(S63)。CPU31は、角速度(θ(上付き一つドット))を取得することで、送り速度Vmを取得する。数値制御装置30は、取得したトルクTm及び送り速度Vmに基づき、ボールねじ41を出入りする熱量Qm、Qf、Qbaを精度よく算出できる。
【0127】
CPU31は、Z軸モータ51の回転角度θ及び外乱力Fの取得する(S77)。CPU31は、外乱力Fを時間微分して微分値fを算出する(S80)。CPU31は、算出した微分値fのうち、最小を示す微分値fに対応する回転角度θをピーク角度φtとして決定する(S91)。CPU31は、決定したピーク角度φtを伸縮量Lb1に基づき補正し、補正後のピーク角度φdを決定する(S95)。CPU31は、補正後のピーク角度φdのうち第一ピーク角度φd1が判定閾値φmax以下であるか否かを判定することで、装着状態を判定する(S101)。数値制御装置30は、ボールねじ41の伸縮量Lb1に基づきピーク角度φを補正した補正後のピーク角度φdにより、装着状態を判定する。これにより、ピーク角度φdから推定される主軸9の位置と、実際の主軸9の位置のずれが抑制されるので、数値制御装置30は、主軸9に対する工具3の装着状態を精度よく判定できる。
【0128】
CPU31は、補正後のピーク角度φdと、工具3の装着回数とを対応付けて、記憶装置34に記憶する(S96)。CPU31は、記憶装置34に記憶した所定数分の対象ピーク角度を取得し、取得した対象ピーク角度の平均値μと標準偏差σを算出する(S99)。CPU31は、第一ピーク角度φd1が判定閾値φmax(=μ+6σ)以下であるか否かを判定することで、装着状態を判定する(S101)。数値制御装置30は、記憶装置34に記憶した補正後のピーク角度φdのうち所定数分の対象ピーク角度に基づく統計値(平均μ、標準偏差σ)に基づき、装着状態を判定する。これにより、数値制御装置30は、補正後のピーク角度φdを決定する際におけるばらつきの影響を排して、装着状態を精度よく判定できる。
【0129】
CPU31は、伸縮量Lb1と伸縮量Lb2との差分ΔLbが閾値ΔLbmax以下であるか否かを判定する(S94)。CPU31は、差分ΔLbが閾値ΔLbmax以下であると判定した場合(S94:YES)、第一ピーク角度φd1が判定閾値φmax以下であるか判定することで(S101)、装着状態を判定する。CPU31は、差分ΔLbが閾値ΔLbmaxよりも大きいと判定した場合(S94:NO)、装着状態を判定することなく、工具交換処理を終了する。ボールねじ41の伸縮量Lbの変化量である差分ΔLbが閾値ΔLbmaxよりも大きい場合、伸縮量Lbが精度よく推定されていない虞がある。数値制御装置30は、伸縮量Lbの差分ΔLbの大きさを判定することで、伸縮量Lbが精度よく推定されていないことによる装着状態の誤判定を抑制できる。
【0130】
CPU31は、伸縮量推定処理において推定周期ts毎に伸縮量Lbを推定する。推定周期ts(=30s)が制御周期(=0.5ms)に対して十分長いので、数値制御装置30は、少ない計算量で伸縮量Lbを精度よく推定できる。
【0131】
CPU31は、Z軸モータ51のトルクTm、及び主軸9の送り速度Vm及び回転角度θを周期tm毎に繰り返し取得する(S53)。周期tmは、数値制御装置30における制御周期のうちで最も短い時間である。数値制御装置30は、トルクTmを取得可能な最小単位である制御周期毎にトルクTmを取得する。数値制御装置30は、取得したトルクTmに含まれる外乱力Fに基づきピーク角度φを決定し、装着状態を判定する。トルクTmを取得する間隔が制御周期毎であるので、数値制御装置30は、ピーク角度φをより正確に決定でき、装着状態を精度よく判定できる。
【0132】
<変形例>
本発明は上記実施形態から種々変更できる。以下説明する各種変形例は、矛盾が生じない限り夫々組み合わせ可能である。例えば、数値制御装置30は工作機械1に設けられる場合に限らず、工作機械1とは別体に設けられてもよい。例えば数値制御装置30は、工作機械1に接続した装置(PC、専用機等)でもよい。工具交換装置20は、タレット式に限らず、例えばアーム式でもよい。
【0133】
数値制御装置30のCPU31は、外乱力Fではなく、S54の処理でRAM33に記憶されたZ軸モータ51のトルクTmを取得し、トルクTmの変動に基づき、ピーク角度φを決定してもよい。この場合、CPU31は、外乱力Fを取得した場合と同様に、トルクTmを時間微分する。CPU31は、トルクTmの微分値のうち、最小を示すトルクTmの微分値に対応する回転角度θをピーク角度φとして決定する。CPU31は、決定したピーク角度φを伸縮量Lbに基づき補正し、装着状態を判定する。このように、数値制御装置30は、トルクTmの変動に基づき、装着状態を判定できる。
【0134】
数値制御装置30のCPU31は、工具3の装着状態として、装着部15と装着穴92との間に異物が付着したまま工具3が装着された不完全装着状態以外の装着状態を判定してもよい。CPU31は、例えば装着状態として工具劣化状態を判定してもよい。工具劣化状態は、例えば、工具3が繰り返し装着されたことにより、プルスタッド17の装着部15との接続部分が内側に凹んだ状態である。工具劣化状態において装着動作において把持部85がプルスタッド17を引っ張り上げて把持する位置は、完全装着状態より下方になる。従って、装着状態が工具劣化状態である場合、外乱力Fの時間微分である微分値fが最小をピーク角度φは、装着状態が完全装着状態である場合と比較して下方に変動する。CPU31は、例えばμ-6σを判定の閾値として第一ピーク角度φd1が、S100の処理で決定した閾値(=μ-6σ)以上であるか否かを判定することで、装着状態が完全装着状態又は工具劣化状態の何れであるかを判定してもよい。
【0135】
数値制御装置30のCPU31は、熱量Qm、Qf、Qbaを算出せずに伸縮量Lbを推定してもよい。数値制御装置30は、例えば温度センサによりボールねじ41の温度変化を検出し、温度変化に基づき伸縮量Lbを推定してもよい。数値制御装置30は、例えば変位センサによりボールねじ41の上端部における所定の位置の変化を検出し、上端部における所定の位置の変化に基づき伸縮量Lbを推定してもよい。
【0136】
伸縮量Lbを推定するための数理モデルは一例であり、適宜変更してもよい。数値制御装置30は、熱量Qf、Qm、Qbaの全てを算出しなくてもよい。数値制御装置30は、例えば熱量Qfを算出せず、算出した熱量Qm、Qbaに基づき伸縮量Lbを推定してもよい。数値制御装置30は、ボールねじ41をZ軸方向において複数に分割した区間の夫々の熱量Qm、Qf、Qbaを算出し、伸縮量Lbを推定してもよい。
【0137】
数値制御装置30のCPU31は、S63の処理において、Z軸モータ51のトルクTm、送り速度Vmと異なるZ軸モータ51の情報を取得してもよい。CPU31は、S63の処理において、例えばZ軸モータ51の温度を検出するセンサからZ軸モータ51の温度を取得してもよい。
【0138】
数値制御装置30のCPU31は、回転角度θ及び外乱力Fを補間(オーバーサンプリング)した補間角度及び補間外乱力を生成して分解能を高めてもよい。この場合、CPU31は、補間外乱力を時間微分した微分値と補間角度とに基づきピーク角度φを決定することで、ピーク角度φを板カム47がカムフォロア49から離隔するタイミングにおける回転角度θとより近似させることができる。
【0139】
数値制御装置30のCPU31は、装着動作における微分値fが最大を示す場合の回転角度θをピーク角度φとして決定してもよい。CPU31は、Z軸モータ51の回転角度θに基づき推定される主軸9のZ軸方向の位置により、装着状態を判定してもよい。この場合、CPU31は、微分値fのうち最小を示す微分値fに対応するピーク位置を、推定した伸縮量Lbにより補正し、装着状態を判定する。
【0140】
ピーク角度φtの補正は、伸縮量Lbに基づいて補正されればよく、補正後のピーク角度φdの決定方法は上記実施形態に限定されない。例えば、CPU31は、RAM33に記憶された伸縮量Lbのうち所定数の伸縮量Lbを抽出し、抽出した伸縮量Lbの平均からピーク角度φの差分ρを算出し、ピーク角度φtから当該差分ρを減算することで、補正後のピーク角度φdを決定してもよい。上記実施形態において、伸縮量Lbからピーク角度φの差分ρを算出し、ピーク角度φtを差分ρに基づき補正した。これに対し、CPU31は、ピーク角度φtから主軸9のZ軸方向の位置を推定し、推定した主軸9のZ軸方向の位置を伸縮量Lbにより補正し、補正した主軸9のZ軸方向の位置から補正後のピーク角度φdを決定してもよい。CPU31は、工具3ごとにピーク角度φtを記憶装置34に記憶し、工具3ごとのピーク角度φtの平均から伸縮量Lb1を減算することで、工具3ごとの補正後のピーク角度φdを決定してもよい。
【0141】
上記実施形態において、数値制御装置30のCPU31は、補正後のピーク角度φdと、工具3の装着回数とを対応付けて、記憶装置34に記憶した。これに対し、CPU31は、一例として工具3の使用時間と、補正後のピーク角度φdとを対応付けて記憶装置34に記憶してもよい。
【0142】
数値制御装置30は、対象ピーク角度のうち第二ピーク角度から新しい順に数えて所定数分の対象ピーク角度を抽出し、抽出した所定数のピーク角度φdから一意に決定した値を平均値μの代わりに統計値として算出してもよい。数値制御装置30は、例えば抽出した所定数のピーク角度φdの中央値を統計値として算出してもよい。
【0143】
判定閾値φmaxの大きさは、μ+6σに限定されず、適宜変更してもよい。判定閾値φmaxは、所定数の対象ピーク角度を統計処理して決定された値ではなく、記憶装置34に記憶された所定値でもよい。
【0144】
伸縮量Lbの変化量として算出される差分ΔLbは、Lb1-Lb2以外の値でもよい。例えば、差分ΔLbは、RAM33に記憶されたボールねじ41の伸縮量Lbのうち、最新の伸縮量Lb1と、最古に記憶された伸縮量L1との差分であってもよい。
【0145】
伸縮量推定処理において、伸縮量Lbを推定する推定周期tsの大きさは適宜変更してもよい。推定周期tsは、例えば制御周期(0.5ms)であってもよい。
【0146】
Z軸モータ51のトルクTm、及び主軸9の送り速度Vmを取得する周期tmの大きさは適宜変更してもよい。周期tmは、制御周期(0.5ms)よりも大きくてもよい。
【0147】
上記実施形態において、数値制御装置30は、外乱力Fの取得方法を適宜変形してもよい。例えば、数値制御装置30は、数1に代わり、トルクTmと慣性力の差分を外乱力Fとして取得してもよい。
【0148】
数値制御装置30は、回転角度θ及び外乱力Fにローパスフィルタによる処理を施さなくてもよい。この場合、S28、S80の処理を省略してもよい。数値制御装置30は、回転角度θ及び外乱力Fにハイパスフィルタ、バンドパスフィルタによる処理を施してもよい。
【0149】
数値制御装置30は、パラメータ推定処理において、工具3の工具交換において生じる外乱力F以外の外乱力Fを使って伸縮量Lbを特定しても良い。例えば、X軸モータ53を回転させてテーブル13をモータの反対側に移動させ、ストローク端に押し当てることで生じる外乱力Fによって伸縮量Lbを特定しても良い。
【0150】
Z軸移動機構8の構成は適宜変更してもよい。Z軸移動機構8は、ボールねじ41の代わりに、Z軸モータ51の回転によって主軸9を移動する構成を有してもよい。Z軸移動機構8は、ボールねじ41に代わり、例えばZ軸方向に延びるすべりねじ、Z軸方向に歯が形成されたスプライン軸を有してもよい。この場合、すべりねじ、スプライン軸は、本発明の「送り軸」の一例である。
【0151】
上記実施形態において、トルクTmに含まれる外乱力Fの微分値fを特徴量として、ピーク角度φが決定されたが、ピーク角度φを決定するための特徴量は適宜変更してもよい。数値制御装置30は、例えば外乱力Fを微分せず、時間により変動する外乱力F(トルクTm)を特徴量としてピーク角度φを決定してもよい。この場合、数値制御装置30は、外乱力Fのうち、最大又は最小の何れか一方を示す外乱力Fに対応する回転角度θをピーク角度φとして決定してもよい。
【0152】
数値制御装置30は、時間により変動するトルクTmを特徴量としてピーク角度φを決定してもよい。この場合、数値制御装置30は、トルクTmのうち、最大又は最小の何れか一方を示すトルクTmに対応する回転角度θをピーク角度φとして決定してもよい。
【0153】
数値制御装置30は、外乱力F(トルクTm)を二乗した値、外乱力F(トルクTm)を二階微分した値、所定時間内の外乱力F(トルクTm)を平均した値等を特徴量としてピーク角度φを決定してもよい。
【0154】
数値制御装置30は、装着動作において、最小を示す微分値fに対応する回転角度θをピーク角度φとしなくてもよい。数値制御装置30は、装着動作において、最大を示す微分値fに対応する回転角度θをピーク角度φとしてもよい。数値制御装置30は、脱離動作において、最大を示す微分値fに対応する回転角度θをピーク角度φとしてもよい。数値制御装置30は、脱離動作において、最小を示す微分値fに対応する回転角度θをピーク角度φとしてもよい。
【0155】
数値制御装置30は、微分値fのうち最大又は最小の何れか一方を示す微分値fに対応する回転角度θをピーク角度φとして決定しなくてもよい。数値制御装置30は、例えば最小を示す微分値fに対応する回転角度θから所定の角度θ1だけずれた回転角度(θ―θ1)をピーク角度φとして決定してもよい。数値制御装置30は、例えば最小を示す微分値fに対応する回転角度θに所定の係数βを乗算した回転角度(βθ)をピーク角度φとして決定してもよい。
【0156】
<その他>
上記実施形態において、Z軸方向は、本発明の「所定方向」の一例である。ボールねじ41は、本発明の「送り軸」の一例である。Z軸モータ51は、本発明の「モータ」の一例である。伸縮量推定処理を実行するCPU31は、本発明の「推定部」の一例である。S77の処理を実行するCPU31は、本発明の「第一取得部」の一例である。S101の処理を実行するCPU31は、本発明の「判定部」「補正判定部」「統計判定部」の一例である。S63の処理を実行するCPU31は、本発明の「第二取得部」の一例である。S64の処理を実行するCPU31は、本発明の「算出部」の一例である。角速度は、本発明の「回転速度」の一例である。S81の処理を実行するCPU31は、本発明の「微分部」の一例である。S91の処理を実行するCPU31は、本発明の「決定部」の一例である。ピーク角度φdは、本発明の「補正ピーク角度」の一例である。S95の処理を実行するCPU31は、本発明の「第二決定部」の一例である。S96の処理を実行するCPU31は、本発明の「記憶部」の一例である。S99の処理を実行するCPU31は、本発明の「統計処理部」の一例である。差分ΔLbは、本発明の「差分」の一例である。閾値ΔLbmaxは、本発明の「閾値」の一例である。周期tmは、本発明の「制御周期」の一例である。伸縮量推定処理は、本発明の「推定工程」の一例である。S77の処理は、本発明の「第一取得工程」の一例である。S101の処理は、本発明の「判定工程」の一例である。
【符号の説明】
【0157】
1 工作機械
3 工具
9 主軸
20 工具交換装置
30 数値制御装置
31 CPU
41 ボールねじ
51 Z軸モータ