(57)【要約】【課題】セーフティ機能の仕様を満たしているか否かに関する判断材料を出力する制御システムを提供する。【解決手段】制御システムは、第１，第２のコントローラと、ドライブ装置と、モータの動作状態を示す状態値をトレースするデータトレースモジュールとを備える。ドライブ装置は、セーフティ機能に関するセーフティパラメータを格納するストレージと、モータの動作状態を示す状態値とセーフティパラメータとに基づいて、モータの駆動を停止する制御装置とを含む。制御システムは、データトレースモジュールによる状態値のトレース結果に重ねてセーフティパラメータを表示するサポート装置とをさらに備える。【選択図】図２
2020052898.tif 000002
【特許請求の範囲】
【請求項１】
第１のコントローラと、
前記第１のコントローラからの第１の指令に従ってモータを駆動するドライブ装置と、
前記ドライブ装置に対してセーフティ機能の動作に係る第２の指令を送信する第２のコントローラと、
前記第１の指令に応じて変化する、前記モータの動作状態を示す状態値をトレースするためのデータトレースモジュールとを備え、
前記ドライブ装置は、
前記セーフティ機能に関するセーフティパラメータを格納するためのストレージと、
前記第２のコントローラから前記第２の指令を受けた場合に、前記状態値と前記セーフティパラメータとに基づいて、前記モータの駆動を停止するための制御装置とを含み、
前記データトレースモジュールによる前記状態値のトレース結果と、前記セーフティパラメータとを取得し、当該トレース結果に重ねて当該セーフティパラメータを表示するためのサポート装置とをさらに備える、制御システム。
【請求項２】
前記サポート装置は、前記トレース結果に示される前記状態値の単位と前記セーフティパラメータの単位とを合わせた上で、前記トレース結果に重ねて前記セーフティパラメータを表示する、請求項１に記載の制御システム。
【請求項３】
前記サポート装置は、横軸および縦軸の一方の軸が時間を示し、横軸および縦軸の他方の軸が前記状態値の大きさを示すグラフ上に前記トレース結果を表わすとともに、前記グラフ上に前記セーフティパラメータを表わす、請求項１または２に記載の制御システム。
【請求項４】
前記セーフティパラメータは、前記状態値の下限値と前記状態値の上限値とを含み、
前記サポート装置は、前記下限値と前記上限値とを前記グラフ上に表わす、請求項３に記載の制御システム。
【請求項５】
前記サポート装置は、前記下限値および前記上限値をそれぞれ前記縦軸に直交させて前記グラフに表わす、請求項４に記載の制御システム。
【請求項６】
前記セーフティパラメータは、前記ドライブ装置が前記第２の指令を受けてから前記モータの駆動を停止するまでの停止猶予時間を含み、
前記サポート装置は、前記第２の指令を受けた第１のタイミングと、当該第１のタイミングから前記停止猶予時間が経過した第２のタイミングとを前記グラフ上に表わす、請求項３〜５のいずれか１項に記載の制御システム。
【請求項７】
前記サポート装置は、前記第１のタイミングおよび前記第２のタイミングをそれぞれ前記横軸に直交させて前記グラフに表わす、請求項６に記載の制御システム。
【請求項８】
制御システムに接続されるサポート装置であって、
前記制御システムは、
第１のコントローラと、
前記第１のコントローラからの第１の指令に従ってモータを駆動するドライブ装置と、
前記ドライブ装置に対してセーフティ機能の動作に係る第２の指令を送信する第２のコントローラと、
前記第１の指令に応じて変化する、前記モータの動作状態を示す状態値をトレースするためのデータトレースモジュールとを備え、
前記ドライブ装置は、
前記セーフティ機能に関するセーフティパラメータを格納するためのストレージと、
前記第２のコントローラから前記第２の指令を受けた場合に、前記状態値と前記セーフティパラメータとに基づいて、前記モータの駆動を停止するための制御装置とを含み、
前記サポート装置は、
前記データトレースモジュールから前記状態値のトレース結果を取得する手段と、
前記ドライブ装置から前記セーフティパラメータを取得する手段と、
前記取得したトレース結果に重ねて前記取得したセーフティパラメータを表示する手段とを備える、サポート装置。
【請求項９】
制御システムに接続されるコンピュータで実行されるサポートプログラムであって、
前記制御システムは、
第１のコントローラと、
前記第１のコントローラからの第１の指令に従ってモータを駆動するドライブ装置と、
前記ドライブ装置に対してセーフティ機能の動作に係る第２の指令を送信する第２のコントローラと、
前記第１の指令に応じて変化する、前記モータの動作状態を示す状態値をトレースするためのデータトレースモジュールとを備え、
前記ドライブ装置は、
前記セーフティ機能に関するセーフティパラメータを格納するためのストレージと、
前記第２のコントローラから前記第２の指令を受けた場合に、前記状態値と前記セーフティパラメータとに基づいて、前記モータの駆動を停止するための制御装置とを含み、
前記サポートプログラムは、前記コンピュータに、
前記データトレースモジュールから前記状態値のトレース結果を取得するステップと、
前記ドライブ装置から前記セーフティパラメータを取得するステップと、
前記取得したトレース結果に重ねて前記取得したセーフティパラメータを表示するステップとを実行させる、サポートプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム、ならびに、制御システムに用いられるサポート装置およびサポートプログラムに関する。
【背景技術】
【０００２】
多くの製造現場において、設備や機械を安全に使用するために、セーフティシステムの導入が進みつつある。セーフティシステムは、国際規格に従うセーフティ機能を提供するためのものであり、セーフティコントローラ、セーフティセンサ、セーフティスイッチ、およびセーフティリレーといったセーフティコンポーネントで構成される。
【０００３】
セーフティシステムは、設備や機械を駆動するサーボモータなどのドライブ装置に対してもセーフティ機能を提供することが要求される。例えば、非特許文献１は、可変速電動ドライブシステムに対して提供すべきセーフティ機能を規定する。
【０００４】
より具体的には、非特許文献１は、ＳＴＯ（Safe Torque Off）、ＳＳ１（Safe Stop 1）、ＳＳ２（Safe Stop 2）、ＳＯＳ（Safe Operating Stop）、ＳＢＣ（Safe Brake Control）などの、ドライブ装置に関連するいくつかのセーフティ機能を規定する。
【０００５】
非特許文献１に開示されるセーフティ機能の仕様を満たしているか否かを確認するための機能として、データトレース機能がある。データトレース機能は、サーボモータの動作に関する状態値（例えば、速度など）の推移を監視する機能である。データトレース機能に関する文献として、特開２００９−１４６０４０号公報（特許文献１）と、特開２０１７−７９００９号公報（特許文献２）とがある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１４６０４０号公報
【特許文献２】特開２０１７−７９００９号公報
【非特許文献】
【０００７】
【非特許文献１】"IEC 61800-5-2:2016 Adjustable speed electrical power drive systems - Part 5-2: Safety requirements - Functional", International Electrotechnical Commission, 2016-04-18
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１，２に開示されるデータトレース機能は、サーボモータの速度などのデータトレース結果を出力するだけであるので、ユーザは、データトレース結果を確認したとしても、セーフティ機能の仕様を満たしているか否かを即座に判断することができない。
【０００９】
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、セーフティ機能の仕様を満たしているか否かに関する判断材料を出力できる制御システムを提供することを目的とする。他の局面における目的は、セーフティ機能の仕様を満たしているか否かに関する判断材料を出力できるサポート装置を提供することを目的とする。他の局面における目的は、セーフティ機能の仕様を満たしているか否かに関する判断材料を出力できるサポートプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本開示の一例では、制御システムは、第１のコントローラと、上記第１のコントローラからの第１の指令に従ってモータを駆動するドライブ装置と、上記ドライブ装置に対してセーフティ機能の動作に係る第２の指令を送信する第２のコントローラと、上記第１の指令に応じて変化する、上記モータの動作状態を示す状態値をトレースするためのデータトレースモジュールとを備える。上記ドライブ装置は、上記セーフティ機能に関するセーフティパラメータを格納するためのストレージと、上記第２のコントローラから上記第２の指令を受けた場合に、上記状態値と上記セーフティパラメータとに基づいて、上記モータの駆動を停止するための制御装置とを含む。上記制御システムは、上記データトレースモジュールによる上記状態値のトレース結果と、上記セーフティパラメータとを取得し、当該トレース結果に重ねて当該セーフティパラメータを表示するためのサポート装置とをさらに備える。
【００１１】
この開示によれば、セーフティパラメータがトレース結果に重ねて表示されることで、ユーザは、ドライブ装置の動作がセーフティ機能の仕様を満たしているか否かを容易に判断することができる。
【００１２】
本開示の一例では、上記サポート装置は、上記トレース結果に示される上記状態値の単位と上記セーフティパラメータの単位とを合わせた上で、上記トレース結果に重ねて上記セーフティパラメータを表示する。
【００１３】
この開示によれば、ユーザは、トレース結果が示す状態値と、セーフティパラメータとを容易に比較することが可能になる。
【００１４】
本開示の一例では、上記サポート装置は、横軸および縦軸の一方の軸が時間を示し、横軸および縦軸の他方の軸が上記状態値の大きさを示すグラフ上に上記トレース結果を表わすとともに、上記グラフ上に上記セーフティパラメータを表わす。
【００１５】
この開示によれば、ユーザは、トレース結果が示す状態値と、セーフティパラメータとを分析しやすくなる。
【００１６】
本開示の一例では、上記セーフティパラメータは、上記状態値の下限値と上記状態値の上限値とを含む。上記サポート装置は、上記下限値と上記上限値とを上記グラフ上に表わす。
【００１７】
この開示によれば、ユーザは、状態値が上限値および下限値の範囲内に収まっているか否かを容易に判断することができる。
【００１８】
本開示の一例では、上記サポート装置は、上記下限値および上記上限値をそれぞれ上記縦軸に直交させて上記グラフに表わす。
【００１９】
この開示によれば、ユーザは、状態値が上限値および下限値の範囲内に収まっているか否かをさらに容易に判断することができる。
【００２０】
本開示の一例では、上記セーフティパラメータは、上記ドライブ装置が上記第２の指令を受けてから上記モータの駆動を停止するまでの停止猶予時間を含む。上記サポート装置は、上記第２の指令を受けた第１のタイミングと、当該第１のタイミングから上記停止猶予時間が経過した第２のタイミングとを上記グラフ上に表わす。
【００２１】
この開示によれば、ユーザは、停止猶予時間における状態値の推移を容易に確認することができる。
【００２２】
本開示の一例では、上記サポート装置は、上記第１のタイミングおよび上記第２のタイミングをそれぞれ上記横軸に直交させて上記グラフに表わす。
【００２３】
この開示によれば、ユーザは、停止猶予時間における状態値の推移をさらに容易に確認することができる。
【００２４】
本開示の他の例では、制御システムに接続されるサポート装置が提供される。上記制御システムは、第１のコントローラと、上記第１のコントローラからの第１の指令に従ってモータを駆動するドライブ装置と、上記ドライブ装置に対してセーフティ機能の動作に係る第２の指令を送信する第２のコントローラと、上記第１の指令に応じて変化する、上記モータの動作状態を示す状態値をトレースするためのデータトレースモジュールとを備える。上記ドライブ装置は、上記セーフティ機能に関するセーフティパラメータを格納するためのストレージと、上記第２のコントローラから上記第２の指令を受けた場合に、上記状態値と上記セーフティパラメータとに基づいて、上記モータの駆動を停止するための制御装置とを含む。上記サポート装置は、上記データトレースモジュールから上記状態値のトレース結果を取得する手段と、上記ドライブ装置から上記セーフティパラメータを取得する手段と、上記取得したトレース結果に重ねて上記取得したセーフティパラメータを表示する手段とを備える。
【００２５】
この開示によれば、セーフティパラメータがトレース結果に重ねて表示されることで、ユーザは、ドライブ装置の動作がセーフティ機能の仕様を満たしているか否かを容易に判断することができる。
【００２６】
本開示の他の例では、制御システムに接続されるコンピュータで実行されるサポートプログラムが提供される。上記制御システムは、第１のコントローラと、上記第１のコントローラからの第１の指令に従ってモータを駆動するドライブ装置と、上記ドライブ装置に対してセーフティ機能の動作に係る第２の指令を送信する第２のコントローラと、上記第１の指令に応じて変化する、上記モータの動作状態を示す状態値をトレースするためのデータトレースモジュールとを備える。上記ドライブ装置は、上記セーフティ機能に関するセーフティパラメータを格納するためのストレージと、上記第２のコントローラから上記第２の指令を受けた場合に、上記状態値と上記セーフティパラメータとに基づいて、上記モータの駆動を停止するための制御装置とを含む。上記サポートプログラムは、上記コンピュータに、上記データトレースモジュールから上記状態値のトレース結果を取得するステップと、上記ドライブ装置から上記セーフティパラメータを取得するステップと、上記取得したトレース結果に重ねて上記取得したセーフティパラメータを表示するステップとを実行させる。
【００２７】
この開示によれば、セーフティパラメータがトレース結果に重ねて表示されることで、ユーザは、ドライブ装置の動作がセーフティ機能の仕様を満たしているか否かを容易に判断することができる。
【発明の効果】
【００２８】
本発明によれば、セーフティ機能の仕様を満たしているか否かに関する判断材料を出力できる。
【図面の簡単な説明】
【００２９】
【図１】実施の形態に係る制御システムの構成例を示す模式図である。
【図２】実施の形態に係る制御システムが有する機能を示す模式図である。
【図３】実施の形態に係る制御システムを構成する標準コントローラのハードウェア構成例を示す模式図である。
【図４】実施の形態に係る制御システムを構成するセーフティコントローラのハードウェア構成例を示す模式図である。
【図５】実施の形態に係る制御システムを構成するセーフティドライバおよびサーボモータのハードウェア構成例を示す模式図である。
【図６】実施の形態に係る制御システムを構成するサポート装置のハードウェア構成例を示す模式図である。
【図７】実施の形態に係る制御システムの機能分担の一例を示す模式図である。
【図８】実施の形態に係る制御システムのセーフティドライバによるセーフティ機能に係る処理手順の一例を示すシーケンス図である。
【図９】実施の形態に係る制御システムが提供するモーションセーフティ機能の一例を示す図である。
【図１０】実施の形態に係る制御システムのセーフティドライバに格納されるモーションセーフティ機能を実現するためのパラメータセットの一例を示す図である。
【図１１】実施の形態に係る制御システムにおける通信フレームの伝送形態を説明するための図である。
【図１２】実施の形態に係る制御システムにおけるデータ伝送を説明するための図である。
【図１３】実施の形態に係る制御システムにおける標準制御およびセーフティ制御の実装例を示す模式図である。
【図１４】データトレース機能を実現するための制御フローの一例を示す図である。
【図１５】データトレースに関する各種の設定を受け付けるデータトレース画面を示す図である。
【図１６】トレース対象のデータ群の一括設定画面を示す図である。
【図１７】トレース対象のデータ群の決定方法を概略的に示す概念図である。
【図１８】トレース対象のデータ群のサンプリング処理を説明するための図である。
【図１９】データトレース画面の表示領域を表した図である。
【図２０】変形例１に従う制御システムを示す図である。
【図２１】変形例２に従う制御システムを示す図である。
【図２２】変形例３に従う制御システムを示す図である。
【発明を実施するための形態】
【００３０】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わされてもよい。
【００３１】
＜Ａ．適用例＞
まず、本発明が適用される場面の一例について説明する。
【００３２】
図１は、本実施の形態に係る制御システム１の構成例を示す模式図である。本実施の形態に係る制御システム１は、例えば、ＩＥＣ  ６１５０８などに規定されたセーフティ機能に加えて、上述の非特許文献１に規定されたドライブ装置に対するセーフティ機能を提供する。
【００３３】
図１を参照して、制御システム１は、主として、標準コントローラ１００、ならびに、標準コントローラ１００とフィールドネットワーク２を介して接続されるセーフティコントローラ２００および１または複数のセーフティドライバ３００を含む。セーフティドライバ３００の各々は、電気的に接続されたサーボモータ４００を駆動する。なお、サーボモータ４００に限らず、任意の種類のモータを採用できる。さらに、制御システム１は、標準コントローラ１００とネットワーク３を介して接続されるサポート装置５００を含む。
【００３４】
標準コントローラ１００は、第１のコントローラに相当し、予め作成された標準制御プログラムに従って、サーボモータ４００を含む制御対象に対する標準制御を実行する。典型的には、標準コントローラ１００は、１または複数のセンサ（図示していない）などからの入力信号に応じた制御演算をサイクリック実行することで、サーボモータ４００などのアクチュエータに対する指令を周期的に算出する。
【００３５】
セーフティコントローラ２００は、セーフティドライバ３００に対してセーフティ機能の動作に係るセーフティ指令（第２の指令）を送信する。より具体的には、セーフティコントローラ２００は、標準コントローラ１００とは独立して、制御対象に対するセーフティ機能を実現するための監視および制御演算をサイクリック実行する。セーフティコントローラ２００は、任意のセーフティデバイス２４０からの入力信号の受付、および／または、任意のセーフティデバイス２４０への指令の出力が可能になっている。
【００３６】
セーフティドライバ３００は、標準コントローラ１００からの指令（第１の指令）に従って、サーボモータ４００に電力を供給することで、サーボモータ４００を駆動する。セーフティドライバ３００は、サーボモータ４００からのフィードバック信号などに基づいて、サーボモータ４００の回転位置、回転速度、回転加速度および発生するトルクなどを周期的に算出する。
【００３７】
さらに、セーフティドライバ３００は、サーボモータ４００の駆動に関するセーフティ機能を有している。より具体的には、セーフティドライバ３００は、セーフティ機能に必要な状態情報をセーフティコントローラ２００へ提供するとともに、要求されるセーフティ機能に応じて、サーボモータ４００に供給する電力を調整または遮断する。
【００３８】
サーボモータ４００は、セーフティドライバ３００からの電力を受けて回転するモータを有するとともに、モータの回転軸に結合されたエンコーダからの検出信号をフィードバック信号としてセーフティドライバ３００へ出力する。
【００３９】
サポート装置５００は、一例として、汎用的なコンピュータアーキテクチャに準じて構成されるコンピュータからなる。サポート装置５００は、制御システム１に含まれる各デバイスに対する設定および各デバイスで実行されるプログラムの作成が統合的に可能な開発環境を提供する。一例として、サポート装置５００は、標準コントローラ１００を制御するための標準制御プログラムや、セーフティコントローラ２００を制御するためのセーフティプログラムの開発環境を提供する。設計された標準制御プログラムおよびセーフティプログラムは、フィールドネットワーク２を介して標準コントローラ１００およびセーフティコントローラ２００にそれぞれ転送される。
【００４０】
本明細書において、「デバイス」は、フィールドネットワーク２などの任意のネットワークを介して、他の装置とデータ通信可能な装置の総称である。本実施の形態に係る制御システム１において、「デバイス」は、標準コントローラ１００、セーフティコントローラ２００およびセーフティドライバ３００を包含する。
【００４１】
本明細書において、「標準制御」および「セーフティ制御」の用語を対比的に用いる。「標準制御」は、予め定められた要求仕様に沿って、制御対象を制御するための処理の総称である。一方、「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理を総称する。「セーフティ制御」は、ＩＥＣ  ６１５０８などに規定されたセーフティ機能を実現するための要件を満たすように設計される。
【００４２】
本明細書においては、ドライブ装置に特有のセーフティ機能を「モーションセーフティ機能」と総称する。典型的には、「機能」は、上述の非特許文献１に規定されるドライブ装置に関連するセーフティ機能を包含する。例えば、制御軸の位置や速度を監視して安全を確保するための制御を含む。
【００４３】
本明細書において、「状態値」および「パラメータ」の用語を対比的に用いる。「状態値」は、標準コントローラ１００の状態、セーフティコントローラ２００の状態、セーフティドライバ３００の状態、およびサーボモータ４００の状態の少なくとも１つを表わすデータを意味する。異なる言い方をすれば、「状態値」は、標準コントローラ１００の状態、セーフティコントローラ２００の状態、セーフティドライバ３００の状態、またはサーボモータ４００の状態に連動して値が変化するデータを意味する。典型的には、「状態値」は、標準制御プログラムやセーフティプログラムで用いられる変数に相当し、一つの値を表わすデータ、配列として表されるデータ、構造体として表されるデータなどを含み得る。これに対して、「パラメータ」は、標準コントローラ１００の状態、セーフティコントローラ２００の状態、セーフティドライバ３００の状態、およびサーボモータ４００の状態に連動しないデータのことを意味する。「パラメータ」との概念は、定数や関数（例えば、一次関数や二次関数など）などを含み得る。
【００４４】
本明細書において、「プロセスデータ」は、標準制御またはセーフティ制御の少なくともいずれかで用いられるデータの総称である。具体的には、「プロセスデータ」は、制御対象から取得される入力情報、制御対象へ出力される出力情報、各デバイスでの制御演算に使用される内部情報などを包含する。
【００４５】
入力情報は、光電センサなどにより検出されるＯＮ／ＯＦＦ信号（デジタル入力）、温度センサなどにより検出される物理信号（アナログ入力）、ならびに、パルスエンコーダなどが発生するパルス信号（パルス入力）などを包含する。出力情報は、リレーなどを駆動するためのＯＮ／ＯＦＦ（デジタル出力）、サーボモータの回転速度などを指示する速度指令（アナログ出力）、ならびに、ステッピングモータの移動量などを指示する変位指令（パルス出力）などを包含する。内部情報は、任意のプロセスデータを入力とする制御演算などによって決定される状態情報などを含む。
【００４６】
基本的には、「プロセスデータ」の値は、制御周期または通信周期毎に更新される。ここで、更新とは、最新の値を反映することを意味し、更新の前後において値が変化しない場合も含み得る。
【００４７】
図２は、本実施の形態に係る制御システム１が有する機能を示す模式図である。図２を参照して、標準コントローラ１００は、機能モジュールとして、データトレースモジュール１５４を含む。セーフティドライバ３００は、ハードウェア構成として、制御装置３１１と、ストレージ３２０とを含む。
【００４８】
セーフティドライバ３００の制御装置３１１には、標準制御を実現するための指令（第１の指令）が標準コントローラ１００から与えられる。制御装置３１１は、標準コントローラ１００からの指令に従ってセーフティドライバ３００を制御する。
【００４９】
また、セーフティドライバ３００の制御装置３１１には、セーフティ機能の動作に係る指令（第２の指令）がセーフティコントローラ２００から与えられる。制御装置３１１は、当該第２の指令を受けた場合に、サーボモータ４００の状態値とセーフティパラメータＳＰとに基づいて、サーボモータ４００の駆動を停止する。セーフティパラメータＳＰは、セーフティドライバ３００が提供するモーションセーフティ機能の各々に対応する予め定められた１または複数の設定値である。例えば、セーフティパラメータＳＰとしては、速度範囲、加速度範囲、停止時間などが含まれ得る。制御装置３１１は、セーフティパラメータＳＰとサーボモータ４００の状態値とを比較し、当該比較結果が異常を示す場合、サーボモータ４００を停止する。
【００５０】
データトレースモジュール１５４は、標準コントローラ１００からの指令（第１の指令）に応じて変化する、サーボモータ４００の動作に関する各種の状態値を監視する。当該状態値は、例えば、サーボモータ４００の回転速度、サーボモータ４００の回転加速度、サーボモータ４００の駆動対象の現在位置、サーボモータ４００の駆動対象の速度、サーボモータ４００の駆動対象の加速度などを含む。
【００５１】
サポート装置５００は、データトレースモジュール１５４によるトレース結果ＤＴと、セーフティパラメータＳＰとを取得し、トレース結果ＤＴに重ねてセーフティパラメータＳＰを表示する。図２には、セーフティパラメータＳＰの一例として、サーボモータ４００の速度の上限値を示すセーフティパラメータＳＰ１と、サーボモータ４００の速度の下限値を示すセーフティパラメータＳＰ２とが示されている。また、図２には、トレース結果ＤＴの一例として、サーボモータ４００の速度の推移が示されている。ユーザは、トレース結果ＤＴおよびセーフティパラメータＳＰを同一のグラフ上で確認することで、サーボモータ４００の動作がセーフティ機能の仕様を満たしているか否かを容易に判断することができる。
【００５２】
なお、図２の例では、データトレースモジュール１５４が標準コントローラ１００に実装されているが、データトレースモジュール１５４は、必ずしも標準コントローラ１００に実装される必要はない。データトレースモジュール１５４は、後述するように、標準コントローラ１００に接続される他のユニット（例えば、トレースユニット）に実装されてもよい。あるいは、データトレースモジュール１５４は、セーフティコントローラ２００や外部機器であるサーバに実装されてもよい。
【００５３】
＜Ｂ．制御システム１に含まれるデバイスの構成例＞
次に制御システム１に含まれるデバイスの構成例について説明する。
【００５４】
（ｂ１：標準コントローラ１００）
図３は、本実施の形態に係る制御システム１を構成する標準コントローラ１００のハードウェア構成例を示す模式図である。図３を参照して、標準コントローラ１００は、プロセッサ１０２と、メインメモリ１０４と、ストレージ１１０と、上位ネットワークコントローラ１０６と、フィールドネットワークコントローラ１０８と、ＵＳＢ（Universal Serial Bus）コントローラ１２０と、メモリカードインターフェイス１１２と、ローカルバスコントローラ１１６とを含む。これらのコンポーネントは、プロセッサバス１１８を介して接続されている。
【００５５】
プロセッサ１０２は、主として、標準制御に係る制御演算を実行する演算処理部に相当し、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphics Processing Unit）などで構成される。具体的には、プロセッサ１０２は、ストレージ１１０に格納されたプログラム（一例として、システムプログラム１１０２および標準制御プログラム１１０４）を読出して、メインメモリ１０４に展開して実行することで、制御対象に応じた制御演算、および、後述するような各種処理を実現する。
【００５６】
メインメモリ１０４は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。ストレージ１１０は、例えば、ＳＳＤ（Solid State Drive）やＨＤＤ（Hard Disk Drive）などの不揮発性記憶装置などで構成される。
【００５７】
ストレージ１１０には、基本的な機能を実現するためのシステムプログラム１１０２に加えて、制御対象に応じて作成された標準制御プログラム１１０４が格納される。さらに、ストレージ１１０には、後述するような変数などを設定するための設定情報１１０６が格納される。
【００５８】
上位ネットワークコントローラ１０６は、上位ネットワークを介して、任意の報処理装置との間でデータを遣り取りする。
【００５９】
フィールドネットワークコントローラ１０８は、フィールドネットワーク２を介して、セーフティコントローラ２００およびセーフティドライバ３００を含む任意のデバイスとの間でデータを遣り取りする。図３に示す制御システム１においては、標準コントローラ１００のフィールドネットワークコントローラ１０８は、フィールドネットワーク２の通信マスタとして機能する。
【００６０】
ＵＳＢコントローラ１２０は、ＵＳＢ接続を介して、サポート装置５００などとの間でデータを遣り取りする。
【００６１】
メモリカードインターフェイス１１２は、着脱可能な記録媒体の一例であるメモリカード１１４を受付ける。メモリカードインターフェイス１１２は、メモリカード１１４に対してデータを書込み、メモリカード１１４から各種データ（ログやトレースデータなど）を読出すことが可能になっている。
【００６２】
ローカルバスコントローラ１１６は、ローカルバスを介して、標準コントローラ１００に接続される任意のユニットとの間でデータを遣り取りする。
【００６３】
図３には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。あるいは、標準コントローラ１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。さらに、標準コントローラ１００に表示装置やサポート装置などの機能を統合した構成を採用してもよい。
【００６４】
（ｂ２：セーフティコントローラ２００）
図４は、本実施の形態に係る制御システム１を構成するセーフティコントローラ２００のハードウェア構成例を示す模式図である。図４を参照して、セーフティコントローラ２００は、プロセッサ２０２と、メインメモリ２０４と、ストレージ２１０と、フィールドネットワークコントローラ２０８と、ＵＳＢコントローラ２２０と、セーフティローカルバスコントローラ２１６とを含む。これらのコンポーネントは、プロセッサバス２１８を介して接続されている。
【００６５】
プロセッサ２０２は、主として、セーフティ制御に係る制御演算を実行する演算処理部に相当し、ＣＰＵやＧＰＵなどで構成される。具体的には、プロセッサ２０２は、ストレージ２１０に格納されたプログラム（一例として、システムプログラム２１０２およびセーフティプログラム２１０４）を読出して、メインメモリ２０４に展開して実行することで、必要なセーフティ機能を提供するための制御演算、および、後述するような各種処理を実現する。
【００６６】
メインメモリ２０４は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ２１０は、例えば、ＳＳＤやＨＤＤなどの不揮発性記憶装置などで構成される。
【００６７】
ストレージ２１０には、基本的な機能を実現するためのシステムプログラム２１０２に加えて、要求されるセーフティ機能に応じた作成されたセーフティプログラム２１０４が格納される。さらに、ストレージ２１０には、後述するような変数などを設定するための設定情報２１０６が格納される。
【００６８】
フィールドネットワークコントローラ２０８は、フィールドネットワーク２を介して、標準コントローラ１００およびセーフティドライバ３００を含む任意のデバイスとの間でデータを遣り取りする。図３に示す制御システム１においては、セーフティコントローラ２００のフィールドネットワークコントローラ２０８は、フィールドネットワーク２の通信スレーブとして機能する。
【００６９】
ＵＳＢコントローラ２２０は、ＵＳＢ接続を介して、サポート装置５００などの情報処理装置との間でデータを遣り取りする。
【００７０】
セーフティローカルバスコントローラ２１６は、セーフティローカルバスを介して、セーフティコントローラ２００に接続される任意のセーフティユニットとの間でデータを遣り取りする。図４には、セーフティユニットの一例として、セーフティＩＯユニット２３０を示す。
【００７１】
セーフティＩＯユニット２３０は、任意のセーフティデバイス２４０との間で入出力信号を遣り取りする。より具体的には、セーフティＩＯユニット２３０は、セーフティセンサやセーフティスイッチなどのセーフティデバイス２４０からの入力信号を受付ける。あるいは、セーフティＩＯユニット２３０は、セーフティリレーなどのセーフティデバイス２４０へ指令を出力する。
【００７２】
図４には、プロセッサ２０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、セーフティコントローラ２００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。
【００７３】
（ｂ３：セーフティドライバ３００およびサーボモータ４００）
図５は、本実施の形態に係る制御システム１を構成するセーフティドライバ３００およびサーボモータ４００のハードウェア構成例を示す模式図である。図５を参照して、セーフティドライバ３００は、フィールドネットワークコントローラ３０２と、制御ユニット３１０と、ドライブ回路３３０と、フィードバック受信回路３３２とを含む。
【００７４】
フィールドネットワークコントローラ３０２は、フィールドネットワーク２を介して、標準コントローラ１００およびセーフティコントローラ２００を含む任意のデバイスとの間でデータを遣り取りする。図５に示す制御システム１においては、セーフティドライバ３００のフィールドネットワークコントローラ３０２は、フィールドネットワーク２の通信スレーブとして機能する。
【００７５】
制御ユニット３１０は、セーフティドライバ３００を動作させるために必要な演算処理を実行する。一例として、制御ユニット３１０は、セーフティドライバ３００を制御する制御装置３１１と、メインメモリ３１６と、ストレージ３２０とを含む。制御装置３１１は、１つ以上のプロセッサで構成される。例えば、制御装置３１１は、２つのプロセッサ３１２，３１４で構成される。
【００７６】
プロセッサ３１２は、サーボモータ４００を駆動するための制御演算を主として実行する演算処理部に相当する。プロセッサ３１４は、サーボモータ４００に係るセーフティ機能を提供するための制御演算を主として実行する演算処理部に相当する。プロセッサ３１２，３１４は、いずれもＣＰＵなどで構成される。
【００７７】
メインメモリ３１６は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ３２０は、例えば、ＳＳＤやＨＤＤなどの不揮発性記憶装置などで構成される。
【００７８】
ストレージ３２０には、サーボ制御３５０を実現するためのサーボ制御プログラム３２０２と、モーションセーフティ機能３６０を実現するためのモーションセーフティプログラム３２０４と、他のデバイスに公開される変数などを設定するための設定情報３２０６と、セーフティ機能の種別に関連付けられた複数のセーフティパラメータＳＰとが格納される。
【００７９】
図５には、２つのプロセッサ３１２，３１４がそれぞれ異なる目的の制御演算を実行することで信頼性を高める構成を例示するが、これに限らず、要求されるセーフティ機能を実現できればどのような構成を採用してもよい。例えば、単一のプロセッサに複数のコアが含まれるような場合には、プロセッサ３１２，３１４にそれぞれ対応する制御演算を実行するようにしてもよい。また、図５には、プロセッサ３１２，３１４がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００８０】
ドライブ回路３３０は、コンバータ回路およびインバータ回路などを含み、制御ユニット３１０からの指令に従って、指定された電圧・電流・位相の電力を生成して、サーボモータ４００へ供給する。
【００８１】
フィードバック受信回路３３２は、サーボモータ４００からのフィードバック信号を受信して、その受信結果を制御ユニット３１０へ出力する。
【００８２】
サーボモータ４００は、典型的には、三相交流モータ４０２および三相交流モータ４０２の回転軸に取付けられたエンコーダ４０４を含む。
【００８３】
三相交流モータ４０２は、セーフティドライバ３００から供給される電力を受けて回転力を発生するアクチュエータである。図５には、一例として、三相交流モータを例示するが、これに限らず、直流モータであってもよいし、単相交流モータあるいは多相交流モータであってもよい。さらに、リニアサーボのような直線に沿って駆動力を発生するアクチュエータを採用してもよい。
【００８４】
エンコーダ４０４は、三相交流モータ４０２の回転数に応じたフィードバック信号（典型的には、回転数に応じた数のパルス信号）を出力する。
【００８５】
（ｂ４：サポート装置５００）
図６は、本実施の形態に係る制御システム１を構成するサポート装置５００のハードウェア構成例を示す模式図である。サポート装置５００は、一例として、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコン）を用いて実現される。
【００８６】
図６を参照して、サポート装置５００は、プロセッサ５０２と、メインメモリ５０４と、入力部５０６と、出力部５０８と、ストレージ５１０と、光学ドライブ５１２と、ＵＳＢコントローラ５２０とを含む。これらのコンポーネントは、プロセッサバス５１８を介して接続されている。
【００８７】
プロセッサ５０２は、ＣＰＵやＧＰＵなどで構成され、ストレージ５１０に格納されたプログラム（一例として、ＯＳ５１０２およびサポートプログラム５１０４）を読出して、メインメモリ５０４に展開して実行することで、後述するような各種処理を実現する。
【００８８】
メインメモリ５０４は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ５１０は、例えば、ＨＤＤやＳＳＤなどの不揮発性記憶装置などで構成される。
【００８９】
ストレージ５１０には、基本的な機能を実現するためのＯＳ５１０２に加えて、サポート装置５００としての機能を提供するためのサポートプログラム５１０４が格納される。すなわち、サポートプログラム５１０４は、制御システム１に接続されるコンピュータにより実行されることで、本実施の形態に係るサポート装置５００を実現する。
【００９０】
さらに、ストレージ５１０には、サポートプログラム５１０４が実行されることで提供される開発環境においてユーザにより作成されるプロジェクトデータ５１０６が格納される。
【００９１】
本実施の形態において、サポート装置５００は、制御システム１に含まれる各デバイスに対する設定および各デバイスで実行されるプログラムの作成が統合的に可能な開発環境を提供する。プロジェクトデータ５１０６は、このような統合的な開発環境によって生成されるデータを含む。典型的には、プロジェクトデータ５１０６は、標準制御ソースプログラム５１０８と、標準コントローラ設定情報５１１０と、セーフティソースプログラム５１１２と、セーフティコントローラ設定情報５１１４と、セーフティドライバ設定情報５１１６と、収集候補情報５１１８と、軸情報５１２０と、収集対象のデータ群５１２１と、単位変換表５１２２を含む。
【００９２】
標準制御ソースプログラム５１０８は、オブジェクトコードに変換された上で、標準コントローラ１００へ送信され、標準制御プログラム１１０４（図３参照）として格納される。同様に、標準コントローラ設定情報５１１０、軸情報５１２０、収集対象のデータ群５１２１、および単位変換表５１２２についても標準コントローラ１００へ送信され、設定情報１１０６（図３参照）として格納される。
【００９３】
セーフティソースプログラム５１１２は、オブジェクトコードに変換された上で、セーフティコントローラ２００へ送信され、セーフティプログラム２１０４（図４参照）として格納される。同様に、セーフティコントローラ設定情報５１１４についてもセーフティコントローラ２００へ送信され、設定情報２１０６（図４参照）として格納される。
【００９４】
セーフティドライバ設定情報５１１６は、セーフティドライバ３００へ送信され、設定情報３２０６（図５参照）として格納される。
【００９５】
入力部５０６は、キーボードやマウスなどで構成され、ユーザ操作を受付ける。出力部５０８は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ５０２からの処理結果などを出力する。当該ディスプレイは、サポート装置５００と一体的に構成されてもよいし、外付けでサポート装置５００に接続されてもよい。
【００９６】
ＵＳＢコントローラ５２０は、ＵＳＢ接続を介して、標準コントローラ１００などとの間のデータを遣り取りする。
【００９７】
サポート装置５００は、光学ドライブ５１２を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体５１４（例えば、ＤＶＤ（Digital Versatile Disc）などの光学記録媒体）から、その中に格納されたプログラムが読取られてストレージ５１０などにインストールされる。
【００９８】
サポート装置５００で実行されるサポートプログラム５１０４などは、コンピュータ読取可能な記録媒体５１４を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置５００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【００９９】
図６には、プロセッサ５０２がプログラムを実行することで、サポート装置５００として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【０１００】
なお、制御システム１が稼動中において、サポート装置５００は、標準コントローラ１００から取り外されていてもよい。
【０１０１】
＜Ｃ．制御システム１の機能分担＞
次に、制御システム１における機能分担の一例について説明する。図７は、本実施の形態に係る制御システム１の機能分担の一例を示す模式図である。
【０１０２】
図７を参照して、標準コントローラ１００が実行する標準制御１５０に関して、セーフティドライバ３００はサーボ制御３５０を実行する。標準制御１５０は、制御対象に予め設定されたユーザプログラムに従って、サーボモータ４００を駆動するための指令を周期的に算出する処理を含む。また、サーボ制御３５０は、標準制御１５０により周期的に算出される指令に従ってサーボモータ４００を駆動するための制御、および、サーボモータ４００の動作状態を示す状態値を取得して出力する処理を含む。サーボ制御３５０は、セーフティドライバ３００のプロセッサ３１２（図５参照）が担当する。
【０１０３】
一方、セーフティコントローラ２００が提供するセーフティ機能２５０に対応して、セーフティドライバ３００はモーションセーフティ機能３６０を提供する。モーションセーフティ機能３６０は、セーフティドライバ３００のプロセッサ３１４（図５参照）が担当する。
【０１０４】
セーフティ機能２５０は、標準コントローラ１００が実行する標準制御１５０が保持する状態値、セーフティデバイス２４０からの信号によって示される状態値、および、セーフティドライバ３００が保持する状態値などに基づいて、予め定められた条件が成立すると、予め指定されているセーフティ機能を有効化する。
【０１０５】
予め指定されているセーフティ機能を有効化する処理は、例えば、セーフティドライバ３００に対するセーフティ指令の出力、あるいは、セーフティデバイス２４０に対してセーフティ指令の出力（例えば、特定の装置への電力供給に係るセーフティリレーを遮断する）などを含む。
【０１０６】
セーフティドライバ３００は、セーフティコントローラ２００からのセーフティ指令に応答して、指定されたモーションセーフティ機能３６０を提供する。指定されたモーションセーフティ機能３６０の種類に応じて、サーボ制御３５０によるサーボモータ４００の制御に介入して、サーボモータ４００への電力供給を遮断する処理、あるいは、サーボ制御３５０によるサーボモータ４００の制御の状態値が予め定められた制限範囲内に収まっているか否かを監視する処理などが実行される。
【０１０７】
図８は、本実施の形態に係る制御システム１のセーフティドライバ３００によるセーフティ機能に係る処理手順の一例を示すシーケンス図である。図８を参照して、標準コントローラ１００の標準制御１５０により周期的に指令が算出されて、セーフティドライバ３００（サーボ制御３５０）に出力される（シーケンスＳＱ２）。セーフティドライバ３００のサーボ制御３５０は、標準制御１５０からの指令に従って、サーボモータ４００を駆動する（シーケンスＳＱ４）。
【０１０８】
あるタイミングにおいて、セーフティデバイス２４０（例えば、セーフティセンサ）からのセーフティイベントが発生すると（シーケンスＳＱ６）、セーフティコントローラ２００は、セーフティドライバ３００（モーションセーフティ機能３６０）にセーフティ指令を出力する（シーケンスＳＱ８）。このセーフティ指令に応答して、セーフティドライバ３００のモーションセーフティ機能３６０は、指定されたセーフティ機能を有効化する（シーケンスＳＱ１０）。
【０１０９】
セーフティ機能の有効化に応答して、標準コントローラ１００の標準制御１５０からは、当該有効化されたセーフティ機能に応じた指令が算出および出力されるようになる（シーケンスＳＱ１２）。一方、セーフティドライバ３００（モーションセーフティ機能３６０）は、サーボモータ４００の動作状態が予め定められた制限範囲内に収まっているか否かを監視する。サーボモータ４００の動作状態が予め定められた制限範囲内に収まっていないと判断されると、あるいは、予め定められた停止時間が到来すると、セーフティドライバ３００（モーションセーフティ機能３６０）は、サーボモータ４００への電力供給を遮断する（シーケンスＳＱ１４）。
【０１１０】
このように、セーフティドライバ３００は、標準コントローラ１００（標準制御１５０）からの指令に従ってサーボモータ４００を駆動できるとともに、セーフティ機能を有効化するための指令に応じて、セーフティコントローラ２００（セーフティ機能２５０）に対するモーションセーフティ機能を実現することができる。
【０１１１】
＜Ｄ．制御システム１のモーションセーフティ機能＞
次に、制御システム１が提供するモーションセーフティ機能の一例について説明する。
【０１１２】
図９は、本実施の形態に係る制御システム１が提供するモーションセーフティ機能の一例を示す図である。図９（Ａ）には、ＳＴＯ（Safe Torque Off）に対応するサーボモータ４００の挙動の一例を示し、図９（Ｂ）には、ＳＳ１（Safe Stop 1）に対応するサーボモータ４００の挙動の一例を示す。
【０１１３】
図９（Ａ）を参照して、サーボモータ４００がある回転速度で運転している状態において、時刻ｔ１でセーフティ指令（ＳＴＯ）が与えられると、セーフティドライバ３００は、サーボモータ４００への電力供給を遮断して、サーボモータ４００で発生するトルクをゼロにする。この結果、サーボモータ４００は惰性で回転した後に停止する。なお、サーボモータ４００にブレーキが装着されている場合には、サーボモータ４００は即座に停止することもできる。
【０１１４】
図９（Ｂ）を参照して、サーボモータ４００がある回転速度で運転している状態において、時刻ｔ１でセーフティ指令（ＳＳ１）が与えられると、セーフティドライバ３００は、予め定められた加速度で回転速度を低減する。このとき、セーフティドライバ３００は、サーボモータ４００からの電力回収（すなわち、回生）などを実行してもよい。そして、時刻ｔ２においてサーボモータ４００の回転速度がゼロになると、セーフティドライバ３００は、サーボモータ４００への電力供給を遮断して、サーボモータ４００で発生するトルクをゼロにする。時刻ｔ２以降においては、図９（Ａ）に示すＳＴＯと同様の状態になる。
【０１１５】
図９（Ａ）に示されるＳＴＯおよび図９（Ｂ）に示されるＳＳ１のうち、サーボモータ４００と機械的に連結されている設備の特性などに応じて、より安全に停止できるセーフティ機能が適宜選択される。
【０１１６】
上述し非特許文献１は、図９（Ａ）および図９（Ｂ）に示すモーションセーフティ機能だけではなく、複数のモーションセーフティ機能を規定する。各モーションセーフティ機能を実現するためには、サーボモータ４００の挙動を規定するための設定が必要となる。
【０１１７】
図１０は、本実施の形態に係る制御システム１のセーフティドライバ３００に格納されるモーションセーフティ機能を実現するためのパラメータセット３９０の一例を示す図である。図１０を参照して、パラメータセット３９０は、セーフティドライバ３００が提供するモーションセーフティ機能の各々に対応する１または複数の設定値（セーフティパラメータ）を含む。
【０１１８】
例えば、モーションセーフティ機能に対応する設定値としては、速度範囲、加速度範囲、停止時間などが含まれ得る。
【０１１９】
典型的には、ユーザがサポート装置５００を操作してセーフティドライバ３００におけるモーショセーフティ機能における挙動を決定し、その決定された挙動に対応するパラメータセット３９０がセーフティドライバ３００へ転送される。セーフティドライバ３００は、サポート装置５００からのパラメータセット３９０を予め格納している。
【０１２０】
＜Ｅ．制御システム１のデータ通信＞
次に、制御システム１におけるデータ通信の一例について説明する。
【０１２１】
図１１は、本実施の形態に係る制御システム１における通信フレームの伝送形態を説明するための図である。図１１を参照して、制御システム１のフィールドネットワーク２においては、プロセスデータ通信が行われており、標準コントローラ１００を通信マスタとして、通信フレーム６００がサイクリック（例えば、数〜１０数ｍｓｅｃ）にデバイス間を一巡する。通信フレーム６００が伝送する周期をプロセスデータ通信周期とも称する。
【０１２２】
本実施の形態においては、このような通信フレーム６００をサイクリックに伝送するフィールドネットワーク２のプロトコルの一例として、ＥｔｈｅｒＣＡＴ（登録商標）を採用する。
【０１２３】
通信フレーム６００には、デバイス毎にデータ領域が割り当てられている。各デバイスは、周期的に伝送される通信フレーム６００を受信すると、当該受信した通信フレーム６００内の自デバイスに割り当てられたデータ領域に予め設定されたデータの現在値を書込む。そして、現在値の書込み後の通信フレーム６００を次段のデバイスに送出する。各デバイスにより書込まれたデータの現在値は他のデバイスから参照可能になっている。
【０１２４】
各デバイスが通信フレーム６００に予め設定されたデータの現在値を書込むことで、フィールドネットワーク２を一巡して通信マスタ（標準コントローラ１００）に戻る通信フレーム６００には、各デバイスにより収集された最新の値が含まれることになる。
【０１２５】
本実施の形態においては、このようなプロセスデータ通信を利用して、セーフティコントローラ２００とセーフティドライバ３００の各々との間で論理コネクション４が形成される（図１１参照）。この論理コネクション４は、セーフティ機能を実現するためのデータの遣り取りに用いられる。
【０１２６】
上述したように、フィールドネットワーク２のプロトコルとしてＥｔｈｅｒＣＡＴを採用する場合には、ＦＳｏＥ（FailSafe over EtherCAT）と称されるプロトコルを用いて論理コネクション４を形成できる。
【０１２７】
より具体的には、論理コネクション４を形成するために遣り取りされるコマンドを格納するための専用のデータ領域が通信フレーム６００に割り当てられる。当該専用のデータ領域を用いて、デバイス間でコマンドを遣り取りすることで、論理コネクション４を形成する。
【０１２８】
図１２は、本実施の形態に係る制御システム１におけるデータ伝送を説明するための図である。図１２を参照して、通信フレーム６００には、プロセスデータ通信に用いられるデータ領域６１０に加えて、論理コネクション４に用いられるデータ領域６２０が規定されている。
【０１２９】
データ領域６１０は、標準コントローラ１００に割り当てられたデータ領域６１１と、セーフティドライバ３００に割り当てられたデータ領域６１２，６１３，６１４と、セーフティコントローラ２００に割り当てられたデータ領域６１５とを含む。
【０１３０】
データ領域６１２，６１３，６１４，６１５は、各デバイスから他のデバイスへデータを公開するためのＩＮデータ領域６１２１，６１３１，６１４１，６１５１と、各デバイスでの指令を受付けるためのＯＵＴデータ領域６１２２，６１３２，６１４２，６１５２とを含む。
【０１３１】
ＩＮデータ領域６１２１，６１３１，６１４１，６１５１は、各デバイスが管理するプロセスデータのうち、他のデバイスへ公開するデータが書込まれるデータ領域である。各デバイスが通信フレーム６００内の自デバイスに割り当てられたＩＮデータ領域に必要なデータを書込むことで、他のデバイスは当該書込まれたデータを参照できるようになる。通常、標準コントローラ１００は、通信周期毎に、各デバイスにより書込まれたデータを参照して標準制御に係る制御演算を実行することで、各デバイスに対する指令を算出する。
【０１３２】
ＯＵＴデータ領域６１２２，６１３２，６１４２，６１５２には、各デバイスに与えられる指令が書込まれる。各デバイスは、通信フレーム６００内の自デバイスに割り当てられたＯＵＴデータ領域に格納されているデータを参照することで、制御対象への出力信号を生成し、あるいは、内部の制御状態を更新する。基本的には、各デバイスのＯＵＴデータ領域には、標準コントローラ１００によってデータが書込まれる。
【０１３３】
プロセスデータ通信に用いられるデータ領域６１０に対する、各デバイスのデータの書込みおよび読出し動作は、各デバイスに割り当てられるデータ領域に応じて、予め設定されている。このようなデータの書込みおよび読出しの設定操作は、サポート装置５００上でユーザによって行われる。そして、サポート装置５００から各デバイスに設定情報が送信される。
【０１３４】
一方、論理コネクション４に用いられるデータ領域６２０は、セーフティドライバ３００に割り当てられたデータ領域６２１，６２２，６２３と、セーフティコントローラ２００に割り当てられたデータ領域６２４とを含む。各デバイスは、データ領域６２１，６２２，６２３，６２４に対して、論理コネクション４に係る通信フレーム（以下、「セーフティ通信フレーム６３０」とも称す。）の書込みおよび読出しを行う。通信マスタである標準コントローラ１００は、データ領域６２１，６２２，６２３，６２４の間で、格納されているセーフティ通信フレーム６３０を入れ替える。このような通信マスタによる折返し処理によって、セーフティ通信フレーム６３０は、一種のピアツーピアの通信が可能となる。
【０１３５】
図１２には、一例として、セーフティコントローラ２００から１番目のセーフティドライバ３００へセーフティ通信フレーム６３０を送信する場合の処理を示す。図１２に示すようなセーフティ通信フレーム６３０は、セーフティコントローラ２００が特定のセーフティドライバ３００に対して特定のモーションセーフティ機能を有効化する場合などに送信される。
【０１３６】
まず、セーフティコントローラ２００は、送信先のセーフティドライバ３００へ送信すべきセーフティ通信フレーム６３０を生成して、通信フレーム６００のデータ領域６２４に書込む。その後、セーフティ通信フレーム６３０が書込まれた通信フレーム６００が通信マスタである標準コントローラ１００へ到着すると、標準コントローラ１００は、データ領域６２４に格納されているセーフティ通信フレーム６３０をデータ領域６２１に複製する。データ領域６２１にセーフティ通信フレーム６３０が複製された通信フレーム６００が送信先のセーフティドライバ３００に到着すると、送信先のセーフティドライバ３００は、データ領域６２１を参照して、セーフティ通信フレーム６３０を受信する。
【０１３７】
また、セーフティドライバ３００からセーフティコントローラ２００へのセーフティ通信フレーム６３０は、上述とは反対の通信経路で送信される。
【０１３８】
このように、本実施の形態に係る制御システム１においては、通信フレーム６００内のデータ領域６２０を用いて、論理コネクション４が形成される。
【０１３９】
＜Ｆ．標準制御およびセーフティ制御の実装例＞
上述したように、本実施の形態に係る制御システム１においては、プロセスデータ通信および論理コネクション４によるセーフティ通信が可能になっている。次に、それぞれの通信を利用した標準制御およびセーフティ制御の実装例について説明する。
【０１４０】
図１３は、本実施の形態に係る制御システム１における標準制御およびセーフティ制御の実装例を示す模式図である。説明の便宜上、図１３には、標準コントローラ１００およびセーフティコントローラ２００に加えて、１つのセーフティドライバ３００からなる制御システム１の例を示す。
【０１４１】
図１３を参照して、標準コントローラ１００は、主たる機能構成として、プロセスデータ通信レイヤ１７０およびＩＯ管理モジュール１７２を有している。セーフティコントローラ２００は、主たる機能構成として、プロセスデータ通信レイヤ２７０と、ＩＯ管理モジュール２７２と、論理コネクションレイヤ２７６と、セーフティ機能状態管理エンジン２７８とを含む。セーフティドライバ３００は、主たる機能構成として、プロセスデータ通信レイヤ３７０と、論理コネクションレイヤ３７６と、モーションセーフティ機能状態管理エンジン３７８と、サーボ制御実行エンジン３５２と、モーションセーフティ機能実行エンジン３６２とを含む。
【０１４２】
プロセスデータ通信レイヤ１７０、プロセスデータ通信レイヤ２７０およびプロセスデータ通信レイヤ３７０は、フィールドネットワーク２上の通信フレーム６００の転送を担当する。プロセスデータ通信レイヤ１７０、プロセスデータ通信レイヤ２７０およびプロセスデータ通信レイヤ３７０の各々は、到着した通信フレーム６００に含まれるデータに基づいて、各デバイスのプロセスデータ１７４，２７４，３７４を更新する。また、プロセスデータ通信レイヤ１７０、プロセスデータ通信レイヤ２７０およびプロセスデータ通信レイヤ３７０の各々は、予め指定されたプロセスデータを予め割り当てられているデータ領域に書込んだ上で、通信フレーム６００を再生成して次段のデバイスに送出する。プロセスデータ通信によりプロセスデータの少なくとも一部は共有されることになる。
【０１４３】
セーフティコントローラ２００の論理コネクションレイヤ２７６およびセーフティドライバ３００の論理コネクションレイヤ３７６は、セーフティ通信フレーム６３０の遣り取りを担当する。すなわち、論理コネクションレイヤ２７６および論理コネクションレイヤ３７６は、論理コネクションを形成するためのプロトコル（本実施の形態においては、ＦＳｏＥ）に従って、通信フレーム６００に含まれるセーフティ通信フレーム６３０を用いて、コマンドおよびデータを遣り取りする。
【０１４４】
標準コントローラ１００において、ＩＯ管理モジュール１７２は、制御対象との間で信号を遣り取りすることで、プロセスデータ１７４を更新する。標準コントローラ１００において実行される標準制御プログラム１１０４は、プロセスデータ１７４を参照して制御演算を実行するとともに、制御演算の実行結果でプロセスデータ１７４を更新する。
【０１４５】
セーフティコントローラ２００において、ＩＯ管理モジュール２７２は、セーフティデバイス２４０との間で信号を遣り取りすることで、プロセスデータ２７４を更新する。図１３においては、プロセスデータ２７４とまとめて表現しているが、プロセスデータ通信により更新されるプロセスデータ（標準制御用）と、セーフティデバイス２４０との遣り取りにより更新されるプロセスデータ（セーフティ制御用）とを異なるレベルで管理するようにしてもよい。
【０１４６】
セーフティコントローラ２００において実行されるセーフティプログラム２１０４は、プロセスデータ２７４およびセーフティ機能状態管理エンジン２７８を参照して制御演算を実行するとともに、制御演算の実行結果に基づいて、プロセスデータ２７４を更新し、あるいは、セーフティ機能状態管理エンジン２７８に対して内部的な指令を出力する。
【０１４７】
セーフティ機能状態管理エンジン２７８は、セーフティプログラム２１０４による制御演算の実行結果に応じて、特定のセーフティドライバ３００に対して特定のモーションセーフティ機能を有効化するための指令を生成する。論理コネクションレイヤ２７６は、セーフティ機能状態管理エンジン２７８からの指令に応答して、対象のセーフティドライバ３００の論理コネクションレイヤ３７６との間で、セーフティ通信フレーム６３０を用いて必要なコマンドおよび情報を遣り取りする。
【０１４８】
セーフティドライバ３００において、サーボ制御実行エンジン３５２は、プロセスデータ３７４およびフィードバック受信回路３３２を介して取得されるフィードバック信号の情報を参照してサーボ制御に係る制御演算を実行する。サーボ制御実行エンジン３５２は、制御演算の実行結果に基づいて、プロセスデータ３７４を更新するとともに、ドライブ回路３３０に内部的な指令を出力する。ドライブ回路３３０は、サーボ制御実行エンジン３５２からの指令に従って、サーボモータ４００を駆動する。
【０１４９】
モーションセーフティ機能状態管理エンジン３７８は、セーフティコントローラ２００からのセーフティ指令に従ってモーションセーフティ機能の状態を管理する状態管理部に相当する。モーションセーフティ機能状態管理エンジン３７８は、セーフティコントローラ２００からの指令に応答して、モーションセーフティ機能実行エンジン３６２に対して内部的な指令を出力する。
【０１５０】
モーションセーフティ機能実行エンジン３６２は、指定されたモーションセーフティ機能を実行する。
【０１５１】
論理コネクションレイヤ３７６は、モーションセーフティ機能状態管理エンジン３７８からの指令に応答して、セーフティコントローラ２００の論理コネクションレイヤ２７６との間で、セーフティ通信フレーム６３０を用いて必要なコマンドおよび情報を遣り取りする。
【０１５２】
＜Ｇ．データトレース機能＞
図１４〜図１９を参照して、制御システム１におけるデータトレース機能について説明する。図１４は、データトレース機能を実現するための制御フローの一例を示す図である。以下、図１４に示される各ステップの処理について順に説明する。
【０１５３】
（Ｇ１．ステップＳ１０）
まず、図１４〜図１７を参照して、ステップＳ１０の処理について説明する。
【０１５４】
図１４に示されるステップＳ１０において、ユーザは、データトレースに関する各種設定をサポート装置５００に対して行う。一例として、ユーザは、トレース条件やトレース対象のデータ群をサポート装置５００に対して設定する。
【０１５５】
図１５は、データトレースに関する各種の設定を受け付けるデータトレース画面５３０を示す図である。図１５に示されるように、データトレース画面５３０は、トレース条件の設定領域５３１と、トレース対象のデータ群の設定領域５３３と、トレース結果の表示領域５３５とを含む。トレース条件の設定領域５３１は、設定領域５３１Ａ〜５３１Ｅを含む。
【０１５６】
設定領域５３１Ａは、トレースタイプの選択を受け付ける。選択可能なトレースタイプの種類は、例えば、シングルトレースと、連続トレースとを含む。シングルトレースが選択された場合、設定領域５３１Ｅに設定されたトリガ条件が成立する前後のデータが記録される。連続トレースが選択された場合、設定領域５３１Ｅに設定されるトリガ条件に関わらずトレース対象のデータが記録され続ける。
【０１５７】
設定領域５３１Ｂは、データトレース時におけるサンプリング間隔の設定を受け付ける。サンプリング間隔は、例えば、タスクの指定や時間の指定によって設定される。タスクが指定された場合には、指定されたタスクの実行周期がサンプリング周期として設定される。時間が指定された場合には、指定された時間がサンプリング周期として設定される。
【０１５８】
設定領域５３１Ｃは、１データ当たりにおけるサンプリング数の上限値の設定を受け付ける。より具体的には、標準コントローラ１００は、トレース対象のデータを所定の記憶領域に順次書き込み、サンプリング数が設定された上限値に達した場合には、最も古いデータから順に新しいデータで上書きする。
【０１５９】
設定領域５３１Ｄは、設定領域５３１Ｅに設定されるトリガ条件の成立前後におけるデータの保存比率の設定を受け受ける。より具体的には、標準コントローラ１００は、トリガ条件が成立してから、設定された保存比率に相当するサンプリング数のデータを収集するまではデータトレースを継続する。
【０１６０】
設定領域５３１Ｅは、トリガ条件の設定を受け付ける。設定領域５３１Ｅは、例えば、トリガ対象の変数名の指定や、当該変数に対する条件式（例えば、不等式や等式など）などを受け付ける。指定された変数が指定された条件式を満たした場合に、トリガ条件が満たされる。一例として、セーフティ機能に関する変数（例えば、「ＳＳ１」など）の立ち上がりなどがトリガ条件として設定される。トリガ条件が満たされると、サンプリング終了条件の監視が開始される。サンプリング終了条件は、設定領域５３１Ｃに設定されたサンプリング数と、設定領域５３１Ｄに設定された保存比率とに依存する。一例として、サンプリング数が１００００回に設定されており、保存比率が５０％に設定されている場合、標準コントローラ１００は、トリガ条件の成立後において、５０００回（＝１００００回×０．５）のサンプリングを行い、その後、データトレースを停止する。これにより、トリガ条件の成立前における５０００回のサンプリングデータと、トリガ条件の成立後における５０００回のサンプリングデータとがトレース結果として残ることになる。
【０１６１】
設定領域５３３は、トレース対象のデータ群の設定を受け付ける。設定領域５３３は、トレース対象のデータ群を表示するデータリスト５３３Ａと、追加ボタンＢ１と、削除ボタンＢ２と、一括追加ボタンＢ３とを含む。
【０１６２】
ユーザが追加ボタンＢ１を押下すると、データリスト５３３Ａにデータの設定欄が一行追加される。ユーザは、追加された設定欄にトレース対象のデータの変数名などを入力することができる。
【０１６３】
ユーザは、データリスト５３３Ａ内のいずれかの設定欄を選択した状態で削除ボタンＢ２を押下すると、データリスト５３３Ａから選択した設定欄を削除することができる。
【０１６４】
ユーザが一括追加ボタンＢ３を押下すると、サポート装置５００は、データトレース画面５３０とは別ウィンドウで、トレース対象のデータ群の一括設定画面を開く。図１６は、トレース対象のデータ群の一括設定画面５４０を示す図である。
【０１６５】
一括設定画面５４０は、トレース対象の軸の選択を受け付ける設定領域５４２（モータ受付部）と、セーフティ機能の選択を受け付ける設定領域５４３（機能受付部）と、トレース対象のデータ群を表示する表示領域５４５とを含む。ここでいう「軸」とは、サーボモータ４００による駆動対象の軸のことを言う。サーボモータ４００および軸は、１対１に対応するので、トレース対象の軸を選択することは、トレース対象のサーボモータ４００を選択することと同意である。サポート装置５００は、設定領域５４２において選択された軸と、設定領域５４３において選択されたセーフティ機能とに基づいて、トレース対象のデータ群の候補を決定する。
【０１６６】
以下、トレース対象のデータ群の決定方法について説明する。図１７は、トレース対象のデータ群の決定方法を概略的に示す概念図である。
【０１６７】
図１７に示されるように、サポート装置５００は、ハードウェア構成として、プロセッサ５０２と、ストレージ５１０とを含む。プロセッサ５０２は、機能構成として、決定モジュール５５０を含む。ストレージ５１０は、収集候補情報５１１８と、軸情報５１２０とを含む。
【０１６８】
収集候補情報５１１８において、制御システム１内における収集候補のデータ群がセーフティドライバ３００のセーフティ機能の種別に対応付けている。収集候補情報５１１８に規定されるセーフティ機能は、例えば、ＳＴＯ（Safe Torque Off）、ＳＳ１（Safe Stop 1）、ＳＳ２（Safe Stop 2）、ＳＯＳ（Safe Operating Stop）、ＳＢＣ（Safe Brake Control）などを含む。
【０１６９】
収集候補情報５１１８に規定される収集候補の各データ群は、セーフティ機能の実行時に参照される変数を含む。一例として、セーフティ機能「ＳＳ１」に関連付けられる変数は、セーフティ機能「ＳＳ１」が有効化されたか否かを示すユーザ変数「SS1」、サーボモータ４００の速度を示すシステム変数「Act.Vel」、サーボモータ４００が通電状態か否かを示すシステム変数「Drvstatus.ServoOn」などを含む。
【０１７０】
また、収集候補情報５１１８に規定される収集候補の各データ群は、セーフティ機能の実行時に参照されるセーフティパラメータを含む。一例として、セーフティ機能「ＳＳ１」に関連付けられるセーフティパラメータは、「N_Zero_SS1」と、「-N_Zero_SS1」と、「T_L_SS1」と、「T_SS1」とを含む。
【０１７１】
「N_Zero_SS1」は、サーボモータ４００の状態値の上限値を示す。「-N_Zero_SS1」は、サーボモータ４００の状態値の下限値を示す。
【０１７２】
「T_L_SS1」は、セーフティドライバ３００の状態値が上限値「N_Zero_SS1」と等しくなってからサーボモータ４００の駆動を強制的に停止するまでの停止猶予時間を示す。すなわち、セーフティ機能「ＳＳ１」の仕様を満たすためには、サーボモータ４００の状態値が、停止猶予時間「T_L_SS1」内に、上限値「N_Zero_SS1」および下限値「-N_Zero_SS1」の範囲内に収められる必要がある。
【０１７３】
「T_SS1」は、セーフティ機能「ＳＳ１」の実行が開始されてからサーボモータ４００の駆動を強制的に停止するまでの停止猶予時間を示す。すなわち、セーフティ機能「ＳＳ１」の仕様を満たすためには、サーボモータ４００の状態値は、停止猶予時間「T_SS1」内に、上限値「N_Zero_SS1」および下限値「-N_Zero_SS1」の範囲内に収められる必要がある。
【０１７４】
軸情報５１２０は、サポート装置５００に対して設定された軸設定を含む。より具体的には、ユーザは、標準制御プログラム１１０４の設計時または設計前に、サーボモータ４００毎に駆動対象の軸を予め設定する。この設定に基づいて、サポート装置５００は、設定された軸に対応する構造体をシステム変数として生成する。ユーザは、生成された構造体を用いて各軸に対するプログラムを記述することができる。軸情報５１２０は、軸設定時に生成された各システム変数（構造体）を規定する。
【０１７５】
決定モジュール５５０は、設定領域５４２（図１６参照）において選択された軸と、設定領域５４３（図１６参照）において選択されたセーフティ機能との組み合わせに基づいて、収集対象のデータ群を決定する。図１７に示されるように、軸選択で「MC_Axis000」が選択され、機能選択で「SS1」が選択されたとする。この場合、決定モジュール５５０は、収集候補情報５１１８を参照して、セーフティ機能「SS1」に対応する収集候補のデータ群を特定する。決定モジュール５５０は、特定したデータ群の内、ユーザ変数「SS1」およびセーフティパラメータ「N_Zero_SS1」，「-N_Zero_SS1」，「T_SS1」については、そのまま収集対象のデータ群５１２１に含める。一方で、決定モジュール５５０は、特定したデータ群の内、軸に関するシステム変数「Act.Vel」，「Drvstatus.ServoOn」については構造体変数名「MC_Axis000」を付加し、システム変数「MC_Axis000.Act.Vel」，「MC_Axis000.Drvstatus.ServoOn」として収集対象のデータ群５１２１に含める。
【０１７６】
再び図１６を参照して、決定モジュール５５０によって決定された収集対象のデータ群５１２１は、一括設定画面５４０の表示領域５４５に表示される。ユーザがＯＫボタンＢ１０を押下すると、表示領域５４５に表示されている収集対象のデータ群５１２１がデータトレース画面５３０の設定領域５３３に反映される。また、チェックボックス５４４がチェックされている状態でＯＫボタンＢ１０が押下された場合、トレース条件がデータトレース画面５３０の設定領域５３１に自動で反映される。より具体的には、異なるトレース条件がセーフティ機能の種別に予め対応付けられており、選択されたセーフティ機能の種別に対応するトレース条件がデータトレース画面５３０の設定領域５３１に反映される。例えば、セーフティ機能「ＳＳ１」には、保存比率「１００％」と、変数「SS1」の「立ち下がり」とがトレース条件として対応付けられているとする。この場合において、セーフティ機能「ＳＳ１」が選択されたときには、設定領域５３１Ｄには「１００％」が自動で設定され、設定領域５３１Ｅには変数「SS1」の「立下り」が自動で設定される。
【０１７７】
一方で、ユーザがキャンセルボタンＢ１１を押下すると、一括設定画面５４０に設定された内容はデータトレース画面５３０の設定領域５３３に反映されずに、一括設定画面５４０が閉じられる。
【０１７８】
（Ｇ２．ステップＳ２０）
再び図１４を参照して、ステップＳ２０の処理について説明する。ステップＳ２０の処理は、ステップＳ２２，Ｓ２４，Ｓ２６の処理を含む。
【０１７９】
ステップＳ２２において、ユーザは、サポート装置５００に対してトレース実行操作を行ったとする。
【０１８０】
ステップＳ２４において、サポート装置５００は、上述のデータトレース画面５３０の設定領域５３３に設定されている収集対象のデータ群の中から変数を抽出する。
【０１８１】
ステップＳ２６において、サポート装置５００は、抽出した変数を収集対象としてトレース実行命令を標準コントローラ１００に出力する。当該トレース実行命令は、上述のデータトレース画面５３０の設定領域５３１に設定された情報を含む。
【０１８２】
（Ｇ３．ステップＳ３０）
引き続き図１４を参照して、ステップＳ３０の処理について説明する。
【０１８３】
ステップＳ３０において、標準コントローラ１００は、サポート装置５００からトレース実行命令を受け付けたことに基づいて、トレース対象のデータ群のサンプリング処理を開始する。
【０１８４】
図１８は、トレース対象のデータ群のサンプリング処理を説明するための図である。図１８を参照して、標準コントローラ１００のプロセッサ１０２は、機能モジュールとして、制御モジュール１５２と、データトレースモジュール１５４とを含む。
【０１８５】
制御モジュール１５２は、標準制御プログラム１１０４に従って予め定められた周期毎にセーフティドライバ３００に指令を出力する。セーフティドライバ３００は、標準コントローラ１００からの指令に従ってサーボモータ４００を制御する。
【０１８６】
データトレースモジュール１５４は、上述のデータトレース画面５３０の設定領域５３１に設定されたトレース条件１１０８に従って、トレース対象のデータ群をサンプリングする。より具体的には、データトレースモジュール１５４は、予め定められた周期毎にセーフティドライバ３００からトレース対象のデータ群を受信し、当該データ群を時刻情報に関連付けた上で記憶領域１０４Ａに順次書き込む。記憶領域１０４Ａは、標準コントローラ１００内の揮発性の記憶領域である。記憶領域１０４Ａは、例えば、メインメモリ１０４（図３参照）内で確保されている。トレース対象のデータ群のサンプリング数が設定されている上限値に達した場合には、データトレースモジュール１５４は、記憶領域１０４Ａに格納されているデータ群の内、最も古いデータ群から順に新しいデータ群で上書きする。
【０１８７】
（Ｇ４．ステップＳ４０）
再び図１４を参照して、ステップＳ４０の処理について説明する。ステップＳ４０の処理は、ステップＳ４２，Ｓ４４，Ｓ４６，Ｓ４８の処理を含む。
【０１８８】
ステップＳ４２において、ユーザは、上述のデータトレース画面５３０の設定領域５３１Ｅに設定したトリガ条件を成立させるための入力（以下、「トリガ入力」ともいう。）をセーフティデバイス２４０に対して行う。なお、ユーザは、トリガ条件を成立させるための入力をセーフティデバイス２４０に対して行う代わりに、サポート装置５００に対して行ってもよい。この場合、ユーザは、サポート装置５００上でトリガ条件に係る変数の値を変更することでトリガ条件を成立させることができる。
【０１８９】
ステップＳ４４において、セーフティデバイス２４０は、ステップＳ４２でのトリガ入力をセーフティＩＯユニット２３０に出力する。
【０１９０】
ステップＳ４６において、セーフティＩＯユニット２３０は、ステップＳ４４で受け付けたトリガ入力に応じた信号をセーフティコントローラ２００に出力する。
【０１９１】
ステップＳ４８において、セーフティコントローラ２００は、ステップＳ４６で受け付けた信号に応じたセーフティ機能を有効化する。当該有効化は、セーフティ機能のＯＮ／ＯＦＦを示す変数を書き換えることで実現される。ステップＳ４８の例では、変数「ＳＳ１」をＯＮからＯＦＦに設定することで、セーフティ機能「ＳＳ１」が有効化されている。
【０１９２】
（Ｇ５．ステップＳ５０）
引き続き図１４を参照して、ステップＳ５０の処理について説明する。
【０１９３】
上述のデータトレース画面５３０の設定領域５３１Ｅにおいて変数「ＳＳ１」の立ち下がりがトリガ条件として設定されているとする。この場合、ステップＳ５０において、標準コントローラ１００は、変数「ＳＳ１」がＯＮからＯＦＦに変化したことに基づいて、トレース対象のデータ群の保存処理を実行する。
【０１９４】
図１８を参照して、ステップＳ５０における保存処理について説明する。データトレースモジュール１５４は、上述のデータトレース画面５３０の設定領域５３１Ｃにおいて設定されたサンプリング数の上限値と、設定領域５３１Ｄにおいて設定された保存比率とを取得し、サンプリング数の保存比率に相当する残りサンプリング数を算出する。一例として、保存比率が５０％に設定されており、サンプリング数の上限値が１００００回に設定されている場合には、標準コントローラ１００は、残りサンプリング数を５０００回（＝１００００回×０．５）とする。データトレースモジュール１５４は、トリガ条件が成立してから、残りサンプリング数の５０００回のサンプリングを継続し、その後、サンプリングを停止する。これにより、トリガ条件の成立前における５０００回のサンプリングデータと、トリガ条件の成立後における５０００回のサンプリングデータとが記憶領域１０４Ａに残ることになる。
【０１９５】
その後、データトレースモジュール１５４は、揮発性の記憶領域１０４Ａに保存されているデータ群を不揮発性の記憶領域１１４Ａにコピーする。これにより、トレース結果ＤＴが不揮発性の記憶領域１１４Ａに保存される。記憶領域１１４Ａは、標準コントローラ１００のストレージ１１０内に確保されていてもよいし、外部のメモリカード１１４内に確保されていてもよい。
【０１９６】
（Ｇ６．ステップＳ６０）
再び図１４を参照して、ステップＳ６０の処理について説明する。ステップＳ６０の処理は、ステップＳ６１〜Ｓ６７の処理を含む。
【０１９７】
ステップＳ６１において、サポート装置５００は、トレース結果ＤＴの取得要求を標準コントローラ１００に送信する。
【０１９８】
ステップＳ６２において、標準コントローラ１００は、当該取得要求を受信したことに基づいて、トレース結果ＤＴをサポート装置５００に送信する。
【０１９９】
ステップＳ６３において、サポート装置５００は、取得したトレース結果ＤＴに基づいて、表示対象の時間範囲を決定する。一例として、サポート装置５００は、トレース結果ＤＴに含まれる時間情報の内、最も古い時間情報から最新の時間情報までを表示対象の時間範囲として決定する。
【０２００】
ステップＳ６４において、サポート装置５００は、上述のデータトレース画面５３０の設定領域５３３に設定されている収集対象のデータ群の中からセーフティパラメータＳＰを抽出する。
【０２０１】
ステップＳ６５において、サポート装置５００は、抽出したセーフティパラメータの取得要求を標準コントローラ１００を介してセーフティドライバ３００に出力する。
【０２０２】
ステップＳ６６において、セーフティドライバ３００は、受信した取得要求に対応するセーフティパラメータＳＰをサポート装置５００に送信する。
【０２０３】
なお、取得対象のセーフティパラメータがサポート装置５００内（例えば、上述のプロジェクトデータ５１０６内）にキャッシュされている場合には、ステップＳ６５，Ｓ６６の通信は、必ずしも行われる必要はない。この場合、サポート装置５００は、ステップＳ６５，Ｓ６６でセーフティドライバ３００と通信を行わずに、キャッシュされているセーフティパラメータを利用する。
【０２０４】
ステップＳ６７において、サポート装置５００は、ステップＳ６２で受信したトレース結果ＤＴと、ステップＳ６６で受信したセーフティパラメータＳＰとをデータトレースの実行結果として表示する。このように、サポート装置５００は、収集対象のデータ群に含まれるセーフティパラメータＳＰをセーフティドライバ３００から取得し、収集対象のデータ群に含まれる状態値のトレース結果ＤＴを標準コントローラ１００のデータトレースモジュール１５４から取得する。
【０２０５】
図１９を参照して、ステップＳ６７における表示処理について詳細に説明する。図１９は、図１５に示されるデータトレース画面５３０の表示領域５３５を表した図である。
【０２０６】
図１９に示されるように、サポート装置５００は、横軸が時間を示し、縦軸がセーフティドライバ３００の状態値の大きさを示すグラフ上にトレース結果ＤＴを表わすとともに、当該グラフ上にセーフティパラメータＳＰを表わす。なお、図１９の例では、グラフの横軸に時間が示され、グラフの縦軸に状態値の大きさが示されているが、グラフの横軸に状態値の大きさが示され、グラフの縦軸に時間が示されてもよい。
【０２０７】
図１９の例では、トレース結果ＤＴとして、変数「SS1」の推移と、変数「MC_Axis000.Act.Vel」の推移と、変数「MC_Axis000.Drvstatus.ServoOn」の推移とが示されている。また、セーフティパラメータＳＰとして、「N_Zero_SS1」と、「-N_Zero_SS1」と、「T_SS1」と、「T_L_SS1」とが示されている。
【０２０８】
セーフティパラメータ「N_Zero_SS1」は、セーフティドライバ３００の状態値の上限値を示す。セーフティパラメータ「-N_Zero_SS1」は、セーフティドライバ３００の状態値の下限値を示す。上限値および下限値が表示されることで、ユーザは、セーフティドライバ３００の状態値が上限値および下限値の範囲内に収まっているか否かを容易に判断することができる。
【０２０９】
典型的には、サポート装置５００は、グラフの縦軸に直交するように上限値「N_Zero_SS1」および下限値「-N_Zero_SS1」を表わす。これにより、ユーザは、セーフティドライバ３００の状態値が上限値「N_Zero_SS1」および下限値「-N_Zero_SS1」の範囲内に収まっているか否かをさらに容易に判断することが可能になる。なお、上限値「N_Zero_SS1」および下限値「-N_Zero_SS1」の表示態様は、図１９の例に限定されない。例えば、上限値「N_Zero_SS1」および下限値「-N_Zero_SS1」は、単に数値で示されてもよい。
【０２１０】
また、サポート装置５００は、トレース結果ＤＴに重ねて縦軸ＡＸ１〜ＡＸ４を表示する。縦軸ＡＸ１は、上述のデータトレース画面５３０の設定領域５３１Ｅに設定されたトリガ条件が成立したタイミングを示す。当該タイミングは、セーフティ機能「ＳＳ１」の実行指令が発せられたタイミングと同意である。縦軸ＡＸ１は、時間軸に直交するように表示される。
【０２１１】
縦軸ＡＸ２は、セーフティドライバ３００の状態値が上限値「N_Zero_SS1」と等しくなったタイミングを示す。縦軸ＡＸ２は、時間軸に直交するように表示される。
【０２１２】
縦軸ＡＸ３は、縦軸ＡＸ２が示すタイミングから、セーフティパラメータ「T_L_SS1」が示す停止猶予時間が経過したタイミングに相当する。縦軸ＡＸ３は、時間軸に直交するように表示される。
【０２１３】
縦軸ＡＸ４は、縦軸ＡＸ１が示すタイミングから、セーフティパラメータ「T_SS1」が示す停止猶予時間が経過したタイミングに相当する。縦軸ＡＸ４は、時間軸に直交するように表示される。
【０２１４】
典型的には、トレース結果ＤＴおよびセーフティパラメータＳＰは、単位を合わせた上で表示される。より具体的には、サポート装置５００は、トレース結果ＤＴが示す状態値の単位と、セーフティパラメータＳＰが示す単位とを統一するための単位変換表５１２２（図６参照）を予め保持している。サポート装置５００は、単位変換表５１２２に基づいて、トレース結果ＤＴが示す状態値の単位と、セーフティパラメータＳＰが示す単位とを揃える。単位が揃えられることで、ユーザは、トレース結果ＤＴが示す状態値と、セーフティパラメータＳＰとを容易に比較することが可能になる。
【０２１５】
なお、単位変換は、必ずしもサポート装置５００によって実行される必要はなく、標準コントローラ１００またはセーフティドライバ３００によって実行されてもよい。ある局面において、単位変換表５１２２は、標準コントローラ１００に格納される。この場合、標準コントローラ１００は、単位変換表５１２２に基づいて、ステップＳ２６で指定された単位に合うようにトレース結果ＤＴを単位変換し、ステップＳ６２で単位変換後のトレース結果ＤＴをサポート装置５００に送信する。他の局面において、単位変換表５１２２は、セーフティドライバ３００に格納される。この場合、セーフティドライバ３００は、単位変換表５１２２に基づいて、ステップＳ６５で指定された単位に合うようにセーフティパラメータＳＰを単位変換し、ステップＳ６６で単位変換後のセーフティパラメータＳＰをサポート装置５００に送信する。
【０２１６】
＜Ｈ．変形例＞
図２０〜図２２を参照して、図１に示される制御システム１の変形例について説明する。
【０２１７】
図２０は、変形例１に従う制御システム１Ａを示す図である。図１に示される制御システム１においては、標準コントローラ１００およびセーフティコントローラ２００は、フィールドネットワーク２で接続されていた。これに対して、変形例１に従う制御システム１Ａにおいては、標準コントローラ１００およびセーフティコントローラ２００が内部バスを介して接続される。制御システム１Ａのその他の点については制御システム１と同じであるので、それらの説明については繰り返さない。
【０２１８】
図２１は、変形例２に従う制御システム１Ｂを示す図である。図１に示される制御システム１においては、トレース対象のデータ群を格納するための記憶領域１０４Ａ，１１４Ａと、データトレースモジュール１５４とが標準コントローラ１００内に設けられていた。これに対して、変形例２に従う制御システム１Ｂにおいては、記憶領域１０４Ａ，１１４Ａとデータトレースモジュール１５４とが専用のトレースユニット１８０内に設けられる。トレースユニット１８０は、標準コントローラ１００、セーフティコントローラ２００、および安全Ｉ／Ｏ２３０と内部バスを介して接続される。制御システム１Ｂのその他の点については制御システム１と同じであるので、それらの説明については繰り返さない。
【０２１９】
図２２は、変形例３に従う制御システム１Ｃを示す図である。図１に示される制御システム１においては、サポート装置５００がネットワーク３を介して標準コントローラ１００に接続されていた。これに対して、変形例３に従う制御システム１Ｃにおいては、サポート装置５００は、ネットワーク３Ａを介してトレースユニット１８０に直接的に接続される。制御システム１Ｃのその他の点については制御システム１と同じであるので、それらの説明については繰り返さない。
【０２２０】
＜Ｉ．付記＞
以上のように、本実施形態は以下のような開示を含む。
【０２２１】
［構成１］
第１のコントローラ（１００）と、
前記第１のコントローラ（１００）からの第１の指令に従ってモータ（４００）を駆動するドライブ装置（３００）と、
前記ドライブ装置（３００）に対してセーフティ機能の動作に係る第２の指令を送信する第２のコントローラ（２００）と、
前記第１の指令に応じて変化する、前記モータ（４００）の動作状態を示す状態値をトレースするためのデータトレースモジュール（１５４）とを備え、
前記ドライブ装置（３００）は、
前記セーフティ機能に関するセーフティパラメータを格納するためのストレージ（３２０）と、
前記第２のコントローラ（２００）から前記第２の指令を受けた場合に、前記状態値と前記セーフティパラメータとに基づいて、前記モータ（４００）の駆動を停止するための制御装置（３１１）とを含み、
前記データトレースモジュール（１５４）による前記状態値のトレース結果と、前記セーフティパラメータとを取得し、当該トレース結果に重ねて当該セーフティパラメータを表示するためのサポート装置（５００）とをさらに備える、制御システム。
【０２２２】
［構成２］
前記サポート装置（５００）は、前記トレース結果に示される前記状態値の単位と前記セーフティパラメータの単位とを合わせた上で、前記トレース結果に重ねて前記セーフティパラメータを表示する、構成１に記載の制御システム。
【０２２３】
［構成３］
前記サポート装置（５００）は、横軸および縦軸の一方の軸が時間を示し、横軸および縦軸の他方の軸が前記状態値の大きさを示すグラフ上に前記トレース結果を表わすとともに、前記グラフ上に前記セーフティパラメータを表わす、構成１または２に記載の制御システム。
【０２２４】
［構成４］
前記セーフティパラメータは、前記状態値の下限値と前記状態値の上限値とを含み、
前記サポート装置（５００）は、前記下限値と前記上限値とを前記グラフ上に表わす、構成３に記載の制御システム。
【０２２５】
［構成５］
前記サポート装置（５００）は、前記下限値および前記上限値をそれぞれ前記縦軸に直交させて前記グラフに表わす、構成４に記載の制御システム。
【０２２６】
［構成６］
前記セーフティパラメータは、前記ドライブ装置（３００）が前記第２の指令を受けてから前記モータ（４００）の駆動を停止するまでの停止猶予時間を含み、
前記サポート装置（５００）は、前記第２の指令を受けた第１のタイミングと、当該第１のタイミングから前記停止猶予時間が経過した第２のタイミングとを前記グラフ上に表わす、構成３〜５のいずれか１項に記載の制御システム。
【０２２７】
［構成７］
前記サポート装置（５００）は、前記第１のタイミングおよび前記第２のタイミングをそれぞれ前記横軸に直交させて前記グラフに表わす、構成６に記載の制御システム。
【０２２８】
［構成８］
制御システム（１）に接続されるサポート装置（５００）であって、
前記制御システム（１）は、
第１のコントローラ（１００）と、
前記第１のコントローラ（１００）からの第１の指令に従ってモータ（４００）を駆動するドライブ装置（３００）と、
前記ドライブ装置（３００）に対してセーフティ機能の動作に係る第２の指令を送信する第２のコントローラ（２００）と、
前記第１の指令に応じて変化する、前記モータ（４００）の動作状態を示す状態値をトレースするためのデータトレースモジュール（１５４）とを備え、
前記ドライブ装置（３００）は、
前記セーフティ機能に関するセーフティパラメータを格納するためのストレージ（３２０）と、
前記第２のコントローラ（２００）から前記第２の指令を受けた場合に、前記状態値と前記セーフティパラメータとに基づいて、前記モータ（４００）の駆動を停止するための制御装置（３１１）とを含み、
前記サポート装置（５００）は、
前記データトレースモジュール（１５４）から前記状態値のトレース結果を取得する手段（Ｓ６２）と、
前記ドライブ装置（３００）から前記セーフティパラメータを取得する手段（Ｓ６６）と、
前記取得したトレース結果に重ねて前記取得したセーフティパラメータを表示する手段（Ｓ６７）とを備える、サポート装置。
【０２２９】
［構成９］
制御システム（１）に接続されるコンピュータで実行されるサポートプログラムであって、
前記制御システム（１）は、
第１のコントローラ（１００）と、
前記第１のコントローラ（１００）からの第１の指令に従ってモータ（４００）を駆動するドライブ装置（３００）と、
前記ドライブ装置（３００）に対してセーフティ機能の動作に係る第２の指令を送信する第２のコントローラ（２００）と、
前記第１の指令に応じて変化する、前記モータ（４００）の動作状態を示す状態値をトレースするためのデータトレースモジュール（１５４）とを備え、
前記ドライブ装置（３００）は、
前記セーフティ機能に関するセーフティパラメータを格納するためのストレージ（３２０）と、
前記第２のコントローラ（２００）から前記第２の指令を受けた場合に、前記状態値と前記セーフティパラメータとに基づいて、前記モータ（４００）の駆動を停止するための制御装置（３１１）とを含み、
前記サポートプログラムは、前記コンピュータに、
前記データトレースモジュール（１５４）から前記状態値のトレース結果を取得するステップ（Ｓ６２）と、
前記ドライブ装置（３００）から前記セーフティパラメータを取得するステップ（Ｓ６５）と、
前記取得したトレース結果に重ねて前記取得したセーフティパラメータを表示するステップ（Ｓ６７）とを実行させる、サポートプログラム。
【０２３０】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２３１】
１，１Ａ，１Ｂ，１Ｃ  制御システム、２  フィールドネットワーク、３，３Ａ  ネットワーク、４  論理コネクション、１００  標準コントローラ、１０２，２０２，３１２，３１４，５０２  プロセッサ、１０４，２０４，３１６，５０４  メインメモリ、１０４Ａ，１１４Ａ  記憶領域、１０６  上位ネットワークコントローラ、１０８，２０８，３０２  フィールドネットワークコントローラ、１１０，２１０，３２０，５１０  ストレージ、１１２  メモリカードインターフェイス、１１４  メモリカード、１１６  ローカルバスコントローラ、１１８，２１８，５１８  プロセッサバス、１２０，２２０，５２０  ＵＳＢコントローラ、１５０  標準制御、１５２  制御モジュール、１５４  データトレースモジュール、１７０，２７０，３７０  プロセスデータ通信レイヤ、１７２，２７２  管理モジュール、１７４，２７４，３７４  プロセスデータ、１８０  トレースユニット、２００  セーフティコントローラ、２１６  セーフティローカルバスコントローラ、２３０  セーフティＩＯユニット、２４０  セーフティデバイス、２５０  セーフティ機能、２７６，３７６  論理コネクションレイヤ、２７８  セーフティ機能状態管理エンジン、３００  セーフティドライバ、３１０  制御ユニット、３１１  制御装置、３３０  ドライブ回路、３３２  フィードバック受信回路、３５０  サーボ制御、３５２  サーボ制御実行エンジン、３６０  モーションセーフティ機能、３６２  モーションセーフティ機能実行エンジン、３７８  モーションセーフティ機能状態管理エンジン、３９０  パラメータセット、４００  サーボモータ、４０２  三相交流モータ、４０４  エンコーダ、５００  サポート装置、５０６  入力部、５０８  出力部、５１２  光学ドライブ、５１４  記録媒体、５３０  データトレース画面、５３１，５３１Ａ，５３１Ｂ，５３１Ｃ，５３１Ｄ，５３１Ｅ，５３３，５４２，５４３  設定領域、５３３Ａ  データリスト、５３５，５４５  表示領域、５４０  一括設定画面、５４４  チェックボックス、５５０  決定モジュール、６００  通信フレーム、６１０，６１１，６１２，６１３，６１４，６１５，６２０，６２１，６２２，６２３，６２４，６１２１，６１２２，６１３１，６１３２，６１４１，６１４２，６１５１，６１５２  データ領域、６３０  セーフティ通信フレーム、１１０２，２１０２  システムプログラム、１１０４  標準制御プログラム、１１０６，２１０６，３２０６  設定情報、１１０８  トレース条件、２１０４  セーフティプログラム、３２０２  サーボ制御プログラム、３２０４  モーションセーフティプログラム、５１０４  サポートプログラム、５１０６  プロジェクトデータ、５１０８  標準制御ソースプログラム、５１１０  標準コントローラ設定情報、５１１２  セーフティソースプログラム、５１１４  セーフティコントローラ設定情報、５１１６  セーフティドライバ設定情報、５１１８  収集候補情報、５１２０  軸情報、５１２１  収集対象のデータ群、５１２２  単位変換表。
【図１】
2020052898.tif 000003
【図２】
2020052898.tif 000004
【図３】
2020052898.tif 000005
【図４】
2020052898.tif 000006
【図５】
2020052898.tif 000007
【図６】
2020052898.tif 000008
【図７】
2020052898.tif 000009
【図８】
2020052898.tif 000010
【図９】
2020052898.tif 000011
【図１０】
2020052898.tif 000012
【図１１】
2020052898.tif 000013
【図１２】
2020052898.tif 000014
【図１３】
2020052898.tif 000015
【図１４】
2020052898.tif 000016
【図１５】
2020052898.tif 000017
【図１６】
2020052898.tif 000018
【図１７】
2020052898.tif 000019
【図１８】
2020052898.tif 000020
【図１９】
2020052898.tif 000021
【図２０】
2020052898.tif 000022
【図２１】
2020052898.tif 000023
【図２２】
2020052898.tif 000024