以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わされてもよい。
<A.工作機械100の構成>
まず、図1を参照して、工作機械100の構成について説明する。図1は、工作機械100の外観を示す図である。
工作機械100は、ワークの加工機である。一例として、工作機械100は、ワークの除去加工(SM(Subtractive manufacturing)加工)を行う工作機械である。あるいは、工作機械100は、ワークの付加加工(AM(Additive manufacturing)加工)を行う工作機械であってもよい。また、工作機械100は、立形のマシニングセンタであってもよいし、横形のマシニングセンタであってもよいし、ターニングセンタであってもよい。あるいは、工作機械100は、旋盤であってもよいし、その他の切削機械や研削機械であってもよい。さらに、工作機械は、これらを組み合わせた複合機であってもよい。
工作機械100は、加工エリアAR1と、工具エリアAR2とを有する。加工エリアAR1および工具エリアAR2は、それぞれカバーによって区画化されている。加工エリアAR1には、主軸頭130が設けられている。工具エリアAR2には、ATC160と、マガジン170とが設けられている。マガジン170は、ワークの加工に用いられる種々の工具を収納する。マガジン170に収納されている工具は、加工エリアAR1と工具エリアAR2との間の仕切に設けられているドアDを介して主軸頭130に取り付けられる。ドアDは、スライド式のドアであり、モータなどの駆動源により開閉される。
<B.工作機械100の駆動機構>
次に、図2を参照して、工作機械100における各種の駆動機構について説明する。図2は、工作機械100における駆動機構の構成例を示す図である。
図2に示されるように、工作機械100は、制御装置5と、回転駆動部110Aと、位置駆動部110Bと、ATCドライバ111Nと、主軸頭130と、ATC160とを含む。
本明細書でいう「制御装置5」とは、工作機械100を制御する装置を意味する。制御装置5の装置構成は、任意である。制御装置5は、単体の制御ユニットで構成されてもよいし、複数の制御ユニットで構成されてもよい。図2の例では、制御装置5は、CPUユニット20と、CNCユニット30と、情報処理装置40とで構成されている。
CPUユニット20およびCNCユニット30は、たとえば、バスBを介して互いに通信を行う。CNCユニット30および情報処理装置40は、たとえば、通信経路NW(たとえば、無線LAN、有線LAN、フィールドネットワークなど)を介して互いに通信を行う。
CPUユニット20は、PLC(Programmable Logic Controller)である。CPUユニット20は、予め設計されているPLCプログラムに従って、制御装置5を構成する各種ユニットを制御する。当該PLCプログラムは、たとえば、ラダープログラムで記述されている。CPUユニット20は、当該PLCプログラムに従ってATCドライバ111Nを制御し、ATC160の送り駆動および回転駆動を制御する。
ATC160は、中心軸165と、アーム166とを含む。図2の例では、中心軸165は、Z軸に平行に設けられている。アーム166は、中心軸165の軸方向に直交する一方向に中心軸165から延出している工具把持部166Aと、当該一方向の反対方向に中心軸165から延出している工具把持部166Bとを含む。
ATCドライバ111Nは、たとえば、2軸一体型のドライバであり、ATC160に接続される第1,第2サーボモータ(図示しない)の駆動を制御する。より具体的には、ATCドライバ111Nは、第1サーボモータの目標回転速度の入力と、第2サーボモータの目標回転速度の入力とのそれぞれをCPUユニット20から受け、第1,第2サーボモータ(図示しない)のそれぞれを制御する。
上記第1サーボモータは、ATCドライバ111Nからの出力電流に従ってATC160のアーム166を送り駆動し、Z軸方向の任意の位置にアーム166を駆動する。上記第2サーボモータは、ATCドライバ111Nからの出力電流に従ってATC160のアーム166を回転駆動し、Z軸を中心とした回転方向(すなわち、C軸方向)の任意の回転角度にアーム166を駆動する。
ATC160は、工具の交換命令を受けたことに基づいて、マガジン170から次使用工具T2を取得する。その後、ATC160は、使用済工具T1を主軸132から抜き取るとともに、次使用工具T2を主軸132に装着する。その後、ATC160は、主軸132から抜き取った使用済工具T1をマガジン170に収納する。
CNCユニット30は、CPUユニット20からの加工開始指令を受けたことに基づいて、予め設計されている加工プログラムの実行を開始する。当該加工プログラムは、たとえば、NC(Numerical Control)プログラムで記述されている。CNCユニット30は、当該加工プログラムに従って、回転駆動部110Aおよび位置駆動部110Bを制御し、主軸頭130を駆動する。
主軸頭130は、主軸筒131と、主軸132とを含む。主軸132は、主軸筒131により回転可能に支持されている。主軸132にはマガジン170から選択された一の工具が装着される。工具は、主軸132と連動して回転する。
回転駆動部110Aは、主軸132の角度を変えるための駆動機構である。一例として、回転駆動部110Aは、X軸方向を回転軸中心とした回転方向(以下、「A軸方向」ともいう。)、Y軸方向を回転軸中心とした回転方向(以下、「B軸方向」ともいう。)、および、Z軸方向を回転軸中心とした回転方向(以下、「C軸方向」ともいう。)の少なくとも1つの角度を調整する。回転駆動部110Aの装置構成は、任意である。回転駆動部110Aは、単体の駆動ユニットで構成されてもよいし、複数の駆動ユニットで構成されてもよい。図2の例では、回転駆動部110Aは、サーボドライバ111B、111Cで構成されている。
位置駆動部110Bは、主軸132の位置を変えるための駆動機構である。一例として、位置駆動部110Bは、X軸方向、Y軸方向およびZ軸方向の少なくとも1つの位置を調整する。位置駆動部110Bの装置構成は、任意である。位置駆動部110Bは、単体の駆動ユニットで構成されてもよいし、複数の駆動ユニットで構成されてもよい。図2の例では、位置駆動部110Bは、サーボドライバ111X~111Zで構成されている。
サーボドライバ111Bは、CNCユニット30から目標回転速度の入力を逐次的に受け、B軸方向に主軸頭130を回転駆動するためのサーボモータ112Bを制御する。
より具体的には、サーボドライバ111Bは、サーボモータ112Bの回転角度を検知するためのエンコーダ113Bのフィードバック信号からサーボモータ112Bの実回転速度を算出し、当該実回転速度が目標回転速度よりも小さい場合にはサーボモータ112Bの回転速度を上げ、当該実回転速度が目標回転速度よりも大きい場合にはサーボモータ112Bの回転速度を下げる。このように、サーボドライバ111Bは、サーボモータ112Bの回転速度のフィードバックを逐次的に受けながらサーボモータ112Bの回転速度を目標回転速度に近付ける。これにより、サーボドライバ111Bは、B軸方向における主軸頭130の回転速度を調整する。また、サーボドライバ111Bは、当該回転速度を時間で積分することでB軸方向における主軸132の回転角度を得ることができる。
サーボドライバ111Cは、CNCユニット30から目標回転速度の入力を逐次的に受け、主軸132の軸方向を中心とした回転方向に主軸132を回転駆動するためのサーボモータ112Cを制御する。
より具体的には、サーボドライバ111Cは、サーボモータ112Cの回転角度を検知するためのエンコーダ113Cのフィードバック信号からサーボモータ112Cの実回転速度を算出し、当該実回転速度が目標回転速度よりも小さい場合にはサーボモータ112Cの回転速度を上げ、当該実回転速度が目標回転速度よりも大きい場合にはサーボモータ112Cの回転速度を下げる。このように、サーボドライバ111Cは、サーボモータ112Cの回転速度のフィードバックを逐次的に受けながらサーボモータ112Cの回転速度を目標回転速度に近付ける。これにより、サーボドライバ111Cは、主軸132の回転速度を調整する。また、サーボドライバ111Cは、当該回転速度を時間で積分することでC軸方向における主軸132の回転角度を得ることができる。
サーボドライバ111Xは、CNCユニット30から目標位置の入力を逐次的に受け、サーボモータ112Xを制御する。サーボモータ112Xは、主軸頭130が取り付けられている移動体をボールネジ(図示しない)を介して送り駆動し、X軸方向の任意の位置に主軸頭130を移動する。
より具体的には、サーボドライバ111Xは、サーボモータ112Xの回転角度を検知するためのエンコーダ113Xのフィードバック信号からサーボモータ112Xの実回転速度を算出し、当該実回転速度が目標回転速度よりも小さい場合にはサーボモータ112Xの回転速度を上げ、当該実回転速度が目標回転速度よりも大きい場合にはサーボモータ112Xの回転速度を下げる。このように、サーボドライバ111Xは、サーボモータ112Xの回転速度のフィードバックを逐次的に受けながらサーボモータ112Xの回転速度を目標回転速度に近付ける。これにより、サーボドライバ111Xは、主軸132の回転速度を調整する。また、サーボドライバ111Xは、当該回転速度を時間で積分することでX軸方向における主軸132の位置を得ることができる。
サーボドライバ111Yは、CNCユニット30から目標位置の入力を逐次的に受け、サーボモータ112Yを制御する。サーボモータ112Yは、主軸頭130が取り付けられている移動体をボールネジ(図示しない)を介して送り駆動し、Y軸方向の任意の位置に主軸頭130を移動する。
より具体的には、サーボドライバ111Yは、サーボモータ112Yの回転角度を検知するためのエンコーダ113Yのフィードバック信号からサーボモータ112Yの実回転速度を算出し、当該実回転速度が目標回転速度よりも小さい場合にはサーボモータ112Yの回転速度を上げ、当該実回転速度が目標回転速度よりも大きい場合にはサーボモータ112Yの回転速度を下げる。このように、サーボドライバ111Yは、サーボモータ112Yの回転速度のフィードバックを逐次的に受けながらサーボモータ112Yの回転速度を目標回転速度に近付ける。これにより、サーボドライバ111Yは、主軸132の回転速度を調整する。また、サーボドライバ111Yは、当該回転速度を時間で積分することでY軸方向における主軸132の位置を得ることができる。
サーボドライバ111Zは、CNCユニット30から目標位置の入力を逐次的に受け、サーボモータ112Zを制御する。サーボモータ112Zは、主軸頭130が取り付けられている移動体をボールネジ(図示しない)を介して送り駆動し、Z軸方向の任意の位置に主軸頭130を移動する。
より具体的には、サーボドライバ111Zは、サーボモータ112Zの回転角度を検知するためのエンコーダ113Zのフィードバック信号からサーボモータ112Zの実回転速度を算出し、当該実回転速度が目標回転速度よりも小さい場合にはサーボモータ112Zの回転速度を上げ、当該実回転速度が目標回転速度よりも大きい場合にはサーボモータ112Zの回転速度を下げる。このように、サーボドライバ111Zは、サーボモータ112Zの回転速度のフィードバックを逐次的に受けながらサーボモータ112Zの回転速度を目標回転速度に近付ける。これにより、サーボドライバ111Zは、主軸132の回転速度を調整する。また、サーボドライバ111Zは、当該回転速度を時間で積分することでZ軸方向における主軸132の位置を得ることができる。
なお、上述では、回転駆動部110Aがサーボドライバで構成されている例について説明を行ったが、回転駆動部110Aは、その他のモータドライバで構成されてもよい。一例として、回転駆動部110Aは、ステッピングモータ用の1つ以上のモータドライバで構成されてもよい。同様に、位置駆動部110Bは、ステッピングモータ用の1つ以上のモータドライバで構成されてもよい。
情報処理装置40は、汎用のコンピュータである。一例として、情報処理装置40は、デスクトップ型のコンピュータであってもよいし、ノート型のコンピュータであってもよいし、タブレット端末であってもよい。
情報処理装置40は、ワークの形状を測定するための測定器10と無線で通信を行う。測定器10は、非使用時にはマガジン170(図1参照)に収納されており、使用時にはATC160によって主軸132に装着される。測定器10は、ワークの加工前、ワークの加工中、およびワークの加工後において、主軸132に装着された状態でワークの形状を測定する。
一例として、測定器10は、距離センサとして機能する。より具体的には、測定器10は、レーザ光をワークの表面に向けて照射し、ワークWの表面により反射されたレーザ光を受光してワークWの表面との間の距離を算出する。測定器10による測定結果は、情報処理装置40に送信される。情報処理装置40は、測定器10の測定結果に基づいて、種々の処理を実行する。
<C.測定器10の内部構成>
次に、図3を参照して、図2に示される測定器10の内部構成について説明する。図3は、測定器10の内部構造を示す断面図である。
図3を参照して、測定器10は、筐体150を含む。筐体150は、その内部に、制御回路101と、レーザ発振器161と、CCDカメラ162と、プリズム163と、反射鏡164と、絞り167と、凸レンズ168,169とを有する。筐体150の上端には、主軸132との接続機構146が設けられる。
レーザ発振器161は、ワークWの表面にレーザ光を照射する。CCDカメラ162は、レーザ発振器161から照射されワークWの表面で反射したレーザ光を受光して2次元画像データを生成する。プリズム163および反射鏡164は、レーザ発振器161とワークWとの間に配置され、レーザ発振器161からのレーザ光をワークWの表面に導く。凸レンズ168,169は、CCDカメラ162とワークWとの間に配置され、ワークWの表面で反射したレーザ光をCCDカメラ162の撮像面162A上に結像させる。絞り167は、CCDカメラ162と凸レンズ169との間に配置される。
<D.概要>
次に、図4を参照して、測定器10による距離データの測定タイミングと、制御装置5による測定器10の位置データの取得タイミングとの同期処理について説明する。図4は、測定器10による距離データの測定過程を時系列で示す図である。
図4に示されるように、工作機械100は、上述の制御装置5と、駆動装置110と、検知部113と、主軸頭130とを備える。
駆動装置110は、主軸頭130を駆動するための構成である。一例として、上述の回転駆動部110A(図2参照)と、上述の位置駆動部110B(図2参照)とを含む。主軸頭130の主軸132には、上述の測定器10が装着されている。制御装置5は、駆動装置110を制御することで主軸頭130を駆動し、任意の位置および任意の角度に測定器10を駆動する。
検知部113は、主軸頭130の位置(以下、「主軸位置」ともいう。)を検知するための構成である。検知部113は、測定器10の位置を検知する機能を有するものであれば特に限定されないが、たとえば、上述のエンコーダ113X~113Z,113Cの少なくとも1つで構成される。
より具体的な処理として、まず、制御装置5は、所定周期のパルス信号PS1(第1パルス信号)を生成し、パルス信号PS1に従って、検知部113による主軸132の位置の取得タイミングを制御する。一例として、制御装置5は、パルス信号PS1がオフからオンに変化したタイミングで主軸位置の取得指令を検知部113に出力する。
検知部113は、制御装置5から取得指令を受けて、主軸位置を取得する。主軸位置は、たとえば、X軸方向の主軸132の座標値と、Y軸方向の主軸132の座標値と、Z軸方向の主軸132の座標値と、B軸方向の主軸132の角度とで示される。
X軸方向の主軸132の座標値は、たとえば、エンコーダ113X(図2参照)のフィードバック信号から特定される。Y軸方向の主軸132の座標値は、たとえば、エンコーダ113Y(図2参照)のフィードバック信号から特定される。Z軸方向の主軸132の座標値は、たとえば、エンコーダ113Z(図2参照)のフィードバック信号から特定される。B軸方向の主軸132の座標値は、たとえば、エンコーダ113B(図2参照)のフィードバック信号から特定される。
検知部113によって検知された主軸位置は、制御装置5に出力される。制御装置5は、検知部113によって検知された主軸位置に基づいて、測定器10の位置を算出する。
より具体的には、主軸132の軸方向における測定器10の長さ(以下、「測定器長」ともいう。)は既知であり、制御装置5は、B軸方向の主軸132の角度と、主軸位置と、測定器長とに基づいて、工作機械100内における測定器10の位置を算出する。このように、測定器10の位置は、主軸位置から特定できるため、「測定器10の位置」は、「主軸位置」と同義である。
また、制御装置5は、同期パルス信号PS0を生成する。同期パルス信号PS0は、測定器10による距離の測定タイミングを検知部113による主軸位置の検知タイミングと同期させるための信号である。同期パルス信号PS0の周期は、パルス信号PS1の周期と同じである。一例として、同期パルス信号PS0の周期は、16msecである。
制御装置5は、同期パルス信号PS0に従って、測定器10による距離データの測定タイミングを制御する。一例として、制御装置5は、同期パルス信号PS0がオフからオンに変化したタイミングで距離データの測定指令を測定器10に送信する。
このとき、ワークなどの障害物によって測定器10と制御装置5との通信が遮られることで、制御装置5は、測定器10と通信不能になることがある。この場合には、測定器10は、制御装置5から測定指令を受信することができないので、距離データの測定タイミングを判断することができない。そのため、測定器10は、パルス信号PS1および同期パルス信号PS0と同期が取られているパルス信号PS2(第2パルス信号)を自身で生成する。パルス信号PS2は、パルス信号PS1および同期パルス信号PS0と同周期である。
測定器10は、制御装置5と通信可能な場合には、同期パルス信号PS0に従って距離データの測定タイミングを制御し、制御装置5と通信不能な場合には、パルス信号PS2に従って距離データの測定タイミングを制御する。ステップS1においては、測定器10は、制御装置5と通信可能な場所に位置しているため、同期パルス信号PS0に従って距離データを測定する。ステップS2においては、測定器10は、制御装置5と通信不能な場所に位置しており、自身で生成したパルス信号PS2に従って距離データを測定する。
パルス信号PS2は、測定器10の内部クロックに従って生成されているため、制御装置5と測定器10とが通信不能な状態が長時間継続すると、制御装置5および測定器10が非同期になる可能性がある。そこで、制御装置5は、測定器10と通信不能状態な状態が所定時間(たとえば、1~10分)以上継続した場合に、測定器10と通信可能な位置まで駆動装置110に主軸132を駆動させる(ステップS2→S3参照)。
これにより、測定器10は、制御装置5との通信が回復し、制御装置5および測定器10が同期しているか否かを確認することができる。制御装置5および測定器10の同期が維持できている場合には、測定器10は、前回中断した場所から距離データの測定処理を再び開始する。一方で、制御装置5および測定器10が非同期となっている場合には、測定器10は、パルス信号PS2をパルス信号PS1または同期パルス信号PS0と同期させる。その後、測定器10は、前回中断した場所から距離データの測定処理を再び開始する。
<E.同期処理を実現するための機能構成>
次に、図5~図10を参照して、工作機械100の機能構成について説明する。図5は、制御装置5と測定器10との同期処理を実現するための機能構成の一例を示す図である。
工作機械100は、上述の制御装置5(図2参照)と、上述の測定器10(図2参照)とを備える。制御装置5は、機能構成として、第1パルス生成部52と、位置取得部54と、同期パルス生成部57と、書込部68と、マージ部69とを含む。測定器10は、機能構成として、第1距離取得部61と、第2パルス生成部64と、第2距離取得部65とを含む。以下では、制御装置5および測定器10の各機能構成について順に説明する。
なお、制御装置5に備えられる各機能構成の配置は、任意である。一例として、制御装置5に備えられる各種機能は、上述のCPUユニット20(図2参照)に実装されてもよいし、上述のCNCユニット30(図2参照)に実装されてもよいし、上述の情報処理装置40(図2参照)に実装されてもよい。あるいは、制御装置5に備えられる機能構成の一部がCPUユニット20に実装され、残りの機能構成の一部がCNCユニット30に実装され、残りの機能構成が情報処理装置40に実装されてもよい。あるいは、制御装置5に備えられる機能構成の一部は、サーバーなどの外部装置に実装されてもよいし、専用のハードウェアに実装されてもよい。
一例として、第1パルス生成部52と、位置取得部54と、同期パルス生成部57とは、CNCユニット30に実装される。書込部68と、マージ部69とは、情報処理装置40に実装される。
(E1.第1パルス生成部52)
まず、図6を参照して、図5に示される第1パルス生成部52の機能について説明する。図6は、パルス信号PS1と、同期パルス信号PS0と、パルス信号PS2とを示す図である。
第1パルス生成部52は、第1クロック51から出力されるクロック信号に基づいて、パルス信号PS1を生成する。第1クロック51は、タイマーとして機能し、制御装置5内での時間の基準となる。典型的には、第1クロック51は、規則的な信号を一定の時間間隔ごとに出力する。第1パルス生成部52は、第1クロック51から出力されるクロック信号を基準として、一定の時間間隔ΔTごとにパルスP1を出力する。時間間隔ΔTは、たとえば、16msecである。生成されたパルス信号PS1は、位置取得部54および同期パルス生成部57のそれぞれに出力される。
(E2.位置取得部54)
次に、図7および図8を参照して、図5に示される位置取得部54の機能について説明する。
図7は、パルス信号PS1に基づいた主軸位置の検知タイミングと、同期パルス信号PS0に基づいた距離データの測定タイミングと、パルス信号PS2に基づいた距離データの測定タイミングとを概略的に示す図である。
図7に示されるように、位置取得部54は、パルス信号PS1に従って、主軸位置の検知タイミングを制御する。一例として、位置取得部54は、パルス信号PS1がオフからオンに変化したタイミングで主軸位置の取得指令を上述の検知部113(図4参照)に出力する。
検知部113は、制御装置5から取得指令を受けて、主軸位置を検知する。当該主軸位置は、たとえば、X軸方向の主軸132の座標値と、Y軸方向の主軸132の座標値と、Z軸方向の主軸132の座標値と、B軸方向の主軸132の角度とで示される。
位置取得部54は、カウンタ55を有する。カウンタ55は、パルス信号PS1のパルスP1の数をカウントする機能を有する。一例として、カウンタ55は、パルス信号PS1がオフからオンに変化したタイミングでカウント値をインクリメントする。
位置取得部54は、検知部113から取得した主軸位置を、カウンタ55による現在のカウント値に対応付けた上で、図8に示される位置データベースDB1に書き込む。
図8は、位置データベースDB1のデータ構造の一例を示す図である。図8に示されるように、位置データベースDB1において、各主軸位置は、当該主軸位置の検知時点におけるカウント値に対応付けられている。好ましくは、位置データベースDB1において、各主軸位置は、当該主軸位置の検知時点における第1クロック51の時間情報(たとえば、時刻)がさらに対応付けられる。
(E3.同期パルス生成部57)
次に、上述の図6を参照して、図5に示される同期パルス生成部57の機能について説明する。
同期パルス生成部57は、同期パルス信号PS0を生成する。同期パルス信号PS0は、測定器10による距離の測定タイミングを検知部113による主軸位置の検知タイミングと同期させるための信号である。同期パルス信号PS0は、パルス信号PS1に基づいて生成されてもよいし、第1クロック51から出力されるクロック信号に基づいて生成されてもよい。
図6に示されるように、同期パルス信号PS0は、パルス信号PS1と同周期である。一例として、同期パルス信号PS0の周期は、16msecである。
好ましくは、同期パルス信号PS0は、パルス信号PS1よりも所定時間Δnだけ早い。所定時間Δnは、測定指令が制御装置5から測定器10に送信されてから、測定器10が距離データを測定するまでの遅れ時間に相当する。
より具体的には、パルス信号PS1は、パルスP1(第1パルス)を含む。同期パルス信号PS0は、パルスP1に対応するパルスP0を含む。パルスP0の各々の立ち上がりタイミングは、対応するパルスP1の立ち上がりタイミングよりも所定時間Δnだけ早い。立ち上がりタイミングとは、パルスP1がオフからオンに変化したタイミングを表わす。また、パルスP0の各々の立ち下がりタイミングは、対応するパルスP1の立ち下がりタイミングよりも所定時間Δnだけ早い。立ち下がりタイミングとは、パルスP1がオンからオフに変化したタイミングを表わす。
同期パルス生成部57は、パルス信号PS1よりも所定時間Δnだけ同期パルス信号PS0を早く出力することで、測定器10による測定タイミングを主軸位置の取得タイミングと一致または略一致させることができる。
同期パルス生成部57は、生成した同期パルス信号PS0を測定器10に送信する。なお、同期パルス生成部57は、同期パルス信号PS0を測定器10に送信する代わりに、同期パルス信号PS0がオフからオンに変化したタイミングで測定指令を測定器10に送信してもよい。
なお、上述では、同期パルス信号PS0がパルス信号PS1と同周期である前提で説明を行ったが、同期パルス信号PS0は、パルス信号PS1と必ずしも同周期である必要は無い。一例として、同期パルス信号PS0およびパルス信号PS1の一方の周期は、他方の周期の整数倍であってのよい。
(E4.第1距離取得部61)
次に、上述の図7を参照して、図5に示される第1距離取得部61の機能について説明する。
図7に示されるように、第1距離取得部61は、制御装置5と通信可能な場合には、制御装置5から受信した同期パルス信号PS0に従って、測定器10による距離データの測定タイミングを制御する。一例として、第1距離取得部61は、同期パルス信号PS0がオフからオンに変化したタイミングで距離データの測定指令を距離測定ユニット105に出力する。
距離測定ユニット105は、上述のレーザ発振器161(図3参照)や上述のCCDカメラ162(図3参照)などで構成される。距離測定ユニット105は、第1距離取得部61から測定指令を受けて、測定器10からワーク表面までの距離データを測定する。
上述のように、同期パルス信号PS0は、パルス信号PS1よりも所定時間Δnだけ早い。これにより、測定指令が測定器10に送信されてから測定器10が距離データを測定するまでの遅れ時間が所定時間Δnで相殺され、測定器10による距離データの取得タイミングは、制御装置5による主軸位置の取得タイミングと一致または略一致する。
第1距離取得部61は、カウンタ62を有する。カウンタ62は、同期パルス信号PS0のパルスP0の数をカウントする機能を有する。一例として、カウンタ62は、同期パルス信号PS0がオフからオンに変化したタイミングでカウント値をインクリメントする。
カウンタ62におけるカウント値は、制御装置5と通信可能な所定のタイミングにおいて、カウンタ55におけるカウント値と定期的に同期されている。同期パルス信号PS0は、パルス信号PS1と同周期であるため、カウンタ62によるカウント値は、カウンタ55によるカウント値と同じとなる。
第1距離取得部61は、距離測定ユニット105から取得した距離データD1を、カウンタ62による現在のカウント値に対応付けた上で、測定器10のバッファ67に順次格納する。バッファ67に格納された距離データD1は、制御装置5と通信可能な際に制御装置5に定期的に送信される。
(E5.第2パルス生成部64)
次に、上述の図6を参照して、図5に示される第2パルス生成部64の機能について説明する。
第2パルス生成部64は、第2クロック63から出力されるクロック信号に基づいて、パルス信号PS2を生成する。第2クロック63は、タイマーとして機能する。第2クロック63は、制御装置5の第1クロック51とは独立して設けられており、測定器10内での時間の基準となる。
第2クロック63は、制御装置5と通信可能な所定のタイミングにおいて第1クロック51と定期的に同期される。典型的には、第2クロック63のクロック周期は、第1クロック51と同じであり、第1クロック51と同じ時間間隔で規則的な信号を出力する。
図6に示されるように、第2パルス生成部64は、第2クロック63から出力されるクロック信号を基準として、一定の時間間隔ΔTごとにパルスP2を出力する。その結果、パルス信号PS2は、パルス信号PS1および同期パルス信号PS0と同周期となる。時間間隔ΔTは、たとえば、16msecである。
典型的には、パルス信号PS2は、パルス信号PS1と完全に同期している。より具体的には、パルス信号PS1は、パルスP1(第1パルス)を含む。パルス信号PS2は、パルスP1に対応するパルスP2(第2パルス)を含む。パルスP2の各々の立ち上がりタイミングは、対応するパルスP1の立ち上がりタイミングと同じである。また、パルスP2の各々の立ち下がりタイミングは、対応するパルスP1の立ち下がりタイミングと同じである。
(E6.第2距離取得部65)
次に、図7を参照して、図5に示される第2距離取得部65の機能について説明する。
図7に示されるように、第2距離取得部65は、制御装置5と通信不能な場合に、第2パルス生成部64によって生成されたパルス信号PS2に従って、測定器10による距離データの測定タイミングを制御する。一例として、第2距離取得部65は、パルス信号PS2がオフからオンに変化したタイミングで距離データの測定指令を距離測定ユニット105に出力する。
上述のように、パルス信号PS2は、パルス信号PS1と同期している。その結果、測定器10による距離データの取得タイミングは、制御装置5による主軸位置の取得タイミングと一致または略一致する。
第2距離取得部65は、カウンタ66を有する。カウンタ66は、パルス信号PS2のパルスP2の数をカウントする機能を有する。一例として、カウンタ66は、パルス信号PS2がオフからオンに変化したタイミングでカウント値をインクリメントする。
カウンタ66におけるカウント値は、制御装置5と通信可能な所定のタイミングにおいて、カウンタ55におけるカウント値と定期的に同期されている。パルス信号PS2は、パルス信号PS1と同周期であるため、カウンタ66によるカウント値は、カウンタ55によるカウント値と同じとなる。
第2距離取得部65は、距離測定ユニット105から取得した距離データD2を、カウンタ66による現在のカウント値に対応付けた上で、測定器10のバッファ67に格納する。第2距離取得部65は、制御装置5と通信不能な間、距離データD2をバッファ67に順次バッファリングする。その後、第2距離取得部65は、制御装置5との通信が回復したことに基づいて、バッファ67にバッファリングされた距離データD2を制御装置5に送信する。典型的には、バッファ67に格納された距離データD2は、後述の通信復帰処理が完了したことに基づいて、測定器10から制御装置5に送信される。
(E7.書込部68)
次に、図9を参照して、図5に示される書込部68の機能について説明する。図9は、距離データベースDB2への距離データD1,D2の書込処理を概略的に示す概念図である。
書込部68は、測定器10が制御装置5と通信可能な間に測定された距離データD1と、測定器10が制御装置5と通信不能な間に測定された距離データD2とを距離データベースDB2に書き込む。
上述のように、カウンタ62とカウンタ66とは互いに同期しており、距離データD1に対応付けられているカウント値と、距離データD2に対応付けられているカウント値とは、同じ時間基準のカウント値である。このような同じ時間基準の距離データD1,D2が書込部68によって距離データベースDB2に書き込まれる。
(E8.マージ部69)
次に、図10を参照して、図5に示されるマージ部69の機能について説明する。図10は、位置データベースDB1と距離データベースDB2とのマージ処理を概略的に示す概念図である。
上述のように、カウンタ55とカウンタ62,66とは互いに同期しており、位置データベースDB1に規定されるカウント値と、距離データベースDB2に規定されるカウント値とは、同じ時間基準でのカウント値を示す。
マージ部69は、カウント値に基づいて、位置データベースDB1と距離データベースDB2とをマージし、マージデータDB3を生成する。より具体的には、マージ部69は、位置データベースDB1に規定される主軸位置データと、距離データベースDB2に規定される距離データとの内、同じカウント値に対応付けられているデータ同士を関連付ける。これにより、同一のタイミングに取得された主軸位置データと距離データとが対応付けられる。
なお、上述では、カウンタ55とカウンタ62とカウンタ66との各カウント値が同じ時間基準のカウント値である前提で説明を行ったが、各カウンタのカウント値は、一定値ずれていてもよい。この場合、マージ部69は、位置データベースDB1に規定されるカウント値と、距離データベースDB2に規定されるカウント値とのいずれか一方に、上記一定値を加算(または減算)し、各カウンタのカウント値を同じ時間基準に揃える。その上で、マージ部69は、位置データベースDB1と距離データベースDB2とをマージする。
<F.通信復帰処理を実現するための機能構成>
次に、図11~図15を参照して、工作機械100の機能構成についてさらに説明する。図11は、制御装置5と測定器10との通信復帰処理を実現するための機能構成の一例を示す図である。
工作機械100は、上述の制御装置5(図2参照)と、上述の測定器10(図2参照)とを備える。制御装置5は、機能構成として、通信監視部70と、駆動制御部72と、異常検知部74と、異常処理部76とを含む。以下では、これらの機能構成について順に説明する。
なお、制御装置5に備えられる各機能構成の配置は、任意である。一例として、制御装置5に備えられる各種機能は、上述のCPUユニット20(図2参照)に実装されてもよいし、上述のCNCユニット30(図2参照)に実装されてもよいし、上述の情報処理装置40(図2参照)に実装されてもよい。あるいは、制御装置5に備えられる機能構成の一部がCPUユニット20に実装され、残りの機能構成の一部がCNCユニット30に実装され、残りの機能構成が情報処理装置40に実装されてもよい。あるいは、制御装置5に備えられる機能構成の一部は、サーバーなどの外部装置に実装されてもよいし、専用のハードウェアに実装されてもよい。
(F1.通信監視部70)
まず、図12を参照して、図11に示される通信監視部70の機能について説明する。図12は、パルス信号PS1と、同期パルス信号PS0と、パルス信号PS2とを示す図である。
通信監視部70は、制御装置5と測定器10との通信状態を監視するための機能モジュールである。より具体的には、通信監視部70は、距離データの測定指令に対する応答を測定器10から受信しなかったことに基づいて、通信不能時間のカウントを開始する。図12の例では、通信監視部70は、時刻t1において通信不能時間のカウントを開始する。
その後、通信監視部70は、通信不能時間が所定時間ΔTthを超えたことに基づいて、通信復帰指令を駆動制御部72に出力する。図12の例では、通信監視部70は、時刻t1から所定時間ΔTthが経過した時刻t2において、通信復帰指令を駆動制御部72に出力している。
(F2.駆動制御部72)
次に、引き続き図12を参照して、図11に示される駆動制御部72の機能について説明する。
駆動制御部72は、通信監視部70から通信復帰指令を受けたことに基づいて、上述の駆動装置110(図4参照)を制御し、制御装置5と測定器10とが通信可能な位置(以下、「通信可能位置」ともいう。)まで主軸132を駆動する。これにより、測定器10が制御装置5に近付き、制御装置5と測定器10との通信が回復する。
当該通信可能位置は、制御装置5との通信可能範囲内にある。プログラムに規定されていてもよいし、設定ファイルなどに規定されていてもよい。
駆動制御部72は、通信可能位置への主軸132の駆動が完了したことに基づいて、駆動完了通知を異常検知部74に出力する。
(F3.異常検知部74)
次に、図13を参照して、図11に示される異常検知部74の機能について説明する。図13は、パルス信号PS1とパルス信号PS2とを示す図である。
上述のように、パルス信号PS1は、第1クロック51を基準として生成されている。一方で、パルス信号PS2は、第1クロック51とは別の第2クロック63を基準として生成されている。そのため、制御装置5と測定器10との間の通信不能状態が長時間続くと、パルス信号PS1およびパルス信号PS2が非同期の状態になる可能性がある。異常検知部74は、このような非同期の状態を異常として検知する。
より具体的な処理として、まず、異常検知部74は、パルス信号PS2を測定器10から受信する。その後、異常検知部74は、パルス信号PS1,PS2から、通信不能状態が回復した直後のパルスP1,P2を比較対象として抽出する。あるいは、異常検知部74は、通信不能状態が回復した後において、立ち上がりタイミング(または立ち下がりタイミング)が最も近いパルスP1,P2を比較対象としてパルス信号PS1,PS2から抽出する。
次に、異常検知部74は、比較対象として抽出されたパルスP1,P2を用いて、パルスP1の立ち上がりタイミングと、パルス信号PS2のパルスP2の立ち上がりタイミングとの時間差Δmを算出する。時間差Δmは、パルス信号PS1およびパルス信号PS2の間のずれ量を示す。異常検知部74は、算出した時間差Δmの絶対値が所定時間以上(たとえば、1~16msec以上)である場合に、同期異常を検知する。
好ましくは、異常検知部74は、制御装置5と測定器10との間の通信遅れの分、パルス信号PS1,PS2の一方をずらした上で上述の時間差Δmを算出する。
なお、上述では、異常検知部74がパルスP1,P2の立ち上がりタイミングに基づいて時間差Δmを算出する例について説明を行ったが、異常検知部74は、パルスP1,P2の立ち下がりタイミングに基づいて、時間差Δmを算出してもよい。
また、上述では、パルス信号PS1,PS2に基づいて、同期異常が検知される例について説明を行ったが、異常検知部74は、パルス信号PS1の時間基準となる上述の第1クロック51(図5参照)と、パルス信号PS2の時間基準となる上述の第2クロック63(図5参照)とを用いて、同期異常を検知してもよい。より具体的には、異常検知部74は、第1クロック51が示す現クロック(現時刻)と、第2クロック63が示す現クロック(現時刻)との時間差Δmを算出する。その後、異常検知部74は、算出した時間差Δmの絶対値が所定時間以上(たとえば、1~16msec以上)である場合に、同期異常を検知する。
(F4.異常処理部76)
次に、図14および図15を参照して、図11に示される異常処理部76の機能について説明する。
異常処理部76は、異常検知部74が同期異常を検知したことに基づいて、予め定められた異常対処処理を実行する。以下では、異常対処処理の具体例について説明する。
(a)異常対処処理の具体例1
異常対処処理の一例として、異常処理部76は、警告を出力する。当該警告によって、パルス信号PS1,PS2が非同期になっていることが報知される。警告の出力態様は、任意である。一例として、当該警告は、工作機械100のディスプレイ上に表示されてもよいし、音声で出力されてもよいし、レポート形式でデータとして出力されてもよい。
(b)異常対処処理の具体例2
異常対処処理の他の例として、異常処理部76は、上述の時間差Δmに基づいて、制御装置5と測定器10とが通信不能な間に測定された距離データD2を補正する。図14は、通信不能時間ΔTth(図12参照)に検知された補正前の距離データD2と、補正後の距離データD3とを示す図である。
まず、異常処理部76は、通信不能時間ΔTthに検知された距離データD2と、対応付けられているカウント値との相関関係を表わす近似式「d(c)」を算出する。当該近似式は、たとえば、多項式近似または線形近似などによって生成される。
次に、パルス信号PS2がパルス信号PS1よりも時間差Δmだけ早い場合(図14参照)、異常処理部76は、下記式(1),(2)に基づいて、補正後の近似式「d(c)’」を算出する。
d(c)=d(c’)・・・(1)
c’=c-(c-c0)・(ΔTth-Δm)/ΔTth・・・(2)
式(1)に示される「d(c)」は、カウント値「c」における補正後の距離データを示す。式(1)に示される「d(c’)」は、カウント値「c’」における補正前の距離データを示す。「c」は、カウント値を示す説明変数である。「c0」は、制御装置5と測定器10とが通信不能になった時点でのカウント値を示す。
一方で、パルス信号PS2がパルス信号PS1よりも時間差Δmだけ遅れている場合には、上記式(1)と下記式(3)とに基づいて、補正後の近似式「d(c)’」を算出する。
c’=c+(c-c0)・(ΔTth+Δm)/ΔTth・・・(3)
(c)異常対処処理の具体例3
異常対処処理の他の例として、異常処理部76は、制御装置5と測定器10との通信が回復したことに基づいて、パルス信号PS2をパルス信号PS1に同期させる。パルス信号PS2をパルス信号PS1に同期させる方法は任意である。ある局面において、異常処理部76は、パルス信号PS1に合うように、上記時間差Δm(図14参照)の分、パルス信号PS2をずらす。他の局面において、異常処理部76は、パルス信号PS2を生成するための第2クロック63のクロック(時刻)を、同期パルス信号PS0を生成するための第2クロック63のクロック(時刻)に合わせる。
(d)異常対処処理の具体例4
異常対処処理の他の例として、異常処理部76は、制御装置5と測定器10との通信が回復したことに基づいて、パルス信号PS2をパルス信号PS1に同期させる。パルス信号PS2をパルス信号PS1に同期させる方法は任意である。
ある局面において、異常処理部76は、上記時間差Δm(図14参照)だけパルス信号PS2の出力をずらすように第2パルス生成部64に指令を送る。これにより、パルス信号PS2がパルス信号PS1と同期する。
他の局面において、異常処理部76は、第2クロック63の現クロック(時刻)を、第1クロック51の現クロック(時刻)に合わせる。これにより、パルス信号PS2を生成基準となる第2クロック63が、パルス信号PS1の生成基準となる第1クロック51と同期する。その結果、パルス信号PS2がパルス信号PS1に同期する。
<G.所定時間ΔTthの調整処理>
上述のように、制御装置5は、測定器10との通信不能時間が所定時間ΔTth(図12参照)を超えたことに基づいて、通信復帰指令を駆動制御部72に出力する。このとき、制御装置5は、通信不能状態時におけるワークの加工条件を記憶する。そして、制御装置5は、記憶した加工条件と同条件で次に加工が行われた場合において、測定器10との通信不能な状態が所定時間ΔTth2以上継続したときには、測定器10と通信可能な位置まで駆動装置110に主軸132を駆動させる処理を実行する。当該所定時間ΔTth2は、上記所定時間ΔTthよりも短い。これにより、制御装置5は、早期に通信復帰処理を実行することができる。
記憶対象の加工条件は、制御装置5と測定器10との通信に影響を与える種々の加工条件を含む。一例として、当該加工条件は、主軸132の駆動命令を規定している加工プログラムを含む。図15は、記憶対象となり得る加工プログラム324を示す図である。
制御装置5は、測定器10との通信不能時間が所定時間ΔTthを超えたことに基づいて、当該所定時間ΔTthの間に実行された加工プログラムの内容(たとえば、ファイル名や実行行など)を記憶する。そして、制御装置5は、同内容の加工プログラムが次に実行された場合には、測定器10との通信不能な状態が所定時間ΔTth2以上継続したことに基づいて、測定器10との通信復帰処理を実行する。
好ましくは、制御装置5は、測定器10との通信不能時間が所定時間ΔTth(図12参照)を超え、かつ、異常検知部74によって同期異常が検知された場合に、加工条件を記憶する処理を実行してもよい。その結果、制御装置5は、異常検知部74によって同期異常が検知された場合にのみ、所定時間Tth2に基づいて、測定器10との通信復帰処理を実行するか否かを判断することになる。
<H.測定器10のハードウェア構成>
次に、図16を参照して、図2に示される測定器10のハードウェア構成について説明する。図16は、測定器10のハードウェア構成の一例を示す図である。
測定器10は、ROM(Read Only Memory)102と、RAM(Random Access Memory)103と、通信インターフェイス104と、距離測定ユニット105とを含む。これらのコンポーネントは、内部バスB1に接続される。
制御回路101は、たとえば、少なくとも1つの集積回路によって構成される。集積回路は、たとえば、少なくとも1つのCPU、少なくとも1つのGPU(Graphics Processing Unit)、少なくとも1つのASIC(Application Specific Integrated Circuit)、少なくとも1つのFPGA(Field Programmable Gate Array)、またはそれらの組み合わせなどによって構成され得る。
制御回路101は、制御プログラム122などの各種プログラムを実行することで測定器10の動作を制御する。より具体的には、制御回路101は、制御プログラム122の実行命令を受け付けたことに基づいて、ROM102からRAM103に制御プログラム122を読み出す。RAM103は、ワーキングメモリとして機能し、制御プログラム122の実行に必要な各種データを一時的に格納する。また、RAM103は、上述のバッファ67(図5参照)を含む。
通信インターフェイス104は、WLAN(Wireless LAN)、またはBluetooth(登録商標)などを用いた無線通信を実現するための通信ユニットである。一例として、測定器10は、通信インターフェイス204を介して、情報処理装置40(図2参照)などの外部機器との通信を実現する。測定器10による測定結果は、たとえば、通信インターフェイス104を介して情報処理装置40に送信される。
距離測定ユニット105は、ワークの形状の測定機構である。一例として、距離測定ユニット105は、上述のレーザ発振器161(図3参照)や上述のCCDカメラ162(図3参照)などで構成される。
<I.CPUユニット20のハードウェア構成>
次に、図17を参照して、図2に示されるCPUユニット20のハードウェア構成について説明する。図17は、CPUユニット20のハードウェア構成の一例を示す図である。
CPUユニット20は、制御回路201と、ROM202と、RAM203と、通信インターフェイス204,205と、補助記憶装置220とを含む。これらのコンポーネントは、内部バスB2に接続される。
制御回路201は、たとえば、少なくとも1つの集積回路によって構成される。集積回路は、たとえば、少なくとも1つのCPU、少なくとも1つのGPU、少なくとも1つのASIC、少なくとも1つのFPGA、またはそれらの組み合わせなどによって構成され得る。
制御回路201は、制御プログラム222などの各種プログラムを実行することでCPUユニット20の動作を制御する。制御プログラム222は、工作機械100内の各種装置を制御するための命令を規定している。制御回路201は、制御プログラム222の実行命令を受け付けたことに基づいて、補助記憶装置220またはROM202からRAM203に制御プログラム222を読み出す。RAM203は、ワーキングメモリとして機能し、制御プログラム222の実行に必要な各種データを一時的に格納する。
通信インターフェイス204は、LAN(Local Area Network)ケーブル、WLAN、またはBluetoothなどを用いた通信を実現するための通信ユニットである。一例として、CPUユニット20は、通信インターフェイス204を介して、ATCドライバ111N(図2参照)などの外部機器との通信を実現する。
通信インターフェイス205は、フィールドバスに接続される各種ユニットとの通信を実現するための通信ユニットである。当該フィールドバスに接続されるユニットの一例として、CNCユニット30やI/Oユニット(図示しない)などが挙げられる。
補助記憶装置220は、たとえば、ハードディスクやフラッシュメモリなどの記憶媒体である。補助記憶装置220は、制御プログラム222などを格納する。制御プログラム222の格納場所は、補助記憶装置220に限定されず、制御回路201の記憶領域(たとえば、キャッシュメモリ)、ROM202、RAM203、外部機器(たとえば、サーバー)などに格納されていてもよい。
なお、制御プログラム222は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、本実施の形態に従う各種の処理は、任意のプログラムと協働して実現される。このような一部のモジュールを含まないプログラムであっても、本実施の形態に従う制御プログラム222の趣旨を逸脱するものではない。さらに、制御プログラム222によって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、少なくとも1つのサーバーが制御プログラム222の処理の一部を実行する所謂クラウドサービスのような形態でCPUユニット20が構成されてもよい。
<J.CNCユニット30のハードウェア構成>
次に、図18を参照して、図2に示されるCNCユニット30のハードウェア構成について説明する。図18は、CNCユニット30のハードウェア構成の一例を示す図である。
CNCユニット30は、制御回路301と、ROM302と、RAM303と、通信インターフェイス304,305と、フィールドバスコントローラ306と、補助記憶装置320とを含む。これらのコンポーネントは、内部バスB3に接続される。
制御回路301は、たとえば、少なくとも1つの集積回路によって構成される。集積回路は、たとえば、少なくとも1つのCPU、少なくとも1つのGPU、少なくとも1つのASIC、少なくとも1つのFPGA、またはそれらの組み合わせなどによって構成され得る。
制御回路301は、制御プログラム322や加工プログラム324などの各種プログラムを実行することでCNCユニット30の動作を制御する。制御回路301は、制御プログラム322の実行命令を受け付けたことに基づいて、ROM302からRAM303に制御プログラム322を読み出す。RAM303は、ワーキングメモリとして機能し、制御プログラム322の実行に必要な各種データを一時的に格納する。
通信インターフェイス304,305には、LAN、WLAN、またはBluetoothなどを用いた通信を実現するための通信ユニットである。CNCユニット30は、通信インターフェイス304を介して外部機器(たとえば、CPUユニット20)とデータをやり取りする。また、CNCユニット30は、通信インターフェイス305を介して外部機器(たとえば、情報処理装置40)とデータをやり取りする。
フィールドバスコントローラ306は、フィールドバスに接続される各種ユニットとの通信を実現するための通信ユニットである。当該フィールドバスに接続されるユニットの一例として、上述の回転駆動部110A(図2参照)や上述の位置駆動部110B(図2参照)などが挙げられる。
補助記憶装置320は、たとえば、ハードディスクやフラッシュメモリなどの記憶媒体である。補助記憶装置320は、制御プログラム322および加工プログラム324などを格納する。これらの格納場所は、補助記憶装置320に限定されず、制御回路301の記憶領域(たとえば、キャッシュメモリ)、ROM302、RAM303、外部機器(たとえば、サーバー)などに格納されていてもよい。
なお、制御プログラム322は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、本実施の形態に従う各種の処理は、任意のプログラムと協働して実現される。このような一部のモジュールを含まないプログラムであっても、本実施の形態に従う制御プログラム322の趣旨を逸脱するものではない。さらに、制御プログラム322によって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、少なくとも1つのサーバーが制御プログラム322の処理の一部を実行する所謂クラウドサービスのような形態でCNCユニット30が構成されてもよい。
<K.情報処理装置40のハードウェア構成>
次に、図19を参照して、図2に示される情報処理装置40のハードウェア構成について説明する。図19は、情報処理装置40のハードウェア構成の一例を示す図である。
情報処理装置40は、制御回路401と、ROM402と、RAM403と、通信インターフェイス404,405と、補助記憶装置420とを含む。これらのコンポーネントは、内部バスB4に接続される。
制御回路401は、たとえば、少なくとも1つの集積回路によって構成される。集積回路は、たとえば、少なくとも1つのCPU、少なくとも1つのGPU、少なくとも1つのASIC、少なくとも1つのFPGA、またはそれらの組み合わせなどによって構成され得る。
制御回路401は、制御プログラム422などの各種プログラムを実行することで情報処理装置40の動作を制御する。制御回路401は、各種プログラムの実行命令を受け付けたことに基づいて、補助記憶装置420またはROM402からRAM403に実行対象のプログラムを読み出す。RAM403は、ワーキングメモリとして機能し、プログラムの実行に必要な各種データを一時的に格納する。
通信インターフェイス404,405には、LAN、WLAN、またはBluetoothなどを用いた通信を実現するための通信ユニットである。情報処理装置40は、通信インターフェイス404を介して外部機器(たとえば、CNCユニット30)とデータをやり取りする。また、情報処理装置40は、通信インターフェイス405を介して外部機器(たとえば、測定器10)とデータをやり取りする。
補助記憶装置420は、たとえば、ハードディスクやフラッシュメモリなどの記憶媒体である。補助記憶装置420は、上述の位置データベースDB1と、上述の距離データベースDB2と、上述のマージデータDB3と、制御プログラム422となどを格納する。これらの格納場所は、補助記憶装置420に限定されず、制御回路401の記憶領域(たとえば、キャッシュメモリなど)、ROM402、RAM403、外部機器(たとえば、サーバー)などに格納されていてもよい。
なお、制御プログラム422は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、任意のプログラムと協働して本実施の形態に従う処理が実現される。このような一部のモジュールを含まないプログラムであっても、本実施の形態に従う工作機械100の趣旨を逸脱するものではない。さらに、本実施の形態に従う制御プログラム422によって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、工作機械100とサーバーとが協働して、本実施の形態に従う処理を実現するようにしてもよい。さらに、少なくとも1つのサーバーが本実施の形態に従う処理を実現する、所謂クラウドサービスの形態で情報処理装置40が構成されてもよい。
<L.主軸位置の取得フロー>
次に、図20を参照して、制御装置5による主軸位置の取得フローについて説明する。図20は、主軸位置の取得処理の流れを示すフローチャートである。
図20に示される処理は、たとえば、工作機械100の制御装置5(典型的には、CNCユニット30)が上述の制御プログラム322(図18参照)を実行することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
ステップS110において、制御装置5は、上述の第1パルス生成部52(図5参照)として機能し、第1クロック51のクロック信号に従って、パルス信号PS1を出力する。これにより、制御装置5は、所定時間ΔTごとにパルスP1を出力する。
ステップS112において、制御装置5は、上述の同期パルス生成部57(図5参照)として機能し、第1クロック51のクロック信号に従って、同期パルス信号PS0を出力する。これにより、制御装置5は、所定時間ΔTごとにパルスP0を出力する。典型的には、制御装置5は、ステップS110で出力されるパルスP1よりも所定時間Δnだけ早くパルスP0を出力する。
ステップS114において、制御装置5は、ステップS112で出力される同期パルス信号PS0を測定器10に送信する。
ステップS120において、制御装置5は、ステップS110で出力されるパルス信号PS1が主軸位置の取得タイミングの到来を示すか否かを判断する。一例として、制御装置5は、パルス信号PS1がオフからオンに変化したタイミングにおいて主軸位置の取得タイミングが到来したと判断する。制御装置5は、パルス信号PS1が主軸位置の取得タイミングの到来を示すと判断した場合(ステップS120においてYES)、制御をステップS122に切り替える。そうでない場合には(ステップS120においてNO)、制御装置5は、制御をステップS110に戻す。
ステップS122において、制御装置5は、上述の位置取得部54(図5参照)として機能し、主軸位置の取得指令を上述の検知部113(図4参照)に出力する。これにより、制御装置5は、検知部113から主軸位置を取得する。取得された主軸位置は、上述の位置データベースDB1(図8参照)に格納される。
<M.距離データの測定フロー>
次に、図21を参照して、測定器10による距離データの測定フローについて説明する。図21は、距離データの測定処理の流れを示すフローチャートである。
図21に示される処理は、たとえば、測定器10の制御回路101(図16参照)が上述の制御プログラム122(図16参照)を実行することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
ステップS130において、制御回路101は、上述の第2パルス生成部64(図5参照)として機能し、第2クロック63のクロック信号に従って、パルス信号PS2を出力する。これにより、制御装置5は、所定時間ΔTごとにパルスP2を出力する。
ステップS132において、制御回路101は、制御装置5との通信が可能であるか否かを判断する。制御回路101は、制御装置5との通信が可能であると判断した場合(ステップS132においてYES)、制御をステップS140に切り替える。そうでない場合には(ステップS132においてNO)、制御回路101は、制御をステップS150に切り替える。
ステップS140において、制御回路101は、制御装置5から受信した同期パルス信号PS0が測定器10による測定タイミングの到来を示すか否かを判断する。一例として、制御回路101は、同期パルス信号PS0がオフからオンに変化したタイミングにおいて測定タイミングが到来したと判断する。制御回路101は、同期パルス信号PS0が測定タイミングの到来を示すと判断した場合(ステップS140においてYES)、制御をステップS142に切り替える。そうでない場合には(ステップS140においてNO)、制御装置5は、制御をステップS130に戻す。
ステップS142において、制御回路101は、上述の第1距離取得部61(図5参照)として機能し、距離データの測定指令を距離測定ユニット105に出力する。これにより、測定器10からワークまでの距離を示す距離データD1が取得される。取得された距離データD1は、測定器10のバッファ67に格納される。
ステップS150において、制御回路101は、ステップS130で出力されるパルス信号PS2が測定器10による測定タイミングの到来を示すか否かを判断する。一例として、制御回路101は、パルス信号PS2がオフからオンに変化したタイミングにおいて測定タイミングが到来したと判断する。制御回路101は、パルス信号PS2が測定タイミングの到来を示すと判断した場合(ステップS150においてYES)、制御をステップS152に切り替える。そうでない場合には(ステップS150においてNO)、制御装置5は、制御をステップS130に戻す。
ステップS152において、制御回路101は、上述の第2距離取得部65(図5参照)として機能し、距離データの測定指令を距離測定ユニット105に出力する。これにより、測定器10からワークまでの距離を示す距離データD2が取得される。取得された距離データD2は、測定器10のバッファ67に格納される。
ステップS160において、制御回路101は、距離データの送信タイミングが到来したか否かを判断する。当該送信タイミングは、制御装置5と通信可能な一タイミングにおいて定期的に到来する。あるいは、当該送信タイミングは、制御装置5との通信が回復したタイミングにおいて到来する。制御回路101は、距離データの送信タイミングが到来したと判断した場合(ステップS160においてYES)、制御をステップS162に切り替える。そうでない場合には(ステップS160においてNO)、制御回路101は、制御をステップS130に戻す。
ステップS162において、制御回路101は、測定器10のバッファ67に格納されている距離データD1,D2を制御装置5に送信する。当該送信が正常に完了したことに基づいて、制御回路101は、バッファ67に格納されている距離データD1,D2を削除する。
<N.通信監視フロー>
次に、図22を参照して、制御装置5と測定器10との通信状態の監視フローについて説明する。図22は、制御装置5と測定器10との通信状態の監視処理の流れを示すフローチャートである。
図22に示される処理は、たとえば、工作機械100の制御装置5(典型的には、情報処理装置40)が上述の制御プログラム422(図19参照)を実行することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
ステップS170において、制御装置5は、上述の通信監視部70(図11参照)として機能し、測定器10との通信が不能であるか否かを判断する。制御装置5は、測定器10との通信が不能であると判断した場合(ステップS170においてYES)、制御をステップS172に切り替える。そうでない場合には(ステップS170においてNO)、制御装置5は、制御をステップS174に切り替える。
ステップS172において、制御装置5は、上述の通信監視部70として機能し、通信不能時間をカウントする。
ステップS174において、制御装置5は、上述の通信監視部70として機能し、通信不能時間のカウントをゼロに初期化する。
ステップS180において、制御装置5は、上述の通信監視部70として機能し、カウントしている通信不能時間が所定時間ΔTth(図11参照)を超えたか否かを判断する。制御装置5は、通信不能時間が所定時間ΔTthを超えたと判断した場合(ステップS180においてYES)、制御をステップS182に切り替える。そうでない場合には(ステップS180においてNO)、制御装置5は、制御をステップS170に戻す。
ステップS182において、制御装置5は、上述の駆動制御部72(図11参照)として機能し、上述の駆動装置110を制御し、測定器10と通信可能な位置まで主軸132を駆動する。
ステップS184において、制御装置5は、上述の通信監視部70として機能し、通信不能時間のカウントをゼロに初期化する。
ステップS190において、制御装置5は、上述の異常検知部74(図11参照)として機能し、同期異常が発生しているか否かを判断する。異常検知部74による同期異常の検知方法については上述の通りであるので、その説明については繰り返さない。制御装置5は、同期異常が発生していると判断した場合(ステップS190においてYES)、制御をステップS192に切り替える。そうでない場合には(ステップS190においてNO)、制御装置5は、制御をステップS170に戻す。
ステップS192において、制御装置5は、上述の異常処理部76(図11参照)として機能し、所定の異常対処処理を実行する。異常対処処理については上述の通りであるので、その説明については繰り返さない。
<O.変形例>
次に、図23を参照して、変形例に従う工作機械100について説明する。図23は、制御装置5と測定器10との同期処理を実現するための機能構成の他の例を示す図である。
上述の説明では、制御装置5が同期パルス信号PS0を生成し、測定器10は、当該同期パルス信号PS0に従って距離データの測定タイミングを制御していた。これに対して、本変形例では、同期パルス信号PS0は、制御装置5ではなく測定器10によって生成される。
より具体的には、工作機械100は、制御装置5と、測定器10とを備える。制御装置5は、機能構成として、第1位置取得部54Aと、第2位置取得部54Bと、第2パルス生成部64と、書込部68Aと、マージ部69とを含む。測定器10は、機能構成として、第1パルス生成部52と、同期パルス生成部57と、距離取得部65Aとを含む。
上述の図5の例では、第1クロック51と、第1パルス生成部52と、同期パルス生成部57とが制御装置5に実装されていたのに対して、本変形例では、これらの構成が測定器10に実装される。また、上述の図5の例では、第2クロック63と、第2パルス生成部64とが測定器10に実装されていたのに対して、本変形例では、これらの構成が制御装置5に実装される。
また、本変形例では、制御装置5は、位置取得部54の代わりに第1位置取得部54Aと第2位置取得部54Bとを含み、書込部68の代わりに書込部68Aを含む。また、本変形例では、測定器10は、第1距離取得部61と第2距離取得部65との代わりに、距離取得部65Aを含む。
第1位置取得部54A、第2位置取得部54B、距離取得部65A、および書込部68A以外の機能構成については上述の通りであるので、以下では、これら以外の機能構成の説明については繰り返さない。
(O1.距離取得部65A)
まず、図23に示される距離取得部65Aの機能について説明する。
距離取得部65Aは、第1パルス生成部52によって生成されたパルス信号PS1に従って、測定器10による距離データの測定タイミングを制御する。一例として、距離取得部65Aは、パルス信号PS1がオフからオンに変化したタイミングで距離データの測定指令を距離測定ユニット105に出力する。
距離取得部65Aは、カウンタ66Aを有する。カウンタ66Aは、パルス信号PS1のパルスP1の数をカウントする機能を有する。一例として、カウンタ66Aは、パルス信号PS1がオフからオンに変化したタイミングでカウント値をインクリメントする。
距離取得部65Aは、距離測定ユニット105から取得した距離データを、カウンタ66Aによる現在のカウント値に対応付けた上で、バッファ67に順次格納する。バッファ67に格納された距離データD1は、制御装置5と通信可能な際に制御装置5に定期的に送信される。
(O2.第1位置取得部54A)
次に、図23に示される第1位置取得部54Aの機能について説明する。
第1位置取得部54Aは、測定器10と通信可能な場合には、測定器10から受信した同期パルス信号PS0に従って、主軸位置の取得タイミングを制御する。一例として、第1位置取得部54Aは、同期パルス信号PS0がオフからオンに変化したタイミングで主軸位置データの取得指令を上述の検知部113に出力する。
第1位置取得部54Aは、カウンタ55Aを有する。カウンタ55Aは、同期パルス信号PS0のパルスP0の数をカウントする機能を有する。一例として、カウンタ55Aは、同期パルス信号PS0がオフからオンに変化したタイミングでカウント値をインクリメントする。
カウンタ55Aにおけるカウント値は、測定器10と通信可能な所定のタイミングにおいて、カウンタ66Aにおけるカウント値と定期的に同期されている。同期パルス信号PS0は、パルス信号PS1と同周期であるため、カウンタ55Aによるカウント値は、カウンタ66Aによるカウント値と同じとなる。
第1位置取得部54Aは、取得した主軸位置データD4を、カウンタ55Aによる現在のカウント値に対応付けた上で、書込部68Aに順次出力する。
(O3.第2位置取得部54B)
次に、図23に示される第2位置取得部54Bの機能について説明する。
図7に示されるように、第2位置取得部54Bは、測定器10と通信不能な場合に、第2パルス生成部64によって生成されたパルス信号PS2に従って、主軸位置の取得タイミングを制御する。一例として、第2位置取得部54Bは、パルス信号PS2がオフからオンに変化したタイミングで主軸位置の取得指令を上述の検知部113に出力する。
パルス信号PS2は、パルス信号PS1と同期している。その結果、制御装置5による主軸位置の取得タイミングは、測定器10による距離データの取得タイミングと一致または略一致する。
第2位置取得部54Bは、カウンタ55Bを有する。カウンタ55Bは、パルス信号PS2のパルスP2の数をカウントする機能を有する。一例として、カウンタ55Bは、パルス信号PS2がオフからオンに変化したタイミングでカウント値をインクリメントする。
カウンタ55Bにおけるカウント値は、制御装置5と通信可能な所定のタイミングにおいて、カウンタ66Aにおけるカウント値と定期的に同期される。パルス信号PS2は、パルス信号PS1と同周期であるため、カウンタ55Bによるカウント値は、カウンタ66Aによるカウント値と同じとなる。
第2位置取得部54Bは、取得した主軸位置データD5を、カウンタ55Bによる現在のカウント値に対応付けた上で、書込部68Aに順次出力する。
(O4.書込部68A)
次に、図23に示される書込部68Aの機能について説明する。
書込部68Aは、測定器10が制御装置5と通信可能な間に取得した主軸位置データD4と、測定器10が制御装置5と通信不能な間に取得した主軸位置データD5とを位置データベースDB1に書き込む。
カウンタ55Aとカウンタ55Bとは互いに同期しており、主軸位置データD4に対応付けられているカウント値と、主軸位置データD5に対応付けられているカウント値とは、同じ時間基準でのカウント値を示す。そのため、主軸位置データD4,D5は、カウント値の順に並べられると時系列の順に並ぶことになる。
<P.まとめ>
以上のようにして、工作機械100は、制御装置5と測定器10との通信不能状態が所定時間継続した場合に、制御装置5と通信可能な位置まで主軸132を駆動する。これにより、制御装置5および測定器10の通信が回復し、工作機械100は、制御装置5および測定器10が非同期の状態になっていないかを確認することができる。
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。