(57)【要約】【課題】安全コントローラの処理負担を軽減することが可能な安全スレーブユニットを提供する。【解決手段】安全スレーブは、安全コントローラと通信するための通信部を含む。安全コントローラは、入力された信号に基づいて、ユーザプログラムを実行するか否かを判定するように構成されている。安全スレーブにおける制御部は、安全コントローラとの通信が確立したか否かを判定する通信判定部と、安全スレーブユニットに接続される機器からの入力信号に基づいて異常の有無を判定する異常判定部と、安全コントローラにおけるファンクションブロックの演算の実行を制御するための実行制御情報と、機器の動作情報とを安全コントローラに送信する通信制御部とを含む。通信制御部は、安全コントローラに対する入力信号として、実行制御情報および動作情報を安全コントローラに送信する。【選択図】図５
2014098985.tif 000002
【特許請求の範囲】
【請求項１】
安全スレーブユニットであって、
入力信号に基づいて出力信号を出力する安全コントローラと通信するための通信部を備え、
前記安全コントローラは、入力された信号に基づいて、ユーザプログラムを実行するか否かを判定するように構成されており、
前記安全スレーブユニットは、
前記安全コントローラにおける前記ユーザプログラムの実行を制御する制御部をさらに備え、
前記制御部は、
前記安全コントローラとの通信が確立したか否かを判定する通信判定部と、
前記安全スレーブユニットに接続される機器からの入力信号に基づいて、異常の有無を判定する異常判定部と、
前記通信判定部の判定結果と前記異常判定部の判定結果とに基づく実行制御情報であって、前記安全コントローラにおける前記ユーザプログラムの実行を制御するための前記実行制御情報と、前記機器における動作の有無に関する動作情報とを前記安全コントローラに送信する通信制御部とを含み、
前記通信制御部は、前記安全コントローラに対する前記入力信号として、前記実行制御情報および前記動作情報を前記安全コントローラに送信する、安全スレーブユニット。
【請求項２】
前記制御部は、前記通信判定部の判定結果と前記異常判定部の判定結果とに基づいて、前記安全コントローラに前記ユーザプログラムを実行させるか否かを判定する実行判定部をさらに備え、
前記実行制御情報は、前記実行判定部の判定結果を含む、請求項１に記載の安全スレーブユニット。
【請求項３】
前記実行判定部は、前記通信判定部において前記安全コントローラとの通信が確立しているとの判定結果、かつ前記異常判定部において前記機器に異常なしとの判定結果に基づいて、前記安全コントローラに前記ユーザプログラムを実行させると判定する、請求項２に記載の安全スレーブユニット。
【請求項４】
前記実行判定部は、前記通信判定部において前記安全コントローラとの通信が確立していないとの判定結果、および前記異常判定部において前記機器に異常ありとの判定結果の少なくともいずれかに基づいて、前記安全コントローラに前記ユーザプログラムを実行させないと判定する、請求項２または３に記載の安全スレーブユニット。
【請求項５】
前記実行判定部は、前記ユーザプログラムを実行させると判定した場合には、前記実行制御情報の論理値を高エネルギー側の論理値に設定し、前記ユーザプログラムを実行させないと判定した場合には、前記実行制御情報の論理値を高エネルギー側でない側の論理値に設定する、請求項２〜４のいずれか１項に記載の安全スレーブユニット。
【請求項６】
安全スレーブユニットの制御方法であって、
前記安全スレーブユニットは、入力信号に基づいて出力信号を出力する安全コントローラと通信するための通信インターフェイスを備え、
前記安全コントローラは、入力された信号に基づいて、ユーザプログラムを実行するか否かを判定するように構成されており、
前記安全スレーブユニットは、
前記安全コントローラにおける前記ユーザプログラムの実行を制御するプロセッサをさらに備え、
前記プロセッサが、前記安全コントローラとの通信が確立したか否かを判定するステップと、
前記プロセッサが、前記安全スレーブユニットに接続される機器からの入力信号に基づいて、異常の有無を判定するステップと、
前記プロセッサが、前記通信が確立したか否かの判定結果と前記異常の有無の判定結果とに基づく実行制御情報であって、前記安全コントローラにおける前記ユーザプログラムの実行を制御するための前記実行制御情報と、前記機器における動作の有無に関する動作情報とを前記安全コントローラに送信するステップとを含み、
前記送信するステップは、前記安全コントローラに対する前記入力信号として、前記実行制御情報および前記動作情報を前記安全コントローラに送信することを含む、安全スレーブユニットの制御方法。
【請求項７】
安全スレーブユニットの制御プログラムであって、
前記安全スレーブユニットは、入力信号に基づいて出力信号を出力する安全コントローラと通信するための通信インターフェイスを備え、
前記安全コントローラは、入力された信号に基づいて、ユーザプログラムを実行するか否かを判定するように構成されており、
前記安全スレーブユニットは、
前記安全コントローラにおける前記ユーザプログラムの実行を制御するプロセッサをさらに備え、
前記制御プログラムは、前記プロセッサに、
前記安全コントローラとの通信が確立したか否かを判定するステップと、
前記安全スレーブユニットに接続される機器からの入力信号に基づいて、異常の有無を判定するステップと、
前記通信が確立したか否かの判定結果と前記異常の有無の判定結果とに基づく実行制御情報であって、前記安全コントローラにおける前記ユーザプログラムの実行を制御するための前記実行制御情報と、前記機器における動作の有無に関する動作情報とを前記安全コントローラに送信するステップとを実行させ、
前記送信するステップは、前記安全コントローラに対する前記入力信号として、前記実行制御情報および前記動作情報を前記安全コントローラに送信することを含む、安全スレーブユニットの制御プログラム。
【請求項８】
安全制御システムであって、
入力信号に基づいて出力信号を出力する安全コントローラと、安全スレーブユニットとを備え、
前記安全スレーブユニットは、
前記安全コントローラと通信するための通信部と、
前記安全コントローラにおけるユーザプログラムの実行を制御する制御部とを備え、
前記制御部は、
前記安全コントローラとの通信が確立したか否かを判定する通信判定部と、
前記安全スレーブユニットに接続される機器からの入力信号に基づいて、異常の有無を判定する異常判定部と、
前記通信判定部の判定結果と前記異常判定部の判定結果とに基づく実行制御情報であって、前記安全コントローラにおける前記ユーザプログラムの実行を制御するための前記実行制御情報と、前記機器における動作の有無に関する動作情報とを前記安全コントローラに送信する通信制御部とを含み、
前記通信制御部は、前記安全コントローラに対する前記入力信号として、前記実行制御情報および前記動作情報を前記安全コントローラに送信し、
前記安全コントローラは、
前記実行制御情報および前記動作情報を受信する受信部と、
受信した前記実行制御情報および前記動作情報に基づいて、前記ユーザプログラムを実行する演算部とを備え、
前記演算部は、前記実行制御情報に基づいて前記ユーザプログラムを実行するか否かを判定し、前記ユーザプログラムを実行すると判定した場合には、前記動作情報に基づいて前記ユーザプログラムを実行する、安全制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、安全スレーブユニット、その制御方法、その制御プログラム、および安全制御システムに関する。
【背景技術】
【０００２】
近年、労働安全意識の高まりと共に、各種の安全ユニットが開発されている。安全ユニットは、安全コントローラ（セーフティコントローラ）、安全Ｉ／Ｏ（入出力）ターミナル等に相当する。例えば、安全コントローラは、一般的なプログラマブルコントローラに類似するロジック演算機能、入出力制御機能に加えて、安全面の自己診断機能を内蔵させることにより、その制御において高度な安全性および信頼性を確保したものである。安全コントローラは、自己診断結果により異常を検出した場合には、自己の制御が危険につながらないように、強制的に安全側の制御を行うような機能（フェールセーフ機能）を備えている。
【０００３】
また、安全Ｉ／Ｏターミナルにおいても、自己診断機能を有していて、自己診断結果により異常を検出した場合には自己の制御が危険につながらない制御をするといった、フェールセーフ機能を備えている。この機能により、安全ユニットを介して接続される切削機械や切断機械やアーム付き製造機ロボット等の動作が、例えば作業者に対して危険を及ぼさないように制御されている。
【０００４】
ここで言う安全は、より具体的には、規格化されている安全基準を含む意味である。規格には、例えばＩＥＣ６１５０８やＥＮ規格などがある。ＩＥＣ６１５０８（プログラム可能な電子システムの機能安全に関する国際電気標準委員会）では、時間あたりの危険故障確率（失敗確率：Probability  of  Failure  per  Hour）を定義し、この確率によってＳＩＬレベル（Safety  Integrity  Level）を４段階に分類している。また、ＥＮ規格では、機械のリスクの大きさを評価し、リスク低減策を講じるように義務づけられていて、ＥＮ９５４−１では５つの安全カテゴリにて規定されている。安全コントローラ等は、このような安全基準のいずれかに対応したものである。
【０００５】
そして、従来、安全コントローラと安全Ｉ／Ｏターミナルとをネットワークで結んでなる安全制御システムについても知られている。安全制御システムにおいては、安全コントローラは、安全Ｉ／Ｏターミナルに対してネットワーク通信する通信マスタ機能を備えており、安全マスタと称されることもある。安全Ｉ／Ｏターミナルは、安全コントローラの通信マスタ機能との間でネットワーク通信機能、つまり、マスタに従って制御される通信スレーブ機能を備えており、安全スレーブと称されることもある。
【０００６】
また、各安全ユニットの接続端子には、オンオフ信号を出力するスイッチ等の安全入力機器と、制御信号出力を受けて駆動される安全出力機器との少なくとも一方が接続されている。安全入力機器の例としては、非常停止スイッチ、ライトカーテン、ドアスイッチ、２ハンドスイッチ等である。また、安全出力機器の例としてはセーフティリレーやコンタクタであり、これらの安全入力機器または安全出力機器も安全規格に対応している。
【０００７】
安全Ｉ／Ｏターミナルは、接続された安全入力機器から入力された信号に基づいて制御データ（入力データ）を生成し、生成した制御データを安全コントローラへネットワーク通信する。また、安全Ｉ／Ｏターミナルは、安全コントローラとの間でネットワーク通信することで、安全コントローラからの制御データを受信する。そして、安全コントローラは、安全Ｉ／Ｏターミナルからネットワーク通信により受信した安全入力機器の入力信号を入力し、予め記憶されたロジックプログラムによってその入力信号のオンオフを論理演算する。安全コントローラは、その演算結果に基づく出力信号をネットワーク通信により安全Ｉ／Ｏターミナルへ出力する。安全Ｉ／Ｏターミナルは、その出力信号を出力機器へ出力する。この一連の動作を繰り返し実行することにより、安全コントローラによりシステム全体が制御される。なお、安全コントローラと安全Ｉ／Ｏターミナルとの間の通信サイクルは、安全コントローラの繰り返し実行のサイクルと同期していても良いし、非同期でも良い。
【０００８】
安全コントローラあるいはＣＰＵ（Central  Processing  Unit）ユニットにおけるロジック演算処理の対象となるロジックプログラムは、プログラマーにより予め作成される。ロジックプログラムとしては、ラダー、ファンクションブロックダイアグラム、シーケンシャル・ファンクション・チャート、ストラクチャード・テキスト、インストラクション・リストなどが挙げられる。プログラミング言語でいうと、インタプリタ型言語、スクリプト言語、アセンブリ言語、高級言語、Ｊａｖａ(登録商標)言語と呼ばれるものであってもよい。このようなプログラミング言語で書かれたソースコードを、アセンブルやコンパイルなどの処理を行なってＣＰＵに実行させる。
【０００９】
また、安全Ｉ／Ｏターミナルに接続された安全出力機器としてのセーフティリレーやコンタクタは、操作ロボットや加工機械、切断機械等につながれていて、出力機器のリレーやコンタクタの接点がオン中は操作ロボット等が動作し、接点がオフ中は操作ロボット等が停止するようになっている。すなわち、安全コントローラは、安全出力機器をオンオフ制御することで、制御対象の操作ロボット等を制御する。
【００１０】
具体的には、例えば、安全コントローラは、非常停止スイッチＳＷが正常に操作されたことを安全Ｉ／Ｏターミナルから通信により入力すると、制御対象が危険な動作をしないように安全出力機器をオフするか、安全側の状態に強制制御し、直ちに必要な安全処置を探る。また、安全コントローラは、非常停止スイッチＳＷまたは他の安全入力機器が異常有りの診断結果を入力すると、非常停止スイッチＳＷの操作有無または安全入力機器のオンオフ状態に関わらず、制御対象が危険な動作をしないようにその動作を停止するよう安全出力機器をオフするか、安全側の状態に強制制御し、直ちに必要な安全処置を探る。
【００１１】
ここで、上述した安全コントローラを通信マスタ局、安全Ｉ／Ｏターミナルを通信スレーブ局としたマスタ・スレーブ式の安全制御システムにおいては、安全スレーブの自己診断機能の作用により、安全規格に対応した安全用途スイッチ（ＳＷ）が接続された入力端子に関して異常ありの診断結果が得られた場合には、安全マスタ側の動作安全を確保するための対応策が安全スレーブに採用されている。
【００１２】
例えば、特開２００６−３２３８３１号公報（特許文献１）には、生の入力信号から制御データを生成する入力処理の過程で参照される異常診断結果を、その制御データを利用する側でも参照可能とし、それにより制御データに基づく多様な安全制御を可能とする安全スレーブユニットが開示されている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００６−３２３８３１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ところで、通信機能をサポートした安全コントローラは、プログラムの実行と通信開始に時間的なズレが生じる場合がある。通信を開始するためには、Ｉ／Ｏデータ等の実際のデータ等を通信するに先立ち通信相手（安全Ｉ／Ｏターミナル）との間でコネクションを確立する必要がある。これは、安全コントローラが、通信の確立を待たずにプログラムを実行したとき、ファンクションブロックで論理エラーが発生するのを防止するためである。そして、多くの相手と通信を行う場合、個々の通信相手に対して適宜の順にコネクションを確立していくため、全ての通信相手との間でコネクションが確立するまでに時間がかかる。一方、電源投入にともない安全コントローラの初期設定等が終了し、ユーザプログラムをサイクリックに実行することを開始すると、このユーザプログラムの実行時に、必ずしも全ての通信相手とコネクションが確立しているとは限らず、一部の通信相手とはＩ／Ｏデータの通信ができない状態でユーザプログラムの演算実行が進むことがある。
【００１５】
このような問題を解決するために、通信開始（通信の確立）を待ってからプログラムを実行する機能を持った安全コントローラが知られている。しかし、通信開始を待ってからプログラムを実行する機能を使っても、故障などによりコネクションが確立できない相手が存在すると、ユーザプログラム全体を実行することができなくなる。この問題発生を回避するため、あらかじめ設定した時間が経過した場合は、通信の開始を待たずにプログラムを実行する。ただし、その場合は、安全Ｉ／Ｏターミナルから期待されるＩ／Ｏデータを受信することができないため、安全コントローラ側では盲目的に安全状態にしなければならず、不要な異常を検知することとなる。
【００１６】
ここで、例えば、ファンクションブロックダイアグラムでプログラミングされた安全コントローラでは、安全Ｉ／Ｏターミナルから送信されるＩ／Ｏデータを取り込み、ファンクションブロック演算が行われる。上述したような安全スレーブの入力端子に関する異常（短絡、断線等）がある場合、および／または安全コントローラと安全スレーブとの通信の未確立または通信異常がある場合には、安全コントローラは、ファンクションブロック演算において使用すべきでない（無効な）Ｉ／Ｏデータを取り込んでしまう可能性がある。したがって、これを防止するために、安全コントローラ側において、当該入力端子に関する異常に対する解決策と、当該通信異常に対する解決策とを考慮することにより、有効なＩ／Ｏデータのときのみファンクションブロックの演算を実行する機能が必要とされている。
【００１７】
本発明は、上記のような問題を解決するためになされたものであって、ある局面の目的は、安全コントローラの処理負担を軽減することが可能な安全スレーブユニット、その制御方法、その制御プログラム、および安全制御システムを提供することである。
【課題を解決するための手段】
【００１８】
ある実施の形態に従う安全スレーブユニットは、入力信号に基づいて出力信号を出力する安全コントローラと通信するための通信部を含む。安全コントローラは、入力された信号に基づいて、ユーザプログラムを実行するか否かを判定するように構成されている。安全スレーブユニットは、安全コントローラにおけるユーザプログラムの実行を制御する制御部をさらに含む。制御部は、安全コントローラとの通信が確立したか否かを判定する通信判定部と、安全スレーブユニットに接続される機器からの入力信号に基づいて、異常の有無を判定する異常判定部と、通信判定部の判定結果と異常判定部の判定結果とに基づく実行制御情報であって、安全コントローラにおけるユーザプログラムの実行を制御するための実行制御情報と、機器における動作の有無に関する動作情報とを安全コントローラに送信する通信制御部とを含む。通信制御部は、安全コントローラに対する入力信号として、実行制御情報および動作情報を安全コントローラに送信する。
【００１９】
好ましくは、制御部は、通信判定部の判定結果と異常判定部の判定結果とに基づいて、安全コントローラにユーザプログラムを実行させるか否かを判定する実行判定部をさらに含む。実行制御情報は、実行判定部の判定結果を含む。
【００２０】
好ましくは、実行判定部は、通信判定部において安全コントローラとの通信が確立しているとの判定結果、かつ異常判定部において機器に異常なしとの判定結果に基づいて、安全コントローラにユーザプログラムを実行させると判定する。
【００２１】
好ましくは、実行判定部は、通信判定部において安全コントローラとの通信が確立していないとの判定結果、および異常判定部において機器に異常ありとの判定結果の少なくともいずれかに基づいて、安全コントローラにユーザプログラムを実行させないと判定する。
【００２２】
好ましくは、実行判定部は、ユーザプログラムを実行させると判定した場合には、実行制御情報の論理値を高エネルギー側の論理値に設定し、ユーザプログラムを実行させないと判定した場合には、実行制御情報の論理値を高エネルギー側でない側の論理値に設定する。
【００２３】
別の実施の形態に従うと、安全スレーブユニットの制御方法が提供される。安全スレーブユニットは、ファンクションブロックダイアグラムに従って入力信号に基づいて出力信号を出力する安全コントローラと通信するための通信インターフェイスを含む。安全コントローラは、入力された信号に基づいて、ユーザプログラムを実行するか否かを判定するように構成されている。安全スレーブユニットは、安全コントローラにおけるユーザプログラムの実行を制御するプロセッサをさらに含む。プロセッサが、安全コントローラとの通信が確立したか否かを判定するステップと、プロセッサが、安全スレーブユニットに接続される機器からの入力信号に基づいて、異常の有無を判定するステップと、プロセッサが、通信が確立したか否かの判定結果と異常の有無の判定結果とに基づく実行制御情報であって、安全コントローラにおけるユーザプログラムの実行を制御するための実行制御情報と、機器における動作の有無に関する動作情報とを安全コントローラに送信するステップとを含む。送信するステップは、安全コントローラに対する入力信号として、実行制御情報および動作情報を安全コントローラに送信することを含む。
【００２４】
さらに別の実施の形態に従うと、安全スレーブユニットの制御プログラムが提供される。安全スレーブユニットは、ファンクションブロックダイアグラムに従って入力信号に基づいて出力信号を出力する安全コントローラと通信するための通信インターフェイスを含む。安全コントローラは、入力された信号に基づいて、ユーザプログラムを実行するか否かを判定するように構成されている。安全スレーブユニットは、安全コントローラにおけるユーザプログラムの実行を制御するプロセッサをさらに含む。制御プログラムは、プロセッサに、安全コントローラとの通信が確立したか否かを判定するステップと、安全スレーブユニットに接続される機器からの入力信号が与えられる入力端子に関する異常の有無を判定するステップと、通信が確立したか否かの判定結果と異常の有無の判定結果とに基づく実行制御情報であって、安全コントローラにおけるユーザプログラムの実行を制御するための実行制御情報と、機器における動作の有無に関する動作情報とを安全コントローラに送信するステップとを実行させる。送信するステップは、安全コントローラに対する入力信号として、実行制御情報および動作情報を安全コントローラに送信することを含む。
【００２５】
さらに別の実施の形態に従う安全制御システムは、ファンクションブロックダイアグラムに従って入力信号に基づいて出力信号を出力する安全コントローラと、安全スレーブユニットとを含む。安全スレーブユニットは、安全コントローラと通信するための通信部と、安全コントローラにおけるファンクションブロックの実行を制御する制御部とを含む。制御部は、安全コントローラとの通信が確立したか否かを判定する通信判定部と、安全スレーブユニットに接続される機器からの入力信号が与えられる入力端子に関する異常の有無を判定する異常判定部と、通信判定部の判定結果と異常判定部の判定結果とに基づく実行制御情報であって、安全コントローラにおけるユーザプログラムの実行を制御するための実行制御情報と、機器における動作の有無に関する動作情報とを安全コントローラに送信する通信制御部とを含む。通信制御部は、安全コントローラに対する入力信号として、実行制御情報および動作情報を安全コントローラに送信する。安全コントローラは、実行制御情報および動作情報を受信する受信部と、受信した実行制御情報および動作情報に基づいて、ユーザプログラムを実行する演算部とを含む。演算部は、実行制御情報に基づいてユーザプログラムを実行するか否かを判定し、ユーザプログラムを実行すると判定した場合には、動作情報に基づいてファンクションブロックを実行する。
【発明の効果】
【００２６】
ある局面によると、安全コントローラの処理負担を軽減することが可能となる。
【図面の簡単な説明】
【００２７】
【図１】本実施の形態に従う安全制御システムの全体構成を示す概略図である。
【図２】本実施の形態に従う安全スレーブの内部ハードウェア構成を示す概略ブロック図である。
【図３】本実施の形態に従う安全スレーブの中央演算処理部の処理全体を示すゼネラルフローチャートである。
【図４】本実施の形態に従う安全制御システムによって実現される機能の構成を表すブロック図である。
【図５】本実施の形態に従うファンクションブロックの機能を説明するための図である。
【図６】本実施の形態に従う安全制御システムにおいて実行される制御処理手順を示すフローチャートである。
【発明を実施するための形態】
【００２８】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００２９】
＜Ａ．システム構成＞
図１は、本実施の形態に従う安全制御システム１００の全体構成を示す概略図である。
【００３０】
図１を参照して、ここでは、安全コントローラ１と安全Ｉ／Ｏターミナル（以下、「安全スレーブ」とも称する。）３とがバス６で結ばれたバス型ネットワークを構成した安全制御システム１００が示されている。
【００３１】
本例においては、安全コントローラ１および安全スレーブ３には複数の安全入力機器４と安全出力機器５とが配線接続されている。
【００３２】
安全コントローラ１は、例えば、ＣＰＵユニットや電源ユニットやＩ／Ｏユニットや通信マスタユニットなどの複数のユニットが連結して構成されるビルディングブロックタイプである。各ユニットは、共通内部バスに接続されていて、安全コントローラ全体の制御を司るＣＰＵユニットと他のユニットとの間でバス通信をし、データをやりとりすることができる。
【００３３】
安全コントローラ１は、通信マスタユニットを介して安全スレーブ３からネットワーク通信により入力した安全入力機器４の入力信号を入力し、予め記憶されたロジックプログラムによってその入力信号のオンオフを論理演算する。その演算結果に基づく出力信号を通信マスタユニットを介してネットワーク通信により安全スレーブ３へ出力する。安全スレーブ３は、その出力信号を安全出力機器５へ出力する。この一連の動作を繰り返し実行することにより、安全コントローラ１によりシステム全体が制御される。なお、安全コントローラ１と安全スレーブ３との間の通信サイクルは、安全コントローラ１の繰り返し実行のサイクルと同期しても良いし、非同期でも良い。
【００３４】
安全入力機器４には、非常停止スイッチ、ライトカーテン、ドアスイッチ、リミットスイッチ等が含まれ、安全出力機器５には、セーフティリレー、コンタクタ等が含まれる。
【００３５】
なお、本例においては、安全スレーブ３と安全入力機器４と安全出力機器５とが接続された構成について主に説明するが、安全コントローラ１に対してＩ／Ｏユニットを介して安全入力機器４および安全出力機器５が接続されていてもよい。なお、安全入力機器４および安全出力機器５を総称して安全入出力機器とも称する。
【００３６】
安全スレーブ３は、通常のＰＬＣ（なお、通常のＰＬＣは、安全用途以外の通常用途で使われるコントローラを言い、安全コントローラを含まない。）のスレーブユニットと同様に、通信マスタ機能に対する通信動作を行う機能、接続された安全入力機器への入力動作を行う機能、接続された安全出力機器への出力動作を行う機能に加え、入出力端子のそれぞれに関する自己診断を行う機能を備えている。
【００３７】
各安全スレーブ３が有する自己診断機能は、自己の入力端子部の異常有無の診断に関する機能、その他通信機能などの様々な機能に関する自己診断や、入出力端子と安全入出力機器との間の配線状態が短絡や断線したことによる自己診断も行なうことができる。また、自己診断機能は、他の例として、各安全スレーブ３に、入出力端子とは別のテスト出力端子により、対応する安全入出力機器に対して、テスト出力端子から適宜信号を送り、その信号が対応する安全入力機器４を経由して、正しく返送されてきたかを読み取ることによって対応する安全入力機器４の状態が正常か異常かを監視するような機能であってもよい。
【００３８】
図１に示すシステム構成では、安全コントローラ１と安全スレーブ２とは、バス型ネットワークを介して互いに通信する場合について説明したがこれに限られず、バックプレーンバスを介して互いに通信してもよい。より具体的には、バックプレーンと称する剛性プレート上にバックプレーンバス（ＢＵＳ）を敷設すると共に、このバックプレーンバス上には適当な間隔でユニット装着用コネクタを配列し、これに１台の安全コントローラと複数台の安全スレーブとを装着することで互いに通信可能に構成してもよい。また、安全コントローラ１および安全スレーブ２に無線通信機能を設けて、互いに無線で通信する構成が用いられてもよい。
【００３９】
また、バス６にはシステムを構築するためのＰＬＣ（programmable  logic  controller）のプログラム設計支援装置が接続されていてもよい。プログラム設計支援装置は、例えば、Ｉ／Ｏウィザードによる対話形式の支援プログラムが実行可能なように設けられており、図例の汎用のノート型パソコンに限らず、ネットワークに接続可能なＰＤＡ（Personal  Digital  Assistant）などの携帯端末装置であってもよいし、デスクトップパソコンであってもよい。
【００４０】
この場合、プログラム設計支援装置は、少なくとも、プログラム設計支援装置全体を統括し制御するＣＰＵと、マウス操作やキーボード操作等を含む入力操作部と、プログラム設計支援装置が備える画像表示器の表示画面に対する表示処理を行う表示部と、操作入力処理、所定の演算処理、または表示画面に対する画像処理等に使用されるワークＲＡＭと、外部への通信インターフェースとして作用する通信部と、記憶装置とを含む。これらは、プログラム設計支援装置の内部バスに接続された形態で構成されている。記憶装置の所定の記憶領域には、例えば、Ｉ／Ｏウィザードプログラムが格納される。
【００４１】
＜Ｂ．ハードウェア構成＞
次に、安全スレーブ３の内部ハードウェア構成について説明する。
【００４２】
図２は、本実施の形態に従う安全スレーブ３の内部ハードウェア構成を示す概略ブロック図である。
【００４３】
図２を参照して、安全スレーブ３は、バス６に接続された安全マスタ（安全コントローラ）２またはプログラム設計支援装置とのデータ送受を行う通信インターフェイス（Ｉ／Ｆ）部２１と、各種演算機能や故障診断機能等を実行し、安全スレーブ３全体を統括・制御する中央演算処理部２０と、端子異常診断部２２ａ，２２ｂと、入力端子部２３ａと、出力端子部２３ｂと、設定部２５と、表示部２６とを含む。
【００４４】
中央演算処理部２０は、マイクロプロセッサ（ＭＰＵ）２０ａ、ＲＡＭ（Random  Access  Memory）２０ｂ、ＲＯＭ（Read  Only  Memory）２０ｃを含んでいる。これらのマイクロプロセッサ（ＭＰＵ）２０ａ、ＲＡＭ２０ｂ、ＲＯＭ２０ｃは、動作信頼性を保証するために二重化されている。
【００４５】
図３は、本実施の形態に従う安全スレーブ３の中央演算処理部２０の処理全体を示すゼネラルフローチャートである。
【００４６】
図３を参照して、中央演算処理部２０の全体は２台のＣＰＵ（ＣＰＵＡ，ＣＰＵＢ）から構成されており、それらのＣＰＵは、互いに同期を取りながら並列に動作して、電源投入直後に（ステップＳ１０ａ，Ｓ１０ｂ）、初期処理および自己診断処理（ステップＳ１２ａ，Ｓ１２ｂ）を実行する。そして、これらのＣＰＵは、同期処理（ステップＳ１４ａ，Ｓ１４ｂ）、自己診断処理（ステップＳ１６ａ，Ｓ１６ｂ）、周辺処理（ステップＳ１８ａ，Ｓ１８ｂ）、Ｉ／Ｏリフレッシュ処理（ステップＳ２０ａ，Ｓ２０ｂ）を同時並行的に実行するように構成されている。
【００４７】
ここで、「初期処理」とは、デバイス及びデータの初期化、保存データの読み出し等を行なう処理であり、「自己診断処理」とはハードウェア診断を行う処理である（ステップＳ１２ａ，１２ｂ）。「同期処理」（ステップＳ１４ａ，Ｓ１４ｂ）とは、２つのＣＰＵ間の時間的な同期処理（サイクル時間を一定にするためのＷａｉｔ処理を含む）、データ一致確認処理等を行なう処理である。また、自己診断処理（ステップＳ１６ａ，Ｓ１６ｂ）はハードウェア診断等を行う処理である。また、周辺処理（ステップＳ１８ａ，Ｓ１８ｂ）とは、外部メディア（メモリカード、ＲＴＣ等）に対するアクセス処理や外部デバイス、ツール等との通信処理等を行う処理である。Ｉ／Ｏリフレッシュ処理（ステップＳ２０ａ，Ｓ２０ｂ）とは、ローカル入出力（入出力ユニットを含む）の更新処理やリモートＩ／Ｏ入出力のデータ更新等を行う処理である。
【００４８】
再び、図２を参照して、入力端子部２３ａは、安全仕様に設計された安全入力機器４からの入力信号が与えられる１もしくは２以上の入力端子（端子１，端子２，・・・端子ｎ）を有している。ここで、各端子は１もしくは２以上の端子により構成される。安全入力機器４は、安全仕様となっているもので、具体的にはいわゆる安全用途スイッチなどをいう。安全用途の非常停止スイッチは、危険な状態になったときに押され、接点が開状態になってＯＦＦとなり、ＬＯＷ信号を出力する。逆に、当該スイッチは、安全な状態では押されず、接点が閉状態になってＯＮ信号（ＨＩＧＨ信号）を出力する。このように安全用途スイッチは、危険なときにＬＯＷ信号を出すように設計されている。
【００４９】
端子異常診断部２２ａは、入力端子部２３ａの各入力端子（端子１，端子２，・・・端子ｎ）に関する異常の有無を診断するために使用されるものであって、例えば特開２００４−２９７９９７公報に示されるように、様々な自己診断回路を含んでいる。ここで、「各入力端子に関する異常」とは、入力端子に接続された安全入力機器４の異常のみならず、端子自体の異常やその他様々な異常を含んでいる。端子異常診断部２２ａは、安全入力機器４側が自己診断機能をもっているなら、各端子に対応する安全入力機器４の自己診断結果を取り込んで、各入力機器をそれぞれ個別に異常があるか否かを診断する。また、端子異常診断部２２ａは、入力端子と安全入力機器４との間の配線に異常（断線、短絡など）があるか否かを各端子それぞれ別個に診断する。すなわち、端子異常診断部２２ａは、１系統の入力端子それぞれに別個に異常有無の状態（ステータス）を診断する。
【００５０】
出力端子部２３ｂは、それぞれ安全仕様に設計された安全出力機器５への出力信号が与えられる１もしくは２以上の出力端子（端子１，端子２，・・・端子ｍ）を有している。
【００５１】
端子異常診断部２２ｂは、出力端子部２３ｂの各出力端子（端子１，端子２，・・・端子ｍ）に関する異常の有無を診断するために使用される。この端子異常診断部２２ｂも、各端子に対する安全出力機器５が自己診断機能を持っているなら、各機器からそれぞれの自己診断結果を取り込んで、各出力機器をそれぞれ個別に異常があるか否かを診断する。また、端子異常診断部２２ｂは、出力端子と安全出力機器５との間の配線に異常があるか否かを各端子それぞれ別個に診断する。つまり、入力系と同時に、１系統の端子それぞれに別個に異常有無の状態（ステータス）を診断する。
【００５２】
設定部２５は、当該安全コントローラの動作に関する各種の設定を行うためのものであり、テンキー、ファンクションキー、キースイッチ等々で構成されている。
【００５３】
表示部２６は、当該安全コントローラの動作に関する各種の表示を行うためのものであり、適宜なサイズの液晶表示器、動作表示用のランプ等で構成されている。
【００５４】
なお、安全コントローラ１の内部ハードウェア構成は、安全スレーブ３の内部ハードウェア構成と同様のものを採用することができる。ただし、図３で説明した安全スレーブ３の中央演算部の処理全体を示すゼネラルフローチャートが若干異なる。具体的には、安全コントローラ１の中央演算部に含まれる２つのＣＰＵは、図３におけるＩ／Ｏリフレッシュ処理（ステップＳ２０ａ，Ｓ２０ｂ）の後に、さらに、演算処理を同時並行的に実行するように構成されている点が異なる。「演算処理」とは、ユーザが任意に作成したユーザプログラムを実行する処理である。
【００５５】
＜Ｃ．機能構成＞
図４は、本実施の形態に従う安全制御システム１００によって実現される機能の構成を表すブロック図である。本例では、安全コントローラ１におけるロジック演算処理の対象となるロジックプログラム（ユーザによって作成されるユーザプログラム）が、ファンクションブロックダイアグラム（以下、「ＦＢＤ」とも称する。）である場合について説明する。ＦＢＤを構成するための少なくとも１つのファンクションブロックは、それぞれ、入力された少なくとも１つの信号に対して当該ファンクションロックに対して予め定められた機能に応じた所定の処理を施した少なくとも１つの信号を出力する。なお、ユーザプログラムは、ＦＢＤに限られず、ラダー、シーケンシャル・ファンクション・チャート、ストラクチャード・テキスト、インストラクション・リスト、Ｃ言語などでプログラミングされていてもよい。
【００５６】
図４を参照して、まず、安全スレーブ２の機能構成について説明する。安全スレーブ２は、主たる機能構成として、通信判定部２０２と、異常判定部２０４と、取得部２０６と、通信制御部２０８と、実行判定部２１０と、データ格納部２１２とを含む。これらの機能は、基本的には、安全スレーブ２の中央演算処理部２０がプログラムを実行し、安全スレーブ２の構成要素へ指令を与えることなどによって実現される。すなわち、中央演算処理部２０は安全スレーブ２の動作全体を制御する制御部としての機能を有する。なお、これらの機能構成の一部または全部はハードウェアで実現されてもよい。
【００５７】
通信判定部２０２は、安全コントローラ１との通信が確立したか否かを判定する。より具体的には、通信判定部２０２は、通信インターフェイス２１を介して安全コントローラ１から送信された通信設定情報（例えば、安全コントローラ１を識別するための識別情報など）を受信した場合には、通信が確立したと判定し、当該通信設定情報を受信していない場合には、通信が確立していないと判定する。
【００５８】
異常判定部２０４は、安全スレーブ２に接続される機器からの入力信号に基づいて、異常の有無を判定する。異常判定部２０４は、ある局面では、安全入力機器４からの入力信号が与えられる入力端子に関する異常の有無を判定する。より具体的には、異常判定部２０４は、端子異常診断部２２ａに対して上述したような異常診断を実行させて、当該異常判定を行なう。
【００５９】
取得部２０６は、安全入力機器４における動作の有無に関する動作情報を安全入力機器４から取得する。より具体的には、取得部２０６は、入力端子部２３ａを介して安全入力機器４それぞれ個別のオンオフ動作に関する動作情報（動作有り無し信号）を取得する。
【００６０】
通信制御部２０８は、通信判定部２０２の判定結果と異常判定部２０４の判定結果とに基づく実行制御情報であって、安全コントローラ１におけるユーザプログラムの実行を制御するための実行制御情報と、安全入力機器４の動作情報とを安全コントローラ１に送信する。当該実行制御情報は、後述する実行判定部２１０の判定結果を含む。なお、通信制御部２０８は、実行制御情報と動作情報とをデータ格納部２１２に格納してもよい。
【００６１】
実行判定部２１０は、通信判定部２０２の判定結果と異常判定部２０４の判定結果とに基づいて、安全コントローラ１にユーザプログラムを実行させるか否かを判定する。より具体的には、実行判定部２１０は、通信判定部２０２において安全コントローラ１との通信が確立しているとの判定結果、かつ異常判定部２０４において安全入力機器４に異常なしとの判定結果に基づいて、安全コントローラ１にユーザプログラムを実行させると判定する。また、実行判定部２１０は、通信判定部２０２において安全コントローラ１との通信が確立していないとの判定結果、および異常判定部２０４において安全入力機器４に異常ありとの判定結果の少なくともいずれかに基づいて、安全コントローラ１にユーザプログラムを実行させないと判定する。
【００６２】
実行判定部２１０は、別の局面では、安全コントローラ１にユーザプログラムを実行させると判定した場合には、実行制御情報の論理値を高エネルギー側の”１”（”ＨＩＧＨ”）に設定し、当該ユーザプログラムを実行させないと判定した場合には、実行制御情報の論理値を高エネルギー側ではない側の”０”（”ＬＯＷ”）に設定する。
【００６３】
次に、安全コントローラ１の機能構成について説明する。安全コントローラ１は、主たる機能構成として、通信制御部１０２と、演算部１０４と、データ格納部１０６とを含む。また、安全コントローラ１は、ハードウェア構成として、安全スレーブ２と通信するための通信インターフェイス１１を含む。これらの機能は、基本的には、安全コントローラ１の中央演算処理部１０がプログラムを実行し、安全コントローラ１の構成要素へ指令を与えることなどによって実現される。すなわち、中央演算処理部１０は安全コントローラ１の動作全体を制御する制御部としての機能を有する。なお、これらの機能構成の一部または全部はハードウェアで実現されていてもよい。
【００６４】
通信制御部１０２は、安全コントローラ１と安全スレーブ２との通信が確立している場合には、通信インターフェイス１１を介して実行制御情報および動作情報を受信する。通信制御部１０２は、受信した実行制御情報と動作情報とをデータ格納部１０６に格納する。
【００６５】
演算部１０４は、受信した実行制御情報および動作情報に基づいて、ユーザプログラムを実行する。より具体的には、演算部１０４は、受信した実行制御情報に基づいてユーザプログラムを実行するか否かを判定する。そして、演算部１０４は、ユーザプログラムを実行すると判定した場合には、受信した動作情報に基づいてユーザプログラムを実行する。より具体的には、演算部１０４は、図５に示すような機能を有するファンクションブロックの演算を実行する。
【００６６】
図５は、本実施の形態に従うファンクションブロックの機能を説明するための図である。
【００６７】
図５を参照して、演算部１０４は、「Ａｃｔｉｖａｔｅ」の入力の論理値が”１”（”ＨＩＧＨ）である場合には、当該ファンクションブロックの演算を実行し、「Ａｃｔｉｖａｔｅ」の入力の論理値が”０”（”ＬＯＷ”）である場合には、当該ファンクションブロックの演算を実行しない。演算部１０４は、この「Ａｃｔｉｖａｔｅ」への入力信号として、実行制御情報を使用し、「Ｉｎｐｕｔ０」への入力信号として、動作情報を使用する。したがって、演算部１０４は、実行制御情報の論理値が”１”である場合には、「Ｉｎｐｕｔ０」に入力される動作情報に基づいて、ファンクションブロックを実行し、実行制御情報の論理値が”０”である場合には、ファンクションブロックを実行しないように構成されている。
【００６８】
より具体的には、演算部１０４は、安全入力機器４の入力端子に関して異常が無く、かつ安全コントローラ１と安全スレーブ２との通信が確立している場合には、「Ｉｎｐｕｔ０」に入力される信号（動作情報）は有効なものであるため、ファンクションブロックの演算を実行する。一方、演算部１０４は、安全入力機器４の入力端子に関して異常があるか、および／または安全コントローラ１と安全スレーブ２との通信が確立していない場合には、「Ｉｎｐｕｔ０」に入力される信号（動作情報）は無効なもの（使用すべきでないもの）であるため、ファンクションブロックの演算を実行しない。
【００６９】
再び、図４を参照して、通信制御部１０２は、別の局面では、通信が確立していない、または通信異常が発生していると判断した場合には、受信した動作情報の論理値を”０”に設定してもよい（動作情報をクリアしてもよい）。これにより、安全制御システム１００を安全状態に保持することができる。
【００７０】
＜Ｄ．処理手順＞
本実施の形態に従う安全制御システム１００において安全コントローラ１がファンクションブロックの演算を実行するまでの処理の流れについて説明する。
【００７１】
図６は、本実施の形態に従う安全制御システム１００において実行される制御処理手順を示すフローチャートである。以下の各ステップは、安全スレーブ２の中央演算処理部２０がメモリ（ＲＯＭ、ＲＡＭなど）に格納されたプログラムを実行するとともに、安全コントローラ１の中央演算処理部１０がメモリ（ＲＯＭ、ＲＡＭなど）に格納されたプログラムを実行することによって実現される。
【００７２】
図６を参照して、安全スレーブ２の中央演算処理部２０は、安全コントローラ１との通信が確立したか否かを判定する（ステップＳ１０２）。より具体的には、中央演算処理部２０は、通信インターフェイス２１を介して安全コントローラ１から送信された通信設定情報を受信したか否か判定することで、当該判定を行なう。
【００７３】
中央演算処理部２０は、通信が確立していないと判定した場合には（ステップＳ１０２においてＮＯ）、後述するステップＳ１１０の処理を実行する。これに対して、中央演算処理部２０は、通信が確立したと判定した場合には（ステップＳ１０２においてＹＥＳ）、安全スレーブ２に接続された安全入力機器４の実際の動作状態を示す入力データ（動作情報）を取得する（ステップＳ１０４）。
【００７４】
次に、中央演算処理部２０は、端子異常診断部２２ａを介して入力端子に関する異常の有無を判定する（ステップＳ１０６）。より具体的には、中央演算処理部２０は、入力端子それぞれ個別に、安全入力機器４側における自己診断結果信号を取得して異常の有無を判定するか、または配線上の異常有無などを判定する。この異常判定処理においては、安全入力機器４の異常のみならず、端子部の１つ１つの入力端子それぞれの異常、さらには必要な様々な異常の判定が行われる。
【００７５】
入力端子に異常がある場合には（ステップＳ１０６においてＹＥＳ）、中央演算処理部２０は、安全コントローラ１におけるファンクションブロックの演算の実行を制御するための実行制御情報の論理値を”０”（”ＬＯＷ”）に設定する（ステップＳ１１０）。すなわち、中央演算処理部２０は、安全コントローラ１との通信が確立していないとの判定結果、または入力端子に異常があるとの判定結果を受けて、安全コントローラ１にファンクションブロックの演算を実行させないように当該実行制御情報の論理値を設定する。
【００７６】
これに対して、入力端子に異常がない場合には（ステップＳ１０６においてＮＯ）、中央演算処理部２０は、実行制御情報の論理値を”１”（”ＨＩＧＨ”）に設定する（ステップＳ１０８）。すなわち、中央演算処理部２０は、安全コントローラ１との通信が確立しているとの判定結果、かつ入力端子に異常がないとの判定結果に基づいて、安全コントローラ１にファンクションブロックの演算を実行させるように当該実行制御情報の論理値を設定する。
【００７７】
次に、中央演算処理部２０は、通信インターフェイス２１を介して、実行制御情報および安全入力機器４から取得した動作情報を、安全コントローラ１におけるファンクションブロックに入力される入力信号として安全コントローラ１に送信する（ステップＳ１１２）。
【００７８】
次に、安全コントローラ１の中央演算処理部１０は、通信インターフェイス１１を介して、実行制御情報および動作情報を受信する（ステップＳ１１４）。次に、中央演算処理部１０は、実行制御情報の論理値が”１”に設定されているか否かを判定する（ステップＳ１１６）。すなわち、中央演算処理部１０は、実行制御情報がファンクションブロックの演算を実行するように設定されているか否かを判定する。
【００７９】
実行制御情報の論理値が”１”に設定されている場合には（ステップＳ１１６においてＹＥＳ）、中央演算処理部２０は、ファンクションブロックの演算を実行する（ステップＳ１１８）。これに対して、実行制御情報の論理値が”１”に設定されていない（つまり、論理値が”０”に設定されている）場合には（ステップＳ１１６においてＮＯ）、中央演算処理部２０は、ファンクションブロックの演算を実行しない（ステップＳ１２０）。そして、中央演算処理部２０は、ファンクションブロックの演算実行までの処理を終了する。
【００８０】
中央演算処理部２０は、ファンクションブロックの演算を実行した場合には、その後、ファンクションブロックの実行結果としての出力信号を安全スレーブ２に送信し、安全スレーブ２は受信した出力信号を安全出力機器５に出力する。
【００８１】
上記では、「ファンクションブロックの演算を実行させる」ことを、実行制御情報の論理値のうち高エネルギー側の“１”（”ＨＩＧＨ”）に対応づけている。そのため、実行制御情報の論理値は、実際に通信が確立し、かつ入力端子に異常なしを確認した上で積極的に「ファンクションブロックの演算を実行させる」と判定されない限り、高エネルギー側の”１”にはならないため、実行制御情報は高い信頼性をもつ。例えば、電源投入直後の場合など、上記判定がなされていない状態において、ファンクションブロックの演算を実行させることを示すデータが誤って安全コントローラ１に送信されることもない。
【００８２】
なお、上記では、中央演算処理部２０は、ステップＳ１０２において通信確立の判定処理を実行した後に、ステップＳ１０４およびＳ１０６において、動作情報の取得処理および入力端子の異常診断処理を実行する場合について説明したが、これに限られない。中央演算処理部２０は、ステップＳ１０４およびＳ１０６の処理を実行後に、ステップＳ１０２を実行する場合であってもよい。あるいは、中央演算処理部２０は、ステップＳ１０２の通信判定処理とステップＳ１０６の異常判定処理とを同時並行的に実行する場合であってもよい。
【００８３】
＜Ｅ．実施の形態の効果＞
本実施の形態によると、安全コントローラ側では、有効な入力データのみを使用してファンクションブロックを実行するため、ファンクションブロックの不要な実行エラーを発生させずに済むため、装置の稼働率を維持することができる。
【００８４】
また、安全スレーブから通信確立の判定結果および入力端子の異常判定結果が考慮された上で、有効性が判定された入力データが送信されるため、安全コントローラ側で新たに入力データの有効性を判定するためのファンクションブロックが不要になる。そのため、安全コントローラ側の処理負担が軽減される。特に、１台の安全コントローラに対してネットワーク上に多数の安全スレーブが接続された場合でも、安全コントローラ側の処理負担が過度に増大することもない。また、ユーザのプログラミングの迷い、および誤ったプログラミングを防止することもできる。さらに、安全コントローラのメモリ消費量を増大させることもない。
【００８５】
＜Ｆ．その他の実施の形態＞
上述した実施の形態では、安全スレーブ２に安全入力機器４が接続されている場合について説明したが、これに限られない。例えば、安全スレーブ２に接続される入力機器として、エンコーダ入力機器、温度センサなどが接続されていてもよい。この場合、安全スレーブ２は、これらの入力機器からの入力信号が与えられる入力端子に関する異常の有無を判定する。安全スレーブ２は、入力機器における動作の有無に関する動作情報を入力機器から取得し、実行制御情報と、動作情報とを安全コントローラ１に送信してもよい。
【００８６】
また、上述した実施の形態では、入力端子部２３ａを介して端子異常診断部２２ａに安全入力機器４が接続されている場合について説明したが、これに限られない。例えば、端子異常診断部２２ａに、安全入力機器４が接続されており、当該安全入力機器４からの入力信号を直接取得する場合であってもよい。
【００８７】
なお、安全スレーブ２は、安全出力機器５（あるいは出力機器）からの入力信号に基づいて、異常の有無を判定してもよい。安全スレーブ２は、当該出力機器における動作の有無に関する動作情報を当該出力機器から取得し、実行制御情報と、動作情報とを安全コントローラ１に送信してもよい。
【００８８】
なお、コンピュータを機能させて、上述のフローチャートで説明したような制御を実行させるプログラムを提供することもできる。このようなプログラムは、コンピュータに付属するフレキシブルディスク、ＣＤ−ＲＯＭ、ＲＯＭ、ＲＡＭおよびメモリカードなどの一時的でないコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【００８９】
プログラムは、コンピュータのオペレーティングシステム（ＯＳ）の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずＯＳと協働して処理が実行される。このようなモジュールを含まないプログラムも、本実施の形態にかかるプログラムに含まれ得る。
【００９０】
また、本実施の形態に従うプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本実施の形態に従うプログラムに含まれ得る。
【００９１】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００９２】
１  安全コントローラ、２  安全スレーブ、４  安全入力機器、５  安全出力機器、６  バス、１０，２０  中央演算処理部、１１，２１  通信インターフェイス、２０ａ  ＭＰＵ、２０ｂ  ＲＡＭ、２０ｃ  ＲＯＭ、２１  通信インターフェイス部、２２ａ，２２ａ，２２ｂ，２２ｂ  端子異常診断部、２３ａ  入力端子部、２３ｂ  出力端子部、２５  設定部、２６  表示部、１００  安全制御システム、１０２，２０８  通信制御部、１０４  演算部、１０６，２１２  データ格納部、２０２  通信判定部、２０４  異常判定部、２０６  取得部、２１０  実行判定部。
【図１】
2014098985.tif 000003
【図２】
2014098985.tif 000004
【図３】
2014098985.tif 000005
【図４】
2014098985.tif 000006
【図５】
2014098985.tif 000007
【図６】
2014098985.tif 000008