(57)【要約】【課題】検出部と被切削物との接触時期の決定精度のばらつきを低減し、被切削物と検出部の接触位置を精度良く検出できる工作機械を提供すること。【解決手段】工作機械はＦＰＧＡ、ＣＰＵを備え、ＦＰＧＡは、接触センサと被切削物が接触したか否かを第一周期で検出する。ＦＰＧＡは接触センサが接触を検出時、接触情報「１」を第一周期で高速シフトレジスタに記憶する。ＦＰＧＡはシフトレジスタが所定期間連続して「１」を記憶時、第一周期よりも遅い第二周期で低速シフトレジスタに「１」を記憶する。ＣＰＵは、高速シフトレジスタ及び低速シフトレジスタに記憶した接触情報を第三周期で読出す。ＣＰＵは、読出した接触情報と、第一周期、第二周期とに基づき、接触センサと被切削物の接触時期を決定する。【選択図】図４
2019171563.tif 000002
【特許請求の範囲】
【請求項１】
主軸に設けた検出部を走査し、該検出部が被切削物に接触した位置を決定する工作機械において、
前記検出部が前記被切削物と接触したか否かを所定の第一周期で検出し、前記検出部が前記被切削物に接触したことを検出した時、該検出した回数を示す第一結果情報を第一記憶部に記憶する第一記憶制御部と、
前記第一記憶制御部が前記第一記憶部に第一期間連続して前記第一結果情報を記憶時、前記第一周期よりも遅い第二周期で該検出した回数を示す第二結果情報を第二記憶部に記憶する第二記憶制御部と、
前記第一記憶部に記憶した前記第一結果情報と前記第二記憶部に記憶した前記第二結果情報とを、前記第一周期及び前記第二周期よりも長い第三周期で読出す読出し部と、
前記読出し部により読出した前記第一結果情報及び前記第二結果情報と、前記第一周期、前記第二周期とに基づき決定する接触時間分遡った時期を、前記検出部と前記被切削物との接触時期として決定する決定部と
を備えることを特徴とする工作機械。
【請求項２】
前記第一記憶部は、前記第一周期で前記第一期間内に記憶する前記第一結果情報の容量と少なくとも同じ容量を有し、
前記工作機械は、
前記第一記憶制御部が前記第一記憶部に前記第一期間連続して前記第一結果情報を記憶時、前記第一記憶部を初期化する初期化部を
更に備えることを特徴とする請求項１に記載の工作機械。
【請求項３】
前記決定部は、
前記第一結果情報及び前記第一周期の乗算値と、前記第二結果情報及び前記第二周期の乗算値との加算値に基づき前記接触時期を決定すること
を特徴とする請求項１又は２に記載の工作機械。
【請求項４】
前記第一記憶部と前記第二記憶部とは夫々シフトレジスタであることを特徴とする請求項１〜３の何れか一つに記載の工作機械。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は工作機械に関する。
【背景技術】
【０００２】
工作機械はワークの表面形状データを取得する機能を有する。特許文献１に記載の工作機械はＩ／Ｏユニット、サーボアンプ、制御部等を備える。Ｉ／Ｏユニットは４ビットシフトレジスタを備える。工作機械の主軸に設けた接触センサは、ワークの表面に対する接触の有無を示す検出信号を出力する。４ビットシフトレジスタは接触センサが出力した検出信号を時系列に記憶する。サーボアンプは接触センサのＸ、Ｙ、Ｚ軸座標値を検出する。制御部はサーボアンプが検出したＸ、Ｙ、Ｚ軸座標値を時系列にＲＡＭに記憶する。制御部はＩ／Ｏユニットと所定の通信周期で４ビットシフトレジスタから最新の検出信号を読出す。制御部は読出した検出信号に基づき、接触センサがワークの表面に接触した時刻に最も近い通信周期を決定する。制御部は決定した通信周期に基づき接触センサとワークが接触した時刻を演算し、該時刻のＸ、Ｙ、Ｚ軸座標値を、接触センサとワークが接触した位置として取得する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１５５３３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
制御部が読出す通信周期と４ビットシフトレジスタが時系列に記憶する時の周期は同期していない。故に工作機械は決定した通信周期の時刻におけるＸ、Ｙ、Ｚ軸座標値に基づく表面形状データの精度が低下する。
【０００５】
本発明の目的は、検出部と被切削物との接触時期の決定精度のばらつきを低減し、被切削物と検出部の接触位置を精度良く検出できる工作機械を提供する。
【課題を解決するための手段】
【０００６】
請求項１の工作機械は、主軸に設けた検出部を走査し、該検出部が被切削物に接触した位置を決定する工作機械において、前記検出部が前記被切削物と接触したか否かを所定の第一周期で検出し、前記検出部が前記被切削物に接触したことを検出した時、該検出した回数を示す第一結果情報を第一記憶部に記憶する第一記憶制御部と、前記第一記憶制御部が前記第一記憶部に第一期間連続して前記第一結果情報を記憶時、前記第一周期よりも遅い第二周期で該検出した回数を示す第二結果情報を第二記憶部に記憶する第二記憶制御部と、前記第一記憶部に記憶した前記第一結果情報と前記第二記憶部に記憶した前記第二結果情報とを、前記第一周期及び前記第二周期よりも長い第三周期で読出す読出し部と、前記読出し部により読出した前記第一結果情報及び前記第二結果情報と、前記第一周期、前記第二周期とに基づき決定する接触時間分遡った時期を、前記検出部と前記被切削物との接触時期として決定する決定部とを備えることを特徴とする。
【０００７】
工作機械は第一周期で記憶する第一記憶部の第一結果情報、第一記憶部の第一結果情報に基づき、第二記憶部に第二周期で記憶した第二結果情報、第一周期、及び第二周期により決定する接触時間分遡った時期を、接触時期として決定する。故に工作機械は第一周期に依存する範囲内の誤差で接触時期を決定でき、接触時期の決定精度のばらつきを低減できる。
【０００８】
請求項２の工作機械の前記第一記憶部は、前記第一周期で前記第一期間内に記憶する前記第一結果情報の容量と少なくとも同じ容量を有し、前記工作機械は、前記第一記憶制御部が前記第一記憶部に前記第一期間連続して前記第一結果情報を記憶時、前記第一記憶部を初期化する初期化部を更に備えてもよい。工作機械の第一記憶部は、第一周期で第一期間内に記憶する第一結果情報の容量と少なくとも同じ容量を有すればよい。故に工作機械は必要な記憶容量を小さくできる。工作機械は第一記憶部を初期化し、初期化した第一記憶部を再利用できる。
【０００９】
請求項３の工作機械の前記決定部は、前記第一結果情報及び前記第一周期の乗算値と、前記第二結果情報及び前記第二周期の乗算値との加算値に基づき前記接触時期を決定してもよい。工作機械は第一結果情報及び第一周期の乗算値と、第二結果情報及び第二周期の乗算値との加算値に基づき接触時期を決定するので、簡単に精度よく接触時期を決定できる。
【００１０】
請求項４の工作機械の前記第一記憶部と前記第二記憶部とは夫々シフトレジスタであってもよい。工作機械はシフトレジスタを用いるので、簡易な構成で接触時期の決定精度のばらつきを低減できる。
【図面の簡単な説明】
【００１１】
【図１】工作機械１の内部構成を示す斜視図。
【図２】工作機械１の電気的構成を表す図。
【図３】ＦＰＧＡ６８の内部構成を表す図。
【図４】接触センサ５８がオンした時のタイミングチャートを表す図。
【図５】接触センサ５８がオフした時のタイミングチャートを表す図。
【図６】第一主処理の流れ図。
【図７】第二主処理の流れ図。
【発明を実施するための形態】
【００１２】
＜工作機械１の概要＞
本発明の一実施形態である工作機械１について、図面を参照し説明する。以下説明では図中に矢印で示す左右、前後、上下を使用する。工作機械１の左右方向、前後方向、上下方向は、夫々、工作機械１のＸ軸方向、Ｙ軸方向、Ｚ軸方向である。
【００１３】
図１に示す如く、工作機械１は台２、機械本体３、工具交換装置２０、カバー（図示略）等を備える。機械本体３は鋳鉄製の台２の上部に位置して被切削物を切削する。工具交換装置２０は機械本体３の上部に位置して主軸９に装着する工具と後述の接触センサ５８の交換を行う。カバーの前面は入力部２４、表示器２５を備える（図２参照）。作業者は表示器２５の表示情報を確認し、入力部２４を用いて決定プログラム、加工プログラム、工具の種類、工具情報、各種パラメータ等を入力する。決定プログラムは加工プログラム実行後の被切削物の表面形状データを決定するプログラムである。加工プログラムは被切削物の加工内容を複数のブロックで定義したプログラムである。該ブロックは予め定めた指令（Ｇコード、Ｍコード）で構成する。
【００１４】
機械本体３は立柱５、主軸ヘッド（図示略）、主軸９、作業台１０、制御箱６等を備える。立柱５は台２の上部後方に固定し、前面側に上下に延びる一対のＺ軸送り案内（図示外）を備える。一対のＺ軸送り案内は主軸ヘッドを昇降可能に支持する。主軸ヘッドはＺ軸モータ５３（図２参照）の駆動で、Ｚ軸方向に移動する。主軸ヘッドの上部は主軸９を回転する主軸モータ５４を固定する。主軸９は主軸ヘッドの下部に設ける。工具は主軸９に装着し且つ主軸モータ５４の駆動で回転する。作業台１０は台２の上部中央に設ける。作業台１０はＸ軸モータ５１（図２参照）、Ｙ軸モータ５２（図２参照）、ガイド機構（図示略）で、Ｘ軸方向、Ｙ軸方向に移動する。制御箱６は立柱５の背面側に設け、数値制御装置３０（図２参照）等を格納する。
【００１５】
支持台１２は直方体状且つ作業台１０の下部に設ける（図１参照）。支持台１２はＸ軸方向に延びる一対のＸ軸送り案内（図示略）を上面に備える。一対のＸ軸送り案内は作業台１０をＸ軸方向に移動可能に支持する。支持台１２は上部にＸ軸モータ５１（図２参照）を備える。Ｘ軸モータ５１は作業台１０をＸ軸送り案内に沿ってＸ軸方向に移動するように駆動する。台２はＹ軸方向に延びる一対のＹ軸送り案内（図示略）を上部に備える。一対のＹ軸送り案内は台２の前後方向に沿って延びる。一対のＹ軸送り案内は支持台１２をＹ軸方向に移動可能に支持する。台２は上部にＹ軸モータ５２（図２参照）を備え、Ｙ軸モータ５２は作業台１０をＹ軸送り案内に沿ってＹ軸方向に移動するように駆動する。
【００１６】
図２を参照し、工作機械１の電気的構成を説明する。図２に示す如く、工作機械１は数値制御装置３０、入力部２４、表示器２５、駆動回路２０１〜２０５、Ｘ軸モータ５１、Ｙ軸モータ５２、Ｚ軸モータ５３、主軸モータ５４、マガジンモータ５５、接触センサ５８、ＦＰＧＡ６８等を備える。数値制御装置３０はＣＰＵ３１、ＲＯＭ３２、ＲＡＭ３３、インタフェース３４、３５、３６を備える。ＣＰＵ３１は工作機械１の制御を司る。ＲＯＭ３２は後述の第二主処理を行う決定プログラムを記憶する。ＲＡＭ３３は被切削物の加工を行う加工プログラム、種々のデータ等を一時的に記憶する。入力部２４、表示器２５はインタフェース３４を介してＣＰＵ３１に接続する。ＣＰＵ３１はインタフェース３６を介してＰＨＹ４９と接続する。ＦＰＧＡ６８はＰＨＹ４９と接続し、接触センサ５８と接続する。ＣＰＵ３１はインタフェース３５を介して駆動回路２０１〜２０５に接続する。駆動回路２０１〜２０５は制御対象であるＸ軸モータ５１、Ｙ軸モータ５２、Ｚ軸モータ５３、主軸モータ５４、マガジンモータ５５に接続する。Ｘ軸モータ５１、Ｙ軸モータ５２、Ｚ軸モータ５３、主軸モータ５４、マガジンモータ５５はエンコーダ５１ａ〜５５ａを備える。
【００１７】
エンコーダ５１ａ〜５５ａはＸ軸モータ５１、Ｙ軸モータ５２、Ｚ軸モータ５３、主軸モータ５４、マガジンモータ５５の駆動軸の回転位置等を検出し、検出結果を駆動回路２０１〜２０５に出力する。駆動回路２０１〜２０５はエンコーダ５１ａ〜５５ａの位置情報等の検出結果を、サーボアンプクロック（図４参照）の１２５μｓｅｃ毎の立ち上がりで取得する。ＣＰＵ３１は駆動回路２０１〜２０５が取得した検出結果を、０．５ｍｓｅｃ毎のサーボアンプ通信周期（図４参照）でインタフェース３５を介して駆動回路２０１〜２０５から取得する（図４参照）。
【００１８】
ＣＰＵ３１は駆動回路２０１〜２０３によるエンコーダ５１ａ〜５３ａの回転位置等の検出結果に基づきＸ軸モータ５１、Ｙ軸モータ５２、Ｚ軸モータ５３のＸ、Ｙ、Ｚ軸の座標値を検出可能である。ＣＰＵ３１は検出したＸ、Ｙ、Ｚ軸の座標値を作業台１０のＸ軸、Ｙ軸座標値、主軸９（接触センサ５８）のＺ軸座標値を接触センサ５８の位置としてＲＡＭ３３に記憶する。
【００１９】
接触センサ５８は決定プログラムの実行時に工具交換装置２０で主軸９に取付け、主軸９の昇降と共にＺ軸方向に移動する。Ｚ軸モータ５３の駆動で主軸９が下降すると、被切削物に接触センサ５８が接触する。接触センサ５８は被切削物と接触したか否かを表す信号として、後述の接触信号Ｓ（図３参照）をＦＰＧＡ６８に出力する。
【００２０】
ＦＰＧＡ６８は後述の第一主処理（図６参照）を実行する。第一主処理でＦＰＧＡ６８は接触センサ５８の接触信号Ｓを検出し、直ぐに接触情報として高速シフトレジスタ４１と低速シフトレジスタ４８に記憶する。ＦＰＧＡ６８はインタフェース３６を介して数値制御装置３０から所定周期（一例として、１ｍｓｅｃ毎）のポーリング信号の受付時、記憶した接触情報を数値制御装置３０へ送信する。ＦＰＧＡ６８の詳細は後述する。ＰＨＹ４９は接触情報等と他の情報の衝突発生時、数値制御装置３０に衝突発生を伝える。該時、数値制御装置３０は通信不良の発生を認識する。
【００２１】
ＣＰＵ３１は決定プログラムに基づき後述の第二主処理（図７参照）を実行する。ＣＰＵ３１は被切削物を固定した作業台１０をＸ軸、Ｙ軸方向に所定距離移動し且つ主軸９をＺ軸方向に移動し、接触センサ５８は被切削物に接触する。該時、ＣＰＵ３１は受信した接触情報に基づき接触センサ５８が被切削物に接触した時期を決定する。ＣＰＵ３１は決定した接触時期における接触センサ５８のＸ軸、Ｙ軸、Ｚ軸の座標値（作業台１０のＸ軸、Ｙ軸座標値、主軸９のＺ軸座標値）を被切削物の表面形状データとして取得してＲＡＭ３３に記憶する。
【００２２】
図３〜図５を参照し、接触センサ５８が被切削物に接触した時期の決定について詳細に説明する。接触センサ５８は被切削物との接触情報として接触信号Ｓ（図４参照）をＦＰＧＡ６８へ出力する。接触信号Ｓはオン・オフ信号である。接触センサ５８が被切削物と非接触時、接触信号Ｓはオフ状態（Ｌｏｗ）となる。接触センサ５８が被切削物と接触時、接触信号Ｓはオン状態（Ｈｉｇｈ）となる。
【００２３】
ＦＰＧＡ６８は高速シフトレジスタ４１、低速シフトレジスタ４８、制御部４５、ＥＣＡＴ＿ＩＰ４７を備える。高速シフトレジスタ４１は８ｂｉｔの記憶領域を有し、１５．６２μｓｅｃの周期で接触信号Ｓの接触情報を記憶する。高速シフトレジスタ４１はＦＰＧＡ６８が作成する１５．６２μｓｅｃ毎のクロックの立ち上がりに同期して、接触信号Ｓを接触情報として記憶する。接触信号Ｓがオン状態時、高速シフトレジスタ４１はビットシフト後、オン状態を示す接触情報として記憶領域のＬＳＢに「１」を記憶する。接触信号Ｓがオフ状態時、高速シフトレジスタ４１はビットシフト後、オフ状態を示す接触情報として「０」を記憶領域のＬＳＢに記憶する。ビットシフト時、記憶領域のＭＳＢに記憶した情報は消去する。高速シフトレジスタ４１は数値制御装置３０から所定周期のポーリング信号の受付時、高速シフトレジスタ４１に記憶した接触情報を制御部４５へ送信する。
【００２４】
低速シフトレジスタ４８は８ｂｉｔの記憶領域を有し、１２５μｓｅｃの周期でＦＰＧＡ６８が出力する信号Ｗのオン・オフ状態を接触情報として記憶する。低速シフトレジスタ４８はＦＰＧＡ６８が作成する１２５μｓｅｃ毎のクロックの立ち上がりに同期して、接触情報を記憶する。低速シフトレジスタ４８の１２５μｓｅｃのクロックは、サーボアンプクロックの１２５μｓｅｃのクロックとは、クロックを生成する基板が異なるため非同期である。信号Ｗはオン・オフ信号であり、高速シフトレジスタ４１の状態に基づきＦＰＧＡ６８がオン・オフする。高速シフトレジスタ４１に記憶した接触情報が全て「１」の時、信号Ｗはオン状態となり、高速シフトレジスタ４１に記憶した接触情報が全て「０」の時、信号Ｗはオフ状態となる。ＦＰＧＡ６８が信号Ｗをオンする周期とオフする周期は１２５μｓｅｃ毎のクロックの立ち上がりの直前に行う。信号Ｗがオン状態時、低速シフトレジスタ４８はビットシフト後、オン状態を示す接触情報として「１」を記憶領域のＬＳＢに記憶する。信号Ｗがオフ状態時、低速シフトレジスタ４８はビットシフト後、オフ状態を示す接触情報として「０」を記憶領域のＬＳＢに記憶する。ビットシフト時、記憶領域のＭＳＢに記憶した情報は消去する。低速シフトレジスタ４８の接触情報の詳細な記憶方法は後述する。低速シフトレジスタ４８は数値制御装置３０から所定周期のポーリング信号（後述）の受付時、記憶領域に記憶した接触情報を制御部４５へ送信する。
【００２５】
制御部４５は高速シフトレジスタ４１、低速シフトレジスタ４８に記憶した接触情報を受信する。制御部４５は数値制御装置３０からＥＣＡＴ＿ＩＰ４７を介してポーリング信号を受信時、高速シフトレジスタ４１、低速シフトレジスタ４８から受信した接触情報を、ＥＣＡＴ＿ＩＰ４７を介して数値制御装置３０へ送信する。ＥＣＡＴ＿ＩＰ４７は制御部４５と数値制御装置３０が通信する為の通信インタフェースである。
【００２６】
図４に示す如く、接触信号Ｓは時期Ａで立ち上がり、オフする時期Ｂに至る迄、接触センサ５８と被切削物が接触したオン状態（Ｈｉｇｈ）を維持する。該時、接触センサ５８と被切削物は接触した状態である。時期Ｂの後、接触信号Ｓはオフ状態（Ｌｏｗ）を維持する。該時、接触センサ５８と被切削物は非接触の状態である。高速シフトレジスタ４１は接触信号Ｓがオン状態時（時期Ａ〜時期Ｒ１）、１５．６２μｓｅｃ毎のクロックの立ち上がりに同期して１ｂｉｔビットシフトし、記憶領域のＬＳＢに「１」を記憶する。図４の接触信号Ｓの時期Ａから時期Ｒ１に至る迄、高速シフトレジスタ４１はＬＳＢに「１」を記憶し続ける。時期Ｒ１の直前では、高速シフトレジスタ４１の８ｂｉｔの記憶領域は全て「１」を記憶し、「１１１１１１１１」となる。ＦＰＧＡ６８は高速シフトレジスタ４１の８ｂｉｔの記憶領域が全て「１」の時、高速シフトレジスタ４１にリセット信号を送信する。高速シフトレジスタ４１はリセット信号を受信するとリセットし、「００００００００」となる。高速シフトレジスタ４１のリセット後、高速シフトレジスタ４１は１５．６２μｓｅｃ毎のクロックの立ち上がりに同期して、８ｂｉｔの記憶領域のＬＳＢに「１」を記憶する（「０００００００１」）。高速シフトレジスタ４１は、時期Ｒ１から再び８ｂｉｔの記憶領域の接触情報が全て「１」になる時期迄、１５．６２μｓｅｃ毎にビットシフトしながらＬＳＢに「１」を繰返し記憶する。
【００２７】
低速シフトレジスタ４８は高速シフトレジスタ４１のリセットの時期（Ｒ１）に出力する信号Ｗのオン状態を検出し、１２５μｓｅｃ毎にビットシフトし、８ｂｉｔの記憶領域のＬＳＢに「１」を記憶する。該時、ＦＰＧＡ６８が出力する信号Ｗはオン状態を維持する。時期Ｒ１において、低速シフトレジスタ４８の記憶領域は、「０００００００１」を記憶する。低速シフトレジスタ４８は接触信号Ｓがオフする時期Ｂ迄、１２５μｓｅｃ毎にビットシフトし、信号Ｗのオン状態に基づきＬＳＢに「１」を記憶し続ける。低速シフトレジスタ４８に入力するクロックの立ち上がり周期（１２５μｓｅｃ）は高速シフトレジスタ４１に入力するクロックの立ち上がり周期（１５．６２μｓｅｃ）の約八倍なので、低速シフトレジスタ４８に入力するクロックの立ち上がる周期は、高速シフトレジスタ４１に入力するクロックの立ち上がる周期と略同期する。
【００２８】
高速シフトレジスタ４１は接触センサ５８が被切削物に対して非接触時、即ち接触信号Ｓがオフ状態時（時期Ｂ以降）、１５．６２μｓｅｃ毎に入力するクロックの立ち上がりに同期して１ｂｉｔビットシフトし、記憶領域のＬＳＢに「０」を記憶する。時期Ｒ２に至る迄、高速シフトレジスタ４１は１５．６２μｓｅｃ毎にビットシフトし、ＬＳＢに「０」を繰返し記憶する。時期Ｒ２では、高速シフトレジスタ４１の８ｂｉｔの記憶領域には全て「０」を記憶し、「００００００００」となる。低速シフトレジスタ４８は高速シフトレジスタ４１の８ｂｉｔの記憶領域に全て「０」を記憶時、ＦＰＧＡ６８が出力するリセット信号を受付けることでリセットし、「００００００００」となる。ＦＰＧＡ６８が出力する信号Ｗは時期Ｒ２を経過後、オフ状態を維持する。
【００２９】
数値制御装置３０の指示でポーリングを行う時を説明する（図４参照）。ポーリングは所定周期（一例として１ｍｓｅｃ毎）で行う。ポーリング時、数値制御装置３０はポーリング信号をＦＰＧＡ６８の制御部４５へ出力する。図４に示す如く、ポーリングは時期Ｐで行う。時期Ｐにおいて、高速シフトレジスタ４１に記憶した接触情報は「００００００１１」であり、低速シフトレジスタ４８に記憶した接触情報は「０００００００１」である。ポーリング信号を受信時、ＦＰＧＡ６８の制御部４５は高速シフトレジスタ４１、低速シフトレジスタ４８の接触情報を、数値制御装置３０へ送信する。
【００３０】
数値制御装置３０はポーリングした時期Ｐにおける高速シフトレジスタ４１、低速シフトレジスタ４８に記憶した８ｂｉｔの接触情報を受信する。該時、数値制御装置３０は受信した接触情報の接触情報判定処理を行う。接触情報判定処理は受信した８ｂｉｔの接触情報の下位ｂｉｔから連続した接触状態「１」をカウントする。時期Ｐにおいて、高速シフトレジスタ４１における接触情報判定処理の判定結果は「２」となり、低速シフトレジスタ４８における接触情報判定処理の判定結果は「１」となる。
【００３１】
数値制御装置３０の接触時期決定処理について説明する。数値制御装置３０は、時期Ｐで受信した高速シフトレジスタ４１の接触情報「００００００１１」と低速シフトレジスタ４８の接触情報「０００００００１」の判定結果に基づき時期Ａを算出する。図４に示す如く、数値制御装置３０は低速シフトレジスタ４８が１２５μｓｅｃの周期で接触情報を記憶するので、判定結果「１」に基づき１２５μｓｅｃ（１２５×１μｓｅｃ）前の時期Ｃを決定する。数値制御装置３０は高速シフトレジスタ４１の接触情報「００００００１１」に基づき、時期Ｃから更に詳細に接触時期（時期Ａ）を決定する。高速シフトレジスタ４１は接触情報を１５．６２μｓｅｃの周期で記憶するので、数値制御装置３０は接触情報判定処理による判定結果「２」に基づき時期Ｃから３１．２４μｓｅｃ（１５．６２×２μｓｅｃ）前の時期Ａを決定する。即ち数値制御装置３０は接触時期決定処理で接触センサ５８と被切削物が接触した時期Ａを、ポーリングの時期Ｐから１２５×１＋１５．６２×２＝１５６．２４μｓｅｃ分遡った時であると決定する。故に数値制御装置３０は接触時期決定処理で、ポーリングした時期Ｐから接触センサ５８が被切削物に接触した時期Ａを決定できる。
【００３２】
図４、図５を参照し、接触センサ５８の座標値Ｐ１〜Ｐ１１（ただし、図においては、Ｐ４〜Ｐ８を省略）の取得について説明する。駆動回路２０１〜２０３は作業台１０のＸ軸、Ｙ軸座標値、主軸９のＺ軸座標値を、１２５μｓｅｃ毎のサーボアンプクロックの立ち上がりに同期して取得する。図４、図５では、駆動回路２０１〜２０３が取得したＸ軸、Ｙ軸座標値、主軸９のＺ軸座標値は座標値Ｐ１〜Ｐ１１と対応する。ポーリング信号の立ち上がりと、サーボアンプクロック及びサーボアンプ通信周期の立ち上がりは同期する。
【００３３】
図４に示す如く、駆動回路２０１〜２０３は時期Ａの一つ前のサーボアンプクロックの立ち上がり（図示略）で座標値Ｐ１を取得する。駆動回路２０１〜２０３は時期Ａの直後のサーボアンプクロックの立ち上がりで座標値Ｐ２を取得し、時期Ｒ１の直後のサーボアンプクロックの立ち上がりで座標値Ｐ３を取得する。図示しないが、駆動回路２０１〜２０３はサーボアンプクロックの立ち上がりで座標値Ｐ４、Ｐ５・・・Ｐ８を順次取得する。
【００３４】
図５に示す如く、駆動回路２０１〜２０３は時期Ｂの一つ前のサーボアンプクロックの立ち上がり（図示略）で座標値Ｐ９を取得する。駆動回路２０１〜２０３は時期Ｂの直後のサーボアンプクロックの立ち上がり（図５参照）で座標値Ｐ１０を取得する。駆動回路２０１〜２０３は時期Ｒ２の直後のサーボアンプクロックの立ち上がりで座標値Ｐ１１を取得する。
【００３５】
数値制御装置３０はサーボアンプ通信周期の０．５ｍｓｅｃ毎のクロックの立ち下りで、駆動回路２０１〜２０３が取得した四つの座標値を読み出してＲＡＭ３３に記憶する。数値制御装置３０は時期Ｒ１のサーボアンプ通信周期（０．５ｍｓｅｃ）の立ち下り（図４参照）で、四つの座標値Ｐ０（図示略）〜Ｐ３（図４参照）を取得してＲＡＭ３３に記憶する。図示しないが、数値制御装置３０はサーボアンプ通信周期（０．５ｍｓｅｃ）のクロックの立ち下りで、四つの座標値Ｐ４〜Ｐ７を取得してＲＡＭ３３に記憶する。数値制御装置３０は時期Ｒ２のサーボアンプ通信周期（０．５ｍｓｅｃ）のクロックの立ち下り（図５参照）で、四つの座標値Ｐ８（図示略）〜Ｐ１１（図５参照）を取得してＲＡＭ３３に記憶する。故に数値制御装置３０は座標値Ｐ０〜Ｐ１１を接触センサ５８の位置としてＲＡＭ３３に四ずつ順次記憶する。故にＲＡＭ３３は前回ポーリングした時期から今回ポーリングした時期の間、１２５μｓｅｃ経過後毎の座標値を記憶している。
【００３６】
表面形状データ取得処理について説明する。接触時期決定処理では、数値制御装置３０は接触センサ５８と被切削物が接触した時期Ａをポーリングした時期Ｐから遡って決定した（図４参照）。表面形状データ取得処理では、数値制御装置３０はポーリングした時期Ｐの座標値Ｐ３から遡った時期Ａの座標値Ｐ１を、被切削物の表面形状データとしてＲＡＭ３３に記憶する。数値制御装置３０は上記処理を繰り返すことで、被切削物の表面形状データを順次ＲＡＭ３３に記憶していく。故に数値制御装置３０は表面形状データの検出精度が高い。
【００３７】
図６を参照し、ＦＰＧＡ６８が行う第一主処理について説明する。ＣＰＵ３１が決定プログラムを実行すると、ＦＰＧＡ６８は第一主処理を実行する。ＦＰＧＡ６８は高速シフトレジスタ４１に記憶した接触情報が全て「１」であるか否か判断する（Ｓ３０１）。高速シフトレジスタ４１に記憶した接触情報が全て「１」の時（Ｓ３０１：ＹＥＳ）、ＣＰＵ３１は高速シフトレジスタ４１をリセット「００００００００」する（Ｓ３０７）。ＣＰＵ３１は処理をＳ３０９に進める。高速シフトレジスタ４１に記憶した接触情報が全て「１」でない時（Ｓ３０１：ＮＯ）、ＦＰＧＡ６８は高速シフトレジスタ４１に記憶した接触情報が全て「０」であるか否か判断する（Ｓ３０３）。高速シフトレジスタ４１に記憶した接触情報が全て「０」でない時（Ｓ３０３：ＮＯ）、ＦＰＧＡ６８は処理をＳ３０９へ進める。高速シフトレジスタ４１に記憶した接触情報が全て「０」の時（Ｓ３０３：ＹＥＳ）、ＦＰＧＡ６８は低速シフトレジスタ４８をリセット「００００００００」し、処理をＳ３０９へ進める（Ｓ３０５）。
【００３８】
ＦＰＧＡ６８は記憶処理を実行する（Ｓ３０９）。記憶処理では、ＦＰＧＡ６８は第一記憶処理、第二記憶処理を実行する。第一記憶処理では、ＦＰＧＡ６８は接触センサ５８と被切削物とが接触したか否かを検出する。ＦＰＧＡ６８の高速シフトレジスタ４１は、接触センサ５８で検出した接触情報を１５．６２μｓｅｃの周期で記憶する。接触センサ５８が出力する接触信号Ｓがオン（Ｈｉｇｈ）状態時、高速シフトレジスタ４１は接触情報「１」をＬＳＢに記憶する。接触センサ５８が出力する接触信号Ｓがオフ（Ｌｏｗ）状態時、接触情報「０」をＬＳＢに記憶する。第二記憶処理では、ＦＰＧＡ６８の低速シフトレジスタ４８はＦＰＧＡ６８が出力する信号Ｗのオン・オフ状態に基づき、１２５μｓｅｃの周期で８ｂｉｔの記憶領域に信号Ｗのオン・オフ状態を記憶する。信号Ｗがオン状態時、低速シフトレジスタ４８はＬＳＢに接触情報「１」を記憶する。信号Ｗがオフ状態時、低速シフトレジスタ４８のＬＳＢに接触情報「０」を記憶する。
【００３９】
ＦＰＧＡ６８はポーリングによる通信周期であるか否か判断する（Ｓ３１１）。一例として、ポーリングは１ｍｓｅｃ毎に行う。ＦＰＧＡ６８はポーリング信号の未受信時、通信周期でないと判断する（Ｓ３１１：ＮＯ）。該時、ＦＰＧＡ６８は処理をＳ３０１へ戻す。ＦＰＧＡ６８はポーリング信号の受信時、通信周期であると判断する（Ｓ３１１：ＹＥＳ）。該時、ＦＰＧＡ６８は制御部４５に記憶した高速シフトレジスタ４１の８ｂｉｔの接触情報と低速シフトレジスタ４８の８ｂｉｔの接触情報を、数値制御装置３０へ送信する（Ｓ３１３）。ＦＰＧＡ６８は処理をＳ３０１へ戻す。
【００４０】
図７を参照し、数値制御装置３０のＣＰＵ３１が行う第二主処理について説明する。ＣＰＵ３１はＲＯＭ３２に記憶した決定プログラムを読出して実行する。決定プログラムを実行すると、ＣＰＵ３１は決定プログラムに基づき第二主処理を実行する。ＣＰＵ３１はポーリングの通信周期であるか否か判断する（Ｓ６０１）。ポーリング周期でないと判断した時（Ｓ６０１：ＮＯ）、ＣＰＵ３１は処理をＳ６０１へ戻す。ポーリング周期であると判断した時（Ｓ６０１：ＹＥＳ）、ＣＰＵ３１は高速シフトレジスタ４１に記憶した８ｂｉｔの接触情報をＦＰＧＡ６８から取得する（Ｓ６０３）。ＣＰＵ３１は低速シフトレジスタ４８に記憶した８ｂｉｔの接触情報をＦＰＧＡ６８から取得する（Ｓ６０５）。ＣＰＵ３１は処理をＳ６０７へ進める。ＣＰＵ３１は接触情報判定処理を行う（Ｓ６０７）。ＣＰＵ３１は接触情報判定処理に基づく判定結果に基づき、接触センサ５８と被切削物が接触した時期Ａを決定する（Ｓ６０９）。ＣＰＵ３１は表面形状データ取得処理を行い、決定した時期ＡにおけるＸ、Ｙ、Ｚの座標値（例えば座標値Ｐ１）を表面形状データとしてＲＡＭ３３に記憶する（Ｓ６１１）。ＣＰＵ３１は処理をＳ６０１へ戻す。
【００４１】
以上説明の如く、工作機械１は接触センサ５８と被切削物が接触した時期Ａを、接触時期決定処理に基づき決定する。時期Ａは高速シフトレジスタ４１と低速シフトレジスタ４８とが記憶した接触情報、高速シフトレジスタ４１が接触情報を記憶する周期（１５．６２μｓｅｃ）、及び低速シフトレジスタ４８が接触情報を記憶する周期（１２５μｓｅｃ）に基づき決定する。故に工作機械１は周期（１５．６２μｓｅｃ）に依存する範囲内の誤差で接触時期を決定できるので、時期Ａの決定精度のばらつきを低減できる。故に工作機械１が決定する被切削物の接触位置の精度が向上する。
【００４２】
高速シフトレジスタ４１は１５．６２μｓｅｃ毎に所定期間（１５．６２×８μｓｅｃ）記憶する接触情報の記憶領域の記憶容量と同じ８ｂｉｔの記憶容量を有する。ＦＰＧＡ６８は高速シフトレジスタ４１が所定期間連続してオン状態を記憶時（「１１１１１１１１」）、高速シフトレジスタ４１を初期化する。故に工作機械１は高速シフトレジスタ４１の記憶容量を、低速シフトレジスタ４８の記憶容量と同じ８ｂｉｔとすればよい。故に工作機械１は必要な記憶領域の記憶容量を小さくできる。工作機械１は高速シフトレジスタ４１を初期化し、初期化した記憶領域を再利用できる。
【００４３】
工作機械１は接触情報判定処理による判定結果「２」及び１５．６２μｓｅｃの乗算値と、接触情報判定処理による判定結果「１」及び１２５μｓｅｃの乗算値との加算値に基づき、接触センサ５８と被切削物の接触時期を決定する。故に工作機械１は簡単に精度よく接触時期を決定できる。
工作機械１は接触状態を記憶する記憶領域として高速シフトレジスタ４１、低速シフトレジスタ４８を有する。工作機械１はシフトレジスタを用いることで、簡易な構成で接触時期の決定精度のばらつきを低減できる。
【００４４】
＜変形例＞
本発明は上記実施形態に限らない。工作機械１は８ｂｉｔの高速シフトレジスタ４１、低速シフトレジスタ４８を使用したが、１６ｂｉｔのシフトレジスタを用いてもよく、３２ｂｉｔのシフトレジスタを用いてもよい。工作機械１は高速シフトレジスタ４１、低速シフトレジスタ４８として８ｂｉｔ以下、例えば４ｂｉｔのシフトレジスタを用いてもよい。高速シフトレジスタ４１の記憶領域は少なくとも８ｂｉｔであればよい。該時、工作機械１は低速シフトレジスタ４８の記憶領域が８ｂｉｔであっても、高速シフトレジスタ４１の記憶領域が８ｂｉｔ分「１」を記憶時、高速シフトレジスタ４１をリセットすればよい。高速シフトレジスタ４１は１５．６２μｓｅｃ毎に接触センサ５８と被切削物の接触状態を記憶したがこれに限らず、１５．６２μｓｅｃよりも早い周期で記憶してもよく、遅い周期で記憶してもよい。低速シフトレジスタ４８は１２５μｓｅｃで接触状態を記憶したがこれに限らない。該時、高速シフトレジスタ４１が記憶する周期の整数倍の周期で接触状態を記憶すればよい。接触状態を記憶する記憶領域としてカウンタで構成してもよい。該時、工作機械１は該カウンタでカウントアップした数値に基づき、接触センサ５８と被切削物の接触時期を決定できる。
【００４５】
接触情報判定処理と接触時期決定処理はＣＰＵ３１が行ったが、ＦＰＧＡ６８が内部で行ってもよい。該時、ＦＰＧＡ６８がポーリング信号を受取時、ＦＰＧＡ６８が接触時期を数値制御装置３０に送信すればよい。ポーリングの周期は１ｍｓｅｃであったが、１ｍｓｅｃ以下の周期でもよく、１ｍｓｅｃ以上でもよい。該時、接触センサ５８と被切削物の接触時期決定処理に影響しない周期であるとよい。
【００４６】
高速シフトレジスタ４１は１５．６２μｓｅｃ毎のクロックの立ち上がりで接触情報を記憶したが、例えば１５．６２μｓｅｃと１５．６４μｓｅｃの立ち上がりの組み合わせで接触情報を記憶してもよい。該時、１５．６２μｓｅｃ毎のクロックの立ち上がりで６ｂｉｔ記憶し、１５．６４μｓｅｃ毎のクロックの立ち上がりで２ｂｉｔ記憶してもよい。該時、１５．６２×６（９３．７２）＋１５．６４×２（３１．２８）＝１２５μｓｅｃで高速シフトジスタに８ｂｉｔ分のデータを記憶できるので、低速シフトレジスタ４８の１２５μｓｅｃでのクロックの立ち上がりとの誤差を更に少なく接触情報を記憶できる。
【００４７】
駆動回路２０１〜２０３は１２５μｓｅｃ毎に座標値を取得したが、これに限らない。サーボアンプクロックは、１２５μｓｅｃ毎よりも短い周期でもよい。例えば、駆動回路２０１〜２０３は１５．６２μｓｅｃ毎に座標値を取得してもよい。該時、数値制御装置３０は表面形状データの決定において、より高精度に座標値を遡ぼることができる。
【００４８】
＜その他＞
接触センサ５８は本発明の検出部の一例である。Ｓ３０９の処理において第一記憶処理を実行するＦＰＧＡ６８は本発明の第一記憶制御部の一例である。高速シフトレジスタ４１は本発明の第一記憶部の一例である。高速シフトレジスタ４１の１ｂｉｔが記憶する「１」の総数は本発明の第一結果情報の一例である。接触情報判定処理が判定する判定結果「２」は本発明の検出した回数の一例である。Ｓ３０９の処理において第二記憶処理を実行するＦＰＧＡ６８は本発明の第二記憶制御部の一例である。低速シフトレジスタ４８は本発明の第二記憶部の一例である。低速シフトレジスタ４８の１ｂｉｔが記憶する「１」の総数は本発明の第二結果情報の一例である。接触情報判定処理が判定する判定結果「１」は本発明の検出した回数の一例である。Ｓ３１１の処理を実行するＦＰＧＡ６８とＳ６０１の処理を実行するＣＰＵ３１は本発明の読出し部の一例である。Ｓ６０７、Ｓ６０９の処理を実行するＣＰＵ３１は本発明の決定部の一例である。Ｓ３０７の処理を行うＦＰＧＡ６８は本発明の初期化部の一例である。１５．６２μｓｅｃは本発明の第一周期の一例である。１２５μｓｅｃは本発明の第二周期の一例である。８ｂｉｔは本発明の同じ容量の一例である。
【符号の説明】
【００４９】
１        ：工作機械
３１      ：ＣＰＵ
４１      ：高速シフトレジスタ
４８      ：低速シフトレジスタ
５８      ：タッチセンサ
６８      ：ＦＰＧＡ
【図１】
2019171563.tif 000003
【図２】
2019171563.tif 000004
【図３】
2019171563.tif 000005
【図４】
2019171563.tif 000006
【図５】
2019171563.tif 000007
【図６】
2019171563.tif 000008
【図７】
2019171563.tif 000009