(57)【要約】      （修正有）【課題】セーフティ機能の動作に関する情報に容易にアクセス可能な制御システムを提供する。【解決手段】制御システム１は、第１および第２のコントローラ１００、２００と、ドライブ装置３００とを含む。第２のコントローラは、第２のコントローラとドライブ装置との間にネットワーク２を利用して形成されるコネクションを介して、第２の指令を送信する。ドライブ装置は、第２の指令に従ってセーフティ機能の状態を管理する状態管理部３７８と、状態管理部が保持する情報のうち予め設定された情報を、ネットワークを介して公開するデータ公開部とを含む。【選択図】図２
2020057064.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 Operating Stop）が有効化された場合の、セーフティドライバ３００およびサーボモータ４００を制御するための命令（コード１１０５）を記述した部分を示す。
【０１９９】
図１９（Ａ）には、モーションセーフティ制御用オブジェクト３８２をそのまま参照する場合の標準制御プログラム１１０４の一例を示し、図１９（Ｂ）には、モーションセーフティ制御用オブジェクト３８２に対応付けられた変数を参照する場合の標準制御プログラム１１０４の一例を示す。
【０２００】
図１９（Ａ）に示す標準制御プログラム１１０４においては、モーションセーフティ制御用オブジェクト３８２の５ビット目を参照するための「Ｅ００３＿Ｍｉｒｒｏｒ＿Ｓａｆｅｔｙ＿ｓｔａｔｕｓｗｏｒｄ［３］」との参照命令５８２を用いたＩＦ文が記述されている。
【０２０１】
これに対して、図１９（Ｂ）に示す標準制御プログラム１１０４においては、モーションセーフティ制御用オブジェクト３８２の５ビット目の情報に割り当てられた「Ｅ００３＿ＳＯＳ＿ｃｏｍｍａｎｄ１＿ａｃｔｉｖｅ」との変数名５８４を用いたＩＦ文が記述されている。このように、図１９（Ｂ）に示すような変数名５８４を用いることで、当該変数目がいずれの情報を参照しているのかを一見して把握することができる。
【０２０２】
このように、サポート装置５００は、標準コントローラ１００で実行される標準制御プログラム１１０４を開発する環境を提供する。この標準制御プログラム１１０４を開発する環境において、上述したような特定した情報の意味が関連付けられた参照情報（典型的には、各変数）を用いて、標準制御プログラム１１０４を作成可能になっている。
【０２０３】
図２０は、本実施の形態に係る制御システム１を構成するサポート装置５００における設定処理手順の一例を示すフローチャートである。図２０に示す各ステップは、典型的には、サポート装置５００のプロセッサ５０２がサポートプログラム５１０４を実行することで実現される。
【０２０４】
図２０を参照して、サポート装置５００は、ユーザ操作に応答して、制御システム１に対するプログラム作成および各種設定を行うための開発画面をユーザに提供する（ステップＳ１００）。
【０２０５】
まず、サポート装置５００は、セーフティドライバ３００のモーションセーフティ機能に関する設定をユーザから受付ける（ステップＳ１０２）。併せて、サポート装置５００は、モーションセーフティ制御用オブジェクトに含まれる情報のうち公開する情報の選択をユーザから受付ける（ステップＳ１０４）。すなわち、ミラーオブジェクトに含ませるべき情報が選択される。サポート装置５００は、ユーザによる設定完了の操作を受けると、受付けた設定をセーフティドライバ設定情報５１１６（図６）として格納する。
【０２０６】
続いて、サポート装置５００は、ユーザ操作に応答して、標準コントローラ１００において利用可能な変数の設定をユーザから受付ける（ステップＳ１０６）。そして、サポート装置５００は、ユーザからセーフティドライバ３００から公開される情報を反映するとの指示を受けると、セーフティドライバ設定情報５１１６を参照して、セーフティドライバ３００からの公開変数群（ミラーオブジェクト）に対応するモーションセーフティ制御用オブジェクトの情報を特定する（ステップＳ１０８）。そして、サポート装置５００は、特定したモーションセーフティ制御用オブジェクトの情報に基づいて、セーフティドライバ３００からの公開変数の各々に対応する変数名を決定する（ステップＳ１１０）。
【０２０７】
具体的には、サポート装置５００は、セーフティドライバ３００のモーションセーフティ機能に関する設定を解析して、ミラーオブジェクトをビット単位に分解するとともに、各ビットの変数名を生成および決定する。
【０２０８】
最終的に、サポート装置５００は、決定した各変数名を対応するビットに割り当て、割り当てた結果を標準コントローラ設定情報５１１０（図６）として格納する（ステップＳ１１２）。以上の設定操作により、標準制御プログラムの作成時において、セーフティドライバ３００における割り当て設定を反映した名称が付与された変数を利用できる。
【０２０９】
＜I．サポート装置５００からの一括設定／一括無効化／一括有効化＞
上述の公開設定の手順においては、サポート装置５００でセーフティドライバ３００毎に公開すべきモーションセーフティ制御用オブジェクトの情報を選択および設定することになる。
【０２１０】
現実の運用を想定すると、制御システム１は複数のセーフティドライバ３００を含むことが多く、このような場合、セーフティドライバ３００毎に設定を行うことは操作が煩雑になる。
【０２１１】
また、例えば、セーフティドライバ３００に係るプログラムをデバッグする場合、セーフティドライバ３００のモーションセーフティ機能を無効化した状態で、標準制御に係る部分だけをデバッグしたい場合がある。このとき、セーフティドライバ３００からのモーションセーフティ制御用オブジェクトの情報（ミラーオブジェクト）の公開を無効化しておくことが好ましい。このような場合において、セーフティドライバ３００毎に公開設定を削除もしくは無効化することは操作が煩雑になる。
【０２１２】
図２１は、本実施の形態に係る制御システム１を構成するサポート装置５００における一括公開設定の処理を説明するための図である。図２１を参照して、複数のセーフティドライバ３００の各々に対して、ミラーオブジェクト設定テーブル５６０が用意されているとする。
【０２１３】
サポート装置５００は、共通設定テンプレート５９０を有している。共通設定テンプレート５９０は、ミラーオブジェクト設定テーブル５６０に対する割り当て設定などが規定されている。サポート装置５００において、ユーザが所定の操作を行うことで、ミラーオブジェクト設定テーブル５６０の各々に対して、共通設定テンプレート５９０の内容が反映される。
【０２１４】
このような操作によって、複数のミラーオブジェクト設定テーブル５６０に対して、同一の設定を反映することができる。
【０２１５】
あるいは、共通設定テンプレート５９０を用いなくとも、サポート装置５００において、ユーザが所定の操作を行うことで、ミラーオブジェクト設定テーブル５６０の各々に対して、予め設定された内容が反映されている状態と、何らの設定もなされていない状態とを一括して切り替えるようにしてもよい。すなわち、制御システム１が複数のセーフティドライバ３００を有している場合において、サポート装置５００は、ユーザ操作に応答して、すべてのセーフティドライバ３００のデータミラーエンジン３８０（データ公開部）に対して、フィールドネットワーク２を介した公開を一括して有効化または無効化するようにしてもよい。
【０２１６】
このような一括設定の機能、一括無効化の機能、および、一括有効化の機能の一部または全部をサポート装置５００に実装することで、上述したようなデバッグ時の操作を効率化できる。
【０２１７】
＜Ｊ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］
第１のコントローラ（１００）と、
前記第１のコントローラからの第１の指令に従ってモータを駆動するドライブ装置（３００）とを備え、前記ドライブ装置はモータ（４００）の駆動に関するセーフティ機能（３６０）を有しており、
前記ドライブ装置に対してセーフティ機能の動作に係る第２の指令を送信する第２のコントローラ（２００）と、
前記第１のコントローラ、前記ドライブ装置および前記第２のコントローラの間で、データを互いに共有するためのネットワーク（２）とを備え、
前記第２の指令は、前記第２のコントローラと前記ドライブ装置との間に前記ネットワークを利用して形成されるコネクション（４）を介して送信され、
前記ドライブ装置は、
前記第２の指令に従って前記セーフティ機能の状態を管理する状態管理部（３７８）と、
前記状態管理部が保持する情報のうち予め設定された情報を、前記ネットワークを介して公開するデータ公開部（３８０）とを含む、制御システム。
［構成２］
前記データ公開部により公開される情報の指定を受付けるとともに、当該指定された情報を特定する公開設定（３８４；５６０）を前記ドライブ装置へ転送するサポート装置（５００）をさらに備える、構成１に記載の制御システム。
［構成３］
前記サポート装置は、前記公開設定を参照して、前記状態管理部により管理される情報のうち公開対象の情報を特定するとともに、前記データ公開部により公開される情報を参照するための参照情報に当該特定した情報の意味を関連付ける、構成２に記載の制御システム。
［構成４］
前記サポート装置において、前記データ公開部により公開される情報を変数として参照可能になっており、
前記サポート装置は、前記変数の名前として前記特定した情報の意味を反映する、構成３に記載の制御システム。
［構成５］
前記サポート装置において、前記データ公開部により公開される情報を変数として参照可能になっており、
前記サポート装置は、前記変数に付与される付加情報として前記特定した情報の意味を反映する、構成３に記載の制御システム。
［構成６］
前記サポート装置は、前記データ公開部により公開される情報を参照するための参照情報に、当該データ公開部を含んでいるドライブ装置を特定する情報を反映する、構成３〜５のいずれか１項に記載の制御システム。
［構成７］
前記サポート装置は、前記第１のコントローラで実行される制御プログラムを開発する環境を提供し、
前記制御プログラムを開発する環境において、前記特定した情報の意味が関連付けられた参照情報を用いて、前記制御プログラムを作成可能になっている、構成３〜６のいずれか１項に記載の制御システム。
［構成８］
前記制御システムは、前記ドライブ装置を複数備えており、
前記サポート装置は、ユーザ操作に応答して、すべてのドライブ装置のデータ公開部に対して、前記ネットワークを介した公開を一括して有効化または無効化する、構成３〜７のいずれか１項に記載の制御システム。
［構成９］
制御システムに接続されるサポート装置（５００）であって、
前記制御システム（１）は、
第１のコントローラ（１００）と、
前記第１のコントローラからの第１の指令に従ってモータを駆動するドライブ装置（３００）とを備え、前記ドライブ装置はモータの駆動に関するセーフティ機能（３６０）を有しており、
前記ドライブ装置に対してセーフティ機能の動作に係る第２の指令を送信する第２のコントローラ（２００）と、
前記第１のコントローラ、前記ドライブ装置および前記第２のコントローラの間で、データを互いに共有するためのネットワーク（２）とを備え、
前記第２の指令は、前記第２のコントローラと前記ドライブ装置との間に前記ネットワークを利用して形成されるコネクション（４）を介して送信され、
前記ドライブ装置は、
前記第２の指令に従って前記セーフティ機能の状態を管理する状態管理部（３７８）と、
前記状態管理部が保持する情報のうち予め設定された情報を、前記ネットワークを介して公開するデータ公開部（３８０）とを含み、
前記サポート装置は、
前記データ公開部により公開される情報の指定を受付けるとともに、当該指定された情報を特定する公開設定を前記ドライブ装置へ転送する手段（Ｓ１０４）と、
前記公開設定を参照して、前記状態管理部により管理される情報のうち公開対象の情報を特定するとともに、前記データ公開部により公開される情報を参照するための参照情報に当該特定した情報の意味を関連付ける手段（Ｓ１０６〜Ｓ１１２）とを備える、サポート装置。
［構成１０］
制御システム（１）に接続されるコンピュータ（５００）で実行されるサポートプログラム（５１０４）であって、
前記制御システムは、
第１のコントローラ（１００）と、
前記第１のコントローラからの第１の指令に従ってモータ（４００）を駆動するドライブ装置（３００）とを備え、前記ドライブ装置はモータの駆動に関するセーフティ機能（３６０）を有しており、
前記ドライブ装置に対してセーフティ機能の動作に係る第２の指令を送信する第２のコントローラ（２００）と、
前記第１のコントローラ、前記ドライブ装置および前記第２のコントローラの間で、データを互いに共有するためのネットワーク（２）とを備え、
前記第２の指令は、前記第２のコントローラと前記ドライブ装置との間に前記ネットワークを利用して形成されるコネクション（４）を介して送信され、
前記ドライブ装置は、
前記第２の指令に従って前記セーフティ機能の状態を管理する状態管理部（３７８）と、
前記状態管理部が保持する情報のうち予め設定された情報を、前記ネットワークを介して公開するデータ公開部（３８０）とを含み、
前記サポートプログラムは、前記コンピュータに
前記データ公開部により公開される情報の指定を受付けるとともに、当該指定された情報を特定する公開設定を前記ドライブ装置へ転送するステップ（Ｓ１０４）と、
前記公開設定を参照して、前記状態管理部により管理される情報のうち公開対象の情報を特定するとともに、前記データ公開部により公開される情報を参照するための参照情報に当該特定した情報の意味を関連付けるステップ（Ｓ１０６〜Ｓ１１２）とを実行させる、サポートプログラム。
【０２１８】
＜Ｋ．利点＞
本実施の形態に係る制御システム１によれば、セーフティコントローラ２００とセーフティドライバ３００との間に形成される論理コネクションを介して遣り取りされるセーフティ指令および／またはセーフティ指令に応じて更新されるモーションセーフティ機能の状態情報を、論理コネクションとは独立して、標準コントローラ１００から容易にアクセスできる。
【０２１９】
また、本実施の形態に係る制御システム１によれば、サポート装置５００において、セーフティドライバ３００から公開される情報の意味を反映した変数を用いて標準制御プログラム１１０４を作成できるため、標準制御プログラム１１０４の作成効率を高めることができる。
【０２２０】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２２１】
１  制御システム、２  フィールドネットワーク、４  論理コネクション、６  データ公開アーキテクチャ、１００  標準コントローラ、１０２，２０２，３１２，３１４，５０２  プロセッサ、１０４，２０４，３１６，５０４  メインメモリ、１０６  上位ネットワークコントローラ、１０８，２０８，３０２  フィールドネットワークコントローラ、１１０，２１０，３２０，５１０  ストレージ、１１２  メモリカードインターフェイス、１１４  メモリカード、１１６  ローカルバスコントローラ、１１８，２１８，５１８  プロセッサバス、１２０，２２０，５２０  ＵＳＢコントローラ、１５０  標準制御、１７０，２７０，３７０  プロセスデータ通信レイヤ、１７２，２７２  管理モジュール、１７４，２７４，３７４  プロセスデータ、２００  セーフティコントローラ、２１６  セーフティローカルバスコントローラ、２３０  セーフティＩＯユニット、２４０  セーフティデバイス、２５０  セーフティ機能、２７６，３７６  論理コネクションレイヤ、２７８  セーフティ機能状態管理エンジン、３００  セーフティドライバ、３１０  制御部、３３０  ドライブ回路、３３２  フィードバック受信回路、３５０  サーボ制御、３５２  サーボ制御実行エンジン、３６０  モーションセーフティ機能、３６２  モーションセーフティ機能実行エンジン、３７８  モーションセーフティ機能状態管理エンジン、３８０  データミラーエンジン、３８２  モーションセーフティ制御用オブジェクト、３８４  ミラーオブジェクト設定、３９０  パラメータセット、４００  サーボモータ、４０２  三相交流モータ、４０４  エンコーダ、５００  サポート装置、５０６  入力部、５０８  出力部、５１２  光学ドライブ、５１４  記録媒体、５５０  標準コントローラ変数設定テーブル、５５２，５６２  設定欄、５５６，５６６，５８４  変数名、５６０  ミラーオブジェクト設定テーブル、５７０  設定画面、５７２  対象情報表示欄、５７４  ミラーオブジェクト表示欄、５７６  属性設定欄、５７８  データ型設定欄、５８０  変数名設定欄、５８２  参照命令、５９０  共通設定テンプレート、６００  通信フレーム、６１０，６１１，６１２，６１３，６１４，６１５，６２０，６２１，６２２，６２３，６２４，６１２１，６１２２，６１３１，６１３２，６１４１，６１４２，６１５１，６１５２  データ領域、６３０  セーフティ通信フレーム、１１０２，２１０２  システムプログラム、１１０４  標準制御プログラム、１１０５  コード、１１０６，２１０６，３２０６  設定情報、２１０４  セーフティプログラム、３２０２  サーボ制御プログラム、３２０４  モーションセーフティプログラム、３７８１，３７８２，３７８３，３７８４，３７８５  制御用オブジェクト、３７８１Ａ，３７８１Ｂ，３７８２Ａ，３７８２Ｂ，３７８３Ａ，３７８３Ｂ，３７８４Ａ，３７８４Ｂ，３７８５Ａ，３７８５Ｂ  情報、３８２１  コントロールオブジェクト、３８２２  ステータスオブジェクト、５１０２  ＯＳ、５１０４  サポートプログラム、５１０６  プロジェクトデータ、５１０８  標準制御ソースプログラム、５１１０  標準コントローラ設定情報、５１１２  セーフティソースプログラム、５１１４  セーフティコントローラ設定��報、５１１６  セーフティドライバ設定情報。
【図１】
2020057064.tif 000003
【図２】
2020057064.tif 000004
【図３】
2020057064.tif 000005
【図４】
2020057064.tif 000006
【図５】
2020057064.tif 000007
【図６】
2020057064.tif 000008
【図７】
2020057064.tif 000009
【図８】
2020057064.tif 000010
【図９】
2020057064.tif 000011
【図１０】
2020057064.tif 000012
【図１１】
2020057064.tif 000013
【図１２】
2020057064.tif 000014
【図１３】
2020057064.tif 000015
【図１４】
2020057064.tif 000016
【図１５】
2020057064.tif 000017
【図１６】
2020057064.tif 000018
【図１７】
2020057064.tif 000019
【図１８】
2020057064.tif 000020
【図１９】
2020057064.tif 000021
【図２０】
2020057064.tif 000022
【図２１】
2020057064.tif 000023