(57)【特許請求の範囲】
【請求項１】
ネットワークを介して接続された複数のモータ駆動装置と、
前記複数のモータ駆動装置がモータを制御するために実行する制御命令を作成する計算機と、を含み、
前記複数のモータ駆動装置は、
前記計算機から、前記制御命令と、前記制御命令を実行するモータ駆動装置の識別情報と、前記制御命令を実行する時刻情報と、を含む制御命令群を受信し、前記モータ駆動装置の識別情報及び前記時刻情報に従って、前記制御命令を転送する、マスタモータ駆動装置と、
前記マスタモータ駆動装置から受信した制御命令に従ってモータを制御する、非マスタモータ駆動装置と、を含む、モータ制御システム。
【請求項２】
請求項１に記載のモータ制御システムであって、
前記計算機は、前記制御命令群のサイズ及び前記複数のモータ駆動装置の利用可能メモリサイズに基づき、前記複数のモータ駆動装置の中から前記マスタモータ駆動装置を選択する、モータ制御システム。
【請求項３】
請求項１に記載のモータ制御システムであって、
前記計算機は、
利用可能メモリサイズの合計が前記制御命令群を格納可能な、複数のマスタモータ駆動装置を選択し、
前記複数のマスタモータ駆動装置の利用可能メモリサイズに応じて前記制御命令群を分割し、前記複数のマスタモータ駆動装置に分配し、
前記複数のマスタモータ駆動装置のそれぞれは、受信したモータ駆動装置の識別情報及び時刻情報に従って、受信した制御命令を前記複数のモータ駆動装置における非マスタモータ駆動装置に転送する、モータ制御システム。
【請求項４】
請求項３に記載のモータ制御システムであって、
前記計算機は、
前記複数のモータ駆動装置の種別に基づき、前記複数のモータ駆動装置の中から複数のマスタモータ駆動装置候補を選択し、
前記複数のマスタモータ駆動装置候補の中から、前記複数のマスタモータ駆動装置を選択する、モータ制御システム。
【請求項５】
請求項３又は４に記載のモータ制御システムであって、
前記計算機は、
前記複数のモータ駆動装置の動作状態に基づき、前記複数のモータ駆動装置の中から複数のマスタモータ駆動装置候補を選択し、
前記複数のマスタモータ駆動装置候補の中から、前記複数のマスタモータ駆動装置を選択する、モータ制御システム。
【請求項６】
請求項１に記載のモータ制御システムであって、
前記複数のモータ駆動装置における第１モータ駆動装置は、管理下のモータの異常を検出すると、制御下のモータを予め設定された異常動作パターンに従って制御し、さらに、他のモータ駆動装置に異常発生を示す異常メッセージを送信し、
前記他のモータ駆動装置は、前記異常メッセージを受信すると、制御下のモータを予め設定された異常動作パターンに従って制御する、モータ制御システム。
【請求項７】
請求項１に記載のモータ制御システムであって、
前記マスタモータ駆動装置は、制御命令を送信した非マスタモータ駆動装置から、前記送信した制御命令に対する正常な結果を受信しない場合、前記複数のモータ駆動装置における他のモータ駆動装置に、異常発生を示す異常メッセージを送信する、モータ制御システム。
【請求項８】
モータ制御システムによるモータ制御方法であって、
前記モータ制御システムは、
ネットワークを介して接続されたマスタモータ駆動装置と非マスタモータ駆動装置とを含む複数のモータ駆動装置と、
前記複数のモータ駆動装置がモータを制御するために実行する制御命令を作成する計算機と、を含み、
前記モータ制御方法は、
前記マスタモータ駆動装置が、
前記計算機から、前記制御命令と、前記制御命令を実行するモータ駆動装置の識別情報と、前記制御命令を実行する時刻情報と、を含む制御命令群を受信し、
前記モータ駆動装置の識別情報及び前記時刻情報に従って、前記制御命令を転送し、
前記非マスタモータ駆動装置が、前記マスタモータ駆動装置から受信した制御命令に従ってモータを制御する、ことを含むモータ制御方法。
【請求項９】
請求項８に記載のモータ制御方法であって、
前記計算機は、前記制御命令群のサイズ及び前記複数のモータ駆動装置の利用可能メモリサイズに基づき、前記複数のモータ駆動装置の中から前記マスタモータ駆動装置を選択する、ことを含むモータ制御方法。
【請求項１０】
請求項８に記載のモータ制御方法であって、
前記計算機が、
利用可能メモリサイズの合計が前記制御命令群を格納可能な、複数のマスタモータ駆動装置を選択し、
前記複数のマスタモータ駆動装置の利用可能メモリサイズに応じて前記制御命令群を分割し、前記複数のマスタモータ駆動装置に分配し、
前記複数のマスタモータ駆動装置のそれぞれが、受信したモータ駆動装置の識別情報及び時刻情報に従って、受信した制御命令を前記複数のモータ駆動装置における非マスタモータ駆動装置に転送する、ことを含むモータ制御方法。
【請求項１１】
請求項１０に記載のモータ制御方法であって、
前記計算機が、
前記複数のモータ駆動装置の種別に基づき、前記複数のモータ駆動装置の中から複数のマスタモータ駆動装置候補を選択し、
前記複数のマスタモータ駆動装置候補の中から、前記複数のマスタモータ駆動装置を選択する、ことを含むモータ制御方法。
【請求項１２】
請求項１０又は１１に記載のモータ制御方法であって、
前記計算機が、
前記複数のモータ駆動装置の動作状態に基づき、前記複数のモータ駆動装置の中から複数のマスタモータ駆動装置候補を選択し、
前記複数のマスタモータ駆動装置候補の中から、前記複数のマスタモータ駆動装置を選択する、ことを含むモータ制御方法。
【請求項１３】
請求項８に記載のモータ制御方法であって、
前記複数のモータ駆動装置における第１モータ駆動装置が、管理下のモータの異常を検出すると、制御下のモータを予め設定された異常動作パターンに従って制御し、さらに、他のモータ駆動装置に異常発生を示す異常メッセージを送信し、
前記他のモータ駆動装置が、前記異常メッセージを受信すると、制御下のモータを予め設定された異常動作パターンに従って制御する、ことを含むモータ制御方法。
【請求項１４】
請求項８に記載のモータ制御方法であって、
前記モータ制御方法は、
前記マスタモータ駆動装置が、制御命令を送信した非マスタモータ駆動装置から、前記送信した制御命令に対する正常な結果を受信しない場合、前記複数のモータ駆動装置における他のモータ駆動装置に、異常発生を示す異常メッセージを送信する、ことを含むモータ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のモータの制御に関する。
【背景技術】
【０００２】
情報分野におけるイーサネット通信技術（イーサネットは登録商標、以下同じ）の発達により、ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）分野においても、イーサネット通信技術が深く浸透しつつある。従来、モータ駆動装置と上位装置間は、デジタルパルス信号とアナログパルス信号が混在するパラレル配線で接続されていたが、デジタル信号やアナログ信号の伝達をイーサネット通信に置き換えることにより、省配線化や高信頼化を図ることが可能となっている。
【０００３】
一方、モータ駆動装置を制御する上位装置には、汎用ＰＣでなく、ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）を利用することが一般的である。しかし、ＰＬＣ上で動作するアプリケーションを開発する場合には、ラダーロジックを利用する必要があるため、汎用ＰＣ上で動作するアプリケーションの開発と比べ、多大な工数を要する問題点があり、汎用ＰＣの利用が望まれている。
【０００４】
一方、汎用計算機は、モータ駆動装置に対する制御命令送信を一定周期で送信するリアルタイム性を保証することが難しいことから、複数モータの同期制御を行うシステムには利用できないといった問題点がある。
【０００５】
上記の問題点を解決する方法として、特許文献１は、上位装置とモータ駆動装置が時刻同期している環境下において、モータ駆動装置に対する制御命令と共に、その制御命令を実行する時間を送信する方法を提案している。本方法により、リアルタイム性を保証しない汎用計算機を利用した場合でも、複数のモータ駆動装置間で時刻同期していれば、複数モータの同期制御を実現できる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２３７１６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１には以下の課題がある。一般的に、モータ駆動装置がモータを制御する周期は数ミリ秒である。そのため、ベルトコンベアのように複数モータの同期制御を長時間行うようなシステムにおいて、一連のモータ動作に必要な制御命令を汎用計算機により一括で送信する場合、モータ駆動装置に数１００ｋバイト〜数１０Ｍバイトのメモリ容量が必要となる。
【０００８】
このように、特許文献１に示すシステムを構築するには、全てのモータ駆動装置に大容量のメモリを搭載する必要があるため、モータ駆動装置の増大と共にシステム構築コストが増大するといった課題が発生する。特に、モータ駆動装置を数十台搭載する大規模システムで大きな問題となる。
【課題を解決するための手段】
【０００９】
本発明の代表的な一例は、ネットワークを介して接続された複数のモータ駆動装置と、前記複数のモータ駆動装置がモータを制御するために実行する制御命令を作成する計算機と、を含み、前記複数のモータ駆動装置は、前記計算機から、前記制御命令と、前記制御命令を実行するモータ駆動装置の識別情報と、前記制御命令を実行する時刻情報と、を含む制御命令群を受信し、前記モータ駆動装置の識別情報及び前記時刻情報に従って、前記制御命令を転送する、マスタモータ駆動装置と、前記マスタモータ駆動装置から受信した制御命令に従ってモータを制御する、非マスタモータ駆動装置と、を含む、モータ制御システムである。
【発明の効果】
【００１０】
本発明の一態様によれば、システム構築コストを抑えつつ、汎用計算機による複数モータ制御を実現することが可能となり、ＰＬＣなどの専用装置が不要となる。
【図面の簡単な説明】
【００１１】
【図１】実施形態におけるモータ制御システムの一例を示す。
【図２】ＰＣの構成例を示す。
【図３】マスタモータ駆動装置の構成例を示す。
【図４】非マスタモータ駆動装置の構成例を示す。
【図５】システム起動時におけるＰＣ、マスタモータ駆動装置、及び非マスタモータ駆動装置の動作シーケンスを示す。
【図６】二つのモータ駆動装置のための回転数変化を示す。
【図７】マスタモータ駆動装置決定処理の詳細を示す。
【図８】制御命令群通信処理及び動作結果群通信処理における、ＰＣの動作のフローチャートを示す。
【図９Ａ】制御命令群通信処理、モータ制御処理、及び動作結果群通信処理における、マスタモータ駆動装置及び非マスタモータ駆動装置の動作のフローチャートを示す。
【図９Ｂ】制御命令群通信処理、モータ制御処理、及び動作結果群通信処理における、マスタモータ駆動装置及び非マスタモータ駆動装置の動作のフローチャートを示す。
【図９Ｃ】制御命令群通信処理、モータ制御処理、及び動作結果群通信処理における、マスタモータ駆動装置及び非マスタモータ駆動装置の動作のフローチャートを示す。
【図１０】制御命令群のフォーマット例を示す。
【図１１】ＰＣが格納する動作状態テーブルの構成例を示す。
【図１２】動作結果テーブルを基に、ＰＣがマスタモータ駆動装置を選択するフローチャートを示す。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、本発明の実施形態を説明する図において、同一部には同一符号を付し、その繰り返しの説明は、省略することにする。
【００１３】
本開示は、モータ制御システムにおける制御命令の転送を開示する。モータ制御システムは、複数のモータ駆動装置を含む。複数のモータ駆動装置は、少なくとも一つのマスタモータ駆動装置を含む。マスタモータ駆動装置は、上位装置である計算機から、制御命令、制御命令それぞれの宛先モータ駆動装置、及び制御命令それぞれの実行時刻の情報を受信する。マスタモータ駆動装置は、計算機から受信した情報に従って、制御命令を他のモータ駆動装置に転送する。
【００１４】
上記構成により、リアルタイム性能を保証しない汎用計算機で、複数モータの同期制御を実現することが可能となる。また、汎用計算機を利用することにより、複数モータの同期制御を実現するために必要なプログラム開発の工数を削減することが可能となる。
【００１５】
一例において、複数のマスタモータ駆動装置の利用可能メモリサイズが、計算機から制御命令群を格納できるように、複数のモータ駆動装置から選択される。これにより、全てのモータ駆動装置に大容量メモリ容量を搭載する必要がなくなるため、システムリソースを低減できる。
【００１６】
図１は、実施形態におけるモータ制御システムの一例を示す。図１の構成例において、モータ制御システムは、ＰＣ１００、複数のマスタモータ駆動装置３００、複数の非マスタモータ駆動装置４００、及び複数のリモートＩ／Ｏ６００を、ネットワーク２００を介して接続する。
【００１７】
本開示において、マスタモータ駆動装置以外のモータ駆動装置を非マスタモータ駆動装置と呼ぶ。モータ駆動装置３００、４００それぞれには、モータ５００が接続されている。モータ５００は、例えば、ベルトコンベアや巻き取り装置などのモータである。モータ５００及びモータ制御システムにより、モータシステムを構成する。
【００１８】
非マスタモータ駆動装置４００は、電源周波数を変更することで、接続されているモータ５００の回転数を制御する。リモートＩ／Ｏ６００は、センサ情報などを取得する。ＰＣ１００は、システム内に存在する全てのモータ駆動装置に対する制御命令を生成し、複数のマスタモータ駆動装置３００に対して分配する。制御命令は、モータ５００の制御に必要となる回転数に対応する。
【００１９】
マスタモータ駆動装置３００は、接続されたモータ５００の回転数の制御を行う。マスタモータ駆動装置３００は、ＰＣ１００から受信した制御命令を、対象の非マスタモータ駆動装置４００に対して送信する。
【００２０】
リモートＩ／Ｏ６００の数及びモータ駆動装置の数は、システムの設計に依存する。また、後述するように、ＰＣ１００は、モータ駆動装置の中から１又は複数のマスタモータ駆動装置３００を選択する。なお、１又は複数のマスタモータ駆動装置３００が、ＰＣ１００に選択されることなく、固定されていてもよい。
【００２１】
図２はＰＣ１００の構成例を示す。ＰＣ１００は、汎用的な計算機構成を有する。ＰＣ１００は、ハードウェアリソース１１０、オペレーティングシステム（ＯＳ）１２０、及びソフトウェアモジュール１３０を含んで構成される。
【００２２】
ハードウェアリソース１１０は、プロセッサであるＣＰＵ１１１、主メモリ１１２、二次メモリ１１３、及び、他の装置とデータ通信を行う通信インタフェース（ＩＦ）１１４を含んで構成される。主メモリ１１２は、典型的には揮発性の半導体記憶デバイスである。二次メモリ１１３は、典型的には、ハードディスクドライブ（ＨＤＤ）やソリッドステートドライブ（ＳＳＤ）等、非一時的記憶媒体を含む不揮発性記憶デバイスである。
【００２３】
ＯＳ１２０は、ＰＣ１００の動作を統括的に制御する基本ソフトウェアである。ソフトウェアモジュール２２０は、マスタモータ駆動装置３００及び非マスタモータ駆動装置４００を制御するためのソフトウェアである。
【００２４】
ソフトウェアモジュール１３０は、制御命令群生成プログラム１３１、制御命令群送信プログラム１３２、時刻同期プログラム１３３、動作結果群受信プログラム１３４、動作結果群解析プログラム１３５、マスタモータ駆動装置選択プログラム１３６、パラメータ設定プログラム１３７を含んで構成される。
【００２５】
主メモリ１１２は、ＯＳ２１０及びソフトウェアモジュール２２０を含むプログラム及びプログラムが使用するデータを格納する。二次メモリ１１３は、主メモリ１１２にロードされるプログラム及びデータを格納する不揮発性の非一時的記憶媒体を備える。二次メモリ１１３は、ネットワークを介して接続された外部の記憶デバイスでもよい。プログラムは、プログラム配布サーバや、計算機読み取り可能な非一時的記憶媒体によって装置にインストールすることができ、各装置の不揮発性記憶デバイスに格納することができる。
【００２６】
プログラムはプロセッサ（ＣＰＵ）によって実行されることで、定められた処理を行う。従って、本開示においてプログラムを主語とする説明は、プロセッサを主語とした説明でもよい。若しくは、プログラムが実行する処理は、そのプログラムが動作する装置及びシステムが行う処理である。
【００２７】
プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、プロセッサは、制御命令群生成プログラム１３１に従って動作することで制御命令群生成部として機能し、時刻同期プログラム１３３に従って動作することで時刻同期部機能する。他のプログラムについても同様である。以上の点は、マスタモータ駆動装置３００及び非マスタモータ駆動装置４００において同様である。
【００２８】
制御命令群生成プログラム１３１は、ＰＣ１００がマスタモータ駆動装置３００に対して送信する制御命令群を生成する。制御命令群の生成方法の詳細は後に述べる。制御命令群送信プログラム１３２は、制御命令群生成プログラム１３１が生成した制御命令群を、ネットワーク上に存在するマスタモータ駆動装置３００に転送する。制御命令群の転送方法の詳細は後に述べる。
【００２９】
時刻同期プログラム１３３は、ネットワーク上に存在するマスタモータ駆動装置１２０と時刻同期を行う。時刻同期を行う方法は、例えば、ＳＮＴＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）やＩＥＥＥ１５８８に準拠したプロトコルを使用する。動作結果群受信プログラム１３４は、マスタモータ駆動装置３００からモータ５００の動作結果群を受信する。動作結果群の受信方法の詳細は後に述べる。
【００３０】
動作結果群解析プログラム１３５は、動作結果群受信プログラム１３４を利用して受信した動作結果群を解析し、その解析結果を表示する。ユーザは、動作結果群解析プログラム１３５にて表示される動作結果を参照し、モータ５００の動作状態を確認、必要に応じて、制御命令の再生成やマスタモータ駆動装置３００、ならびに非マスタモータ駆動装置４００の動作パラメータの再設定を行うことが可能となる。
【００３１】
マスタモータ駆動装置選択プログラム１３６は、システムに存在するモータ駆動装置の中からマスタモータ駆動装置として動作するモータ駆動装置を選択する。マスタモータ駆動装置３００の選択方法の詳細は後に述べる。
【００３２】
パラメータ設定プログラム１３７は、マスタモータ駆動装置３００及び非マスタモータ駆動装置４００を動作させるために必要なパラメータ、例えば、上限／下限周波数や加速／減速時間、基底周波数などを、マスタモータ駆動装置３００及び非マスタモータ駆動装置４００に転送する。
【００３３】
図３は、マスタモータ駆動装置３００の構成例を示す。マスタモータ駆動装置３００は、ハードウェアリソース３１０、ＯＳ３２０、ソフトウェアモジュール３３０を含んで構成される。ハードウェアリソース３１０は、マイクロコントローラ３１１、通信ＩＦ３１２、時計３１３、外部Ｉ／Ｏ３１４、二次メモリ３１５を含んで構成される。
【００３４】
マイクロコントローラ３１１は、プロセッサであるＣＰＵ及びＲＯＭやＲＡＭ等のメモリを含んで構成されるモジュールである。通信ＩＦ３１２は、ＰＣ１００や、非マスタモータ駆動装置４００、リモートＩ／Ｏ６００とデータ通信を行うためのインタフェースであり、イーサネットやシリアルケーブル、無線などのインタフェースが該当する。
【００３５】
時計３１３は、マスタモータ駆動装置３００の時刻を刻む。外部Ｉ／Ｏ３１４は、接続されているモータ５００の回転数を制御するためのインタフェースであり、アナログＩ／ＯやデジタルＩ／Ｏなどが該当する。
【００３６】
二次メモリ３１５は、例えば、揮発性メモリ、不揮発性メモリ、ＨＤＤ、又はＳＳＤである。二次メモリ３１５は、異常時のモータ５００の動作パターンを示した異常処理パターン３１６、ＰＣ１００より外部通信部２５４を介して転送されるシステムに存在する非マスタモータ駆動装置４００に対する制御命令群３１７、非マスタモータ駆動装置４００の動作結果群３１８を格納する。異常処理パターン３１６は、１又は複数のパターンを含む。
【００３７】
ＯＳ３２０は、マスタモータ駆動装置３００の動作を統括的に制御する基本ソフトウェアである。ＯＳ３２０は、例えば、組み込みシステムに使用されるリアルタイムオペレーティングシステムであり、マイクロコントローラ３１１内のメモリに格納され、マイクロコントローラ３１１のＣＰＵにより実行される。
【００３８】
ソフトウェアモジュール３３０は、ＰＣ１００及び非マスタモータ駆動装置４００とのデータ通信、ならびにモータ５００の制御において使用される。ソフトウェアモジュール３３０は、制御命令群受信プログラム３３１、動作結果群送信プログラム３３２、時刻同期プログラム１３３、制御命令送信プログラム３３３、動作結果受信プログラム３３４、モータ制御プログラム３３５、装置情報送信プログラム３３６、及び異常処理実行プログラム３３７を含む。
【００３９】
ソフトウェアモジュール３３０は、マイクロコントローラ３１１内のメモリに格納され、マイクロコントローラ３１１のＣＰＵにより実行される。ソフトウェアモジュール３３０の少なくとも一部は、二次メモリ３１５からロードされてもよい。制御命令群受信プログラム３３１は、通信ＩＦ３１２を介して転送された制御命令群を受信し、二次メモリ３１５に格納する。
【００４０】
動作結果群送信プログラム３３２は、二次メモリ３１５に格納されている、システム内の非マスタモータ駆動装置４００やモータ５００の動作結果を、通信ＩＦ３１２を通じてＰＣ１００に転送する。非マスタモータ駆動装置４００の動作結果は、後に述べる動作結果受信プログラム３３４を介して受信される。モータ５００の動作結果は、外部Ｉ／Ｏ３１４を介して取得される。
【００４１】
制御命令送信プログラム３３３は、システム内の非マスタモータ駆動装置４００に対して通信ＩＦ３１２を通じて制御命令を送信する。制御命令の送信方法の詳細は後に述べる。動作結果受信プログラム３３４は、システム内の非マスタモータ駆動装置４００から制御下のモータ５００の動作結果を受信し、二次メモリ３１５に格納する。
【００４２】
モータ制御プログラム３３５は、二次メモリ３１５に格納されている制御命令群３１７を基に、外部Ｉ／Ｏ３１４を通じて、モータ５００の制御を行う。モータ５００の制御方法の詳細は後に述べる。
【００４３】
装置情報送信プログラム３３６は、ＰＣ１００から受信した装置情報要求に対して、当該マスタモータ駆動装置３００の種別や利用可能なメモリ容量などの装置情報を取得し、装置情報応答に含めてＰＣ１００に送信する。装置情報取得処理の詳細は後に述べる。
【００４４】
異常処理実行プログラム３３７は、接続されているモータ５００、システム内の非マスタモータ駆動装置４００の動作結果、リモートＩ／Ｏ６００の状態から異常を検出し、異常に応じたメッセージを他のモータ駆動装置に送信する。
【００４５】
異常処理実行プログラム３３７は、検出した異常又は外部から受信した異常メッセージに対応する動作パターンを、二次メモリ３１５に格納されている異常処理パターン３１６から選択し、選択した動作パターンに応じてモータ５００の制御を行う。異常処理パターン３１６が複数の動作パターンを含む場合、異常処理実行プログラム３３７は、各動作パターンと異常内容との対応関係を予め保持している。
【００４６】
図４は、非マスタモータ駆動装置４００の構成例を示す。非マスタモータ駆動装置４００は、ハードウェアリソース３１０、ＯＳ３２０、ソフトウェアモジュール３３０を含んで構成される。非マスタモータ駆動装置４００のハードウェアリソース３１０は、マスタモータ駆動装置３００と同様である。なお、以下に説明する動作において、非マスタモータ駆動装置４００は時計３１３を必要としない。
【００４７】
二次メモリ３１５は、マスタモータ駆動装置３００と同様に異常時の動作パターンを示した異常処理パターン３１６を格納し、マスタモータ駆動装置３００と異なり、他の非マスタモータ駆動装置４００に対する制御命令群３１７及び他の非マスタモータ駆動装置４００の動作結果群３１８を格納していない。
【００４８】
ソフトウェアモジュール３３０は、マスタモータ駆動装置３００とのデータ通信及びモータ５００の制御に使用される。ソフトウェアモジュール３３０は、装置情報送信プログラム３３６、異常処理実行プログラム３３７、制御命令受信プログラム３４０、動作結果送信プログラム３４１、及びモータ制御プログラム３４２を含む。
【００４９】
装置情報送信プログラム３３６は、ＰＣ１００から受信した装置情報要求に対して、当該非マスタモータ駆動装置４００の種別や利用可能なメモリ容量などの装置情報を取得し、装置情報応答に含めてＰＣ１００に送信する。
【００５０】
異常処理実行プログラム３３７は、接続されているモータ５００の動作結果から異常を検出し他のモータ駆動装置に異常メッセージを送信する。異常処理実行プログラム３３７は、二次メモリ３１５に格納されている異常処理パターン３１６から検出した異常に対応する、又は、外部から受信した異常メッセージに対応する動作パターンを選択し、当該動作パターンに従ってモータ５００の制御を行う。異常処理パターン３１６が複数の動作パターンを含む場合、異常処理実行プログラム３３７は、各動作パターンと異常内容との対応関係を予め保持している。
【００５１】
制御命令受信プログラム３４０は、マスタモータ駆動装置３００が送信する制御命令を受信する。制御命令の受信方法の詳細は後に述べる。動作結果送信プログラム３４１は、マスタモータ駆動装置３００に対して、接続されているモータ５００の動作結果を送信する。モータ制御プログラム３４２は、制御命令受信プログラム３４０が受信した制御命令を基に、外部Ｉ／Ｏ３１４を通じて、接続されているモータ５００を制御する。モータ５００の制御方法の詳細は後に述べる。
【００５２】
以下に説明する例において、マスタモータ駆動装置３００は、システム内のモータ駆動装置から選択される。したがって、マスタモータ駆動装置３００として選択され得るモータ駆動装置は、上記マスタモータ駆動装置３００及び非マスタモータ駆動装置４００の双方のプログラムを保持し、マスタモータ駆動装置３００又は非マスタモータ駆動装置４００として、必要なプログラムを実行する。非マスタモータ駆動装置４００としてのみ動作するモータ駆動装置は、マスタモータ駆動装置３００の機能は不要であり、非マスタモータ駆動装置４００のプログラムのみ格納する。
【００５３】
システム内のモータ駆動装置は、全て共通のハードウェア構成を有してもよく、異なるハードウェア構成を有してもよい。例えば、マイクロコントローラの演算能力やメモリ容量、記憶装置の容量が異なるモータ駆動装置がシステム内に含まれていてもよい。
【００５４】
図５は、システム起動時におけるＰＣ１００、マスタモータ駆動装置３００、及び非マスタモータ駆動装置４００の動作シーケンスを示す。起動後、ＰＣ１００は、システム内のモータ５００の回転数の動作パターンを作成する制御命令群生成処理Ｓ５００を、制御命令群生成プログラム１３１を利用して実行する。
【００５５】
ユーザは、例えば、表計算プログラムを利用して、図６に示すような各モータ駆動装置に関する時間に対する回転数の変化を示すデータを作成する。図６は、二つのモータ駆動装置のための回転数変化を示す。制御命令群生成プログラム１３１は、モータ駆動装置それぞれに対してユーザにより生成された回転数の変化に対応する制御命令を生成する。例えば、図６の回転数変化それぞれは、一つの制御命令に対応する。
【００５６】
ＰＬＣを利用して図６に示す動作パターンを作成する場合、ラダーロジックを利用する必要がある。ラダーロジックはプログラミング言語の一種であるため、その開発は、表計算プログラムを利用して開発する場合と比較して、多大な工数を要する。更に、動作パターンを変更する場合、表計算プログラムの場合、該当する値のみ変更すればよいが、ラダーロジックの場合、再度、プログラミングを行う必要があるため、多大な工数を要する。
【００５７】
これに対して、本開示の構成のように、汎用計算機構成を有するＰＣ１００によって、マスタモータ駆動装置３００に転送する制御命令の生成及び変更を容易に行うことができる。
【００５８】
制御命令群生成処理Ｓ５００を実行後、ＰＣ１００は、マスタモータ駆動装置決定処理Ｓ６００を実行する。具体的には、ＰＣ１００は、マスタモータ駆動装置選択プログラム１３６を利用して、システム内のモータ駆動装置からマスタモータ駆動装置３００を選択する。
【００５９】
図７は、マスタモータ駆動装置決定処理Ｓ６００の詳細を示す。マスタモータ駆動装置選択プログラム１３６は、システム内の全モータ駆動装置から、モータ駆動装置の種別及び利用可能なメモリサイズを含む装置情報を取得する（Ｓ６０２〜Ｓ６０４）。
【００６０】
具体的には、マスタモータ駆動装置選択プログラム１３６は、装置情報要求を生成し、モータ駆動装置に対して送信する（Ｓ６０２）。マスタモータ駆動装置選択プログラム１３６は、装置情報要求を送信したモータ駆動装置から、装置情報要求に対する応答を受信する（Ｓ６０３）。マスタモータ駆動装置選択プログラム１３６は、システム内の全モータ駆動装置について、ステップＳ６０２、６０３を繰り返す（Ｓ６０４：ＮＯ）。
【００６１】
利用可能なメモリサイズは、後述する制御命令群を格納するためのメモリサイズに対応し、例えば、二次メモリ３１５の空き容量、二次メモリ３１５とマイクロコントローラ内のメモリ空き容量の合計、又はこれらから規定の計算方法により算出される容量を示す。
【００６２】
システム内の全モータ駆動装置から装置情報要求に対する応答を受信すると（Ｓ６０４：ＹＥＳ）、マスタモータ駆動装置選択プログラム１３６は、受信した装置情報を解析して（Ｓ６０６）、マスタモータ駆動装置候補となるモータ駆動装置がシステム内に存在しているか否かを判定する（Ｓ６１０）。
【００６３】
上述のように、装置情報は装置の種別を含む。マスタモータ駆動装置選択プログラム１３６は、装置種別からマスタモータ駆動装置に適した駆動装置が存在しているか判定する。装置種別は、装置のハードウェア構成に対応する。マスタモータ駆動装置選択プログラム１３６は、マスタモータ駆動装置として選択可能な装置種別を予め保持しており、システムから受信したいずれかの装置種別が予め保持する装置種別と一致する場合、マスタモータ駆動装置候補がシステム内に存在していると判定する。
【００６４】
また、マスタモータ駆動装置選択プログラム１３６は、装置種別の他、動作周波数などのマイクロコントローラ３１１の性能に関する情報、ソフトウェアモジュール３３０のバージョン情報等を使用して、マスタモータ駆動装置を選択してもよい。
【００６５】
このように、装置種別や装置特性等の構成情報に基づきマスタモータ駆動装置を選択することで、マスタモータ駆動装置として適切に動作できるモータ駆動装置を選択できる。また、マスタモータ駆動装置として選択可能な装置の識別子を予め保持する構成と比較して、選択のために必要な情報を低減できる。マスタモータ駆動装置選択プログラム１３６は、マスタモータ駆動装置として選択可能な装置の識別子を予め保持してもよい。
【００６６】
判定結果が、マスタモータ駆動装置候補がシステム内に存在していないことを示す場合（Ｓ６１０：ＮＯ）、マスタモータ駆動装置選択プログラム１３６は、本システムを動作させることが難しいと判定し、その旨を示すエラーメッセージを、ＰＣ１００の表示装置で表示する（Ｓ６２２）。
【００６７】
判定結果が、マスタモータ駆動装置候補がシステム内に存在することを示す場合（Ｓ６１０：ＹＥＳ）、マスタモータ駆動装置選択プログラム１３６は、全てのマスタモータ駆動装置候補を選択する（Ｓ６１２）。さらに、マスタモータ駆動装置選択プログラム１３６は、選択したマスタモータ駆動装置候補が、御命令群生成処理Ｓ５００にて生成した制御命令群を格納できるか否かを判定する。
【００６８】
具体的には、マスタモータ駆動装置選択プログラム１３６は、変数ｉに１を代入し、合計メモリサイズを０と設定する（Ｓ６１４）。次に、マスタモータ駆動装置選択プログラム１３６は、マスタモータ駆動装置候補として選択したモータ駆動装置の利用可能メモリサイズの中からｉ番目に大きいメモリサイズを選択し、合計メモリサイズに加える（Ｓ６１５）。
【００６９】
マスタモータ駆動装置選択プログラム１３６は、合計メモリサイズとシステム内のモータ駆動装置に対する制御命令群のサイズを比較する（Ｓ６１６）。比較結果が、制御命令群のサイズが大きいことを示す場合（Ｓ６１６：ＮＯ）、マスタモータ駆動装置選択プログラム１３６は、未選択のマスタモータ駆動装置が残っているか判定する（Ｓ６１８）。
【００７０】
未選択のマスタモータ駆動装置が残っていない場合（Ｓ６１８：ＮＯ）、マスタモータ駆動装置選択プログラム１３６は、本システムを動作させることが難しいと判定し、その旨を示すエラーメッセージをＰＣ１００の表示装置で表示する（Ｓ６２２）。
【００７１】
未選択のマスタモータ駆動装置候補が残っている場合（Ｓ６１８：ＹＥＳ）、マスタモータ駆動装置選択プログラム１３６は、変数ｉをインクリメントし（Ｓ６２０）、ステップＳ６１４に戻る。
【００７２】
ステップＳ６１６において、制御命令群サイズと合計メモリサイズの比較結果が、制御命令群のサイズが合計メモリサイズ以下であることを示す場合（Ｓ６１６：ＹＥＳ）、マスタモータ駆動装置選択プログラム１３６は、本システムを動作させることが可能と判定し、合計メモリサイズの算出のために選択したマスタモータ駆動装置候補を、マスタモータ駆動装置と決定する。
【００７３】
マスタモータ駆動装置選択プログラム１３６は、制御命令群生成処理Ｓ５００にて生成した制御命令群をマスタモータ駆動装置として動作する装置の利用可能メモリサイズに合わせて分割する（Ｓ６３０）。なお、分割された各制御命令群は、送信先のマスタモータ駆動装置に対する制御命令を含む。
【００７４】
上述のように、マスタモータ駆動装置選択プログラム１３６は、利用可能メモリサイズが大きい順にマスタモータ駆動装置候補を選択し、合計メモリサイズを計算する。マスタモータ駆動装置選択プログラム１３６は、合計メモリサイズが制御命令群サイズ以上となる１以上のマスタモータ駆動装置候補を、マスタモータ駆動装置と決定する。
【００７５】
マスタモータ駆動装置選択プログラム１３６は、選択したマスタモータ駆動装置それぞれの利用可能メモリサイズに応じて、制御命令群を分割する。全てのマスタモータ駆動装置候補の利用可能メモリサイズの合計が、制御命令群サイズ未満である場合、エラーを表示する。
【００７６】
図５に戻って、マスタモータ駆動装置決定処理Ｓ６００にてマスタモータ駆動装置３００を決定した後、ＰＣ１００及びマスタモータ駆動装置３００は、時刻同期処理Ｓ７００を実行する。時刻同期処理Ｓ７００は、マスタモータ駆動装置３００に搭載している時計３１３の時刻と、ＰＣ１００が持つ時計の時刻とを同期する。具体的には、ＰＣ１００の時刻同期プログラム１３３は、ＰＣ１００の計測時刻をマスタモータ駆動装置３００に送信し、マスタモータ駆動装置３００のマイクロコントローラ３１１は、受信した時刻に合わせて時計３１３を調整する。
【００７７】
時刻同期処理Ｓ７００の実行後、ＰＣ１００及びマスタモータ駆動装置３００は、制御命令群通信処理Ｓ８００を実行する。ＰＣ１００は、選択したマスタモータ駆動装置３００それぞれに、対応する制御命令群を送信し、各マスタモータ駆動装置３００は、自装置に送信された制御命令群を受信する。
【００７８】
マスタモータ駆動装置３００及び非マスタモータ駆動装置４００は、モータ制御処理Ｓ９００を実行する。マスタモータ駆動装置３００は、ＰＣ１００から受信した自装置への制御命令に従って、自装置に接続されたモータ５００を制御すると共に、対象の非マスタモータ駆動装置４００に、ＰＣ１００から受信した制御命令を転送する。非マスタモータ駆動装置４００は、受信した制御命令に従って、自装置に接続されたモータ５００を制御する。
【００７９】
その後、マスタモータ駆動装置３００及びＰＣ１００は、動作結果群通信処理Ｓ１０００を実行する。マスタモータ駆動装置３００は、自装置に接続されたモータ５００の動作結果及び制御命令を転送した非マスタモータ駆動装置４００から受信した動作結果を、ＰＣ１００に送信する。ＰＣ１００は、マスタモータ駆動装置３００それぞれから、動作結果を受信する。動作結果は、例えば、実行した制御命令及び正常に動作したか否かを示す。
【００８０】
図８は、制御命令群通信処理Ｓ８００及び動作結果群通信処理Ｓ１０００における、ＰＣ１００の動作のフローチャートを示す。ＰＣ１００は、制御命令群送信プログラム１３２及び動作結果群受信プログラム１３４、動作結果群解析プログラム１３５に従って動作する。
【００８１】
制御命令群送信プログラム１３２は、ステップ６３０にて分割された制御命令群を、該当するマスタモータ駆動装置３００それぞれに対して送信する（Ｓ８１０）。図１０は、制御命令群１０００のフォーマット例を示す。制御命令群１０００のフォーマットは、三つのフィールドを有する。
【００８２】
制御命令フィールド１０１０は、制御命令を示す。時刻フィールド１０２０は、その制御命令を実行する時刻情報を示す。モータ駆動装置番号フィールド１０３０は、制御命令送信先のモータ駆動装置を識別する番号を示し、自装置又は非マスタモータ駆動装置の番号を示す。マスタモータ駆動装置３００は、制御命令フィールド１０１０が示す制御命令を、時刻フィールド１０２０が示す時刻に、モータ駆動装置番号フィールド１０３０が示すモータ駆動装置に送信する。
【００８３】
時刻フィールド１０２０は、絶対時刻を示してもよく、相対時刻を示してもよい。時刻フィールド１０２０が相対時刻を示す場合、制御命令群は、基準時刻の情報を含む。例えば、ＰＣ１００がマスタモータ駆動装置３００に対して送信する制御命令群の中で最初に実行される制御命令に対して開始時刻（基準時刻）が対応付けられており、他の制御命令の時刻フィールド１０２０は、開始時刻からの経過時間を示す。
【００８４】
制御命令群は、制御命令の実行時刻の情報として、開始時刻（基準時刻）及び周期を示してもよい。開始時刻及び周期は、それぞれ、制御命令群に送信先のモータ駆動装置に共通である、又は、モータ駆動装置毎に示される。マスタモータ駆動装置３００は、各非マスタモータ駆動装置４００の制御命令群において、最初の制御命令を対応開示時刻に送信し、対応周期でその後の制御命令を送信する。マスタモータ駆動装置３００は、自装置の制御命令群において、最初の制御命令を対応開示時刻に実行し、対応周期でその後の制御命令を実行する。
【００８５】
制御命令群が上述のような時刻情報を含むことで、マスタモータ駆動装置３００は、他設定を必要とすることなく、正確なタイミングで制御命令を非マスタモータ駆動装置４００に送信することができる。
【００８６】
例えば、複数モータの同期制御では、制御命令実行する周期はモータ５００毎に異なる場合がある。数１０台〜数１００台のモータの同期制御を行う場合、周期についての事前設定に多大な時間を要する。上述のように、制御命令群に各制御命令を実行する時刻を示す情報を含めることで、上記のようなモータ５００毎の周期設定が不要となる。
【００８７】
また、複数のマスタモータ駆動装置３００それぞれに送信する制御命令群は、送信先のマスタモータ駆動装置３００の動作タイミングを示す時刻情報を含むため、マスタモータ駆動装置として動作する権利をモータ駆動装置間で引き継ぐ仕組みが不要となる。
【００８８】
図８に戻って、制御命令群送信プログラム１３２は、マスタモータ駆動装置３００に対して制御命令群を送信した後、その送信に対する応答メッセージを受信する（Ｓ８１２）。制御命令群を送信した全てのマスタモータ駆動装置３００から応答メッセージを受信した場合（Ｓ８１２：ＹＥＳ）、制御命令群送信プログラム１３２は、マスタモータ駆動装置３００が正常に制御命令群を受信したと判定する。動作結果群受信プログラム１３４は、動作結果群の受信を持つ（Ｓ１０１０）。
【００８９】
制御命令群を送信した全てのマスタモータ駆動装置３００から応答メッセージを受信できない場合（Ｓ８１２：ＮＯ）、制御命令群送信プログラム１３２は、マスタモータ駆動装置３００の何れかに異常が発生したと判定し、マスタモータ駆動装置３００及び非マスタモータ駆動装置４００に対して異常メッセージを送信し（Ｓ８１４）、その旨を示すエラーメッセージをＰＣ１００の表示装置で表示する（Ｓ８１６）。
【００９０】
動作結果群受信プログラム１３４が、全てのマスタモータ駆動装置３００から動作結果群を受信した場合（Ｓ１０１０：ＹＥＳ）、その受信した動作結果群を解析した後、その解析結果をＰＣ１００上に表示する（Ｓ１０１２、Ｓ１０１４）。
【００９１】
一方、制御命令群を送信したマスタモータ駆動装置３００の１つでも動作結果群の受信がなく（Ｓ１０１０：ＮＯ）、生成した制御命令群に付加した時刻を経過した場合（Ｓ１０１６：ＹＥＳ）、マスタモータ駆動装置３００に異常が発生したと判定し、マスタモータ駆動装置３００、ならびに非マスタモータ駆動装置４００に対して異常メッセージを送信し（Ｓ１０１８）、その旨をエラーメッセージとしてＰＣ１００上に表示する（Ｓ１０２０）。
【００９２】
上述のように、モータ制御システムは、マスタモータ駆動装置に対し時刻情情報と共に制御命令を送信し、マスタモータ駆動装置が、時刻情報に従って、非マスタモータ駆動装置に制御命令を転送する。これにより、汎用計算機構成を有するＰＣで制御命令を生成し、モータ駆動装置それぞれに、リアルタイムで制御命令を送信することができる。
【００９３】
さらに、モータ制御システムは、システム内のモータ駆動装置の中から１又は複数のマスタモータ駆動装置を選択する。これにより、マスタモータ駆動装置として適切なモータ駆動装置を選択することができる。特に、メモリサイズに基づき１以上のマスタモータ駆動装置を選択することで、全ての制御命令群を１以上のマスタモータ駆動装置に格納できる。
【００９４】
また、複数のマスタモータ駆動装置を選択できることにより、大容量の制御命令を必要とする大規模システムにおいても、制御命令を分割してマスタモータ駆動装置に転送することが可能となり、コスト増大に繋がるメモリサイズの増大を抑えることができる。なお、設計によっては、一つのみのマスタモータ駆動装置が選択可能でもよい。
【００９５】
図９Ａ〜９Ｃは制御命令群通信処理８００、モータ制御処理９００、及び動作結果群通信処理Ｓ１０００における、マスタモータ駆動装置３００及び非マスタモータ駆動装置４００の動作のフローチャートを示す。マスタモータ駆動装置４００は、モータ制御処理９００においてのみ動作する。
【００９６】
図９Ａにおいて、システム内のモータ駆動装置は、制御命令群受信プログラム３３１によって、ＰＣ１００が送信する制御命令群を受信すると（Ｓ８５０：ＹＥＳ）、自装置がマスタモータ駆動装置３００として動作すると認識する。制御命令群受信プログラム３３１は、受信した制御命令群を解析した後、二次メモリ３１５に制御命令群３１７として格納する（Ｓ８５２）。
【００９７】
マスタモータ駆動装置３００の制御命令送信プログラム３３３は、時計３１３と制御命令群３１７の時刻フィールド１０２０の値を比較する。現在時刻が、制御命令を非マスタモータ駆動装置４００又は制御下のモータ５００に送信する時刻である場合（Ｓ９１０：ＹＥＳ）、制御命令送信プログラム３３３は、各制御命令を、非マスタモータ駆動装置４００又は自装置のモータ制御プログラム３３５に送信する。本例において、時計３１３が示す時刻が時刻フィールド１０２０の値と一致する場合、現在時刻が、制御命令を非マスタモータ駆動装置４００又は制御下のモータ５００に送信する時刻である。
【００９８】
マスタモータ駆動装置３００のモータ制御プログラム３３５は、自装置に接続されているモータ５００に対して制御命令を送信する。モータ制御プログラム３３５は、モータ５００のインタフェースに応じて制御命令を制御指令に変更した後、モータ５００に対して制御指令を送信する（Ｓ９１２）。
【００９９】
動作結果受信プログラム３３４は、制御命令を送信した各非マスタモータ駆動装置４００及び自装置のモータ制御プログラム３３５から動作結果を受信できた場合（Ｓ９１４のＹＥＳ）、各非マスタモータ駆動装置４００及び自装置が正常にモータ５００に対して制御指令を送信できたと判定し、その動作結果を二次メモリ３１５に動作結果３１８として保存する（Ｓ９１６）。動作結果３１８は、例えば、制御命令、送信先モータ駆動装置、及び送信時刻の情報を格納する。
【０１００】
一方、自装置モータ制御プログラム３３５又は制御命令を送信した何れかの非マスタモータ駆動装置４００から正常な動作結果を受信できない場合（Ｓ９１４：ＮＯ）、異常処理実行プログラム３３９は、システム内で異常が発生したと判定し、結合子Ｂを介して、図９Ｂのフローチャートに進む。
【０１０１】
異常処理実行プログラム３３９は、他のモータ駆動装置に対して検出した異常に対応する異常メッセージを送信するとともに（Ｓ９５０）、自装置に接続されているモータ５００に対して、異常処理パターン３１６から検出した以上に応じて選択した動作パターン合った制御指令を送信する（Ｓ９５２）。これにより、非マスタモータ駆動装置４００における異常発生時に、モータシステムを適切に制御することができる。異常処理パターン３１６は、図１０に示すような、回転数の時間変化を示し、異常処理実行プログラム３３９は、異常処理パターン３１６に合った制御指令を予め保持する又は異常時に生成する。
【０１０２】
図９Ａに戻って、非マスタモータ駆動装置４００の制御命令受信プログラム３４０は、マスタモータ駆動装置３００が送信した制御命令を受信すると（Ｓ９２０：ＹＥＳ）、その受信した制御命令を、モータ制御プログラム３３５に送信する。モータ制御プログラム３３５は、接続されているモータ５００のインタフェースに応じて制御命令を変更した後、モータ５００に対して制御命令を送信する（Ｓ９２２）。
【０１０３】
モータ制御プログラム３３５は、モータ５００から動作結果を受信し（Ｓ９２４）、その結果が正常の場合（Ｓ９２６：ＹＥＳ）、動作結果を、動作結果送信プログラム３４１に送信する。動作結果送信プログラム３４１は、マスタモータ駆動装置３００に動作結果を送信する（Ｓ９２８）。
【０１０４】
一方、モータ５００から受信した動作結果が正常ではない場合（Ｓ９２６：ＮＯ）、非マスタモータ駆動装置４００の異常処理実行プログラム３３９は、モータ５００の動作に異常が発生したと判定し、結合子Ｂを介して、図９Ｂのフローチャートに進む。異常処理実行プログラム３３９は、他のモータ駆動装置に対して異常メッセージを送信するとともに（Ｓ９５０）、自装置に接続されているモータ５００に対して、異常処理パターン３１６から選択した動作パターンに合った制御指令を送信する（Ｓ９５２）。これにより、異常発生時にモータシステムを適切に制御できる。
【０１０５】
図９Ａに戻って、マスタモータ駆動装置３００及び非マスタモータ駆動装置４００の異常処理実行プログラム３３９は、異常メッセージを受信すると（Ｓ９３０：ＹＥＳ）、受信した異常メッセージを解析した後（Ｓ９３２）、自装置に接続されているモータ５００に対して、異常処理パターン３１６からメッセージに応じて選択した動作パターンに合った制御命令を送信する（Ｓ９３４）。
【０１０６】
図９Ｃに示すように、マスタモータ駆動装置３００は、定期的にリモートＩ／Ｏ６００が送信するメッセージを受信し（Ｓ９４０：ＹＥＳ）、異常処理実行プログラム３３９は、メッセージを解析する（Ｓ９４２）。異常メッセージの送信が必要と判定した場合（Ｓ９４４：ＹＥＳ）、異常処理実行プログラム３３９は、他のモータ駆動装置に対して異常メッセージを送信するとともに（Ｓ９５０）、自装置に接続されているモータ５００に対して、異常処理パターン３１６からメッセージに応じて選択した動作パターンに合った制御指令を送信する（Ｓ９５２）。
【０１０７】
リモートＩ／Ｏ６００が送信したメッセージを受信することにより、リモートＩ／Ｏ６００の状態に応じた異常処理を実行できる。例えば、外部設置した温度センサのセンサ情報を取得し、そのセンサ情報の値が閾値以上になった場合に異常処理を行うことができる。
【０１０８】
異常メッセージの送信及び異常処理パターンに合ったモータ５００への制御指令を送信する構成により、システム内に存在するモータ駆動装置の一つでも異常が発生した場合に適切な異常処理が可能となり、システムの暴走を防ぐことができる。モータ５００の異常処理として、モータ急停止、モータをゆっくり減速し後停止、モータをゆっくり減速させた後一定度速度の動作を維持など、色々な方法が考えられる。
【０１０９】
例えば、人身事故を防止するために、モータ制御システムは、モータを急停止させる。一方、ベルトコンベアのモータシステムにおいて、モータを急停止させると、ベルトコンベア上に乗っている作業物が落下する危険がある。この場合、モータ制御システムは、モータをゆっくり減速させて停止させる。予めシステムの状態に対応する異常処理パターン３１６を二次メモリ３１５に保存しておくことにより、システムに適した異常処理が可能となる。
【０１１０】
図９Ｃに示すように、非マスタモータ駆動装置４００に対する制御命令の送信を完了すると（Ｓ１０２０：ＹＥＳ）、マスタモータ駆動装置３００の動作結果群送信プログラム３３２は、二次メモリ３１５に格納されている動作結果３１８を、ＰＣ１００に送信する（Ｓ１０２２）。
【０１１１】
なお、時刻フィールド１０２０が絶対時刻を示す場合、各マスタモータ駆動装置３００が、制御命令群の処理の終了後に、再び同じ処理を実行するためには、ＰＣ１００、マスタモータ駆動装置３００、及び非マスタモータ駆動装置４００は、時刻同期処理Ｓ７００、制御命令群通信処理Ｓ８００、モータ制御処理Ｓ９００、及び動作結果群通信処理Ｓ１０００を実行する必要がある。ＰＣ１００の故障やＰＣ１００とマスタモータ駆動装置３００との間のネットワーク異常が発生すると、システムが動作しない可能性がある。
【０１１２】
一方、時刻フィールド１０１２０が相対時刻を示す場合、マスタモータ駆動装置３００間で制御命令群の中で最も時間が古い時刻以前の時刻に時刻同期を行うことにより、ＰＣ１００との時刻同期処理Ｓ７００、制御命令群通信処理Ｓ８００を行わず、モータ制御処理（Ｓ９００）を行うことができる。そのため、ＰＣ１００の故障やＰＣ１００とマスタモータ駆動装置３００との間のネットワーク異常が発生しても、システムは動作可能である。
【０１１３】
なお、上記動作を行うためには、時刻同期処理（Ｓ７００）において、グランドマスタとなるマスタモータ駆動装置３００を選択する必要がある。例えば、ＰＣ１００は、マスタモータ駆動装置決定処理Ｓ６００にて決定したマスタモータ駆動装置３００の中で、利用可能なメモリ容量の一番大きい装置を、グランドマスタに選択し、その旨を選択したモータ駆動装置に通知する。
【０１１４】
グランドマスタに選択されたマスタモータ駆動装置３００は、各マスタモータ駆動装置３００の処理が終了した後、時刻同期プログラム１３３を利用して、他のマスタモータ駆動装置３００との時刻同期を行う。
【０１１５】
上記例において、マスタモータ駆動装置３００は、モータ駆動装置の種別や利用可能なメモリサイズに基づきで選択される。この方法により、制御指令群のサイズに応じたマスタモータ駆動装置３００を選択することができる。
【０１１６】
しかし、この方法は静的な条件に基づいてマスタモータ駆動装置３００を選択にするため、動的な条件、例えば、モータ駆動装置の通算動作時間を無視する。例えば、制御命令群のサイズが１ＭＢｙｔｅであり、利用可能なメモリサイズが２Ｍｂｙｔｅかつ通算動作時間が１００００時間のモータ駆動装置と、利用可能なメモリサイズが１Ｍｂｙｔｅかつ通信動作時間が１０時間のモータ駆動装置が存在する場合、上記方法は、前者のモータ駆動装置をマスタモータ駆動装置３００として選択する。
【０１１７】
一方、通算動作時間を考慮すると、前者のモータ駆動装置は故障の可能性が高い。マスタモータ駆動装置３００が故障すると、本システムは動作しないことから、故障の可能性が低いモータ駆動装置をマスタモータ駆動装置３００として選択する方が好ましい。
【０１１８】
そこで、マスタモータ駆動装置３００が非マスタモータ駆動装置４００から動作結果を取得する際、及びＰＣ１００がマスタモータ駆動装置３００から動作結果群を取得する際に、モータ５００の動作結果に合わせて、モータ駆動装置の通算動作時間や平均ＣＰＵ使用率といった動作状態情報を取得する。ＰＣ１００は、その情報を図１１に示す動作状態テーブル１１００に格納する。動作状態テーブル１１００各々のモータ駆動装置の動作状況に合わせたマスタモータ駆動装置を選択できる。ＰＣ１００は、モータ駆動装置の動作状態情報を、装置情報の取得ステップ（Ｓ６０２）において取得してもよい。
【０１１９】
図１１は、ＰＣ１００が格納する動作状態テーブル１１００の構成例を示す。図１２は、図１１に示す動作結果テーブルを基に、ＰＣ１００がマスタモータ駆動装置３００を選択するフローチャートを示す。
【０１２０】
動作状態テーブル１１００は、モータ駆動装置名フィールド１１１０、通算動作時間フィールド１１２０、動作した制御命令群フィールド１１３０、役割フィールド１１４０、平均ＣＰＵ使用率フィールド１１５０を含んで構成される。ＰＣ１００は、本テーブル１１００により、各々のモータ駆動装置の動作時間、ならびに制御命令群毎の役割と、その際の平均ＣＰＵ使用率１１５０を知ることができる。なお、これらは一例であって、他の情報が使用されてもよい。
【０１２１】
ステップ６０２により全モータ駆動装置よりモータ駆動装置の種別や利用可能なメモリサイズを取得した後、マスタモータ駆動装置候補が存在する場合（Ｓ６１０：ＹＥＳ）、マスタモータ駆動装置選択プログラム１３６は、動作状態テーブル１１００を参照し（Ｓ１２１０）、マスタモータ駆動装置条件を満たすかマスタモータ駆動装置候補が存在するか否かを判定する（Ｓ１２２０）。
【０１２２】
マスタモータ駆動装置条件は、例えば、通算動作時間が１００００時間以内や平均ＣＰＵ使用率が８０％以内といった、モータ駆動装置の故障発生につながる動作状態の条件である。マスタモータ駆動装置条件を満たすマスタモータ駆動装置候補が存在する場合（Ｓ１２２０：ＹＥＳ）、ＰＣ１００は、ステップ６１２以降のステップを実行する。
【０１２３】
一方、マスタモータ駆動装置条件を満たすマスタモータ駆動装置候補が存在しない場合（Ｓ１２２０：ＮＯ）、ＰＣ１００は、本システムを動作させることが難しいと判定し、その旨を示すエラーメッセージを表示装置において表示する（Ｓ６２２）。
【０１２４】
上記のようにマスタモータ駆動装置条件を満たす装置をマスタモータ駆動装置３００として選択することにより、マスタモータ駆動装置の動作中の故障を防ぐことができる。さらに平均ＣＰＵ使用率をマスタモータ駆動装置条件に含めることにより、マスタモータ駆動装置の不安定動作を抑制できる。例えば、モータ駆動装置に搭載したソフトウェアの想定外の動作を行い、当初の予定以上にＣＰＵを利用することにより、非マスタモータ駆動装置４００に制御命令送信タイミングが揺らぐ不具合を防ぐことができる。
【０１２５】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１２６】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ等の記録装置、または、ＩＣカード、ＳＤカード等の記録媒体に置くことができる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１２７】
１００…ＰＣ、１１０…ハードウェアリソース、１１１…ＣＰＵ、１１２…主メモリ、１１３…二次メモリ、１１４…通信ＩＦ、１２０…ＯＳ、１３０…ソフトウェアモジュール、１３１…制御命令群生成プログラム、１３２…制御命令群送信プログラム、１３３…時刻同期プログラム、１３４…動作結果群受信プログラム、１３５…動作結果群解析プログラム、１３６…マスタモータ駆動装置選択プログラム、１３７…パラメータ設定プログラム、２００…ネットワーク、３００…マスタモータ駆動装置、３１０…ハードウェアリソース、３１１…マイクロコントローラ、３１２…通信ＩＦ、３１３…時計、３１５…外部Ｉ／Ｏ、３１５…二次メモリ、３１６…異常処理パターン、３１７…制御命令群、３１８…動作結果群、３２０…ＯＳ、３３０…ソフトウェアモジュール、３３１…制御命令群受信プログラム、３３２…動作結果群送信プログラム、３３３…制御命令送信プログラム、３３４…動作結果受信プログラム、３３５…モータ制御プログラム、３３６…装置情報送信プログラム、３３７…異常処理実行プログラム、３４０…制御命令受信プログラム、３４１…動作結果送信プログラム、３４２…モータ制御プログラム、４００…非マスタモータ駆動装置、５００…モータ、６００…リモートＩ／Ｏ
【図１】
0006456246.tif 000002
【図２】
0006456246.tif 000003
【図３】
0006456246.tif 000004
【図４】
0006456246.tif 000005
【図５】
0006456246.tif 000006
【図６】
0006456246.tif 000007
【図７】
0006456246.tif 000008
【図８】
0006456246.tif 000009
【図９Ａ】
0006456246.tif 000010
【図９Ｂ】
0006456246.tif 000011
【図９Ｃ】
0006456246.tif 000012
【図１０】
0006456246.tif 000013
【図１１】
0006456246.tif 000014
【図１２】
0006456246.tif 000015