(57)【要約】  マスタコントローラの演算能力やネットワークの通信速度を増大させることなく、システムの応答性を向上するモーションコントローラを提供する。  マスタコントローラ１では、プログラム解析部１ｇにより、制御対象機器の動作を行うにあたり許容される遅延時間を指定した制御プログラムから、この許容される遅延時間を超過しないように、スレーブコントローラが実行すべきスレーブ用プログラムを分離するとともに、スレーブ用プログラムをスレーブコントローラが実行するに当たって必要なスレーブ間通信設定情報を生成する。スレーブコントローラ２では、スレーブ間通信により、他のスレーブコントローラから入出力情報を取得し、スレーブ用プログラム実行部２ｆにより、自身のスレーブ用プログラムを実行する。
2012090291.tif 000002
【特許請求の範囲】
【請求項１】
マスタコントローラと少なくとも一つのスレーブコントローラとを、ネットワークを用いて接続して構成され、複数の制御対象機器に対する入出力操作又は制御処理を実行するモーションコントローラであって、
前記マスタコントローラは：
前記制御対象機器の動作を行うに当たって許容される遅延時間が指定された制御プログラムを入力し、前記許容される遅延時間を超過しないように前記制御プログラムから前記スレーブコントローラが実行すべきスレーブ用プログラムを分離すると共に、前記分離されたスレーブ用プログラムを前記スレーブコントローラが実行するに当たって必要なスレーブ間通信設定情報を生成するプログラム解析手段と；
前記制御プログラムから前記スレーブ用プログラムを分離した後に残るマスタ用プログラムを実行するマスタ用プログラム実行手段と；
前記スレーブ用プログラムを前記スレーブコントローラに対して前記ネットワークを経由して転送するスレーブ用プログラム転送手段と；
マスタ・スレーブ間通信設定情報および前記スレーブ間通信設定情報を前記スレーブコントローラに対して前記ネットワークを経由して転送するスレーブ間通信設定手段と；そして、
前記ネットワークを経由した前記スレーブコントローラとの間の通信制御を実行するマスタ用通信手段とを備えており、
前記スレーブコントローラは：
前記マスタコントローラから転送された前記スレーブ用プログラムを実行するスレーブ用プログラム実行手段と；
前記マスタコントローラから前記ネットワークを経由して送信され、前記スレーブコントローラで受信されるスレーブ用コマンドおよび前記スレーブ用プログラム実行手段から発行されるスレーブ用コマンドを実行するスレーブ用コマンド実行手段と；
前記マスタ・スレーブ間通信設定情報および前記スレーブ間通信設定情報を記憶するスレーブ用通信設定手段と；そして、
前記マスタ・スレーブ間通信設定情報および前記スレーブ間通信設定情報に基づいて前記ネットワークを経由した前記マスタコントローラとの間及び他の前記スレーブコントローラとの間の通信制御を実行するスレーブ用通信手段とを備えていることを特徴とするモーションコントローラ。
【請求項２】
前記請求項１に記載したモーションコントローラにおいて、前記制御プログラムは、状態遷移図の形式を用いて記述されており、各状態を示すステップにおいて実行すべきコマンドを記述すると共に、前記ステップの終了条件および前記終了条件が成立してから次のステップが実行されるまでの許容される遅延時間を明示的に記述していることを特徴とするモーションコントローラ。
【請求項３】
前記請求項１に記載したモーションコントローラにおいて、前記マスタコントローラのプログラム解析手段は、前記制御プログラムに記述された前記制御対象機器の動作を行うにあたり許容される遅延時間の情報を取得し、前記許容される遅延時間が前記マスタコントローラの制御周期よりも大きい場合には、前記制御対象機器の動作を前記マスタ用プログラムの中で実行し、前記許容される遅延時間が前記マスタコントローラの制御周期よりも小さい場合には、前記制御対象機器を直接駆動する前記スレーブコントローラの中の前記スレーブ用プログラムの中で実行するように、前記制御プログラムから前記マスタ用プログラムと前記スレーブ用プログラムを生成し、更に、前記スレーブ用プログラムで他の前記スレーブコントローラの入出力情報を参照する場合は、前記スレーブコントローラ間の通信を行うことにより前記入出力情報を取得するための前記スレーブ間通信設定情報を生成することを特徴とするモーションコントローラ。
【請求項４】
前記請求項１に記載したモーションコントローラにおいて、前記プログラム解析手段は、前記制御プログラムに記述された前記制御対象機器の動作を行うにあたり許容される遅延時間の情報を取得し、前記許容される遅延時間が前記スレーブコントローラ間の通信を行っても実現不可能な場合には、前記許容される遅延時間の指定が不正であることを示すエラーメッセージを出力することを特徴とするモーションコントローラ。
【請求項５】
前記請求項１に記載したモーションコントローラにおいて、前記モーションコントローラの初期設定時には、前記スレーブ用通信設定手段により、前記マスタ・スレーブ間通信設定情報および前記スレーブ間通信設定情報を、前記ネットワークを経由して前記スレーブコントローラに転送し、さらに、前記スレーブ用プログラム転送手段により、前記スレーブ用プログラムを前記スレーブコントローラに転送することを特徴とするモーションコントローラ。
【請求項６】
前記請求項１に記載したモーションコントローラにおいて、前記モーションコントローラのプログラム実行時には、前記マスタコントローラでは、前記マスタ用プログラム実行手段により、前記マスタ用プログラムを実行し、前記スレーブコントローラに対してコマンドを送信するとともに、前記スレーブコントローラからのステータス情報を受信し、前記スレーブコントローラでは、前記スレーブ間通信設定情報に基づいて他の前記スレーブコントローラの入出力情報を取得し、前記スレーブ用プログラム実行手段により、前記スレーブ用プログラムを実行して、この実行状況を示すステータス情報を前記マスタコントローラに対して送信することを特徴とするモーションコントローラ。
【請求項７】
前記請求項１に記載したモーションコントローラにおいて、前記モーションコントローラに接続される表示・入力手段において、前記マスタコントローラに関しては、前記マスタ・スレーブ間通信設定情報の入力と、前記制御プログラムの編集と、前記プログラム解析手段の実行と、前記マスタ用プログラムの確認とを可能とし、前記スレーブコントローラに関しては、前記マスタ・スレーブ間通信設定情報および前記スレーブ間通信設定情報の確認と、前記スレーブ用プログラムの確認とを可能とすることを特徴とするモーションコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、産業機械などに組み込まれる制御対象機器をネットワークによって接続し、これらを制御するモーションコントローラに関する。
【背景技術】
【０００２】
近年、ＦＡ（ファクトリ・オートメーション）システムにおける省配線化を目的とし、ネットワークにより各種制御機器を接続する制御システムが採用されている。特に、産業機械においては、その駆動系を構成する各軸のモータを駆動するドライバや、周辺機器に含まれる入出力デバイスをネットワークにより接続し、これらの制御対象機器を制御するモーションコントローラが用いられている。【０００３】
図１５は、このようなネットワーク型モーションコントローラの一般的な構成を示す図である。図１５では、全体を制御するマスタコントローラ（以下、マスタ）２０１と、制御対象機器を直接駆動するスレーブコントローラ（以下、スレーブ）２０２が、ネットワーク２０３により接続されている。マスタ２０１は、制御プログラムをプログラム実行部により実行し、マスタ用通信部によりネットワーク２０３を経由してスレーブ２０２との間の通信を行い、スレーブ２０３のセンサなどの信号の状態２０４を入力するとともに、モータなどの制御対象機器を動作させるためのコマンド２０５を出力する。【０００４】
ここで、マスタのプログラム実行部では、一定の周期（以下、制御周期）で、例えば、メモリ等に格納された制御プログラムが実行されるが、制御対象機器の数（スレーブ数）の増大や、制御処理の複雑化に伴い、マスタの制御周期は増大する。また、マスタとスレーブとの間の通信も一定の周期（以下、通信周期）で行われるが、スレーブ数の増大に伴い、ネットワークの通信周期は増大する。【０００５】
一般に、マスタの制御周期は通信周期の整数倍に設定され、制御システムとしての応答性、すなわち、センサなどの入力信号の状態変化に対応して機器動作を変更する際、状態変化の発生を捉えてから実際に機器動作が変更されるまでの遅延時間（レイテンシ）は、マスタの制御周期によって決定される。【０００６】
このため、従来は、制御システムとしての応答性を向上するために、ネットワークの通信周期の短縮と、マスタの制御周期の短縮、すなわち、ネットワークの通信速度の向上と、マスタの演算能力の向上が必要であった。しかしながら、このような方法によると、制御システムのコストが増大してしまうという問題がある。【０００７】
このような従来のネットワーク型モーションコントローラにおいて、例えば、以下の特許文献１に記載されるように、サーボコマンドの発行処理の高速化を目的として、サーボコマンド発行処理部と分離されたサーボレスポンス管理部により、モーションプログラム内の軸移動命令の実行とは無関係に、任意に設定された終了条件を判定し、この条件が一致すれば、サーボコマンド発行処理部に通知して別の命令を実行する方法が既に知られている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００２−６９１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述の特許文献１に記載の方法では、モーションコントローラ（マスタ）の応答性は、サーボレスポンス管理部の実行周期により決定されるが、最速の場合でネットワークの通信周期での応答が可能である。しかしながら、この方法では、更なる応答性向上を実現するためには、ネットワーク通信周期の短縮、すなわち、通信速度の向上を図る必要があり、更には、それに合わせてマスタの演算性能の向上を図ることも必要となる。【００１０】
また、従来のように、マスタで制御プログラムを集中処理する場合、制御対象の規模の増大や制御処理の複雑化に伴って、マスタのプログラム実行に要する演算負荷も増大し、このことが上述の応答性向上を阻害する要因となる可能性もある。【００１１】
そこで、本発明では、ネットワーク型のモーションコントローラであって、マスタの演算能力やネットワークの通信速度を増大させることなく、システムの高速な応答を実現することが可能なモーションコントローラを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した目的を達成するために、本発明によれば、マスタコントローラと少なくとも一つのスレーブコントローラとを、ネットワークを用いて接続して構成され、複数の制御対象機器に対する入出力操作又は制御処理を実行するモーションコントローラであって、前記マスタコントローラは：前記制御対象機器の動作を行うに当たって許容される遅延時間が指定された制御プログラムを入力し、前記許容される遅延時間を超過しないように前記制御プログラムから前記スレーブコントローラが実行すべきスレーブ用プログラムを分離すると共に、前記分離されたスレーブ用プログラムを前記スレーブコントローラが実行するに当たって必要なスレーブ間通信設定情報を生成するプログラム解析手段と；前記制御プログラムから前記スレーブ用プログラムを分離した後に残るマスタ用プログラムを実行するマスタ用プログラム実行手段と；前記スレーブ用プログラムを前記スレーブコントローラに対して前記ネットワークを経由して転送するスレーブ用プログラム転送手段と；マスタ・スレーブ間通信設定情報および前記スレーブ間通信設定情報を前記スレーブコントローラに対して前記ネットワークを経由して転送するスレーブ間通信設定手段と；そして、前記ネットワークを経由した前記スレーブコントローラとの間の通信制御を実行するマスタ用通信手段とを備えており、前記スレーブコントローラは：前記マスタコントローラから転送された前記スレーブ用プログラムを実行するスレーブ用プログラム実行手段と；前記マスタコントローラから前記ネットワークを経由して送信され、前記スレーブコントローラで受信されるスレーブ用コマンドおよび前記スレーブ用プログラム実行手段から発行されるスレーブ用コマンドを実行するスレーブ用コマンド実行手段と；前記マスタ・スレーブ間通信設定情報および前記スレーブ間通信設定情報を記憶するスレーブ用通信設定手段と；そして、前記マスタ・スレーブ間通信設定情報および前記スレーブ間通信設定情報に基づいて前記ネットワークを経由した前記マスタコントローラとの間及び他の前記スレーブコントローラとの間の通信制御を実行するスレーブ用通信手段とを備えているモーションコントローラが提供される。【００１３】
また、本発明によれば、前記に記載したモーションコントローラにおいて、前記制御プログラムは、状態遷移図の形式を用いて記述されており、各状態を示すステップにおいて実行すべきコマンドを記述すると共に、前記ステップの終了条件および前記終了条件が成立してから次のステップが実行されるまでの許容される遅延時間を明示的に記述していることが好ましく、又は、前記マスタコントローラのプログラム解析手段は、前記制御プログラムに記述された前記制御対象機器の動作を行うにあたり許容される遅延時間の情報を取得し、前記許容される遅延時間が前記マスタコントローラの制御周期よりも大きい場合には、前記制御対象機器の動作を前記マスタ用プログラムの中で実行し、前記許容される遅延時間が前記マスタコントローラの制御周期よりも小さい場合には、前記制御対象機器を直接駆動する前記スレーブコントローラの中の前記スレーブ用プログラムの中で実行するように、前記制御プログラムから前記マスタ用プログラムと前記スレーブ用プログラムを生成し、更に、前記スレーブ用プログラムで他の前記スレーブコントローラの入出力情報を参照する場合は、前記スレーブコントローラ間の通信を行うことにより前記入出力情報を取得するための前記スレーブ間通信設定情報を生成することが好ましい。【００１４】
更に、本発明によれば、前記に記載したモーションコントローラにおいて、前記プログラム解析手段は、前記制御プログラムに記述された前記制御対象機器の動作を行うにあたり許容される遅延時間の情報を取得し、前記許容される遅延時間が前記スレーブコントローラ間の通信を行っても実現不可能な場合には、前記許容される遅延時間の指定が不正であることを示すエラーメッセージを出力することが好ましく、又は、前記モーションコントローラの初期設定時には、前記スレーブ用通信設定手段により、前記マスタ・スレーブ間通信設定情報および前記スレーブ間通信設定情報を、前記ネットワークを経由して前記スレーブコントローラに転送し、さらに、前記スレーブ用プログラム転送手段により、前記スレーブ用プログラムを前記スレーブコントローラに転送することが好ましい。【００１５】
そして、本発明では、前記に記載したモーションコントローラにおいて、前記モーションコントローラのプログラム実行時には、前記マスタコントローラでは、前記マスタ用プログラム実行手段により、前記マスタ用プログラムを実行し、前記スレーブコントローラに対してコマンドを送信するとともに、前記スレーブコントローラからのステータス情報を受信し、前記スレーブコントローラでは、前記スレーブ間通信設定情報に基づいて他の前記スレーブコントローラの入出力情報を取得し、前記スレーブ用プログラム実行手段により、前記スレーブ用プログラムを実行して、この実行状況を示すステータス情報を前記マスタコントローラに対して送信することが好ましく、又は、前記モーションコントローラに接続される表示・入力手段において、前記マスタコントローラに関しては、前記マスタ・スレーブ間通信設定情報の入力と、前記制御プログラムの編集と、前記プログラム解析手段の実行と、前記マスタ用プログラムの確認とを可能とし、前記スレーブコントローラに関しては、前記マスタ・スレーブ間通信設定情報および前記スレーブ間通信設定情報の確認と、前記スレーブ用プログラムの確認とを可能とすることが好ましい。
【発明の効果】
【００１６】
上述した本発明によれば、マスタコントローラの演算能力やネットワークの通信速度を増大させることなく、システムの応答性を向上することが可能であると共に、制御プログラムで指定された許容遅延時間を超過しないようにスレーブが実行すべきプログラムを自動的に分離することにより、高速な応答を実現する制御プログラムの作成を容易に行うことが可能なモーションコントローラが提供される。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態に係るモーションコントローラの構成を示す図である。
【図２】上記モーションコントローラにおける制御プログラムの記述の一例を示す図である。
【図３】上記図２に示した制御プログラム中に記述された軸動作の速度パターンの一例を示す図である。
【図４】上記モーションコントローラを構成するマスタコントローラにおけるプログラム解析部におけるプログラム解析処理の詳細を示すフローチャート図である。
【図５】上記図２に示した制御プログラムを解析して生成されたマスタ用プログラムの一例を示す図である。
【図６】上記図２に示した制御プログラムを解析して生成されたスレーブ用プログラムの一例を示す図である。
【図７】上記モーションコントローラの入出力ポートのマッピングテーブルの一例を示す図である。
【図８】上記モーションコントローラにおける軸のマッピングテーブルの一例を示す図である。
【図９】上記モーションコントローラにおける初期設定時の動作の一例を示す図である。
【図１０】上記モーションコントローラにおけるプログラム実行時の動作の一例を示す図である。
【図１１】上記モーションコントローラにおけるマスタ用プログラム実行部でのプログラム実行処理の詳細を示すフローチャート図である。
【図１２】上記モーションコントローラにおけるスレーブ用プログラム実行部でのプログラム実行処理の詳細を示すフローチャート図である。
【図１３】上記モーションコントローラにおいて、マスタの通信設定部、プログラム編集部、プログラム解析部を操作するための画面表示の一例を示す図である。
【図１４】上記モーションコントローラにおいて、各スレーブの通信設定情報、スレーブ用プログラムを確認するための画面表示の一例を示す図である。
【図１５】従来のネットワーク型モーションコントローラの構成を示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態について、添付の図面を用いて詳細に説明する。
【００１９】
図１は、本発明の一実施形態になるモーションコントローラの構成を示す図である。
【００２０】
本発明の一実施形態になるモーションコントローラは、図からも明らかなように、マスタコントローラ１と少なくとも一つのスレーブコントローラ２とをネットワーク３により接続した制御システムであり、スレーブコントローラ２には各種の制御対象機器が接続されている。この各種の制御対象機器は、マスタコントローラ１及び/またはスレーブコントローラ２により、制御される。
【００２１】
まず、マスタコントローラ１の構成について説明すると、プログラム編集部１ｅは、ユーザが、ディスプレイやキーボードなどの表示・入力部１ａを用いて、制御対象機器の動作を記述した制御プログラムを作成する手段を構成している。ここでは、制御プログラムを記述する際に、制御対象機器の動作を行うにあたって許容される遅延時間が指定できるように構成されている。制御プログラム記憶部１ｆは、作成された制御プログラムを記憶する手段であり、具体的には、メモリ等によって構成される。
【００２２】
プログラム解析部１ｅは、作成された制御プログラムを入力して、上述の許容される遅延時間を超過しないように、制御プログラムからスレーブコントローラ２が実行すべきスレーブ用プログラムを分離すると共に、このスレーブ用プログラムをスレーブコントローラ２が実行するにあたって必要なスレーブ間通信設定情報を生成する手段を構成している。スレーブ用プログラム記憶部１ｊは、ここで生成されたスレーブ用プログラムを記憶する手段であり、また、スレーブ間通信設定情報記憶部１ｈは、同じく生成されたスレーブ間通信設定情報を記憶する手段であり、これらは、例えば、メモリ等により構成されている。
【００２３】
制御プログラムからスレーブ用プログラムを分離した後で残った部分は、マスタコントローラ１で実行するマスタ用プログラムとなり、マスタ用プログラム記憶部１ｍは、マスタ用プログラムを記憶する手段を構成し、また、マスタ用プログラム実行手段１ｎは、マスタ用プログラムを実行する手段を構成し、これらも上記と同様に、例えば、メモリ等により構成されている。
【００２４】
通信設定部１ｂは、ユーザが上記表示・入力部１ａを用いて、ネットワーク３を経由したマスタコントローラ１とスレーブコントローラ２との間の通信設定を行うための手段であり、これにより、マスタ・スレーブ間通信設定情報が生成される。また、この通信設定部１ｂにより、上述のスレーブ間通信設定情報をも確認することができる。マスタ・スレーブ間通信設定情報記憶部１ｃは、このマスタ・スレーブ間通信設定情報を記憶するための手段を構成している。マスタ用通信部１ｄは、マスタコントローラ１のネットワーク３を経由した通信を制御するための手段を構成している。
【００２５】
スレーブ用通信設定部１ｉは、上述したマスタ・スレーブ間通信設定情報とスレーブ間通信設定情報を、それぞれのスレーブコントローラ２に対して、ネットワーク３を経由して転送するための手段を構成している。また、スレーブ用プログラム転送部１ｋは、上述したスレーブ用プログラムを該当するスレーブコントローラ２に転送するための手段を構成している。
【００２６】
なお、上記の図１に示した構成では、マスタコントローラ１にプログラム編集部１ｅやプログラム解析部１ｇを備えているものとして説明したが、本発明はこれに限定されることなく、例えば、これらの手段をマスタコントローラ１とは別の計算機（パーソナルコンピュータなど）に備える構成とすることも可能である。
【００２７】
次に、スレーブコントローラ２の構成について説明する。まず、通信設定部２ａは、上述したマスタ・スレーブ間通信設定情報とスレーブ間通信設定情報に基づいて、スレーブコントローラ２の通信設定を行う手段を構成しており、通信設定情報記憶部２ｂは、これらの通信設定情報を記憶する手段を構成している。また、スレーブ用通信部２ｃは、スレーブコントローラ２のネットワーク３を経由した通信を制御する手段を構成している。
【００２８】
プログラム転送部２ｄは、上述したスレーブ用プログラムをマスタコントローラ１からネットワーク３を経由して転送するための手段を構成しており、また、スレーブ用プログラム記憶部２ｅは、転送されたスレーブ用プログラムを記憶するための手段を構成している。また、スレーブ用プログラム実行部２ｇは、スレーブ用プログラムを実行するための手段である。
【００２９】
スレーブ用コマンド実行部２ｆは、マスタコントローラ１からスレーブコントローラ２に対して送信されるコマンドと、スレーブ用プログラム実行部２ｇがスレーブ用プログラムを実行する際に発行されるコマンドを実行するための手段を構成している。また、デバイス制御手段２ｈは、スレーブコントローラ２に接続される制御対象機器２ｉの入出力操作や各種制御処理（サーボ制御処理など）を行う手段を構成している。
【００３０】
次に、図２は、上記のその構造を説明した、本実施形態になるモーションコントローラにおける制御プログラムの記述例を示す図である。
【００３１】
図において、制御プログラムは、状態遷移図の形式を用いて記述される。ここで、各状態に相当するステップ３０１では、これを識別するためのステップ番号３０１ａ（「Ｓ１００」）と、このステップ３０１で実行する制御処理をコマンド３０１ｂとして記述する。さらに、このステップにおけるコマンドの処理が終了したと見なす条件（以下、「終了条件」と言う）と、この終了条件が成立してから次のステップに遷移するまでに許容される遅延時間（以下、「レイテンシ」と言う）を、明示的に、遷移条件３０１ｃとして記述する。
【００３２】
例えば、最初のステップ３０１（ステップ番号３０１ａ、「Ｓ１００」）では、１番目のモータ軸（ＡＸＩＳ１）を目標位置Ｘ０まで速度Ｖ０で移動させるコマンド３０１ｂ（即ち、「MoveAxis(AXIS1, X0, V0)」）と、ＡＸＩＳ１が目標位置に位置決めされるという終了条件が成立（即ち、「AxisStatus[AXIS1]==C_IN_POS」）したあと、１０ミリ秒の許容レイテンシで次のステップへ遷移する（即ち、「with Latency<=C_10_MILLISEC」）という遷移条件３０１ｃが記述されている。
【００３３】
同様に、次のステップ３０２（ステップ番号３０２ａ、「Ｓ１０１」）では、ＡＸＩＳ１を目標位置Ｘ１まで速度Ｖ１で移動させるコマンド３０２ｂ（即ち、「MoveAxis(AXIS1, X1, V1)」）と、０番目の入力ポート（ＰＯＲＴ０）の信号（センサＡの信号）がＯＮになるという終了条件（即ち、「In[PORT0]==ON」）が成立したあと、５０マイクロ秒の許容レイテンシで次のステップへ遷移するという遷移条件３０２ｃ（即ち、「with Latency<=C_50_MILLISEC」）が記述されている。
【００３４】
なお、モーショコントローラにおいては、複数の制御プログラムを並行して実行すること（所謂、「マルチタスク」）が可能であり、それぞれの制御プログラムにおいては固有のステップ番号が用いられるものとする。また、制御プログラムの各ステップには、この制御プログラムの最初のステップから連続したステップ番号が自動的に割り振られるものとする。
【００３５】
そして、上記の図２に示した制御プログラムでは、以下のような軸動作が記述されている。まず、ステップ３０１（ステップ番号３０１ａ、「Ｓ１００」）では、ＡＸＩＳ１を位置Ｘ０に速度Ｖ０で移動する（即ち、コメント「/* Move to X0 at V0 */」の通り）。次に、ステップ３０２（ステップ番号３０２ａ、「Ｓ１０１」）では、位置Ｘ１に向かって速度Ｖ１で移動する（即ち、コメント「/* Move to X1 at V1 */」の通り）。そして、この移動中に、ＰＯＲＴ０に接続されたセンサＡがＯＮになったら（即ち、「In[PORT0]==ON」）、ステップ番号Ｓ１０２に遷移し、そのときの位置にＤＸを加算した位置に向かって速度Ｖ２で移動する（即ち、コメント「/* Move +DX at V2 */」の通り）。更に、この移動中にＰＯＲＴ１に接続されたセンサＢがＯＮになったら（即ち、「In[PORT1]==ON」）、ステップ番号Ｓ１０３に遷移し、位置Ｘ０に速度Ｖ３で移動する（即ち、コメント「/* Move to X0 at V3 */」の通り）。そして、各ステップへの遷移条件では、許容レイテンシが指定されている。
【００３６】
次に、図３は、上記の図２に示した制御プログラムに記述された軸動作の速度パターンの例を示す図である。
【００３７】
この図３では、各ステップ（ステップ番号Ｓ１００〜Ｓ１０４）における速度パターン４０１が示されており、ステップＳ１０１からＳ１０２に遷移する際の終了条件４０２（「センサＡがＯＮ」）と、ステップＳ１０２からＳ１０３に遷移する際の終了条件４０３（「センサＢがＯＮ」）が成立するタイミングの例が示されている。実際の軸動作では、終了条件４０２（「In[PORT0]==ON」）、終了条件４０３（「In[PORT1]==ON」）が成立した後に次のステップに遷移する際、すなわち、移動速度を変更するまでに遅延時間が発生し、そこで、上記図２に示した制御プログラムでは、許容レイテンシを指定することにより、この遅延時間を管理している。
【００３８】
更に、図４は、本実施形態になるモーションコントローラのプログラム解析部（図１の符号１ｇ）におけるプログラム解析処理の一例を示すフローチャート図である。このプログラム解析部では、上記図２に示したような制御プログラムの最初のステップ（初期ステップ）から始まり、ステップ番号ｎの順に従って、順次、解析処理を行う。
【００３９】
まず、初期ステップ（処理５０１）では、初期ステップであるか否かの判定を行い、その結果、初期ステップである（「Ｙｅｓ」）と判定された場合には、ステップＳｎのコマンドを制御プログラムから入力し（処理５０２）、更に、マスタ用プログラムにＳｎのコマンド処理を追加して（処理５０３）、処理５０４に移る。
【００４０】
他方、処理５０１で、初期ステップでない（「Ｎｏ」）と判定された場合には、次のステップＳｎ＋１への遷移条件を入力し（処理５０４）、ステップＳｎ＋１のコマンドを入力し（処理５０５）、さらに、ステップＳｎ＋１への遷移条件から許容レイテンシの指定情報を取得する（処理５０６）。
【００４１】
ここで、マスタコントローラの制御周期が、予め指定された許容レイテンシより小さいか否かを判定し（処理５０７）、その結果、小さい（「Ｙｅｓ」）と判定された場合には、マスタコントローラによる許容レイテンシでの応答が可能と判断して、マスタ用プログラムにステップＳｎの終了条件判定処理を追加し（処理５０８）、さらに、マスタ用プログラムにステップＳｎ＋１のコマンド処理を追加して（処理５０９）、その後、処理５１６に移る。
【００４２】
他方、上記の判定処理５０７において、マスタコントローラの制御周期が指定された許容レイテンシより小さくない（「Ｎｏ」）と判定された場合には、スレーブコントローラでのプログラム実行が必要と判断して、ステップＳｎの終了条件に含まれる入力信号が接続されているスレーブコントローラ（ここでは、スレーブ（１）とする）と、ステップＳｎ＋１のコマンドで動作させる制御対象機器が接続されているスレーブコントローラ（スレーブ（２）とする）との間の通信遅延時間を取得する（処理５１０）。
【００４３】
そして、スレーブ（１）とスレーブ（２）との間の通信遅延時間が指定された許容レイテンシより小さいか否かを判定し（処理５１１）、通信遅延時間が許容レイテンシより小さい（「Ｙｅｓ」）場合には、スレーブ（１）とスレーブ（２）の間のスレーブ間通信設定情報を生成し（処理５１２）、スレーブ（２）のスレーブ用プログラムにステップＳｎの終了条件判定処理を追加し（処理５１３）、さらにスレーブ（２）のスレーブ用プログラムにステップＳｎ＋１のコマンド処理を追加（処理５１４）した後、処理５１６へ移る。
【００４４】
他方、上記判定処理５１１の結果、スレーブ（１）とスレーブ（２）との間の通信遅延時間が許容レイテンシより小さくない（「Ｎｏ」）場合、指定された許容レイテンシの値が実現不可能であることを示すエラーメッセージを出力し（処理５１５）、その後、プログラム解析処理を終了する。
【００４５】
また、プログラム解析処理に入力された制御プログラムの最後のステップに到達、すなわち、プログラム終了の判定（処理５１６）の結果、「Ｙｅｓ」の場合にも、プログラム解析処理を終了する。
【００４６】
これに対し、プログラム終了でない場合（判定処理５１６の結果が「Ｎｏ」）、ステップ番号ｎに１を加算し（処理５１７）、再び、上記の処理５１４へ戻り、以上の解析処理を、プログラム終了となるまで、順次、繰り返す。
【００４７】
続いて、図５と図６には、それぞれ、上記図３に示した制御プログラムを解析処理した結果、生成された、マスタ用プログラムと、そして、スレーブ用プログラムを示す。
【００４８】
まず、図５に示すように、上記図２に示した制御プログラムからスレーブ用プログラムを分離したあとに残るマスタ用プログラムでは、スレーブ用プログラムに移った処理が省略され、その結果、ステップ番号のみが付与された空ステップ（Ｓ１０２、Ｓ１０３）が生成される。
【００４９】
一方、図６に示すように、ステップＳ１０１の終了条件判定処理からステップＳ１０３のコマンド処理までが、スレーブ用プログラムとして分離されている（この時点で、許容レイテンシを指定する条件式は省略される）。この例では、マスタコントローラの制御周期が１ミリ秒であるとし、許容レイテンシをこれよりも小さく設定されているステップの処理がスレーブ用プログラムとして分離されている。
【００５０】
なお、図６に示したスレーブ用プログラムをスレーブコントローラで実行するためには、上述したように、各ステップの終了条件に含まれる入力信号が接続されているスレーブコントローラと、コマンドで動作させる制御対象機器が接続されているスレーブコントローラを特定する必要がある。そこで、ここでは、以下に述べる入出力ポートのマッピングテーブル及び軸のマッピングテーブルを利用する。
【００５１】
図７は、入出力ポートのマッピングテーブルの例を示す図であり、図８は、軸のマッピングテーブルの例を示す図である。
【００５２】
まず、図７に示した入出力ポートのマッピングテーブルでは、モーションコントローラの論理的な「入力ポート番号」８０１と、当該入力ポートに割り当てられる入力信号が接続されているスレーブコントローラの「スレーブ番号」８０２と、当該入力信号の「デバイス名称」とが記述されている。例えば、上記図６に示したスレーブ用プログラムの場合、入力ポート０と１に接続される「センサＡ」と「センサＢ」が終了条件として参照されており、その結果、これらはスレーブ番号１のスレーブコントローラに接続されていることが分かる。
【００５３】
他方、図８に示した軸のマッピングテーブルでは、モーションコントローラの論理的な「軸番号」９０１と、当該軸に割り当てられる軸が接続されているスレーブコントローラの「スレーブ番号」９０２と、そして、その「軸名称」９０３が記述されている。例えば、上記図６に示したスレーブ用プログラムの場合、軸番号１（ＡＸＩＳ１）に割り当てられる「モータ１」を移動するコマンドが記述されており、その結果、この軸はスレーブ番号１のスレーブコントローラに接続されていることが分かる。
【００５４】
このように、本発明によれば、入出力ポートのマッピングテーブル及び軸のマッピングテーブルを用いることにより、スレーブ用プログラムを実行するスレーブコントローラと、当該スレーブコントローラとスレーブ間通信を行う必要のある他のスレーブコントローラが特定されることから、これらに対するスレーブ間通信設定と、そして、スレーブ用プログラムの転送を行う。
【００５５】
続いて、図９は、モーションコントローラの初期設定時における動作の例を示す図である。なお、この図９は、上記図６に示したスレーブ用プログラムを実行する際の初期設定を示している。
【００５６】
スレーブ番号１のスレーブコントローラ（図中、「スレーブ１」と表記）に対して、スレーブ間通信設定情報を含む通信設定情報を、マスタコントローラ１からネットワーク３を経由して転送し（矢印１００１で表記）、スレーブ番号２のスレーブコントローラ（図中、「スレーブ２」と表記）に対して、スレーブ間通信設定情報を含む通信設定情報及び図６に示したスレーブ用プログラムを、マスタコントローラ１からネットワーク３を経由して転送する（矢印１００２で表記）。
【００５７】
一方、図１０は、モーションコントローラのプログラム実行時の動作の例を示す図であり、この図は、上記図６に示したスレーブ用プログラムを実行する際の通信処理を示している。
【００５８】
スレーブ１からスレーブ２に対しては、「センサＡ」と「センサＢ」の入力信号状態がスレーブ間通信により送信され（矢印１１０１で表記）、また、マスタコントローラ１からスレーブ２に対しては、マスタコントローラ１で現在実行中のステップ番号が送信される（矢印１１０２で表記）。このコマンド（ステップ番号）がスレーブ用プログラムの最初のステップ番号（上記図６では、Ｓ１０１）に一致すれば、スレーブ用プログラムの実行を開始し、その後、その実行状態を「ステータス（情報）」としてマスタコントローラ１へ送信する（矢印１１０３で表記）。なお、マスタコントローラ１は、マスタ用プログラムを実行する際に、各スレーブコントローラに対してコマンドを送信し、各スレーブコントローラは、コマンドの実行状態をステータス（情報）として、マスタコントローラ１へ送信する。
【００５９】
図１１は、モーションコントローラ１のマスタ用プログラム実行部（図１の符号１ｎ）におけるプログラム実行処理の詳細を示すフローチャート図である。このマスタ用プログラム実行部１ｎは、マスタ用プログラム（図１の符号１ｍ）の各ステップに記述された処理を、初期ステップから順に実行する。
【００６０】
処理が開始すると、まず、現在実行中の処理をステップ番号ｎとして、ステップＳｎが初期ステップであるか否かを判定し（処理１２０１）、その結果、ステップＳｎが初期ステップである（「Ｙｅｓ」）の場合、ステップＳｎのコマンド処理を実行し（処理１２０２）、その後、処理１２０３に移る。
【００６１】
他方、上記の判定処理１２０１の結果、ステップＳｎが初期ステップでない（「Ｎｏ」）場合、更に、ステップＳｎの終了条件が成立しているかどうかを判定する（処理１２０３）。その結果、これが成立している（「Ｙｅｓ」）場合には、次のステップＳｎ＋１のコマンド処理を実行する（処理１２０４）。その後、更に、ステップＳｎ＋１でプログラムが終了か否かを判定し（処理１２０５）、その結果、ステップＳｎ＋１でプログラム終了（「Ｙｅｓ」）の場合には、当該プログラムの終了を示す終了フラグフラグをセットし（処理１２０６）し、その後、処理１２０７に移る。
【００６２】
これに対して、上記の判定処理１２０５でステップＳｎ＋１でプログラム終了でない（「Ｎｏ」）と判定された場合には、ステップ番号ｎに１を加算し（処理１２０７）、プログラム実行処理を終了する。また、上記の判定処理１２０３において、ステップＳｎの終了条件が成立していない（「Ｎｏ」）と判定された場合にも、同様に、プログラム実行処理を終了する。
【００６３】
なお、以上のプログラム実行処理は、マスタコントローラ１において、一定の周期（制御周期）で実行されており、マスタコントローラ１で実行されるマスタ用プログラム毎に、現在実行中のステップ番号が管理されている。また、上述の終了フラグも、同様に、マスタ用プログラム毎に設けられており、その結果、終了フラグがセットされると、プログラム実行処理は行われない。
【００６４】
図１２は、本発明の一実施の形態になるモーションコントローラを構成するスレーブ用プログラム実行部（図１の符号２ｇ）におけるプログラム実行処理の詳細を示すフローチャート図である。このスレーブ用プログラム実行部２ｇは、スレーブ用プログラム（図１の符号２ｅ）の各ステップに記述された処理を、ステップ番号の順に、実行する。
【００６５】
処理が開始すると、まず、現在実行中のステップ番号ｎとして、ステップＳｎの終了条件が成立しているか否かを判定し（処理１３０１）、その結果、ステップＳｎの終了条件が成立している（「Ｙｅｓ」）の場合、次のステップＳｎ＋１のコマンド処理を実行する（処理１３０２）。その後、ステップＳｎ＋１でプログラム終了するか否かを判定し、その結果、ステップＳｎ＋１でプログラム終了する（「Ｙｅｓ」）の場合には、終了フラグフラグをセットし（処理１３０４）し、処理１３０５に移る。
【００６６】
他方、上記判定処理１３０３において、ステップＳｎ＋１でプログラム終了しない（「Ｎｏ」）の場合には、ステップ番号ｎに１を加算し（処理１３０５）、その後、プログラム実行処理を終了する。また、上記判定処理１３０１においてステップＳｎの終了条件が成立していない場合（「Ｎｏ」）にも、同様に、プログラム実行処理を終了する。
【００６７】
なお、以上のプログラム実行処理は、スレーブコントローラ２において一定の周期で実行されている。また、上述の終了フラグがセットされるとプログラム実行処理は行われない。また、一つのスレーブコントローラが制御するデバイスが限られているため、スレーブコントローラのプログラム実行処理の負荷は小さく、そのため、スレーブコントローラとして演算能力高いプロセッサなどを用意する必要はない。
【００６８】
更に、図１３は、上述した図１に示したモーションコントローラのマスタコントローラ１を構成する通信設定部１ｂ、プログラム編集部１ｅ、プログラム解析部１ｇを操作するための画面表示の一例を示す。
【００６９】
この図１３に示した画面表示では、ネットワークの接続構成を示す部分１４０１において、マスタコントローラ（図中、「Master」と表記）を選択すると、マスタコントローラ１に記憶されているプログラムに関する情報を示す部分１４０２が表示される。ここにはプログラムの一覧を示すテーブル１４０２ａが表示され、この中から一つのプログラムを選択し、編集ボタン（図中、「Edit」と表記）１４０２ｂをクリックすると、別のプログラム編集画面（図示せず）が表示され、プログラムの編集を行うことが可能となる。また、コンパイルボタン（図中、「Compile」と表記）１４０２ｃをクリックすると、プログラムの解析処理が実行され、そして、解析処理中に何らかエラーが発生すれば、エラーメッセージ１４０２ｄが表示される。
【００７０】
図１４は、上記モーションコントローラの各スレーブを構成する通信設定情報２ｂ、スレーブ用プログラム２ｅを確認するための画面表示の一例を示す。
【００７１】
この図１４に示した画面表示では、ネットワークの接続構成を示す部分１５０１において、スレーブコントローラ（図中、「Slave」と表記）のいずれかを選択すると、そのスレーブコントローラの通信設定情報を示す部分１５０２が表示される。ここには、マスタとスレーブとの間の送受信データの定義と通信遅延時間、スレーブ間通信データの定義と通信遅延時間が表示される。また、選択されたスレーブコントローラのスレーブ用プログラムを示す部分１５０３には、スレーブ用プログラムの一覧を示すテーブル１５０３ａが表示され、この中から一つのプログラムを選択し、表示ボタン（図中、「View」と表記）１５０３ｂをクリックすると、別のプログラム表示画面（図示せず）が表示され、プログラムの内容が確認することが出来る。
【００７２】
以上に詳細に述べたように、本発明の実施形態によれば、制御対象機器の動作を行うに当って許容される遅延時間を指定した制御プログラムから、この許容される遅延時間を超過しないように、スレーブコントローラが実行すべきスレーブ用プログラムを分離すると共に、スレーブ用プログラムをスレーブコントローラが実行するに当たって必要なスレーブ間通信設定情報を生成するプログラム解析手段と、スレーブコントローラのスレーブ用プログラム実行手段を設けたことで、マスタコントローラの演算能力やネットワークの通信速度を増大させることなく、システムの応答性を向上するモーションコントローラが提供されることとなる。
【符号の説明】
【００７３】
１…マスタコントローラ、１ａ…表示・入力部、１ｂ…通信設定部、１ｃ…マスタ・スレーブ間通信設定情報記憶部、１ｄ…マスタ用通信部、１ｅ…プログラム編集部、１ｆ…制御プログラム記憶部、１ｇ…プログラム解析部、１ｈ…スレーブ間通信設定情報記憶部、１ｉ…スレーブ用通信設定部、１ｊ…スレーブ用プログラム記憶部、１ｋ…スレーブ用プログラム転送部、１ｍ…マスタ用プログラム記憶部、１ｎ…マスタ用プログラム実行部、２…スレーブコントローラ、２ａ…通信設定部、２ｂ…通信設定情報記憶部、２ｃ…スレーブ用通信部、２ｄ…プログラム転送部、２ｅ…スレーブ用プログラム記憶部、２ｆ…スレーブ用コマンド実行部、２ｇ…スレーブ用プログラム実行部、２ｈ…デバイス制御部、２ｉ…制御対象機器、３…ネットワーク
【図１】
2012090291.tif 000003
【図２】
2012090291.tif 000004
【図３】
2012090291.tif 000005
【図４】
2012090291.tif 000006
【図５】
2012090291.tif 000007
【図６】
2012090291.tif 000008
【図７】
2012090291.tif 000009
【図８】
2012090291.tif 000010
【図９】
2012090291.tif 000011
【図１０】
2012090291.tif 000012
【図１１】
2012090291.tif 000013
【図１２】
2012090291.tif 000014
【図１３】
2012090291.tif 000015
【図１４】
2012090291.tif 000016
【図１５】
2012090291.tif 000017
【国際調査報告】
2012090291.tif 000018
2012090291.tif 000019