以下に、本発明の実施の形態にかかる数値制御装置を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、実施の形態1にかかる数値制御装置の制御対象としての加工機械600を示す図である。この加工機械600は、ロボットハンド付き多軸自動旋盤である。加工機械600は、矢印A方向に旋回する主軸ドラム601を有する。6つの主軸C1〜C6が主軸ドラム601に配置されている。各主軸C1〜C6には、図示しないワーク支持部が取り付けられている。これらワーク支持部は、加工対象のワークを掴んで回転させる。図1では、第1加工位置であるステーションS1に主軸C1が配置され、第2加工位置であるステーションS2に主軸C2が配置され、第3加工位置であるステーションS3に主軸C3が配置され、第4加工位置であるステーションS4に主軸C4が配置され、第5加工位置であるステーションS5に主軸C5が配置され、第6加工位置であるステーションS6に主軸C6が配置された状態が示されている。
ステーションS1には、第1工具を駆動するNC軸としてのX1軸が配置されている。ステーションS2には、第2工具を駆動するNC軸としてのX2軸およびZ2軸が配置されている。ステーションS3には、第3工具を駆動するNC軸としてのX3軸およびZ3軸が配置されている。ステーションS4には、第4工具を駆動するNC軸としてのX4軸およびZ4軸が配置されている。ステーションS5には、第5工具を駆動するNC軸としてのX5軸およびZ5軸が配置されている。ステーションS6には、第6工具を駆動するNC軸としてのX6軸およびZ6軸が配置されている。加工機械600はロボットハンド(図示せず)を有し、前記ロボットハンドにより、ワークの搬入、搬出と、各ステーションS1〜S6に置かれたワークの反転とを行うことが可能である。
例えば、加工の1サイクル目では、ステーションS1で主軸C1およびX1軸が用いられた加工が行われ、ステーションS2で主軸C2、X2軸およびZ2軸が用いられた加工が行われ、ステーションS3で主軸C3、X3軸およびZ3軸が用いられた加工が行われ、ステーションS4で主軸C4、X4軸およびZ4軸が用いられた加工が行われ、ステーションS5で主軸C5、X5軸およびZ5軸が用いられた加工が行われ、ステーションS6で主軸C6、X6およびZ6軸が用いられた加工が行われる。
2サイクル目では、ステーションS1で主軸C2およびX1軸が用いられた加工が行われ、ステーションS2で主軸C3、X2軸およびZ2軸が用いられた加工が行われ、ステーションS3で主軸C4、X3軸およびZ3軸が用いられた加工が行われ、ステーションS4で主軸C5、X4軸およびZ4軸が用いられた加工が行われ、ステーションS5で主軸C6、X5軸およびZ5軸が用いられた加工が行われ、ステーションS6で主軸C1、X6およびZ6軸が用いられた加工が行われる。以降、1サイクル毎に主軸ドラム601が旋回し、各ステーションに配置される主軸が順次変化する。このようにして、ワークに対する加工が6サイクルで終了する。
図2は、本発明の実施の形態1にかかる数値制御装置1000の構成例を示すブロック図である。この数値制御装置1000は、図1に示した加工機械600を駆動制御する。数値制御装置1000は、表示部500と、入力操作部510と、複数の制御ユニット#1、#2および#3とを有する。なお、例えば、制御ユニット#1が請求の範囲の第1制御ユニットに対応し、制御ユニット#2が請求の範囲の第2制御ユニットに対応する。図2には、加工機械600の構成要素である駆動部180、280、380が示されている。この実施形態では、数値制御装置1000は、3個の制御ユニット#1、#2および#3を備える。数値制御装置1000は、2個以上であれば、任意の個数の制御ユニットを備えてもよい。制御ユニット#1は、駆動部180に接続されている。制御ユニット#2は、駆動部280に接続されている。制御ユニット#3は、駆動部380に接続されている。駆動部180は、主軸C1、X1軸、主軸C2、X2軸、およびZ2軸を駆動する。駆動部280は、主軸C3、X3軸、Z3軸、主軸C4、X4軸、およびZ4軸を駆動する。駆動部380は、主軸C5、X5軸、Z5軸、主軸C6、X6軸、およびZ6軸を駆動する。
図3は、数値制御装置1000の各制御ユニットの軸定義を示す図である。この軸定義に定義された軸が、各制御ユニットの実軸となる。数値制御装置1000は、機械全体から見れば、第1系統から第6系統までを含む6つの系統を有する。制御ユニット毎に見れば、制御ユニット#1、#2、#3は、第1および第2系統を含む2つの系統をそれぞれ有する。系統とは、基本的には、複数の加工工程のうちの1つの加工工程を行う1または複数の軸およびこれら1または複数の軸を駆動する駆動系のことを示している。1系統は、1つの加工工程を行う1つの加工ユニットに対応しているとも言える。また、基本的に、数値制御装置で並列に実行される加工プログラム数と系統数とは一致している。図3の軸定義によれば、制御ユニット#1の第1系統の第1軸がX1軸に設定され、制御ユニット#1の第1系統の第2軸が未定義に設定され、制御ユニット#1の第1系統の第3軸がC1軸に設定されている。制御ユニット#1の第2系統の第1軸がX2軸に設定され、制御ユニット#1の第2系統の第2軸がZ2軸に設定され、制御ユニット#1の第2系統の第3軸がC2軸に設定されている。
制御ユニット#2の第1系統の第1軸がX3軸に設定され、制御ユニット#2の第1系統の第2軸がZ3軸に設定され、制御ユニット#2の第1系統の第3軸がC3軸に設定されている。制御ユニット#2の第2系統の第1軸がX4軸に設定され、制御ユニット#2の第2系統の第2軸がZ4軸に設定され、制御ユニット#2の第2系統の第3軸がC4軸に設定されている。制御ユニット#3の第1系統の第1軸がX5軸に設定され、制御ユニット#3の第1系統の第2軸がZ5軸に設定され、制御ユニット#3の第1系統の第3軸がC5軸に設定されている。制御ユニット#3の第2系統の第1軸がX6軸に設定され、制御ユニット#3の第2系統の第2軸がZ6軸に設定され、制御ユニット#3の第2系統の第3軸がC6軸に設定されている。
図2に戻って、表示部500および入力操作部510は、制御ユニット#1、#2および#3と、第1通信路520によってネットワーク接続されている。各制御ユニット#1、#2および#3は、第2通信路530によってバス接続されている。制御ユニット#1、#2および#3間では、第1通信路520または第2通信路530を介して軸交換のための各種制御データのデータ転送が行われる。なお、軸交換とは、他の制御ユニット管理下の駆動部の制御権を取得することである。表示部500は、例えば液晶パネルなどの表示装置を備えており、第1通信路520を経由して受信された画面表示データ123、223、323をオペレータが視認可能に表示する。入力操作部510は、例えばキーボード、ハードウェアスイッチあるいはタッチパネルなどの入力装置で構成されている。
制御ユニット#1、#2および#3は、同じ内部構成を有している。制御ユニット#1、#2および#3は、別個のCPU(Central Processing Unit)を有し、夫々独立して動作する。各制御ユニット#1、#2および#3は、CPU、ROM(Read Only Memory)、RAM(Random Access Memory)およびI/O(Input/Output)インターフェイスを備えたコンピュータにより実現される。制御ユニット#1を例にとって、制御ユニット#1、#2および#3の内部構成例を説明する。制御ユニット#1は、記憶部120と、入力制御部130と、データ設定部131と、画面処理部132と、プログラマブルコントローラ(JIS B 3502:2011、programmable logic controllers(PLC))135と、機械制御信号処理部136と、解析処理部140と、補間処理部150と、加減速処理部151と、軸データ入出力部152と、軸交換処理部160と、データ転送部165とを有する。
記憶部120は、ROM、RAM、またはその両方により構成される。記憶部120は、パラメータ121、加工プログラム122、画面表示データ123をストアする。記憶部120は、ワークエリア124と、制御ユニット#1、#2および#3間の制御データの転送に使用される共有エリア125を有する。パラメータ121および加工プログラム122は、オペレータが入力操作部510を操作することによって、第1通信路520、入力制御部130を経由してデータ設定部131に入力される。データ設定部131は、入力されたパラメータ121および加工プログラム122をフォーマット変換して記憶部120にストアする。記憶部120にストアされた画面表示データ123は、画面処理部132によって読み込まれて表示部500に送られる。
共有エリア125は、制御ユニット#1、#2および#3間で転送を行うための制御データをストアする。共有エリア125にストアされる制御データは、軸交換のための制御権要求信号、応答信号を含む。前記制御データとして、各軸の制御を行うための位置指令、位置フィードバック信号を含ませてもよい。データ転送部165は、共有エリア125にストアされる制御データを或る周期でサイクリックに他の制御ユニット#2、#3に転送する。データ転送部165は、他の制御ユニット#2、#3からサイクリックに転送される制御データを共有エリア125にストアする。したがって、各制御ユニット#1、#2および#3の共有エリア125、225、325は、基本的には、同じ制御データがストアされている状態となっている。共有エリア125の詳細、前記制御データの詳細およびデータ転送については、後述する。
PLC135は、シーケンスプログラムにしたがって加工機械600の周辺機器のシーケンス制御を実行する。周辺機器とは、加工機械600の主軸C1〜C6、NC軸X1〜X6、Z2〜Z6を除く機器であり、例えば各種センサ、各種スイッチ、前記ロボットハンドなどを含む。数値制御装置1000を起動するための自動起動ボタン(図示せず)がオンにされると、リモートIOユニット(図示せず)を通して、自動起動信号がPLC135に入力される。PLC135は、接続された制御ユニットを動作開始してよいか否かを判断し、動作開始してよい場合、前記自動起動信号を機械制御信号処理部136に伝達する。前記自動起動信号を受信した機械制御信号処理部136は、記憶部120の例えばワークエリア124を介して解析処理部140に加工プログラム122の実行開始を指示する。加工プログラム122の実行開始が指示された解析処理部140は、記憶部120から加工プログラム122の読み込みを開始する。
機械制御信号処理部136は、機械動作完了判定部137と、補助指令軸交換解析部138を備える。機械動作完了判定部137は、PLC135からの信号に基づいて周辺機器の動作が完了したか否かを判定する。例えば、機械動作完了判定部137は、PLC135からの信号に基づいて前記ロボットハンドの機械動作状態を示す情報をワークエリア124にストアする。前記機械動作状態は、例えば、ワーク反転動作が実行中であるかあるいは完了したかを示す情報を含んでいる。補間処理部150は、ワークエリア124にストアされた機械動作状態を示す情報を参照し、ワーク反転動作が終了したか否かを判断する。補間処理部150は、ワーク反転の実行中は、補間処理を停止させる。
補助指令軸交換解析部138は、加工プログラム122中に補助指令であるMコードが含まれていた場合に動作する。補助指令軸交換解析部138は、Mコードに対応する指令内容をPLC135から取得し、取得された指令内容を解析する。補助指令軸交換解析部138の詳細は、実施の形態2で説明する。
解析処理部140は、前記機械制御信号処理部136からの起動指示に応じて、記憶部120から加工プログラム122を読み出し、加工プログラム122の各ブロック(各行)を解析処理し、解析結果としての各軸の位置指令を補間処理部150へ渡す。あるいは、解析処理部140は、加工プログラム122の各ブロックの解析結果を共有エリア125に書き込む。各軸の位置指令には、X軸またはZ軸の位置指令の他に、主軸であるC軸の回転指令も含まれる。本明細書では、位置指令は、主軸の回転指令も含む場合もある。解析処理部140は、軸交換解析部141を有している。軸交換解析部141は、加工プログラム122中に軸交換指令が含まれる場合、加工プログラム122中の軸交換指令であるG140を含むブロックを解析し、解析結果を軸交換処理部160に渡す。軸交換指令としては、G140以外の任意のNCコードを採用しても良い。
軸交換処理部160は、制御ユニット間での軸交換制御を行う。軸交換処理部160は、加工プログラム122中のG140で指定された軸が自制御ユニット#1の実軸である場合は、この実軸の制御権を自制御ユニットが持っているか他の制御ユニットが持っているかを共有エリア125を用いて確認し、制御権を取得できた場合、制御権を取得できたことを軸交換解析部141に通知する。軸交換解析部141は、前記通知を受信すると、G140を含むブロックの次のブロックを解析し、解析された位置指令を補間処理部150に渡す。
また、軸交換処理部160は、加工プログラム122中のG140で指定された軸が自制御ユニット#1の実軸でなく他の制御ユニット#2、#3の実軸である場合は、他の制御ユニットに対し、共有エリア125を介してG140で指定された軸の制御権を要求する。共有エリア125を介して制御権を取得できた場合、軸交換処理部160は、G140を含むブロックの次のブロック以降を解析し、解析された位置指令を共有エリア125を介して他の制御ユニット#2、#3に転送する。
また、軸交換処理部160は、他の制御ユニット#2、#3から自制御ユニット#1への制御権要求を共有エリア125を介してチェックし、自制御ユニット#1の状態に応じて前記制御権要求に対する応答信号を共有エリア125に書き込む。他の制御ユニットからの制御権要求に対する応答は、制御権を有する制御ユニットではなく、実軸が接続された制御ユニットである。例えば、C1軸の制御権を制御ユニット#2が持っているときに、制御ユニット#3からC1軸の制御権要求を取得した場合、制御ユニット#2ではなく、C1軸が実軸である制御ユニット#1が前記C1軸の制御権要求に対し応答する。
補間処理部150は、駆動部180内のセンサ183、186、193、196および199のフィードバック信号FB(以下、FB信号ともいう)を軸データ入出力部152から取得している。補間処理部150は、解析処理部140から解析結果であるX軸またはZ軸の位置指令をワークエリア124を介して受け取り、受け取った位置指令と軸データ入出力部152から取得したFB信号に基づき補間処理を行い、補間処理の結果である移動量指令を加減速処理部151へ渡す。また、補間処理部150は、主軸モータの回転数指令を解析処理部140からワークエリア124を介して受け取り、前記回転数指令を加減速処理部151に渡す。また、補間処理部150は、軸データ入出力部152から取得されたフィードバック信号FBを共有エリア125に書き込む。
補間処理部150は、軸停止判定部155を有する。軸停止判定部155は、前記FB信号に基づいて、自制御ユニット#1に接続されているNC軸(X1軸、X2軸、Z2軸)および主軸(C1軸、C2軸)が軸停止されているか駆動中であるかを判定し、この判定結果を示す軸停止信号をワークエリア124に書き込む。軸交換処理部160は、ワークエリア124にストアされた軸停止信号を参照して、自制御ユニット#1に接続されている軸が駆動中であるか否かを判定する。
加減速処理部151は、補間処理部150から供給されたX軸、Z軸の移動量指令に対して加減速処理を行う。加減速処理部151は、加減速処理後のX軸、Z軸の移動量指令を軸データ入出力部152に出力する。また、加減速処理部151は、主軸回転指令の場合は、加減速処理を施すことなく回転数指令を軸データ入出力部152に出力する。
軸データ入出力部152は、加減速処理部151から供給されたX軸、Z軸の移動量指令およびC軸の回転数指令を駆動部180に出力する。また、軸データ入出力部152は、駆動部180から入力されるX軸、Z軸、およびC軸のFB信号を補間処理部150に渡す。
駆動部180は、2系統の駆動系を有する。第1系統の駆動系180aは、X1軸サーボ制御部181、X1軸サーボモータ182、X1軸センサ183と、C1軸サーボ制御部184と、C1軸サーボモータ185と、C1軸センサ186とを備える。X1軸サーボ制御部181は、軸データ入出力部152から入力されたX1軸の移動量指令とX1軸センサ183から入力された位置データに従い、X1軸サーボモータ182を位置フィードバック制御する。また、X1軸サーボ制御部181は、X1軸センサ183から入力された位置データをFB信号として軸データ入出力部152に出力する。C1軸サーボ制御部184は、軸データ入出力部152から入力されたC1軸の回転数指令とC1軸センサ186から入力された速度データまたは位置データに従い、C1軸サーボモータ185を速度フィードバック制御または位置フィードバック制御する。また、C1軸サーボ制御部184は、C1軸センサ186から入力された速度データまたは位置データをFB信号として軸データ入出力部152に出力する。
第2系統の駆動系180bは、X2軸サーボ制御部191、X2軸サーボモータ192、X2軸センサ193と、Z2軸サーボ制御部194、Z2軸サーボモータ195、Z2軸センサ196と、C2軸サーボ制御部197と、C2軸サーボモータ198と、C2軸センサ199とを備える。X2軸サーボ制御部191は、軸データ入出力部152から入力されたX2軸の移動量指令とX2軸センサ193から入力された位置データに従い、X2軸サーボモータ192を位置フィードバック制御する。また、X2軸サーボ制御部191は、X2軸センサ193から入力された位置データをFB信号として軸データ入出力部152に出力する。Z2軸サーボ制御部194は、軸データ入出力部152から入力されたZ2軸の移動量指令とZ2軸センサ196から入力された位置データに従い、Z2軸サーボモータ195を位置フィードバック制御する。また、Z2軸サーボ制御部194は、Z2軸センサ196から入力された位置データをFB信号として軸データ入出力部152に出力する。C2軸サーボ制御部197は、軸データ入出力部152から入力されたC2軸の回転数指令とC2軸センサ199から入力された速度データまたは位置データに従い、C2軸サーボモータ198を速度フィードバック制御または位置フィードバック制御する。また、C2軸サーボ制御部197は、C2軸センサ199から入力された速度データまたは位置データをFB信号として軸データ入出力部152に出力する。なお、例えば、X1軸およびC1軸が請求の範囲の第1系統軸に対応する。
制御ユニット#2は、記憶部220と、入力制御部230と、データ設定部231と、画面処理部232と、PLC235と、機械動作完了判定部237および補助指令軸交換解析部238を含む機械制御信号処理部236と、軸交換解析部241を含む解析処理部240と、軸停止判定部255を含む補間処理部250と、加減速処理部251と、軸データ入出力部252と、軸交換処理部260と、データ転送部265とを有する。記憶部220は、パラメータ221、加工プログラム222、画面表示データ223をストアする。記憶部220は、ワークエリア224と、制御ユニット#1、#2および#3間の制御データの転送に使用される共有エリア225を有する。
駆動部280は、第1系統の駆動系280aおよび第2系統の駆動系280bを有する。第1系統の駆動系280aは、X3軸サーボ制御部281、X3軸サーボモータ282、X3軸センサ283と、Z3軸サーボ制御部284、Z3軸サーボモータ285、Z3軸センサ286と、C3軸サーボ制御部287と、C3軸サーボモータ288と、C3軸センサ289とを備える。第2系統の駆動系280bは、X4軸サーボ制御部291、X4軸サーボモータ292、X4軸センサ293と、Z4軸サーボ制御部294、Z4軸サーボモータ295、Z4軸センサ296と、C4軸サーボ制御部297と、C4軸サーボモータ298と、C4軸センサ299とを備える。なお、例えば、X3軸、Z3軸およびC3軸が請求の範囲の第2系統軸に対応する。
制御ユニット#3は、記憶部320と、入力制御部330と、データ設定部331と、画面処理部332と、PLC335と、機械動作完了判定部337および補助指令軸交換解析部338を含む機械制御信号処理部336と、軸交換解析部341を含む解析処理部340と、軸停止判定部355を含む補間処理部350と、加減速処理部351と、軸データ入出力部352と、軸交換処理部360と、データ転送部365とを有する。記憶部320は、パラメータ321、加工プログラム322、画面表示データ323をストアする。記憶部320は、ワークエリア324と、制御ユニット#1、#2および#3間の制御データの転送に使用される共有エリア325を有する。
駆動部380は、第1系統の駆動系380aおよび第2系統の駆動系380bを有する。第1系統の駆動系380aは、X5軸サーボ制御部381、X5軸サーボモータ382、X5軸センサ383と、Z5軸サーボ制御部384、Z5軸サーボモータ385、Z5軸センサ386と、C5軸サーボ制御部387と、C5軸サーボモータ388と、C5軸センサ389とを備える。第2系統の駆動系380bは、X6軸サーボ制御部391、X6軸サーボモータ392、X6軸センサ393と、Z6軸サーボ制御部394、Z6軸サーボモータ395、Z6軸センサ396と、C6軸サーボ制御部397と、C6軸サーボモータ398と、C6軸センサ399とを備える。
図4は、制御ユニット#1の共有エリア125、制御ユニット#2の共有エリア225、および制御ユニット#3の共有エリア325の記憶エリアを示す図である。制御ユニット#1の共有エリア125は、領域A#1、領域A#2、領域A#3を有する。領域A#1には、制御ユニット#1によって書き込まれた制御データがストアされる。領域A#2には、データ転送部165を介して制御ユニット#2の領域B#2から転送された制御データがストアされる。領域A#3には、データ転送部165を介して制御ユニット#3の領域C#3から転送された制御データがストアされる。例えば、共有エリア125が請求の範囲の第1共有エリアに対応する。領域A#1が請求の範囲の第1領域に対応し、領域A#2が請求の範囲の第2領域に対応する。
制御ユニット#2の共有エリア225は、領域B#1、領域B#2、領域B#3を有する。領域B#1には、データ転送部265を介して制御ユニット#1の領域A#1から転送された制御データがストアされる。領域B#2には、制御ユニット#2によって書き込まれた制御データがストアされる。領域B#3には、データ転送部265を介して制御ユニット#3の領域C#3から転送された制御データがストアされる。例えば、共有エリア225が請求の範囲の第2共有エリアに対応する。領域B#2が請求の範囲の第3領域に対応し、領域B#1が請求の範囲の第4領域に対応する。
制御ユニット#3の共有エリア325は、領域C#1、領域C#2、領域C#3を有する。領域C#1には、データ転送部365を介して制御ユニット#1の領域A#1から転送された制御データがストアされる。領域C#2には、データ転送部365を介して制御ユニット#2の領域B#2から転送された制御データがストアされる。領域C#3には、制御ユニット#3によって書き込まれた制御データがストアされる。
制御ユニット#1と制御ユニット#2と制御ユニット#3との間を転送される制御データは、前述したように、軸交換の際の制御権要求と、制御権要求に対する応答信号とを含む。実施の形態1では、前記制御データは、他の制御ユニットの実軸に対する位置指令と、自制御ユニットの実軸についてのFB信号とを含む。
図5は、図4に示した共有エリア125、共有エリア225、および共有エリア325の各領域A#1〜A#3、B#1〜B#3、C#1〜C#3にストアされる制御データの詳細を示す図である。領域A#1〜A#3、領域B#1〜B#3、領域C#1〜C#3は、夫々、複数の系統の複数の軸に関する制御データをストア可能である。図5では、図1に示した加工機械600を制御するために、各領域A#1〜A#3、B#1〜B#3およびC#1〜C#3は、夫々、第1系統に含まれる第1軸(X軸)、第2軸(Z軸)、および第3軸(C軸)の制御データと、第2系統に含まれる第1軸(X軸)、第2軸(Z軸)、および第3軸(C軸)の制御データと、……、第6系統に含まれる第1軸(X軸)、第2軸(Z軸)、および第3軸(C軸)の制御データとをストアすることができる。
各領域A#1〜A#3、B#1〜B#3、C#1〜C#3に形成された各軸のエントリは、前述したように、軸交換の際の制御権要求を含むコマンドフィールドCmdと、応答信号フィールドAnsと、位置指令フィールドPIと、FB信号フィールドFBとを含む。
例えば、制御ユニット#1の共有エリア125の領域A#1の位置指令フィールドPIには、制御ユニット#1によって実行される加工プログラム122によって指定される位置指令が制御ユニット#1によって書き込まれる。制御ユニット#1の共有エリア125の領域A#1のFB信号フィールドFBには、制御ユニット#1に接続された第1系統の第1軸(X1軸)、第2軸、および第3軸(C1軸)のFB信号と、第2系統の第1軸(X2軸)、第2軸(Z2軸)、および第3軸(C2軸)のFB信号が制御ユニット#1によって書き込まれる。
制御ユニット#1の共有エリア125の領域A#1のコマンドフィールドCmdには、制御権を要求した制御ユニット#1〜#3を識別するためのデータが書き込まれる。具体的には、制御権が要求された軸に対応するエントリのコマンドフィールドCmdに、制御権を要求した制御ユニット#1〜#3を識別するためのデータが書き込まれる。例えば、制御ユニット#1が第6系統の第3軸(C6軸)の制御権を要求する場合、C6軸のコマンドフィールドCmdに、例えば、制御ユニット番号「#1」が書き込まれる。各軸のコマンドフィールドCmdには、どの制御ユニットが制御権を要求したかを識別できる情報であれば、制御ユニット番号に限らず、他の任意の情報を書き込むようにしてもよい。
制御ユニット#1の共有エリア125の領域A#1の応答信号フィールドAnsには、他の制御ユニット#2または#3からの制御権要求に対する制御ユニット#1の回答である応答信号が書き込まれる。前記応答信号フィールドAnsには、制御権要求を許可する許可信号OKまたは制御権要求を許可しない不許可信号NGが制御ユニット#1によって書き込まれる。
制御ユニット#2の共有エリア225の領域B#2の位置指令フィールドPIには、制御ユニット#2によって実行される加工プログラム222によって指定される位置指令が制御ユニット#2によって書き込まれる。制御ユニット#2の共有エリア225の領域B#2のFB信号フィールドFBには、制御ユニット#2に接続された第3系統の第1軸(X3軸)、第2軸(Z3軸)、および第3軸(C3軸)のFB信号と、第4系統の第1軸(X4軸)、第2軸(Z4軸)、および第3軸(C4軸)のFB信号が制御ユニット#2によって書き込まれる。
制御ユニット#2の共有エリア225の領域B#2のコマンドフィールドCmdには、制御権を要求した制御ユニット#1〜#3を識別するためのデータが書き込まれる。例えば、制御ユニット#2が第1系統第3軸(C1軸)の制御権を要求する場合、C1軸のコマンドフィールドCmdに、例えば、制御ユニット番号「#2」が書き込まれる。
制御ユニット#2の共有エリア225の領域B#2の応答信号フィールドAnsには、他の制御ユニット#1または#3からの制御権要求に対する制御ユニット#2の回答である応答信号が書き込まれる。
制御ユニット#3の共有エリア325の領域C#3の位置指令フィールドPIには、制御ユニット#3によって実行される加工プログラム322によって指定される位置指令が制御ユニット#3によって書き込まれる。制御ユニット#3の共有エリア325の領域C#3のFB信号フィールドFBには、制御ユニット#3に接続された第5系統の第1軸(X5軸)、第2軸(Z5軸)、および第3軸(C5軸)のFB信号と、第6系統の第1軸(X6軸)、第2軸(Z6軸)、および第3軸(C6軸)のFB信号が制御ユニット#3によって書き込まれる。
制御ユニット#3の共有エリア325の領域C#3のコマンドフィールドCmdには、制御権を要求した制御ユニット#1〜#3を識別するためのデータが書き込まれる。例えば、制御ユニット#3が第1系統の第3軸(C1軸)の制御権を要求する場合、C1軸のコマンドフィールドCmdに、例えば、制御ユニット番号「#3」が書き込まれる。
制御ユニット#3の共有エリア325の領域C#3の応答信号フィールドAnsには、他の制御ユニット#1または#2からの制御権要求に対する制御ユニット#3の回答である応答信号が書き込まれる。
前述したように、制御ユニット#1の領域A#2には、制御ユニット#2の領域B#2から転送された制御データがストアされる。制御ユニット#1の領域A#3には、制御ユニット#3の領域C#3から転送された制御データがストアされる。制御ユニット#2の領域B#1には、制御ユニット#1の領域A#1から転送された制御データがストアされる。制御ユニット#2の領域B#3には、制御ユニット#3の領域C#3から転送された制御データがストアされる。制御ユニット#3の領域C#1には、制御ユニット#1の領域A#1から転送された制御データがストアされる。制御ユニット#3の領域C#2には、制御ユニット#2の領域B#2から転送された制御データがストアされる。
図6は、加工機械600を制御する加工プログラムの一例を示す図である。加工プログラム#P1、#P2は加工プログラム122に対応し、制御ユニット#1によって並行して実行される。加工プログラム#P3、#P4は加工プログラム222に対応し、制御ユニット#2によって並行して実行される。加工プログラム#P5、#P6は加工プログラム322に対応し、制御ユニット#3によって並行して実行される。例えば、加工プログラム#P1が請求の範囲の第1加工プログラムに対応し、例えば、加工プログラム#P3が請求の範囲の第2加工プログラムに対応する。
加工プログラム#P1〜#P6のブロックN10、N20、およびN30には、軸交換指令が記述されている。具体的には、加工プログラム#P1のブロックN10には、「G140 X=X1 C=C1」が記述され、加工プログラム#P2のブロックN10には、「G140 X=X2 Z=Z2 C=C2」が記述され、加工プログラム#P3のブロックN10には、「G140 X=X3 Z=Z3 C=C3」が記述され、加工プログラム#P4のブロックN10には、「G140 X=X4 Z=Z4 C=C4」が記述され、加工プログラム#P5のブロックN10には、「G140 X=X5 Z=Z5 C=C5」が記述され、加工プログラム#P6のブロックN10には、「G140 X=X6 Z=Z6 C=C6」が記述されている。このブロックN10の段階では、軸交換は行われない。
加工プログラム#P1のブロックN20には、「G140 X=X1 C=C2」が記述され、加工プログラム#P2のブロックN20には、「G140 X=X2 Z=Z2 C=C3」が記述され、加工プログラム#P3のブロックN20には、「G140 X=X3 Z=Z3 C=C4」が記述され、加工プログラム#P4のブロックN20には、「G140 X=X4 Z=Z4 C=C5」が記述され、加工プログラム#P5のブロックN20には、「G140 X=X5 Z=Z5 C=C6」が記述され、加工プログラム#P6のブロックN20には、「G140 X=X6 Z=Z6 C=C1」が記述されている。このブロックN20の段階では、制御ユニット#1、#2および#3間での軸交換が行われる。
加工プログラム#P1のブロックN30には、「G140 X=X1 C=C3」が記述され、加工プログラム#P2のブロックN30には、「G140 X=X2 Z=Z2 C=C4」が記述され、加工プログラム#P3のブロックN30には、「G140 X=X3 Z=Z3 C=C5」が記述され、加工プログラム#P4のブロックN30には、「G140 X=X4 Z=Z4 C=C6」が記述され、加工プログラム#P5のブロックN30には、「G140 X=X5 Z=Z5 C=C1」が記述され、加工プログラム#P6のブロックN30には、「G140 X=X6 Z=Z6 C=C2」が記述されている。このブロックN30の段階では、制御ユニット#1、#2および#3間での軸交換が行われる。
図7および図8は、制御ユニット#1、#2、および#3で実行される軸交換の制御手順の一例を示す図である。図7は、加工プログラムを実行するときに制御ユニット#1、#2、および#3で実行される処理手順を示している。図8は、他の制御ユニットから制御権要求を受信したときの処理手順を示している。以下では、制御ユニット#1の動作を例にとって図7および図8の処理手順を説明する。
図7の処理手順を説明する。解析処理部140は、加工プログラム122の各ブロックの解析の際、解析対象のブロックに軸交換指令としてのG140が記述されているか否かを判定する(S100)。解析処理部140は、解析対象の現ブロックにG140が含まれていない場合は(S100:No)、この現ブロックを解析し、解析結果をワークエリア124を介して補間処理部150に渡す(S110)。この解析結果は、前述したように、加減速処理部151、軸データ入出力部152を介して駆動部180に出力され、駆動部180で前記現ブロックの指令に対応する駆動制御が実行される。
解析対象のブロックに軸交換指令(G140)が含まれている場合は(S100:Yes)、軸交換解析部141は軸交換指令を解析し、図3に示した軸定義に基づき、G140によって指定されている軸が実軸であるか他の制御ユニットに接続されている軸であるかを判定する(S120)。図1に示した加工機械600の場合、軸交換の対象はC軸のみであるので、主にC軸に関して説明する。軸交換解析部141はG140によって指定されているC軸が実軸(C1軸またはC2軸)であるか否かを判定する。G140によって指定されている軸が実軸である場合(S120:Yes)、軸交換解析部141は、自制御ユニット#1に接続されている駆動部180の軸停止状態およびロボットハンドの運転状態などに基づいて、G140によって指定されている軸を含む系統の制御権を取得しても良いか否かを判定する(S130)。
駆動部180に含まれる各軸の停止状態は、軸停止判定部155によって判定される。前述したように、補間処理部150には、駆動部180に含まれる各軸(X1軸、C1軸、X2軸、Z2軸およびC2軸)のセンサ183、186、193、196、および199からのFB信号が軸データ入出力部152を介して入力されている。軸停止判定部155は、これらセンサからのFB信号に基づいて、駆動部180に含まれる各軸が停止しているか否かを判定する。軸停止判定部155はワークエリア124を介して各軸の停止状態を軸交換解析部141に通知する。
また、ロボットハンドの運転状態を含む周辺機器の運転状態は、機械動作完了判定部137によって判定される。機械動作完了判定部137は、ロボットハンドによるワーク反転(M1000)の実行または終了を示す機械動作状態を、ワークエリア124を介して軸交換解析部141に通知する。
軸交換解析部141は、G140によって指定されている軸を含む系統の軸停止を軸停止判定部155からの通知によって確認し、かつロボットハンドの停止を機械動作完了判定部137からの通知に基づき確認すると、G140によって指定されている軸を含む系統の制御権を取得しても良いと判定する。軸交換処理部160は、制御権の取得が可能と判定すると(S130:Yes)、共有エリア125の領域A#1に、G140によって指定された軸に対する制御権取得宣言をセットする(S140)。例えば、制御権取得宣言は、コマンドフィールドCmdに対する制御ユニット番号「#1」のセットおよび応答信号フィールドAnsに対する「OK」のセットによって実現される。例えば、制御ユニット#1が実軸であるC1軸の制御権取得を宣言する場合、領域A#1のC1軸のコマンドフィールドCmdに制御ユニット番号「#1」をセットし、領域A#1のC1軸の応答信号フィールドAnsに「OK」をセットする。つぎに、軸交換解析部141は、加工プログラム122の次ブロック以降を解析し、解析結果を補間処理部150に出力する。この解析結果は、加減速処理部151、軸データ入出力部152を介して駆動部180に出力され、駆動部180で前記次ブロック以降の指令に対応する駆動制御が実行される。
軸交換指令(G140)が他の制御ユニット#2または#3の実軸を指定している場合(S120:No)、軸交換解析部141は、ブロックの解析結果を軸交換処理部160に渡す。軸交換処理部160は、共有エリア125の領域A#1に、G140によって指定された軸に対する制御権要求をセットする(S160)。具体的には、軸交換処理部160は、共有エリア125の領域A#1における、前記軸交換指令で指定された軸のエントリのコマンドフィールドCmdに制御ユニット番号「#1」をセットする。例えば、制御ユニット#1が第3系統の第3軸(C3軸)の制御権を要求する場合、領域A#1のC3軸のコマンドフィールドCmdに、制御ユニット番号「#1」をセットする。データ転送部165は、共有エリア125の領域A#1にストアされた制御データを第2通信路530を介して他の制御ユニット#2および#3に転送する。
データ転送部165は、制御ユニット#2から受信した制御データを共有エリア125の領域A#2にストアし、制御ユニット#3から受信した制御データを共有エリア125の領域A#3にストアする。軸交換処理部160は、共有エリア125の領域A#2およびA#3をサーチし、前記制御権要求に対する他の制御ユニット#2または#3からの応答信号Ansを受信する。軸交換処理部160は、受信された応答信号Ansの内容に基づいて制御権を取得できたか否かを判定する(S170)。応答信号Ansが不許可NGを示している場合、軸交換解析部141は、許可OKを示す応答信号Ansを受信するまで、待機する。軸交換処理部160は、許可OKを示す応答信号Ansを受信して制御権を取得できた場合(S170:Yes)、制御権を取得できたことを軸交換解析部141に通知する。軸交換解析部141は、加工プログラム122の次ブロック以降を解析し、解析結果としての位置指令を、共有エリア125の領域A#1における、前記軸交換指令で指定された軸のエントリの位置指令フィールドPIに、セットする(S180)。データ転送部165は、共有エリア125の領域A#1にストアされた制御データを第2通信路530を介して制御ユニット#2の共有エリア225および制御ユニット#3の共有エリア325に転送する。他の制御ユニット#2または#3は、制御ユニット#1から受信した位置指令PIに従って、補間処理、加減速処理、軸データ出力処理を実行する。これにより、制御ユニット#1が指令した位置指令PIに基づいて、制御ユニット#2または#3に接続される軸が駆動制御される。
図8の処理手順を説明する。前述したように、他の制御ユニットからの制御権要求に対する応答は、制御権を有する制御ユニットではなく、制御権要求された軸が実軸である制御ユニットによって実行される。したがって、図8の処理を実行する主体は、制御権要求された軸を実軸とする制御ユニットである。以下では、制御ユニット#1の動作として図8を説明する。軸交換処理部160は、共有エリア125の領域A#2およびA#3をサイクリックにサーチしている。軸交換処理部160は、このサーチに基づき他の制御ユニット#2または#3からC1軸またはC2軸に対する制御権要求が受信されているか否かをチェックする(S200)。他の制御ユニット#2または#3からの制御権要求を受信している場合(S210:Yes)、軸交換処理部160は、自制御ユニット#1に接続されている駆動部180の軸停止状態およびロボットハンドの運転状態などに基づいて、制御権要求された軸の制御権を渡して良いか否かを判定する(S220)。
前述したように、駆動部180に含まれる各軸の停止状態は、軸停止判定部155によって判定される。また、ロボットハンドの運転状態は、機械動作完了判定部137によって判定される。軸交換処理部160は、制御権要求された軸を含む系統の軸停止を確認し、かつロボットハンドの停止を確認するまでは、制御権を他の制御ユニットに渡さない。
軸交換処理部160は、軸停止判定部155および機械動作完了判定部137からの通知に基づき制御権要求された軸の受渡しが不可能と判定すると(S220:No)、共有エリア125の領域A#1における、制御権要求された軸の応答信号フィールドAnsに、不許可信号NGを書き込む(S240)。
また、軸交換処理部160は、制御権要求された軸の受渡しが可能と判定すると(S220:Yes)、共有エリア125の領域A#1における、制御権要求された軸の応答信号フィールドAnsに、許可信号OKを書き込む(S230)。軸交換処理部160は、制御権要求を許可したことを軸交換解析部141に通知する。この後、制御権要求を送信した制御ユニットから、制御権要求した軸についての位置指令PIが送信されてくるので、軸交換解析部141は、共有エリア125を介してこの位置指令を取得し、取得した位置指令を補間処理部に渡す。これにより、これにより、他の制御ユニット#2または#3が指令した位置指令PIに基づいて、制御権を他の制御ユニット#2または#3に移行した軸、すなわち制御ユニット#1に接続される軸が駆動制御される(S250)。また、補間処理部150は、共有エリア125の領域A#1における、制御権要求された軸、すなわち制御権を他の制御ユニット#2または#3に移行した軸のFB信号フィールドに、FB信号を順次セットする(S260)。
なお、上記説明では、共有エリア125、225、325の位置指令フィールドには、解析処理部140、240、340で解析された位置指令を書き込むようにしたが、補間処理部150、250、350での補間処理結果を書き込むようにしてもよい。また、上述したように、自制御ユニットが制御権を取得している期間中のみに他の制御ユニットに対する位置指令PIを共有エリアに書き込むようにしてもよいし、あるいは自制御ユニットが解析したプログラムに含まれる位置指令を全て共有エリアに書き込むようにしてもよい。また、FB信号は、自制御ユニットの実軸が他の制御ユニットからの位置指令に基づいて駆動されるときのみに共有エリアに書き込むようにしてもよいし、あるいはFB信号を常に共有エリアに書き込むようにしてもよい。
次に、図6に示した加工プログラムが制御ユニット#1、#2、および#3によって実行されるときの軸交換の動作を図9〜図11にしたがって説明する。図1に示した加工機械600においては、前述したように、NC軸(X軸、Z軸)の軸交換は行われず、主軸(C軸)の軸交換のみが行われる。このため、主に、C軸の軸交換動作について説明する。図9は、ブロックN10が実行されるときの共有エリア125、225、および325の状態を示す図である。図10は、ブロックN20が実行されるときの共有エリア125、225、および325の状態を示す図である。図11は、ブロックN30が実行されるときの共有エリア125、225、および325の状態を示す図である。C軸に関するエントリの状態のみが抽出されて示されている。
加工プログラム#P1のブロックN10では、C1軸が指定されている。軸交換解析部141は、図3に示した軸定義に基づき、加工プログラム#P1のブロックN10に含まれる軸交換指令G140によって指定されている軸であるC1軸が自制御ユニット#1の実軸であると判断する。また、この軸交換指令G140は最初の軸交換指令であるので、軸交換解析部141は、このC1軸の制御権を自制御ユニット#1が即座に取得してもよいと判断する。軸交換解析部141は、この判断を軸交換処理部160に伝える。軸交換処理部160は、共有エリア125にC1軸の制御権取得宣言をセットする。具体的には、軸交換処理部160は、共有エリア125の領域A#1のC1軸のコマンドフィールドCmdに、自制御ユニット番号「#1」を書き込み、領域A#1のC1軸の応答信号フィールドAnsに、許可OKを書き込む(図9参照)。この後、制御ユニット#1は、加工プログラム#P1のブロックN10の次のブロックを実行する。
加工プログラム#P2のブロックN10に関しても同様の処理が実行される。この結果、軸交換処理部160は、共有エリア125の領域A#1のC2軸のコマンドフィールドCmdに、自制御ユニット番号「#1」を書き込み、領域A#1のC2軸の応答信号フィールドAnsに、許可OKを書き込む(図9参照)。この後、制御ユニット#1は、加工プログラム#P2のブロックN10の次のブロックを実行する。
制御ユニット#2および#3は、同様の処理を実行する。この結果、図9に示すように、共有エリア225の領域B#2のC3軸のコマンドフィールドCmdに、制御ユニット番号「#2」が書き込まれ、領域B#2のC3軸の応答信号フィールドAnsに、許可OKが書き込まれる。また、共有エリア225の領域B#2のC4軸のコマンドフィールドCmdに、制御ユニット番号「#2」が書き込まれ、領域B#2のC4軸の応答信号フィールドAnsに、許可OKが書き込まれる。また、共有エリア325の領域C#3のC5軸のコマンドフィールドCmdに、制御ユニット番号「#3」が書き込まれ、領域C#3のC5軸の応答信号フィールドAnsに、許可OKが書き込まれる。また、共有エリア325の領域C#3のC6軸のコマンドフィールドCmdに、制御ユニット番号「#3」が書き込まれ、領域C#3のC6軸の応答信号フィールドAnsに、許可OKが書き込まれる。
加工プログラム#P1のブロックN20では、C2軸が指定されている。軸交換解析部141は、図3に示した軸定義に基づき、加工プログラム#P1のブロックN10に含まれる軸交換指令G140によって指定されている軸であるC2軸が自制御ユニット#1の実軸であると判断する。軸交換解析部141は、軸停止判定部155および機械動作完了判定部137からの通知に基づき制御権要求されたC2軸の制御権の取得が可能と判定すると、共有エリア125の領域A#1のC2軸のコマンドフィールドCmdに、自制御ユニット番号「#1」を書き込み、領域A#1のC2軸の応答信号フィールドAnsに、許可OKを書き込む(図10参照)。解析処理部140は、ブロックN20の次のブロックの解析結果を補間処理部150に渡すことで、次のブロックを実行させる。
加工プログラム#P2のブロックN20では、C3軸が指定されている。軸交換解析部141は、図3に示した軸定義に基づき、加工プログラム#P2のブロックN20に含まれる軸交換指令G140によって指定されている軸であるC3軸が他の制御ユニット#2の実軸であると判断する。軸交換解析部141は、この判断を軸交換処理部160に伝える。軸交換処理部160は、共有エリア125の領域A#1のC3軸のコマンドフィールドCmdに、自制御ユニット番号「#1」を書き込む(図10参照)。この書き込み内容は、制御ユニット#1の共有エリア125から制御ユニット#2の共有エリア225および制御ユニット#3の共有エリア325に転送される。図10の矢印K1は、制御ユニット#1から制御ユニット#2へのデータ転送を示している。なお、図10及び図11においては、軸交換に寄与しない制御ユニットへのデータ転送を示す矢印の図示を便宜上省略している。
制御ユニット#2の軸交換処理部260は、図8に示した処理によって、制御権の受渡し判定、および許可信号OKまたは不許可信号NGの書き込みを実行する。軸交換処理部260は、共有エリア225の領域B#2のC3軸のコマンドフィールドCmdに、制御ユニット番号「#1」を書き込み、領域B#2のC3軸の応答信号フィールドAnsに、許可信号OKまたは不許可信号NGを書き込む。図10の矢印K2は、この書き込み処理を表している。この書き込み内容は、制御ユニット#2の共有エリア225から制御ユニット#1の共有エリア125および制御ユニット#3の共有エリア325に転送される。図10の矢印K3は、制御ユニット#2の領域B#2から制御ユニット#1の領域A#2へのデータ転送を示している。
制御ユニット#1の軸交換処理部160は、共有エリア125の領域A#2の記憶内容に基づいて、C3軸の制御権要求が許可されたか否かを判定する。軸交換処理部160は、制御権を取得できた場合、制御権を取得できたことを解析処理部140に伝える。解析処理部140は、加工プログラム#P2のブロックN20の次ブロックを解析し、解析結果である位置指令を、共有エリア125の領域A#1のC3軸の位置指令フィールドPIに書き込む。
加工プログラム#P3のブロックN20が制御ユニット#2で実行されることによって、図10に示すように、共有エリア225の領域B#2のC4軸のコマンドフィールドCmdに、制御ユニット番号「#2」が書き込まれ、領域B#2のC4軸の応答信号フィールドAnsに、許可信号OKが書き込まれる。加工プログラム#P4のブロックN20が制御ユニット#2で実行されることによって、矢印K4、K5、およびK6で示すような軸交換処理が行われる。
加工プログラム#P5のブロックN20が制御ユニット#3で実行されることによって、図10に示すように、共有エリア325の領域C#3のC6軸のコマンドフィールドCmdに、制御ユニット番号「#3」が書き込まれ、領域C#3のC6軸の応答信号フィールドAnsに、許可OKが書き込まれる。加工プログラム#P6のブロックN20が制御ユニット#3で実行されることによって、矢印K7、K8、およびK9で示すような軸交換処理が行われる。
加工プログラム#P1のブロックN30では、C3軸が指定されている。軸交換解析部141は、図3に示した軸定義に基づき、C3軸が他の制御ユニット#2の実軸であると判断する。軸交換解析部141は、この判断を軸交換処理部160に伝える。軸交換処理部160は、共有エリア125の領域A#1のC3軸のコマンドフィールドCmdに、自制御ユニット番号「#1」を書き込む(図11参照)。この書き込み内容は、制御ユニット#1の共有エリア125から制御ユニット#2の共有エリア225および制御ユニット#3の共有エリア325に転送される。図11の矢印K11は、制御ユニット#1から制御ユニット#2へのデータ転送を示している。制御ユニット#2の軸交換処理部260は、図8に示した処理によって、制御権の受渡し判定を実行する。軸交換処理部260は、共有エリア225の領域B#2のC3軸のコマンドフィールドCmdに、制御ユニット番号「#1」を書き込み、領域B#2のC3軸の応答信号フィールドAnsに、許可信号OKまたは不許可信号NGを書き込む。図11の矢印K12は、この書き込み処理を表している。この書き込み内容は、制御ユニット#2の共有エリア225から制御ユニット#1の共有エリア125および制御ユニット#3の共有エリア325に転送される。図11の矢印K13は、制御ユニット#2の領域B#2から制御ユニット#1の領域A#2へのデータ転送を示している。制御ユニット#1の軸交換処理部160は、共有エリア125の領域A#2の記憶内容に基づいて、C3軸の制御権要求が許可されたか否かを判定する。軸交換処理部160は、制御権を取得できた場合、制御権を取得できたことを解析処理部140に伝える。解析処理部140は、加工プログラム#P1のブロックN30の次ブロックを解析し、解析結果である位置指令を、共有エリア125の領域A#1のC3軸の位置指令フィールドPIに書き込む。
同様にして、加工プログラム#P2のブロックN30が制御ユニット#1で実行されることによって、矢印K14、K15、およびK16で示すような軸交換処理が行われる。加工プログラム#P3のブロックN30が制御ユニット#2で実行されることによって、矢印K17、K18、およびK19で示すような軸交換処理が行われる。加工プログラム#P4のブロックN30が制御ユニット#2で実行されることによって、矢印K21、K22、およびK23で示すような軸交換処理が行われる。加工プログラム#P5のブロックN30が制御ユニット#3で実行されることによって、矢印K24、K25、およびK26で示すような軸交換処理が行われる。加工プログラム#P6のブロックN30が制御ユニット#3で実行されることによって、矢印K27、K28、およびK29で示すような軸交換処理が行われる。
図12は、軸交換の際の制御権の移行タイミングを説明するための図である。制御ユニット#1の第2系統で実行される加工プログラム#P2と、制御ユニット#2の第1系統で実行される加工プログラム#P3が示されている。加工プログラム#P2は、ブロックN100に、C2軸を指定する軸交換指令G140を含み、ブロックN110に、C3軸を指定する軸交換指令G140を含み、ブロックN120に、C2軸を指定する軸交換指令G140を含んでいる。加工プログラム#P3は、ブロックN100に、C3軸を指定する軸交換指令G140を含み、ブロックN110に、C2軸を指定する軸交換指令G140を含み、ブロックN120に、C3軸を指定する軸交換指令G140を含んでいる。
制御ユニット#1は、加工プログラム#P2のブロックN100を実行し、X2軸、Z2軸、およびC2軸の制御権を獲得したとする。制御ユニット#1は、加工プログラム#P2のブロックN100の次ブロック以降を実行し、X2軸、Z2軸およびC2軸を用いた加工を実行する。同様に、制御ユニット#2は、加工プログラム#P3のブロックN100を実行し、X3軸、Z3軸、およびC3軸の制御権を獲得したとする。制御ユニット#2は、加工プログラム#P3のブロックN100の次ブロック以降を実行し、X3軸、Z3軸およびC3軸を用いた加工を実行する。
時刻t1に、X2軸、Z2軸およびC2軸が用いられる制御ユニット#1での加工が終了したとする。この時刻t1では、X3軸、Z3軸およびC3軸が用いられる制御ユニット#2での加工が終了していないとする。制御ユニット#1は、加工プログラム#P2のブロックN110を実行し、C3軸の制御権を他の制御ユニットに要求する。制御ユニット#2は、制御ユニット#1からのC3軸の制御権要求を受信するが、X3軸、Z3軸およびC3軸を用いた加工が終了する時刻t2までは、不許可信号NGを制御ユニット#1に返す。制御ユニット#1は、時刻t1から時刻t2までの期間は、不許可信号NGの受信により、C3軸の制御権の取得待ち状態となる。
時刻t2に、X3軸、Z3軸およびC3軸が用いられる制御ユニット#2での加工が終了すると、制御ユニット#2は、C3軸の許可信号OKを制御ユニット#1に返す。制御ユニット#1は、許可信号OKの受信により、C3軸の制御権を取得する。制御ユニット#1は、加工プログラム#P2のブロックN110の次ブロック以降を実行し、C3軸の位置指令PIを共有エリア125を介して制御ユニット#2に転送する。
時刻t2に、X3軸、Z3軸およびC3軸が用いられる制御ユニット#2での加工が終了すると、制御ユニット#2は、加工プログラム#P3のブロックN110を実行し、C2軸の制御権を他の制御ユニットに要求する。制御ユニット#1は、制御ユニット#2からのC2軸の制御権要求を検知し、C2軸の許可信号OKを制御ユニット#2に返す。制御ユニット#2は、許可信号OKの受信により、C2軸の制御権を取得する。制御ユニット#2は、加工プログラム#P3のブロックN110の次ブロック以降を実行し、C2軸の位置指令PIを共有エリア225を介して制御ユニット#1に転送する。
制御ユニット#1は、加工プログラム#P2のブロックN110の次のブロック以降の内容に基づきX2軸およびZ2軸を駆動制御し、制御ユニット#2から共有エリアを介して転送された位置指令PIに基づきC2軸を駆動制御する。制御ユニット#2は、加工プログラム#P3のブロックN110の次のブロック以降の内容に基づきX3軸およびZ3軸を駆動制御し、制御ユニット#1から共有エリアを介して転送された位置指令PIに基づきC3軸を駆動制御する。
なお、図1の数値制御装置では、1つの制御ユニットに2つの系統を接続したが、1つの制御ユニットに1つの系統を接続してもよいし、1つの制御ユニットに3つ以上の系統を接続してもよい。また、上記の説明では主軸(C軸)のみを制御ユニット間で軸交換したが、NC軸を軸交換の対象にしてもよい。
このように実施の形態1では、各制御ユニットの共有エリアを使って軸交換のための制御権要求、応答信号の送受信を行うようにしたので、簡単で、機械構成の変更(対象軸の変更、系統の増設など)または制御構成の変更(制御ユニットの増設など)への自由度の高い軸交換制御が可能となる。また、各制御ユニット#1、#2、#3の共有エリア125、225、325にエントリを増やすだけで、軸交換の対象軸の変更、系統の増設、制御ユニットの増設などへの対応が可能であり、自由度の高い軸交換制御が可能である。また、各共有エリアには、加工機械に備えられる全ての系統に含まれる軸の情報を書き込むためのエントリを設け、対応する軸のエントリに制御権要求および応答信号を書き込むようにしており、複雑なフォーマットの制御権要求信号を用いることなく軸交換が可能となる。また、3つ以上の制御ユニットを持つ数値制御装置に対しても、簡単な設定で軸交換を実現できる。
実施の形態2.
図1に示した加工機械600と、図2に示した数値制御装置1000と、図3に示した軸定義と、図4および図5に示した共有エリアは、実施の形態2にも適用される。実施の形態2では、補助指令のひとつであるMコードを用いて制御ユニット間での軸交換を指令する。図2において、解析処理部140は、加工プログラム122中にMコードが含まれていた場合に、加工プログラム中のMコードを補助指令軸交換解析部138に渡す。補助指令軸交換解析部138は、渡されたMコードをPLC135に渡す。PLC135には、Mコードと指令内容との対応関係を示すMコードテーブルが記憶されている。PLC135は、Mコードテーブルを使ってMコードに対応する指令内容を取得し、取得した指令内容を補助指令軸交換解析部138に渡す。補助指令軸交換解析部138は、指令内容を解析し、解析結果をワークエリア124を介して解析処理部140に渡す。
図13は、実施の形態2に適用される加工プログラムの一例を示す図である。加工プログラム#Q1、#Q2は加工プログラム122に対応し、制御ユニット#1で、並行して実行される。加工プログラム#Q3、#Q4は加工プログラム222に対応し、制御ユニット#2で並行して実行される。加工プログラム#Q5、#Q6は加工プログラム322に対応し、制御ユニット#3で並行して実行される。
加工プログラム#Q1〜#Q6のブロックN10、N20、およびN30には、Mコードを用いた軸交換指令が記述されている。例えば、加工プログラム#Q1のブロックN10には、「M111」が記述され、加工プログラム#Q2のブロックN10には、「M121」が記述され、加工プログラム#Q3のブロックN10には、「M211」が記述され、加工プログラム#Q4のブロックN10には、「M221」が記述され、加工プログラム#Q5のブロックN10には、「M311」が記述され、加工プログラム#Q6のブロックN10には、「M321」が記述されている。
図14は、PLC135の内蔵メモリにストアされるMコードテーブルの一例を示す図である。図14において、制御ユニット番号は、Mコードを実行する制御ユニットを示し、系統は、Mコードを実行する制御ユニット内の系統番号を示している。「$1」は第1系統を示し、「$2」は第2系統を示している。M111は、第1軸をX1軸とし、第3軸をC1軸とする軸構成であって、制御ユニット#1の第1系統$1が制御の主体であることを示している。M121は、第1軸をX2軸とし、第2軸をZ2軸とし、第3軸をC2軸とする軸構成であって、制御ユニット#1の第2系統$2が制御の主体であることを示している。M211は、第1軸をX3軸とし、第2軸をZ3軸とし、第3軸をC3軸とする軸構成であって、制御ユニット#2の第1系統$1が制御の主体であることを示している。M221は、第1軸をX4軸とし、第2軸をZ4軸とし、第3軸をC4軸とする軸構成であって、制御ユニット#2の第2系統$2が制御の主体であることを示している。M311は、第1軸をX5軸とし、第2軸をZ5軸とし、第3軸をC5軸とする軸構成であって、制御ユニット#3の第1系統$1が制御の主体であることを示している。M321は、第1軸をX6軸とし、第2軸をZ6軸とし、第3軸をC6軸とする軸構成であって、制御ユニット#3の第2系統$2が制御の主体であることを示している。
例えば、加工プログラム#Q2のブロックN20が実行されるときの動作について説明する。制御ユニット#1の解析処理部140は、ブロックN20のMコードM122を補助指令軸交換解析部138に渡す。補助指令軸交換解析部138は、渡されたMコードM122をPLC135に渡す。PLC135は、図14に示したMコードテーブルに基づいてMコードM122に対応する指令内容を取得し、取得した指令内容を補助指令軸交換解析部138に渡す。補助指令軸交換解析部138は、指令内容を解析する。この解析によって、M122は、第1軸をX2軸とし、第2軸をZ2軸とし、第3軸をC3軸とする軸構成であって、制御の主体は、制御ユニット#1の第2系統$2であることを認識する。補助指令軸交換解析部138は、解析結果をワークエリア124を介して軸交換処理部160に渡す。
軸交換処理部160は、実施の形態1と同様に動作する。具体的には、軸交換処理部160は、共有エリア125の領域A#1のC3軸のコマンドフィールドCmdに、自制御ユニット番号「#1」を書き込み、制御ユニット#2にC3軸の制御権を要求する。その後、軸交換処理部160は、制御権を取得できた場合、機械制御信号処理部136、PLC135を介して、シーケンスプログラムに制御権取得完了を通知する。また、軸交換処理部160は、制御権を取得できたことを解析処理部140に伝える。解析処理部140は、加工プログラム#Q2のブロックN20の次ブロックを解析し、解析結果である位置指令を、共有エリア125の領域A#1のC3軸の位置指令フィールドPIに書き込む。
このように実施の形態2によれば、各制御ユニットの共有エリアを使って軸交換のための制御権要求、応答信号の送受信を行うようにしたので、実施の形態1と同様、簡単で自由度の高い軸交換制御が可能となる。また、Mコードを用いて軸交換を行うようにしたので、制御ユニットと系統との組み合わせの変更が容易となる。
実施の形態3.
つぎに、図15〜図18に従って実施の形態3を説明する。図15は、実施の形態3の数値制御装置によって制御される加工機械700を示す図である。この加工機械700は、マルチステーション機であり、加工ユニットの自動交換機能を有している。加工機械700は、ワークドラム710と、ワークドラム710の周囲に配置される15個の加工ユニット$1〜$15を有する。ワークドラム710の外周には、15個のワーク支持部701が配置されている。各ワーク支持部701は、ワークを支持する。したがって、ワークドラム710には、15個のワークを配置可能である。各加工ユニット$1〜$15は、対向するワーク支持部701が把持するワークに対して加工を実行する。ワークドラム710は、B方向に回転する。ワークドラム710の回転によってワークは次の加工ユニットの対向位置に移動する。各ワークは、加工ユニット$1〜$15での加工が実行されると、加工終了となる。
加工ユニット$1は、X1軸およびC1軸を有する。加工ユニット$2は、X2軸、Z2軸、およびC2軸を有する。加工ユニット$3は、X3軸およびC3軸を有する。加工ユニット$4は、X4軸、Z4軸、およびC4軸を有する。加工ユニット$5は、X5軸、Z5軸、およびC5軸を有する。加工ユニット$6は、X6軸およびC6軸を有する。加工ユニット$7は、X7軸およびC7軸を有する。加工ユニット$8は、X8軸、Y8軸、およびZ8軸を有する。加工ユニット$9は、X9軸、Y9軸、およびZ9軸を有する。加工ユニット$10は、X10軸、Z10軸、およびC10軸を有する。加工ユニット$11は、X11軸、Z11軸、およびC11軸を有する。加工ユニット$12は、X12軸、Y12軸、およびZ12軸を有する。加工ユニット$13は、X13軸およびC13軸を有する。加工ユニット$14は、X14軸およびC14軸を有する。加工ユニット$15は、X15軸およびC15軸を有する。加工ユニット$16は、加工ユニット$12と交換可能であり、X16軸およびZ16軸を有する。
図2に示した数値制御装置1000の構成は、実施の形態3にも適用される。ただし、図2に示された駆動部180、280および380は、図15に示した加工機械700の駆動部に置換される。図15に示した加工機械700は、15個の加工ユニット(系統)$1〜$15を持ち、15工程で一つのワークを加工する。工程1(系統$1)から工程11(系統$11)までが実行された後、工程12(系統$12)では、例えば、ドリル加工が実行され、その後、工程13(系統$13)から工程15(系統$15)までが実行されて、加工完了となる。
ワークを仕上げるためには、例えば旋削加工の追加が必要である。実施の形態3では、加工機械が持つ加工ユニットの自動交換機能を利用し、旋削加工を追加する。例えば、工程12の加工ユニット$12によるドリル加工終了後に、ドリル加工ユニットである加工ユニット$12を、旋削加工ユニット$16に交換し、交換された旋削加工ユニット$16で旋削加工を行う。旋削加工終了後、旋削加工ユニット$16を加工ユニット$12に交換する。その後、旋削加工が行われたワークに対し、工程13(系統$13)から工程15(系統$15)までが実行されて、加工完了となる。
図16は、数値制御装置1000の3つの制御ユニット#1、#2および#3の軸定義を示す図である。図16の軸定義によれば、制御ユニット#1は、工程1を実行する加工ユニット$1と、工程2を実行する加工ユニット$2と、工程3を実行する加工ユニット$3と、工程4を実行する加工ユニット$4と、工程5を実行する加工ユニット$5と、追加される旋削工程を実行する加工ユニット$16とを駆動制御する。
図16の軸定義によれば、制御ユニット#2は、工程6を実行する加工ユニット$6と、工程7を実行する加工ユニット$7と、工程8を実行する加工ユニット$8と、工程9を実行する加工ユニット$9と、工程10を実行する加工ユニット$10と、5軸加工工程を実行する加工ユニット$17とを駆動制御する。加工ユニット$17に関しては、実施の形態4で説明する。
図16の軸定義によれば、制御ユニット#3は、工程11を実行する加工ユニット$11と、工程12を実行する加工ユニット$12と、工程13を実行する加工ユニット$13と、工程14を実行する加工ユニット$14と、工程15を実行する加工ユニット$15とを駆動制御する。
図17は、制御ユニット#3の第2系統によって実行される加工プログラムの一例を示す図である。この加工プログラムは、前述したドリル加工から旋削加工への加工ユニットの交換処理を含んでいる。図18は、ドリル加工から旋削加工への加工ユニットの交換処理手順を示すフローチャートである。以下、図17および図18に従って動作説明する。
図17の加工プログラムのブロックN50においては、「G140 X=X12 Y=Y12 Z=Z12」が記述されている。制御ユニット#3は、N50の次のブロック以降を実行することで、加工ユニット$12のX12軸、Y12軸およびZ12軸を駆動制御し、ワークに対しドリル加工を実行する(図18 S300)。ドリル加工が終了すると、制御ユニット#3は、ドリル加工から旋削加工への交換を指示するMコードであるM100が加工プログラムに記述されているか否かを判定する(S310)。加工プログラムにM100がある場合、このMコードM100はPLCを介してシーケンスプログラムに通知される。シーケンスプログラムによる処理により、加工ユニット$12は旋削加工ユニットである加工ユニット$16に自動交換される(S320)。
図17の加工プログラムのブロックN60には、M100が記述されている。N60の次のブロックには、軸交換指令としての「G140 X=X16 Z=Z16」が記述されている。図16に示したように、G140で指定されたX16軸およびZ16軸は、制御ユニット#1の制御軸である。したがって、制御ユニット#3は、M100による加工ユニットの交換の終了後に、実施の形態1と同様の処理を実行することで、X16軸およびZ16軸の制御権要求を共有エリア325を介して制御ユニット#1に送信する。X16軸およびZ16軸の制御権要求に対する許可信号OKを共有エリア325を介して制御ユニット#1から受信すると、制御ユニット#3は、「G140 X=X16 Z=Z16」が記述されているブロックの次のブロック以降を解析し、解析結果としての位置指令PIを共有エリア325を介して制御ユニット#1に送信する。制御ユニット#1は、共有エリア125を介して受信した位置指令PIに基づいて加工ユニット$16のX16軸およびZ16軸を駆動制御し、旋削加工を実行する。このようにして、制御ユニット#3から制御ユニット#1への軸交換が行われ(S330)、旋削加工が実行される(S340)。
旋削加工が終了すると、制御ユニット#3は、旋削加工からドリル加工への交換を指示するMコードであるM101が加工プログラムに記述されているか否かを判定する(S350)。加工プログラムにM101がある場合、このMコードM101はPLCを介してシーケンスプログラムに通知される。シーケンスプログラムによる処理により、加工ユニット$16は元の加工ユニット$12に自動交換される(S360)。
図17の加工プログラムのブロックN70には、M101が記述されている。N70の次のブロックには、軸交換指令としての「G140 X=X12 Y=Y12 Z=Z12」が記述されている。制御ユニット#3は、M101による加工ユニットの交換の終了後に、「G140 X=X12 Y=Y12 Z=Z12」が記述されているブロックの次のブロック以降を解析し、解析結果に基づき加工ユニット$12のX12軸、Y12軸およびZ12軸を駆動制御する。この駆動制御によって次のワークに対するドリル加工が実行される(S370)。このようにして加工ユニットの交換を行い、一連の工程に例えば、旋削加工が追加される。
このように実施の形態3によれば、加工ユニットの交換後に制御ユニット間で軸交換を行うようにしており、機械を止めること無く継続して一連の加工が可能となる。
実施の形態4.
図19は、実施の形態4の数値制御装置2000を示す図である。数値制御装置2000は、制御ユニット#1、#2、および#3を有する。各制御ユニット#1、#2、および#3には、5軸制御演算部170、270および370が追加されている。5軸制御演算部170は、解析処理部140から取得した加工プログラムの解析結果に基づき、X軸、Y軸、Z軸、A軸、B軸についての座標変換演算を行い、座標変換結果をワークエリア124を介して補間処理部150に渡す。
図20は、実施の形態4の数値制御装置2000によって制御される加工機械700を示す図である。この加工機械700は、実施の形態3と同様のマルチステーション機であり、加工ユニットの自動交換機能を有している。図20に示した加工機械700は、加工ユニット$12を加工ユニット$17に交換可能である。加工ユニット$17は、X17軸、Y17軸、Z17軸、A17軸、B17軸を有し、5軸加工を行う。
先に示した図16は、実施の形態4の数値制御装置2000の軸定義にも適用される。5軸加工を行う加工ユニット$17は、制御ユニット#2の実軸であると定義されている。
図21は、制御ユニット#3の第2系統によって実行される加工プログラムの一例を示す図である。この加工プログラムは、加工ユニット$12による加工から5軸加工ユニットである加工ユニット$17への加工ユニットの交換処理を含んでいる。図21の加工プログラムのブロックN200においては、「G140 X=X12 Y=Y12 Z=Z12」が記述されている。制御ユニット#3は、N200の次のブロック以降を実行することで、加工ユニット$12のX12軸、Y12軸およびZ12軸を駆動制御し、ワークに対し例えばドリル加工を実行する。
図21の加工プログラムのブロックN210には、M100が記述されている。このM100によって、前述と同様にして、加工ユニット$12から加工ユニット$17への自動交換が行われる。N210の次のブロックには、軸交換指令としての「G140 X=X17 Y=Y17 Z=Z17 A=A17 B=B17」が記述されている。図16に示したように、G140で指定されたX17軸、Y17軸、Z17軸、A17軸およびB17軸は、制御ユニット#2によって駆動される。したがって、制御ユニット#3は、M100による加工ユニットの交換(加工ユニット$12から加工ユニット$17への交換)の終了後に、実施の形態1と同様の処理を実行することで、X17軸、Y17軸、Z17軸、A17軸およびB17軸の制御権要求を共有エリア325を介して制御ユニット#2に送信する。X17軸、Y17軸、Z17軸、A17軸およびB17軸の制御権要求に対する許可信号OKを共有エリア325を介して制御ユニット#2から受信すると、制御ユニット#3は、「G140 X=X17 Y=Y17 Z=Z17 A=A17 B=B17」が記述されているブロックの次のブロック以降を解析し、解析結果としての位置指令PIを共有エリア325を介して制御ユニット#2に送信する。制御ユニット#2では、共有エリア225を介して受信した位置指令PIを解析処理部240を介して5軸制御演算部270に渡す。5軸制御演算部270は、5軸の座標変換演算を行い、演算結果をワークエリア224を介して補間処理部250に渡す。これにより、加工ユニット$17のX17軸、Y17軸、Z17軸、A17軸およびB17軸が駆動制御され、5軸加工が実行される。
図21の加工プログラムのブロックN220には、M101が記述されている。N220の次のブロックには、軸交換指令としての「G140 X=X12 Y=Y12 Z=Z12」が記述されている。制御ユニット#3は、M101による加工ユニット交換(加工ユニット$17から加工ユニット$12への交換)の終了後に、「G140 X=X12 Y=Y12 Z=Z12」が記述されているブロックの次のブロック以降を解析し、解析結果に基づき加工ユニット$12のX12軸、Y12軸およびZ12軸を駆動制御する。この駆動制御によって次のワークに対する加工が実行される。このようにして、加工ユニットの交換を行い、一連の工程に例えば、5軸加工が追加される。
5軸制御演算部170、270、370での5軸演算処理は、他の加工に比べ多くの演算時間を要する。また、或る制御ユニットが他の制御ユニットに比べ、処理負荷が高いという状況が発生する可能性がある。例えば、制御ユニット#1および制御ユニット#2が5つの系統に接続され、制御ユニット#3が1つの系統に接続されている場合、制御ユニット#1および制御ユニット#2は、制御ユニット#3に比べ、処理負荷が高い。このような状況を考慮し、各制御ユニットの共有エリアに各制御ユニットの負荷状況を確認できる負荷確認フィールドを設けるようにしてもよい。
各制御ユニット#1、#2、#3の5軸制御演算部170、270、370は、自制御ユニットの処理負荷を確認し、処理負荷が低い場合は、自制御ユニットの5軸制御演算部で5軸座標変換処理を行い、座標変換結果を、ワークエリア124、224、334を介して、補間処理部150、250、350に渡して、5軸加工動作を行う。
一方、自制御ユニットの処理負荷が或る閾値より高い場合、各制御ユニット#1、#2、#3の5軸制御演算部170、270、370は、共有エリアの負荷確認フィールドを参照して、他の制御ユニットの負荷状況を判定する。各制御ユニット#1、#2、#3の5軸制御演算部170、270、370は、この判定によって、他のユニットに比べ処理負荷が低い制御ユニットを識別する。そして、各制御ユニット#1、#2、#3の5軸制御演算部170、270、370は、共有エリアを介して、処理負荷が低い制御ユニットに対し、5軸演算データを渡す。共有エリアを介して5軸演算データを受け取った制御ユニットの5軸制御演算部は、5軸座標変換処理を実行し、座標変換結果を、共有エリアを介して、要求元の制御ユニットに返す。要求元の制御ユニットの5軸制御演算部は、受け取った座標変換結果をワークエリアを介して、補間処理部に渡して、5軸加工動作を行う。
このように実施の形態4では、加工ユニットを5軸加工機械へ交換後に制御ユニット間で軸交換を行うようにしており、機械を止めること無く継続して、5軸加工を含む一連の加工が可能となる。
実施の形態5.
図22は、実施の形態5の数値制御装置3000を示す図である。実施の形態5の数値制御装置3000においては、制御ユニット#1、#2および#3の外部に、記憶装置900を設けている。記憶装置900は、第1通信路520または第2通信路530に接続されており、制御ユニット#1、#2および#3がアクセス可能な共有エリアとして機能する。実施の形態5においては、記憶装置900を使って、前述した軸交換のための制御データの交換を制御ユニット#1、#2および#3間で行う。記憶装置900にストアされる制御データは、前述した軸交換のための制御権要求信号、応答信号を含む。前記制御データとして、各軸の制御を行うための位置指令、位置フィードバック信号を含ませてもよい。制御ユニット#1、#2および#3内の共有エリア125,225および325は、軸交換のための制御データの交換のためには使用されず、他の用途のために使用される。
記憶装置900は、例えば、3つの領域900#1,900#2,および900#3を有する。第1領域900#1は、制御ユニット#1が各軸の制御権要求信号を書き込むための領域であって、制御ユニット#2,#3がその応答信号を書き込むための領域である。第2領域900#2は、制御ユニット#2が各軸の制御権要求信号を書き込むための領域であって、制御ユニット#1,#3がその応答信号を書き込むための領域である。第3領域900#3は、制御ユニット#3が各軸の制御権要求信号を書き込むための領域であって、制御ユニット#1,#2がその応答信号を書き込むための領域である。制御ユニット#1,#2,#3は、各領域900#1,900#2,および900#3に、データが書き込まれたか否かを定期的に監視している。
第1領域900#1に、制御ユニット#1が制御権を取得した軸の位置指令を書き込み、第2領域900#2に、制御ユニット#2が制御権を取得した軸の位置指令を書き込み、第3領域900#3に、制御ユニット#3が制御権を取得した軸の位置指令を書き込むようにしてもよい。また、第1領域900#1に、制御ユニット#1の実軸(X1軸,C1軸,X2軸,Z2軸,C2軸)の位置フィードバック信号を書き込み、第2領域900#2に、制御ユニット#2の実軸(X3軸,Z3軸,C3軸,X4軸,Z4軸,C4軸)の位置フィードバック信号を書き込み、第3領域900#3に、制御ユニット#3の実軸(X5軸,Z5軸,C5軸,X6軸,Z6軸,C6軸)の位置フィードバック信号を書き込むようにしてもよい。領域900#1,900#2,および900#3の記憶形態として、図5に示した制御データのフォーマットを採用する場合は、第1領域900#1を領域A#1に対応させ、第2領域900#2を領域B#2に対応させ、第3領域900#3を領域C#3に対応させればよい。
例えば、制御ユニット#1が、制御ユニット#2の実軸であるC3軸の制御権を要求する場合、C3軸の制御権要求信号を第1領域900#1に書き込む。制御ユニット#2は、第1領域900#1に書き込まれたC3軸の制御権要求信号を検出すると、実施の形態1と同様にして、C3軸の状態を判定する。制御ユニット#2は、制御権要求されたC3軸の受渡しが可能と判定すると、第1領域900#1に、C3軸の受渡しを許可する信号を書き込む。制御ユニット#1は、第1領域900#1に書き込まれた許可信号によって、C3軸の制御権の取得を把握する。
このように実施の形態5では、各制御ユニットの外部に配した記憶装置900を使って軸交換のための制御権要求、応答信号の送受信を行うようにしたので、実施の形態1と同様、簡単で、機械構成の変更または制御構成の変更への自由度の高い軸交換制御が可能となる。また、3つ以上の制御ユニットを持つ数値制御装置に対しても、簡単な設定で軸交換を実現できる。
なお、実施の形態1〜実施の形態4の共有エリア125,225,325にストアする記憶データのフォーマット、あるいは実施の形態5の記憶装置900にストアする記憶データのフォーマットに関しては、図5に示したものに限らず、他の任意のフォーマットを採用してもよい。
また、前述した実施の形態2〜実施の形態4に実施の形態5を適用してもよい。例えば、実施の形態3が適用される場合、制御ユニット#3は、旋削加工ユニット$16のX16軸およびZ16軸の制御権要求を記憶装置900を介して制御ユニット#1に送信する。制御ユニット#1は、制御権要求に対する応答信号を記憶装置900を介して制御ユニット#3に送信する。
また、実施の形態1〜実施の形態4では、共有エリア125,225,325を制御ユニット#1,#2,#3の内部に設けたが、共有エリア125,225,325を制御ユニットの外部に設けてもよい。この場合も、共有エリア125,225,325は、実施の形態1〜実施の形態4と同様、基本的には、同じ制御データがストアされている状態となるように制御され、共有エリア125については、制御ユニット#1のみがアクセス可能で、共有エリア225については、制御ユニット#2のみがアクセス可能で、共有エリア325については、制御ユニット#3のみがアクセス可能となっている。
また、上記実施の形態1〜5においては、例えば、制御ユニット#1が他の制御ユニット#2または#3に接続された軸を制御する場合、位置指令を他の制御ユニットに送るようにしたが、補間処理部150での補間処理結果を他の制御ユニットに送るようにしてもよい。
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
上述した課題を解決し、目的を達成するために、本発明の数値制御装置は、第1制御ユニットと、第2制御ユニットと、共有エリアとを有する。前記第1制御ユニットは、第1加工プログラムに基づいて複数の駆動軸を有する第1系統軸を駆動する。前記第2制御ユニットは、第2加工プログラムに基づいて複数の駆動軸を有する第2系統軸を駆動する。前記共有エリアは、前記第1制御ユニットおよび前記第2制御ユニットがアクセス可能である。前記第1制御ユニットは、前記第1加工プログラムに含まれる軸交換指令であって前記第2系統軸が指定された軸交換指令を実行するとき、前記第2系統軸に対する第1の制御権要求を前記共有エリアに書き込む第1の軸交換処理部を備える。前記第2制御ユニットは、前記第1の制御権要求が前記共有エリアに書き込まれた場合、前記第2系統軸の駆動状態に応じて前記第1の制御権要求を許可するか否かを判定し、前記判定結果を示す第1の応答を前記共有エリアに書き込む第2の軸交換処理部を備える。前記第1の軸交換処理部は、前記共有エリアに書き込まれた前記第1の応答に基づいて、前記第2系統軸の制御権取得を判定する。