(57)【特許請求の範囲】
【請求項１】
工具に代えて測定用プローブを主軸に取り付けることができるＮＣ工作機械と、
前記ＮＣ工作機械を駆動制御するＮＣコントローラと、
測定機用の測定ソフトウェアを格納しているとともに、前記ＮＣコントローラに動作指令を発して前記ＮＣ工作機械に測定機に相当する動作をさせる端末装置と、
を備えるＮＣ工作機械システムの前記ＮＣ工作機械に測定機に相当する動作をさせるＮＣ工作機械の制御方法であって、
前記端末装置には、手動操作によって前記測定用プローブの移動方向および移動速さを入力指示する手動操作部が有線または無線で接続されており、
前記NCコントローラは、前記端末装置からの動作命令が書き込まれるレジスタと、前記端末装置からの更新指令によって更新されるループカウンタと、を有しており、
前記端末装置は、前記手動操作部による入力指示で前記NC工作機械を制御するにあたって、前記NCコントローラの前記レジスタに継続移動を指示する指令を書き込むとともに、前記ループカウンタのカウント値を更新する指令を前記NCコントローラに向けて発し、続いて、前記手動操作部から入力された前記移動方向および前記移動速さの入力指示を前記ＮＣコントローラに与え、
前記ＮＣコントローラは、前記レジスタに前記継続移動を指示する指令が書き込まれている場合、前記ループカウンタの更新を確認し、前記ループカウンタの更新が確認できた場合には、相対座標系の指令コードによって、前記ＮＣ工作機械の主軸を前記入力指示の前記移動方向および前記移動速さで継続的に移動させる
ことを特徴とするＮＣ工作機械の制御方法。
【請求項２】
請求項１に記載のＮＣ工作機械の制御方法において、
前記ＮＣコントローラは、前記測定用プローブが物体に接触しているときにはその旨を表わす接触状態フラグを立て、
前記端末装置は、前記接触状態フラグが立っている場合、前記手動操作部からの入力指示に関わらず、前記移動方向および前記移動速さの指示をすべてゼロにする
ことを特徴とするＮＣ工作機械の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＮＣ工作機械システムに関する。具体的には、三次元測定機用の測定プログラムを用いてＮＣ工作機械に測定動作を実行させるためのシステムに関する。
【背景技術】
【０００２】
ＮＣ工作機械（数値制御工作機械）でワークを精密加工するにあたり、加工の途中段階で必要な形状測定を行いたいというニーズがある。そこで、三次元測定機（ＣＭＭ、Coordinate-measuring machine）で使用される測定プローブと同等のＮＣ工作機械用プローブをＮＣ工作機械に取り付け、ＮＣ工作機械上で三次元測定機と同等の測定を行うための技術が開発されている（例えば、特許文献１、２、３、４）。
【０００３】
ＮＣ工作機械で三次元測定を実行させるため、次のような方策が採用されている。まず、三次元測定機用の測定ソフトウェアを用意する。例えば、本出願人である株式会社ミツトヨは測定機のメーカであるところ、本出願人はＭＣＯＳＭＯＳ（Mitutoyo Controlled Open System for Modular Operation Support（登録商標））という測定用パッケージソフトウェアを提供している。この測定ソフトウェアというのは、例えばウィンドウズ（登録商標）などのＯＳ上で動作し、三次元測定機（ＣＭＭ）がもつ多種多様な測定機能を能率的かつ簡便に使いこなせるようにしたインターフェースを提供したり、さらに付加的な測定機能（付加的アプリケーション）との連繋を可能にしたりする。この測定用ソフトウェアを使い、「三次元測定機」における一連の測定動作、いわゆるパートプログラム等の測定プログラムを生成する。
【０００４】
ところで、ＮＣ工作機械と三次元測定機（ＣＭＭ）とはもちろん全く別物である。ＮＣ工作機械はＮＣコントローラで制御される。
ここで、工作機械の業界標準として、ＮＣコントローラはＮＣ工作機械の駆動制御等をＧコード系列の指令で行うようになっている。測定プログラムのコマンド（命令）は三次元測定機（ＣＭＭ）を駆動制御するようにはなっているが、ＮＣ工作機械をダイレクトに制御できるようにはなっていない。そこで、測定プログラムをＮＣ工作機械向けに変換する必要がある。このような変換機能を行うものとしてＮＣドライバの仕様がすでに知られている。したがって、測定プログラムとＮＣコントローラとの間にＮＣドライバを介在させることにより、プログラムした通りの測定動作をＮＣ工作機械に実行させることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−２５３８００号公報
【特許文献２】特開２０００−３１７７７５号公報
【特許文献３】国際公開ＷＯ０１／００２９１４号公報
【特許文献４】特開２０１４−２６５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
たしかに、一連の測定プログラムが用意されればＮＣ工作機械に意図した通りの測定動作を実行させることができるのであるが、それでもなお不便な点がいくつかある。
第一に、一連の測定プログラムを組むという作業自体がかなり難しい。一連の測定プログラムを組むにあたっては、測定用パッケージソフトウェアを使用するとしたとしても三次元測定機そのものに習熟している必要があり、かなり専門的な知識や技量を要する。例えば、マスターワークや設計ＣＡＤ図面があったとしても、ワーク座標、マシン座標、プローブ座標を頭の中で繋げながら測定時におけるプローブの一連の動きを数値入力で指令していくのは相当の技量である。測定機メーカは、不慣れなユーザのために測定プログラムの作成代行を提供しているほどである。
【０００７】
第二に、例えば試作品を加工しながらその都度測定を行いたいというニーズがある。製品を大量生産する段階になってくれば測定プログラムを組む作業に時間や費用を掛けることもできるが、その都度その都度測定したいといった場合に数値入力で測定プログラムを組むというのは非効率である。実際のところ、目の前に測定したい箇所があったとしても、どういう命令（測定プログラム）を与えれば意図した通りの測定動作をさせることができるかは専門家でもすぐにはわからないことがある。
【０００８】
ここで、三次元測定機にはジョイスティック等でプローブを手動操作させる機能がある。プローブを手動操作できれば、複雑な座標変換や数値入力が必要無く、直感的にプローブを動かすことができる。例えば、一連の測定プログラムを作成する際にティーチングを行ったり、測定したい箇所をその場でその都度測定したりするのに素晴らしく便利である。ＮＣ工作機械で測定動作を行うにあたってもプローブを手動で動かす機能を付加することで操作性を劇的に向上させることができるであろう。
【０００９】
本発明の目的は、測定プローブの手動操作をＮＣ工作機械上で実現させることにある。
【課題を解決するための手段】
【００１０】
本発明のＮＣ工作機械システムは、
工具に代えて測定用プローブを主軸に取り付けることができるＮＣ工作機械と、
前記ＮＣ工作機械を駆動制御するＮＣコントローラと、
測定機用の測定ソフトウェアを格納しているとともに、前記ＮＣコントローラに動作指令を発して前記ＮＣ工作機械に測定機に相当する動作をさせる端末装置と、を備えるＮＣ工作機械システムであって、
前記端末装置には、手動操作によって前記測定プローブの移動方向および移動速さを入力指示する手動操作部が有線または無線で接続されている
ことを特徴とする。
【００１１】
本発明では、
前記端末装置は、前記手動操作部から入力された前記移動方向の入力指示を方向ベクトルとして前記ＮＣコントローラに与え、
前記ＮＣコントローラは、相対座標系の指令コードによって前記ＮＣ工作機械の駆動制御を行う
ことが好ましい。
【００１２】
本発明では、
前記ＮＣコントローラは、前記端末装置との通信状態を確認し、前記端末装置との通信が有効に機能していることが確認できた場合にのみ、手動操作による移動指令でＮＣ工作機械を駆動させる
ことが好ましい。
【００１３】
本発明では、
前記ＮＣコントローラは、前記プローブが物体に接触しているときにはその旨を表わす接触状態フラグを立て、
前記端末装置は、前記接触状態フラグが立っている場合、手動操作部からの入力指示に関わらず、前記移動方向および前記移動速さの指示をすべてゼロにする
ことが好ましい。
【００１４】
本発明の計測マクロプログラムは、
手動操作部が接続された端末装置から発せられる動作指令に基づいてＮＣ工作機械に測定機に相当する動作をさせるＮＣコントローラに組み込まれる計測マクロプログラムであって、
このＮＣコントローラに、
前記端末装置から与えられる移動指令を読み取らせ、
前記移動指令を相対座標系の指令コードとし、前記ＮＣ工作機械の駆動制御を実行させる
ことを特徴とする。
【００１５】
本発明のＮＣ工作機械の制御方法は、
手動操作部が接続された端末装置から発せられる動作指令に基づいてＮＣ工作機械に測定機に相当する動作をさせるＮＣ工作機械の制御方法であって、
前記端末装置が、手動操作による移動方向の入力指示を受け付け、
前記端末装置が、前記移動方向の入力指示を方向ベクトルとしてＮＣコントローラに与え、
前記ＮＣコントローラが、相対座標系の指令コードによって前記ＮＣ工作機械の駆動制御を行う
ことを特徴とする。
【図面の簡単な説明】
【００１６】
【図１】測定機能を具備するようにしたＮＣ工作機械システムのシステム構成図。
【図２】手動操作部を示す図。
【図３】変数値レジスタに書き込まれる動作命令を例示した図。
【図４】ＮＣドライバ２２０の動作を説明するためのフローチャート。
【図５】ＮＣドライバ２２０の動作を説明するためのフローチャート。
【図６】ＮＣドライバ２２０の動作を説明するためのフローチャート。
【図７】ＮＣドライバ２２０の動作を説明するためのフローチャート。
【図８】ＮＣコントローラ（計測マクロプログラム）による動作を説明するためのフローチャート。
【図９】ＮＣコントローラ（計測マクロプログラム）による動作を説明するためのフローチャート。
【発明を実施するための形態】
【００１７】
本発明の実施形態を図示するとともに図中の各要素に付した符号を参照して説明する。
（第１実施形態）
図１は、測定機能を具備するようにしたＮＣ工作機械システムのシステム構成図である。
ＮＣ工作機械システム１００は、コンピュータ端末装置２００と、ＮＣコントローラ４００と、ＮＣ工作機械５００と、を備える。
コンピュータ端末装置２００としては、ＣＰＵとメモリとを有し基本ＯＳが入っているような小型コンピュータ端末装置（いわゆるパソコン（パーソナルコンピュータ））でもよい。
コンピュータ端末装置２００には、モニタ（表示装置）２０１と、キーボード２０２およびマウス２０３（入力装置）と、手動操作部３００と、が接続されている。
【００１８】
図２は、手動操作部３００を示す図である。
手動操作部３００は、プローブ（不図示）を手動操作で移動させるためのものである。言い換えると、ＮＣ工作機械５００の主軸を手動操作で移動させ、これによって、主軸の先端に付設したプローブに任意の（思い通りの）動作をさせるものである。プローブを手動操作できることにより、その場その都度の必要に応じて任意に測定したり、ティーチングによって測定プログラムを簡便に作成したりすることができるようになる。
【００１９】
手動操作部３００は、ジョイスティック３２０と、傾倒角検出手段３３０と、第１から第６スイッチ３４１−３４６と、を備える。
ジョイスティック３２０は、操作盤３１０に揺動可能に設けられ、プローブの移動方向および移動速さを手動で指示するための入力装置である。
ジョイスティック３２０として第１レバー３２１と第２レバー３２２とが設けられている。第１レバー３２１および第２レバー３２２は、基端側で操作盤３１０に揺動可能に支持されており、自由端側が手動操作により前後左右に揺動する。第１レバー３２１は、前後、左右、斜めを含めて自由に揺動するようになっており、プローブのＸ方向およびＹ方向の動きを指示するためのものである。第２レバー３２２は、前後に揺動するようになっており、プローブのＺ方向の動きを指示するためのものである。
【００２０】
傾倒角検出手段３３０は、Ｘ角検出部３３１と、Ｙ角検出部３３２と、Ｚ角検出部３３３と、を有する。Ｘ角検出部３３１は、第１レバー３２１の下端で第１レバー３２１の左右の倒れ角を検出する。Ｙ角検出部３３２は、第１レバー３２１の下端で第１レバー３２１の前後の倒れ角を検出する。Ｚ角検出部３３３は、第２レバー３２２の下端で第２レバー３２２の前後の倒れ角を検出する。
【００２１】
第１スイッチ３４１から第６スイッチ３４６は操作盤３１０に設けられた押しボタン式のスイッチである。
第１スイッチ３４１から第６スイッチ３４６の機能割り当てを例示する。
第１スイッチ３４１は「移動スイッチ」である。移動スイッチ３４１を押してからジョイスティック３２０を倒すと、プローブは指示方向に指示速さで移動する。
【００２２】
第２スイッチ３４２は「微動スイッチ」である。微動スイッチ３４２を押してからジョイスティック３２０を倒すと、プローブは指示方向に指示速さで移動する。ただし、移動速さは、「移動スイッチ３４１」を押したときよりも格段に遅くなるように設定されている。
【００２３】
第３スイッチ３４３は、「測定スイッチ」である。測定スイッチ３４３を押してからジョイスティック３２０を倒すと、指示方向にあるワークの座標値を測定する測定動作を行う。
例えば、「測定スイッチ３４３」を押して、ジョイスティック３２０をある方向に倒す。（一瞬倒して、後は手を離してもいい。倒す角度量は大きくても小さくてもよい。）すると、プローブが指示方向に所定の速さで移動し、その移動はプローブがワークに接触するまで継続する。プローブがワークに接触したところで座標をサンプリングするとともに、プローブの移動を停止する。その後、プローブは決められた位置まで戻る。
【００２４】
第４スイッチ３４４は「停止スイッチ」である。前記「測定動作」の実行中に停止スイッチ３４４を押すと、プローブの移動をその場で停止させ、測定動作をキャンセルする。
【００２５】
第５スイッチ３４５は、「ＧｏＴｏスイッチ」である。プローブを任意の位置に移動させた後、「ＧｏＴｏスイッチ３４５」を押すと、その座標を記憶して、測定プログラム中にその座標への移動命令を追加する。
【００２６】
第６スイッチ３４６は、「キャンセルスイッチ」である。キャンセルスイッチ３４６を押すと、測定プログラム中の直前の命令を削除する。
【００２７】
なお、上記手動操作部３００の構成は一つの例示に過ぎず、手動操作部３００の構成は限定されない。例えば、汎用されているゲーム用のコントローラを使用してもよいし、キーボード２０２のカーソルキーやマウス２０３で方向指示ができるようにしてもよいであろう。または、タブレット端末やスマートフォンのタッチパネル入力を利用することもできる。
【００２８】
手動操作部３００からの入力を読み取ること自体は、汎用ＯＳ（Ｗｉｎｄｏｗｓ（登録商標）など）が備えているインターフェース（例えばDirectInput）でできる。
【００２９】
手動操作部３００とコンピュータ端末２００との接続は有線接続であっても無線接続であってもよい。無線接続にしておけば、ＮＣ工作機械５００の近くでワークを直に見ながら手動操作できるという便利さがある。
【００３０】
コンピュータ端末装置２００には、測定用アプリケーションソフトウェア２１０と、ＮＣドライバ２２０と、が格納されている。
測定用アプリケーションソフトウェア２１０は、三次元測定機用の測定ソフトウェアである。測定ソフトウェア２１０は、一連の測定動作を指示したり、測定データの処理（補間、輪郭抽出、幾何学的当てはめなど）を行ったり、ユーザインターフェース画面を提供したりする。
【００３１】
ＮＣドライバ２２０は、測定ソフトウェア２１０とＮＣコントローラ４００とを連繋させるドライバソフトである。
また、手動操作部３００はＮＣドライバ２２０に連結されている。ＮＣドライバ２２０は、測定機用の命令をＮＣ工作機械５００が予め備える動作機能に分解するとともにＮＣコントローラ４００に動作指令を与える役割をもつ（具体的な例は後述する）。一連の測定動作がパートプログラムとして完成されている場合には、ＮＣドライバ２２０は測定ソフトウェアの解析（変換）をバッチ処理で行うことが効率的であろう。一方、手動操作部３００から逐次動作指令が入力されるような場合には、ＮＣドライバ２２０は逐次処理を行うことになる。そして、ＮＣドライバ２２０は、測定機用の命令を工作機械の動作に置き換えた後、動作指令をＮＣコントローラ４００に与える。また、ＮＣドライバ２２０は、ＮＣコントローラ４００から測定値を受け取った場合には、その測定値を測定ソフトウェア２１０に渡す。
【００３２】
ＮＣコントローラ４００は、ＮＣ工作機械５００を駆動制御するための制御装置である。ＮＣコントローラ４００は、ＣＰＵおよびメモリの他、駆動制御回路４１０、各種レジスタ４３０、ループカウンタ４４０を備える。
駆動制御回路４１０は、Ｇコード指令に応じてＮＣ工作機械５００のモータその他の電気系統を制御するものである。各種レジスタ４３０およびカウンタ４４０については必要な箇所で後述する。
【００３３】
ＮＣコントローラ４００には、ＮＣ工作機械５００を駆動制御するためのＮＣプログラム４２０が格納されている。
ＮＣプログラム４２０には、メインプログラムとしての加工マクロプログラム４２１と、サブプログラムとしての計測マクロプログラム４２２と、が含まれる。加工マクロプログラム４２１は、ＮＣ工作機械５００をまさにＮＣ工作機械として動作させるためのメインプログラムであり、ワークを自動加工するために必要な一連のシーケンスを規定したプログラムである。
【００３４】
計測マクロプログラム４２２は、ＮＣ工作機械５００を測定機として動作させるためのプログラムであり、ＮＣドライバ２２０からの動作指令を読み取ってＧコード系列の指令で駆動制御回路に命令を発する役割を持つ。ここで、ＮＣドライバ２２０はＮＣコントローラ４００に対して動作命令を発するところ、ＮＣドライバ２２０は、それら動作命令をＮＣコントローラ４００のレジスタ４３０に書き込む。（逆に、ＮＣドライバ２２０は、レジスタ４３０を巡回検査することによってＮＣコントローラ４００からの情報を受け取る。）動作命令は、命令の種類ごとに定められた”変数（識別子）”に書き込まれる（代入される）。
【００３５】
計測マクロプログラム４２２は、レジスタ４３０に書き込まれた動作命令を参照し、動作種類ごとに用意された処理ルーチンによってＮＣ工作機械５００を動作させる。計測マクロプログラム４２２は、工作機械の動作制御用に用意されているＧコードで駆動指示を発する。すると、各種Ｇコードおよび指令値に応じて駆動制御回路４１０がＮＣ工作機械５００の駆動制御を実行する。つまり、計測マクロプログラム４２２は、指示された測定動作を工作機械用に用意されている動作機能を用いて実現させる。
【００３６】
なお、工作機械であればＧコード自体はほぼ共通しているが、変数（識別子）など細かい仕様は工作機械ごとあるいはＮＣコントローラ４００ごとに異なる。したがって、測定機メーカとしては、工作機械ごとあるいはＮＣコントローラ４００ごとに適切なＮＣドライバ２２０および計測マクロプログラム４２２を作成し、必要に応じて工作機械のユーザに提供するというサービスを行うことになる。
【００３７】
レジスタ４３０には、動作命令が書き込まれる変数値レジスタ４３１の他、プローブの状態（接触／非接触状態）を表わすフラグを記録する接触状態フラグレジスタ４３２、測定動作の停止指示の有無を記録する停止指示フラグレジスタ４３３がある。変数値レジスタ４３１に書き込まれる動作命令を図３に例示する。本実施形態では手動操作を追加したことに第１の特徴がある。
図３の例でいうと、動作種別（その識別子は＃９０３）として与える変数値に“１００”を新設し、ＮＣドライバ２２０からＮＣコントローラ４００（計測マクロプログラム４２２）に手動操作でプローブの移動を指示できるようにした。その移動方向は、変数＃９００、＃９０１、＃９０２に代入する値で与えられ、その移動速さは変数＃９１３に代入する値で与えられる。（より具体的な動作例については後述する。）接触状態フラグレジスタ４３２および停止指示フラグレジスタ４３３の動作および役割については、動作説明のときに説明する。
【００３８】
同じく、ループカウンタ４４０の動作および役割についても動作説明のときに説明する。
【００３９】
ＮＣ工作機械５００は既知のものであるので詳しい説明は割愛するが、機能を簡略に記載しておく。ＮＣ工作機械５００は、ワークに対して主軸を３軸方向（Ｘ軸方向、Ｙ軸方向およびＺ軸方向）に自在に相対移動できるようになっている（さらに各軸を回転させる機能を有する場合、最大６軸駆動というものもある）。駆動軸ごとにサーボモータとエンコーダとを有し、駆動軸ごとにフィードバック制御が可能となっている。そして、主軸の先端に工具または測定プローブを取り付けられるようになっている。
【００４０】
（動作の説明）
図４から図７のフローチャートを参照しながらＮＣドライバ２２０の動作を説明する。
まず、ＮＣドライバ２２０は、ユーザによって選択されているモードを確認する（ＳＴ１１０）。モードとしては、リピートモードとシングルラーモードとがある。リピートモードというのは、既に用意されている測定パートプログラムを繰り返し実行してワークの測定を次々行うモードである。リピートモード（ＳＴ１２０：ＹＥＳ）における動作（ＳＴ１３０−ＳＴ１５０）はすでに開示されているので詳細な説明は割愛する（例えば特開２０１４−２６５４号公報を参照されたい）。
【００４１】
シングルラーモードは、マニュアル測定したり、ティーチングしたりするためのモードであり、すなわち、一つ一つの動作指令が逐次入力されるモードである。シングルラーモードが選択されている場合（ＳＴ１２０：ＮＯ）、ＮＣドライバ２２０は、手動操作部３００からの入力信号を監視する（ＳＴ２１０）。なお、図５中では「フローチャート」として表現する都合上処理ボックスＳＴ２１０を配置したが、シングルラーモードの場合、ＮＣドライバ２２０は手動操作部３００からの入力信号を監視し続ける。
【００４２】
さて、移動スイッチ３４１または微動スイッチ３４２が押された場合（ＳＴ２２０：ＹＥＳ）を説明する。この場合、ユーザがジョイスティック３２０を倒すとプローブが指示された方向に指示された速さで移動するようにしたい。ＮＣドライバ２２０は、移動スイッチ３４１または微動スイッチ３４２が押されたことを検知した場合（ＳＴ２２０：ＹＥＳ）、ＮＣコントローラ４００の変数値レジスタ４３１中に＃９０３＝“１００”を書き込む（ＳＴ２３０）。
なお、“＃９０３”は、動作種別を書き込むために用意された変数（識別子）である。また、“１００”は、継続移動を指示するために新設した変数値である。すなわち、“＃９０３＝１００”のとき、ＮＣコントローラ４００は、移動方向の指示（＃９００、＃９０１、＃９０２）および移動速さの指示（＃９１３）を短いサイクルで読み込むとともに、指示された動作（主軸の移動）の指令を継続的にＮＣ工作機械５００に与える。これにより、ＮＣ工作機械５００が継続的に主軸（プローブ）を移動させるという動作が実現する。ＮＣコントローラ４００側の動作については項を改めて後述する（図８）。
【００４３】
さらに、ＮＣドライバ２２０は、ループカウンタ４４０のカウント値を更新する（例えばカウントアップする）。正確にいうと、ＮＣドライバ２２０は、ＮＣコントローラに向けてループカウンタ４４０のカウント値を更新する指令を発する。ループカウンタ４４０はＮＣコントローラ４００に内蔵されたカウンタであるところ、ＮＣドライバ２２０側からの指令でループカウンタ４４０の更新に成功したということは、ＮＣコントローラ４００とＮＣドライバ２２０（コンピュータ端末装置２００）との接続が正常であることを意味する。（ＮＣドライバ２２０からの指令通りにループカウンタ４４０の更新が成功したか否かはＮＣコントローラ４００の側で確認することになる（図８で後述））。
【００４４】
次に、ＮＣドライバ２２０は、接触状態フラグレジスタ４３２に記録されているフラグ値を確認する（ＳＴ２５０）。
ここで、接触状態フラグレジスタ４３２はＮＣコントローラ４００内のレジスタであり、プローブの状態（接触／非接触状態）を表わすフラグを記録するＮＣ工作機械５００に取り付けられたプローブが何か（例えばワーク）に接触すると、プローブからは接触信号が発せられる。この接触信号はＮＣ工作機械５００からＮＣコントローラ４００に伝達される。ＮＣコントローラ４００は、接触信号を受けたら接触状態フラグを“１”にする。逆に、接触信号が無いときは接触状態フラグを“０”にする。
【００４５】
ＮＣドライバ２２０は、接触状態フラグを確認し（ＳＴ２５０）、接触状態フラグが“０”である場合（ＳＴ２６０：ＹＥＳ）、続いて、移動指令をＮＣコントローラ４００に発する。ＮＣドライバ２２０は、手動操作部３００からの入力を受けて、ｘ座標値、ｙ座標値、ｚ座標値および移動速さをＮＣコントローラ４００に指示する。すなわち、ｘ座標値を＃９００に書き込み、ｙ座標値を＃９０１に書き込み、ｚ座標値を＃９０２に書き込み、移動速さを＃９１３に書き込む。
【００４６】
手動操作部３００からの入力信号をどのような換算でｘ座標値、ｙ座標値、ｚ座標値、移動速さに変換するかには様々なバリエーションが有り得る。
一例だけ挙げておく。
手動操作部３００は、第１レバー３２１および第２レバー３２２が傾けられている角度量を内蔵している傾倒角検出手段３３０（Ｘ角検出部３３１、Ｙ角検出部３３２、Ｚ角検出部３３３）でそれぞれ検出し、ＮＣドライバ２２０に入力する。
いま、この角度量の組を（θｘ、θｙ、θｚ）という数ベクトルΘで表わすとする。
ＮＣドライバ２２０は、Θ（θｘ、θｙ、θｚ）の大きさを１にするように変換して（数ベクトルΘをΘの大きさで割る）、大きさ１の（単位）方向ベクトルを生成する。このようにして求まった（単位）方向ベクトルＴがプローブの進行方向を表わし、（単位）方向ベクトルＴの成分を（ｘ座標値、ｙ座標値、ｚ座標値）とする。（当然であるが、大きさを１にしたのは便宜上のことであり、方向ベクトルの大きさ自体は拘泥するところではない。）一方、Θ（θｘ、θｙ、θｚ）の大きさが移動速さに相当する。移動スイッチ３４１が押されている場合には｜Θ｜に比較的大なる係数を乗したものを移動速さとし、微動スイッチ３４２が押されている場合には｜Θ｜に比較的小なる係数を乗したものを移動速さとする。
【００４７】
なお、手動操作のときには（ｘ座標値、ｙ座標値、ｚ座標値）が方向ベクトルを意味しているのであって、移動先の絶対座標値を表わしているわけではない。手動操作のときに（ｘ座標値、ｙ座標値、ｚ座標値）を方向ベクトルＴと解釈し、方向ベクトルＴの向きへ主軸（プローブ）を継続的に移動させるようにＮＣ工作機械５００を駆動制御しなければならない。それはＮＣコントローラ４００の役割である（後述する）。
【００４８】
一方、ＳＴ２６０で接触状態フラグが“１”の場合、すなわち、プローブが何か（例えばワーク）に接触している場合、ＮＣドライバ２２０は手動操作部３００からの入力信号に関わらずプローブの移動を止める。このとき、ＮＣドライバ２２０は、手動操作部３００からの入力信号に関わらず、＃９００、＃９０１、＃９０２および＃９１３をすべて“０”とする。これで、プローブは動きを止める。
【００４９】
次に、測定スイッチ３４３が押し下げされた場合の動作を説明する（ＳＴ２２０：ＮＯ、ＳＴ３１０：ＹＥＳ）。ユーザが測定スイッチ３４３を押すのは次のような状況である。事前に「移動」または「微動」によってプローブを測定対象箇所の近傍まで移動させておく。そして、測定スイッチ３４３を押し、それから、ジョイスティック３２０を測定対象箇所の方向に倒す。すると、プローブが測定対象箇所に向けて移動し、接触を検知したところで座標値をサンプリングし、プローブを所定の位置（例えば元の位置）に移動させる、という一連の動作が実行される。このようにしてユーザは任意の測定箇所を随時測定することができる。
【００５０】
測定スイッチ３４３の押し下げを検知したら、ＮＣドライバ２２０は、ＮＣコントローラ４００の変数値レジスタ４３１中に＃９０３＝“２”を書き込む（ＳＴ３２０）。
＃９０３＝“２”は「測定」を指示するための変数値である。そして、ＮＣドライバ２２０は、手動操作部３００からの入力を受けて、ｘ座標値、ｙ座標値、ｚ座標値および測定速さをＮＣコントローラ４００に指示する。
ｘ座標値、ｙ座標値およびｚ座標値はジョイスティック３２０の各傾斜角によって指示される値であって、前述と同様にこれは方向ベクトルを意味する。
【００５１】
ただし、ＮＣ工作機械５００には「測定」という機能はもともとない。そこで、ＮＣ工作機械５００にもともとあるブロックスキップという機能を代用する。ブロックスキップという機能で「測定」を実現する都合上、方向ベクトルにはある程度の大きさが必要であり、そこで、（単位）方向ベクトルＴに所定の係数（＞１）を乗した値を（ｘ座標値、ｙ座標値、ｚ座標値）とする。
ブロックスキップを用いて測定動作を実現する仕組み自体は本発明の主たるポイントではないのでこれ以上の説明は割愛するが、詳しくは、例えば特開２０１４−２６５４号公報を参照されたい。
【００５２】
また、「測定速さ」の値は予め設定されている値であって、ジョイスティック３２０の傾斜角度の大きさによらず一定とする。ＮＣドライバ２２０は、ｘ座標値を＃９００に書き込み、ｙ座標値を＃９０１に書き込み、ｚ座標値を＃９０２に書き込み、さらに、測定速さを＃９１２に書き込む（ＳＴ３３０）。
【００５３】
ＮＣコントローラ４００は、変数値レジスタ４３１に書き込まれた指令に従ってＮＣ工作機械５００を駆動制御し、そして、この「測定」によって得た座標値をＮＣドライバ２２０に伝える。すなわち、ＮＣコントローラ４００は、測定値を＃９０４、＃９０５、＃９０６に書き込み、ＮＣドライバ２２０はこれを読み取る。ＮＣドライバ２２０は、測定ソフトウェア２１０に測定値を渡し、測定ソフトウェア２１０によってデータ解析が実行される（ＳＴ３４０）。「測定」が終了したら、フローはＳＴ２２０に戻る。
【００５４】
なお、ＮＣドライバ２２０は、手動操作部３００からの入力を常に監視しているところ、測定動作が開始された後に停止スイッチ３４４の押下げを検知した場合（ＳＴ３５０）、測定動作を中止させる。
ＮＣドライバ２２０は、停止スイッチ２２０の押下げを検知したら、ＮＣコントローラ４００の停止指示フラグレジスタ４３３にフラグ“１”を書き込む。ＮＣコントローラ４００では内蔵されているシーケンサーユニット（業界ではＰＭＣと呼称されることがある）がレジスタ４３０やループカウンタ４４０を巡回監視している。停止指示フラグレジスタ４３３に“１”が入ったことを検知した場合、ＮＣコントローラ４００はＮＣ工作機械の（測定）動作を中止させる。このようにして、ユーザは、測定動作の途中キャンセルを手動操作部３００から指示することができる。
【００５５】
次に、ＧｏＴｏスイッチ３４５が押し下げられた場合（ＳＴ４１０：ＹＥＳ）、ＮＣドライバ２２０は、プローブの現在位置（座標値）を取得して、その座標値への移動を測定パートプログラムに追加する（ＳＴ４２０）。
プローブの現在位置（座標値）は、変数値レジスタの＃９０７−＃９１１に書き込まれている。ＮＣドライバ２２０は、変数値レジスタの＃９０７−＃９１１を読み取って、測定ソフトウェア２１０に渡す。
【００５６】
次に、キャンセルスイッチ３４６が押し下げられた場合（ＳＴ５１０：ＹＥＳ）、ＮＣドライバ２２０は測定ソフトウェア２１０にキャンセル指示を出す。これにより、測定ソフトウェア２１０は測定パートプログラムの直前の命令を削除する。
【００５７】
シングルラーモードにおけるＮＣドライバ２２０の動作としては、図５、図６、図７のフローチャートで説明した動作を終了条件（ＳＴ５３０）が満たされるまで繰り返すということになる。
【００５８】
次に、図８、図９をＮＣコントローラ４００側の動作を説明する。
図８、図９は、ＮＣコントローラ４００、具体的には、計測マクロプログラム４２２による動作を説明するためのフローチャートである。計測マクロプログラム４２２は、ＮＣ工作機械５００を「測定機」として機能させる際に呼び出される。計測マクロプログラム４２２は、呼び出されるとまずＮＣコントローラ４００のシーケンサーユニットに指示を出す。具体的には、計測マクロプログラム４２２はシーケンサーユニットにプローブの接触状態を監視させるとともに（ＳＴ６１０）、停止指示フラグレジスタの監視（ＳＴ６２０）をさせる。前述の通り、プローブが何か（例えばワーク）に接触したら、ＮＣコントローラ４００は接触状態フラグレジスタに“１”を書き込み、プローブから接触信号が無い場合は接触状態フラグレジスタを“０”にしておく。また、停止指示フラグに“１”が書き込まれたらＮＣコントローラ４００はＮＣ工作機械５００の測定動作を中止させる（後に触れる）。
【００５９】
ＮＣコントローラ４００は、変数値レジスタ４３１を監視しているところ、ＮＣドライバ２２０によって変数値レジスタに＃９０３＝１００が書き込まれたとする（ＳＴ６３０：ＹＥＳ）。これは、シングルラーモードにおいて手動操作部３００でプローブの継続移動が指令されたことを意味する。この場合、ＮＣコントローラ４００は、まず、ループカウンタ４４０の値を見て、ループカウンタ４４０が更新されているかを確かめる（ＳＴ６４０）。ループカウンタの更新が正常であれば（ＳＴ６５０：ＹＥＳ）、ＮＣコントローラ４００（計測マクロプログラム４２２）は、変数値レジスタ４３１の＃９００、＃９０１、＃９０２、＃９１３に書き込まれた値に従って駆動制御回路４１０に動作指令を発する。
【００６０】
ＮＣコントローラ４００（駆動制御回路４１０）やＮＣ工作機械５００はＧコード系列の命令で動作するので、計測マクロプログラム４２２は、継続移動の指令をそれに応じたＧコードで駆動制御回路４１０に指令する。
そこで、Ｇ０１とＧ９１を使用する。
Ｇ０１は、直線移動を指令するコードである。Ｇ９１は、相対座標系を意味するコードである（言葉を換えると、現在位置に対してインクリメントせよという指令である）。Ｇ９１のコードの下で、ｘ座標値（＃９００）、ｙ座標値（＃９０１）、ｚ座標値（＃９０２）、さらに、移動速さ（＃９１３）を駆動制御回路４１０に与える（ＳＴ６６０）。すると、ＮＣ工作機械５００の主軸（プローブ）が手動操作部３００で指示された方向に指示された速さで継続的に移動する。ＮＣドライバ２２０がＳＴ２２０−ＳＴ２７０のループを繰り返すことで変数値レジスタ４３１の＃９００−＃９０２、＃９１３を書き換え、さらに、計測マクロプログラム４２２がＳＴ６３０−ＳＴ６６０を繰り返す。これにより、ＮＣ工作機械５００の主軸（プローブ）が３次元測定機（ＣＭＭ）の如くユーザが意図した通りの移動を応答性よく滑らかに行う。
【００６１】
ここで、ループカウンタ４４０の確認動作（ＳＴ６４０）においてループカウンタ４４０の更新が確認できなかったとする（ＳＴ６５０：ＮＯ）。この場合、シーケンサーユニット（ＮＣコントローラ４００）は、駆動制御回路４１０に「停止」を指示する（ＳＴ６７０）。ループカウンタ４４０はＮＣドライバ２２０によって更新されるものであるところ、ループカウンタ４４０の更新が無いとすれば、それはＮＣコントローラ４００とＮＣドライバ２２０（コンピュータ端末装置２００）との通信が不調であることを意味している。この場合には、変数値レジスタ４３１にどのような値が書き込まれていようと関係なく、計測マクロプログラム４２２は、駆動制御回路４１０に「停止」を指示する。
【００６２】
変数値レジスタ４３１の識別子＃９０３の変数値が“１００”以外の場合、図９のフローチャートのようになる。＃９０３に１００以外の値が与えられるのは、手動操作時ではなく、主として測定パートプログラムを実行しているときである。これらの動作のほとんどはすでに開示されているので逐一の詳細な説明は割愛するが（例えば特開２０１４−２６５４号公報を参照されたい）、本発明に関係するところを若干付言しておく。
【００６３】
＃９０３＝１のとき（ＳＴ７１０）、これは指示された座標値への移動指令を意味する。
このとき、計測マクロプログラムはＧ９０というコードを用いる。Ｇ９０は絶対座標系での移動指令である。駆動制御回路４１０は、Ｇ９０の指令の下、＃９００（ｘ座標値）、＃９０１（ｙ座標値）、＃９０２（ｚ座標値）で指示された座標値へＮＣ工作機械５００の主軸を移動させるようにフィードバック制御を行う。同じ移動指令であるが、＃９０３＝１００のときにはＧ９１という相対座標系を用いていることと対照であることに留意されたい。
【００６４】
＃９０３＝２のとき（ＳＴ７２０）、これは測定動作の指示である。
計測マクロプログラム４２２は、Ｇ３１のコードで「測定動作」を実現する。正確にいうと、Ｇ３１はブロックスキップを表わすコードであるが、この機能を用いることでＮＣ工作機械５００にワークとの接触検知をさせることができる（例えば特開２０１４−２６５４号公報を参照されたい）。計測マクロプログラム４２２はＧ３１で「測定動作」を駆動制御回路４１０に指示するのであるが（ＳＴ７２１）、停止指示フラグを常時監視し（ＳＴ６２０）、停止指示フラグレジスタ４３３に“１”が書き込まれた場合（ＳＴ３５０）、即時に動作の停止を駆動制御回路４１０に指示する（ＳＴ７２２）。
停止スイッチの押し下げがあった場合にＮＣドライバが停止指示フラグを“１”にすることは前述した（ＳＴ３５０）。
【００６５】
このような構成を備える本実施形態によれば次の効果を奏する。
（１）ＮＣ工作機械５００上で測定動作を行うにあたって手動操作部３００によるマニュアル操作ができるようになった。
これにより、プローブを任意（思い通り）に移動させることが可能になり、その場その都度の必要に応じてワークを簡便に測定することができる。例えば試作品の加工段階で素晴らしく利便性を発揮するであろうし、数値入力で測定指示を打ち込む場合に比べて直感的操作が可能になるので工作機械上での測定機能を誰でも使いこなせるようになる。
【００６６】
なお、三次元測定機には手動操作部によるプローブのマニュアル操作という機能があるが、ＮＣ工作機械には主軸のマニュアル操作といった機能は用意されていなかった。
工作機械という性質上、人が工具をマニュアルで動かしてワークを精密加工するという必要がもともと無かったためと考えられる。工具をスタート位置に持っていくため軸ごとに手動のハンドルのようなものはあったかもしれないが、ジョイスティックのような操作部材で主軸を自在に動かすような機能は無かった。ＮＣ工作機械上で加工と測定とを交互にしたい、しかも工作機械上で効率よく簡便に「測定」を行いたいという新たな課題のもと、そのために好適な手段として、プローブの手動操作という機能が工作機械上でも実現するように本発明を着想したのである。
【００６７】
（２）手動操作部３００からの移動指示でプローブを移動させるにあたり、継続移動（“１００”）という動作指示を新たに設け、これをＧコードのＧ９１に対応させることとした。これにより、ジョイスティック３２０（手動操作部３００）からの移動指令に従ってプローブが滑らかに移動する。
従来、測定パートプログラムからの移動指令は「位置決め（“１”）」で指示され、Ｇ９０の絶対座標系で移動先の座標を与えるようになっていた。組み上げられた一連の測定パートプログラムでは、移動先は予め決まっているのであるから、このような指示方式を用いるのは当然のことである。
【００６８】
しかしながら、ジョイスティック３２０（手動操作部３００）からの移動指令を絶対座標系で指示すると円滑な移動が実現できない。ジョイスティック３２０（手動操作部３００）からの移動指令を絶対座標系（Ｇ９０）で与えようとすると次のようなプロセスになる。
まず、プローブの現在位置を取得する。そのうえで、ジョイスティック３２０の傾倒方向および傾倒角の大きさから次の時点での移動先の座標値を（１０、０、０）→（１１、０、０）、（１３、０、０）・・・というように時々刻々求める。それをＮＣコントローラ４００に与え、ＮＣコントローラ４００は指示された座標値に向けてフィードバック制御で主軸を移動させる。
このような方式は従来の発想の延長線上にあるので設計としては組みやすいが、プローブの動きがぎこちなく応答性もよくない。
そこで、本発明者らは、ジョイスティック３２０（手動操作部３００）からの移動指令は方向ベクトルで与えられるものとし、継続移動（“１００”）という動作指示を新たに設け、駆動制御回路４１０にはＧ９１のもとで座標を指示するようにした。そして、指示座標を短サイクルでダイナミックに更新することにより、ユーザの意図通りの滑らかな移動を実現可能とした。
【００６９】
（３）本実施形態ではＮＣコントローラ４００にループカウンタ４４０を設けておき、ループカウンタ４４０の更新がＮＣドライバ２２０によって正常に行われている場合にだけ手動操作による移動指示を駆動制御回路４１０に発することをしている。前述のように、ジョイスティック３２０（手動操作部３００）による移動指示は方向ベクトルであるとした。
このため、＃９０３に“１００”が代入されている間は＃９００−＃９０２の値の通りに主軸が動き続けることになる。一つの問題として、変動値レジスタ４３１に＃９０３＝１００が書き込まれた状態でＮＣドライバ２２０（コンピュータ端末２００）とＮＣコントローラ４００との通信が不調になった場合が考えられる。
この場合、ユーザの意図と関係なく、＃９００−＃９０２の値の通りに主軸がどこまでも動き続けることになる。そこで、手動操作による移動指示を駆動制御回路４１０に発する前に、ＮＣコントローラ４００とＮＣドライバ２２０（コンピュータ端末装置２００）との通信が正常であるかを確認するステップを介在させ、通信が不調の場合にはＮＣ工作機械５００を「停止」させることとした。
これにより、手動操作による利便性と安全性とを両立させることができる。
【００７０】
（４）ＮＣコントローラ４００に接触状態フラグレジスタ４３２を設け、接触状態フラグが“１”のときには手動操作による移動指令がＮＣコントローラ４００に入力されないようにした。
手動操作にはやはり誤操作が避けられない。また、ＮＣドライバ２２０（コンピュータ端末装置２００）はＮＣ工作機械５００に直接繋がっているわけではないのでプローブが接触しているかどうかは直接には検知し得ない。そこで、プローブの接触状態がＮＣドライバ２２０の側でも確認できるように接触状態フラグレジスタ４３２を設け、プローブが何か（例えばワーク）に接触したら、手動操作入力に関わらずプローブ移動を自動で止めるようにした。
これにより、手動操作による利便性と安全性とを両立させることができる。
【００７１】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
上記の識別子や変数値、フラグ値はすべて例示であって文字や数字の値そのものに拘泥しないのは当然である。
【００７２】
ＮＣドライバとＮＣコントローラとの通信確認にループカウンタを用いる場合を例示したが、もちろん通信の良／不良を確認する手段は他にも種々有り得る。
【符号の説明】
【００７３】
１００…ＮＣ工作機械システム、２００…コンピュータ端末装置、２０１…モニタ、２０２…キーボード、２０３…マウス、２１０…測定ソフトウェア、２２０…ＮＣドライバ、３００…手動操作部、３１０…操作盤、３２０…ジョイスティック、３２１…第１レバー、３２２…第２レバー、３３０…傾倒角検出手段、３３１…Ｘ角検出部、３３２…Ｙ角検出部、３３３…Ｚ角検出部、３４１…移動スイッチ、３４２…微動スイッチ、３４３…測定スイッチ、３４４…停止スイッチ、３４５…ＧｏＴｏスイッチ、３４６…キャンセルスイッチ、４００…ＮＣコントローラ、４１０…駆動制御回路、４２０…ＮＣプログラム、４２１…加工マクロプログラム、４２２…計測マクロプログラム、４３０…レジスタ、４３１…変数値レジスタ、４３２…接触状態フラグレジスタ、４３３…停止指示フラグレジスタ、４４０…ループカウンタ、５００…ＮＣ工作機械。
【図１】
0006471402.tif 000002
【図２】
0006471402.tif 000003
【図３】
0006471402.tif 000004
【図４】
0006471402.tif 000005
【図５】
0006471402.tif 000006
【図６】
0006471402.tif 000007
【図７】
0006471402.tif 000008
【図８】
0006471402.tif 000009
【図９】
0006471402.tif 000010