(57)【要約】【課題】機械構成上の様々な位置を自由かつ容易に制御点として指定できると共に、機会構成上の様々な箇所の座標系を容易に設定できる数値制御装置を提供すること。【解決手段】制御対象の機械構成を、構成要素をノードとするグラフ形式で表現し、保持する数値制御装置であって、機械構成のグラフに対し、制御点及び座標系を挿入する制御点座標系挿入部１１２と、挿入された前記制御点及び前記座標系に識別子を割り当てる識別子割り当て部１１３と、識別子により制御点及び座標系を１組以上指定する制御点座標系指定部１１４と、制御点座標系指定部により指定された制御点と座標系により、プログラム中で指令された１つ以上の指令値が、どの制御点に対するどの座標系上の座標値に対応するか判断する指令値判断部１１５と、制御点の前記座標値が前記指令値となるように、前記制御点の移動を指令する移動指令部１１６とを備える。【選択図】図４
2019057262.tif 000002
【特許請求の範囲】
【請求項１】
制御対象の機械構成を、構成要素をノードとするグラフ形式で表現し、保持する数値制御装置であって、
前記機械構成のグラフに対し、識別子により制御点及び座標系を１組以上指定する制御点座標系指定部と、
前記制御点座標系指定部により指定された前記制御点と前記座標系により、プログラム中で指令された１つ以上の指令値が、どの制御点に対するどの座標系上の座標値に対応するか判断する指令値判断部と、
前記制御点の前記座標値が前記指令値となるように、前記制御点の移動を指令する移動指令部と、を備える数値制御装置。
【請求項２】
前記機械構成のグラフに対し、前記制御点及び前記座標系を挿入する制御点座標系挿入部と、前記挿入された前記制御点及び前記座標系に前記識別子を割り当てる識別子割り当て部とを備える、請求項１に記載の数値制御装置。
【請求項３】
前記制御点座標系挿入部は、前記機械構成のグラフの各ノードに対し、制御点及び座標系をノードとして挿入する、請求項２に記載の数値制御装置。
【請求項４】
前記制御点座標系挿入部は、前記機械構成のグラフの各ノードに対し、制御点及び座標系を情報として持たせる、請求項２に記載の数値制御装置。
【請求項５】
前記機械構成のグラフは、複数の軸をまとめて１つにしたユニットを構成要素として含むことができる、請求項１〜４のいずれか１項に記載の数値制御装置。
【請求項６】
ユーザが記述したスクリプトを解析することにより、前記ユニットを定義し、定義された前記ユニットを前記機械構成のグラフの構成要素として含むことができる、請求項５に記載の数値制御装置。
【請求項７】
前記座標系は、特定のノードの影響を除くことが可能である、請求項１〜６のいずれか１項に記載の数値制御装置。
【請求項８】
前記制御点は、特定のノードの影響を除くことが可能である、請求項１〜７のいずれか１項に記載の数値制御装置。
【請求項９】
前記指令値として、前記機械構成のグラフに含まれる軸名称とは無関係に、意味毎に予め定義された識別子に対して割り当てた、任意のアドレスを用いる、請求項１〜８のいずれか１項に記載の数値制御装置。
【請求項１０】
前記意味は、前記制御点の位置、前記制御点の姿勢、及び、前記姿勢を決定する回転軸の角度位置を含む、請求項９に記載の数値制御装置。
【請求項１１】
前記指令値として、特定のノードの座標値を直接指定できる、請求項１〜１０のいずれか１項に記載の数値制御装置。
【請求項１２】
前記移動指令部は、指定された前記座標系と前記機械構成のグラフとから、前記指令値の第１座標変換式を求め、指定された前記制御点と前記機械構成のグラフとから、前記制御点の第２座標変換式を求め、第１座標変換式と第２座標変換式とが等しいことを定義する多元多次連立方程式を生成する連立方程式生成部と、前記多元多次連立方程式の解を求める連立方程式求解部と、前記連立方程式求解部が生成した解を用いて、移動指令に用いる移動パルスを生成する移動パルス生成部と、を備える、請求項１〜１１のいずれか１項に記載の数値制御装置。
【請求項１３】
前記連立方程式生成部は、特定のノードの座標値を直接指定することで連立式を減らす、請求項１２に記載の数値制御装置。
【請求項１４】
数値制御装置の制御対象の機械構成を表現する、構成要素をノードとしたグラフ形式のデータ構造であって、前記機械構成のグラフに対し、制御点及び座標系がノードとして挿入され、それぞれに識別子が割り当てられたデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象の機械構成をグラフ形式で表現し、保持する数値制御装置、及び、そのグラフ形式のデータ構造に関する。
【背景技術】
【０００２】
通常、工作機械やロボットを制御する制御装置においては、工作機械やロボットに含まれる制御対象となる制御点に対して、プログラム上で指令値を用いることにより制御する。例えば、工作機械においては、通常、工具根元位置が制御点とされている。一方で、工具長補正機能を用いたり、工具先端点制御を実施したりする場合には、工具先端位置が制御点とされる。そして、これらの制御点が、指令値により指定した座標値に移動するように、制御が実行される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１９５９１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
冗長な自由度を持つ機械構成において、干渉回避等の目的で、工具先端や工具根元の位置及び姿勢を保持したまま、あるいは、保持せずに、工具先端や工具根元以外の点を制御点として移動させたい場合がある。例えば、図１Ａ及び図１Ｂに示すように、ノード５０１、ノード５０２、ノード５０３、ノード５０４が、この順序で連結することにより、回転軸で駆動する制御対象の機械５００を構成していると共に、機械５００の端点以外のノード、例えばノード５０３を制御点としたい場合がある。
【０００５】
しかし、現在は、ノード５０３のような、工具先端や工具根元以外のノードを制御点とすることはできない。このような場合、各回転軸に対して直接指令することとなるが、所望の制御点が所望の位置に来るような各軸指令値を求めるのは困難である。具体的には、図１Ａのように、工具先端のＸ座標及びＺ座標を共に保持して干渉を回避しようとしても、ノード５０３は所望の動作方向に移動することは困難である。また、図１Ｂのように、工具先端のＸ座標又はＺ座標のいずれかを保持して干渉を回避しようとした場合、指令値の算出は困難である。
【０００６】
また、工作機械やロボットにおいては、制御点位置をプログラム上で指令するが、指令値の座標系を指定することにより、数値制御装置は指定された制御点を指定された座標系上の所望の指令位置へと移動させることができる。例えば３軸加工においては、機械原点上の機械座標系やテーブル上のワーク座標系を座標系として指定することが多い。また、同時４軸加工や同時５軸加工においては、図２Ａに示すような、回転軸に連れ回るワーク座標系を座標系として指定することが多い。
【０００７】
機械上では、これら以外にも座標系が考えられる。例えば、図２Ａに示す座標系とは異なり、図２Ｂに示すような「Ｂ軸には連れ回るがＣ軸には連れ回らず、Ｂ軸とＣ軸とのオフセットは共に加味する座標系（Ｃ軸の回転のみ無視する座標系）」が考えられる。この座標系は、とりわけ、Ｃ軸を一定速度で回転させながら行う場合の旋削加工においては、指令が作りやすく理解が容易であるため、有用である。
【０００８】
しかし、一般的に、数値制御装置には、ワークを連れ回す一連の軸系列上において、その末端には座標系を設定できるが、その途中には座標系を設定できない。途中に座標系を設定したい場合、その途中が末端となるように機械構成を設定し直す必要があるため、手間が掛かる。
【０００９】
この点、特許文献１は、テーブル回転軸を有する工作機械において、工具長変更が容易な数値制御装置に係る技術を開示している。しかし、特許文献１の技術は、テーブル上の座標系を定義しているものの、テーブル下の座標系を定義するものではなかった。また、制御対象も、工具先端点に限定されていた。
【００１０】
そこで、本発明は、機械構成上の様々な位置を自由かつ容易に制御点として指定できると共に、機械構成上の様々な箇所の座標系を容易に設定できる数値制御装置、及び、その制御対象の機械構成を表現したグラフ形式のデータ構造を提供することを目的とする。
【課題を解決するための手段】
【００１１】
（１）  本発明に係る数値制御装置（例えば、後述の数値制御装置１００）は、制御対象の機械構成を、構成要素をノードとするグラフ形式で表現し、保持する数値制御装置であって、前記機械構成のグラフに対し、識別子により制御点及び座標系を１組以上指定する制御点座標系指定部（例えば、後述の制御点座標系指定部１１４）と、前記制御点座標系指定部により指定された前記制御点と前記座標系により、プログラム中で指令された１つ以上の指令値が、どの制御点に対するどの座標系上の座標値に対応するか判断する指令値判断部（例えば、後述の指令値判断部１１５）と、前記制御点の前記座標値が前記指令値となるように、前記制御点の移動を指令する移動指令部（例えば、後述の移動指令部１１６）と、を備える。
【００１２】
（２）  （１）に記載の数値制御装置において、前記機械構成のグラフに対し、前記制御点及び前記座標系を挿入する制御点座標系挿入部（例えば、後述の制御点座標系挿入部１１２）と、前記挿入された前記制御点及び前記座標系に前記識別子を割り当てる識別子割り当て部（例えば、後述の識別子割り当て部１１３）とを備えてもよい。
【００１３】
（３）  （２）に記載の数値制御装置において、前記制御点座標系挿入部（例えば、後述の制御点座標系挿入部１１２）は、前記機械構成のグラフの各ノードに対し、制御点及び座標系をノードとして挿入してもよい。
【００１４】
（４）  （２）に記載の数値制御装置において、前記制御点座標系挿入部（例えば、後述の制御点座標系挿入部１１２）は、前記機械構成のグラフの各ノードに対し、制御点及び座標系を情報として持たせてもよい。
【００１５】
（５）  （１）〜（４）に記載の数値制御装置において、前記機械構成のグラフは、複数の軸をまとめて１つにしたユニットを構成要素として含んでもよい。
【００１６】
（６）  （５）に記載の数値制御装置において、ユーザが記述したスクリプトを解析することにより、前記ユニットを定義し、定義された前記ユニットを前記機械構成のグラフの構成要素として含んでもよい。
【００１７】
（７）  （１）〜（６）に記載の数値制御装置において、前記座標系は、特定のノードの影響を除くことが可能であってもよい。
【００１８】
（８）  （１）〜（７）に記載の数値制御装置において、前記制御点は、特定のノードの影響を除くことが可能であってもよい。
【００１９】
（９）  （１）〜（８）に記載の数値制御装置において、前記指令値として、前記機械構成のグラフに含まれる軸名称とは無関係に、意味毎に予め定義された識別子に対して割り当てた、任意のアドレスを用いてもよい。
【００２０】
（１０）  （９）に記載の数値制御装置において、前記意味は、前記制御点の位置、前記制御点の姿勢、及び、前記姿勢を決定する回転軸の角度位置を含んでもよい。
【００２１】
（１１）  （１）〜（１０）に記載の数値制御装置において、前記指令値として、特定のノードの座標値を直接指定できてもよい。
【００２２】
（１２）  （１）〜（１１）に記載の数値制御装置において、前記移動指令部（例えば、後述の移動指令部１１６）は、指定された前記座標系と前記機械構成のグラフとから、前記指令値の第１座標変換式を求め、指定された前記制御点と前記機械構成のグラフとから、前記制御点の第２座標変換式を求め、第１座標変換式と第２座標変換式とが等しいことを定義する多元多次連立方程式を生成する連立方程式生成部（例えば、後述の連立方程式生成部１６１）と、前記多元多次連立方程式の解を求める連立方程式求解部（例えば、後述の連立方程式求解部１６２）と、前記連立方程式求解部が生成した解を用いて、前記移動指令に用いる移動パルスを生成する移動パルス生成部（例えば、後述の移動パルス生成部１６３）と、を備えてもよい。
【００２３】
（１３）  （１２）に記載の数値制御装置において、前記連立方程式生成部（例えば、後述の連立方程式生成部１６１）は、特定のノードの座標値を直接指定することで連立式を減らしてもよい。
【００２４】
（１４）  本発明に係るデータ構造は、数値制御装置（例えば、後述の数値制御装置１００）の制御対象の機械構成を表現する、構成要素をノードとしたグラフ形式のデータ構造であって、前記機械構成のグラフに対し、制御点及び座標系がノードとして挿入され、それぞれに識別子が割り当てられたデータ構造である。
【発明の効果】
【００２５】
本発明によれば、機械構成上の様々な位置を自由かつ容易に制御点として指定できると共に、機械構成上の様々な箇所の座標系を容易に設定できる。
【図面の簡単な説明】
【００２６】
【図１Ａ】従来の機械構成における所望の制御点の所望の動作を示す図である。
【図１Ｂ】従来の機械構成における所望の制御点の所望の動作を示す図である。
【図２Ａ】旋削加工等に用いる通常のテーブルの軸の例を示す図である。
【図２Ｂ】旋削加工等に用いる通常のテーブルの軸の例を示す図である。
【図３】本発明の実施形態に係る数値制御装置の構成を示す図である。
【図４】本発明の実施形態に係る数値制御装置のＣＰＵの機能を示すブロック図である。
【図５】本発明の実施形態に係る移動制御部のＣＰＵの機能を示すブロック図である。
【図６】本発明の実施形態に係る機械構成木を生成する対象となる機械の例を示す図である。
【図７】本発明の実施形態に係る機械構成木の生成方法を示す図である。
【図８】本発明の実施形態に係る機械構成木の生成方法を示す図である。
【図９】本発明の実施形態において生成された機械構成木の生成動作を示す図である。
【図１０Ａ】本発明の実施形態に係る機械構成の親子関係の例を示す図である。
【図１０Ｂ】本発明の実施形態に係る機械構成の親子関係の例を示す図である。
【図１１Ａ】本発明の実施形態に係る機械構成に含まれるユニットの例を示す図である。
【図１１Ｂ】本発明の実施形態に係る機械構成に含まれるユニットの例を示す図である。
【図１１Ｃ】本発明の実施形態に係る機械構成に含まれるユニットの例を示す図である。
【図１２】本発明の実施形態に係る機械構成の例を示す図である。
【図１３Ａ】本発明の実施形態に係る機械構成に含まれるユニットの定義方法を示す図である。
【図１３Ｂ】本発明の実施形態に係る機械構成に含まれるユニットの例を示す図である。
【図１４Ａ】本発明の実施形態におけるＧＵＩ（グラフィカル・ユーザ・インタフェース）の例を示す図である。
【図１４Ｂ】本発明の実施形態におけるＧＵＩ（グラフィカル・ユーザ・インタフェース）の例を示す図である。
【図１４Ｃ】本発明の実施形態におけるＧＵＩ（グラフィカル・ユーザ・インタフェース）の例を示す図である。
【図１４Ｄ】本発明の実施形態におけるＧＵＩ（グラフィカル・ユーザ・インタフェース）の例を示す図である。
【図１５】通常のテーブルに設置されたワークに対する指令の例を示す図である。
【図１６】本発明の実施形態に係る数値制御装置による指令の例を示す図である。
【図１７Ａ】機械構成木の生成対象となる機械の例を示す図である。
【図１７Ｂ】機械構成木の生成対象となる機械に対応する機械構成木の例を示す図である。
【図１８】本発明の実施形態において、機械の各ノードに座標系及び制御点が挿入された例を示す図である。
【図１９】本発明の実施形態における、座標系及び制御点が挿入された機械構成木の例を示す図である。
【図２０Ａ】本発明の実施形態において、各ノードにオフセット及び姿勢マトリクスが挿入される機械の例を示す図である。
【図２０Ｂ】本発明の実施形態において、機械の各ノードにオフセット及び姿勢マトリクスが挿入された例を示す図である。
【図２１】本発明の実施形態において、機械構成木に制御点を挿入する生成動作を示す図である。
【図２２】本発明の実施形態における、座標系及び制御点が挿入された機械構成木の例を示す図である。
【図２３】本発明の実施形態における、機械構成木の例を示す図である。
【図２４】本発明の実施形態における、機械座標系の機械原点に対する制御点位置ベクトル及び制御点姿勢マトリクスを示す図である。
【図２５】本発明の実施形態における、機械座標系の機械原点に対する指令値位置ベクトル及び指令値姿勢マトリクスを示す図である。
【図２６】本発明の実施形態における、プログラムの例を示す図である。
【図２７】本発明の実施形態における、プログラムの例を示す図である。
【図２８】本発明の実施形態における、プログラムの例を示す図である。
【図２９】本発明の実施形態において、移動パルスを生成する際に用いる情報の例を示す図である。
【図３０】本発明の実施形態における、プログラムの例を示す図である。
【図３１】本発明の実施形態における、プログラムの例を示す図である。
【図３２】本発明の実施形態において、移動パルスを生成する際に用いる情報の例を示す図である。
【図３３】本発明の実施形態において、移動パルスを生成する際に用いる情報の例を示す図である。
【図３４】本発明の実施形態において、移動パルスを生成する際に用いる情報の例を示す図である。
【図３５】本発明の実施形態における、プログラムの例を示す図である。
【発明を実施するための形態】
【００２７】
以下、本発明の実施形態について、図３〜図３３を参照しながら詳述する。まず、本発明の実施形態に係る数値制御装置の構成について説明する。
【００２８】
〔１．発明の構成〕
図３には、本発明の実施形態に係る数値制御装置１００の構成例が示されている。数値制御装置１００は、主として、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、ＣＭＯＳ１４と、インタフェース１５、１８、１９と、ＰＭＣ（プログラマブル・マシン・コントローラ）１６と、Ｉ／Ｏユニット１７と、軸制御回路３０〜３４と、サーボアンプ４０〜４４と、スピンドル制御回路６０と、スピンドルアンプ６１とを備える。
【００２９】
ＣＰＵ１１は数値制御装置１００を全体的に制御するプロセッサである。ＣＰＵ１１は、ＲＯＭ１２に格納されたシステムプログラムを、バス２０を介して読み出し、該システムプログラムに従って数値制御装置１００の全体を制御する。
【００３０】
ＲＡＭ１３には、一時的な計算データや表示データ、及び表示器／ＭＤＩユニット７０を介してオペレータが入力した各種データが格納される。
【００３１】
ＣＭＯＳメモリ１４は、図示しないバッテリでバックアップされ、数値制御装置１００の電源がオフされても記憶状態が保持される不揮発性メモリとして構成される。ＣＭＯＳメモリ１４中には、インタフェース１５を介して読み込まれた加工プログラムや、表示器／ＭＤＩユニット７０を介して入力された加工プログラム等が記憶される。
【００３２】
ＲＯＭ１２には、加工プログラムの作成及び編集のために必要とされる編集モードの処理や自動運転のための処理を実施するための各種システムプログラムが、予め書き込まれている。
【００３３】
本発明を実行する加工プログラム等の各種加工プログラムは、インタフェース１５や表示器／ＭＤＩユニット７０を介して入力し、ＣＭＯＳメモリ１４に格納することができる。
【００３４】
インタフェース１５は、数値制御装置１００とアダプタ等の外部機器７２との接続を可能とするものである。外部機器７２側からは加工プログラムや各種パラメータ等が読み込まれる。また、数値制御装置１００内で編集した加工プログラムは、外部機器７２を介して外部記憶手段に記憶させることができる。
【００３５】
ＰＭＣ（プログラマブル・マシン・コントローラ）１６は、数値制御装置１００に内蔵されたシーケンスプログラムで、工作機械の補助装置（例えば、工具交換用のロボットハンドといったアクチュエータ）にＩ／Ｏユニット１７を介して信号を出力して制御する。また、工作機械の本体に配備された操作盤の各種スイッチ等の信号を受け、必要な信号処理をした後、信号をＣＰＵ１１に渡す。
【００３６】
表示器／ＭＤＩユニット７０は、ディスプレイやキーボード等を備えた手動データ入力装置である。インタフェース１８は、表示器／ＭＤＩユニット７０のキーボードからの指令やデータを受けて、これらをＣＰＵ１１に渡す。インタフェース１９は、手動パルス発生器等を備えた操作盤７１に接続されている。
【００３７】
各軸の軸制御回路３０〜３４は、ＣＰＵ１１からの各軸の移動指令量を受けて、各軸の指令をサーボアンプ４０〜４４に出力する。
【００３８】
サーボアンプ４０〜４４は、この指令を受けて、各軸のサーボモータ５０〜５４を駆動する。各軸のサーボモータ５０〜５４は、位置・速度検出器を内蔵し、この位置・速度検出器からの位置・速度フィードバック信号を軸制御回路３０〜３４にフィードバックし、位置・速度のフィードバック制御を行う。なお、ブロック図では、位置・速度のフィードバックについては省略している。
【００３９】
スピンドル制御回路６０は、工作機械への主軸回転指令を受け、スピンドルアンプ６１にスピンドル速度信号を出力する。スピンドルアンプ６１は、このスピンドル速度信号を受けて、工作機械のスピンドルモータ６２を指令された回転速度で回転させ、工具を駆動する。
【００４０】
スピンドルモータ６２には、歯車あるいはベルト等でパルスエンコーダ６３が結合されている。パルスエンコーダ６３は、主軸の回転に同期して帰還パルスを出力する。その帰還パルスは、バス２０を経由してＣＰＵ１１によって読み取られる。
【００４１】
なお、図３に示す数値制御装置１００の構成例では、軸制御回路３０〜３４の５つの軸制御回路と、サーボモータ５０〜５４の５つのサーボモータが示されている。しかし、本発明は、これには限定されず、任意の個数の軸制御回路及びサーボモータを備えることが可能である。
【００４２】
図４は、上記のＣＰＵ１１が、ＲＯＭ１２に格納されたシステムプログラム及びアプリケーションプログラムを、バス２０を介して読み出し、該システムプログラム及びアプリケーションプログラムに従って実現する機能を示す機能ブロック図である。ＣＰＵ１１は、グラフ生成部１１１と、制御点座標系挿入部１１２と、識別子割り当て部１１３と、制御点座標系指定部１１４と、指令値判断部１１５と、移動指令部１１６とを備える。
【００４３】
グラフ生成部１１１は、制御対象の機械構成をグラフ形式で生成する。その詳細な動作については、以下の「２．機械構成木の生成」で詳述する。
【００４４】
制御点座標系挿入部１１２は、機械構成のグラフに対し、制御点及び座標系を挿入する。
識別子割り当て部１１３は、制御点及び座標系のそれぞれに識別子を割り当てる。
制御点座標系挿入部１１２及び識別子割り当て部１１３の詳細な動作については、以下の「３．指令アドレスの抽象化」〜「８．機械構成木からの座標系の導出」で詳述する。
【００４５】
制御点座標系指定部１１４は、上記の識別子により、上記の制御点及び座標系を指定する。具体的には、制御点座標系指定部１１４は、例えば、プログラム中の指令、パラメータ設定、画面操作、及び数値制御装置１００への入力手段からの入力値のいずれかにより、上記の制御点及び座標系を指定する。
指令値判断部１１５は、プログラム中の指令値が、どの制御点に対するどの座標系上の座標値か判断する。
制御点座標系指定部１１４及び指令値判断部１１５の詳細な動作については、以下の「３．指令アドレスの抽象化」〜「８．機械構成木からの座標系の導出」で詳述する。
【００４６】
移動指令部１１６は、制御点の座標値がプログラム中の指令値となるように、制御点の移動を指令する。移動指令部１１６の詳細な動作については、以下の「９．移動パルス生成方法」で詳述する。また、移動指令部１１６の構成例を、図５に示す。
【００４７】
図５に示すように、移動指令部１１６は、連立方程式生成部１６１と、連立方程式求解部１６２と、移動パルス生成部１６３とを備える。
【００４８】
連立方程式生成部１６１は、以下の「９．移動パルス生成方法」に記載の方法により、指定された座標系と機械構成のグラフとから、指令値の第１座標変換式を求め、また、指定された制御点と機械構成のグラフとから、制御点の第２座標変換式を求め、第１座標変換式と第２座標変換式とが等しいことを定義する多元多次連立方程式を生成する。
【００４９】
連立方程式求解部１６２は、上記の多元多次連立方程式の解を求める。
移動パルス生成部１６３は、連立方程式求解部１６２が生成した解を用いて、移動指令に用いる移動パルスを生成する。
【００５０】
〔２．機械構成木の生成〕
本発明の実施形態に係る数値制御装置１００は、最初に、機械構成を表すグラフを生成する。グラフの一例として機械構成木を生成する生成方法について、図６〜図９を参照しながら詳述する。
【００５１】
例として、図６に示す機械の構成を表現する機械構成木の生成方法について説明する。図６の機械においては、Ｚ軸に対して垂直にＸ軸が設定され、Ｘ軸には工具１が設置され、Ｚ軸には工具２が設置されているとする。一方で、Ｙ軸上にＢ軸が設定され、Ｂ軸上にＣ軸が設定され、Ｃ軸にはワーク１とワーク２が設置されているとする。この機械構成を機械構成木として表現する方法は、以下の通りである。
【００５２】
まず、図７に示すように、原点２０１とノード２０２Ａ〜２０２Ｇのみを配置する。この段階では、原点２０１とノード２０２、及びノード２０２間でのつながりは持たず、原点及びノードの各々の名称も設定されていない。
【００５３】
次に、各軸の軸名称（軸型）、各工具の名称、各ワークの名称、各原点の名称、各軸の物理軸番号（軸型）を設定する。次に、各軸の親ノード（軸型）、各工具の親ノード、各ワークの親ノードを設定する。最後に、各軸の交叉オフセット（軸型）、各工具の交叉オフセット、各ワークの交叉オフセットを設定する。その結果、図８に示す機械構成木が生成される。
【００５４】
なお、機械構成木の各ノードは、上記の各情報に限られず、例えば、識別子（名称）、自身の親ノードの識別子、自身を親とする全ての子ノードの識別子、親ノードに対する相対オフセット（交叉オフセット）、親ノードに対する相対座標値、親ノードに対する相対移動方向（単位ベクトル）、ノード種別（直線軸／回転軸／ユニット（後述）／制御点／座標系／原点等）、物理軸番号、直交座標系と物理座標系の変換式に係る情報を有してもよく、あるいは、有さなくてもよい。
【００５５】
また、機械構成木の各ノードは、ノード自身が制御点あるいは座標系であるために必要な情報を有してもよく、有さなくてもよい。制御点あるいは座標系であるために必要な情報としては、詳しくは後述するが、例えばオフセット、姿勢マトリクス、移動やオフセットを加味するか/しないかという情報であり、これらを含んでもよく、含まなくてもよい。このとき、ノード自身が制御点あるいは座標系であるために必要な情報を有するか有さないかによって、後述の制御点座標系指定部の実施形態が異なる。また、必要な情報を有しない場合は、後述の制御点座標系挿入部及び制御点座標系識別子割当て部により必要な情報をノードに付与することもできる。
【００５６】
このように各ノードに値を設定していくことにより、数値制御装置１００内に機械構成木状のデータ構造を有するデータを生成する。更に、別の機械（又はロボット）を追加する場合も、原点を追加し、更にノードを追加することができる。
【００５７】
上記の機械構成木生成方法、とりわけ各ノードへの各値の設定方法を一般化したフローチャートを図９に示す。
【００５８】
ステップＳ１１において、グラフ生成部１１１は、ノードに対して設定するパラメータの値を受け取る。
ステップＳ１２において、設定されたパラメータの項目が「自身の親ノード」の場合（Ｓ１２：ＹＥＳ）には、処理はステップＳ１３に移行する。「自身の親ノード」ではない場合（Ｓ１２：ＮＯ）には、処理はステップＳ１７に移行する。
【００５９】
ステップＳ１３において、パラメータが設定されるノードに、既に親ノードが設定されている場合（Ｓ１３：ＹＥＳ）には、処理はステップＳ１４に移行する。親ノードが設定されていない場合（Ｓ１３：ＮＯ）には、処理はステップＳ１５に移行する。
【００６０】
ステップＳ１４において、グラフ生成部１１１は、パラメータが設定されるノードの、現在の親ノードが持つ「子ノード」の項目から、自身の識別子を削除し、機械構成木を更新する。
【００６１】
ステップＳ１５において、グラフ生成部１１１は、パラメータを設定するノードの該当項目に値を設定する。
【００６２】
ステップＳ１６において、グラフ生成部１１１は、親ノードに対し、「子ノード」の項目に自身の識別子を追加し、機械構成木を更新した後、フローを終了する。
【００６３】
ステップＳ１７において、グラフ生成部１１１は、パラメータを設定するノードの該当項目に値を設定した後、フローを終了する。
【００６４】
上記の機械構成木状のデータ構造を有するデータの生成方法を用いることにより、機械の構成要素同士の親子関係を設定することが可能である。
ここで親子関係とは、例えば図１０Ａのように、２つの回転軸ノード１０４、１０５があったとき、一方のノード１０４の座標値の変化が、他方のノード１０５の幾何的状態（典型的には、位置・姿勢）に対して一方的に影響を及ぼすような関係のことである。この場合ノード１０４、１０５は親子関係にあると呼び、ノード１０４を親、ノード１０５を子と呼ぶ。
しかし、例えば図１０Ｂに示すように、２つの直線軸ノード１０２、１０３と４つのフリージョイント１０１により構成された機械構成においては、ノード１０２、１０３の一方の座標値（長さ）が変わることにより、他方の幾何的状態だけでなく、自身の幾何的状態も変わるような、相互に影響を及ぼす機構が存在する。このような場合は、互いに親であり子、すなわち親子関係が双方向であるとみなすことができる。
【００６５】
このように、あるノードの変化が他のノードに互いに影響し合うような機構については、利便性の観点から、１つのユニットとして捉え、このユニットを機械構成木に挿入することにより全体の機械構成木を生成する。ユニットは、図１１Ａのように二つの接続点１１０及び接続点１２０を持っており、ユニットが図１１Ｂのように機械構成木に挿入された場合、図１１Ｃのように、親ノードは接続点１２０に接続され、また、子ノードは接続点１１０に対して接続される。また、ユニットは、接続点１２０から接続点１１０への変換マトリクスを持っている。この変換マトリクスは、ユニットに含まれる各ノードの座標値によって表される。例えば図１２のような機械構成の場合、接続点１２０における位置・姿勢を表す同次マトリクスをＭＡとし、接続点１１０における位置・姿勢を表す同次マトリクスをＭＢとすると、それらのマトリクス間の変換式はユニットに含まれる各直線軸ノードの座標値ｘ１、ｘ２を用いて以下のように表される。
【数１】
2019057262.tif 000003
【００６６】
この機械構成を表すユニットは上記の［数１］の数式中のＴのような同次変換マトリクスを持つ。同次マトリクスとは、以下の［数２］の数式のように位置・姿勢をまとめて表現できる４×４マトリクスのことである。
【数２】
2019057262.tif 000004
【００６７】
また、親子関係が相互でない場合であっても、計算処理や設定を簡単にするために、ある複数のノードを予め１つにまとめたユニットを定義し、機械構成木中に構成してもよい。
【００６８】
また、このようなユニットは、予め数値制御装置に定義されていてもよいし、ユーザが独自に記述したスクリプトを数値制御装置が読み込んでもよい。
図１３Ａは、ユーザが独自に記述したスクリプトを数値制御装置が読み込む際のフローの例を示す。
ステップＳ２１において、数値制御装置１００が、ユーザによって定義されたスクリプトを読み込む。
ステップＳ２２において、数値制御装置１００が、読み込んだスクリプトの内容を解析し、ユニットを新たに定義する。
ステップＳ２３において、数値制御装置１００が、新たに定義したユニットを、機械構成グラフに挿入可能な構成要素として、新たに登録する。
その結果、ステップＳ２４において、ユーザは登録された独自ユニット（図１３Ａの例においては、ＭｙＵｎｉｔ）を機械構成木に挿入することが可能となる。
【００６９】
すなわち、ユーザが独自に記述したスクリプトを数値制御装置が読み込み、その内容を解析することで、ユニットを新たに定義し、これを用いて、機械構成木中に構成することができてもよい。
図１３Ｂは、図１３Ａに記載のスクリプトにより、新たに定義された独自ユニットＭｙＵｎｉｔが機械構成木に挿入された例を示す。これにより、ユーザの所望の形式のユニットが数値制御装置に予め定義されていなくても、ユーザが独自に定義を追加できるため、利便性が向上する。
【００７０】
上記のように、本実施形態においては、機械構成のグラフは、複数の軸をまとめて１つにしたユニットを構成要素として含むことができる。
【００７１】
なお、上記の機械構成木は、図１４Ａのように表示器７０にグラフィカルに表示すること、及び、表示器７０上でグラフィックユーザインタフェース（ＧＵＩ）を用いて簡単に設定することが可能である。例えば、図１４Ｂのようにドラッグアンドドロップ操作でノードを配置でき、図１４Ｃのようにドラッグ操作でノード同士の親子関係を設定でき、図１４Ｄのようにマウスクリック操作で設定用メニューを開いてノードの属性を設定することができたりする。
【００７２】
工作機械は多様な機械構成を持つため構成要素同士の親子関係もまた多様であるが、通常、数値制御装置においては、構成要素同士の親子関係に関する情報を持っていないため、そのような情報が必要な制御はできない。しかし、数値制御装置は、上記の機械構成木、あるいは、機械構成木状のデータ構造を有するデータの生成方法を用いることにより、多様な機械構成を持つ工作機械やロボットを制御できるようになり、利便性が向上する。また、ユーザは、グラフィックユーザインタフェース（ＧＵＩ）を用いることにより、直感的に機械構成木を数値制御装置に設定することが可能となる。
【００７３】
〔３．指令アドレスの抽象化〕
上記のように、機械構成木を生成する際には、個々の軸に軸名称を付ける。通常、数値制御装置で使用される加工プログラムにおいては、軸名称と移動先の座標値又は移動量を意味する数値との組み合わせを用いて、移動を指令する。
【００７４】
しかし、軸名称を任意に設定できても、機械の軸構成が異なる場合には、個々の軸名称にて指令を行う限り、プログラムは異ならざるをえない。例えば、図１５に示すように、ワーク２１２に対して工具２１３を用いて加工を行う場合、（ａ）のようにワークが回転テーブル２１４に載っている場合と、（ｂ）のように直動テーブル２１１上に載っている場合とでは、ワーク２１２に対する工具２１３の所望の相対加工経路２１５が同じであったとしても、それを実現する指令は、（ａ）の場合には２１６であり、（ｂ）の場合には２１７であるように、プログラムが異なってしまう。具体的には、２１６の場合には、回転テーブルの回転軸Ｃを１８０度移動させることで円弧経路を実現するが、２１７の場合には、直線軸ＸＹにより円弧補間指令を行うことで円弧経路を実現するといったように、プログラムが異なる。
【００７５】
また、従来はＧコードモーダル毎に指令可能なアドレスは決まっており、モーダルが変わった場合には、それに合わせて指令アドレスを変える必要があった。例えば、工具先端点制御において工具の姿勢を表すには、タイプ１モード中であれば各回転軸アドレス（例えばアドレスＡ，Ｂ，Ｃ）で指令し、タイプ２モード中であれば工具姿勢ベクトル（アドレスＩ，Ｊ，Ｋ）で指令するといったように、それぞれのモード中に指令可能なアドレスが決まっている。そのため、例えばタイプ１モード中にアドレスＩ，Ｊ，Ｋで指令をしたり、逆にタイプ２モード中に回転軸アドレスＡ，Ｂ，Ｃで指令をしたりすることはできなかった。
【００７６】
そこで、本発明においては、軸名称ではなく、ある座標系における、ある制御点の位置や姿勢等を定義する抽象的アドレスを用いる。具体的には、まず、アドレスを定義するために図１６の２１８のように指令を行う。２１８では、機械構成中の実際の軸名称とは無関係に予め定義された識別子（第一直線軸位置を表す識別子Ｌ１や第二直線軸位置を表す識別子Ｌ２）に対して好適なアドレスα、βを代入することにより、直交座標系の第一直線軸位置としてアドレスαを、直交座標系の第二直線軸位置としてアドレスβを定義する。同様にして、実際の軸名称とは無関係に予め定義された工具姿勢ベクトルを表す識別子Ｖ１，Ｖ２，Ｖ３に対して好適なアドレスを代入して、工具姿勢ベクトルを表す各アドレスを定義してもよい。あるいは、実際の軸名称とは無関係に予め定義された第一・第二回転軸位置を表す識別子Ｒ１，Ｒ２に対して好適なアドレスを代入して、各回転軸位置を表すアドレスを定義してもよい。プログラム中でこれらが定義されない場合は、数値制御装置１００にパラメータで設定されたデフォルトのアドレスが第一直線軸位置・第二直線軸位置等各々の抽象的意味を表すアドレスとして定義される。そして、以降は図１６の２１９に示すように、これらα、βをプログラムで用いることにより、どのような機械構成でも、また、実際の軸名称が異なる機械同士でも、共通の形式でプログラムを記述できるようになる。また、同じ制御点に対する指令でも、図１６の２２０のようにアドレスを変えるだけで、例えばあるブロックでは工具方向を決めるためにベクトルで指令したり、あるブロックでは回転軸角度で指令したりと、その都度プログラム作成者にとって好適な様々な指令方法を使うことが可能になる。
【００７７】
上記のように、本実施形態においては、指令値として、機械構成のグラフに含まれる軸名称とは無関係に、意味毎に予め定義された識別子に対して割り当てた、任意のアドレスを用いることができる。なお、上記の「意味」は、制御点の位置、制御点の姿勢、及び、姿勢を決定する回転軸の角度位置を含む。
【００７８】
〔４．制御点と座標値の自動挿入〕
「２．機械構成木の生成」にて述べたように、機械構成グラフの各ノードは、自身が制御点あるいは座標系となるために必要な情報を持つことができるが、持たないこともできる。ノードが制御点あるいは座標系となるために必要な情報を持たない場合には、機械構成上の様々な位置を、制御点として指定すると共に、機械構成上の様々な箇所の座標系を設定するため、上記の「２．機械構成木の生成」で生成された機械構成木を用いて、以下の方法を実施する。
【００７９】
例えば、図１７Ａに示すロータリインデックスマシン３００においては、Ｚ１軸に対して垂直にＸ１軸が設定され、Ｘ１軸に工具１が設置されている。また、Ｚ２軸に対して垂直にＸ２軸が設定され、Ｘ２軸上に工具２が設置されている。更に、テーブルにおいては、Ｃ軸上にＣ１軸とＣ２軸が並列に設定され、Ｃ１軸とＣ２軸の各々にワーク１とワーク２が設置されているとする。この機械構成を機械構成木で表わすと、図１７Ｂに示す機械構成木となる。
【００８０】
各ワークから機械原点に連なる一連のノードを例に取ると、図１８に示すように、機械原点、Ｃ軸、Ｃ１軸、Ｃ２軸、ワーク１、ワーク２の各々に座標系と制御点を自動挿入する。これを、テーブルに対してのみならず、各工具から機械原点に連なる一連のノード、すなわちＸ１軸、Ｘ２軸、Ｚ１軸、Ｚ２軸、工具１、工具２のすべてに対して実施する。その結果、図１９に示すように、機械構成木を構成するすべてのノードに対して、各々に対応する制御点と座標系が自動挿入される。通常、加工を行う場合にはワークに座標系、工具を制御点として指定する。これにより、例えば、ワーク自身を所定の位置へ移動させるために、ワークに制御点を指定したい場合や、ある工具で別の工具を研磨するために、工具自身に座標系を設定したい場合といった様々な場合に対応することも可能となる。
【００８１】
また、図２０Ａに示すように、各制御点及び座標系は、オフセットを有する。そのため、ノード中心から離れた点を制御点や座標系原点にすることも可能である。更に、各制御点及び座標系は姿勢マトリクスを持つ。この姿勢マトリクスは、制御点の姿勢マトリクスである場合、制御点の姿勢（向き、傾き）を表し、座標系の姿勢マトリクスの場合、座標系の姿勢を表わす。図２０Ｂに示す機械構成木においては、オフセット及び姿勢マトリクスは、各々が対応するノードに紐づく形で表現される。更に、各制御点及び座標系は、機械構成木のルートまでの経路上に存在するノードの「移動」及び「交叉オフセット」それぞれを加味するか／しないかの情報を持っており、それらを設定できる。
【００８２】
上記の制御点の自動挿入方法を一般化したフローチャートを図２１に示す。このフローチャートは、詳細には、チャートＡとチャートＢとを含み、後述のように、チャートＡの途中でチャートＢが実行されるという構成となっている。
【００８３】
まず、チャートＡについて説明する。
ステップＳ３１において、グラフ生成部１１１は、機械構成木を設定する。
ステップＳ３２において、チャートＢを実行し、チャートＡのフローを終了する。
【００８４】
次に、チャートＢについて説明する。
チャートＢのステップＳ４１において、ノードは制御点・座標系を挿入済である場合（Ｓ４１：ＹＥＳ）には、フローを終了する。ノードに制御点・座標系を挿入済でない場合（Ｓ４１：ＮＯ）には、処理はステップＳ４２に移行する。
【００８５】
ステップＳ４２において、制御点座標系挿入部１１２は、ノードに制御点・座標系を挿入し、変数ｎを１つスタックする。また、ｎ＝１とする。
【００８６】
ステップＳ４３において、ノードにｎ番目の子ノードが存在する場合（Ｓ４３：ＹＥＳ）には、処理はステップＳ４４に移行する。ノードにｎ番目の子ノードが存在しない場合（Ｓ４３：ＮＯ）には、処理はステップＳ４６に移行する。
【００８７】
ステップＳ４４において、ｎ番目の子ノードについて、チャートＢ自身を再帰的に実行する。
【００８８】
ステップＳ４５において、ｎを１だけインクリメントする。すなわちｎ＝ｎ＋１とし、処理はステップＳ４３に戻る。
【００８９】
ステップＳ４６において、変数ｎを１つポップし、チャートＢのフローを終了する。
【００９０】
上記の方法により、制御点座標系挿入部１１２は、機械構成のグラフの各ノードに対し、制御点及び座標系をノードとして挿入する。なお、上記では、制御点及び座標系をノードとして追加する場合の実施例を示したが、図２２に示すように、制御点座標系挿入部１１２は、機械構成のグラフの各ノードに対し、制御点及び座標系を情報として持たせる実施形態も同様に可能である。また、「２．機械構成木の生成」でも述べたように、グラフ生成部が図２３に示すような機械構成木（各ノードが制御点あるいは座標系であるために必要な情報を持っている機械構成木）を生成することも可能である。この場合、機械構成木は既に制御点あるいは座標系としての情報を持っているため、制御点座標系挿入部は必ずしも必要ではない。
【００９１】
〔５．制御点位置及び制御点姿勢の計算方法〕
図２４に示すように、機械構成木のルートに対する、機械構成木中のある制御点の位置・姿勢を表す同次マトリクスをＭＣとした場合、これは以下のように求められる。
【００９２】
まず、機械構成木中のあるノードからあるノードまでの間に存在するノードを並べたものを経路と定義する。例えば、図１９においてノードＺ１から制御点[工具１]までの経路ｐ１は以下のように表される。
【数３】
2019057262.tif 000005
【００９３】
さて、機械構成木中のルートからある制御点までの経路ｐ２が以下のようであるとする。
【数４】
2019057262.tif 000006
【００９４】
上記経路中の始点ｘ１がルートである。この経路によって表される制御点の、ルートに対する位置姿勢の同次マトリクスＭＣは、
【数５】
2019057262.tif 000007
により、算出される。ただし、記号の意味は、以下の通りである。
Ｓ：各ノードによる同次変換マトリクス；
Ｎ：機械構成木のルートから制御点まで連なる一連のノード個数；
Ｍ［ｃｔｒｌ］：制御点の親ノードに対する相対オフセット・姿勢の同次マトリクスであり、制御点に定義されたオフセットベクトル・姿勢マトリクスから［数２］の数式に従って定義される；
ａｘｉ：ノードｘｉの交叉オフセットを加味する（１）、加味しない（０）；
ｂｘｉ：ノードｘｉの移動を加味する（１）、加味しない（０）；
ここで、ａｘｉ、ｂｘｉは制御点を指定する際に指定することもできる情報で、詳細については後述の〔８．機械構成木から導出した座標系のカスタマイズ〕において説明する。
【００９５】
また、同次変換マトリクスＳはノードの種別（直線軸／回転軸／ユニット／制御点／座標系等）によって変わり、以下のように表される。
直線軸の場合
【数６】
2019057262.tif 000008
により、算出される。ただし、記号の意味は、以下の通りである。
ｘｉ：ノードｘｉの座標値；
ｏｆｓｘｉ：ノードｘｉの親ノードに対する相対オフセットベクトル；
ｖｘｉ：ノードｘｉの移動方向ベクトル
回転軸の場合
【数７】
2019057262.tif 000009
により、算出される。ただし、記号の意味は、以下の通りである。
ｖ１：ノードｘｉの回転軸方向ベクトルの第１成分；
ｖ２：ノードｘｉの回転軸方向ベクトルの第２成分；
ｖ３：ノードｘｉの回転軸方向ベクトルの第３成分；
ユニットの場合
【数８】
2019057262.tif 000010
により、算出される。ただし、記号の意味は、以下の通りである。
Ｔ（０）：単位行列（無変換行列）；
Ｔ（１）：ユニットノードに定義された接続点１２０から接続点１１０への同次変換マトリクス
ユニットの変換同次マトリクスについては、先述した通り例えば［数１］の数式中のＴのようなユニット毎に定義された同次変換マトリクスである。
また、特に規定が無い場合、同次変換マトリクスＳは単位行列とする。
【００９６】
〔６．指令点位置及び指令点姿勢の計算方法〕
図２５に示すように、ある指定座標系上の指令値として、指令位置ベクトルｐｏｓＷ、指令姿勢マトリクスｍａｔＷが指定されている場合、この指令値の、機械構成木のルートに対する位置姿勢を表す同次マトリクスＭＭは、以下の式により求められる。
【００９７】
まず、指令値の同次マトリクスＭｗを以下のように定義する。
【数９】
2019057262.tif 000011
また、制御点の場合と同様に考え、機械構成木中のルートからある座標系までの経路ｐ３が以下のようであるとする。
【数１０】
2019057262.tif 000012
これにより、同次マトリクスＭＭは
【数１１】
2019057262.tif 000013
により、算出される。ただし、記号の意味は、以下の通りである。
Ｓ：各ノードによる同次変換マトリクス；
Ｌ：機械構成木のルートから座標系まで連なる一連のノード個数；
Ｍ［ｃｏｏｒｄ］：座標系の親ノードに対する相対オフセット・姿勢の同次マトリクスであり、座標系に定義されたオフセットベクトル・姿勢マトリクスから［数２］の数式に従って定義される；
ａｘｉ：ノードｘｉの交叉オフセットを加味する（１）、加味しない（０）；
ｂｘｉ：ノードｘｉの移動を加味する（１）、加味しない（０）；
ａｘｉ、ｂｘｉは座標系を指定する際に指定することのできる情報で、詳細については後述の〔８．機械構成木から導出した座標系のカスタマイズ〕において説明する。
また、同次変換マトリクスＳは［数６］〜［数８］の数式を用いて説明したものと同様である。
【００９８】
〔７．プログラム内における制御点及び座標系の指定方法〕
まず、上記の「２．機械構成木の生成」において、各ノードが制御点あるいは座標系であるために必要な情報を持つように機械構成木が生成された場合に、各ノードを制御点あるいは座標系としてプログラム内で指定する方法の一例を、図２６に示す。
【００９９】
図２６に例示するコマンドは、前半部が座標系を指定する文例であり、後半部が制御点を指定する文例である。以下、図２６の繰り返しとなるが、プログラム内の各行の指令内容について説明する。
【０１００】
１行目の「Ｇ５４．９  Ｐ＜ワーク１＞；」により、ノード「ワーク１」を座標系として指定する。
２行目の「Ｇ５４．８  Ｐ＜ワーク１＞＜ＷＯＲＫ１＞；」により、ノード「ワーク１」に“ＷＯＲＫ１”という別の識別子を設定する。
３行目の「Ｇ５４．９  Ｐ＜ＷＯＲＫ１＞；」により、「ＷＯＲＫ１」という別の識別子により、ノード「ワーク１」を座標系として指定する。
４行目の「Ｇ５４．７  Ｐ＜Ｃ１＞  Ｘ＿Ｙ＿Ｚ＿；」により、ノード「Ｃ１」の座標系交叉オフセットを設定する。
５行目の「Ｇ５４．６  Ｐ＜Ｃ１＞  Ｉ＿Ｊ＿Ｋ＿；」により、ノード「Ｃ１」の座標系姿勢マトリクスをＲｏｌｌ／Ｐｉｔｃｈ／Ｙａｗで設定する。
６行目の「Ｇ５４．９  Ｐ＜Ｃ１＞；」により、ノード「Ｃ１」を座標系として指定すると共に、上記の交叉オフセット及び姿勢マトリクスが加味される。
７行目の「Ｇ４３．９  ＜工具１＞；」により、ノード「工具１」を制御点として指定する；
８行目の「Ｇ４３．８  Ｐ＜工具１＞＜ＴＯＯＬ１＞；」により、ノード「工具１」に「ＴＯＯＬ１」という別の識別子を設定する。
９行目の「Ｇ４３．９  Ｐ＜ＴＯＯＬ１＞；」により、「ＴＯＯＬ１」という別の識別子により、ノード「工具１」を制御点として指定する。
１０行目の「Ｇ４３．７  Ｐ＜Ｂ１＞  Ｘ＿Ｙ＿Ｚ＿；」により、ノード「Ｂ１」の制御点交叉オフセットを設定する。
１１行目の「Ｇ４３．６  Ｐ＜Ｂ１＞  Ｉ＿Ｊ＿Ｋ＿；」により、ノード「Ｂ１」の制御点姿勢マトリクスをＲｏｌl／Ｐｉｔｃｈ／Ｙａｗで設定する。
１２行目の「Ｇ４３．９  Ｐ＜Ｂ１＞により、」ノード「Ｂ１」を制御点として指定する共に、上記の交叉オフセット及び姿勢マトリクスが加味される。
【０１０１】
次に、上記の「４．制御点と座標系の自動挿入」により、機械構成木に対して挿入された制御点と座標系を、プログラム内で指定する方法の一例を、図２７に示す。
【０１０２】
図２７に例示するコマンドは、前半部が座標系を指定する文例であり、後半部が制御点を指定する文例である。以下、図２７の記載の繰り返しとなるが、プログラム内の各行の指令内容について説明する。
【０１０３】
１行目の「Ｇ５４．９  ＜座標系[ワーク１]＞；」により、座標系［ワーク１］を指定する。
２行目の「Ｇ５４．８  Ｐ＜座標系[ワーク１]＞＜ＷＯＲＫ１＞；」により、座標系［ワーク１］に“ＷＯＲＫ１”という識別子を設定する。
３行目の「Ｇ５４．９  Ｐ＜ＷＯＲＫ１＞；」により、“ＷＯＲＫ１”という別の識別子により、座標系［ワーク１］を指定する。
４行目の「Ｇ５４．７  Ｐ＜座標系[Ｃ１]＞  Ｘ＿Ｙ＿Ｚ＿；」により、座標系［Ｃ１］の交叉オフセットを設定する。
５行目の「Ｇ５４．６  Ｐ＜座標系[Ｃ１]＞  Ｉ＿Ｊ＿Ｋ＿；」により、座標系［Ｃ１］の姿勢マトリクスをＲｏｌｌ／Ｐｉｔｃｈ／Ｙａｗで設定する。
６行目の「Ｇ５４．９  Ｐ＜座標系[Ｃ１]＞；」により、座標系［Ｃ１］を指定すると共に、上記の交叉オフセット及び姿勢マトリクスが加味される。
７行目の「Ｇ５４．９  ＜制御点[工具１]＞；」により、制御点［工具１］を指定する；
８行目の「Ｇ５４．８  Ｐ＜制御点[工具１]＞＜ＴＯＯＬ１＞；」により、制御点［工具１］に“ＴＯＯＬ１”という識別子を設定する。
９行目の「Ｇ５４．９  Ｐ＜ＴＯＯＬ１＞；」により、“ＴＯＯＬ１”という別の識別子により、制御点［工具１］を指定する。
１０行目の「Ｇ５４．７  Ｐ＜制御点[Ｂ１]＞  Ｘ＿Ｙ＿Ｚ＿；」により、制御点［Ｂ１］の交叉オフセットを設定する。
１１行目の「Ｇ５４．６  Ｐ＜制御点[Ｂ１]＞  Ｉ＿Ｊ＿Ｋ＿；」により、制御点［Ｂ１］の姿勢マトリクスをＲｏｌl／Ｐｉｔｃｈ／Ｙａｗで設定する。
１２行目の「Ｇ５４．９  Ｐ＜制御点[Ｂ１]＞により、」制御点［Ｂ１］を指定する共に、上記の交叉オフセットが加味される。
【０１０４】
このように、各ノードが制御点あるいは座標系であるために必要な情報を持つにせよ、持たないにせよ、機械構成木中の適切な箇所を制御点あるいは座標系として指定することが可能である。図２６においては、制御点と座標系を指定する各々のＧコードは番号が分かれているが、図２７においては、制御点と座標系を指定する各々のＧコードは共通にすることもできる。このように、座標系制御点挿入部及び識別子割り当て部は本発明の実施上不可欠なものではないが、導入してもよい。
【０１０５】
〔８．機械構成木から導出した座標系のカスタマイズ〕
上述の通り、機械構成木中の好適な座標系をプログラム指令により選択することができ、選択された座標系上の指令値は、［数９］〜［数１１］の数式を用いて説明したように機械座標値に変換することができる。この変換において、経路ｐ３中の各ノードに対応する一連のａｘｉ、ｂｘｉは基本的には以下のように全て１として計算される。
【数１２】
2019057262.tif 000014
この場合、一連のノードの交差オフセット及び移動は全て加味される。
【０１０６】
ここで、ａｐ３及びｂｐ３は経路ｐ３の各要素に対応する要素を持ち、随伴する経路のように見ることができる。そこでこれらをｐ３の随伴経路ａｐ３、ｂｐ３と呼ぶことにする。
【０１０７】
ところで、［発明が解決しようとする課題］で先述したように、特定の軸に対してのみ座標系が連れ回らない方が好適な場合もある。例えば図２０Ａ及び図２０Ｂにおいて以下の経路ｐ４にて定義される座標系上でＣ１軸により旋削加工を行いたい場合は、Ｃ１軸に連れ回らない方が使いやすい。
【数１３】
2019057262.tif 000015
【０１０８】
この場合、以下のように随伴経路ａｐ４，ｂｐ４を指定すれば、Ｃ１軸にのみ連れ回らないように座標系をカスタマイズすることができる。
【数１４】
2019057262.tif 000016
【０１０９】
このように、指定した座標系に対し随伴経路を適宜指定することで、使い方に応じて好適なように座標系をカスタマイズすることができる。随伴経路は、図２８に示すようにプログラム指令により指定できる。プログラムの内容を説明すると、Ｇ２５４．９Ｐ＜ワーク１＞Ｑ＜Ｃ１＞０指令により、ワーク１に挿入された座標系のａｃ１を０に指定できる。
【０１１０】
また、Ｇ１５４．９Ｐ＜ワーク１＞Ｑ＜Ｃ１＞０指令により、ワーク１に挿入された座標系のｂｃ１を０に指定できる。
【０１１１】
そしてＧ５４．９Ｐ＜ワーク１＞指令により、ａｃ１＝０，ｂｃ１＝０としてカスタマイズされた座標系［ワーク１］を指定することができる。
【０１１２】
また、座標系だけでなく制御点にも同様に随伴経路が存在するため、これも同様に好適なように随伴経路をプログラムで指定することで、カスタマイズされた制御点を使うことができる。
【０１１３】
上記のように、本実施形態においては、座標系及び制御点を規定するための情報を変更することにより、座標系及び制御点は、任意のカスタマイズをすることが可能である。
とりわけ、座標系及び制御点は、特定のノードの影響、具体的には、特定のノードの移動及びオフセットによる影響を除くことが可能である。
【０１１４】
〔９．移動パルス生成方法〕
次に、本発明の実施形態に係る数値制御装置１００は、〔３．指令アドレスの抽象化〕の方法により指令されたプログラム内の指令値を、〔７．プログラム内における制御点及び座標系の指定方法〕及び〔８．機械構成木から導出した座標系のカスタマイズ〕の方法により指定された座標系上の座標値と解釈し、指定された制御点の座標値が、この指令値となるように制御点を移動させるために必要な移動パルスを生成する。
【０１１５】
具体的には、まず、指定された座標系と機械構成木とから、〔６．指令点位置及び指令点姿勢の計算方法〕の方法により指令値の第１座標変換式を求める。次に、指定された制御点と機械構成木とから、〔５．制御点位置及び制御点姿勢の計算方法〕の方法により制御点の第２座標変換式を求める。次に、第１座標変換式と第２座標変換式とが等しいことを定義する多元多次連立方程式を求める。最後に、例えばグレブナー基底を用いて算出した、上記の多元多次連立方程式の解を用いて、移動指令に用いる移動パルスを生成する。
【０１１６】
例えば、図２９に示すように、軸ｘ１の上に軸ｘ２が設定され、軸ｘ２の上に軸ｘ３が設定され、以下同様にＮ個のノードが連なり、その末端が軸ｘＮであるとする。更に、軸ｘＮ上に制御点が設置されているとする。同様に、軸ｙ１の上に軸ｙ２が設定され、軸ｙ２の上に軸ｙ３が設定され、以下同様にＬ個のノードが連なり、その末端が軸ｙＬであるとする。更に、軸ｙＬ上にワークが設置されているとする。ここで、ｘｉ，ｙｊはノード名称だが、同時に各ノードの座標値も表わすこととする。
【０１１７】
また、図３０に示すように、プログラムにより直交座標位置を表すアドレスＸ，Ｙ，Ｚと工具姿勢を表すアドレスＩ，Ｊ，Ｋが指定されており、これらのアドレスにより指令値として位置ｐｏｓｗ＝（ＸＷ，ＹＷ，ＺＷ）と、工具方向ベクトルｖｅｃｗ＝（ＩＷ，ＪＷ，ＫＷ）が与えられているとする。また、図３１に示すように、プログラムにより制御点[ｘＮ]と座標系[ｙＭ]が指定されているとする。
【０１１８】
このとき、ここで指定された制御点の機械構成木ルートからの経路ｐｃｔｒｌ及び座標系の機械構成木ルートからの経路ｐｃｏｏｒｄは以下［数１５］のようになる。
【数１５】
2019057262.tif 000017
【０１１９】
また、制御点及び座標系の随伴経路については特にプログラムによる指定が無いため、それぞれの経路の随伴経路ａｐｃｔｒｌ，ｂｐｃｔｒｌ，ａｐｃｏｏｒｄ，ｂｐｃｏｏｒｄの要素は以下［数１６］の数式のように全て１となる。
【数１６】
2019057262.tif 000018
【０１２０】
更に、各ノードには図２９に示すオフセット、ノード種別（直線／回転／ユニット／制御点／座標系）、軸方向、姿勢マトリクス、座標値が与えられているとする。
【０１２１】
この時、図３２に示すように、ルート（機械原点）に対する制御点の現在位置・姿勢を表す同次マトリクスＭｃは、以下の式で求められる。
【数１７】
2019057262.tif 000019
ただし、記号の意味は、〔５．制御点位置及び制御点姿勢の計算方法〕で説明した通りなので割愛する。
また、指定座標系上における制御点の現在位置・姿勢を表す同次マトリクスＭｃｗは、Ｍｃを用いて以下の式で求められる。
【数１８】
2019057262.tif 000020
ここから、指定座標系上における制御点の現在位置ベクトルｐｏｓｃｗは以下のように求められる。
【数１９】
2019057262.tif 000021
【０１２２】
次に、図３３に示すように、指定座標系における次の補間位置ベクトルｐｏｓｗ’は、ｐｏｓｃｗを用いて、以下の式で求められる。
【数２０】
2019057262.tif 000022
ただし、ここでＦとは、補間周期毎の指定移動速度のことである。こうすることで、指定座標系における現在位置・指令点位置とを結ぶ直線上の、補間周期毎の位置を求めることができる。
【０１２３】
一方、指定座標系上における制御点の現在工具方向ベクトルｖｅｃｃｗは工具基準方向ベクトルを（０、０、１、０）と仮定すると以下のように求められる。
【数２１】
2019057262.tif 000023
なお、工具基準方向ベクトルは上記に限定されるものではなく、指令やパラメータ設定等により変えてもよい。
【０１２４】
よって、図３４に示すような、指定座標系上における制御点の次の補間工具方向ベクトルｖｅｃｗ’は、以下の式で求められる。
【数２２】
2019057262.tif 000024
ただし、記号の説明は以下の通りである。
Ｒｏｔ（θ’,ａｘｉｓ）：ベクトルａｘｉｓ方向回りにθ’だけ回転する回転行列。［数７］にて説明した行列Ｒと同様のもの。
【０１２５】
以上のように次の補間位置ベクトルｐｏｓｗ’と、次の補間工具方向ベクトルｖｅｃｗ’を求めたら、制御点の位置及び姿勢それぞれについて、以下の連立方程式を立てる。
【数２３】
2019057262.tif 000025
この連立方程式を、各ｘｉ，ｙｉに関して解くことにより、各軸の次の補間位置が求まる。
【０１２６】
なお、連立方程式を解く際は、例えばグレブナー基底を用いて解を算出することが可能である。具体的には、辞書式順序ｘ１＞ｘ２＞・・・＞ｘＮ＞ｙ１＞ｙ２＞・・・ｙＭに基づき、例えば、Ｂｕｃｈｂｕｒｇｅｒアルゴリズム等を用いて、上記連立方程式のグレブナー基底を求めると、最下位順序ｙＭについての一元多次方程式が求まる。これを解けばｙＭの解が求められ、この解を用いて他のグレブナー基底についても式を順番に解くことで、上記連立方程式を各ｘｉ，ｙｉに関して解を求めることができる。
【０１２７】
このようにして求めた各解ｘｉ’，ｙｉ’を用いて各軸に対してΔｘｉ’＝ｘｉ’−ｘｉ，Δｙｉ’＝ｙｉ’−ｙｉなる移動量を出力することで、指定座標系上における指定速度での移動を実現できる。
【０１２８】
なお、機械構成の自由度が冗長な場合は、例えば、いくつかの軸は移動させなかったり、いくつかの軸に対して直接指令値を与えたりといった拘束条件を適宜［数２３］の数式に追加して連立することによって、対処することができる。又は、いくつかの軸に対しては通常は移動しない補助軸という属性を持たせておき、特異点近辺でのみ特異点回避動作のためにだけ移動させる方法によって対処することができる。あるいは、補助制御点を追加し、それに対しても指令することにより、対処することが可能である。
【０１２９】
また、機械構成の自由度が冗長でない場合であっても、いくつかの軸に対して直接指令値を与えることによって、連立方程式の式連立を省略することもできる。例えば、座標値が変化することにより、指定座標系に対する制御点の工具方向が変化するような回転軸を、工具方向の変化に寄与しない回転軸と区別するために、工具変化回転軸と呼ぶことにし、機械構成木の各ノードは工具変化回転軸であるか否かの情報を持つとする。また、ルートから制御点・座標系への各経路が［数１５］の数式で表され、各経路に含まれる工具変化回転軸ノードの一覧が［数２４］の数式であるとする。
【数２４】
2019057262.tif 000026
【０１３０】
また、制御点側の工具変化回転軸のうち、ルートから遠いものから順に第一、第二と順序を付け、その後座標系側の工具変化回転軸のうちルートから遠いものから順に第三、第四、と順序を付けることで、いかなる機械構成木に対しても厳密に工具変化回転軸の順序を定義できる。これに従い、ｘｎを第一工具変化回転軸、ｙｍを第二工具変化回転軸と呼ぶことにする。ここで、第一工具変化回転軸を表す識別子Ｒ１、第二工具変化回転軸を表す識別子Ｒ２を用いて、図３５のように指令する。このように指定されたアドレスＡ、Ｂを用いることで、工具方向ベクトルではなく、工具変化回転軸の角度値を直接指令することができる。
【０１３１】
この場合、第一工具変化回転軸、第二工具変化回転軸の次の補間位置ｘｎ’，ｙｎ’は以下の式で求めることができる。
【数２５】
2019057262.tif 000027
これにより、第一工具変化回転軸、第二工具変化回転軸のノード座標値は決まるため、工具方向ベクトルも決まる。そうすると、工具方向ベクトルに関して連立方程式を解く必要は無くなるため、以下の指令位置に関する連立方程式を解くだけでよくなる。
【０１３２】
【数２６】
2019057262.tif 000028
ただし、上式中において、ノードｘｎ，ｙｎの座標値は上記で求めた値を代入し、定数とみなして解く。
【０１３３】
上記のように、プログラム中の指令値として、特定のノードの座標値を直接指定できる。これにより、連立式の個数を減らすことが可能となる。
【０１３４】
〔１０．本実施形態の効果〕
本実施形態に係る数値制御装置は、例えば機械構成木のような機械構成グラフの形式で機械構成情報を保持している。また、本実施形態に係る数値制御装置は、機械構成グラフに対し、グラフ作成時に各ノードに制御点あるいは座標系となるために必要な情報を持たせる、あるいは、考え得る制御点及び座標系を自動挿入し、かつそれら個々の制御点及び座標系に、一意に識別可能な識別子を付ける。そのため、本実施形態に係る数値制御装置の使用者は、数値制御装置の設定を変更することなく、識別子によりＮＣプログラム上で所望の制御点及び座標系を指定することができ、利便性が向上する。
【０１３５】
更に、本実施形態に係る数値制御装置は、機械構成上の制御点と座標系を指定した上で座標値を指令することで、指定した制御点を指定した座標系上の座標に移動させることができる。このようにして、数値制御装置の使用者は、一般的な機械構成の機械に対して
自由に移動指令を行うことができるため、利便性が向上する。
【０１３６】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【０１３７】
数値制御装置１００による制御方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、コンピュータ（数値制御装置１００）にインストールされる。また、これらのプログラムは、リムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。更に、これらのプログラムは、ダウンロードされることなくネットワークを介したＷｅｂサービスとしてユーザのコンピュータ（数値制御装置１００）に提供されてもよい。
【符号の説明】
【０１３８】
１１  ＣＰＵ
１００  数値制御装置
１１１  グラフ生成部
１１２  制御点座標系挿入部
１１３  識別子割り当て部
１１４  制御点座標系指定部
１１５  指令値判断部
１１６  移動指令部
１６１  連立方程式生成部
１６２  連立方程式求解部
１６３  移動パルス生成部
【図１Ａ】
2019057262.tif 000029
【図１Ｂ】
2019057262.tif 000030
【図２Ａ】
2019057262.tif 000031
【図２Ｂ】
2019057262.tif 000032
【図３】
2019057262.tif 000033
【図４】
2019057262.tif 000034
【図５】
2019057262.tif 000035
【図６】
2019057262.tif 000036
【図７】
2019057262.tif 000037
【図８】
2019057262.tif 000038
【図９】
2019057262.tif 000039
【図１０Ａ】
2019057262.tif 000040
【図１０Ｂ】
2019057262.tif 000041
【図１１Ａ】
2019057262.tif 000042
【図１１Ｂ】
2019057262.tif 000043
【図１１Ｃ】
2019057262.tif 000044
【図１２】
2019057262.tif 000045
【図１３Ａ】
2019057262.tif 000046
【図１３Ｂ】
2019057262.tif 000047
【図１４Ａ】
2019057262.tif 000048
【図１４Ｂ】
2019057262.tif 000049
【図１４Ｃ】
2019057262.tif 000050
【図１４Ｄ】
2019057262.tif 000051
【図１５】
2019057262.tif 000052
【図１６】
2019057262.tif 000053
【図１７Ａ】
2019057262.tif 000054
【図１７Ｂ】
2019057262.tif 000055
【図１８】
2019057262.tif 000056
【図１９】
2019057262.tif 000057
【図２０Ａ】
2019057262.tif 000058
【図２０Ｂ】
2019057262.tif 000059
【図２１】
2019057262.tif 000060
【図２２】
2019057262.tif 000061
【図２３】
2019057262.tif 000062
【図２４】
2019057262.tif 000063
【図２５】
2019057262.tif 000064
【図２６】
2019057262.tif 000065
【図２７】
2019057262.tif 000066
【図２８】
2019057262.tif 000067
【図２９】
2019057262.tif 000068
【図３０】
2019057262.tif 000069
【図３１】
2019057262.tif 000070
【図３２】
2019057262.tif 000071
【図３３】
2019057262.tif 000072
【図３４】
2019057262.tif 000073
【図３５】
2019057262.tif 000074
【手続補正書】
【提出日】平成30年10月25日(2018.10.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
制御対象の機械構成を、構成要素をノードとするグラフ形式で表現し、保持する制御装置であって、
前記機械構成のグラフの各ノードに対し、識別子により制御点及び座標系を１組以上指定する制御点座標系指定部と、
前記制御点座標系指定部により指定された前記制御点と前記座標系により、プログラム中で指令された１つ以上の指令値が、どの制御点に対するどの座標系上の座標値に対応するか判断する指令値判断部と、
前記制御点の前記座標値が前記指令値となるように、前記制御点の移動を指令する移動指令部と、を備える制御装置。
【請求項２】
前記機械構成のグラフの各ノードに対し、前記制御点及び前記座標系を挿入する制御点座標系挿入部と、前記挿入された前記制御点及び前記座標系に前記識別子を割り当てる識別子割り当て部とを備える、請求項１に記載の制御装置。
【請求項３】
前記制御点座標系挿入部は、前記機械構成のグラフの各ノードに対し、制御点及び座標系をノードとして挿入する、請求項２に記載の制御装置。
【請求項４】
前記制御点座標系挿入部は、前記機械構成のグラフの各ノードに対し、制御点及び座標系を情報として持たせる、請求項２に記載の制御装置。
【請求項５】
前記機械構成のグラフは、複数の軸をまとめて１つにしたユニットを構成要素として含むことができる、請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
ユーザが記述したスクリプトを解析することにより、前記ユニットを定義し、定義された前記ユニットを前記機械構成のグラフの構成要素として含むことができる、請求項５に記載の制御装置。
【請求項７】
前記座標系は、特定のノードの影響を除くことが可能である、請求項１〜６のいずれか１項に記載の制御装置。
【請求項８】
前記制御点は、特定のノードの影響を除くことが可能である、請求項１〜７のいずれか１項に記載の制御装置。
【請求項９】
前記指令値として、前記機械構成のグラフに含まれる軸名称とは無関係に、前記制御点の位置、前記制御点の姿勢、及び、前記姿勢を決定する回転軸の角度位置毎に予め定義された識別子に対して割り当てた、任意のアドレスを用いる、請求項１〜８のいずれか１項に記載の制御装置。
【請求項１０】
前記指令値として、特定のノードの座標値を直接指定できる、請求項１〜９のいずれか１項に記載の制御装置。
【請求項１１】
前記移動指令部は、指定された前記座標系と前記機械構成のグラフとから、前記指令値の第１座標変換式を求め、指定された前記制御点と前記機械構成のグラフとから、前記制御点の第２座標変換式を求め、第１座標変換式と第２座標変換式とが等しいことを定義する多元多次連立方程式を生成する連立方程式生成部と、前記多元多次連立方程式の解を求める連立方程式求解部と、前記連立方程式求解部が生成した解を用いて、移動指令に用いる移動パルスを生成する移動パルス生成部と、を備える、請求項１〜１０のいずれか１項に記載の制御装置。
【請求項１２】
前記連立方程式生成部は、特定のノードの座標値を直接指定することで連立式を減らす、請求項１１に記載の制御装置。
【請求項１３】
請求項１〜１２のいずれか１項に記載の制御装置の制御対象の機械構成を表現する、構成要素をノードとしたグラフ形式のデータ構造であって、前記機械構成のグラフに対し、制御点及び座標系がノードとして挿入され、それぞれに識別子が割り当てられ、
前記制御点座標系指定部が、前記機械構成のグラフの各ノードに対し、前記識別子により前記制御点及び前記座標系を１組以上指定し、
前記指令値判断部が、前記制御点座標系指定部により指定された前記制御点と前記座標系により、プログラム中で指令された１つ以上の指令値が、どの制御点に対するどの座標系上の座標値に対応するか判断し、
前記移動指令部が、前記制御点の前記座標値が前記指令値となるように、前記制御点の移動を指令するために用いるデータ構造。