(57)【要約】【課題】複雑な構成の機械に対して、容易に同期制御や重畳制御を行うことが可能な数値制御装置を提供する。【解決手段】数値制御装置１００は、第１要素と第２要素の関係を設定する要素間関係設定部１１３と、前記第１要素と前記第２要素の関係から関係出力を計算する要素間関係出力計算部１１４と、前記関係出力に基づき関係制御を行う要素間関係制御部１１５と、を備える。【選択図】図２
2019008479.tif 000002
【特許請求の範囲】
【請求項１】
第１要素と第２要素の関係を設定する要素間関係設定部と、
前記第１要素と前記第２要素の関係から関係出力を計算する要素間関係出力計算部と、
前記関係出力に基づき関係制御を行う要素間関係制御部と、
を備える数値制御装置。
【請求項２】
前記要素間関係設定部は、
第１制御点を前記第１要素として設定し、
第２制御点を前記第２要素として設定し、
前記要素間関係出力計算部は、
前記第１制御点の第１座標系上の第１移動先を生成する第１制御点移動先生成部と、
前記第２制御点の第２座標系上の第２移動先を生成する第２制御点移動先生成部と、
を備え、
前記第１移動先及び前記第２移動先とを関係出力として出力し、
前記要素間関係制御部は、
前記第１移動先から前記第１制御点及び前記第１座標系を構成する各軸の移動先である第１各軸移動先を生成する第１各軸移動先生成部と、
前記第２移動先と前記第１各軸移動先とから前記第２制御点及び前記第２座標系を構成する各軸の移動先である第２各軸移動先を生成する第２各軸移動先生成部と、
前記第１制御点及び前記第１座標系を構成する各軸を前記第１各軸移動先に移動させる第１移動実行部と、
前記第２制御点及び前記第２座標系を構成する各軸を前記第２各軸移動先に移動させる第２移動実行部と、を備える、請求項１に記載の数値制御装置。
【請求項３】
前記第１制御点移動先生成部は、
前記第１制御点の前記第１座標系上の第１現在位置を計算する第１現在位置計算部と、
前記第１制御点の前記第１座標系上の第１現在姿勢を計算する第１現在姿勢計算部と、
前記第１制御点に対して前記第１座標系上にて与えられた第１指令値から補間周期毎の第１指令位置移動情報と第１指令姿勢変更情報とを生成する第１補間情報生成部と、を備え、
前記第１現在位置と前記第１現在姿勢と前記第１指令位置移動情報と前記第１指令姿勢変更情報とから前記第１移動先を計算し、
前記第２制御点移動先生成部は、
前記第２制御点の前記第２座標系上の第２現在位置を計算する第２現在位置計算部と、
前記第２制御点の前記第２座標系上の第２現在姿勢を計算する第２現在姿勢計算部と、を備え、
前記第２現在位置と前記第２現在姿勢とから前記第２移動先を計算する、請求項２に記載の数値制御装置。
【請求項４】
前記第１制御点移動先生成部は、
前記第１制御点の前記第１座標系上の第１現在位置を計算する第１現在位置計算部と、
前記第１制御点の前記第１座標系上の第１現在姿勢を計算する第１現在姿勢計算部と、
前記第１制御点に対して前記第１座標系上にて与えられた第１指令値から補間周期毎の第１指令位置移動情報と第１指令姿勢変更情報とを生成する第１補間情報生成部と、を備え、
前記第１現在位置と前記第１現在姿勢と前記第１指令位置移動情報と前記第１指令姿勢変更情報とから前記第１移動先を計算し、
前記第２制御点移動先生成部は、
前記第２制御点の前記第２座標系上の第２現在位置を計算する第２現在位置計算部と、
前記第２制御点の前記第２座標系上の第２現在姿勢を計算する第２現在姿勢計算部と、
前記第２制御点に対して前記第２座標系上にて与えられた第２指令値から補間周期毎の第２指令位置移動情報と第２指令姿勢変更情報とを生成する第２補間情報生成部と、を備え、
前記第２現在位置と前記第２現在姿勢と前記第２指令位置移動情報と前記第２指令姿勢変更情報とから前記第２移動先を計算する、請求項２に記載の数値制御装置。
【請求項５】
前記第１補間情報生成部は、
位置変換情報により前記第１指令位置移動情報を変換する第１指令位置移動情報変換部と、
姿勢変換情報により前記第１指令姿勢変更情報を変換する第１指令姿勢変更情報変換部と、を備える、請求項３又は４に記載の数値制御装置。
【請求項６】
前記第２補間情報生成部は、
位置変換情報により前記第２指令位置移動情報を変換する第２指令位置移動情報変換部と、
姿勢変換情報により前記第２指令姿勢変更情報を変換する第２指令姿勢変更情報変換部と、を備える、請求項４に記載の数値制御装置。
【請求項７】
前記第１指令値をそのまま前記第２指令値とする、請求項４に記載の数値制御装置。
【請求項８】
前記第１座標系と前記第２座標系は同一である、請求項２〜７のいずれか１項に記載の数値制御装置。
【請求項９】
前記要素間関係設定部は、
関係式を取得する関係式取得部と、
前記関係式を解析する構文解析部と、
を備え、
前記構文解析部の解析結果を前記第１要素と前記第２要素との関係として設定し、
前記要素間関係出力計算部は、
前記第１要素と第２要素との関係の各関係式要素を辿る関係巡回部を備え、
前記関係巡回部は、辿りついた前記関係式要素毎の種別に応じて関係出力処理を行う関係出力処理部を備える、請求項１に記載の数値制御装置。
【請求項１０】
前記関係式は、少なくとも、
前記第１要素としての第１制御点の情報、前記第１要素としての第１座標系の情報、前記第２要素としての第２制御点の情報、前記第２要素としての第２座標系の情報、
前記第１制御点の前記第１座標系における第１位置関係情報、
前記第２制御点の前記第２座標系における第２位置関係情報、
制御構文、
数学演算命令、
定数、
変数、
変数の型情報、
制御点に対する指令値情報、
数値制御装置の内部状態を表す情報、
数値制御装置に対する入力情報、
数値制御装置からの出力情報、
のいずれか１つを前記関係式要素として含む、請求項９に記載の数値制御装置。
【請求項１１】
前記構文解析部は、解析結果として構文木を生成し、
前記関係巡回部は、前記構文木の各関係式要素を再帰的に辿る、請求項９に記載の数値制御装置。
【請求項１２】
前記構文解析部は、
構文リストを生成する構文リスト生成部と、
前記構文リストを構文木に変換する構文変換部と、
を備え、
前記構文木を解析結果とする、請求項１１に記載の数値制御装置。
【請求項１３】
前記構文解析部は、解析結果として構文リストを生成し、
前記関係巡回部は、前記構文リストの各関係式要素を順次的に辿る、請求項９に記載の数値制御装置。
【請求項１４】
前記構文解析部は、
構文木を生成する構文木生成部と、
前記構文木を構文リストに変換する構文変換部 と、
を備え、
前記構文リストを解析結果とする、請求項１３に記載の数値制御装置。
【請求項１５】
前記関係出力処理部は、少なくとも、
制御点情報を処理する制御点情報処理部、
座標系情報を処理する座標系情報処理部、
制御点の位置情報を処理する制御点位置情報処理部、
制御構文を処理する制御構文処理部、
数学演算命令を処理する数学演算処理部、
定数を処理する定数処理部、
変数を処理する変数処理部、
変数の型情報を処理する型情報処理部、
制御点に対する指令値を処理する制御点指令値処理部、
数値制御装置の内部情報を処理する内部情報処理部、
数値制御装置への入力情報を処理する入力情報処理部、
数値制御装置からの出力情報を処理する出力情報処理部、
のいずれか１つを備える、請求項９に記載の数値制御装置。
【請求項１６】
前記要素間関係制御部は、
前記要素間関係出力計算部が計算した前記関係出力に基づき、数値制御装置の出力情報を操作する出力操作部を備える、請求項１に記載の数値制御装置。
【請求項１７】
前記関係出力は軸移動出力を含み、
前記出力操作部は、
前記軸移動出力に基づいて各制御点が各座標系において設定された移動先に来るよう前記各制御点及び前記各座標系を構成する各軸の座標値を計算し、移動させる制御点移動部を備える、請求項１６に記載の数値制御装置。
【請求項１８】
前記関係出力は信号出力を含み、
前記出力操作部は、
前記信号出力に基づいて各信号が設定された出力値となるよう制御する信号制御部を備える、請求項１６に記載の数値制御装置。
【請求項１９】
前記関係出力は変数出力を含み、
前記出力操作部は、
前記変数出力に基づいて各変数が設定された出力値となるよう制御する変数制御部を備える、請求項１６に記載の数値制御装置。
【請求項２０】
前記関係出力は通信情報出力を含み、
前記出力操作部は、
前記通信情報出力に基づいて各通信情報が設定された出力値となるよう制御する通信情報制御部を備える、請求項１６に記載の数値制御装置。
【請求項２１】
機械構成情報をグラフ形式で有しており、このグラフの全ノードにおいて制御点と座標系が定義されている、請求項１〜２０に記載の数値制御装置。
【請求項２２】
前記第１要素としての第１座標系と、前記第２要素としての第２座標系は、同一のノードに定義されている、請求項２１に記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、指定した制御点と座標系に対して同期・重畳制御できる数値制御装置に関する。
【背景技術】
【０００２】
数値制御装置において同期制御をする際、通常は、ある系統の物理軸移動量を、他の系統の物理軸移動量にコピーすることにより、例えば、ワークを両持ちしたり、ワークを両面から加工したりする。具体的には、図６４に示すように、ワーク５００を、系統１の直進軸Ｚ１に設置された把持部５１０と、系統２の直進軸Ｚ２に設置された把持部５２０とで両持ちし、系統１の直進軸Ｘ１に設置された工具５３０で加工する際、系統１の直進軸Ｚ１における移動量を、系統２の直進軸Ｚ２における移動量にコピーすることにより、系統２の直進軸Ｚ２を系統１の直進軸Ｚ１と同じ分移動させることで、ワーク５００の両端を把持しながら、ワーク５００を移動させる。
【０００３】
また、数値制御装置において重畳制御をする際、通常は、上記の同期制御をしつつ、更に自系統による指令を加算することにより、同一のワークに対して複数の系統で同時に異なる加工を行っている。具体的には、図６５に示すように、ワーク５５０を系統１の直進軸Ｚ１に設置された把持部５６０で把持し、系統１の直進軸Ｘ１に設置された工具５７０で側面加工する際、把持部５６０と系統２の直進軸Ｚ２とが同期制御による移動をしつつ、軸Ｚ２に設置された工具５８０に対して重畳指令することにより、軸Ｚ２に穴あけ動作の移動量が加算され、ワーク５５０の端面に穴開けを行う。
【０００４】
この点、例えば、特許文献１は、双腕協調を的確に行うために、マスタの制御部とスレーブの制御部に双腕協調動作が指令されると、マスターアームが移動すべき通過点が、マスタとスレーブの共通座標系で表わしたデータで算出され、これを基にスレーブアームが移動すべき点が求められる発明を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０６−０７１５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、例えば、ある回転軸の回転に伴い、この回転軸に物理的に連繋された他の軸が移動する場合のように、軸の移動方向が動的に変わるような場合には、実移動方向を加味して複数の軸を動かす必要がある。
【０００７】
例えば、図６６に示す同期制御においては、系統１の回転軸Ｂ１上に直進軸Ｚ１が設置され、系統２の直進軸Ｘ２に垂直に直進軸Ｚ２が設置され、直進軸Ｚ２上に回転軸Ｂ２が設置されている。ワーク６００を、直進軸Ｚ１と回転軸Ｂ２の各々に設置された把持部６１０及び把持部６２０で把持する場合、ワーク６００の把持を維持するためには、直進軸Ｚ１及び回転軸Ｂ１の移動に合わせて、直進軸Ｚ２、直進軸Ｘ２、回転軸Ｂ２を複合的に移動させる必要がある。
【０００８】
同様に、図６７に示す重畳制御においては、系統１の回転軸Ｂ１上に直進軸Ｚ１が設置され、系統２の直進軸Ｘ２に垂直に直進軸Ｚ２が設置され、直進軸Ｚ２上に回転軸Ｂ２が設置されている。ワーク６５０を、直進軸Ｚ１に設置された把持部６６０で把持しつつ、回転軸Ｂ２に設置された工具６７０で穴開けする場合、直進軸Ｚ１、回転軸Ｂ１の座標値を考慮して、直進軸Ｚ２、回転軸Ｘ２を複合的に移動させる必要がある。
このように、現在は、例えば軸の移動方向が動的に変わるような、複雑な構成の機械に対して、同期制御や重畳制御を行うことは困難である。
【０００９】
そこで、本発明は、複雑な構成の機械に対して、容易かつ柔軟に同期制御や重畳制御を行うことが可能な数値制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
（１）  本発明によれば、第１要素と第２要素の関係を設定する要素間関係設定部（例えば、後述の要素間関係設定部１１３）と、前記第１要素と前記第２要素の関係から関係出力を計算する要素間関係出力計算部（例えば、後述の要素間関係出力計算部１１４）と、前記関係出力に基づき関係制御を行う要素間関係制御部（例えば、後述の要素間関係制御部１１５）と、を備える数値制御装置（例えば、後述の数値制御装置１００）が提供される。
【００１１】
（２）  （１）に記載の数値制御装置において、前記要素間関係設定部は、第１制御点を前記第１要素として設定し、第２制御点を前記第２要素として設定し、前記要素間関係出力計算部は、前記第１制御点の第１座標系上の第１移動先を生成する第１制御点移動先生成部（例えば、後述の第１制御点移動先生成部１３１）と、前記第２制御点の第２座標系上の第２移動先を生成する第２制御点移動先生成部（例えば、後述の第２制御点移動先生成部１３２）と、を備え、前記第１移動先及び前記第２移動先とを関係出力として出力し、前記要素間関係制御部は、前記第１移動先から前記第１制御点及び前記第１座標系を構成する各軸の移動先である第１各軸移動先を生成する第１各軸移動先生成部（例えば、後述の第１各軸移動先生成部１４１）と、前記第２移動先と前記第１各軸移動先とから前記第２制御点及び前記第２座標系を構成する各軸の移動先である第２各軸移動先を生成する第２各軸移動先生成部（例えば、後述の第２各軸移動先生成部１４２）と、前記第１制御点及び前記第１座標系を構成する各軸を前記第１各軸移動先に移動させる第１移動実行部（例えば、後述の第１移動実行部１４３）と、前記第２制御点及び前記第２座標系を構成する各軸を前記第２各軸移動先に移動させる第２移動実行部（例えば、後述の第２移動実行部１４４）と、を備えてもよい。
【００１２】
（３）  （２）に記載の数値制御装置において、前記第１制御点移動先生成部は、前記第１制御点の前記第１座標系上の第１現在位置を計算する第１現在位置計算部（例えば、後述の第１現在位置計算部１５１）と、前記第１制御点の前記第１座標系上の第１現在姿勢を計算する第１現在姿勢計算部（例えば、後述の第１現在姿勢計算部１５２）と、前記第１制御点に対して前記第１座標系上にて与えられた第１指令値から補間周期毎の第１指令位置移動情報と第１指令姿勢変更情報とを生成する第１補間情報生成部（例えば、後述の第１補間情報生成部１５３）と、を備え、前記第１現在位置と前記第１現在姿勢と前記第１指令位置移動情報と前記第１指令姿勢変更情報とから前記第１移動先を計算し、前記第２制御点移動先生成部は、前記第２制御点の前記第２座標系上の第２現在位置を計算する第２現在位置計算部（例えば、後述の第２現在位置計算部１６１）と、前記第２制御点の前記第２座標系上の第２現在姿勢を計算する第２現在姿勢計算部（例えば、後述の第２現在姿勢計算部１６２）と、を備え、前記第２現在位置と前記第２現在姿勢とから前記第２移動先を計算してもよい。
【００１３】
（４）  （２）に記載の数値制御装置において、前記第１制御点移動先生成部は、前記第１制御点の前記第１座標系上の第１現在位置を計算する第１現在位置計算部（例えば、後述の第１現在位置計算部１５１）と、前記第１制御点の前記第１座標系上の第１現在姿勢を計算する第１現在姿勢計算部（例えば、後述の第１現在姿勢計算部１５２）と、前記第１制御点に対して前記第１座標系上にて与えられた第１指令値から補間周期毎の第１指令位置移動情報と第１指令姿勢変更情報とを生成する第１補間情報生成部（例えば、後述の第１補間情報生成部１５３）と、を備え、前記第１現在位置と前記第１現在姿勢と前記第１指令位置移動情報と前記第１指令姿勢変更情報とから前記第１移動先を計算し、前記第２制御点移動先生成部は、前記第２制御点の前記第２座標系上の第２現在位置を計算する第２現在位置計算部（例えば、後述の第２現在位置計算部１６１）と、前記第２制御点の前記第２座標系上の第２現在姿勢を計算する第２現在姿勢計算部（例えば、後述の第２現在姿勢計算部１６２）と、前記第２制御点に対して前記第２座標系上にて与えられた第２指令値から補間周期毎の第２指令位置移動情報と第２指令姿勢変更情報とを生成する第２補間情報生成部（例えば、後述の第２補間情報生成部１６３）と、を備え、前記第２現在位置と前記第２現在姿勢と前記第２指令位置移動情報と前記第２指令姿勢変更情報とから前記第２移動先を計算してもよい。
【００１４】
（５）  （３）又は（４）に記載の数値制御装置において、前記第１補間情報生成部は、位置変換情報により前記第１指令位置移動情報を変換する第１指令位置移動情報変換部（例えば、後述の第１指令位置移動情報変換部１７１）と、姿勢変換情報により前記第１指令姿勢変更情報を変換する第１指令姿勢変更情報変換部（例えば、後述の第１指令姿勢変更情報変換部１７２）と、を備えてもよい。
【００１５】
（６）  （４）に記載の数値制御装置において、前記第２補間情報生成部は、位置変換情報により前記第２指令位置移動情報を変換する第２指令位置移動情報変換部（例えば、後述の第２指令位置移動情報変換部１８１）と、姿勢変換情報により前記第２指令姿勢変更情報を変換する第２指令姿勢変更情報変換部（例えば、後述の第２指令姿勢変更情報変換部１８２）と、を備えてもよい。
【００１６】
（７）  （４）に記載の数値制御装置において、前記第１指令値をそのまま前記第２指令値としてもよい。
【００１７】
（８）  （２）〜（７）に記載の数値制御装置において、前記第１座標系と前記第２座標系は同一であってもよい。
【００１８】
（９）  （１）に記載の数値制御装置において、前記要素間関係設定部は、関係式を取得する関係式取得部（例えば、後述の関係式取得部１２１）と、前記関係式を解析する構文解析部（例えば、後述の構文解析部１２２）と、を備え、前記構文解析部の解析結果を前記第１要素と前記第２要素との関係として設定し、前記要素間関係出力計算部は、前記第１要素と第２要素との関係の各関係式要素を辿る関係巡回部（例えば、後述の関係巡回部１３３）を備え、前記関係巡回部は、辿りついた前記関係式要素毎の種別に応じて関係出力処理を行う関係出力処理部（例えば、後述の関係出力処理部１３４）を備えてもよい。
【００１９】
（１０）  （９）に記載の数値制御装置において、前記関係式は、少なくとも、前記第１要素としての第１制御点の情報、前記第１要素としての第１座標系の情報、前記第２要素としての第２制御点の情報、前記第２要素としての第２座標系の情報、前記第１制御点の前記第１座標系における第１位置関係情報、前記第２制御点の前記第２座標系における第２位置関係情報、制御構文、数学演算命令、定数、変数、変数の型情報、制御点に対する指令値情報、数値制御装置の内部状態を表す情報、数値制御装置に対する入力情報、数値制御装置からの出力情報、のいずれか１つを前記関係式要素として含んでもよい。
【００２０】
（１１）  （９）に記載の数値制御装置において、前記構文解析部は、解析結果として構文木を生成し、前記関係巡回部は、前記構文木の各関係式要素を再帰的に辿ってもよい。
【００２１】
（１２）  （１１）に記載の数値制御装置において、前記構文解析部は、構文リストを生成する構文リスト生成部（例えば、後述の構文リスト生成部１９１）と、前記構文リストを構文木に変換する構文変換部（例えば、後述の構文変換部１９３）と、を備え、前記構文木を解析結果としてもよい。
【００２２】
（１３）  （９）に記載の数値制御装置において、前記構文解析部は、解析結果として構文リストを生成し、前記関係巡回部は、前記構文リストの各関係式要素を順次的に辿ってもよい。
【００２３】
（１４）  （１３）に記載の数値制御装置において、前記構文解析部は、構文木を生成する構文木生成部（例えば、後述の構文木生成部１９２）と、前記構文木を構文リストに変換する構文変換部（例えば、後述の構文変換部１９３）と、を備え、前記構文リストを解析結果としてもよい。
【００２４】
（１５）  （９）に記載の数値制御装置において、前記関係出力処理は、少なくとも、制御点情報を処理する制御点情報処理部（例えば、後述の制御点情報処理部２０１）、座標系情報を処理する座標系情報処理部（例えば、後述の座標系情報処理部２０２）、制御点の位置情報を処理する制御点位置情報処理部（例えば、後述の制御点位置情報処理部２０３）、制御構文を処理する制御構文処理部（例えば、後述の制御構文処理部２０４）、数学演算命令を処理する数学演算処理部（例えば、後述の数学演算処理部２０５）、定数を処理する定数処理部（例えば、後述の定数処理部２０６）、変数を処理する変数処理部（例えば、後述の変数処理部２０７）、変数の型情報を処理する型情報処理部（例えば、後述の型情報処理部２０８）、制御点に対する指令値を処理する制御点指令値処理部（例えば、後述の制御点指令値処理部２０９）、数値制御装置の内部情報を処理する内部情報処理部（例えば、後述の内部情報処理部２１０）、数値制御装置への入力情報を処理する入力情報処理部（例えば、後述の入力情報処理部２１１）、数値制御装置からの出力情報を処理する出力情報処理部（例えば、後述の出力情報処理部２１２）、のいずれか１つを備えてもよい。
【００２５】
（１６）  （１）に記載の数値制御装置において、前記要素間関係制御部は、前記要素間関係出力計算部が計算した前記関係出力に基づき、数値制御装置の出力情報を操作する出力操作部（例えば、後述の出力操作部１４５）を備えてもよい。
【００２６】
（１７）  （１６）に記載の数値制御装置において、前記関係出力は軸移動出力を含み、前記出力操作部は、前記軸移動出力に基づいて各制御点が各座標系において設定された移動先に来るよう前記各制御点及び前記各座標系を構成する各軸の座標値を計算し、移動させる制御点移動部（例えば、後述の制御点移動部２２１）を備えてもよい。
【００２７】
（１８）  （１６）に記載の数値制御装置において、前記関係出力は信号出力を含み、前記出力操作部は、前記信号出力に基づいて各信号が設定された出力値となるよう制御する信号制御部（例えば、後述の信号制御部２２２）を備えてもよい。
【００２８】
（１９）  （１６）に記載の数値制御装置において、前記関係出力は変数出力を含み、前記出力操作部は、前記変数出力に基づいて各変数が設定された出力値となるよう制御する変数制御部（例えば、後述の変数制御部２２３）を備えてもよい。
【００２９】
（２０）  （１６）に記載の数値制御装置において、前記関係出力は通信情報出力を含み、前記出力操作部は、前記通信情報出力に基づいて各通信情報が設定された出力値となるよう制御する通信情報制御部（例えば、後述の通信情報制御部２２４）を備えてもよい。
【００３０】
（２１）  （１）〜（２０）に記載の数値制御装置において、機械構成情報をグラフ形式で有しており、このグラフの全ノードにおいて制御点と座標系が定義されていてもよい。
【００３１】
（２２）  （２１）に記載の数値制御装置において、前記第１要素としての第１座標系と、前記第２要素としての第２座標系は同一のノードに定義されていてもよい。
【発明の効果】
【００３２】
本発明によれば、複雑な構成の機械に対して、容易かつ柔軟に同期制御や重畳制御を行うことが可能となる。
【図面の簡単な説明】
【００３３】
【図１】本発明の実施形態に係る数値制御装置の構成例を示す図である。
【図２】本発明の実施形態に係る数値制御装置が備えるＣＰＵ（制御部）の機能ブロック図である。
【図３】本発明の実施形態に係る数値制御装置が備える要素間関係設定部の機能ブロック図である。
【図４】本発明の実施形態に係る数値制御装置が備える要素間関係出力計算部の機能ブロック図である。
【図５】本発明の実施形態に係る数値制御装置が備える要素間関係制御部の機能ブロック図である。
【図６】本発明の実施形態に係る数値制御装置が備える第１制御点移動先設定部の機能ブロック図である。
【図７】本発明の実施形態に係る数値制御装置が備える第２制御点移動先生成部の機能ブロック図である。
【図８】本発明の実施形態に係る数値制御装置が備える第１補間情報生成部の機能ブロック図である。
【図９】本発明の実施形態に係る数値制御装置が備える第２補間情報生成部の機能ブロック図である。
【図１０】本発明の実施形態に係る数値制御装置が備える構文解析部の機能ブロック図である。
【図１１】本発明の実施形態に係る数値制御装置が備える関係出力処理の機能ブロック図である。
【図１２】本発明の実施形態に係る数値制御装置が備える出力操作部の機能ブロック図である。
【図１３】本発明の実施形態における機械構成木の生成方法の説明図である。
【図１４】本発明の実施形態における機械構成木の生成方法の説明図である。
【図１５】本発明の実施形態における機械構成木の生成方法の説明図である。
【図１６】本発明の実施形態における機械構成木の生成方法を示すフローチャートである。
【図１７Ａ】本発明の実施形態における機械の構成要素の親子関係の説明図である。
【図１７Ｂ】本発明の実施形態における機械の構成要素の親子関係の説明図である。
【図１８Ａ】ユニットを機械構成機に挿入する方法の説明図である。
【図１８Ｂ】ユニットを機械構成機に挿入する方法の説明図である。
【図１８Ｃ】ユニットを機械構成機に挿入する方法の説明図である。
【図１９】本発明の実施形態に係る機械構成の例を示す図である。
【図２０Ａ】機械構成木の生成対象となる機械の例を示す図である。
【図２０Ｂ】機械構成木の生成対象となる機械に対応する機械構成木の例を示す図である。
【図２１】本発明の実施形態において、機械の各ノードに座標系及び制御点が挿入された例を示す図である。
【図２２】本発明の実施形態における、座標系及び制御点が挿入された機械構成木の例を示す図である。
【図２３Ａ】本発明の実施形態において、各ノードにオフセット及び姿勢マトリクスが挿入される機械の例を示す図である。
【図２３Ｂ】本発明の実施形態において、機械の各ノードにオフセット及び姿勢マトリクスが挿入された例を示す図である。
【図２４】本発明の実施形態において、機械構成木に制御点を挿入する生成動作を示す図である。
【図２５】本発明の実施形態における、座標系及び制御点が挿入された機械構成木の例を示す図である。
【図２６】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図２７Ａ】本発明の実施形態における制御開始指令のコマンドの文例である。
【図２７Ｂ】本発明の実施形態における制御開始指令のコマンドの文例である。
【図２７Ｃ】本発明の実施形態における制御開始指令のコマンドの文例である。
【図２７Ｄ】本発明の実施形態における制御開始指令のコマンドの文例である。
【図２８】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図２９】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図３０】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図３１】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図３２Ａ】本発明の実施形態における機械構成例である。
【図３２Ｂ】本発明の実施形態における機械構成木の設定例である。
【図３３Ａ】本発明の実施形態における機械構成例である。
【図３３Ｂ】本発明の実施形態における機械構成例である。
【図３４】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図３５】本発明の実施形態における、次の補間位置・次の補間姿勢の算出方法の説明図である。
【図３６】本発明の実施形態における、次の補間位置・次の補間姿勢の算出方法の説明図である。
【図３７】本発明の実施形態における、次の補間位置・次の補間姿勢の算出方法の説明図である。
【図３８】本発明の実施形態における、次の補間位置・次の補間姿勢の算出方法の説明図である。
【図３９】本発明の実施形態における、次の補間位置・次の補間姿勢の算出方法の説明図である。
【図４０】本発明の実施形態における、次の補間位置・次の補間姿勢の算出方法の説明図である
【図４１Ａ】本発明の実施形態の適用例としての同期制御の説明図である。
【図４１Ｂ】本発明の実施形態の適用例としての同期制御のコマンド例である。
【図４２Ａ】本発明の実施形態の適用例としての重畳制御の説明図である。
【図４２Ｂ】本発明の実施形態の適用例としての重畳制御のコマンド例である。
【図４３Ａ】本発明の実施形態の適用例としてのバランスカットの説明図である。
【図４３Ｂ】本発明の実施形態の適用例としてのバランスカットのコマンド例である。
【図４４Ａ】本発明の実施形態の適用例としての同時多面５軸加工の説明図である。
【図４４Ｂ】本発明の実施形態の適用例としての同時多面５軸加工のコマンド例である
【図４５】本発明の実施形態における同期制御の関係式の例である。
【図４６】本発明の実施形態における関係式と当該関係式に対応する構文木の例である。
【図４７】本発明の実施形態における関係式と当該関係式に対応する構文リストの例である。
【図４８】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図４９】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図５０Ａ】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図５０Ｂ】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図５１】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図５２】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図５３】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図５４】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図５５】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図５６】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図５７】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図５８】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図５９】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図６０】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図６１】本発明の実施形態における同期・重畳制御方法を示すフローチャートである。
【図６２Ａ】本発明の実施形態における同期・重畳制御方法の適用例を示す図である。
【図６２Ｂ】本発明の実施形態における同期・重畳制御方法で用いられる関係式の例を示す図である。
【図６３Ａ】本発明の実施形態における同期・重畳制御方法の適用例を示す図である。
【図６３Ｂ】本発明の実施形態における同期・重畳制御方法で用いられる関係式の例を示す図である。
【図６４】従来の同期制御方法の例を示す図である。
【図６５】従来の重畳制御方法の例を示す図である。
【図６６】複雑な機械構成例を示す図である。
【図６７】複雑な機械構成例を示す図である。
【発明を実施するための形態】
【００３４】
以下、本発明の実施形態について、図１〜図６３Ｂを参照しながら詳述する。まず、本発明の実施形態に係る数値制御装置の構成について説明する。
【００３５】
〔１．発明の構成〕
図１には、本発明の実施形態に係る数値制御装置１００の構成例が示されている。数値制御装置１００は、主として、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、ＣＭＯＳ１４と、インタフェース１５、１８、１９と、ＰＭＣ（プログラマブル・マシン・コントローラ）１６と、Ｉ／Ｏユニット１７と、軸制御回路３０〜３４と、サーボアンプ４０〜４４と、スピンドル制御回路６０と、スピンドルアンプ６１とを備える。
【００３６】
ＣＰＵ１１は数値制御装置１００を全体的に制御するプロセッサである。ＣＰＵ１１は、ＲＯＭ１２に格納されたシステムプログラムを、バス２０を介して読み出し、該システムプログラムに従って数値制御装置１００の全体を制御する。
【００３７】
ＲＡＭ１３には、一時的な計算データや表示データ、及び表示器／ＭＤＩユニット７０を介してオペレータが入力した各種データが格納される。
【００３８】
ＣＭＯＳメモリ１４は、図示しないバッテリでバックアップされ、数値制御装置１００の電源がオフされても記憶状態が保持される不揮発性メモリとして構成される。ＣＭＯＳメモリ１４中には、インタフェース１５を介して読み込まれた加工プログラムや、表示器／ＭＤＩユニット７０を介して入力された加工プログラム等が記憶される。
【００３９】
ＲＯＭ１２には、加工プログラムの作成及び編集のために必要とされる編集モードの処理や自動運転のための処理を実施するための各種システムプログラムが、予め書き込まれている。
【００４０】
本発明を実行する加工プログラム等の各種加工プログラムは、インタフェース１５や表示器／ＭＤＩユニット７０を介して入力し、ＣＭＯＳメモリ１４に格納することができる。
【００４１】
インタフェース１５は、数値制御装置１００とアダプタ等の外部機器７２との接続を可能とするものである。外部機器７２側からは加工プログラムや各種パラメータ等が読み込まれる。また、数値制御装置１００内で編集した加工プログラムは、外部機器７２を介して外部記憶手段に記憶させることができる。
【００４２】
ＰＭＣ（プログラマブル・マシン・コントローラ）１６は、数値制御装置１００に内蔵されたシーケンスプログラムで、工作機械の補助装置（例えば、工具交換用のロボットハンドといったアクチュエータ）にＩ／Ｏユニット１７を介して信号を出力して制御する。また、工作機械の本体に配備された操作盤の各種スイッチ等の信号を受け、必要な信号処理をした後、信号をＣＰＵ１１に渡す。
【００４３】
表示器／ＭＤＩユニット７０は、ディスプレイやキーボード等を備えた手動データ入力装置である。インタフェース１８は、表示器／ＭＤＩユニット７０のキーボードからの指令やデータを受けて、これらをＣＰＵ１１に渡す。インタフェース１９は、手動パルス発生器等を備えた操作盤７１に接続されている。
【００４４】
各軸の軸制御回路３０〜３４は、ＣＰＵ１１からの各軸の移動指令量を受けて、各軸の指令をサーボアンプ４０〜４４に出力する。
【００４５】
サーボアンプ４０〜４４は、この指令を受けて、各軸のサーボモータ５０〜５４を駆動する。各軸のサーボモータ５０〜５４は、位置・速度検出器を内蔵し、この位置・速度検出器からの位置・速度フィードバック信号を軸制御回路３０〜３４にフィードバックし、位置・速度のフィードバック制御を行う。なお、ブロック図では、位置・速度のフィードバックについては省略している。
【００４６】
スピンドル制御回路６０は、工作機械への主軸回転指令を受け、スピンドルアンプ６１にスピンドル速度信号を出力する。スピンドルアンプ６１は、このスピンドル速度信号を受けて、工作機械のスピンドルモータ６２を指令された回転速度で回転させ、工具を駆動する。
【００４７】
スピンドルモータ６２には、歯車あるいはベルト等でパルスエンコーダ６３が結合されている。パルスエンコーダ６３は、主軸の回転に同期して帰還パルスを出力する。その帰還パルスは、バス２０を経由してＣＰＵ１１によって読み取られる。
【００４８】
なお、図１に示す数値制御装置１００の構成例では、軸制御回路３０〜３４の５つの軸制御回路と、サーボモータ５０〜５４の５つのサーボモータが示されている。しかし、本発明は、これには限定されず、任意の個数の軸制御回路及びサーボモータを備えることが可能である。
【００４９】
図２は、上記のＣＰＵ１１（以下では、「制御部１１」とも呼称する）が、ＲＯＭ１２に格納されたシステムプログラム及びアプリケーションプログラムを、バス２０を介して読み出し、該システムプログラム及びアプリケーションプログラムに従って実現する機能を示す機能ブロック図である。ＣＰＵ１１は、グラフ生成部１１１と、制御点座標系挿入部１１２と、要素間関係設定部１１３と、要素間関係出力計算部１１４と、要素間関係制御部１１５とを備える。
【００５０】
グラフ生成部１１１は、制御対象の機械構成をグラフ形式で生成する。その詳細な動作については、以下の「２．機械構成木の生成」で詳述する。
【００５１】
制御点座標系挿入部１１２は、機械構成のグラフに対し、制御点及び座標系を挿入する。その詳細な動作については、以下の「３．制御点と座標値の自動挿入」で詳述する。
【００５２】
要素間関係設定部１１３は、マスタの制御点を「第１制御点」、スレーブの制御点を「第２制御点」とした場合、第１制御点を第１要素として設定し、第２制御点を第２要素として設定し、第１要素と第２要素の関係を設定する。なお、「第１要素」及び「第２要素」は、制御点に限定されない。
要素間関係出力計算部１１４は、第１要素と前記第２要素の関係から関係出力を計算する。
要素間関係制御部１１５は、関係出力に基づき関係の制御を行う。
これらの詳細な動作については、以下の「４．同期・重畳制御方法」で詳述する。
【００５３】
図３は、要素間関係設定部１１３の機能ブロック図である。要素間関係設定部１１３は、関係式取得部１２１と構文解析部１２２とを備える。
【００５４】
後述のように数値制御装置１００が後述の関係式を用いて制御を実行する場合に、関係式取得部１２１はこの関係式を取得し、構文解析部１２２は、この関係式を解析する。また、後述のように数値制御装置１００が構文木を生成する場合には、構文解析部１２２は、解析結果として構文木を生成する。あるいは、後述のように数値制御装置１００が構文リストを生成する場合には、構文解析部１２２は、解析結果として構文リストを生成する。更に、要素間関係設定部１１３は、構文解析部１２２の解析結果を第１要素と第２要素との関係として設定する。
【００５５】
図４は、要素間関係出力計算部１１４の機能ブロック図である。要素間関係出力計算部１１４は、第１制御点移動先生成部１３１と、第２制御点移動先生成部１３２と、関係巡回部１３３を備え、関係巡回部１３３は関係出力処理部１３４を備える。
【００５６】
第１制御点移動先生成部１３１は、第１制御点の第１座標系上の第１移動先を生成し、第２制御点移動先生成部１３２は、第２制御点の第２座標系上の第２移動先を生成する。この場合、要素間関係出力計算部１１４は、第１移動先及び第２移動先を関係出力として出力する。
【００５７】
後述のように数値制御装置１００が要素間の関係式を用いて制御を実行する場合に、関係巡回部１３３は、第１要素と第２要素との関係の各関係式要素を辿り、関係出力処理部１３４は、関係巡回部１３３が辿りついた関係式要素毎の種別に応じて関係出力処理を行う。また、後述のように数値制御装置１００が構文木を生成する場合には、関係巡回部１３３は、構文木の各関係式要素を再帰的に辿り、数値制御装置１００が構文リストを生成する場合には、構文リストの各関係式要素を順次的に辿る。
【００５８】
図５は、要素間関係制御部１１５の機能ブロック図である。要素間関係制御部１１５は、第１各軸移動先生成部１４１、第２各軸移動先生成部１４２、第１移動実行部１４３、第２移動実行部１４４、出力操作部１４５を備える。
【００５９】
第１各軸移動先生成部１４１は、第１移動先から第１制御点及び第１座標系を構成する各軸の移動先である第１各軸移動先を生成する。第２各軸移動先生成部１４２は、第２移動先と第１各軸移動先とから第２制御点及び第２座標系を構成する各軸の移動先である第２各軸移動先を生成する。第１移動実行部１４３は、第１制御点及び第１座標系を構成する各軸を第１各軸移動先に移動させる。第２移動実行部１４４は、第２制御点及び第２座標系を構成する各軸を第２各軸移動先に移動させる。
また、後述のように数値制御装置１００が要素間の関係式を用いて制御を実行する場合に、出力操作部１４５は、要素間関係出力計算部１１４が計算した関係出力に基づき、数値制御装置１００の出力情報を操作する。
なお、ここでの「各軸」とは、直進軸や回転軸等の物理的な軸のことである。
【００６０】
図６は、第１制御点移動先生成部１３１の機能ブロック図である。第１制御点移動先生成部１３１は、第１現在位置計算部１５１、第１現在姿勢計算部１５２、及び第１補間情報生成部１５３を備える。
【００６１】
第１現在位置計算部１５１は、第１制御点の第１座標系上の第１現在位置を計算する。第１現在姿勢計算部１５２は、第１制御点の前記第１座標系上の第１現在姿勢を計算する。第１補間情報生成部１５３は、第１制御点に対して第１座標系上にて与えられた第１指令値から、補間周期毎の第１指令位置移動情報と第１指令姿勢変更情報とを生成する。
第１制御点移動先生成部１３１は、第１現在位置と第１現在姿勢と第１指令位置移動情報と第１指令姿勢変更情報とから第１移動先を計算する。
【００６２】
図７は、第２制御点移動先生成部１３２の機能ブロック図である。第２制御点移動先生成部１３２は、第２現在位置計算部１６１、第２現在姿勢計算部１６２、及び第２補間情報生成部１６３を備える。
【００６３】
第２現在位置計算部１６１は、第２制御点の第２座標系上の第２現在位置を計算する。第２現在姿勢計算部１６２は、第２制御点の前記第２座標系上の第２現在姿勢を計算する。第２補間情報生成部１６３は、第２制御点に対して第２座標系上にて与えられた第２指令値から、補間周期毎の第２指令位置移動情報と第２指令姿勢変更情報とを生成する。
第２制御点移動先生成部１３２は、同期制御の場合は、第２現在位置と第２現在姿勢とから、重畳制御の場合は、更に、第２指令位置移動情報と第２指令姿勢変更情報とから第２移動先を計算する。
【００６４】
図８は、第１補間情報生成部１５３の機能ブロック図である。第１補間情報生成部１５３は、第１指令位置移動情報変換部１７１と、第１指令姿勢変更情報変換部１７２とを備える。
【００６５】
第１指令位置移動情報変換部１７１は、位置変換情報により第１指令位置移動情報を変換する。第１指令姿勢変更情報変換部１７２は、姿勢変換情報により第１指令姿勢変更情報を変換する。
【００６６】
図９は、第２補間情報生成部１６３の機能ブロック図である。第２補間情報生成部１６３は、第２指令位置移動情報変換部１８１と、第２指令姿勢変更情報変換部１８２とを備える。
【００６７】
第２指令位置移動情報変換部１８１は、位置変換情報により第２指令位置移動情報を変換する。第２指令姿勢変更情報変換部１８２は、姿勢変換情報により第２指令姿勢変更情報を変換する。
【００６８】
図１０は、構文解析部１２２の機能ブロック図である。構文解析部１２２は、構文リスト生成部１９１、構文木生成部１９２、及び構文変換部１９３を備える。
【００６９】
構文リスト生成部１９１は、構文リストを生成する。構文木生成部１９２は、構文木を生成する。構文変換部１９３は、構文リストを構文木に、あるいは、構文木を構文リストに変換する。構文解析部１２２は、構文リスト生成部１９１が生成した構文リストを解析結果としてもよいし、構文木生成部１９２が生成した構文木を解析結果としてもよい。また、構文変換部１９３が、構文リストを構文木に変換する場合には、構文解析部１２２は、構文木を解析結果とし、構文変換部１９３が、構文木を構文リストに変換する場合には、構文解析部１２２は、構文リストを解析結果とする。
【００７０】
図１１は、関係出力処理部１３４の機能ブロック図である。関係出力処理部１３４は、制御点情報処理部２０１、座標系情報処理部２０２、制御点位置情報処理部２０３、制御構文処理部２０４、数学演算処理部２０５、定数処理部２０６、変数処理部２０７、型情報処理部２０８、制御点指令値処理部２０９、内部情報処理部２１０、入力情報処理部２１１、出力情報処理部２１２を備える。
【００７１】
制御点情報処理部２０１は、制御点情報を処理する。座標系情報処理部２０２は、座標系情報を処理する。制御点位置情報処理部２０３は、制御点の位置情報を処理する。制御構文処理部２０４は、制御構文を処理する。数学演算処理部２０５は、数学演算命令を処理する。定数処理部２０６は、定数を処理する。変数処理部２０７は、変数を処理する。型情報処理部２０８は、変数の型情報を処理する。制御点指令値処理部２０９は、制御点に対する指令値を処理する。内部情報処理部２１０は、数値制御装置１００の内部情報を処理する。入力情報処理部２１１は、数値制御装置１００への入力情報を処理する。出力情報処理部２１２は、数値制御装置１００からの出力情報を処理する。
【００７２】
図１２は、出力操作部１４５の機能ブロック図である。出力操作部１４５は、制御点移動部２２１、信号制御部２２２、変数制御部２２３、及び通信情報制御部２２４を備える。
【００７３】
関係出力が軸移動出力を含む場合に、制御点移動部２２１は、軸移動出力に基づいて各制御点が各座標系において設定された移動先に来るよう各制御点及び各座標系を構成する各軸の座標値を計算し、移動させる。
【００７４】
関係出力が信号出力を含む場合に、信号制御部２２２は、信号出力に基づいて各信号が設定された出力値となるよう制御する。
【００７５】
関係出力が変数出力を含む場合に、変数制御部２２３は、変数出力に基づいて各変数が設定された出力値となるよう制御する。
【００７６】
関係出力が通信情報出力を含む場合に、通信情報制御部２２４は、通信情報出力に基づいて各通信情報が設定された出力値となるよう制御する。
【００７７】
なお、上記の「関係式」は、少なくとも、第１制御点情報、第１座標系情報、第２制御点情報、第２座標系情報、第１制御点の第１座標系における第１位置関係情報、第２制御点の前記第２座標系における第２位置関係情報、制御構文、数学演算命令、定数、変数、変数の型情報、制御点に対する指令値情報、数値制御装置１００の内部状態を表す情報、
数値制御装置１００に対する入力情報、数値制御装置１００からの出力情報のいずれか１つを関係式要素として含む。
ここで、「制御構文」とは、例えば、ＩＦ文と、ＦＯＲ文と、ＷＨＩＬＥ文と、ＳＷＩＴＣＨ文と、ＧＯＴＯ文と、ＥＬＳＥ文と、ＥＬＳＥ  ＩＦ文と、ＤＯ文と、ＢＲＥＡＫ文と、ＣＯＮＴＩＮＵＮＥ文のうち、いずれか１つ以上を含んでもよい。
また、「数学演算命令」とは、例えば、四則演算と、関係演算と、論理演算と、代入演算と、三角関数と、指数関数と、対数関数のうち、いずれか１つ以上を含んでもよい。
また、「変数」とは、単一のデータと、配列データと、クラスオブジェクトと、クラスオブジェクトの配列のうち、いずれか１つ以上を含んでもよい。
また、「型情報」とは、例えば、整数型と、浮動小数点型と、文字型と、文字列型と、クラス型のうち、いずれか１つ以上を含んでもよい。
また、「数値制御装置１００に対する入力情報」とは、例えば、信号入力、センサ、通信情報、フィードバック値に係る情報のうち、いずれか１つ以上を含んでもよい。
また、「数値制御装置１００からの出力情報」とは、例えば、モータ５０〜５４への指令、信号出力、通信情報に係る情報のうち、いずれか１つ以上を含んでもよい。
【００７８】
また、後述のように、重畳指令が第１制御点に対する指令そのものである場合には、第１指令値をそのまま第２指令値としてもよい。
また、同期制御時には、第１座標系と第２座標系とは同一であってもよい。
また、数値制御装置１００は、機械構成情報をグラフ形式で有していてもよく、このグラフの全ノードにおいて制御点と座標系が定義されていてもよい。この場合に、第１座標系と前記第２座標系は同一のノードに定義されていてもよい。
【００７９】
なお、上記の「第１指令位置移動情報」、「第１指令姿勢変更情報」、「第２指令位置移動情報」、「第２指令姿勢変更情報」、「位置変換情報」、「姿勢変換情報」は、行列であってもよく、ベクトル形式であってもよく、ロール・ピッチ・ヨー形式であってもよい。
【００８０】
〔２．機械構成木の生成〕
本発明の実施形態に係る数値制御装置１００は、最初に、機械構成を表すグラフを生成する。グラフの一例として機械構成木を生成する生成方法について、図１３〜図１９を参照しながら詳述する。
【００８１】
例として、図１３に示す機械の構成を表現する機械構成木の生成方法について説明する。図１３の機械においては、Ｚ軸に対して垂直にＸ軸が設定され、Ｘ軸には工具１が設置され、Ｚ軸には工具２が設置されているとする。一方で、Ｙ軸上にＢ軸が設定され、Ｂ軸上にＣ軸が設定され、Ｃ軸にはワーク１とワーク２が設置されているとする。この機械構成を機械構成木として表現する方法は、以下の通りである。
【００８２】
まず、図１４に示すように、原点５０１とノード５０２Ａ〜５０２Ｇのみを配置する。この段階では、原点５０１とノード５０２、及びノード５０２間でのつながりは持たず、原点及びノードの各々の名称も設定されていない。
【００８３】
次に、各軸の軸名称（軸型）、各工具の名称、各ワークの名称、各原点の名称、各軸の物理軸番号（軸型）を設定する。次に、各軸の親ノード（軸型）、各工具の親ノード、各ワークの親ノードを設定する。最後に、各軸の交叉オフセット（軸型）、各工具の交叉オフセット、各ワークの交叉オフセットを設定する。その結果、図１５に示す機械構成木が生成される。
【００８４】
なお、機械構成木の各ノードは、上記の各情報に限られず、例えば、識別子（名称）、自身の親ノードの識別子、自身を親とする全ての子ノードの識別子、親ノードに対する相対オフセット（交叉オフセット）、親ノードに対する相対座標値、親ノードに対する相対移動方向（単位ベクトル）、ノード種別（直線軸／回転軸／ユニット（後述）／制御点／座標系／原点等）、物理軸番号、直交座標系と物理座標系の変換式に係る情報を有してもよく、あるいは、有さなくてもよい。
【００８５】
このように各ノードに値を設定していくことにより、数値制御装置１００内に機械構成木状のデータ構造を有するデータを生成する。更に、別の機械（又はロボット）を追加する場合も、原点を追加し、更にノードを追加することができる。
【００８６】
上記の機械構成木生成方法、とりわけ各ノードへの各値の設定方法を一般化したフローチャートを図１６に示す。
【００８７】
ステップＳ１１において、グラフ生成部１１１は、ノードに対して設定するパラメータの値を受け取る。
ステップＳ１２において、設定されたパラメータの項目が「自身の親ノード」の場合（Ｓ１２：ＹＥＳ）には、処理はステップＳ１３に移行する。「自身の親ノード」ではない場合（Ｓ１２：ＮＯ）には、処理はステップＳ１７に移行する。
【００８８】
ステップＳ１３において、パラメータが設定されるノードに、既に親ノードが設定されている場合（Ｓ１３：ＹＥＳ）には、処理はステップＳ１４に移行する。親ノードが設定されていない場合（Ｓ１３：ＮＯ）には、処理はステップＳ１５に移行する。
【００８９】
ステップＳ１４において、グラフ生成部１１１は、パラメータが設定されるノードの、現在の親ノードが持つ「子ノード」の項目から、自身の識別子を削除し、機械構成木を更新する。
【００９０】
ステップＳ１５において、グラフ生成部１１１は、パラメータを設定するノードの該当項目に値を設定する。
【００９１】
ステップＳ１６において、グラフ生成部１１１は、親ノードに対し、「子ノード」の項目に自身の識別子を追加し、機械構成木を更新した後、フローを終了する。
【００９２】
ステップＳ１７において、グラフ生成部１１１は、パラメータを設定するノードの該当項目に値を設定した後、フローを終了する。
【００９３】
上記の機械構成木状のデータ構造を有するデータの生成方法を用いることにより、機械の構成要素同士の親子関係を設定することが可能である。
ここで親子関係とは、例えば図１７Ａのように、２つの回転軸ノード１０４、１０５があったとき、一方のノード１０４の座標値の変化が、他方のノード１０５の幾何的状態（典型的には、位置・姿勢）に対して一方的に影響を及ぼすような関係のことである。この場合ノード１０４、１０５は親子関係にあると呼び、ノード１０４を親、ノード１０５を子と呼ぶ。
しかし、例えば図１７Ｂに示すように、２つの直線軸ノード１０２、１０３と４つのフリージョイント１０１により構成された機械構成においては、ノード１０２、１０３の一方の座標値（長さ）が変わることにより、他方の幾何的状態だけでなく、自身の幾何的状態も変わるような、相互に影響を及ぼす機構が存在する。このような場合は、互いに親であり子、すなわち親子関係が双方向であるとみなすことができる。
【００９４】
このように、あるノードの変化が他のノードに互いに影響し合うような機構については、利便性の観点から、１つのユニットとして捉え、このユニットを機械構成木に挿入することにより全体の機械構成木を生成する。ユニットは、図１８Ａのように二つの接続点１１０及び接続点１２０を持っており、ユニットが図１８Ｂのように機械構成木に挿入された場合、図１８Ｃのように、親ノードは接続点１２０に接続され、また、子ノードは接続点１１０に対して接続される。また、ユニットは、接続点１２０から接続点１１０への変換マトリクスを持っている。この変換マトリクスは、ユニットに含まれる各ノードの座標値によって表される。例えば図１９のような機械構成の場合、接続点１２０における位置・姿勢を表す同次マトリクスをＭＡとし、接続点１１０における位置・姿勢を表す同次マトリクスをＭＢとすると、それらのマトリクス間の変換式はユニットに含まれる各直線軸ノードの座標値ｘ１、ｘ２を用いて以下のように表される。
【数１】
2019008479.tif 000003
【００９５】
この機械構成を表すユニットは上記の［数１］の数式中のＴのような同次変換マトリクスを持つ。同次マトリクスとは、以下の［数２］の数式のように位置・姿勢をまとめて表現できる４×４マトリクスのことである。
【数２】
2019008479.tif 000004
【００９６】
また、親子関係が相互でない場合であっても、計算処理や設定を簡単にするために、ある複数のノードを予め１つにまとめたユニットを定義し、機械構成木中に構成してもよい。
【００９７】
上記のように、本実施形態においては、機械構成のグラフは、複数の軸をまとめて１つにしたユニットを構成要素として含むことができる。
【００９８】
〔３．制御点と座標値の自動挿入〕
機械構成上の様々な位置を、制御点として指定すると共に、機械構成上の様々な箇所の座標系を設定するため、上記の「２．機械構成木の生成」で生成された機械構成木を用いて、以下の方法を実施する。
【００９９】
例えば、図２０Ａに示すロータリインデックスマシン３００においては、Ｚ１軸に対して垂直にＸ１軸が設定され、Ｘ１軸に工具１が設置されている。また、Ｚ２軸に対して垂直にＸ２軸が設定され、Ｘ２軸上に工具２が設置されている。更に、テーブルにおいては、Ｃ軸上にＣ１軸とＣ２軸が並列に設定され、Ｃ１軸とＣ２軸の各々にワーク１とワーク２が設置されているとする。この機械構成を機械構成木で表わすと、図２０Ｂに示す機械構成木となる。
【０１００】
各ワークから機械原点に連なる一連のノードを例に取ると、図２１に示すように、機械原点、Ｃ軸、Ｃ１軸、Ｃ２軸、ワーク１、ワーク２の各々に座標系と制御点を自動挿入する。これを、テーブルに対してのみならず、各工具から機械原点に連なる一連のノード、すなわちＸ１軸、Ｘ２軸、Ｚ１軸、Ｚ２軸、工具１、工具２のすべてに対して実施する。その結果、図２２に示すように、機械構成木を構成するすべてのノードに対して、各々に対応する制御点と座標系が自動挿入される。通常、加工を行う場合にはワークに座標系、工具を制御点として指定する。これにより、例えば、ワーク自身を所定の位置へ移動させるために、ワークに制御点を指定したい場合や、ある工具で別の工具を研磨するために、工具自身に座標系を設定したい場合といった様々な場合に対応することも可能となる。
【０１０１】
また、図２３Ａに示すように、各制御点及び座標系は、オフセットを有する。そのため、ノード中心から離れた点を制御点や座標系原点にすることも可能である。更に、各制御点及び座標系は姿勢マトリクスを持つ。この姿勢マトリクスは、制御点の姿勢マトリクスである場合、制御点の姿勢（向き、傾き）を表し、座標系の姿勢マトリクスの場合、座標系の姿勢を表わす。図２３Ｂに示す機械構成木においては、オフセット及び姿勢マトリクスは、各々が対応するノードに紐づく形で表現される。更に、各制御点及び座標系は、機械構成木のルートまでの経路上に存在するノードの「移動」及び「交叉オフセット」それぞれを加味するか／しないかの情報を持っており、それらを設定できる。
【０１０２】
上記の制御点の自動挿入方法を一般化したフローチャートを図２４に示す。このフローチャートは、詳細には、チャートＡとチャートＢとを含み、後述のように、チャートＡの途中でチャートＢが実行されるという構成となっている。
【０１０３】
まず、チャートＡについて説明する。
ステップＳ２１において、グラフ生成部１１１は、機械構成木を設定する。
ステップＳ２２において、チャートＢを実行し、チャートＡのフローを終了する。
【０１０４】
次に、チャートＢについて説明する。
チャートＢのステップＳ３１において、ノードは制御点・座標系を挿入済である場合（Ｓ３１：ＹＥＳ）には、フローを終了する。ノードに制御点・座標系を挿入済でない場合（Ｓ３１：ＮＯ）には、処理はステップＳ３２に移行する。
【０１０５】
ステップＳ３２において、制御点座標系挿入部１１２は、ノードに制御点・座標系を挿入し、変数ｎを１つスタックする。また、ｎ＝１とする。
【０１０６】
ステップＳ３３において、ノードにｎ番目の子ノードが存在する場合（Ｓ３３：ＹＥＳ）には、処理はステップＳ３４に移行する。ノードにｎ番目の子ノードが存在しない場合（Ｓ３３：ＮＯ）には、処理はステップＳ３６に移行する。
【０１０７】
ステップＳ３４において、ｎ番目の子ノードについて、チャートＢ自身を再帰的に実行する。
【０１０８】
ステップＳ３５において、ｎを１だけインクリメントする。すなわちｎ＝ｎ＋１とし、処理はステップＳ３３に戻る。
【０１０９】
ステップＳ３６において、変数ｎを１つポップし、チャートＢのフローを終了する。
【０１１０】
上記の方法により、制御点座標系挿入部１１２は、機械構成のグラフの各ノードに対し、制御点及び座標系をノードとして挿入する。なお、上記では、制御点及び座標系をノードとして追加する場合の実施例を示したが、図２５に示すように、制御点座標系挿入部１１２は、機械構成のグラフの各ノードに対し、制御点及び座標系を情報として持たせる実施形態も同様に可能である。
【０１１１】
〔４．同期・重畳制御方法〕
本発明に係る同期・重畳制御方法は、マスタの制御点を「第１制御点」、スレーブの制御点を「第２制御点」とした場合、延いては、マスタに係る各要素に「第１」を付し、スレーブに係る各要素に「第２」を付した場合、第１制御点と第２制御点とに関連して定義された関係式を用いる制御（これを以降では、「フレキシブル同期制御」とも呼称する）のフローと、当該関係式を用いない制御のフローとを有するが、共通して、以下の方法により、同期・重畳制御を実施する。
【０１１２】
すなわち、数値制御装置１００は、上記の方法により、制御対象の機械の機械構成情報をグラフ形式で持っており、このグラフの全ノードにおいて、制御点と座標系とが定義されている。
【０１１３】
まず、機械構成グラフ中の、第１制御点、第１座標系、第２制御点、第２座標系を指定し、制御開始を指令する。
次に、第１制御点に対して第１指令値が与えられ、第１制御点および第１座標系を構成する各軸の第１各軸移動先が決定される。第２制御点に対して第２指令値が与えられたとき、第１各軸移動先および第２指令値とから、第２制御点および第２座標系を構成する各軸の第２各軸移動先が決定される。
そして、第１制御点および第１座標系を構成する各軸が第１各軸移動先に来るよう移動実行され、また第２制御点および第２座標系を構成する各軸が第２各軸移動先に来るよう移動実行される。
第２制御点と第２座標系とは、それぞれ、第１制御点と第１座標系と同一でもよく、異なってもよい。
【０１１４】
以下、上記の制御方法について、図２６〜図６３Ｂを参照しながら、詳述する。図２６は、上記の制御方法を反映したフローチャートを示す。
【０１１５】
ステップＳ４１において、制御の開始を指令する。
より具体的には、第１制御点、第１座標系、第２制御点、第２座標系を指定し、制御開始指令を行うことで制御を開始する。なお、第２制御点に対しては、第２座標系上の第２指令値を与えてもよい。
なお、第１制御点と第１座標系の指定についてであるが、図２７Ａは、制御開始指令のコマンドの文例を示す。以下、図２７Ａの記載の繰り返しとなるが、プログラム内の各行の指令内容について説明する。
１行目の「Ｇ５４．０  座標系ｙＭ０」により、第１座標系を選択する。
２行目の「Ｇ４３．０  制御点ｘＮ０」により、第１制御点を選択する。
３行目の「Ｇ９９．０」により、第１座標系上で第１制御点に対して制御を開始する。
４行目の「Ｇ０１  Ｘ＿Ｙ＿Ｚ＿」により、第１制御点に対して、第１座標系上で第１指令値を与える。
なお、後述の第２制御点と第２座標系の指定、及び、第２座標系上での第２制御点に対する制御開始指令は、上記第１制御点に対する制御開始後に行ってもよい。
【０１１６】
第２制御点と第２座標系の指定についてであるが、図２７Ｂは、制御開始指令のコマンドの文例を示す。以下、図２７Ｂの記載の繰り返しとなるが、プログラム内の各行の指令内容について説明する。
【０１１７】
１行目の「Ｇ５４．９  座標系ｙＭ１」により、第２座標系を選択する。
２行目の「Ｇ４３．９  制御点ｘＮ」により、第２制御点を選択する。
３行目の「Ｇ９９．９」により、第２座標系上で第２制御点に対して制御を開始する。
４行目の「Ｇ０１  Ｘ＿Ｙ＿Ｚ＿」により、第２制御点に対して、第２座標系上で第２指令値を与える。
【０１１８】
あるいは図２７Ｃのように、第２指令値に対する変換行列を設定した上で制御開始してもよい（指定が無い場合は単位行列としてもよい）。以下、図２７Ｃの記載の繰り返しとなるが、プログラム内の各行の指令内容について説明する。
【０１１９】
１行目の「Ｇ５４．９  座標系ｙＭ１」により、第２座標系を選択する。
２行目の「Ｇ４３．９  制御点ｘＮ」により、第２制御点を選択する。
３行目の「Ｇ９９．６［１，０，０，０］［０，１，０，０］［０，０，−１，０］［０，０，０，１］」により、位置変換行列ＭＭを設定する。
４行目の「Ｇ９９．７［１，０，０，０］［０，１，０，０］［０，０，−１，０］［０，０，０，１］」により、姿勢変換行列ＭＰを設定する。
５行目の「Ｇ９９．９」により、第２座標系上で第２制御点に対して制御を開始する。
６行目の「Ｇ０１  Ｘ＿Ｙ＿Ｚ＿」により、第２制御点に対して、第２座標系上で第２指令値を与える。
【０１２０】
あるいは図２７Ｄのように、第１制御点に対して与えられた第１指令値を、第２制御点に対する第２座標系上の第２指令値とすることができてもよい。以下、図２７Ｄの記載の繰り返しとなるが、プログラム内の各行の指令内容について説明する。
【０１２１】
１行目の「Ｇ５４．９  座標系ｙＭ１」により、第２座標系を選択する。
２行目の「Ｇ４３．９  制御点ｘＮ」により、第２制御点を選択する。
３行目の「Ｇ９９．８  制御点ｚＬ  座標系ｙＭ２」により、第１制御点ｚＬに対する第１座標系ｙＭ２上の指令を第２指令値とする。重畳指令として選択する。
４行目の「Ｇ９９．９」により、第２座標系上で第２制御点に対して制御開始する。なお、この行において、指令値が無くても、自動的に第１指令値が第２指令値としても扱われる。
【０１２２】
ステップＳ４２において、要素間関係設定部１１３はチャートαを実行する。
ステップＳ４３において、要素間関係出力計算部１１４はチャートβを実行する。
ステップＳ４４において、要素間関係制御部１１５はチャートγを実行する。
ステップＳ４５において、制御を終了する場合（Ｓ４５：ＹＥＳ）には、処理を終了する。制御を終了しない場合（Ｓ４５：ＮＯ）には、処理はステップＳ４３に戻る。
【０１２３】
図２８は、チャートαのフローを示す。
ステップＳ５１において、関係式を使わない場合（Ｓ５１：ＮＯ）には、処理はステップＳ５２に移行する。ステップＳ５１において、関係式を使う場合（Ｓ５１：ＹＥＳ）には、処理はステップＳ５３に移行する。
ステップＳ５２において、要素間関係設定部１１３は、指令で与えられた第１制御点を第１要素、第２制御点を第２要素として、同期関係を設定し、チャートαの処理を終了する。なお、関係式を使わない場合、以降のフローチャートでは、第２指令値の有無によって同期制御か重畳制御かを区別しているが、ここで、「制御開始＜同期＞、制御開始＜重畳＞」といった指令によって、制御を区別してもよい。
ステップＳ５３において、要素間関係設定部１１３は、例えば、「制御開始＜関係式０００１＞」等の指令により指定された関係式を取得し、処理はステップＳ５４に移行する。
ステップＳ５４において、要素間関係設定部１１３は、関係式から構文木を作成し、チャートαの処理を終了する。
なお、上記のステップＳ５３及びＳ５４の詳細については後述する。
【０１２４】
図２９は、チャートβのフローを示す。
ステップＳ６１において、関係式を使わない場合（Ｓ６１：ＮＯ）には、処理はステップＳ６２に移行する。ステップＳ６１において、関係式を使う場合（Ｓ６１：ＹＥＳ）には、処理はステップＳ６３に移行する。
ステップＳ６２において、要素間関係出力計算部１１４は、チャートＸを実行し、チャートβの処理を終了する。
ステップＳ６３において、要素間関係出力計算部１１４は、チャートＦを実行し、チャートβの処理を終了する。
【０１２５】
図３０は、チャートγのフローを示す。
ステップＳ７１において、関係式を使わない場合（Ｓ７１：ＮＯ）には、処理はステップＳ７２に移行する。ステップＳ７１において、関係式を使う場合（Ｓ７１：ＹＥＳ）には、処理はステップＳ７３に移行する。
ステップＳ７２において、要素間関係制御部１１５は、チャートＹを実行し、チャートγの処理を終了する。
ステップＳ７３において、要素間関係制御部１１５は、チャートＳを実行し、チャートγの処理を終了する。
【０１２６】
なお、図２６に記載のフローチャートにおいて、ステップＳ４２においてチャートαを実行し、ステップＳ４３においてチャートβを実行し、ステップＳ４４においてチャートγを実行しているが、本発明の実施形態はこれには限定されない。例えば、関係式を用いない場合、要素間関係出力計算部１１４が、チャートβにおいてチャートＸの一部のフローを実行した後、要素間関係制御部１１５は、チャートγにおいてチャートＹの一部のフローを実行し、その後、要素間関係出力計算部１１４が、チャートβにおいてチャートＸの他のフローを実行してもよい。同様に、関係式を用いる場合、要素間関係出力計算部１１４が、チャートβにおいてチャートＦの一部のフローを実行した後、要素間関係制御部１１５は、チャートγにおいてチャートＳの一部のフローを実行し、その後、要素間関係出力計算部１１４が、チャートβにおいてチャートＦの他のフローを実行してもよい。
【０１２７】
〔４．１  関係式を用いない場合の制御〕
〔４．１．１  動作フロー〕
上記のように、関係式を用いない場合は、ステップＳ４１を実行し、チャートαのステップＳ５１、Ｓ５２を実行した後、チャートβのステップＳ６２においてチャートＸを実行し、チャートγのステップＳ７２においてチャートＹを実行する。
【０１２８】
図３１は、チャートＸのフローを示す。
ステップＳ８１において、第１現在位置計算部１５１は、第１制御点の第１座標系上の第１現在位置を計算し、第１現在姿勢計算部１５２は、第１制御点の第１座標系上の第１現在姿勢を計算する。
【０１２９】
より具体的には、例えば、図３２Ａのような機械に対して図３２Ｂのように機械構成木が設定されており、さらに制御点として制御点ｘＮ及び座標系として座標系ｙＭが指定されている場合、図３３Ａ及び図３３Ｂに示すように、各軸ｘ１〜ｘＮが制御点を構成し、各軸ｙ１〜ｙＭが座標系を構成する。このとき、指定された制御点の、機械構成木のルート（機械座標系）に対する制御点位置ｐｏｓＣ・制御点姿勢ｍａｔＣは一般的には以下の式により、制御点を構成する各軸位置から求められる。
【数３】
2019008479.tif 000005
【数４】
2019008479.tif 000006
【０１３０】
ただし、記号の意味は以下の通りである。
【数５】
2019008479.tif 000007
【０１３１】
ｏｆｓｘｉ：ノードｘｉの交叉オフセット；
ｏｆｆｓｅｔｘｉ：ノードｘｉの交叉オフセットを加味するかしないか；
ｄｘｉ：ノードｘｉが直進軸か回転軸かを区別するフラグ；
ｖｘｉ：ノードｘｉの軸方向；
ｍｏｖｅｘｉ：ノードｘｉの移動を加味するかしないか；
ｏｆｓ［ｃｔｒｌ］：制御点の交叉マトリクス；
ｍａｔ［ｃｔｒｌ］：制御点の姿勢マトリクス；
Ｔ（ｏｆｓ，０）：単位行列；
Ｔ（ｏｆｓ，１）：ｏｆｓ分の並行移動行列；
Ｓ（ｘ，＊，ｖ，０）：単位行列；
Ｓ（ｘ，直進，ｖ，１）：方向ｖにｘ移動する並行移動行列；
Ｓ（ｘ，回転，ｖ，１）：方向ｖ周りにｘ回転する回転移動行列。
【０１３２】
さらに、上記のように求めた機械構成木のルート（機械座標系）に対する制御点位置ｐｏｓＣ・制御点姿勢ｍａｔＣは、以下の式で、指定された座標系に対する制御点位置ｐｏｓｗ・制御点姿勢ｍａｔｗに変換できる。
【数６】
2019008479.tif 000008
【数７】
2019008479.tif 000009
【０１３３】
ただし、記号の意味は以下の通りである。
ｏｆｓ［ｃｏｏｒｄ］：座標系の交叉オフセット；
ｍａｔ［ｃｏｏｒｄ］：座標系の姿勢マトリクス。
【０１３４】
よって、ここまでの計算により、指定された制御点と座標系の各軸位置から、指定座標系上の現在位置と現在姿勢を求めることができる。この方法により、第１制御点の第１座標系上の第１現在位置と第１現在姿勢を求めることができる。
【０１３５】
なお、機械構成木が設定されていない場合であっても、機械構成と軸の対応関係をある固定的なものと見なし、また固定的な制御点及び座標系から選択させることで、同様の計算が可能である。
【０１３６】
ステップＳ８２において、第１補間情報生成部１５３が、第１制御点に対し与えられた第１座標系上の第１指令値について、補間周期毎に第１指令位置移動行列及び第１指令姿勢移動行列を計算する。
【０１３７】
より具体的には、指定制御点の指定座標系上の現在位置行列をＭｐｏｓ１、次の補間位置行列をＭｐｏｓ２とすると、指令位置移動行列Ｍｐｏｓは、以下の並行移動行列で表わされる。
【数８】
2019008479.tif 000010
【０１３８】
また、指定制御点の指定座標系上の現在姿勢行列をＭｍａt１、次の補間姿勢行列をＭｍａt２とすると、指令姿勢変更行列Ｍｍａｔは、以下の行列で表わされる。
【数９】
2019008479.tif 000011
【０１３９】
ただし、Ｍｐｏｓ１、Ｍｐｏｓ２、Ｍｍａｔ１、Ｍｍａｔ２は、ステップＳ８１で求めた現在位置・現在姿勢、及び、次の補間位置・次の補間姿勢により、以下のように定義される。
【数１０】
2019008479.tif 000012
【０１４０】
なお、次の補間位置・次の補間姿勢の算出方法については、詳しくは、以下の「４．１．２  次の補間位置・次の補間姿勢の算出方法」で後述する。
【０１４１】
ステップＳ８３において、第１制御点移動先生成部１３１は、第１現在位置・第１現在姿勢・第１指令位置移動行列・第１指令姿勢移動行列から、第１制御点の第１座標系上の第１移動先を計算し、出力する。
【０１４２】
より具体的には、ステップＳ８２で求めた第１制御点の第１座標系上の現在位置ｐｏｓｗ・現在姿勢ｍａｔｗと、第１指令位置移動行列Ｍｐｏｓと、第１指令姿勢変更行列Ｍｍａｔとから、第１座標系上の次の補間位置ｐｏｓと次の補間姿勢ｍａｔは、以下の式で求められる。
【数１１】
2019008479.tif 000013
【０１４３】
ステップＳ８４において、第２現在位置計算部１６１は、第２制御点の第２座標系上の第２現在位置を計算し、第２現在姿勢計算部１６２は、第２制御点の第２座標系上の第２現在姿勢を計算する。
【０１４４】
より具体的には、ステップＳ８１と同様の方法により、第２制御点の第２座標系上の第２現在位置と第２現在姿勢が得られる。
【０１４５】
ステップＳ８５において、第２指令値がない場合（Ｓ８５：ない）には、同期制御のため、処理はステップＳ８６に移行する。ステップＳ８５において、第２指令値がある場合（Ｓ８５：ある）には、重畳制御のため、処理はステップＳ８７に移行する。
【０１４６】
ステップＳ８６において、第２現在位置・第２現在姿勢を、そのまま第２制御点の第２座標系上の第２移動先とし、出力する。
【０１４７】
ステップＳ８７において、第２補間情報生成部１６３は、第２制御点に対し与えられた第２座標系上の第２指令値について、補間周期毎に第２指令位置移動行列及び第２指令姿勢移動行列を計算する。
【０１４８】
より具体的には、ステップＳ８２と同様の方法により、第２指令位置移動行列・第２指令姿勢移動行列が得られる。
【０１４９】
ステップＳ８８において、第２指令位置移動情報変換部１８１は、位置変換行列ＭＭにより第２指令位置移動行列を変換し、第２指令姿勢変更情報変換部１８２は、姿勢変換行列ＭＰにより、第２指令姿勢変更行列を変換する。
【０１５０】
より具体的には、以下の式により、第２指令位置移動情報変換部１８１は、位置変換行列ＭＭにより第２指令位置移動行列を変換し、第２指令姿勢変更情報変換部１８２は、姿勢変換行列ＭＰにより、第２指令姿勢変更行列を変換する。
【数１２】
2019008479.tif 000014
【０１５１】
ステップＳ８９において、第２制御点移動先生成部１３２は、第２現在位置、第２現在姿勢、第２指令位置移動行列、第２指令姿勢移動行列から、第２制御点の第２座標系上の第２移動先を計算する。
【０１５２】
より具体的には、ステップＳ８４で求めた第２現在位置ｐｏｓｗ２・第２現在姿勢ｍａｔｗ２と、ステップＳ８８で求めた第２指令位置移動行列Ｍｐｏｓ’と第２指令姿勢変更行列Ｍｍａｔ’とから、第２制御点の第２座標系上の次の補間位置ｐｏｓ２と次の補間姿勢ｍａｔ２は、以下の式で求められる。
【数１３】
2019008479.tif 000015
【０１５３】
図３４はチャートＹのフローを示す。
ステップＳ９１において、第１各軸移動先生成部１４１は、第１制御点の第１座標系上の第１移動先から、第１制御点及び第１座標系を構成する各軸の第１各軸移動先を計算する。
【０１５４】
より具体的には、第１制御点の第１座標系上の次の補間位置ｐｏｓと、次の補間姿勢ｍａｔと、第１制御点の各軸座標値ｘｉと、第１座標系の各軸座標値ｙｉと、第１制御点の機械構成木のルート（機械座標系）に対する補間位置ｐｏｓＣ、補間姿勢ｍａｔＣについて、以下の連立方程式が成り立つ。
【０１５５】
【数１４】
2019008479.tif 000016
【数１５】
2019008479.tif 000017
【０１５６】
上記の連立方程式を解くことで、第１制御点の各軸座標値ｘｉと第１座標系の各軸座標値ｙｉを求めることができる。連立方程式の解はグレブナー基底を求めることにより得られる。詳しくは、以下の「４．１．２  次の補間位置・次の補間姿勢の算出方法」で後述する。
【０１５７】
ステップＳ９２において、第２各軸移動先生成部１４２は、第２制御点の第２座標系上の第２移動先と第１制御点の第１各軸移動先から、第２制御点と第２座標系の第２各軸移動先を計算する。
【０１５８】
より具体的には、ステップＳ９１と同様に、第２制御点及び第２座標系について連立方程式を立て、それを解くことで第２各軸移動先を求めることができる。ただし、第２制御点及び第２座標系に第１各軸移動先が含まれる場合は、それらを連立方程式の解として使用し、第１各軸移動先以外の各軸について解を求める。
【０１５９】
ステップＳ９３において、第１移動実行部１４３は、第１制御点と第１座標系を構成する各軸を、第１各軸移動先に移動し、第２移動実行部１４４は、第２制御点と第２座標系を構成する各軸を、第２各軸移動先に移動する。
【０１６０】
〔４．１．２  次の補間位置・次の補間姿勢の算出方法〕
図３５において、機械座標系上における制御点現在位置（ＸＣ，ＹＣ，ＺＣ）は、以下の式で求められる。
【数１６】
2019008479.tif 000018
【０１６１】
ただし記号の意味は以下の通りである。
Ｔ（ｏｆｓ）：ｏｆｓ分の並行移動行列；
Ｓ（ｘ，直進，ｖ）：方向ｖにｘ移動する並行移動行列；
Ｓ（ｘ，回転，ｖ）：方向ｖ周りにｘ回転する回転移動行列。
【０１６２】
図３６において、（ＸＣ，ＹＣ，ＺＣ）を用いて、指定座標系上における制御点現在位置（ＸＣＷ，ＹＣＷ，ＺＣＷ）は、以下の式で求められる。
【数１７】
2019008479.tif 000019
【０１６３】
図３７において、（ＸＣＷ，ＹＣＷ，ＺＣＷ）を用いて、指定座標系上における次の補間位置（ＸＷ’，ＹＷ’，ＺＷ’）は以下の式で求められる。
【数１８】
2019008479.tif 000020
【０１６４】
ただし、記号の意味は以下の通りである。
Ｆ：補間周期毎の移動速度。
【０１６５】
図３８において、機械座標系上における制御点現在姿勢（ＩＣ，ＪＣ，ＫＣ）は、以下の式で求められる。
【数１９】
2019008479.tif 000021
【０１６６】
ただし、記号の意味は以下の通りである。
Ｓ’（ｘ，直進，ｖ）：単位行列（何もしない）；
Ｓ’（ｘ，回転，ｖ）：方向ｖ周りにｘ回転する回転移動行列。
【０１６７】
よって、図３９において、指定座標系上における制御点現在姿勢（ＩＣＷ，ＪＣＷ，ＫＣＷ）は、以下の式で求められる。
【数２０】
2019008479.tif 000022
【０１６８】
よって、図４０において、指定座標系上における次の補間姿勢（ＩＷ’，ＪＷ’，ＫＷ’）は、以下の式で求められる。
【数２１】
2019008479.tif 000023
【０１６９】
以上のように次の補間位置（ＸＷ’，ＹＷ’，ＺＷ’）と補間姿勢（ＩＷ’，ＪＷ’，ＫＷ’）を求めたら、制御点位置、制御点姿勢それぞれについて、以下のように連立方程式を立てる。
【数２２】
2019008479.tif 000024
【０１７０】
この連立方程式を各ｘｉ’、ｙｉ’に関して解くことで、各軸の次の補間位置が求まる。このとき、辞書式順序ｘ１’＞ｘ２’＞・・・＞ｘＮ’＞ｙ１’＞ｙ２’＞・・・＞ｙＭ’に基づき上記連立方程式のグレブナー基底を求めると、最下位順序ｙＭ’についての一元多次方程式が求まる。これを解けばｙＭ’の解が求められ、この解を用いて他のグレブナー基底についても式を順番に解くことで、上記連立方程式を各ｘｉ’，ｙｉ’に関して解を求めることができる。グレブナー基底はＢｕｃｈｂｕｒｇｅｒアルゴリズムにより求めることができるが、他のアルゴリズムを使っても良い。
【０１７１】
〔４．１．３  適用例〕
〔４．１．３．１  同期制御〕
上記のステップＳ８７及びステップＳ８８で特に何もしない、すなわち、第２指令位置移動行列、第２指令姿勢移動行列、位置変換行列、姿勢変換行列を単位行列とした場合には、第２制御点の第２座標系に対する位置関係を保って連れ回るような制御（同期制御）が実現される。
【０１７２】
図４１Ａの例では、制御点ｚＬに対する座標系ｙＭの上の移動指令等により座標系ｙＭは動的に変化するが、制御点ｘＮの移動は、その座標系ｙＭの変化に連れ回るように制御される。なお、図４１Ｂは、同期制御の場合のコマンド例を示す。
【０１７３】
〔４．１．３．２  重畳制御〕
上記のステップＳ８８で特に何もしない、すなわち、位置変換行列、姿勢変換行列を単位行列とした場合には、第２制御点は第２座標系上で第２指令値分だけ移動するような制御（重畳制御）が実現される。
【０１７４】
図４２Ａの例では、制御点ｚＬに対する座標系ｙＭの上の移動指令等により座標系ｙＭは動的に変化するが、制御点ｘＮの移動は、動的に変化する座標系ｙＭ上で第２指令値により重畳指令された経路を辿るように制御される。なお、図４２Ｂは、重畳制御の場合のコマンド例を示す。
【０１７５】
〔４．１．３．３  バランスカット〕
第１制御点に対する指令をそのまま第２制御点に対する指令とし、かつ位置変換行列ＭＭ・姿勢変換行列ＭＰを、例えば以下のように設定する。
【数２３】
2019008479.tif 000025
【０１７６】
この場合、第２制御点が第１制御点に対して面対称に移動し、ワークの両面加工（バランスカット）が実現される。
図４３Ａの例では、制御点ｚＬに対する座標系ｙＭの上の移動指令等により座標系ｙＭは動的に変化するが、制御点ｘＮの移動は、動的に変化する座標系ｙＭ上において、制御点ｚＬと面対称な経路を辿るように制御される。なお、図４３Ｂは、バランスカットの場合のコマンド例を示す。
【０１７７】
〔４．１．３．４  同時多面５軸加工（９軸インペラ加工）〕
第１制御点に対する指令をそのまま第２制御点に対する指令とし、かつ位置変換行列ＭＭ・姿勢変換行列ＭＰを例えば以下のように設定する。
【数２４】
2019008479.tif 000026
【０１７８】
この場合、第２制御点が第１制御点に対して軸対称に移動し、同時多面５軸加工が実現される。
図４４Ａの例では、制御点ｚＬに対する座標系ｙＭ２の上の移動指令等により座標系ｙＭ１も動的に変化するが、制御点ｘＮの移動は、動的に変化する座標系ｙＭ１上において、制御点ｚＬと軸対称な経路を辿るように制御される。なお、図４４Ｂは、同時多面５軸加工（９軸インペラ加工）の場合のコマンド例を示す。
【０１７９】
〔４．２  関係式を用いる場合の制御〕
〔４．２．１  動作フロー〕
上記のように、関係式を用いる場合は、ステップＳ４１を実行し、チャートαのステップＳ５１、Ｓ５３、Ｓ５４を実行した後、チャートβのステップＳ６３においてチャートＦを実行し、チャートγのステップＳ７３においてチャートＳを実行する。
【０１８０】
ステップＳ４１において、フレキシブル同期制御を開始する。
より具体的には、例えば、
「Ｇ９９．１  ＜ｅｑｕａｔｉｏｎ００１＞」
といったような指令により、制御の開始を指令する。
このとき、ｅｑｕａｔｉｏｎ００１という名前で定義されたフレキシブル同期制御の関係式を取得する。なお、図４５は、ｅｑｕａｔｉｏｎ００１という名前で定義されたフレキシブル同期制御の関係式の例である。
【０１８１】
フレキシブル同期制御の関係式は、特定の制御点の特定の座標系上の座標値や各種制御構文、数学演算等により構成される。上記では、指令によりフレキシブル同期制御を開始したが、例えば電源投入時に、所定のフォルダに格納された複数のフレキシブル同期制御関係式を自動的に開始することで、指令をしなくてもフレキシブル同期制御を開始してもよい。
【０１８２】
ステップＳ５４において、構文解析部１２２が、ステップＳ５３で得た関係式から構文木を作成する。
より具体的には、構文解析方法としては、再帰下降型構文解析法等で構文木を得ることができる。また、他の構文解析法を用いてもよい。図４６は、関係式と当該関係式に対応する構文木の例である。
【０１８３】
こうして得た構文木を、チャートＦにより再帰的に辿りながら処理を行うことで、関係式に従った同期制御を実現できる。同期制御の対象は軸移動だけに限るものではなく、信号出力や通信出力等も含んでもよい。
【０１８４】
あるいは、構文解析部１２２は、解析結果を処理順に並べた構文リストを生成してもよい。図４７は、関係式と当該関係式に対応する構文リストの例である。この構文リストにおいて、例えば、０００４の行は、レジスタＲ１、Ｒ２の値同士の比較を行い、比較結果をレジスタＲ３に格納していることを示している。また、０００５の行は、レジスタＲ３が真なら、ＪＵＭＰ０００６を実行し、偽なら、ＪＵＭＰ００１０を実行することを示している。
【０１８５】
なお、本フローチャートでは説明を簡単にするため、演算子として“＝”や“＞”、制御構文として“ｉｆ”、情報として指令値、座標値等を用いて例示したが、実際はこれに限るものではなく、関係式中には、位置情報、“ｓｗｉｔｃｈ”や“ｆｏｒ”、“ｗｈｉｌｅ”といったその他の制御構文、四則演算や“ｓｉｎ／ｃｏｓ”等の数学演算命令、数値制御装置の内部状態情報、信号やセンサ出力や接続機器からのフィードバック情報等数値制御装置への入力情報、モータへの指令パルスや信号出力や通信情報等の数値制御装置からの出力情報を含んでもよい。
関係式がそれらを含む場合、それらに対する振る舞いを定義して同様にフローチャートに組み込むことで対応可能である。
【０１８６】
図４８は、チャートＦのフローを示す。
ステップＳ１００において、構文木のルートノードに対して、後述のチャートＧを実行し、処理を終了する。
【０１８７】
図４９は、チャートＧのフローを示す。
ステップＳ１０１において、要素間関係出力計算部１１４は、変数ｎを１つスタックし、ｎ＝１とする。
ステップＳ１０２において、要素間関係出力計算部１１４は、後述のチャートＨを実行し、各ノードを処理する。
【０１８８】
ステップＳ１０３において、現時点において処理対象としているノードに、ｎ番目の子ノードが存在する場合（Ｓ１０３：ＹＥＳ）には、処理はステップＳ１０４に移行する。ｎ番目の子ノードが存在しない場合（Ｓ１０３：ＮＯ）には、処理はステップＳ１０６に移行する。
【０１８９】
ステップＳ１０４において、要素間関係出力計算部１１４は、ｎ番目の子ノードを処理対象として、チャートＧ自身を再帰的に実行する。
【０１９０】
ステップＳ１０５において、要素間関係出力計算部１１４は、ｎに１を加算する。その後、処理はステップＳ１０３に移行する。
ステップＳ１０６において、要素間関係出力計算部１１４は、ｎを１つポップし、処理を終了する。
【０１９１】
図５０Ａ及び図５０Ｂは、チャートＨのフローを示す。
ステップＳ１１１において、ノード種別が“＝”演算子の場合（Ｓ１１１：ＹＥＳ）は、処理はステップＳ１１２に移行する。ノード種別が“＝”演算子でない場合（Ｓ１１１：ＮＯ）は、処理はステップＳ１１３に移行する。
ステップＳ１１２において、要素間関係出力計算部１１４は、後述のチャートＩのフローを実行する。
【０１９２】
ステップＳ１１３において、ノード種別が、制御点Ｘｉの座標系Ｙｉ上の座標値の場合（Ｓ１１３：ＹＥＳ）には、処理はステップＳ１１４に移行する。ノード種別が、制御点Ｘｉの座標系Ｙｉ上の座標値でない場合（Ｓ１１３：ＮＯ）には、処理はステップＳ１１５に移行する。
ステップＳ１１４において、要素間関係出力計算部１１４は、後述のチャートＪのフローを実行する。
【０１９３】
ステップＳ１１５において、ノード種別が指令値の場合（Ｓ１１５：ＹＥＳ）には、処理はステップＳ１１６に移行する。ノード種別が座標値でない場合（Ｓ１１５：ＮＯ）には、処理はステップＳ１１７に移行する。
ステップＳ１１６において、要素間関係出力計算部１１４は、後述のチャートＫのフローを実行する。
【０１９４】
ステップＳ１１７において、ノード種別が信号の場合（Ｓ１１７：ＹＥＳ）には、処理はステップＳ１１８に移行する。ノード種別が座標値でない場合（Ｓ１１７：ＮＯ）には、処理はステップＳ１１９に移行する。
ステップＳ１１８において、要素間関係出力計算部１１４は、後述のチャートＬのフローを実行する。
【０１９５】
ステップＳ１１９において、ノード種別が定数の場合（Ｓ１１９：ＹＥＳ）には、処理はステップＳ１２０に移行する。ノード種別が定数でない場合（Ｓ１１９：ＮＯ）には、処理はステップＳ１２１に移行する。
ステップＳ１２０において、要素間関係出力計算部１１４は、後述のチャートＭのフローを実行する。
【０１９６】
ステップＳ１２１において、ノード種別が変数の場合（Ｓ１２１：ＹＥＳ）には、処理はステップＳ１２２に移行する。ノード種別が変数でない場合（Ｓ１２１：ＮＯ）には、処理はステップＳ１２３に移行する。
ステップＳ１２２において、要素間関係出力計算部１１４は、後述のチャートＮのフローを実行する。
【０１９７】
ステップＳ１２３において、ノード種別が“＜”演算子の場合（Ｓ１２３：ＹＥＳ）には、処理はステップＳ１２４に移行する。ノード種別が“＜”演算子でない場合（Ｓ１２３：ＮＯ）には、処理はステップＳ１２５に移行する。
ステップＳ１２４において、要素間関係出力計算部１１４は、後述のチャートＯのフローを実行する。
【０１９８】
ステップＳ１２５において、ノード種別が“ｉｆ”文の場合（Ｓ１２５：ＹＥＳ）には、処理はステップＳ１２６に移行する。ノード種別が“ｉｆ”文でない場合（Ｓ１２５：ＮＯ）には、処理を終了する。
ステップＳ１２６において、要素間関係出力計算部１１４は、後述のチャートＰのフローを実行し、処理を終了する。
【０１９９】
図５１は、チャートＩのフローを示す。
ステップＳ１３１において、要素間関係出力計算部１１４は、第１子ノードについて、チャートＨを再帰的に実行した後、処理はステップＳ１３２に移行する。
ステップＳ１３２において、要素間関係出力計算部１１４は、ｎに１を加算し、処理はステップＳ１３３に移行する。
ステップＳ１３３において、要素間関係出力計算部１１４は、第２子ノードについて、チャートＨを再帰的に実行した後、処理はステップＳ１３４に移行する。
ステップＳ１３４において、要素間関係出力計算部１１４は、ｎに１を加算し、処理はステップＳ１３５に移行する。
ステップＳ１３５において、要素間関係出力計算部１１４は、後述のチャートＱを実行し、処理を終了する。
【０２００】
図５２は、チャートＪのフローを示す。
ステップＳ１４１において、要素間関係出力計算部１１４は、制御点Ｘｉの座標系Ｙｉ上の座標値ｐｏｓｗｉ・姿勢ｍａｔｗｉを計算する。
ステップＳ１４２において、要素間関係出力計算部１１４は、ｐｏｓｗｉ、ｍａｔｗｉを出力する。
ステップＳ１４３において、要素間関係出力計算部１１４は、ノード種別を出力する。
ステップＳ１４４において、要素間関係出力計算部１１４は、制御点Ｘｉを出力し、処理を終了する。
【０２０１】
図５３は、チャートＫのフローを示す。
ステップＳ１５１において、要素間関係出力計算部１１４は、指令位置移動行列Ｍｐｏｓｋ、指令姿勢変更行列Ｍｍａｔｋを計算する。
ステップＳ１５２において、要素間関係出力計算部１１４は、Ｍｐｏｓｋ、Ｍｍａｔｋを出力し、処理を終了する。
【０２０２】
図５４は、チャートＬのフローを示す。
ステップＳ１６１において、要素間関係出力計算部１１４は、信号の状態を取得する。
ステップＳ１６２において、要素間関係出力計算部１１４は、信号の状態を出力する。
ステップＳ１６３において、要素間関係出力計算部１１４は、ノード種別を出力する。
ステップＳ１６４において、要素間関係出力計算部１１４は、信号を出力し、処理を終了する。
【０２０３】
図５５は、チャートＭのフローを示す。
ステップＳ１７１において、要素間関係出力計算部１１４は、定数の値を出力する。
ステップＳ１７２において、要素間関係出力計算部１１４は、ノード種別を出力し、処理を終了する。
【０２０４】
図５６は、チャートＮのフローを示す。
ステップＳ１８１において、要素間関係出力計算部１１４は、変数の値を取得する。
ステップＳ１８２において、要素間関係出力計算部１１４は、変数の値を出力する。
ステップＳ１８３において、要素間関係出力計算部１１４は、ノード種別を出力し、処理を終了する。
【０２０５】
図５７は、チャートＯのフローを示す。
ステップＳ１９１において、要素間関係出力計算部１１４は、第１子ノードについて、チャートＨを再帰的に実行した後、処理はステップＳ１９２に移行する。
ステップＳ１９２において、要素間関係出力計算部１１４は、ｎに１を加算し、処理はステップＳ１９３に移行する。
ステップＳ１９３において、要素間関係出力計算部１１４は、第２子ノードについて、チャートＨを再帰的に実行した後、処理はステップＳ１９４に移行する。
ステップＳ１９４において、要素間関係出力計算部１１４は、ｎに１を加算し、処理はステップＳ１９５に移行する。
ステップＳ１９５において、要素間関係出力計算部１１４は、後述のチャートＲを実行し、処理を終了する。
【０２０６】
図５８は、チャートＰのフローを示す。
ステップＳ２０１において、要素間関係出力計算部１１４は、第１子ノードについて、チャートＨを再帰的に実行する。
ステップＳ２０２において、要素間関係出力計算部１１４は、ｎに１を加算する。
ステップＳ２０３において、第１子ノードの出力が「真」の場合（Ｓ２０３：「真」）には、処理はステップＳ２０４に移行する。第１子ノードの出力が「偽」の場合（Ｓ２０３：「偽」）には、処理はステップＳ２０６に移行する。
ステップＳ２０４において、要素間関係出力計算部１１４は、第２子ノードについて、チャートＨを再帰的に実行する。
ステップＳ２０５において、要素間関係出力計算部１１４は、ｎに２を加算し、処理を終了する。
ステップＳ２０６において、要素間関係出力計算部１１４は、第３子ノードについて、チャートＨを再帰的に実行する。
ステップＳ２０７において、要素間関係出力計算部１１４は、ｎに１を加算し、処理を終了する。
【０２０７】
図５９は、チャートＱのフローを示す。
ステップＳ２１１において、第１子ノードの出力種別が座標値の場合（Ｓ２１１：ＹＥＳ）には、処理はステップＳ２１２に移行する。第１子ノードの出力種別が座標値ではない場合（Ｓ２１１：ＮＯ）には、処理はステップＳ２１４に移行する。
ステップＳ２１２において、要素間関係出力計算部１１４は、第１子ノードの出力ｐｏｓｗｉ、ｍａｔｗｉと、第２子ノードの出力Ｍｐｏｓｋ、Ｍｍａｔｋとから、
ｐｏｓｗｉ＝Ｍｐｏｓｋ・ｐｏｓｗｉ
ｍａｔｗｉ＝Ｍｍａｔｋ・ｍａｔｗｉ
を計算する。
ステップＳ２１３において、要素間関係出力計算部１１４は、第１子ノードの出力制御点の移動先として、ｐｏｓｗｉ、ｍａｔｗｉを設定し、処理を終了する。
ステップＳ２１４において、第１子ノードの出力種別が信号の場合（Ｓ２１４：ＹＥＳ）には、処理はステップＳ２１５に移行する。第１子ノードの出力種別が信号ではない場合（Ｓ２１４：ＮＯ）には、要素間関係出力計算部１１４は、処理を終了する。
ステップＳ２１５において、要素間関係出力計算部１１４は、第１子ノードの出力信号の出力値として、第２子ノードの出力値を設定し、処理を終了する。
【０２０８】
図６０は、チャートＲのフローを示す。
ステップＳ２２１において、第１子ノードの出力値が、第２子ノードの出力値に満たない場合（Ｓ２２１：ＹＥＳ）には、処理はステップＳ２２２に移行する。第１子ノードの出力値が、第２子ノードの出力値以上である場合（Ｓ２２１：ＮＯ）には、処理はステップＳ２２３に移行する。
ステップＳ２２２において、要素間関係出力計算部１１４は、「真」を出力し、処理を終了する。
ステップＳ２２３において、要素間関係出力計算部１１４は、「偽」を出力し、処理を終了する。
【０２０９】
図６１は、チャートＳのフローを示す。
ステップＳ２３１において、チャートＹにおけるステップＳ９１〜Ｓ９３と同様に、各制御点が、各座標系において設定された移動先に来るよう、要素間関係制御部１１５が、各制御点及び各座標系を構成する各軸の座標値を計算し、各制御点及び各座標系を移動する。
【０２１０】
ステップＳ２３２において、要素間関係制御部１１５が、各要素に設定された値を出力値として出力する。
【０２１１】
〔４．２．２  適用例〕
〔４．２．２．１  ロボットの近接による自動ドア開閉〕
図６２Ａ及び図６２Ｂを参照し、制御点ｘＮの機械座標系上の座標値と、制御点ｙＭの座標系ｙ１上の座標値の関係式を定義することにより、フレキシブル同期制御を開始した場合の適用例について詳述する。
【０２１２】
図６２Ａに示すように、ドアの制御点ｘＮを構成する直進軸ｘＮが設置されているとする。更に、ロボットとして、座標系ｙ１を構成する回転軸ｙ１上に直進軸ｙ２が設置され、直進軸ｙ２上に、ロボットの手先である制御点ｙＭを構成する回転軸ｙＭが設置されているとする。
【０２１３】
このとき、図６２Ｂに示す関係式を用いたフレキシブル同期制御を実行するとする。ここの関係式は、具体的には、制御点ｙＭの座標系ｙ１におけるｘ座標が１００を超えると共に、２００未満であれば、制御点ｘＮの機械座標系におけるｚ座標は制御点ｙＭの座標系ｙ１におけるｘ座標から２００減算した値となり、制御点ｙＭの座標系ｙ１におけるｘ座標が２００以上であれば、制御点ｘＮの機械座標系におけるｚ座標は０となることを示す。
【０２１４】
これにより、例えば、ロボットの手先がドアに近づいたり離れたりしたときに、自動的にドアを開いたり閉じたりすることができるので、ドアの開閉をプログラムする必要はない。そのため、プログラムを作成する手間が減り、プログラム指令をし忘れるといった誤りを予防することもできるため、利便性が向上する。
【０２１５】
〔４．２．２．２  ワークの接近による自動クーラントＯｎ／Ｏｆｆ〕
図６３Ａ及び図６３Ｂを参照し、制御点Ｂの座標系Ａ上の座標値と信号Ａの関係式を定義することにより、フレキシブル同期制御を開始した場合の適用例について詳述する。
【０２１６】
図６３Ａに示すように、上部のベースからクーラントノズルが伸びており、クーラントノズルへの入力信号Ａ＝０のときには、クーラントがＯＦＦとなり、入力信号Ａ＝１のときには、クーラントがＯＮとなるとする。また、下部のベース上に１つめの軸、その上にさらに２つめの軸が設置され、２つめの軸上にワークが設置され、ワーク上に制御点Ｂが指定されているとする。
【０２１７】
このとき、図６３Ｂに示す関係式を用いたフレキシブル同期制御を実行するとする。ここの関係式は、具体的には、制御点Ｂの座標系Ａにおけるｘ座標が−５を超え、５未満であり、制御点Ｂの座標系Ａにおけるｚ座標が−１００を超えるならば、信号Ａ＝１となり、それ以外の場合には、信号Ａ＝０となることを示す。
【０２１８】
これにより、例えば、ワークがクーラントノズルからある一定範囲に近づいたときに、自動的にクーラントをＯｎ/Ｏｆｆすることができる。これにより、クーラント制御用プログラムの作成の手間が減り、また一定範囲内に近づいたことを検知するための物理的センサ・スイッチを必要とせず、制御対象に既に備わっている位置センサのみを用いて制御ができるため、追加のハードウェアを要しないため、コストメリットも生じる。
このように、利便性が向上する。
【０２１９】
〔５．実施形態の効果〕
複雑な機械構成であっても、座標系と制御点を指定し、それらに対して移動指令値と同期制御指令を与える、あるいは必要に応じて好適な関係式を定義することで、所望の目的を果たすことができ、利便性が向上する。
【０２２０】
なお、上記の説明では、説明の便宜上、２つの制御点・座標系の組について説明したが、３つ以上の制御点・座標系の組に対して同期制御を行ってもよい。
【０２２１】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【０２２２】
数値制御装置１００による制御方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、コンピュータ（数値制御装置１００）にインストールされる。また、これらのプログラムは、リムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。更に、これらのプログラムは、ダウンロードされることなくネットワークを介したＷｅｂサービスとしてユーザのコンピュータ（数値制御装置１００）に提供されてもよい。
【符号の説明】
【０２２３】
１１  ＣＰＵ（制御部）
１００  数値制御装置
１１１  グラフ生成部
１１２  制御点座標系挿入部
１１３  要素間関係設定部
１１４  要素間関係出力計算部
１１５  要素間関係制御部
１２１  関係式取得部
１２２  構文解析部
１３１  第１制御点移動先生成部
１３２  第２制御点移動先生成部
１３３  関係巡回部
１３４  関係出力処理部
１４１  第１各軸移動先生成部
１４２  第２各軸移動先生成部
１４３  第１移動実行部
１４４  第２移動実行部
１４５  出力操作部
１５１  第１現在位置計算部
１５２  第１現在姿勢計算部
１５３  第１補間情報生成部
１６１  第２現在位置計算部
１６２  第２現在姿勢計算部
１６３  第２補間情報生成部
１７１  第１指令位置移動情報変換部
１７２  第１指令姿勢変更情報変換部
１８１  第２指令位置移動情報変換部
１８２  第２指令姿勢変更情報変換部
１９１  構文リスト生成部
１９２  構文木生成部
１９３  構文変換部
２０１  制御点情報処理部
２０２  座標系情報処理部
２０３  制御点位置情報処理部
２０４  制御構文処理部
２０５  数学演算処理部
２０６  定数処理部
２０７  変数処理部
２０８  型情報処理部
２０９  制御点指令値処理部
２１０  内部情報処理部
２１１  入力情報処理部
２１２  出力情報処理部
２２１  制御点移動部
２２２  信号制御部
２２３  変数制御部
２２４  通信情報制御部
【図１】
2019008479.tif 000027
【図２】
2019008479.tif 000028
【図３】
2019008479.tif 000029
【図４】
2019008479.tif 000030
【図５】
2019008479.tif 000031
【図６】
2019008479.tif 000032
【図７】
2019008479.tif 000033
【図８】
2019008479.tif 000034
【図９】
2019008479.tif 000035
【図１０】
2019008479.tif 000036
【図１１】
2019008479.tif 000037
【図１２】
2019008479.tif 000038
【図１３】
2019008479.tif 000039
【図１４】
2019008479.tif 000040
【図１５】
2019008479.tif 000041
【図１６】
2019008479.tif 000042
【図１７Ａ】
2019008479.tif 000043
【図１７Ｂ】
2019008479.tif 000044
【図１８Ａ】
2019008479.tif 000045
【図１８Ｂ】
2019008479.tif 000046
【図１８Ｃ】
2019008479.tif 000047
【図１９】
2019008479.tif 000048
【図２０Ａ】
2019008479.tif 000049
【図２０Ｂ】
2019008479.tif 000050
【図２１】
2019008479.tif 000051
【図２２】
2019008479.tif 000052
【図２３Ａ】
2019008479.tif 000053
【図２３Ｂ】
2019008479.tif 000054
【図２４】
2019008479.tif 000055
【図２５】
2019008479.tif 000056
【図２６】
2019008479.tif 000057
【図２７Ａ】
2019008479.tif 000058
【図２７Ｂ】
2019008479.tif 000059
【図２７Ｃ】
2019008479.tif 000060
【図２７Ｄ】
2019008479.tif 000061
【図２８】
2019008479.tif 000062
【図２９】
2019008479.tif 000063
【図３０】
2019008479.tif 000064
【図３１】
2019008479.tif 000065
【図３２Ａ】
2019008479.tif 000066
【図３２Ｂ】
2019008479.tif 000067
【図３３Ａ】
2019008479.tif 000068
【図３３Ｂ】
2019008479.tif 000069
【図３４】
2019008479.tif 000070
【図３５】
2019008479.tif 000071
【図３６】
2019008479.tif 000072
【図３７】
2019008479.tif 000073
【図３８】
2019008479.tif 000074
【図３９】
2019008479.tif 000075
【図４０】
2019008479.tif 000076
【図４１Ａ】
2019008479.tif 000077
【図４１Ｂ】
2019008479.tif 000078
【図４２Ａ】
2019008479.tif 000079
【図４２Ｂ】
2019008479.tif 000080
【図４３Ａ】
2019008479.tif 000081
【図４３Ｂ】
2019008479.tif 000082
【図４４Ａ】
2019008479.tif 000083
【図４４Ｂ】
2019008479.tif 000084
【図４５】
2019008479.tif 000085
【図４６】
2019008479.tif 000086
【図４７】
2019008479.tif 000087
【図４８】
2019008479.tif 000088
【図４９】
2019008479.tif 000089
【図５０Ａ】
2019008479.tif 000090
【図５０Ｂ】
2019008479.tif 000091
【図５１】
2019008479.tif 000092
【図５２】
2019008479.tif 000093
【図５３】
2019008479.tif 000094
【図５４】
2019008479.tif 000095
【図５５】
2019008479.tif 000096
【図５６】
2019008479.tif 000097
【図５７】
2019008479.tif 000098
【図５８】
2019008479.tif 000099
【図５９】
2019008479.tif 000100
【図６０】
2019008479.tif 000101
【図６１】
2019008479.tif 000102
【図６２Ａ】
2019008479.tif 000103
【図６２Ｂ】
2019008479.tif 000104
【図６３Ａ】
2019008479.tif 000105
【図６３Ｂ】
2019008479.tif 000106
【図６４】
2019008479.tif 000107
【図６５】
2019008479.tif 000108
【図６６】
2019008479.tif 000109
【図６７】
2019008479.tif 000110