以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、本発明の実施形態を説明する図において、同一部には同一符号を付し、その繰り返しの説明は、省略することにする。
本開示は、モータ制御システムにおける制御命令の転送を開示する。モータ制御システムは、複数のモータ駆動装置を含む。複数のモータ駆動装置は、少なくとも一つのマスタモータ駆動装置を含む。マスタモータ駆動装置は、上位装置である計算機から、制御命令、制御命令それぞれの宛先モータ駆動装置、及び制御命令それぞれの実行時刻の情報を受信する。マスタモータ駆動装置は、計算機から受信した情報に従って、制御命令を他のモータ駆動装置に転送する。
上記構成により、リアルタイム性能を保証しない汎用計算機で、複数モータの同期制御を実現することが可能となる。また、汎用計算機を利用することにより、複数モータの同期制御を実現するために必要なプログラム開発の工数を削減することが可能となる。
一例において、複数のマスタモータ駆動装置の利用可能メモリサイズが、計算機から制御命令群を格納できるように、複数のモータ駆動装置から選択される。これにより、全てのモータ駆動装置に大容量メモリ容量を搭載する必要がなくなるため、システムリソースを低減できる。
図1は、実施形態におけるモータ制御システムの一例を示す。図1の構成例において、モータ制御システムは、PC100、複数のマスタモータ駆動装置300、複数の非マスタモータ駆動装置400、及び複数のリモートI/O600を、ネットワーク200を介して接続する。
本開示において、マスタモータ駆動装置以外のモータ駆動装置を非マスタモータ駆動装置と呼ぶ。モータ駆動装置300、400それぞれには、モータ500が接続されている。モータ500は、例えば、ベルトコンベアや巻き取り装置などのモータである。モータ500及びモータ制御システムにより、モータシステムを構成する。
非マスタモータ駆動装置400は、電源周波数を変更することで、接続されているモータ500の回転数を制御する。リモートI/O600は、センサ情報などを取得する。PC100は、システム内に存在する全てのモータ駆動装置に対する制御命令を生成し、複数のマスタモータ駆動装置300に対して分配する。制御命令は、モータ500の制御に必要となる回転数に対応する。
マスタモータ駆動装置300は、接続されたモータ500の回転数の制御を行う。マスタモータ駆動装置300は、PC100から受信した制御命令を、対象の非マスタモータ駆動装置400に対して送信する。
リモートI/O600の数及びモータ駆動装置の数は、システムの設計に依存する。また、後述するように、PC100は、モータ駆動装置の中から1又は複数のマスタモータ駆動装置300を選択する。なお、1又は複数のマスタモータ駆動装置300が、PC100に選択されることなく、固定されていてもよい。
図2はPC100の構成例を示す。PC100は、汎用的な計算機構成を有する。PC100は、ハードウェアリソース110、オペレーティングシステム(OS)120、及びソフトウェアモジュール130を含んで構成される。
ハードウェアリソース110は、プロセッサであるCPU111、主メモリ112、二次メモリ113、及び、他の装置とデータ通信を行う通信インタフェース(IF)114を含んで構成される。主メモリ112は、典型的には揮発性の半導体記憶デバイスである。二次メモリ113は、典型的には、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)等、非一時的記憶媒体を含む不揮発性記憶デバイスである。
OS120は、PC100の動作を統括的に制御する基本ソフトウェアである。ソフトウェアモジュール220は、マスタモータ駆動装置300及び非マスタモータ駆動装置400を制御するためのソフトウェアである。
ソフトウェアモジュール130は、制御命令群生成プログラム131、制御命令群送信プログラム132、時刻同期プログラム133、動作結果群受信プログラム134、動作結果群解析プログラム135、マスタモータ駆動装置選択プログラム136、パラメータ設定プログラム137を含んで構成される。
主メモリ112は、OS210及びソフトウェアモジュール220を含むプログラム及びプログラムが使用するデータを格納する。二次メモリ113は、主メモリ112にロードされるプログラム及びデータを格納する不揮発性の非一時的記憶媒体を備える。二次メモリ113は、ネットワークを介して接続された外部の記憶デバイスでもよい。プログラムは、プログラム配布サーバや、計算機読み取り可能な非一時的記憶媒体によって装置にインストールすることができ、各装置の不揮発性記憶デバイスに格納することができる。
プログラムはプロセッサ(CPU)によって実行されることで、定められた処理を行う。従って、本開示においてプログラムを主語とする説明は、プロセッサを主語とした説明でもよい。若しくは、プログラムが実行する処理は、そのプログラムが動作する装置及びシステムが行う処理である。
プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、プロセッサは、制御命令群生成プログラム131に従って動作することで制御命令群生成部として機能し、時刻同期プログラム133に従って動作することで時刻同期部機能する。他のプログラムについても同様である。以上の点は、マスタモータ駆動装置300及び非マスタモータ駆動装置400において同様である。
制御命令群生成プログラム131は、PC100がマスタモータ駆動装置300に対して送信する制御命令群を生成する。制御命令群の生成方法の詳細は後に述べる。制御命令群送信プログラム132は、制御命令群生成プログラム131が生成した制御命令群を、ネットワーク上に存在するマスタモータ駆動装置300に転送する。制御命令群の転送方法の詳細は後に述べる。
時刻同期プログラム133は、ネットワーク上に存在するマスタモータ駆動装置120と時刻同期を行う。時刻同期を行う方法は、例えば、SNTP(Simple Network Time Protocol)やIEEE1588に準拠したプロトコルを使用する。動作結果群受信プログラム134は、マスタモータ駆動装置300からモータ500の動作結果群を受信する。動作結果群の受信方法の詳細は後に述べる。
動作結果群解析プログラム135は、動作結果群受信プログラム134を利用して受信した動作結果群を解析し、その解析結果を表示する。ユーザは、動作結果群解析プログラム135にて表示される動作結果を参照し、モータ500の動作状態を確認、必要に応じて、制御命令の再生成やマスタモータ駆動装置300、ならびに非マスタモータ駆動装置400の動作パラメータの再設定を行うことが可能となる。
マスタモータ駆動装置選択プログラム136は、システムに存在するモータ駆動装置の中からマスタモータ駆動装置として動作するモータ駆動装置を選択する。マスタモータ駆動装置300の選択方法の詳細は後に述べる。
パラメータ設定プログラム137は、マスタモータ駆動装置300及び非マスタモータ駆動装置400を動作させるために必要なパラメータ、例えば、上限/下限周波数や加速/減速時間、基底周波数などを、マスタモータ駆動装置300及び非マスタモータ駆動装置400に転送する。
図3は、マスタモータ駆動装置300の構成例を示す。マスタモータ駆動装置300は、ハードウェアリソース310、OS320、ソフトウェアモジュール330を含んで構成される。ハードウェアリソース310は、マイクロコントローラ311、通信IF312、時計313、外部I/O314、二次メモリ315を含んで構成される。
マイクロコントローラ311は、プロセッサであるCPU及びROMやRAM等のメモリを含んで構成されるモジュールである。通信IF312は、PC100や、非マスタモータ駆動装置400、リモートI/O600とデータ通信を行うためのインタフェースであり、イーサネットやシリアルケーブル、無線などのインタフェースが該当する。
時計313は、マスタモータ駆動装置300の時刻を刻む。外部I/O314は、接続されているモータ500の回転数を制御するためのインタフェースであり、アナログI/OやデジタルI/Oなどが該当する。
二次メモリ315は、例えば、揮発性メモリ、不揮発性メモリ、HDD、又はSSDである。二次メモリ315は、異常時のモータ500の動作パターンを示した異常処理パターン316、PC100より外部通信部254を介して転送されるシステムに存在する非マスタモータ駆動装置400に対する制御命令群317、非マスタモータ駆動装置400の動作結果群318を格納する。異常処理パターン316は、1又は複数のパターンを含む。
OS320は、マスタモータ駆動装置300の動作を統括的に制御する基本ソフトウェアである。OS320は、例えば、組み込みシステムに使用されるリアルタイムオペレーティングシステムであり、マイクロコントローラ311内のメモリに格納され、マイクロコントローラ311のCPUにより実行される。
ソフトウェアモジュール330は、PC100及び非マスタモータ駆動装置400とのデータ通信、ならびにモータ500の制御において使用される。ソフトウェアモジュール330は、制御命令群受信プログラム331、動作結果群送信プログラム332、時刻同期プログラム133、制御命令送信プログラム333、動作結果受信プログラム334、モータ制御プログラム335、装置情報送信プログラム336、及び異常処理実行プログラム337を含む。
ソフトウェアモジュール330は、マイクロコントローラ311内のメモリに格納され、マイクロコントローラ311のCPUにより実行される。ソフトウェアモジュール330の少なくとも一部は、二次メモリ315からロードされてもよい。制御命令群受信プログラム331は、通信IF312を介して転送された制御命令群を受信し、二次メモリ315に格納する。
動作結果群送信プログラム332は、二次メモリ315に格納されている、システム内の非マスタモータ駆動装置400やモータ500の動作結果を、通信IF312を通じてPC100に転送する。非マスタモータ駆動装置400の動作結果は、後に述べる動作結果受信プログラム334を介して受信される。モータ500の動作結果は、外部I/O314を介して取得される。
制御命令送信プログラム333は、システム内の非マスタモータ駆動装置400に対して通信IF312を通じて制御命令を送信する。制御命令の送信方法の詳細は後に述べる。動作結果受信プログラム334は、システム内の非マスタモータ駆動装置400から制御下のモータ500の動作結果を受信し、二次メモリ315に格納する。
モータ制御プログラム335は、二次メモリ315に格納されている制御命令群317を基に、外部I/O314を通じて、モータ500の制御を行う。モータ500の制御方法の詳細は後に述べる。
装置情報送信プログラム336は、PC100から受信した装置情報要求に対して、当該マスタモータ駆動装置300の種別や利用可能なメモリ容量などの装置情報を取得し、装置情報応答に含めてPC100に送信する。装置情報取得処理の詳細は後に述べる。
異常処理実行プログラム337は、接続されているモータ500、システム内の非マスタモータ駆動装置400の動作結果、リモートI/O600の状態から異常を検出し、異常に応じたメッセージを他のモータ駆動装置に送信する。
異常処理実行プログラム337は、検出した異常又は外部から受信した異常メッセージに対応する動作パターンを、二次メモリ315に格納されている異常処理パターン316から選択し、選択した動作パターンに応じてモータ500の制御を行う。異常処理パターン316が複数の動作パターンを含む場合、異常処理実行プログラム337は、各動作パターンと異常内容との対応関係を予め保持している。
図4は、非マスタモータ駆動装置400の構成例を示す。非マスタモータ駆動装置400は、ハードウェアリソース310、OS320、ソフトウェアモジュール330を含んで構成される。非マスタモータ駆動装置400のハードウェアリソース310は、マスタモータ駆動装置300と同様である。なお、以下に説明する動作において、非マスタモータ駆動装置400は時計313を必要としない。
二次メモリ315は、マスタモータ駆動装置300と同様に異常時の動作パターンを示した異常処理パターン316を格納し、マスタモータ駆動装置300と異なり、他の非マスタモータ駆動装置400に対する制御命令群317及び他の非マスタモータ駆動装置400の動作結果群318を格納していない。
ソフトウェアモジュール330は、マスタモータ駆動装置300とのデータ通信及びモータ500の制御に使用される。ソフトウェアモジュール330は、装置情報送信プログラム336、異常処理実行プログラム337、制御命令受信プログラム340、動作結果送信プログラム341、及びモータ制御プログラム342を含む。
装置情報送信プログラム336は、PC100から受信した装置情報要求に対して、当該非マスタモータ駆動装置400の種別や利用可能なメモリ容量などの装置情報を取得し、装置情報応答に含めてPC100に送信する。
異常処理実行プログラム337は、接続されているモータ500の動作結果から異常を検出し他のモータ駆動装置に異常メッセージを送信する。異常処理実行プログラム337は、二次メモリ315に格納されている異常処理パターン316から検出した異常に対応する、又は、外部から受信した異常メッセージに対応する動作パターンを選択し、当該動作パターンに従ってモータ500の制御を行う。異常処理パターン316が複数の動作パターンを含む場合、異常処理実行プログラム337は、各動作パターンと異常内容との対応関係を予め保持している。
制御命令受信プログラム340は、マスタモータ駆動装置300が送信する制御命令を受信する。制御命令の受信方法の詳細は後に述べる。動作結果送信プログラム341は、マスタモータ駆動装置300に対して、接続されているモータ500の動作結果を送信する。モータ制御プログラム342は、制御命令受信プログラム340が受信した制御命令を基に、外部I/O314を通じて、接続されているモータ500を制御する。モータ500の制御方法の詳細は後に述べる。
以下に説明する例において、マスタモータ駆動装置300は、システム内のモータ駆動装置から選択される。したがって、マスタモータ駆動装置300として選択され得るモータ駆動装置は、上記マスタモータ駆動装置300及び非マスタモータ駆動装置400の双方のプログラムを保持し、マスタモータ駆動装置300又は非マスタモータ駆動装置400として、必要なプログラムを実行する。非マスタモータ駆動装置400としてのみ動作するモータ駆動装置は、マスタモータ駆動装置300の機能は不要であり、非マスタモータ駆動装置400のプログラムのみ格納する。
システム内のモータ駆動装置は、全て共通のハードウェア構成を有してもよく、異なるハードウェア構成を有してもよい。例えば、マイクロコントローラの演算能力やメモリ容量、記憶装置の容量が異なるモータ駆動装置がシステム内に含まれていてもよい。
図5は、システム起動時におけるPC100、マスタモータ駆動装置300、及び非マスタモータ駆動装置400の動作シーケンスを示す。起動後、PC100は、システム内のモータ500の回転数の動作パターンを作成する制御命令群生成処理S500を、制御命令群生成プログラム131を利用して実行する。
ユーザは、例えば、表計算プログラムを利用して、図6に示すような各モータ駆動装置に関する時間に対する回転数の変化を示すデータを作成する。図6は、二つのモータ駆動装置のための回転数変化を示す。制御命令群生成プログラム131は、モータ駆動装置それぞれに対してユーザにより生成された回転数の変化に対応する制御命令を生成する。例えば、図6の回転数変化それぞれは、一つの制御命令に対応する。
PLCを利用して図6に示す動作パターンを作成する場合、ラダーロジックを利用する必要がある。ラダーロジックはプログラミング言語の一種であるため、その開発は、表計算プログラムを利用して開発する場合と比較して、多大な工数を要する。更に、動作パターンを変更する場合、表計算プログラムの場合、該当する値のみ変更すればよいが、ラダーロジックの場合、再度、プログラミングを行う必要があるため、多大な工数を要する。
これに対して、本開示の構成のように、汎用計算機構成を有するPC100によって、マスタモータ駆動装置300に転送する制御命令の生成及び変更を容易に行うことができる。
制御命令群生成処理S500を実行後、PC100は、マスタモータ駆動装置決定処理S600を実行する。具体的には、PC100は、マスタモータ駆動装置選択プログラム136を利用して、システム内のモータ駆動装置からマスタモータ駆動装置300を選択する。
図7は、マスタモータ駆動装置決定処理S600の詳細を示す。マスタモータ駆動装置選択プログラム136は、システム内の全モータ駆動装置から、モータ駆動装置の種別及び利用可能なメモリサイズを含む装置情報を取得する(S602〜S604)。
具体的には、マスタモータ駆動装置選択プログラム136は、装置情報要求を生成し、モータ駆動装置に対して送信する(S602)。マスタモータ駆動装置選択プログラム136は、装置情報要求を送信したモータ駆動装置から、装置情報要求に対する応答を受信する(S603)。マスタモータ駆動装置選択プログラム136は、システム内の全モータ駆動装置について、ステップS602、603を繰り返す(S604:NO)。
利用可能なメモリサイズは、後述する制御命令群を格納するためのメモリサイズに対応し、例えば、二次メモリ315の空き容量、二次メモリ315とマイクロコントローラ内のメモリ空き容量の合計、又はこれらから規定の計算方法により算出される容量を示す。
システム内の全モータ駆動装置から装置情報要求に対する応答を受信すると(S604:YES)、マスタモータ駆動装置選択プログラム136は、受信した装置情報を解析して(S606)、マスタモータ駆動装置候補となるモータ駆動装置がシステム内に存在しているか否かを判定する(S610)。
上述のように、装置情報は装置の種別を含む。マスタモータ駆動装置選択プログラム136は、装置種別からマスタモータ駆動装置に適した駆動装置が存在しているか判定する。装置種別は、装置のハードウェア構成に対応する。マスタモータ駆動装置選択プログラム136は、マスタモータ駆動装置として選択可能な装置種別を予め保持しており、システムから受信したいずれかの装置種別が予め保持する装置種別と一致する場合、マスタモータ駆動装置候補がシステム内に存在していると判定する。
また、マスタモータ駆動装置選択プログラム136は、装置種別の他、動作周波数などのマイクロコントローラ311の性能に関する情報、ソフトウェアモジュール330のバージョン情報等を使用して、マスタモータ駆動装置を選択してもよい。
このように、装置種別や装置特性等の構成情報に基づきマスタモータ駆動装置を選択することで、マスタモータ駆動装置として適切に動作できるモータ駆動装置を選択できる。また、マスタモータ駆動装置として選択可能な装置の識別子を予め保持する構成と比較して、選択のために必要な情報を低減できる。マスタモータ駆動装置選択プログラム136は、マスタモータ駆動装置として選択可能な装置の識別子を予め保持してもよい。
判定結果が、マスタモータ駆動装置候補がシステム内に存在していないことを示す場合(S610:NO)、マスタモータ駆動装置選択プログラム136は、本システムを動作させることが難しいと判定し、その旨を示すエラーメッセージを、PC100の表示装置で表示する(S622)。
判定結果が、マスタモータ駆動装置候補がシステム内に存在することを示す場合(S610:YES)、マスタモータ駆動装置選択プログラム136は、全てのマスタモータ駆動装置候補を選択する(S612)。さらに、マスタモータ駆動装置選択プログラム136は、選択したマスタモータ駆動装置候補が、御命令群生成処理S500にて生成した制御命令群を格納できるか否かを判定する。
具体的には、マスタモータ駆動装置選択プログラム136は、変数iに1を代入し、合計メモリサイズを0と設定する(S614)。次に、マスタモータ駆動装置選択プログラム136は、マスタモータ駆動装置候補として選択したモータ駆動装置の利用可能メモリサイズの中からi番目に大きいメモリサイズを選択し、合計メモリサイズに加える(S615)。
マスタモータ駆動装置選択プログラム136は、合計メモリサイズとシステム内のモータ駆動装置に対する制御命令群のサイズを比較する(S616)。比較結果が、制御命令群のサイズが大きいことを示す場合(S616:NO)、マスタモータ駆動装置選択プログラム136は、未選択のマスタモータ駆動装置が残っているか判定する(S618)。
未選択のマスタモータ駆動装置が残っていない場合(S618:NO)、マスタモータ駆動装置選択プログラム136は、本システムを動作させることが難しいと判定し、その旨を示すエラーメッセージをPC100の表示装置で表示する(S622)。
未選択のマスタモータ駆動装置候補が残っている場合(S618:YES)、マスタモータ駆動装置選択プログラム136は、変数iをインクリメントし(S620)、ステップS614に戻る。
ステップS616において、制御命令群サイズと合計メモリサイズの比較結果が、制御命令群のサイズが合計メモリサイズ以下であることを示す場合(S616:YES)、マスタモータ駆動装置選択プログラム136は、本システムを動作させることが可能と判定し、合計メモリサイズの算出のために選択したマスタモータ駆動装置候補を、マスタモータ駆動装置と決定する。
マスタモータ駆動装置選択プログラム136は、制御命令群生成処理S500にて生成した制御命令群をマスタモータ駆動装置として動作する装置の利用可能メモリサイズに合わせて分割する(S630)。なお、分割された各制御命令群は、送信先のマスタモータ駆動装置に対する制御命令を含む。
上述のように、マスタモータ駆動装置選択プログラム136は、利用可能メモリサイズが大きい順にマスタモータ駆動装置候補を選択し、合計メモリサイズを計算する。マスタモータ駆動装置選択プログラム136は、合計メモリサイズが制御命令群サイズ以上となる1以上のマスタモータ駆動装置候補を、マスタモータ駆動装置と決定する。
マスタモータ駆動装置選択プログラム136は、選択したマスタモータ駆動装置それぞれの利用可能メモリサイズに応じて、制御命令群を分割する。全てのマスタモータ駆動装置候補の利用可能メモリサイズの合計が、制御命令群サイズ未満である場合、エラーを表示する。
図5に戻って、マスタモータ駆動装置決定処理S600にてマスタモータ駆動装置300を決定した後、PC100及びマスタモータ駆動装置300は、時刻同期処理S700を実行する。時刻同期処理S700は、マスタモータ駆動装置300に搭載している時計313の時刻と、PC100が持つ時計の時刻とを同期する。具体的には、PC100の時刻同期プログラム133は、PC100の計測時刻をマスタモータ駆動装置300に送信し、マスタモータ駆動装置300のマイクロコントローラ311は、受信した時刻に合わせて時計313を調整する。
時刻同期処理S700の実行後、PC100及びマスタモータ駆動装置300は、制御命令群通信処理S800を実行する。PC100は、選択したマスタモータ駆動装置300それぞれに、対応する制御命令群を送信し、各マスタモータ駆動装置300は、自装置に送信された制御命令群を受信する。
マスタモータ駆動装置300及び非マスタモータ駆動装置400は、モータ制御処理S900を実行する。マスタモータ駆動装置300は、PC100から受信した自装置への制御命令に従って、自装置に接続されたモータ500を制御すると共に、対象の非マスタモータ駆動装置400に、PC100から受信した制御命令を転送する。非マスタモータ駆動装置400は、受信した制御命令に従って、自装置に接続されたモータ500を制御する。
その後、マスタモータ駆動装置300及びPC100は、動作結果群通信処理S1000を実行する。マスタモータ駆動装置300は、自装置に接続されたモータ500の動作結果及び制御命令を転送した非マスタモータ駆動装置400から受信した動作結果を、PC100に送信する。PC100は、マスタモータ駆動装置300それぞれから、動作結果を受信する。動作結果は、例えば、実行した制御命令及び正常に動作したか否かを示す。
図8は、制御命令群通信処理S800及び動作結果群通信処理S1000における、PC100の動作のフローチャートを示す。PC100は、制御命令群送信プログラム132及び動作結果群受信プログラム134、動作結果群解析プログラム135に従って動作する。
制御命令群送信プログラム132は、ステップ630にて分割された制御命令群を、該当するマスタモータ駆動装置300それぞれに対して送信する(S810)。図10は、制御命令群1000のフォーマット例を示す。制御命令群1000のフォーマットは、三つのフィールドを有する。
制御命令フィールド1010は、制御命令を示す。時刻フィールド1020は、その制御命令を実行する時刻情報を示す。モータ駆動装置番号フィールド1030は、制御命令送信先のモータ駆動装置を識別する番号を示し、自装置又は非マスタモータ駆動装置の番号を示す。マスタモータ駆動装置300は、制御命令フィールド1010が示す制御命令を、時刻フィールド1020が示す時刻に、モータ駆動装置番号フィールド1030が示すモータ駆動装置に送信する。
時刻フィールド1020は、絶対時刻を示してもよく、相対時刻を示してもよい。時刻フィールド1020が相対時刻を示す場合、制御命令群は、基準時刻の情報を含む。例えば、PC100がマスタモータ駆動装置300に対して送信する制御命令群の中で最初に実行される制御命令に対して開始時刻(基準時刻)が対応付けられており、他の制御命令の時刻フィールド1020は、開始時刻からの経過時間を示す。
制御命令群は、制御命令の実行時刻の情報として、開始時刻(基準時刻)及び周期を示してもよい。開始時刻及び周期は、それぞれ、制御命令群に送信先のモータ駆動装置に共通である、又は、モータ駆動装置毎に示される。マスタモータ駆動装置300は、各非マスタモータ駆動装置400の制御命令群において、最初の制御命令を対応開示時刻に送信し、対応周期でその後の制御命令を送信する。マスタモータ駆動装置300は、自装置の制御命令群において、最初の制御命令を対応開示時刻に実行し、対応周期でその後の制御命令を実行する。
制御命令群が上述のような時刻情報を含むことで、マスタモータ駆動装置300は、他設定を必要とすることなく、正確なタイミングで制御命令を非マスタモータ駆動装置400に送信することができる。
例えば、複数モータの同期制御では、制御命令実行する周期はモータ500毎に異なる場合がある。数10台〜数100台のモータの同期制御を行う場合、周期についての事前設定に多大な時間を要する。上述のように、制御命令群に各制御命令を実行する時刻を示す情報を含めることで、上記のようなモータ500毎の周期設定が不要となる。
また、複数のマスタモータ駆動装置300それぞれに送信する制御命令群は、送信先のマスタモータ駆動装置300の動作タイミングを示す時刻情報を含むため、マスタモータ駆動装置として動作する権利をモータ駆動装置間で引き継ぐ仕組みが不要となる。
図8に戻って、制御命令群送信プログラム132は、マスタモータ駆動装置300に対して制御命令群を送信した後、その送信に対する応答メッセージを受信する(S812)。制御命令群を送信した全てのマスタモータ駆動装置300から応答メッセージを受信した場合(S812:YES)、制御命令群送信プログラム132は、マスタモータ駆動装置300が正常に制御命令群を受信したと判定する。動作結果群受信プログラム134は、動作結果群の受信を持つ(S1010)。
制御命令群を送信した全てのマスタモータ駆動装置300から応答メッセージを受信できない場合(S812:NO)、制御命令群送信プログラム132は、マスタモータ駆動装置300の何れかに異常が発生したと判定し、マスタモータ駆動装置300及び非マスタモータ駆動装置400に対して異常メッセージを送信し(S814)、その旨を示すエラーメッセージをPC100の表示装置で表示する(S816)。
動作結果群受信プログラム134が、全てのマスタモータ駆動装置300から動作結果群を受信した場合(S1010:YES)、その受信した動作結果群を解析した後、その解析結果をPC100上に表示する(S1012、S1014)。
一方、制御命令群を送信したマスタモータ駆動装置300の1つでも動作結果群の受信がなく(S1010:NO)、生成した制御命令群に付加した時刻を経過した場合(S1016:YES)、マスタモータ駆動装置300に異常が発生したと判定し、マスタモータ駆動装置300、ならびに非マスタモータ駆動装置400に対して異常メッセージを送信し(S1018)、その旨をエラーメッセージとしてPC100上に表示する(S1020)。
上述のように、モータ制御システムは、マスタモータ駆動装置に対し時刻情情報と共に制御命令を送信し、マスタモータ駆動装置が、時刻情報に従って、非マスタモータ駆動装置に制御命令を転送する。これにより、汎用計算機構成を有するPCで制御命令を生成し、モータ駆動装置それぞれに、リアルタイムで制御命令を送信することができる。
さらに、モータ制御システムは、システム内のモータ駆動装置の中から1又は複数のマスタモータ駆動装置を選択する。これにより、マスタモータ駆動装置として適切なモータ駆動装置を選択することができる。特に、メモリサイズに基づき1以上のマスタモータ駆動装置を選択することで、全ての制御命令群を1以上のマスタモータ駆動装置に格納できる。
また、複数のマスタモータ駆動装置を選択できることにより、大容量の制御命令を必要とする大規模システムにおいても、制御命令を分割してマスタモータ駆動装置に転送することが可能となり、コスト増大に繋がるメモリサイズの増大を抑えることができる。なお、設計によっては、一つのみのマスタモータ駆動装置が選択可能でもよい。
図9A〜9Cは制御命令群通信処理800、モータ制御処理900、及び動作結果群通信処理S1000における、マスタモータ駆動装置300及び非マスタモータ駆動装置400の動作のフローチャートを示す。マスタモータ駆動装置400は、モータ制御処理900においてのみ動作する。
図9Aにおいて、システム内のモータ駆動装置は、制御命令群受信プログラム331によって、PC100が送信する制御命令群を受信すると(S850:YES)、自装置がマスタモータ駆動装置300として動作すると認識する。制御命令群受信プログラム331は、受信した制御命令群を解析した後、二次メモリ315に制御命令群317として格納する(S852)。
マスタモータ駆動装置300の制御命令送信プログラム333は、時計313と制御命令群317の時刻フィールド1020の値を比較する。現在時刻が、制御命令を非マスタモータ駆動装置400又は制御下のモータ500に送信する時刻である場合(S910:YES)、制御命令送信プログラム333は、各制御命令を、非マスタモータ駆動装置400又は自装置のモータ制御プログラム335に送信する。本例において、時計313が示す時刻が時刻フィールド1020の値と一致する場合、現在時刻が、制御命令を非マスタモータ駆動装置400又は制御下のモータ500に送信する時刻である。
マスタモータ駆動装置300のモータ制御プログラム335は、自装置に接続されているモータ500に対して制御命令を送信する。モータ制御プログラム335は、モータ500のインタフェースに応じて制御命令を制御指令に変更した後、モータ500に対して制御指令を送信する(S912)。
動作結果受信プログラム334は、制御命令を送信した各非マスタモータ駆動装置400及び自装置のモータ制御プログラム335から動作結果を受信できた場合(S914のYES)、各非マスタモータ駆動装置400及び自装置が正常にモータ500に対して制御指令を送信できたと判定し、その動作結果を二次メモリ315に動作結果318として保存する(S916)。動作結果318は、例えば、制御命令、送信先モータ駆動装置、及び送信時刻の情報を格納する。
一方、自装置モータ制御プログラム335又は制御命令を送信した何れかの非マスタモータ駆動装置400から正常な動作結果を受信できない場合(S914:NO)、異常処理実行プログラム339は、システム内で異常が発生したと判定し、結合子Bを介して、図9Bのフローチャートに進む。
異常処理実行プログラム339は、他のモータ駆動装置に対して検出した異常に対応する異常メッセージを送信するとともに(S950)、自装置に接続されているモータ500に対して、異常処理パターン316から検出した以上に応じて選択した動作パターン合った制御指令を送信する(S952)。これにより、非マスタモータ駆動装置400における異常発生時に、モータシステムを適切に制御することができる。異常処理パターン316は、図10に示すような、回転数の時間変化を示し、異常処理実行プログラム339は、異常処理パターン316に合った制御指令を予め保持する又は異常時に生成する。
図9Aに戻って、非マスタモータ駆動装置400の制御命令受信プログラム340は、マスタモータ駆動装置300が送信した制御命令を受信すると(S920:YES)、その受信した制御命令を、モータ制御プログラム335に送信する。モータ制御プログラム335は、接続されているモータ500のインタフェースに応じて制御命令を変更した後、モータ500に対して制御命令を送信する(S922)。
モータ制御プログラム335は、モータ500から動作結果を受信し(S924)、その結果が正常の場合(S926:YES)、動作結果を、動作結果送信プログラム341に送信する。動作結果送信プログラム341は、マスタモータ駆動装置300に動作結果を送信する(S928)。
一方、モータ500から受信した動作結果が正常ではない場合(S926:NO)、非マスタモータ駆動装置400の異常処理実行プログラム339は、モータ500の動作に異常が発生したと判定し、結合子Bを介して、図9Bのフローチャートに進む。異常処理実行プログラム339は、他のモータ駆動装置に対して異常メッセージを送信するとともに(S950)、自装置に接続されているモータ500に対して、異常処理パターン316から選択した動作パターンに合った制御指令を送信する(S952)。これにより、異常発生時にモータシステムを適切に制御できる。
図9Aに戻って、マスタモータ駆動装置300及び非マスタモータ駆動装置400の異常処理実行プログラム339は、異常メッセージを受信すると(S930:YES)、受信した異常メッセージを解析した後(S932)、自装置に接続されているモータ500に対して、異常処理パターン316からメッセージに応じて選択した動作パターンに合った制御命令を送信する(S934)。
図9Cに示すように、マスタモータ駆動装置300は、定期的にリモートI/O600が送信するメッセージを受信し(S940:YES)、異常処理実行プログラム339は、メッセージを解析する(S942)。異常メッセージの送信が必要と判定した場合(S944:YES)、異常処理実行プログラム339は、他のモータ駆動装置に対して異常メッセージを送信するとともに(S950)、自装置に接続されているモータ500に対して、異常処理パターン316からメッセージに応じて選択した動作パターンに合った制御指令を送信する(S952)。
リモートI/O600が送信したメッセージを受信することにより、リモートI/O600の状態に応じた異常処理を実行できる。例えば、外部設置した温度センサのセンサ情報を取得し、そのセンサ情報の値が閾値以上になった場合に異常処理を行うことができる。
異常メッセージの送信及び異常処理パターンに合ったモータ500への制御指令を送信する構成により、システム内に存在するモータ駆動装置の一つでも異常が発生した場合に適切な異常処理が可能となり、システムの暴走を防ぐことができる。モータ500の異常処理として、モータ急停止、モータをゆっくり減速し後停止、モータをゆっくり減速させた後一定度速度の動作を維持など、色々な方法が考えられる。
例えば、人身事故を防止するために、モータ制御システムは、モータを急停止させる。一方、ベルトコンベアのモータシステムにおいて、モータを急停止させると、ベルトコンベア上に乗っている作業物が落下する危険がある。この場合、モータ制御システムは、モータをゆっくり減速させて停止させる。予めシステムの状態に対応する異常処理パターン316を二次メモリ315に保存しておくことにより、システムに適した異常処理が可能となる。
図9Cに示すように、非マスタモータ駆動装置400に対する制御命令の送信を完了すると(S1020:YES)、マスタモータ駆動装置300の動作結果群送信プログラム332は、二次メモリ315に格納されている動作結果318を、PC100に送信する(S1022)。
なお、時刻フィールド1020が絶対時刻を示す場合、各マスタモータ駆動装置300が、制御命令群の処理の終了後に、再び同じ処理を実行するためには、PC100、マスタモータ駆動装置300、及び非マスタモータ駆動装置400は、時刻同期処理S700、制御命令群通信処理S800、モータ制御処理S900、及び動作結果群通信処理S1000を実行する必要がある。PC100の故障やPC100とマスタモータ駆動装置300との間のネットワーク異常が発生すると、システムが動作しない可能性がある。
一方、時刻フィールド10120が相対時刻を示す場合、マスタモータ駆動装置300間で制御命令群の中で最も時間が古い時刻以前の時刻に時刻同期を行うことにより、PC100との時刻同期処理S700、制御命令群通信処理S800を行わず、モータ制御処理(S900)を行うことができる。そのため、PC100の故障やPC100とマスタモータ駆動装置300との間のネットワーク異常が発生しても、システムは動作可能である。
なお、上記動作を行うためには、時刻同期処理(S700)において、グランドマスタとなるマスタモータ駆動装置300を選択する必要がある。例えば、PC100は、マスタモータ駆動装置決定処理S600にて決定したマスタモータ駆動装置300の中で、利用可能なメモリ容量の一番大きい装置を、グランドマスタに選択し、その旨を選択したモータ駆動装置に通知する。
グランドマスタに選択されたマスタモータ駆動装置300は、各マスタモータ駆動装置300の処理が終了した後、時刻同期プログラム133を利用して、他のマスタモータ駆動装置300との時刻同期を行う。
上記例において、マスタモータ駆動装置300は、モータ駆動装置の種別や利用可能なメモリサイズに基づきで選択される。この方法により、制御指令群のサイズに応じたマスタモータ駆動装置300を選択することができる。
しかし、この方法は静的な条件に基づいてマスタモータ駆動装置300を選択にするため、動的な条件、例えば、モータ駆動装置の通算動作時間を無視する。例えば、制御命令群のサイズが1MByteであり、利用可能なメモリサイズが2Mbyteかつ通算動作時間が10000時間のモータ駆動装置と、利用可能なメモリサイズが1Mbyteかつ通信動作時間が10時間のモータ駆動装置が存在する場合、上記方法は、前者のモータ駆動装置をマスタモータ駆動装置300として選択する。
一方、通算動作時間を考慮すると、前者のモータ駆動装置は故障の可能性が高い。マスタモータ駆動装置300が故障すると、本システムは動作しないことから、故障の可能性が低いモータ駆動装置をマスタモータ駆動装置300として選択する方が好ましい。
そこで、マスタモータ駆動装置300が非マスタモータ駆動装置400から動作結果を取得する際、及びPC100がマスタモータ駆動装置300から動作結果群を取得する際に、モータ500の動作結果に合わせて、モータ駆動装置の通算動作時間や平均CPU使用率といった動作状態情報を取得する。PC100は、その情報を図11に示す動作状態テーブル1100に格納する。動作状態テーブル1100各々のモータ駆動装置の動作状況に合わせたマスタモータ駆動装置を選択できる。PC100は、モータ駆動装置の動作状態情報を、装置情報の取得ステップ(S602)において取得してもよい。
図11は、PC100が格納する動作状態テーブル1100の構成例を示す。図12は、図11に示す動作結果テーブルを基に、PC100がマスタモータ駆動装置300を選択するフローチャートを示す。
動作状態テーブル1100は、モータ駆動装置名フィールド1110、通算動作時間フィールド1120、動作した制御命令群フィールド1130、役割フィールド1140、平均CPU使用率フィールド1150を含んで構成される。PC100は、本テーブル1100により、各々のモータ駆動装置の動作時間、ならびに制御命令群毎の役割と、その際の平均CPU使用率1150を知ることができる。なお、これらは一例であって、他の情報が使用されてもよい。
ステップ602により全モータ駆動装置よりモータ駆動装置の種別や利用可能なメモリサイズを取得した後、マスタモータ駆動装置候補が存在する場合(S610:YES)、マスタモータ駆動装置選択プログラム136は、動作状態テーブル1100を参照し(S1210)、マスタモータ駆動装置条件を満たすかマスタモータ駆動装置候補が存在するか否かを判定する(S1220)。
マスタモータ駆動装置条件は、例えば、通算動作時間が10000時間以内や平均CPU使用率が80%以内といった、モータ駆動装置の故障発生につながる動作状態の条件である。マスタモータ駆動装置条件を満たすマスタモータ駆動装置候補が存在する場合(S1220:YES)、PC100は、ステップ612以降のステップを実行する。
一方、マスタモータ駆動装置条件を満たすマスタモータ駆動装置候補が存在しない場合(S1220:NO)、PC100は、本システムを動作させることが難しいと判定し、その旨を示すエラーメッセージを表示装置において表示する(S622)。
上記のようにマスタモータ駆動装置条件を満たす装置をマスタモータ駆動装置300として選択することにより、マスタモータ駆動装置の動作中の故障を防ぐことができる。さらに平均CPU使用率をマスタモータ駆動装置条件に含めることにより、マスタモータ駆動装置の不安定動作を抑制できる。例えば、モータ駆動装置に搭載したソフトウェアの想定外の動作を行い、当初の予定以上にCPUを利用することにより、非マスタモータ駆動装置400に制御命令送信タイミングが揺らぐ不具合を防ぐことができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。