(57)【要約】【課題】製造現場に対する包括的なセーフティ制御を実現可能なセーフティ制御システムを提供する。【解決手段】セーフティ制御システムは、演算処理部と、セーフティ入出力データを保持するデータ保持部と、コネクション先のデバイスとの間でセーフティ入出力データを遣り取りする複数の通信処理部とを含む。複数の通信処理部の各々は、各通信処理部に対して予め定められたコネクション設定に従って、他の通信処理部の処理とは独立して、対象のデバイスに対してデータ保持部に保持されている対象のセーフティ出力データを周期的に送信するとともに、当該対象のデバイスからのセーフティ入力データをデータ保持部に書込む。【選択図】図１
2019179361.tif 000002
【特許請求の範囲】
【請求項１】
機能安全を実現するセーフティ制御システムであって、
１または複数のセーフティプログラムを実行する演算処理部と、
前記１または複数のセーフティプログラムが参照するセーフティ入力データ、および、前記１または複数のセーフティプログラムの実行により出力されるセーフティ出力データを保持するデータ保持部と、
コネクション先のデバイスとの間でセーフティ入出力データを遣り取りする複数の通信処理部とを備え、
前記複数の通信処理部の各々は、各通信処理部に対して予め定められたコネクション設定に従って、他の通信処理部の処理とは独立して、対象のデバイスに対して前記データ保持部に保持されている対象のセーフティ出力データを周期的に送信するとともに、当該対象のデバイスからのセーフティ入力データを前記データ保持部に書込む、セーフティ制御システム。
【請求項２】
前記複数の通信処理部の各々が対象のデバイスとの間で遣り取りするセーフティ入出力データ毎にセーフティプログラムがそれぞれ関連付けられる、請求項１に記載のセーフティ制御システム。
【請求項３】
前記複数の通信処理部によるセーフティ入出力データの遣り取りの実行周期は、互いに独立している、請求項２に記載のセーフティ制御システム。
【請求項４】
前記１または複数のセーフティプログラムは、前記データ保持部に保持されるセーフティ入出力データに対して割り当てられた変数を指定することで、対応するセーフティ入出力データの値を参照する、請求項１〜３のいずれか１項に記載のセーフティ制御システム。
【請求項５】
前記セーフティ制御システムは、主として標準制御を実行する標準制御ユニットと、主としてセーフティ制御を実行するセーフティ制御ユニットとからなり、
前記演算処理部と、前記データ保持部と、前記通信処理部とは、前記セーフティ制御ユニットに設けられる、請求項１〜４のいずれか１項に記載のセーフティ制御システム。
【請求項６】
前記標準制御ユニットと前記セーフティ制御ユニットとはローカルバスを介して接続されており、
前記標準制御ユニットは、ネットワークインターフェイスを有しており、
前記セーフティ制御ユニットに設けられる通信処理部は、前記標準制御ユニットのネットワークインターフェイスを利用して、コネクション先のデバイスとの間でセーフティ入出力データを遣り取りする、請求項５に記載のセーフティ制御システム。
【請求項７】
前記複数の通信処理部のうち少なくとも１つの通信処理部は、前記ローカルバスを介して前記標準制御ユニットおよび前記セーフティ制御ユニットに接続されたセーフティＩＯユニットとの間でセーフティ入出力データを遣り取りする、請求項６に記載のセーフティ制御システム。
【請求項８】
前記複数の通信処理部のうち少なくとも１つの通信処理部は、イーサネット（登録商標）ベースの通信プロトコルに従って、ネットワーク上のデバイスとの間でセーフティ入出力データを遣り取りする、請求項１〜７のいずれか１項に記載のセーフティ制御システム。
【請求項９】
機能安全を実現するセーフティ制御ユニットであって、
１または複数のセーフティプログラムを実行する演算処理部と、
前記１または複数のセーフティプログラムが参照するセーフティ入力データ、および、前記１または複数のセーフティプログラムの実行により出力されるセーフティ出力データを保持するデータ保持部と、
コネクション先のデバイスとの間でセーフティ入出力データを遣り取りする複数の通信処理部とを備え、
前記複数の通信処理部の各々は、各通信処理部に対して予め定められたコネクション設定に従って、他の通信処理部の処理とは独立して、対象のデバイスに対して前記データ保持部に保持されている対象のセーフティ出力データを周期的に送信するとともに、当該対象のデバイスからのセーフティ入力データを前記データ保持部に書込む、セーフティ制御ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機能安全を実現するセーフティ制御システムおよびセーフティ制御ユニットに関する。
【背景技術】
【０００２】
様々な製造現場で使用される設備や機械を安全に使用するためには、ＩＥＣ  ６１５０８などの国際規格に従って機能安全を実現しなければならない。このような機能安全は、セーフティ制御装置にてセーフティプログラムを実行することで実現されることもある。例えば、特開２００５−０３１７７８号公報（特許文献１）は、入力機器からの入力に基づいて、安全出力制御対象に安全出力を与えて機械設備の運転を制御するセーフティコントローラを開示する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−０３１７７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
製造現場に存在する設備や機械などに対する包括的な機能安全を実現する一つの方法として、上述したようなセーフティ制御装置に様々なセーフティコンポーネントを接続し、各セーフティコンポーネントからのセーフティ入力信号に対するセーフティ制御を実行するとともに、制御結果に基づいて、各セーフティコンポーネントに対してセーフティ出力信号を与えるような構成が好ましい。
【０００５】
一方で、セーフティ制御装置とセーフティコンポーネントとを接続するための接続形態や通信プロトコルは、必ずしも統一されておらず、複数の形態が存在する。例えば、新たに導入したセーフティ制御装置が利用可能な通信プロトコルと、既存のセーフティコンポーネントが利用可能な通信プロトコルとが一致しない場合には、当該セーフティコンポーネントとの間に配線を敷設して、電気信号を直接遣り取りするような構成を採用せざるを得ない。
【０００６】
本発明は、上述したような課題を解決することを一つの目的とし、製造現場に対する包括的なセーフティ制御を実現可能なセーフティ制御システムを提供する。
【課題を解決するための手段】
【０００７】
本開示の一例に従えば、機能安全を実現するセーフティ制御システムが提供される。セーフティ制御システムは、１または複数のセーフティプログラムを実行する演算処理部と、１または複数のセーフティプログラムが参照するセーフティ入力データ、および、１または複数のセーフティプログラムの実行により出力されるセーフティ出力データを保持するデータ保持部と、コネクション先のデバイスとの間でセーフティ入出力データを遣り取りする複数の通信処理部とを含む。複数の通信処理部の各々は、各通信処理部に対して予め定められたコネクション設定に従って、他の通信処理部の処理とは独立して、対象のデバイスに対してデータ保持部に保持されている対象のセーフティ出力データを周期的に送信するとともに、当該対象のデバイスからのセーフティ入力データをデータ保持部に書込む。
【０００８】
この開示によれば、複数の通信処理部の各々に対して独自のコネクション設定を行うことで、複数のデバイスとの間でセーフティ入出力データを遣り取りでき、これによって、各デバイスに関連させた複数の機能安全を実現できる。
【０００９】
上述の開示において、複数の通信処理部の各々が対象のデバイスとの間で遣り取りするセーフティ入出力データ毎にセーフティプログラムがそれぞれ関連付けられてもよい。この開示によれば、いずれかのコネクション（通信処理部）に何らかの異常が生じた場合であっても、それ以外のコネクションに関連付けられたセーフティプログラムの実行が影響を受けない。
【００１０】
上述の開示において、前記複数の通信処理部によるセーフティ入出力データの遣り取りの実行周期は、互いに独立していてもよい。この開示によれば、各コネクションの設定や状況に応じた周期でセーフティ入出力データを遣り取りできる。
【００１１】
上述の開示において、１または複数のセーフティプログラムは、データ保持部に保持されるセーフティ入出力データに対して割り当てられた変数を指定することで、対応するセーフティ入出力データの値を参照するようにしてもよい。この開示によれば、セーフティプログラムの作成者は、各セーフティ入出力データの更新を担当するコネクション（通信処理部）を意識することなく、セーフティプログラムを作成できる。
【００１２】
上述の開示において、セーフティ制御システムは、主として標準制御を実行する標準制御ユニットと、主としてセーフティ制御を実行するセーフティ制御ユニットとからなり、演算処理部と、データ保持部と、通信処理部とは、セーフティ制御ユニットに設けられてもよい。この開示によれば、セーフティ制御を標準制御から切り離して実行することができ、セーフティ制御の信頼性を高めることができる。
【００１３】
上述の開示において、標準制御ユニットとセーフティ制御ユニットとはローカルバスを介して接続されており、標準制御ユニットは、ネットワークインターフェイスを有しており、セーフティ制御ユニットに設けられる通信処理部は、標準制御ユニットのネットワークインターフェイスを利用して、コネクション先のデバイスとの間でセーフティ入出力データを遣り取りするようにしてもよい。この開示によれば、セーフティ制御有ニットにネットワークインターフェイスを設ける必要がないので、構成を簡素化できる。
【００１４】
上述の開示において、複数の通信処理部のうち少なくとも１つの通信処理部は、ローカルバスを介して標準制御ユニットおよびセーフティ制御ユニットに接続されたセーフティＩＯユニットとの間でセーフティ入出力データを遣り取りするようにしてもよい。この開示によれば、共通のローカルバスに接続されたセーフティＩＯユニットが管理するセーフティ入出力データを利用して、セーフティ制御を実現できる。
【００１５】
上述の開示において、複数の通信処理部のうち少なくとも１つの通信処理部は、イーサネット（登録商標）ベースの通信プロトコルに従って、ネットワーク上のデバイスとの間でセーフティ入出力データを遣り取りするようにしてもよい。この開示によれば、汎用的な通信プロトコルであるイーサネットを利用しつつ、セーフティ制御を実現できる。
【００１６】
本開示の一例に従えば、機能安全を実現するセーフティ制御ユニットが提供される。セーフティ制御ユニットは、１または複数のセーフティプログラムを実行する演算処理部と、１または複数のセーフティプログラムが参照するセーフティ入力データ、および、１または複数のセーフティプログラムの実行により出力されるセーフティ出力データを保持するデータ保持部と、コネクション先のデバイスとの間でセーフティ入出力データを遣り取りする複数の通信処理部とを含む。複数の通信処理部の各々は、各通信処理部に対して予め定められたコネクション設定に従って、他の通信処理部の処理とは独立して、対象のデバイスに対してデータ保持部に保持されている対象のセーフティ出力データを周期的に送信するとともに、当該対象のデバイスからのセーフティ入力データをデータ保持部に書込む。
【発明の効果】
【００１７】
本発明によれば、製造現場に対する包括的なセーフティ制御を実現できる。
【図面の簡単な説明】
【００１８】
【図１】本実施の形態に係るセーフティ制御システムの構成例を示す模式図である。
【図２】本実施の形態に係る制御装置を構成する標準制御ユニットのハードウェア構成例を示す模式図である。
【図３】本実施の形態に係る制御装置を構成するセーフティ制御ユニットのハードウェア構成例を示す模式図である。
【図４】本実施の形態に係る制御装置を構成するセーフティＩＯユニットのハードウェア構成例を示す模式図である。
【図５】本実施の形態に係る制御装置を構成する通信ユニットのハードウェア構成例を示す模式図である。
【図６】本実施の形態に係るセーフティ制御システムのセーフティ制御ユニットにおけるセーフティプログラムの実行環境の一例を示す模式図である。
【図７】本実施の形態に係るセーフティ制御システムのセーフティ制御ユニットにおけるセーフティプログラムの実行環境の一例を示す模式図である。
【図８】本実施の形態に係るセーフティ制御システムの制御装置におけるＦＳｏＥフレームの遣り取りを実現するための模式図である。
【図９】本実施の形態に係るセーフティ制御システムの制御装置におけるＣＩＰフレームの遣り取りを実現するための模式図である。
【図１０】本実施の形態に係るセーフティ制御システムの標準制御ユニットのローカルバスコントローラにおけるデータ更新の一例を説明するための模式図である。
【発明を実施するための形態】
【００１９】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２０】
＜Ａ．適用例＞
まず、本発明が適用される場面の一例について説明する。図１は、本実施の形態に係るセーフティ制御システム１の構成例を示す模式図である。セーフティ制御システム１は、機能安全を実現するためのシステムである。
【００２１】
図１には、一例として、制御装置２および制御装置４を中心とするセーフティ制御システム１を示す。セーフティ制御システム１において、主幹となる配線ＬＮ１に対して、制御装置２は配線ＬＮ２を介して接続され、制御装置４は配線ＬＮ３を介して接続されている。
【００２２】
制御装置２および制御装置４の各々は、標準制御およびセーフティ制御が実行可能になっている。
【００２３】
本明細書において、「標準制御」は、典型的には、予め定められた要求仕様に沿って、制御対象を制御するための処理を総称する。一方、「セーフティ制御」は、何らかの不具合によって、何らかの設備や機械などによって人の安全が脅かされることを防止するための処理を総称する。セーフティ制御は、例えば、ＩＥＣ  ６１５０８などに規定された機能安全を実現する。より具体的には、セーフティ制御は、制御対象自体の挙動が本来とは異なっている場合だけではなく、制御装置２自体に何らかの異常が発生したと判断される場合にも、制御対象を停止させるような処理を含む。
【００２４】
標準制御およびセーフティ制御の両方を同一のユニットで実現してもよいが、セーフティ制御システム１においては、主として標準制御を担当する標準制御ユニット１００と、主としてセーフティ制御を担当するセーフティ制御ユニット２００とを用いる構成例を示す。
【００２５】
すなわち、制御装置２および制御装置４の各々は、標準制御ユニット１００およびセーフティ制御ユニット２００からなる。セーフティ制御ユニット２００は、一種のローカルユニットとして、ローカルバス１０を介して標準制御ユニット１００に接続される。
【００２６】
本明細書において、「ローカルユニット」は、ローカルバス１０を介して接続される任意のユニットを総称する。
【００２７】
制御装置２および制御装置４の各々は、さらに、１または複数のセーフティＩＯユニット３００を含む。セーフティＩＯユニット３００は、セーフティコンポーネントからの信号の入力、および／または、セーフティコンポーネントへの信号の出力を司る。本明細書において、「セーフティコンポーネント」は、主として、セーフティ制御に用いられる任意の装置を包含するものであり、例えば、セーフティリレーや各種セーフティーセンサなどを含む。
【００２８】
セーフティ制御ユニット２００は、ローカルバス１０を介して、１または複数のセーフティＩＯユニット３００との間でセーフティＩＯデータを遣り取りする。本明細書において、「ＩＯデータ」は、制御対象やセーフティコンポーネントから取得された入力データ、および／または、制御装置やセーフティコンポーネントへ出力される出力データを包含する。「ＩＯデータ」のうち、特にセーフティ制御に用いられるセーフティ入出力データを「セーフティＩＯデータ」と称す。
【００２９】
制御装置２は、さらに配線ＬＮ６を介してリモートＩＯ装置３に接続されており、制御装置４は、さらに配線ＬＮ７を介してリモートＩＯ装置５に接続されている。通常、リモートＩＯ装置３およびリモートＩＯ装置５は、制御装置２および制御装置４とは異なる位置に配置され、制御対象やセーフティコンポーネントとの間で信号を遣り取りし、その信号の遣り取りに対応するＩＯデータを標準制御ユニット１００との間で遣り取りする。
【００３０】
より具体的には、リモートＩＯ装置３およびリモートＩＯ装置５の各々は、通信カプラユニット４５０および１または複数のセーフティＩＯユニット３００からなる。セーフティＩＯユニット３００は、一種のローカルユニットとして、ローカルバス（図示していない）を介して通信カプラユニット４５０に接続される。
【００３１】
セーフティ制御システム１は、さらに、リモートＩＯ装置６と、リモートＩＯ装置７と、リモートＩＯ装置８とを含む。リモートＩＯ装置６は、配線ＬＮ４を介して配線ＬＮ１に接続されている。リモートＩＯ装置７は、配線ＬＮ８を介してリモートＩＯ装置６に接続されている。リモートＩＯ装置８は、配線ＬＮ９を介してリモートＩＯ装置７に接続されている。
【００３２】
リモートＩＯ装置６と、リモートＩＯ装置７と、リモートＩＯ装置８との各々は、通信ユニット４００および１または複数のセーフティＩＯユニット３００からなる。セーフティＩＯユニット３００は、一種のローカルユニットとして、ローカルバス（図示していない）を介して通信ユニット４００に接続される。通信ユニット４００の基本的な機能および構成は、通信カプラユニット４５０と同様である。
【００３３】
さらに、制御装置２は、配線ＬＮ５を介して、セーフティコンポーネントを含むロボット５００ともネットワーク接続されている。
【００３４】
本実施の形態に係るセーフティ制御システム１においては、セーフティ制御ユニット２００は、他の制御ユニットおよび／または通信ユニット４００との間に、互いに独立した１または複数のコネクションを確立できる。各コネクションにおいては、セーフティＩＯデータを予め定められた周期毎に遣り取りできるようになっている。
【００３５】
例えば、制御装置２のセーフティ制御ユニット２００に着目すると、（１）制御装置２のローカルバス１０を介して接続される１または複数のセーフティＩＯユニット３００との間に確立される第１コネクション１２と、（２）制御装置２と配線ＬＮ６を介して接続されるリモートＩＯ装置３との間に確立される第２コネクション１４と、（３）制御装置２と配線ＬＮ５を介して接続されるロボット５００との間に確立される第３コネクション１６と、（４）制御装置２と配線ＬＮ２，ＬＮ１，ＬＮ３を介して接続される制御装置４のセーフティ制御ユニット２００との間に確立される第４コネクション１８とを管理する。
【００３６】
（１）第１コネクション１２
ローカルバス１０においては、制御装置２のメーカ固有の通信プロトコルに従うデータ伝送、または、ＥｔｈｅｒＣＡＴ（登録商標）などの規格化された通信プロトコルに従うデータ伝送が行われる。例えば、メーカ固有の通信プロトコルとして、所定周期でプロセスデータを逐次転送する形態の伝送を採用する場合には、当該プロセスデータ内に、ＦＳｏＥ（Ｓａｆｅｔｙ  ｏｖｅｒ  ＥｔｈｅｒＣＡＴ）フレームと称されるメッセージフレームを挿入することで、コネクション間のセーフティＩＯデータの遣り取りを実現できる。一方、ＥｔｈｅｒＣＡＴに従うデータ伝送を採用する場合には、ＥｔｈｅｒＣＡＴに従って逐次転送されるプロセスデータ内に、ＦＳｏＥフレーム（メッセージフレーム）を挿入することで、コネクション間のセーフティＩＯデータの遣り取りを実現できる。
【００３７】
このように、ローカルバス１０を介して、セーフティ制御ユニット２００と特定のセーフティＩＯユニット３００との間に第１コネクション１２を確立する場合には、ＦＳｏＥフレームを遣り取りする対象のユニットおよびそのデータサイズなどを予め規定することになる。
【００３８】
（２）第２コネクション１４
制御装置２とリモートＩＯ装置３との間の配線ＬＮ６においても、ＥｔｈｅｒＣＡＴなどの規格化された通信プロトコルに従うデータ伝送が行われる。制御装置２のセーフティ制御ユニット２００とリモートＩＯ装置３の１または複数のセーフティＩＯユニット３００との間においても、ＦＳｏＥフレームを用いて、セーフティＩＯデータの遣り取りが実現される。
【００３９】
ＥｔｈｅｒＣＡＴは、イーサネットベースの通信プロトコルであり、ＥｔｈｅｒＣＡＴの物理層およびデータリンク層（ネットワークインターフェイス層）には、イーサネット（登録商標）が採用されているので、配線ＬＮ６は、ＬＡＮ（Local Area Network）ケーブルなどのパケットを送信できる媒体が用いられる。
【００４０】
このように、配線ＬＮ６を介して、セーフティ制御ユニット２００と特定のセーフティＩＯユニット３００との間に第２コネクション１４を確立する場合には、ＦＳｏＥフレームを遣り取りする対象のユニットおよびそのデータサイズなどを予め規定することになる。
【００４１】
但し、制御装置２において、ＥｔｈｅｒＣＡＴに従うデータ伝送を担当するネットワークインターフェイス（図２に示すフィールドバスコントローラ１１２）は、標準制御ユニット１００に実装されている。そのため、制御装置２においては、標準制御ユニット１００が対象のセーフティＩＯユニット３００との間でＦＳｏＥフレームを直接遣り取りするとともに、セーフティ制御ユニット２００は、標準制御ユニット１００との間で周期的に遣り取りされるローカルバス１０上のデータフレームを仲介の媒体として用いて、セーフティＩＯユニット３００からのＦＳｏＥフレームを受信し、セーフティＩＯユニット３００へＦＳｏＥフレームを送信する。ローカルバス１０上のデータフレームを仲介の媒体として用いる処理の詳細については、後述する。
【００４２】
（３）第３コネクション１６
制御装置２とロボット５００との間の配線ＬＮ５においては、産業用の通信プロトコルに従うデータ伝送が行われる。このような産業用の通信プロトコルとしては、ＥｔｈｅｒＮｅｔ／ＩＰ、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ、ＣｏｎｔｒｏｌＮｅｔなどが挙げられる。本実施の形態においては、典型例として、ＥｔｈｅｒＮｅｔ／ＩＰに従うデータ伝送が採用されているものとする。このようなデータ伝送の通信プロトコルを利用して、アプリケーション層として、ＣＩＰ（Common Industrial Protocol）あるいはＣＩＰ  Ｓａｆｅｔｙなどの通信プロトコルが実装されている。
【００４３】
典型例として、制御装置２のセーフティ制御ユニット２００とロボット５００との間では、ＥｔｈｅｒＮｅｔ／ＩＰを用いて実装されるＣＩＰ  Ｓａｆｅｔｙに従ってセーフティＩＯデータが遣り取りされる構成を示す。ＥｔｈｅｒＮｅｔ／ＩＰは、イーサネットベースの通信プロトコルである。ＣＩＰ  Ｓａｆｅｔｙは、ＣＩＰをベースとして、ＩＥＣ  ６１５０８などの機能安全規格に対応させた通信プロトコルである。
【００４４】
このように、配線ＬＮ５を介して、セーフティ制御ユニット２００とロボット５００との間に第３コネクション１６を確立する場合には、ＣＩＰ  Ｓａｆｅｔｙに従うデータフレーム（以下、「ＣＩＰフレーム」とも略称する。）を遣り取りするためのデータサイズや対象の変数を指定するタグ名などを予め規定することになる。
【００４５】
但し、制御装置２において、ＥｔｈｅｒＮｅｔ／ＩＰに従うデータ伝送を担当するネットワークインターフェイス（図２に示すネットワークコントローラ１１０）は、標準制御ユニット１００に実装されている。そのため、制御装置２においては、標準制御ユニット１００が対象のロボット５００との間でＣＩＰ  Ｓａｆｅｔｙに従うＣＩＰフレームを直接遣り取りするとともに、セーフティ制御ユニット２００は、標準制御ユニット１００との間で周期的に遣り取りされるローカルバス１０上のデータフレームを仲介の媒体として用いて、ロボット５００からのＣＩＰフレームを受信し、ロボット５００へＣＩＰフレームを送信する。ローカルバス１０上のデータフレームを仲介の媒体として用いる処理の詳細については、後述する。
【００４６】
（４）第４コネクション１８
制御装置２と制御装置４との間の配線ＬＮ２，ＬＮ１，ＬＮ３においては、産業用の通信プロトコルに従うデータ伝送が行われる。上述したように、産業用の通信プロトコルとしては、ＥｔｈｅｒＮｅｔ／ＩＰ、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ、ＣｏｎｔｒｏｌＮｅｔなどが挙げられる。本実施の形態においては、典型例として、ＥｔｈｅｒＮｅｔ／ＩＰに従うデータ伝送が採用されているものとする。また、制御装置２のセーフティ制御ユニット２００と制御装置４のセーフティ制御ユニット２００との間では、ＥｔｈｅｒＮｅｔ／ＩＰを用いて実装されるＣＩＰ  Ｓａｆｅｔｙに従ってセーフティＩＯデータが遣り取りされるものとする。
【００４７】
このように、配線ＬＮ２，ＬＮ１，ＬＮ３を介して、制御装置２のセーフティ制御ユニット２００と制御装置４のセーフティ制御ユニット２００との間に第４コネクション１８を確立する場合には、ＣＩＰ  Ｓａｆｅｔｙに従うデータフレーム（以下、「ＣＩＰフレーム」とも略称する。）を遣り取りするためのデータサイズや対象の変数を指定するタグ名などを予め規定することになる。
【００４８】
但し、制御装置２において、ＥｔｈｅｒＮｅｔ／ＩＰに従うデータ伝送を担当するネットワークインターフェイス（図２に示すネットワークコントローラ１０８）は、標準制御ユニット１００に実装されている。そのため、制御装置２においては、標準制御ユニット１００が対象のセーフティ制御ユニット２００との間でＣＩＰ  Ｓａｆｅｔｙに従うＣＩＰフレームを直接遣り取りするとともに、セーフティ制御ユニット２００は、標準制御ユニット１００との間で周期的に遣り取りされるローカルバス１０上のデータフレームを仲介の媒体として用いて、制御装置４のセーフティ制御ユニット２００からのＣＩＰフレームを受信し、制御装置４のセーフティ制御ユニット２００へＣＩＰフレームを送信する。ローカルバス１０上のデータフレームを仲介の媒体として用いる処理の詳細については、後述する。また、制御装置４における標準制御ユニット１００とセーフティ制御ユニット２００との間においても、制御装置２における標準制御ユニット１００とセーフティ制御ユニット２００との間と同様に、ローカルバス１０上のデータフレームを仲介の媒体としてコネクションが確立されることになる。
【００４９】
上述したように、本実施の形態に係るセーフティ制御システム１においては、制御装置２のセーフティ制御ユニット２００は、互いに独立した複数のコネクションを保持しており、各コネクションにより遣り取りされるセーフティＩＯデータを用いて、コネクション毎に独立したセーフティ制御、および／または、複数のコネクションを連係したセーフティ制御のいずれについても実現できる。
【００５０】
本明細書において、「デバイス」は、セーフティＩＯデータを遣り取り可能な任意の装置またはユニットを包含する。
【００５１】
＜Ｂ．ハードウェア構成例＞
次に、本実施の形態に係るセーフティ制御システム１を構成する主たる装置のハードウェア構成例について説明する。
【００５２】
（ｂ１：標準制御ユニット１００）
図２は、本実施の形態に係る制御装置２を構成する標準制御ユニット１００のハードウェア構成例を示す模式図である。図２を参照して、標準制御ユニット１００は、プロセッサ１０２と、メインメモリ１０４と、ストレージ１０６と、ネットワークコントローラ１０８，１１０と、フィールドバスコントローラ１１２と、メモリカードインターフェイス１１６と、ローカルバスコントローラ１２０とを含む。これらのコンポーネントは、プロセッサバス１３０を介して接続されている。
【００５３】
プロセッサ１０２は、制御演算などを実行する演算処理部に相当し、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphics Processing Unit）などで構成される。具体的には、プロセッサ１０２は、ストレージ１０６に格納されたプログラム（一例として、システムプログラム１０６０および標準制御プログラム１０６２）を読出して、メインメモリ１０４に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。
【００５４】
メインメモリ１０４は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。ストレージ１０６は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性記憶装置などで構成される。
【００５５】
ストレージ１０６には、基本的な機能を実現するためのシステムプログラム１０６０に加えて、設備や機械などの制御対象に応じて作成される標準制御プログラム１０６２が格納される。さらに、ストレージ１０６には、セーフティ制御ユニット２００による、ネットワークコントローラ１０８，１１０および／またはフィールドバスコントローラ１１２を利用したデータ伝送を中継するためのメモリマッピング情報１０６４が格納される。
【００５６】
ネットワークコントローラ１０８，１１０は、任意の産業用ネットワークを介して、他の制御装置、任意のデバイス、その他任意の情報処理装置との間でデータフレームを遣り取りする。図２には、２つのネットワークコントローラ１０８，１１０を有する構成を図示するが、単一のネットワークコントローラを有する構成であってもよい。
【００５７】
フィールドバスコントローラ１１２は、任意のフィールドバスを介して、リモートデバイスとの間でデータフレームを遣り取りする。図２には、単一のフィールドバスコントローラ１１２を有する構成を図示するが、複数のフィールドバスコントローラを有する構成であってもよい。
【００５８】
メモリカードインターフェイス１１６は、記録媒体の一例であるメモリカード１１８が着脱可能になっている。メモリカードインターフェイス１１６は、メモリカード１１８に対して任意のデータの書込み、および、メモリカード１１８からの任意のデータの読出しが可能になっている。
【００５９】
ローカルバスコントローラ１２０は、ローカルバス１０を介して、セーフティ制御ユニット２００や任意のセーフティＩＯユニット３００との間でデータフレームを遣り取りする。より具体的には、ローカルバスコントローラ１２０は、マスタコントローラ１２２と、ＩＯデータメモリ１２４と、送信回路（ＴＸ）１２６と、受信回路（ＲＸ）１２８とを含む。
【００６０】
ＩＯデータメモリ１２４は、ローカルバス１０を介して任意のローカルユニットとの間で遣り取りするＩＯデータを一時的に保持するメモリであり、各ローカルユニットに対応付けてアドレスが予め規定されている。送信回路１２６は、出力データを含む通信フレームを生成してローカルバス１０上に送出する。受信回路１２８は、ローカルバス１０上を伝送する通信フレームを受信して入力データに復調する。マスタコントローラ１２２は、ローカルバス１０上のデータ伝送タイミングなどに従って、ＩＯデータメモリ１２４、送信回路１２６、および、受信回路１２８を制御する。マスタコントローラ１２２は、ローカルバス１０上のデータ伝送などを管理する通信マスタとしての制御を提供する。
【００６１】
図２には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。あるいは、標準制御ユニット１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。さらに、標準制御ユニット１００に表示装置やサポート装置などの機能を統合した構成を採用してもよい。
【００６２】
例えば、標準制御ユニット１００にサポート装置を直接接続する場合には、サポート装置との間でデータを遣り取りするためのＵＳＢ（Universal Serial Bus）ポートおよびＵＳＢコントローラをさらに設けてもよい。
【００６３】
（ｂ２：セーフティ制御ユニット２００）
図３は、本実施の形態に係る制御装置２を構成するセーフティ制御ユニット２００のハードウェア構成例を示す模式図である。図３を参照して、セーフティ制御ユニット２００は、プロセッサ２０２と、メインメモリ２０４と、ストレージ２０６と、ローカルバスコントローラ２２０とを含む。これらのコンポーネントは、プロセッサバス２３０を介して接続されている。
【００６４】
プロセッサ２０２は、１または複数のセーフティプログラムを実行する演算処理部に相当する。
【００６５】
ローカルバスコントローラ２２０は、通信スレーブとして機能し、他のローカルユニットと同様の通信インターフェイスを提供する。すなわち、ローカルバスコントローラ２２０は、ローカルバス１０を介して、標準制御ユニット１００およびローカルユニットとの間でデータフレームを遣り取りする。
【００６６】
ローカルバス１０上において、セーフティ制御ユニット２００およびセーフティＩＯユニット３００は、デイジーチェーン接続されている。ローカルバスコントローラ２２０は、ローカルバス１０上で上流側に存在する装置から自ユニット宛ての通信フレームが入来すると、当該入来した通信フレームを取込む。同様に、ローカルバスコントローラ２２０は、ローカルバス１０上で下流側に存在する装置から自ユニット宛ての通信フレームが入来すると、当該入来した通信フレームを取込む。自ユニット宛て以外の通信フレームが入来した場合には、当該通信フレームは、ローカルバスコントローラ２２０をそのまま通過する。このような通信フレームの受信または透過によって、標準制御ユニット１００とローカルユニットおよびセーフティ制御ユニット２００とのノード間のデータ伝送が実現される。
【００６７】
より具体的には、ローカルバスコントローラ２２０は、スレーブコントローラ２２２と、バッファメモリ２２４と、送信回路（ＴＸ）２２５，２２６と、受信回路（ＲＸ）２２７，２２８とを含む。
【００６８】
バッファメモリ２２４は、ローカルバス１０を伝送する通信フレームを一時的に保持する。
【００６９】
受信回路２２７は、ローカルバス１０上を伝送する通信フレームを受信すると、その全部または一部をバッファメモリ２２４に格納する。送信回路２２６は、受信回路２２７により受信された通信フレームを下流側のローカルバス１０へ送出する。
【００７０】
同様に、受信回路２２８は、ローカルバス１０上を伝送する通信フレームを受信すると、その全部または一部をバッファメモリ２２４に格納する。送信回路２２５は、受信回路１２８により受信された通信フレームを下流側のローカルバス１０へ送出する。
【００７１】
スレーブコントローラ２２２は、ローカルバス１０上の通信フレームの順次転送を実現するために、送信回路２２５，２２６、受信回路２２７，２２８、および、バッファメモリ２２４を制御する。
【００７２】
プロセッサ２０２は、制御演算などを実行する演算処理部に相当し、ＣＰＵやＧＰＵなどで構成される。具体的には、プロセッサ２０２は、ストレージ２０６に格納されたプログラム（一例として、システムプログラム２０６０、通信処理プログラム２０６２、およびセーフティプログラム２０６６）を読出して、メインメモリ２０４に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。
【００７３】
メインメモリ２０４は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ２０６は、例えば、ＨＤＤやＳＳＤなどの不揮発性記憶装置などで構成される。
【００７４】
ストレージ２０６には、基本的な機能を実現するためのシステムプログラム２０６０に加えて、他のセーフティ制御ユニット２００および／またはセーフティＩＯユニット３００との間でデータフレームを遣り取りするためのコネクションを確立および維持するための通信処理プログラム２０６２と、コネクションを確立および維持するために必要な設定情報を含むコネクション設定情報２０６４と、対象のセーフティＩＯユニット３００に応じて作成されるセーフティプログラム２０６６とが格納される。
【００７５】
図３には、プロセッサ２０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００７６】
（ｂ３：セーフティＩＯユニット３００）
図４は、本実施の形態に係る制御装置２を構成するセーフティＩＯユニット３００のハードウェア構成例を示す模式図である。図４を参照して、セーフティＩＯユニット３００は、プロセッサ３０２と、システムメモリ３０６と、セーフティＩＯモジュール３０８と、ローカルバスコントローラ３２０とを含む。これらのコンポーネントは、プロセッサバス３３０を介して接続されている。
【００７７】
ローカルバスコントローラ３２０は、通信スレーブとして機能し、他のローカルユニットと同様の通信インターフェイスを提供する。ローカルバスコントローラ３２０は、スレーブコントローラ３２２と、バッファメモリ３２４と、送信回路（ＴＸ）３２５，３２６と、受信回路（ＲＸ）３２７，３２８とを含む。ローカルバスコントローラ３２０の基本構成は、図３に示すローカルバスコントローラ２２０と同様であるので、詳細な説明は繰返さない。
【００７８】
プロセッサ３０２は、セーフティＩＯユニット３００における各種処理を実行する演算処理部に相当する。システムメモリ３０６は、フラッシュメモリやＮＶＲＡＭ（non-volatile RAM）などで構成され、セーフティＩＯユニット３００での処理に必要な各種設定やファームウェアを格納する。
【００７９】
セーフティＩＯモジュール３０８は、セーフティＩＯユニット３００の機能に応じて、フィールドからの信号に対して入力処理し、および／または、フィールドへの信号を出力処理する。セーフティＩＯモジュール３０８は、さらに、断線検知やフィードバック検知などのセーフティ制御固有の機能も実装される。
【００８０】
図４には、プロセッサ３０２を用いて必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００８１】
（ｂ４：通信ユニット４００）
図５は、本実施の形態に係る制御装置２を構成する通信ユニット４００のハードウェア構成例を示す模式図である。図５を参照して、通信ユニット４００は、プロセッサ４０２と、メインメモリ４０４と、ストレージ４０６と、ネットワークコントローラ４０８，４１０と、フィールドバスコントローラ４１２と、ローカルバスコントローラ４２０とを含む。これらのコンポーネントは、プロセッサバス４３０を介して接続されている。
【００８２】
プロセッサ４０２は、制御演算などを実行する演算処理部に相当し、ＣＰＵやＧＰＵなどで構成される。具体的には、プロセッサ４０２は、ストレージ４０６に格納されたシステムプログラム４０６０を読出して、メインメモリ４０４に展開して実行することで、ローカルバス１０を介して接続されるローカルユニット（セーフティＩＯユニット３００など）と標準制御ユニット１００および／またはセーフティ制御ユニット２００との間のＩＯデータの遣り取りを仲介するための各種処理を実現する。
【００８３】
メインメモリ４０４は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ４０６は、例えば、ＨＤＤやＳＳＤなどの不揮発性記憶装置などで構成される。
【００８４】
ストレージ４０６には、ローカルユニットのＩＯデータを遣り取りするための機能を実現するためのシステムプログラム４０６０が格納される。
【００８５】
ネットワークコントローラ４０８，４１０は、任意の産業用ネットワークを介して、他の制御装置、任意のデバイス、その他任意の情報処理装置との間でデータフレームを遣り取りする。図５には、２つのネットワークコントローラ４０８，４１０を有する構成を図示するが、単一のネットワークコントローラを有する構成であってもよい。
【００８６】
フィールドバスコントローラ４１２は、任意のフィールドバスを介して、リモートデバイスとの間でデータフレームを遣り取りする。図５には、単一のフィールドバスコントローラ４１２を有する構成を図示するが、複数のフィールドバスコントローラを有する構成であってもよい。
【００８７】
ローカルバスコントローラ４２０は、ローカルバス１０を介して、セーフティ制御ユニット２００や任意のセーフティＩＯユニット３００との間でデータフレームを遣り取りする。より具体的には、ローカルバスコントローラ４２０は、マスタコントローラ４２２と、ＩＯデータメモリ４２４と、送信回路（ＴＸ）４２６と、受信回路（ＲＸ）４２８とを含む。
【００８８】
ＩＯデータメモリ４２４は、ローカルバス１０を介して任意のローカルユニットとの間で遣り取りするＩＯデータを一時的に保持するメモリであり、各ローカルユニットに対応付けてアドレスが予め規定されている。送信回路４２６は、出力データを含む通信フレームを生成してローカルバス１０上に送出する。受信回路４２８は、ローカルバス１０上を伝送する通信フレームを受信して入力データに復調する。マスタコントローラ４２２は、ローカルバス１０上のデータ伝送タイミングなどに従って、ＩＯデータメモリ４２４、送信回路４２６、および、受信回路４２８を制御する。マスタコントローラ４２２は、ローカルバス１０上のデータ伝送などを管理する通信マスタとしての制御を提供する。
【００８９】
図５には、プロセッサ４０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００９０】
（ｂ５：通信カプラユニット４５０）
通信カプラユニット４５０は、接続先のネットワークの種類または数が異なっている点を除いて、主要な構成は、通信ユニット４００と同様である。そのため、詳細な説明は繰返さない。
【００９１】
＜Ｃ．セーフティ制御システム１のコネクション群およびセーフティプログラム＞
次に、制御装置２のセーフティ制御ユニット２００において実行されるセーフティプログラムの一例について説明する。
【００９２】
図６および図７は、本実施の形態に係るセーフティ制御システム１のセーフティ制御ユニット２００におけるセーフティプログラムの実行環境の一例を示す模式図である。図６および図７を参照して、セーフティ制御ユニット２００は、４つの通信処理部２６０−１，２６０−２，２６０−３，２６０−４を有している。通信処理部２６０−１は、第１コネクション１２を確立しており、通信処理部２６０−２は、第２コネクション１４を確立しており、通信処理部２６０−３は、第３コネクション１６を確立しており、通信処理部２６０−４は、第４コネクション１８を確立しているとする。
【００９３】
通信処理部２６０−１〜２６−４の各々は、各コネクション設定に従って、対象のセーフティＩＯユニット３００および／またはセーフティ制御ユニット２００との間でセーフティＩＯデータを遣り取りする。すなわち、通信処理部２６０−１〜２６０−４は、コネクション先のデバイスとの間でセーフティＩＯデータを遣り取りする。
【００９４】
通信処理部２６０−１〜２６−４の通信周期（ＦＳｏＥフレームまたはＣＩＰフレームの送受信周期）は、各コネクションの設定や状況に応じて定まる。例えば、コネクションに設定されている遣り取りされるデータ量の大きさなどによっても変化し得る。また、通信状況などによっては、一定周期ではなく、予め定められた最悪値を超えない範囲で、周期が変動することもある。このように、通信処理部２６０−１〜２６−４によるセーフティ入出力データの遣り取りの実行周期は、互いに独立に設定される。
【００９５】
遣り取りされるセーフティＩＯデータは、セーフティＩＯデータマップ２５０として、メインメモリ２０４に格納される。セーフティＩＯデータマップ２５０を格納するメインメモリ２０４は、１または複数のセーフティプログラム２０６６が参照するセーフティ入力データ、および、１または複数のセーフティプログラム２０６６の実行により出力されるセーフティ出力データを保持するデータ保持部に相当する。
【００９６】
このように、通信処理部２６０−１〜２６０−４の各々は、各通信処理部２６０に対して予め定められたコネクション設定に従って、他の通信処理部２６０の処理とは独立して、対象のデバイスに対してセーフティＩＯデータマップ２５０（データ保持部）に保持されている対象のセーフティ出力データを周期的に送信するとともに、当該対象のデバイスからのセーフティ入力データをセーフティＩＯデータマップ２５０（データ保持部）に書込む。
【００９７】
各コネクションにおけるセーフティＩＯデータの遣り取りが実施される毎に、セーフティＩＯデータマップ２５０の内容は更新される。セーフティＩＯデータマップ２５０の更新される範囲は、基本的には、コネクション毎に独立している。
【００９８】
セーフティ制御ユニット２００において実行されるセーフティプログラム２０６６は、セーフティＩＯデータマップ２５０上の任意のセーフティ入力データ（Ｓａｆｅｔｙ  Ｉｎｐｕｔ）を参照し、その演算結果をセーフティ出力データ（Ｓａｆｅｔｙ  Ｏｕｔｐｕｔ）の対応するデータに書込む。セーフティプログラム２０６６は、セーフティＩＯデータマップ２５０上の任意のセーフティＩＯデータを利用することができるが、例えば、図６に示すように、各コネクションにより遣り取りされるセーフティＩＯデータ毎に、セーフティプログラム２０６６を作成してもよい。
【００９９】
図６に示す構成例においては、第１コネクション１２により遣り取りされるセーフティＩＯデータのみを利用するセーフティプログラム２０６６−１と、第２コネクション１４により遣り取りされるセーフティＩＯデータのみを利用するセーフティプログラム２０６６−２と、第３コネクション１６により遣り取りされるセーフティＩＯデータのみを利用するセーフティプログラム２０６６−３と、第４コネクション１８により遣り取りされるセーフティＩＯデータのみを利用するセーフティプログラム２０６６−４とがそれぞれ実行される例を示す。
【０１００】
セーフティプログラム２０６６−１〜２０６６−４の各々は、互いに独立した周期で実行されるようにしてもよい。機能安全の要求を満たすために、セーフティプログラムの最大実行周期などが定められることがあり、そのような場合には、各要求に応じた周期で実行される。
【０１０１】
このように、複数の通信処理部２６０−１〜２６０−４の各々が対象のデバイスとの間で遣り取りするセーフティＩＯデータ毎にセーフティプログラム２０６６−１〜２０６６−４がそれぞれ関連付けられることで、複数のコネクションのうち、あるコネクションに何らかの不具合が生じた場合であっても、それ以外のコネクションに関与するセーフティプログラムに対して影響を与えることがない。
【０１０２】
一方、図７に示す構成例においては、第１コネクション１２により遣り取りされるセーフティＩＯデータおよび第２コネクション１４により遣り取りされるセーフティＩＯデータの両方を利用するセーフティプログラム２０６６−１２が実行される例を示す。
【０１０３】
このような複数のコネクションに関連するセーフティプログラムを作成することで、異なるセーフティＩＯユニット３００に接続された装置同士であっても、それぞれの装置の状態を互いに監視しつつ、機能安全を提供できる。
【０１０４】
図６および図７に示すように、本実施の形態に係るセーフティ制御ユニット２００においては、対象のセーフティＩＯデータがいずれのコネクションを介して遣り取りされるのかをユーザが意識することなく、セーフティプログラムを作成できる。
【０１０５】
図６および図７に示すようなセーフティＩＯデータマップ２５０に対しては、各値または各データ単位に変数を割り当てることもできる。セーフティプログラムにおいては、このような変数を利用して、セーフティＩＯデータの各値を指定することもできる。すなわち、セーフティプログラムは、セーフティＩＯデータマップ２５０（データ保持部）に保持されるセーフティＩＯデータに対して割り当てられた変数を指定することで、対応するセーフティＩＯデータの値を参照するようにしてもよい。
【０１０６】
＜Ｄ．コネクションを実現する伝送処理＞
次に、各コネクションを実現するための伝送処理の一例について説明する。
【０１０７】
（ｄ１：ローカルバス１０上のＦＳｏＥフレーム）
まず、ローカルバス１０を介してセーフティ制御ユニット２００とセーフティＩＯユニット３００との間で遣り取りされるＦＳｏＥフレームについて説明する。すなわち、セーフティ制御ユニット２００は、ローカルバス１０を介して標準制御ユニット１００およびセーフティ制御ユニット２００に接続されたセーフティＩＯユニット３００との間でセーフティＩＯデータを遣り取りする。
【０１０８】
図８は、本実施の形態に係るセーフティ制御システム１の制御装置２におけるＦＳｏＥフレームの遣り取りを実現するための模式図である。図８を参照して、標準制御ユニット１００のローカルバスコントローラ１２０は、ローカルバス１０の通信マスタとして機能し、ローカルバス１０を介して、セーフティ制御ユニット２００のローカルバスコントローラ２２０およびセーフティＩＯユニット３００のローカルバスコントローラ３２０とデータ伝送可能に接続される。
【０１０９】
セーフティ制御ユニット２００は、セーフティＩＯユニット３００との間のコネクションを確立するための通信処理部２６０を有している。典型的には、通信処理部２６０は、セーフティ制御ユニット２００のプロセッサ２０２がシステムプログラム２０６０を実行することで実現される。
【０１１０】
通信処理部２６０は、ローカルバスコントローラ２２０により送受信されるセーフティＩＯデータをセーフティＩＯデータマップ２５０に反映する。すなわち、通信処理部２６０は、セーフティＩＯユニット３００からＦＳｏＥフレームにより受信したセーフティ入力データでセーフティＩＯデータマップ２５０の対応する値を更新するとともに、セーフティプログラム２０６６が実行されることでセーフティＩＯデータマップ２５０に出力される値をセーフティ出力データとしてＦＳｏＥフレームに含めて送信する。
【０１１１】
セーフティＩＯユニット３００は、セーフティＩＯモジュール３０８に加えて、セーフティ制御ユニット２００との間のコネクションを確立するための通信処理部３６０を有している。典型的には、通信処理部３６０は、セーフティＩＯユニット３００のプロセッサ３０２がシステムプログラム３０６０を実行することで実現される。
【０１１２】
通信処理部３６０は、セーフティＩＯモジュール３０８による収集される入力データをセーフティ入力データとしてＦＳｏＥフレームに含めて送信する。また、セーフティＩＯモジュール３０８は、ＦＳｏＥフレームにより受信したセーフティ出力データに従って、セーフティＩＯモジュール３０８から制御信号を出力させる。
【０１１３】
ローカルバス１０において、セーフティ制御ユニット２００およびセーフティＩＯユニット３００は、いずれも通信スレーブであるので、両ユニット間で遣り取りされるＦＳｏＥフレームは、通信マスタである標準制御ユニット１００を介して伝送される。
【０１１４】
より具体的には、ローカルバス１０において所定サイズのフレームが周期的に伝送しており、この周期的なフレームの伝送の合間を縫って、メッセージフレームとしてＦＳｏＥフレームが送信される。セーフティ制御ユニット２００から送出されたＦＳｏＥフレームは、標準制御ユニット１００に一旦送信された後に、対象のセーフティＩＯユニット３００へ伝送される。同様に、セーフティ制御ユニット２００から送出されたＦＳｏＥフレームは、標準制御ユニット１００に一旦送信された後に、セーフティ制御ユニット２００へ伝送される。
【０１１５】
このようなローカルバス１０上のＦＳｏＥフレームの伝送によって、セーフティ制御ユニット２００とセーフティＩＯユニット３００との間にコネクションが確立され、セーフティＩＯデータが遣り取りされる。
【０１１６】
（ｄ２：ネットワーク上のＣＩＰフレーム）
次に、ネットワークを介して、他のセーフティ制御ユニット２００、通信ユニット４００に接続されたセーフティＩＯユニット３００、標準制御ユニット１００に接続されたセーフティＩＯユニット３００等との間で、遣り取りされるＣＩＰフレームについて説明する。
【０１１７】
本実施の形態において、セーフティ制御ユニット２００は、ＣＩＰフレームの生成およびデコードを担当するものの、実際のＣＩＰフレームの送受信は標準制御ユニット１００に委任する。すなわち、セーフティ制御ユニット２００に設けられる通信処理部２６０は、標準制御ユニット１００のネットワークインターフェイスであるネットワークコントローラ１０８，１１０を利用して、コネクション先のデバイスとの間でセーフティＩＯデータを遣り取りする。
【０１１８】
図９は、本実施の形態に係るセーフティ制御システム１の制御装置２におけるＣＩＰフレームの遣り取りを実現するための模式図である。図９を参照して、セーフティ制御ユニット２００は、他のユニットとの間のコネクションを確立するための通信処理部２６０を有している。典型的には、通信処理部２６２は、セーフティ制御ユニット２００のプロセッサ２０２がシステムプログラム２０６０を実行することで実現される。
【０１１９】
通信処理部２６２は、対象のユニット宛てのＣＩＰフレームを送信する場合には、送信すべきＣＩＰフレームを生成するとともに、ローカルバス１０上を周期的に伝送されるデータフレームを利用して当該生成したＣＩＰフレームを標準制御ユニット１００のローカルバスコントローラ１２０へ送信する。また、通信処理部２６２は、ローカルバス１０上を周期的に伝送されるデータフレームを利用して送信されるいずれかのユニットからのＣＩＰフレームを受信する。このＣＩＰフレームは、標準制御ユニット１００のネットワークコントローラ１０８，１１０によって受信され、ローカルバスコントローラ１２０を介して、ローカルバス１０を介してセーフティ制御ユニット２００へ伝送される。
【０１２０】
通信処理部２６２は、ＣＩＰフレームにより遣り取りされるセーフティＩＯデータをセーフティＩＯデータマップ２５０に反映する。すなわち、通信処理部２６２は、いずれかのユニットからＣＩＰフレームにより受信したセーフティ入力データでセーフティＩＯデータマップ２５０の対応する値を更新するとともに、セーフティプログラム２０６６が実行されることでセーフティＩＯデータマップ２５０に出力される値をセーフティ出力データとしてＣＩＰフレームに含めて送信する。
【０１２１】
標準制御ユニット１００は、ローカルバスコントローラ１２０に接続されたコネクション管理部１６０を含む。ローカルバスコントローラ１２０は、ローカルバス側バッファ１２４２と、ネットワーク側バッファ１２４４とを含む。
【０１２２】
ローカルバス側バッファ１２４２には、セーフティ制御ユニット２００からのデータフレーム（含む：ＣＩＰフレーム）が格納されるとともに、ネットワークコントローラ１０８，１１０によって受信され、対象のセーフティ制御ユニット２００へ送信されるデータフレーム（含む：ＣＩＰフレーム）が格納される。すなわち、ローカルバス側バッファ１２４２は、ローカルバス１０上を周期的に伝送されるデータフレーム用の送受信バッファに相当する。
【０１２３】
ネットワーク側バッファ１２４４は、ネットワークコントローラ１０８，１１０によって送受信されるＣＩＰフレーム用のバッファに相当する。より具体的には、ＣＩＰフレームを対象のユニットへ送信する場合には、コネクション管理部１６０は、ローカルバス側バッファ１２４２に格納されている送信用のＣＩＰフレームを適宜のタイミングおよび順序でネットワーク側バッファ１２４４に移動させる。一方、ネットワークコントローラ１０８，１１０がいずれかのユニットからＣＩＰフレームを受信した場合には、コネクション管理部１６０は、ネットワーク側バッファ１２４４に格納されている送信用のＣＩＰフレームを適宜のタイミングおよび順序でローカルバス側バッファ１２４２に移動させる。
【０１２４】
コネクション管理部１６０は、セーフティ制御ユニット２００とローカルバスコントローラ１２０との間のＣＩＰフレームの遣り取りと、ネットワークコントローラ１０８，１１０と対象のユニットとの間のＣＩＰフレームの遣り取りとを仲介することで、セーフティ制御ユニット２００とネットワークを介して接続されるユニットとの間のＣＩＰフレームの遣り取りを実現する。
【０１２５】
コネクション管理部１６０は、コネクション管理情報１６２を有しており、セーフティ制御ユニット２００に対して設定されているコネクション毎に通信先のユニットまでのルーティングなどを管理する。なお、セーフティ制御ユニット２００は、各コネクションを特定するためのコネクション識別情報をデータフレームに付加しており、コネクション管理部１６０は、コネクション識別情報を参照して、セーフティ制御ユニット２００からのＣＩＰフレームがいずれの宛先に向けられているのかを特定する。
【０１２６】
このような構成を採用することで、セーフティ制御ユニット２００は、ローカルバス１０を介して、ネットワーク上の任意のユニットとの間で任意のコネクションを確立できる。
【０１２７】
（ｄ３：ネットワーク上のＦＳｏＥフレーム）
ネットワーク上のＦＳｏＥフレームの伝送は、ネットワーク上のＣＩＰフレームの伝送と同様の形態で、セーフティ制御ユニット２００と標準制御ユニット１００との間でローカルバス１０を介したデータフレームの遣り取りを利用して実現される。ここでは、詳細な説明は繰返さない。
【０１２８】
（ｄ４：セーフティＩＯデータの同期リフレッシュ）
本実施の形態に係るセーフティ制御システム１においては、セーフティ制御ユニット２００は１または複数のコネクションを確立できる。各コネクションは、互いに独立させることが可能であり、１つのコネクションに何らかの不具合が生じても、他のコネクションへの影響を与えないようになっている。
【０１２９】
一方で、各コネクションが互いに独立したタイミングで、セーフティＩＯデータの更新（「ＩＯリフレッシュ」とも称される）を実施すると、更新タイミングにばらつきが生じ得る。セーフティ制御ユニット２００において実行されるセーフティプログラム２０６６が複数のコネクションに関連するセーフティＩＯデータを参照する場合には、コネクション間のばらつきを極力低減することが好ましい。
【０１３０】
このような場合には、ローカルバスコントローラ１２０における、ローカルバス側バッファ１２４２とネットワーク側バッファ１２４４との間のデータ更新のタイミングを最適化するようにしてもよい。
【０１３１】
図１０は、本実施の形態に係るセーフティ制御システム１の標準制御ユニット１００のローカルバスコントローラ１２０におけるデータ更新の一例を説明するための模式図である。図１０を参照して、例えば、標準制御ユニット１００のローカルバスコントローラ１２０には、コネクション毎に、ローカルバス側バッファ１２４２およびネットワーク側バッファ１２４４が用意されるとする。
【０１３２】
ローカルバス側バッファ１２４２とネットワーク側バッファ１２４４とからなる組に対して、コネクション管理部１６０がデータ更新のタイミングを制御することで、セーフティ制御ユニット２００に対して、各コネクションに関するセーフティＩＯデータを実質的に同じタイミングで更新できる。
【０１３３】
より具体的には、コネクション管理部１６０は、各コネクションにおけるデータフレームの遣り取りの状況などに基づいて、ローカルバス側バッファ１２４２とネットワーク側バッファ１２４４とからなる各組に対して、同時にデータ更新を実行する。このようなデータの同時更新を実施することで、セーフティ制御ユニット２００に対するセーフティ入力データの反映タイミングを一致させることができる。また、セーフティ制御ユニット２００から出力されるセーフティ出力データの各ユニットへの送信タイミングを一致させることもできる。
【０１３４】
＜Ｅ．変形例＞
上述の説明においては、主として、標準制御ユニット１００とセーフティ制御ユニット２００とを組み合わせた制御装置２について例示したが、これに限らず、複数の標準制御ユニット１００を組み合わせた制御装置、および、複数のセーフティ制御ユニット２００を組み合わせた制御装置に対しても、本件発明の技術思想を適用できることは自明である。さらに、標準制御ユニットおよびセーフティ制御ユニットに限らず、任意の制御ユニットの組み合わせが可能である。
【０１３５】
本実施の形態においては、標準制御ユニット１００とセーフティ制御ユニット２００とを組み合わせた構成を主として例示したが、これに限らず、両ユニットを一体的に構成してもよい。この場合であっても、上述したような特徴的な処理を実装できる。
【０１３６】
＜Ｆ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］
機能安全を実現するセーフティ制御システム（１）であって、
１または複数のセーフティプログラム（２０６６）を実行する演算処理部（２０２）と、
前記１または複数のセーフティプログラムが参照するセーフティ入力データ、および、前記１または複数のセーフティプログラムの実行により出力されるセーフティ出力データを保持するデータ保持部（２０４；２５０）と、
コネクション先のデバイスとの間でセーフティ入出力データを遣り取りする複数の通信処理部（２０６２；２６０）とを備え、
前記複数の通信処理部の各々は、各通信処理部に対して予め定められたコネクション設定（２０６４）に従って、他の通信処理部の処理とは独立して、対象のデバイスに対して前記データ保持部に保持されている対象のセーフティ出力データを周期的に送信するとともに、当該対象のデバイスからのセーフティ入力データを前記データ保持部に書込む、セーフティ制御システム。
［構成２］
前記複数の通信処理部の各々が対象のデバイスとの間で遣り取りするセーフティ入出力データ毎にセーフティプログラムがそれぞれ関連付けられる、構成１に記載のセーフティ制御システム。
［構成３］
前記複数の通信処理部によるセーフティ入出力データの遣り取りの実行周期は、互いに独立している、構成２に記載のセーフティ制御システム。
［構成４］
前記１または複数のセーフティプログラムは、前記データ保持部に保持されるセーフティ入出力データに対して割り当てられた変数を指定することで、対応するセーフティ入出力データの値を参照する、構成１〜３のいずれか１項に記載のセーフティ制御システム。
［構成５］
前記セーフティ制御システムは、主として標準制御を実行する標準制御ユニット（１００）と、主としてセーフティ制御を実行するセーフティ制御ユニット（２００）とからなり、
前記演算処理部と、前記データ保持部と、前記通信処理部とは、前記セーフティ制御ユニットに設けられる、構成１〜４のいずれか１項に記載のセーフティ制御システム。
［構成６］
前記標準制御ユニットと前記セーフティ制御ユニットとはローカルバス（１０）を介して接続されており、
前記標準制御ユニットは、ネットワークインターフェイス（１０８；１１０）を有しており、
前記セーフティ制御ユニットに設けられる通信処理部は、前記標準制御ユニットのネットワークインターフェイスを利用して、コネクション先のデバイスとの間でセーフティ入出力データを遣り取りする、構成５に記載のセーフティ制御システム。
［構成７］
前記複数の通信処理部のうち少なくとも１つの通信処理部は、前記ローカルバスを介して前記標準制御ユニットおよび前記セーフティ制御ユニットに接続されたセーフティＩＯユニット（３００）との間でセーフティ入出力データを遣り取りする、構成６に記載のセーフティ制御システム。
［構成８］
前記複数の通信処理部のうち少なくとも１つの通信処理部は、イーサネット（登録商標）ベースの通信プロトコルに従って、ネットワーク上のデバイス（２００；３００）との間でセーフティ入出力データを遣り取りする、構成１〜７のいずれか１項に記載のセーフティ制御システム。
［構成９］
機能安全を実現するセーフティ制御ユニット（２００）であって、
１または複数のセーフティプログラム（２０６６）を実行する演算処理部（２０２）と、
前記１または複数のセーフティプログラムが参照するセーフティ入力データ、および、前記１または複数のセーフティプログラムの実行により出力されるセーフティ出力データを保持するデータ保持部（２０４；２５０）と、
コネクション先のデバイスとの間でセーフティ入出力データを遣り取りする複数の通信処理部（２０６２；２６０）とを備え、
前記複数の通信処理部の各々は、各通信処理部に対して予め定められたコネクション設定（２０６４）に従って、他の通信処理部の処理とは独立して、対象のデバイスに対して前記データ保持部に保持されている対象のセーフティ出力データを周期的に送信するとともに、当該対象のデバイスからのセーフティ入力データを前記データ保持部に書込む、セーフティ制御ユニット。
【０１３７】
＜Ｇ．利点＞
機能安全を実現するためのセーフティ制御を実現するシステムには、高い信頼性が要求される。また、万が一、セーフティ制御の機能に不具合が生じた場合であっても、制御機能の欠落範囲または縮小範囲を局限化したいという要求もある。このような要求に対して、対象のデバイス毎にセーフティコントローラを個々に用意するという解決策もあるが、様々な面で高コスト化を招く可能性がある。より具体的には、信頼性の高いセーフティコントローラ自体は比較的高価であり、複数のセーフティコントローラを配置することで、ハードウェアコストが増加し得る。また、複数のセーフティコントローラがシステム内に分散配置されることで、設計コストや維持コストが増加し得る。
【０１３８】
これに対して、本実施の形態に係るセーフティ制御システム１においては、単一のセーフティ制御ユニットを用いて、複数のコネクションをそれぞれ確立することができ、万が一、いずれかのコネクションに不具合が生じた場合であっても、他のコネクションへの影響は実質的にないので、セーフティ制御を継続できる。
【０１３９】
このように、本実施の形態によれば、大規模なシステムであっても、柔軟なセーフティ制御を実現できるとともに、仮にいずれかのコネクションに不具合が生じた場合であっても、その影響を局限化できる。
【０１４０】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１４１】
１  セーフティ制御システム、２，４  制御装置、３，５，６，７，８  リモートＩＯ装置、１０  ローカルバス、１２  第１コネクション、１４  第２コネクション、１６  第３コネクション、１８  第４コネクション、１００  標準制御ユニット、１０２，２０２，３０２，４０２  プロセッサ、１０４，２０４，４０４  メインメモリ、１０６，２０６，４０６  ストレージ、１０８，１１０，４０８，４１０  ネットワークコントローラ、１１２，４１２  フィールドバスコントローラ、１１６  メモリカードインターフェイス、１１８  メモリカード、１２０，２２０，３２０，４２０  ローカルバスコントローラ、１２２，４２２  マスタコントローラ、１２４，４２４  ＩＯデータメモリ、１２６，２２５，２２６，３２５，３２６，４２６  送信回路（ＴＸ）、１２８，２２７，２２８，３２７，３２８，４２８  受信回路（ＲＸ）、１３０，２３０，３３０，４３０  プロセッサバス、１６０  コネクション管理部、１６２  コネクション管理情報、２００  セーフティ制御ユニット、２２２，３２２  スレーブコントローラ、２２４，３２４  バッファメモリ、２５０  セーフティＩＯデータマップ、２６０，２６２，３６０  通信処理部、３００  セーフティＩＯユニット、３０６  システムメモリ、３０８  セーフティＩＯモジュール、４００  通信ユニット、４５０  通信カプラユニット、５００  ロボット、１０６０，２０６０，３０６０，４０６０  システムプログラム、１０６２  標準制御プログラム、１０６４  メモリマッピング情報、１２４２  ローカルバス側バッファ、１２４４  ネットワーク側バッファ、２００５  特開、２０６２  通信処理プログラム、２０６４  コネクション設定情報、２０６６  セーフティプログラム、ＬＮ１，ＬＮ２，ＬＮ３，ＬＮ４，ＬＮ５，ＬＮ６，ＬＮ７，ＬＮ８，ＬＮ９  配線。
【図１】
2019179361.tif 000003
【図２】
2019179361.tif 000004
【図３】
2019179361.tif 000005
【図４】
2019179361.tif 000006
【図５】
2019179361.tif 000007
【図６】
2019179361.tif 000008
【図７】
2019179361.tif 000009
【図８】
2019179361.tif 000010
【図９】
2019179361.tif 000011
【図１０】
2019179361.tif 000012