(57)【要約】【課題】安全プログラムのシミュレーション時における手間を軽減することができる情報処理装置を提供する。【解決手段】情報処理装置は、予め用意されている複数種類のファンクションブロックから組み合わされた１つ以上のファンクションブロックを元に安全プログラムを生成するための生成部を備える。ファンクションブロック２５７は、入力信号を受けるための入力部２７０と、入力信号が変化したことに基づいて、対象機器の動作状態を変化させる制御信号を出力するための出力部２７２と、対象機器の動作状態を示すフィードバック信号を受けるための入力部２７４と、制御信号が変化してから所定時間が経過するまでの間においてフィードバック信号が変化しない場合に、エラーを出力するための出力部２７６とを有する。情報処理装置は、安全プログラムにファンクションブロック２５７が含まれているときに、出力部２７６によるエラーの出力を無効にする。【選択図】図５
2018151867.tif 000002
【特許請求の範囲】
【請求項１】
予め定められた条件が成立すると安全が保たれるように対象機器を動作させる安全プログラムの評価を行うための情報処理装置であって、
予め用意されている複数種類のファンクションブロックから組み合わされた１つ以上のファンクションブロックを元に前記安全プログラムを生成するための生成部を備え、
前記複数種類のファンクションブロックは、前記対象機器の動作を監視するための監視ファンクションブロックを含み、
前記監視ファンクションブロックは、
第１入力信号を受けるための第１入力部と、
前記第１入力信号が変化したことに基づいて、前記対象機器の動作状態を変化させる制御信号を出力するための第１出力部と、
前記対象機器の動作状態を示す第２入力信号を受けるための第２入力部と、
前記制御信号が変化してから所定時間が経過するまでの間において前記第２入力信号が変化しない場合に、エラーを出力するための第２出力部とを有し、
前記情報処理装置は、前記安全プログラムの動作をシミュレーションするための実行部をさらに備え、
前記実行部は、前記安全プログラムの生成元のファンクションブロックに前記監視ファンクションブロックが含まれているときに、前記第２出力部による前記エラーの出力を無効にする、情報処理装置。
【請求項２】
前記情報処理装置は、前記対象機器の動作状態を模擬的に表した模擬信号を生成するためのエミュレータをさらに備え、
前記実行部による前記安全プログラムの実行モードは、第１シミュレーションモードと、第２シミュレーションモードとを含み、
前記実行部は、
前記実行モードが前記第１シミュレーションモードである場合、前記第２出力部による前記エラーの出力を無効にし、
前記実行モードが前記第２シミュレーションモードである場合、前記模擬信号を前記第２入力部に入力する、請求項１に記載の情報処理装置。
【請求項３】
前記実行部は、前記実行モードが前記第２シミュレーションモードである場合、前記制御信号が変化してから前記所定時間が経過するまでの間に前記模擬信号を変化させる、請求項２に記載の情報処理装置。
【請求項４】
前記実行部は、前記安全プログラムの生成元のファンクションブロックに前記監視ファンクションブロックが複数含まれている場合に、当該複数の監視ファンクションブロックのすべてについて前記エラーの出力を無効にする、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記情報処理装置は、
前記安全プログラムを設計するためのユーザインターフェイスを提供する提供部と、
前記複数種類のファンクションブロックの任意のファンクションブロックを前記ユーザインターフェイスに配置する操作を受けるための操作受付部とをさらに備え、
前記ユーザインターフェイスは、当該ユーザインターフェイスに前記監視ファンクションブロックが含まれている場合において、前記エラーの出力が無効に設定されているときに、前記エラーの出力が無効であることを示す予め定められた態様で前記監視ファンクションブロックを表示する、請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
前記態様で前記監視ファンクションブロックを表示することは、前記ユーザインターフェイスにおいて前記監視ファンクションブロックを他のファンクションブロックとは異なる態様で表示することを含む、請求項５に記載の情報処理装置。
【請求項７】
予め定められた条件が成立すると安全が保たれるように対象機器を動作させる安全プログラムを評価するための情報処理方法であって、
予め用意されている複数種類のファンクションブロックから組み合わされた１つ以上のファンクションブロックを元に前記安全プログラムを生成するステップを備え、
前記複数種類のファンクションブロックは、前記対象機器の動作を監視するための監視ファンクションブロックを含み、
前記監視ファンクションブロックによって実行される処理は、
第１入力信号を受けるステップと、
前記第１入力信号が変化したことに基づいて、前記対象機器の動作状態を変化させる制御信号を出力するステップと、
前記対象機器の動作状態を示す第２入力信号を受けるステップと、
前記制御信号が変化してから所定時間が経過するまでの間において前記第２入力信号が変化しない場合に、エラーを出力するステップとを有し、
前記情報処理方法は、前記安全プログラムの動作をシミュレーションするステップをさらに備え、
前記シミュレーションするステップは、前記安全プログラムの生成元のファンクションブロックに前記監視ファンクションブロックが含まれているときに、前記エラーを出力するステップにおける前記エラーの出力を無効にするステップを含む、情報処理方法。
【請求項８】
予め定められた条件が成立すると安全が保たれるように対象機器を動作させる安全プログラムを評価するための情報処理プログラムであって、
前記情報処理プログラムは、コンピュータに、
予め用意されている複数種類のファンクションブロックから組み合わされた１つ以上のファンクションブロックを元に前記安全プログラムを生成するステップを実行させ、
前記複数種類のファンクションブロックは、前記対象機器の動作を監視するための監視ファンクションブロックを含み、
前記監視ファンクションブロックによって実行される処理は、
第１入力信号を受けるステップと、
前記第１入力信号が変化したことに基づいて、前記対象機器の動作状態を変化させる制御信号を出力するステップと、
前記対象機器の動作状態を示す第２入力信号を受けるステップと、
前記制御信号が変化してから所定時間が経過するまでの間において前記第２入力信号が変化しない場合に、エラーを出力するステップとを有し、
前記情報処理プログラムは、コンピュータに、さらに、前記安全プログラムの動作をシミュレーションするステップをさらに実行させ、
前記シミュレーションするステップは、前記安全プログラムの生成元のファンクションブロックに前記監視ファンクションブロックが含まれているときに、前記エラーを出力するステップにおける前記エラーの出力を無効にするステップを含む、情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、安全プログラムの動作をシミュレーションするための技術に関する。
【背景技術】
【０００２】
多くの製造現場で使用される機械を安全に使用するためには、国際規格に従う安全機器（安全コンポーネント）を使用しなければならばない。この安全機器は、ロボットなどの自動的に動く装置によって人の安全が脅かされることの防止を目的としている。このような安全機器は、安全プログラムを実行する安全コントローラをはじめとして、人の存在や侵入を検知する検知機器、非常時の操作を受付ける入力機器、実際に機器を停止させる出力機器などを含む。
【０００３】
製造現場での安全を確保する技術の一つとして、たとえば、特開２０１４−１３７６２１号公報（特許文献１）は、安全コントローラのユーザプログラムの設計を容易にすることが可能な安全コントローラのユーザプログラムの設計を支援する方法を開示する。
【０００４】
特開２０１４−１３７６２１号公報（特許文献１）は、安全コントローラと安全Ｉ／Ｏターミナルとがバス型ネットワークを介して接続され、安全コントローラでは、安全Ｉ／Ｏターミナルに接続される安全入力機器からの入力信号に基づいて、安全Ｉ／Ｏターミナルに接続される安全出力機器に対して安全動作を行うための指令を出力する構成を開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１３７６２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
安全プログラムは、予め用意されている複数種類のファンクションブロックから組み合わされた１つ以上のファンクションブロックを元に生成される。安全プログラムは、安全機器からの入力信号に基づいて、対象機器を制御する。ファンクションブロックの１つとして、ＥＤＭ（External Device Monitoring）ファンクションブロックがある。ＥＤＭファンクションブロックは、ロボットのモータなどの対象機器が意図した通りに動作しているか否かを監視するための機能モジュールである。ＥＤＭファンクションブロックは、対象機器の動作状態を示すフィードバック信号の入力を受けて、対象機器が意図した通りに動作しているか否かを判断する。対象機器が意図した通りに動作していないと判断した場合には、ＥＤＭファンクションブロックは、エラーを出力し、対象機器を強制的に停止させる。
【０００７】
安全コントローラで実行される安全プログラムは、意図する通りに動作する必要がある。そのため、設計者は、安全コントローラで安全プログラムを実行する前に、ＰＣ（Personal Computer）などの情報処理装置上で、作成した安全プログラムの動作をシミュレーションする。設計者は、安全プログラムが正常に動作していることをシミュレーション上で確認し、その後、安全プログラムを安全コントローラに送信する。
【０００８】
シミュレーションでは、対象機器が接続されていないため、フィードバック信号が対象機器から得られない。そのため、ＥＤＭファンクションブロックが安全プログラムに含まれている場合には、安全プログラムのシミュレーション時にエラーが出力されてしまう。このエラーを回避するために、設計者は、シミュレーション時においてはＥＤＭファンクションブロックを敢えて削除している。したがって、安全プログラムのシミュレーション時における手間を軽減することが可能な技術が望まれている。
【課題を解決するための手段】
【０００９】
ある局面に従うと、予め定められた条件が成立すると安全が保たれるように対象機器を動作させる安全プログラムの評価を行うための情報処理装置は、予め用意されている複数種類のファンクションブロックから組み合わされた１つ以上のファンクションブロックを元に上記安全プログラムを生成するための生成部を備える。上記複数種類のファンクションブロックは、上記対象機器の動作を監視するための監視ファンクションブロックを含む。上記監視ファンクションブロックは、第１入力信号を受けるための第１入力部と、上記第１入力信号が変化したことに基づいて、上記対象機器の動作状態を変化させる制御信号を出力するための第１出力部と、上記対象機器の動作状態を示す第２入力信号を受けるための第２入力部と、上記制御信号が変化してから所定時間が経過するまでの間において上記第２入力信号が変化しない場合に、エラーを出力するための第２出力部とを有する。上記情報処理装置は、上記安全プログラムの動作をシミュレーションするための実行部をさらに備える。上記実行部は、上記安全プログラムの生成元のファンクションブロックに上記監視ファンクションブロックが含まれているときに、上記第２出力部による上記エラーの出力を無効にする。
【００１０】
好ましくは、上記情報処理装置は、上記対象機器の動作状態を模擬的に表した模擬信号を生成するためのエミュレータをさらに備える。上記実行部による上記安全プログラムの実行モードは、第１シミュレーションモードと、第２シミュレーションモードとを含む。上記実行部は、上記実行モードが上記第１シミュレーションモードである場合、上記第２出力部による上記エラーの出力を無効にし、上記実行モードが上記第２シミュレーションモードである場合、上記模擬信号を上記第２入力部に入力する。
【００１１】
好ましくは、上記実行部は、上記実行モードが上記第２シミュレーションモードである場合、上記制御信号が変化してから上記所定時間が経過するまでの間に上記模擬信号を変化させる。
【００１２】
好ましくは、上記実行部は、上記安全プログラムの生成元のファンクションブロックに上記監視ファンクションブロックが複数含まれている場合に、当該複数の監視ファンクションブロックのすべてについて上記エラーの出力を無効にする。
【００１３】
好ましくは、上記情報処理装置は、上記安全プログラムを設計するためのユーザインターフェイスを提供する提供部と、上記複数種類のファンクションブロックの任意のファンクションブロックを上記ユーザインターフェイスに配置する操作を受けるための操作受付部とをさらに備える。上記ユーザインターフェイスは、当該ユーザインターフェイスに上記監視ファンクションブロックが含まれている場合において、上記エラーの出力が無効に設定されているときに、上記エラーの出力が無効であることを示す予め定められた態様で上記監視ファンクションブロックを表示する。
【００１４】
好ましくは、上記態様で上記監視ファンクションブロックを表示することは、上記ユーザインターフェイスにおいて上記監視ファンクションブロックを他のファンクションブロックとは異なる態様で表示することを含む。
【００１５】
他の局面に従うと、予め定められた条件が成立すると安全が保たれるように対象機器を動作させる安全プログラムを評価するための情報処理方法は、予め用意されている複数種類のファンクションブロックから組み合わされた１つ以上のファンクションブロックを元に上記安全プログラムを生成するステップを備える。上記複数種類のファンクションブロックは、上記対象機器の動作を監視するための監視ファンクションブロックを含む。上記監視ファンクションブロックによって実行される処理は、第１入力信号を受けるステップと、上記第１入力信号が変化したことに基づいて、上記対象機器の動作状態を変化させる制御信号を出力するステップと、上記対象機器の動作状態を示す第２入力信号を受けるステップと、上記制御信号が変化してから所定時間が経過するまでの間において上記第２入力信号が変化しない場合に、エラーを出力するステップとを有する。上記情報処理方法は、上記安全プログラムの動作をシミュレーションするステップをさらに備える。上記シミュレーションするステップは、上記安全プログラムの生成元のファンクションブロックに上記監視ファンクションブロックが含まれているときに、上記エラーを出力するステップにおける上記エラーの出力を無効にするステップを含む。
【００１６】
他の局面に従うと、予め定められた条件が成立すると安全が保たれるように対象機器を動作させる安全プログラムを評価するための情報処理プログラムは、コンピュータに、予め用意されている複数種類のファンクションブロックから組み合わされた１つ以上のファンクションブロックを元に上記安全プログラムを生成するステップを実行させる。上記複数種類のファンクションブロックは、上記対象機器の動作を監視するための監視ファンクションブロックを含む。上記監視ファンクションブロックによって実行される処理は、第１入力信号を受けるステップと、上記第１入力信号が変化したことに基づいて、上記対象機器の動作状態を変化させる制御信号を出力するステップと、上記対象機器の動作状態を示す第２入力信号を受けるステップと、上記制御信号が変化してから所定時間が経過するまでの間において上記第２入力信号が変化しない場合に、エラーを出力するステップとを有する。上記情報処理プログラムは、コンピュータに、さらに、上記安全プログラムの動作をシミュレーションするステップをさらに実行させる。上記シミュレーションするステップは、上記安全プログラムの生成元のファンクションブロックに上記監視ファンクションブロックが含まれているときに、上記エラーを出力するステップにおける上記エラーの出力を無効にするステップを含む。
【発明の効果】
【００１７】
ある局面において、安全プログラムのシミュレーション時における手間を軽減することができる。
【図面の簡単な説明】
【００１８】
【図１】実施の形態に従う安全システムの概略構成の一例を示す模式図である。
【図２】実施の形態に従う安全コントローラの装置構成の一例を示す模式図である。
【図３】実施の形態に従う情報処理装置の装置構成の一例を示す模式図である。
【図４】実施の形態に従う安全プログラムの設計画面の一例であるユーザインターフェイスを示す図である。
【図５】ＥＤＭファンクションブロックの一例であるファンクションブロックを示す図である。
【図６】実施の形態に従う情報処理装置の機能構成の一例を示す図である。
【図７】ＥＤＭエラーの出力の無効化時におけるＥＤＭファンクションブロックの表示態様の一例を示す図である。
【図８】模擬信号がＥＤＭファンクションブロックであるファンクションブロックに出力されている様子を示す図である。
【図９】模擬信号の生成ルールを設定するための設定画面を示す図である。
【図１０】ディスプレイに表示されているシミュレーション結果画面を示す図である。
【図１１】第１シミュレーションモードで安全プログラムを実行したときの信号状態を示す図である。
【図１２】実機モードで安全プログラムを実行したときの信号状態を示す図である。
【図１３】シミュレーション時における安全プログラムの実行フローを示す図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わされてもよい。
【００２０】
＜Ａ．安全システム１の概要＞
まず、本実施の形態に従う安全システム１の構成について説明する。図１は、本実施の形態に従う安全システム１の概略構成の一例を示す模式図である。
【００２１】
図１を参照して、安全システム１は、主として、設備や機械などを制御する制御装置３００と、安全コントローラ１００とを含む。
【００２２】
制御装置３００は、典型的には、ＰＬＣ（プログラマブルコントローラ）などで構成され、制御対象から取得された入力データに関して、予め定められたユーザプログラムを実行し、それによって算出される出力データに応じて制御対象に指令を与える。図１に示す制御対象として、モータ１０およびモータ１０を駆動するドライバ１２を例示する。制御装置３００は、ユーザプログラムに従って、ある駆動開始条件が成立するとモータ１０を回転駆動させるために、ドライバ１２に駆動指令を出力する。また、ある駆動停止条件が成立するとモータ１０の回転駆動を停止させるために、ドライバ１２への駆動指令の出力を停止する。
【００２３】
このような制御装置３００での制御対象の制御に加えて、典型的には、制御対象に関連する作業者などの安全を確保するなどのために、安全コントローラ１００がさらに配置される。安全コントローラ１００は、セーフティ入力コンポーネント（セーフティセンサ、セーフティドアスイッチ、セーフティリミットスイッチ、非常停止スイッチ、セーフティスイッチなど）からの入力信号などの関連付けられる、予め定められた条件（安全条件）が成立すると、安全動作を遂行する。
【００２４】
図１に示す例では、ドライバ１２への電力供給ライン上にセーフティリレー１４が配置されている。セーフティリレー１４は、たとえば、電路の遮断するためのコンタクタである。また、モータ１０により駆動される装置の周辺に危険エリアが設定されており、その危険エリアの周辺に安全機器１６が配置されている。安全機器１６は、たとえば、人の存在や侵入を検知する検知機器、非常時の操作を受付ける入力機器、実際に機器を停止させる出力機器などを含む。セーフティリレー１４は、安全機器１６からの入力信号を受けることで駆動する。
【００２５】
一例として、非常停止スイッチとしての安全機器１６が作業者による非常停止操作を受けると、安全コントローラ１００は、非常停止スイッチからの停止信号に応答して、セーフティリレー１４に制御信号を出力する。セーフティリレー１４は、安全コントローラ１００からの制御信号に応答して動作し、モータ１０を駆動するドライバ１２への電力供給を遮断する。その結果、モータ１０が強制的に停止される。このようなモータ１０の強制的な停止によって、作業者の安全を確保することができる。
【００２６】
他の例として、セーフティセンサとしての安全機器１６は、作業者が危険エリアへ進入したことを検知する。作業者が危険エリアへ進入すると、セーフティセンサによりその作業者の進入が検知される。安全コントローラ１００は、セーフティセンサからの検知信号に応答して、セーフティリレー１４に制御信号を出力する。セーフティリレー１４は、安全コントローラ１００からの制御信号に応答して動作し、モータ１０を駆動するドライバ１２への電力供給を遮断する。その結果、モータ１０が強制的に停止される。このようなモータ１０の強制的な停止によって、危険エリアへ進入した作業者の安全を確保することができる。
【００２７】
図１に示す構成例においては、安全コントローラ１００および制御装置３００は、制御系ネットワーク２０を介して接続されており、互いが内部的に保持するデータを遣り取りすることができる。また、安全コントローラ１００および制御装置３００は、情報系ネットワーク２２を介して、情報処理装置２００と接続されている。
【００２８】
情報処理装置２００は、安全コントローラ１００または制御装置３００で実行されるプログラムの開発、プログラムの実行状態の確認、プログラムの変更などの機能を提供するためのサポートツールである。情報処理装置２００は、たとえば、ＰＣ（Personal Computer）、タブレット端末、スマートフォン、または、その他の通信端末である。
【００２９】
＜Ｂ．装置構成＞
次に、本実施の形態に従う安全システム１を構成する各装置の装置構成について説明する。
【００３０】
（ｂ１：安全コントローラ１００）
図２は、本実施の形態に従う安全コントローラ１００の装置構成の一例を示す模式図である。図２を参照して、安全コントローラ１００は、プロセッサ１０２と、主メモリ１０４と、フラッシュメモリ１０６とを含む演算処理部１０８、および、各種インターフェイスからなる。
【００３１】
演算処理部１０８において、プロセッサ１０２は、フラッシュメモリ１０６に格納されているシステムプログラムおよび安全プログラムなどを主メモリ１０４に展開して実行することで、制御対象に応じた機能安全を実現する。
【００３２】
本明細書において、「安全プログラム」は、予め定められた条件（安全条件）が成立すると対象機器を安全が保たれるように動作させるためのプログラムであり、安全コントローラの処理を定義する命令群を意味する。より具体的には、安全プログラムは、１または複数の入力信号に対して、１または複数の出力信号の値を決定するための命令の組み合わせを含む。
【００３３】
安全プログラムは、安全コントローラの処理を定義するものであれば、どのような実体であってもよい。すなわち、安全プログラムは、１または複数のソースコードとして存在してもよいし、１または複数のオブジェクトコードとして存在してもよいし、安全コントローラのプロセッサで実行可能な形式（実行形式）であってもよい。
【００３４】
また、安全プログラムは、ファンクションブロックダイアグラム（ＦＢＤ：Function Block Diagram）を用いて記述されていてもよい。あるいは、ラダーダイアグラム（ＬＤ：Ladder Diagram）、命令リスト（ＩＬ：Instruction List）、構造化テキスト（ＳＴ：Structured Text）、および、シーケンシャルファンクションチャート（ＳＦＣ：Sequential Function Chart）のいずれか、あるいは、これらの組み合わせで記述されてもよい。あるいは、ＪａｖａＳｃｒｉｐｔ（登録商標）やＣ言語のような汎用的なプログラミング言語で記述されていてもよい。
【００３５】
以下の説明では、変数プログラムとして記述された安全プログラムについて例示する。そのため、実際に安全コントローラと安全コンポーネントなどとの間で遣り取りされる信号（典型的には、入力信号および出力信号）を安全プログラム内では、それぞれ「変数」として取り扱うことになる。これらの現実の信号と安全プログラム内の対応する変数とは本質的に同じものであるため、以下の説明では、これらを「信号」と総称することもある。すなわち、本明細書において、「信号」は、現実に遣り取りされる電気信号に加えて、安全コントローラ上でその電気信号に割り当てられた値を参照する変数を含み得る。
【００３６】
安全コントローラ１００は、インターフェイスとして、制御系ネットワークインターフェイス１１０と、情報系ネットワークインターフェイス１１２と、フィールドバスインターフェイス１１４と、メモリカードインターフェイス１１６と、ローカル通信インターフェイス１２０と、内部バスインターフェイス１２２とを含む。
【００３７】
制御系ネットワークインターフェイス１１０は、制御系ネットワーク２０を介して他の装置との通信を仲介する。制御系ネットワーク２０としては、たとえば、ＥｔｈｅｒＣＡＴ（登録商標）などの定時性が保証されるネットワークプロトコルが好ましい。
【００３８】
情報系ネットワークインターフェイス１１２は、情報系ネットワーク２２を介して他の装置との通信を仲介する。情報系ネットワーク２２としては、たとえば、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）などの定時性が保証されるネットワークプロトコルが好ましい。
【００３９】
フィールドバスインターフェイス１１４は、図示しないフィールドバスを介して接続される入出力ユニットとの通信を仲介する。フィールドバスとしては、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などの定時性が保証されるネットワークプロトコルが好ましい。
【００４０】
メモリカードインターフェイス１１６は、メモリカード１１８を装着可能に構成されており、メモリカード１１８からのデータ読出しおよびメモリカード１１８へのデータ書込みを行う。
【００４１】
ローカル通信インターフェイス１２０は、情報処理装置２００または他の装置と直接接続するインターフェイスであり、たとえば、ＵＳＢ（Universal Serial Bus）などが用いられる。
【００４２】
内部バスインターフェイス１２２は、内部バスを介して安全コントローラ１００に直接装着される入出力ユニットとの間の通信を仲介する。
【００４３】
（ｂ２：情報処理装置２００）
本実施の形態に従う情報処理装置２００は、典型的には、汎用コンピュータ上でサポートプログラムが実行されることで実現される。
【００４４】
図３は、本実施の形態に従う情報処理装置２００の装置構成の一例を示す模式図である。図３を参照して、情報処理装置２００は、主たるコンポーネントとして、オペレーティングシステム（ＯＳ：Operating System）および後述するような各種プログラムを実行するプロセッサ２０２と、プロセッサ２０２でのプログラム実行に必要なデータを格納するための作業領域を提供する主メモリ２０４と、キーボードやマウスなどのユーザ操作を受付ける操作ユニット２０６（操作受付部）と、ディスプレイ、各種インジケータ、プリンタなどの処理結果を出力する出力ユニット２０８と、情報系ネットワークに接続される情報系ネットワークインターフェイス２１０と、光学ドライブ２１２と、安全コントローラ１００などと通信するローカル通信インターフェイス２１６と、補助記憶装置２２０とを含む。これらのコンポーネントは、内部バス２１８などを介してデータ通信可能に接続される。
【００４５】
情報処理装置２００は、光学ドライブ２１２を有しており、コンピュータ読取可能なプログラムを非一過的に格納する光学記録媒体（たとえば、ＤＶＤ（Digital Versatile Disc）など）のコンピュータ読取可能な記録媒体２１４から、各種プログラムを読取って補助記憶装置２２０などにインストールする。
【００４６】
情報処理装置２００で実行される各種プログラムは、コンピュータ読取可能な記録媒体２１４を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に従う機能安全の評価に係るプログラムは、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【００４７】
補助記憶装置２２０は、たとえば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Flash Solid State Drive）などで構成され、プロセッサ２０２で実行されるプログラムを格納する。具体的には、補助記憶装置２２０は、後述するような処理を提供するプログラムとして、安全プログラム２２８（ソースプログラム）からプロセッサ２０２で実行可能なコード（実行モジュール）を生成する実行プログラム２２２と、予め用意されている複数のファンクションブロック２２４とを含む。補助記憶装置２２０には、安全プログラム２２８に関連付けられた各種設定２２６が格納される。
【００４８】
図３には、汎用コンピュータ上でサポートプログラムを実行することで、本実施の形態に従う情報処理装置２００に係る機能を実現するが、このような構成に代えて、その全部または一部をハードワイヤード回路で実装してもよい。たとえば、プロセッサ２０２が上述の各種プログラムを実行することで提供される機能をＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field-Programmable Gate Array）を用いて実装してもよい。
【００４９】
（ｂ３：制御装置３００）
本実施の形態に従う制御装置３００は、図２に示す安全コントローラ１００と同様の装置構成を有しているので、詳細な説明は繰り返さない。なお、安全コントローラ１００は、プロセッサなどの二重化やセーフティ用のモジュールが採用されているが、一般的には、制御装置３００にはそのような構成は採用されていない。また、制御装置３００では、上述の安全プログラムではなく、ユーザプログラムが実行される。
【００５０】
＜Ｃ．安全プログラムの設計ツール＞
次に、安全プログラムの設計ツールについて説明する。当該設計ツールは、情報処理装置２００によって予めインストールされているアプリケーションによって提供される。当該アプリケーションが起動されると、安全プログラムの設計画面が情報処理装置２００に表示される。図４は、安全プログラムの設計画面の一例であるユーザインターフェイス２５０を示す図である。
【００５１】
ユーザインターフェイス２５０は、たとえば、上述の出力ユニット２０８（図３参照）に表示される。設計者は、ユーザインターフェイス２５０上で任意のファンクションブロックを組み合わせることで任意の安全プログラムを設計することができる。より具体的には、設計者は、予め用意されている複数種類のファンクションブロックの内から任意のファンクションブロックをユーザインターフェイス２５０に配置し、配置した各ファンクションブロック間の入出力関係を規定する。このような操作は、たとえば、上述の操作ユニット２０６（図３参照）に対して行われる。
【００５２】
図４の例では、ファンクションブロック２５１がユーザインターフェイス２５０上に配置されている。ファンクションブロック２５１は、安全機器１６（図１参照）の一例である非常停止スイッチの動作状態を監視するための機能モジュールである。図４の例では、非常停止スイッチの接点は、安全性を確保するために二重化されている。非常停止スイッチは、押下されると、押下状態を維持し、解除操作（たとえば、回転操作など）が行われると押下状態を解除する。非常停止スイッチが押下されると、非常停止スイッチに割り当てられている変数ＶＡ１，ＶＡ２が変化する。非常停止スイッチは、押下時には非導通状態になり、非押下時（解除時）には導通状態となる（所謂「ｂ接点」）。すなわち、非常停止スイッチの押下時には変数ＶＡ１，ＶＡ２が共に「０」（ＦＡＬＳＥ）となり、非常停止スイッチの非押下時には変数ＶＡ１，ＶＡ２が共に「１」（ＴＲＵＥ）となる。
【００５３】
変数ＶＡ１，ＶＡ２が「０」（ＦＡＬＳＥ）である場合、ファンクションブロック２５１は、「０」（ＦＡＬＳＥ）を示す信号ＳＧ１を出力する。変数ＶＡ１，ＶＡ２が「１」（ＴＲＵＥ）である場合、ファンクションブロック２５１は、「１」（ＴＲＵＥ）を示す信号ＳＧ１を出力する。
【００５４】
ファンクションブロック２５５は、安全機器１６（図１参照）の一例であるリセットボタンの状態を監視するための機能モジュールである。リセットボタンが押下されると、リセットボタンに割り当てられている変数ＶＡ３が変化する。リセットボタンは、押下時には導通状態になり、非押下時には非導通状態となる（所謂「ａ接点」）。すなわち、リセットボタンの押下時には変数ＶＡ３が「１」（ＴＲＵＥ）となり、リセットボタンの非押下時には変数ＶＡ３が「０」（ＦＡＬＳＥ）となる。
【００５５】
ファンクションブロック２５５は、非常停止スイッチが押下された場合（すなわち、信号ＳＧ１の値が「０」（ＦＡＬＳＥ）である場合）、信号ＳＧ５の値を「１」（ＴＲＵＥ）から「０」（ＦＡＬＳＥ）に変化させる。ファンクションブロック２５５は、非常停止スイッチの押下が解除された状態でリセットボタンが押下された場合（信号ＳＧ１および変数ＶＡ３の値が「１」（ＴＲＵＥ）である場合）、信号ＳＧ５の値を「０」（ＦＡＬＳＥ）から「１」（ＴＲＵＥ）に変化させる。
【００５６】
ファンクションブロック２５７は、ＥＤＭファンクションブロックであり、セーフティリレー１４（図１参照）などの対象機器の動作を監視するための機能モジュールである。信号ＳＧ５の値が「０」（ＦＡＬＳＥ）を示す場合、ファンクションブロック２５７は、セーフティリレー１４の一例であるコンタクタをオフ状態にする。すなわち、コンタクタへの制御信号ＳＧ６を「０」（ＦＡＬＳＥ）に設定する。これにより、モータ１０（図１参照）が強制的に停止される。信号ＳＧ５の値が「１」（ＴＲＵＥ）を示す場合、ファンクションブロック２５７は、コンタクタをオン状態する。すなわち、コンタクタへの制御信号ＳＧ６を「１」（ＴＲＵＥ）に設定する。これにより、モータ１０（図１参照）の駆動が開始される。
【００５７】
コンタクタの接点が溶着した場合には、コンタクタは正常に動作しない。この場合、非常停止スイッチからの停止信号がコンタクタに出力さているにも関わらず、モータ１０の動作は停止しない。このことを防止するために、ファンクションブロック２５７は、コンタクタの接点の状態を示すフィードバック信号ＳＧ７に基づいて、コンタクタが正常に動作しているか否かを監視する。
【００５８】
より具体的には、コンタクタは、通常時には導通状態（オン状態）を維持し、緊急停止時には非導通状態（オフ状態）を維持する（所謂「ｂ接点」）。コンタクタの状態は、フィードバック信号ＳＧ７に反映される。コンタクタの状態が導通状態である場合、フィードバック信号ＳＧ７の値は「０」（ＦＡＬＳＥ）となる。コンタクタの状態が非導通状態である場合、フィードバック信号ＳＧ７の値は「１」（ＴＲＵＥ）となる。ファンクションブロック２５７は、制御信号ＳＧ６の値を変化させてから所定時間が経過するまでの間に、フィードバック信号ＳＧ７の値が変化しない場合に、コンタクタが正常に動作していないと判断する。
【００５９】
より具体的には、ファンクションブロック２５７は、制御信号ＳＧ６の値を「０」（ＦＡＬＳＥ）から「１」（ＴＲＵＥ）に変化させてから所定時間が経過するまでの間に、フィードバック信号ＳＧ７の値が「１」（ＴＲＵＥ）から「０」（ＦＡＬＳＥ）に変化した場合、コンタクタが正常に動作していると判断する。一方で、フィードバック信号ＳＧ７が当該所定時間の間に変化しない場合、ファンクションブロック２５７は、コンタクタが正常に動作していないと判断する。
【００６０】
同様に、ファンクションブロック２５７は、制御信号ＳＧ６の値を「１」（ＴＲＵＥ）から「０」（ＦＡＬＳＥ）に変化させてから所定時間が経過するまでの間に、フィードバック信号ＳＧ７の値が「０」（ＦＡＬＳＥ）から「１」（ＴＲＵＥ）に変化した場合、コンタクタが正常に動作していると判断する。一方で、フィードバック信号ＳＧ７が当該所定時間の間に変化しない場合、ファンクションブロック２５７は、コンタクタが正常に動作していないと判断する。
【００６１】
ファンクションブロック２５７は、セーフティリレー１４（図１参照）などの対象機器が正常に動作していないと判断した場合、エラー（以下、「ＥＤＭエラー」ともいう。）を出力する。設計者は、ＥＤＭエラーをトリガー（入力）として緊急停止を行うための処理を安全プログラムにさらに規定することもできる。
【００６２】
＜Ｄ．ＥＤＭエラーの無効化＞
設計者は、設計した安全プログラムを安全コントローラに設定する前に、情報処理装置２００上で安全プログラムの動作をシミュレーションする。設計者は、安全プログラムが意図した通りに動作していることを確認した後、安全プログラムを安全コントローラに設定する。
【００６３】
図４で説明したように、ＥＤＭファンクションブロックは、対象機器の動作状態を表わすフィードバック信号を監視することで、対象機器が正常に動作しているか否かを判断する。しかしながら、安全プログラムのシミュレーション段階では、対象機器が接続されていないため、対象機器からのフィードバック信号が取得され得ない。そのため、ＥＤＭファンクションブロックが含まれている状態でシミュレーションが実行されると、ＥＤＭエラーが出力されてしまう。そこで、情報処理装置２００は、安全プログラムにＥＤＭファンクションブロックが含まれる場合には、ＥＤＭエラーの出力を無効にする。
【００６４】
図５を参照して、ＥＤＭエラーの無効化処理について説明する。図５は、ＥＤＭファンクションブロックの一例であるファンクションブロック２５７を示す図である。
【００６５】
ファンクションブロック２５７は、入力部２７０，２７４と、出力部２７２，２７６とを含む。
【００６６】
入力部２７０（第１入力部）は、セーフティリレー１４（図１参照）などの対象機器の状態を表わす入力信号（第１入力信号）を受ける。当該入力信号は、図４に示される信号ＳＧ５に相当する。
【００６７】
出力部２７２（第１出力部）は、信号ＳＧ５の値に基づいて、対象機器に制御信号を出力する。すなわち、出力部２７２は、信号ＳＧ５が変化したことに基づいて、対象機器の動作状態を変化させるための制御信号を出力する。一例として、出力部２７２は、信号ＳＧ５の値が「１」（ＴＲＵＥ）から「０」（ＦＡＬＳＥ）に変化した場合、制御信号として緊急停止指令を対象機器に出力する。一方で、出力部２７２は、信号ＳＧ５の値が「０」（ＦＡＬＳＥ）から「１」（ＴＲＵＥ）に変化した場合、制御信号として駆動開始指令を対象機器に出力する。
【００６８】
入力部２７４（第２入力部）は、対象機器の動作状態を示すフィードバック信号（第２入力信号）を受ける。すなわち、フィードバック信号は、対象機器の動作状態と連動して変化する。
【００６９】
出力部２７６（第２出力部）は、対象機器への制御信号が出力されてから所定時間が経過するまでの間においてフィードバック信号が変化しない場合、ＥＤＭエラーを出力する。より具体的には、信号ＳＧ５の値が「０」（ＦＡＬＳＥ）から「１」（ＴＲＵＥ）に変化してから所定時間が経過するまでの間に、フィードバック信号ＳＧ７の値が「１」（ＴＲＵＥ）から「０」（ＦＡＬＳＥ）に変化しない場合、出力部２７６（第２出力部）は、ＥＤＭエラーを出力する。そうでない場合には、出力部２７６は、正常状態を示す信号を出力する。同様に、信号ＳＧ５の値が「１」（ＴＲＵＥ）から「０」（ＦＡＬＳＥ）に変化してから所定時間が経過するまでの間に、フィードバック信号ＳＧ７の値が「０」（ＦＡＬＳＥ）から「１」（ＴＲＵＥ）に変化しない場合、出力部２７６は、ＥＤＭエラーを出力する。そうでない場合には、出力部２７６は、正常状態を示す信号を出力する。
【００７０】
情報処理装置２００は、安全プログラムの動作をシミュレーションする場合であって、安全プログラムの生成元のファンクションブロックにＥＤＭファンクションブロック（監視ファンクションブロック）が含まれているときに、出力部２７６によるＥＤＭエラーの出力を無効にする。これにより、設計者は、シミュレーション時においてＥＤＭファンクションブロックを削除するなどの余計な操作を行う必要がなくなり、安全プログラムの設計効率が改善される。
【００７１】
好ましくは、情報処理装置２００は、安全プログラムの生成元のファンクションブロックにＥＤＭファンクションブロックが複数含まれている場合に、当該複数のＥＤＭファンクションブロックのすべてについてＥＤＭエラーの出力を無効にする。これにより、安全プログラムの設計効率がさらに改善される。
【００７２】
＜Ｅ．情報処理装置２００の機能構成＞
図６〜図１０を参照して、情報処理装置２００の機能について説明する。図６は、情報処理装置２００の機能構成の一例を示す図である。
【００７３】
図６に示されるように、情報処理装置２００は、主要なハードウェア構成として、プロセッサ２０２と、出力ユニット２０８の一例であるディスプレイ２０８Ａと、補助記憶装置２２０とを含む。プロセッサ２０２は、機能構成として、提供部２８２と、生成部２８４と、実行部２８６と、エミュレータ２８８と、評価部２９０とを含む。以下では、これらの機能構成について順に説明する。
【００７４】
（Ｅ１．提供部２８２）
提供部２８２は、設計ツールのアプリケーションが起動されたことに基づいて、上述のユーザインターフェイス２５０（図４参照）をディスプレイ２０８Ａに表示する。
【００７５】
設計者は、予め用意されている複数種類のファンクションブロック２２４の内から任意のファンクションブロックをユーザインターフェイス２５０に配置し、ユーザインターフェイス２５０上において各ファンクションブロック間の入出力関係を規定することができる。このような操作は、たとえば、上述の操作ユニット２０６（図３参照）に対して行われる。
【００７６】
図４で説明したように、安全プログラムの動作のシミュレーション時には、ＥＤＭエラーの出力が無効化される。この場合、ユーザインターフェイス２５０は、ＥＤＭエラーの出力が無効であることを示す予め定められた態様でＥＤＭファンクションブロックを表示する。
【００７７】
図７は、ＥＤＭエラーの出力の無効化時におけるＥＤＭファンクションブロックの表示態様の一例を示す図である。図７に示されるように、ＥＤＭエラーの出力の無効化時には、ＥＤＭファンクションブロックであるファンクションブロック２５７は、他の種類のファンクションブロック２５１，２５５とは異なる態様で表示される。一例として、ファンクションブロック２５７は、他の種類のファンクションブロック２５１，２５５とは異なる色で表示される。あるいは、ファンクションブロック２５７は、点滅表示されてもよい。あるいは、ＥＤＭエラーの出力が無効化されていることを示す印（図７の例では、×印）が表示されてもよい。ＥＤＭファンクションブロックの表示態様が変えられることで、設計者は、ＥＤＭエラーの出力が無効化されていることを容易に把握することができる。
【００７８】
（Ｅ２．生成部２８４）
生成部２８４は、予め用意されている複数種類のファンクションブロック２２４から組み合わされた１つ以上のファンクションブロックを元に安全プログラム２２８を生成する。生成された安全プログラム２２８は、補助記憶装置２２０に記憶される。典型的には、ファンクションブロックの種類および各ファンクションブロック間の入出力関係などが補助記憶装置２２０に記憶される。
【００７９】
（Ｅ３．実行部２８６）
実行部２８６は、安全プログラム２２８の実行モード２２６Ａに基づいて、安全プログラム２２８から実行モジュールを生成する。典型的には、実行部２８６は、コンパイラ、アセンブラ、リンカなどの機能を含む。
【００８０】
安全プログラム２２８の実行モード２２６Ａは、上述の各種設定２２６（図３参照）に予め規定されている。一例として、安全プログラム２２８の実行モード２２６Ａは、第１シミュレーションモードと、第２シミュレーションモードとを含む。実行モード２２６Ａは、予め設定されていてもよいし、設計者などによって任意に設定されてもよい。
【００８１】
実行モード２２６Ａが第１シミュレーションモードである場合、実行部２８６は、ＥＤＭファンクションブロックによるＥＤＭエラーの出力を無効にする。より具体的には、実行部２８６は、ＥＤＭエラーの出力部分をスキップするように実行形式プログラムを生成する。これにより、ＥＤＭファンクションブロックによるＥＤＭエラーの出力が無効化される。
【００８２】
実行モード２２６Ａが第２シミュレーションモードである場合、実行部２８６は、対象機器の動作状態を模擬的に表した模擬信号を後述のエミュレータ２８８から取得し、当該模擬信号をフィードバック信号Ｓ７（図５参照）としてＥＤＭファンクションブロックの第２入力部（図５参照）に入力する。これにより、ＥＤＭファンクションブロックは、対象機器が仮想的に正常に動作していると判断し、ＥＤＭエラーの出力が無効化される。
【００８３】
（Ｅ４．エミュレータ２８８）
エミュレータ２８８は、安全コントローラ１００に接続され得る各種機器（たとえば、安全機器や監視対象機器など）の状態を模擬的に表わした模擬信号を生成し、当該模擬信号を、安全プログラム２２８を構成する各ファンクションブロックに出力する。これにより、設計者は、情報処理装置２００を安全コントローラ１００に接続することなしに、情報処理装置２００上で安全プログラム２２８の動作をシミュレーションすることができる。
【００８４】
一例として、エミュレータ２８８は、ＥＤＭファンクションブロックへのフィードバック信号を模擬信号として生成する。図８は、模擬信号がＥＤＭファンクションブロックであるファンクションブロック２５７に出力されている様子を示す図である。
【００８５】
典型的には、エミュレータ２８８は、ＥＤＭファンクションブロックの出力部２７２から監視対象機器へ出力される制御信号を元に模擬信号ＳＧ９を生成する。図８の例では、エミュレータ２８８は、当該制御信号を反転させた模擬信号ＳＧ９を生成している。生成された模擬信号ＳＧ９は、ファンクションブロック２５７の入力部２７４に入力される。
【００８６】
好ましくは、実行モード２２６Ａが上述の第２シミュレーションモードである場合、ファンクションブロック２５７の出力部２７２からの制御信号が変化してから所定時間が経過するまでの間に、模擬信号が入力部２７４に入力される。このように、模擬信号がフィードバック信号として入力部２７４に入力されることで、ファンクションブロック２５７の出力部２７６は、正常を示す信号を常に出力し、ＥＤＭエラーの出力が無効化される。
【００８７】
典型的には、模擬信号の生成ルールは、設計者によって予め設定される。図９は、模擬信号の生成ルールを設定するための設定画面２６０を示す図である。設定画面２６０は、設定覧４０と、登録一覧５０とを含む。設定覧４０は、プルダウンメニュー４１，４２と、時間設定領域４４と、チェックボックス４５とを含む。
【００８８】
以下では、模擬信号を生成するための基準となる信号を「基準信号」ともいう。すなわち、エミュレータ２８８は、基準信号から模擬信号を生成する。
【００８９】
設計者は、プルダウンメニュー４１において模擬信号の入力先を指定する。当該入力先の指定は、変数の指定によって行われる。典型的には、ＥＤＭファンクションブロックの入力部２７４（図５参照）が指定される。
【００９０】
設計者は、基準信号の出力元をプルダウンメニュー４２において指定する。当該出力先の指定は、変数の指定によって行われる。典型的には、ＥＤＭファンクションブロックの出力部２７２（図５参照）が指定される。
【００９１】
設計者は、時間設定領域４４にディレイ時間を設定する。設計者は、たとえば、５０ｍｓ〜１０００ｍｓの間でディレイ時間を設定することができる。ＥＤＭファンクションブロックは、基準信号の値が変化してから、設定されたディレイ時間が経過した時点で、模擬信号の値を変化させる。
【００９２】
設計者は、チェックボックス４５において模擬信号の生成ルールを設定する。チェックボックス４５にチェックが入れられている場合、エミュレータ２８８は、基準信号を反転させた信号を模擬信号として生成する。チェックボックス４５にチェックが入れられていない場合、エミュレータ２８８は、基準信号を模擬信号として生成する。
【００９３】
追加ボタン４７が押下されると、設定覧４０における設定内容が登録一覧５０に反映される。登録一覧５０に登録された項目は、選択可能に構成されている。一例として、項目５２が選択された状態で、削除ボタン５４が押下されると、選択された項目５２は、登録一覧５０から削除される。
【００９４】
ＯＫボタン６２が押下されると、登録一覧５０にされた登録された設定内容がフィードバック設定として上述の各種設定２２６（図３参照）に書き込まれる。キャンセルボタン６４が押下されると、登録一覧５０にされた登録された設定内容が反映されずに、設定画面２６０が閉じられる。
【００９５】
なお、上述では、エミュレータ２８８がセーフティリレー１４の動作状態を模擬的に表した模擬信号を生成し、当該模擬信号をフィードバック信号としてＥＤＭファンクションブロックに入力する例について説明を行ったが、エミュレータ２８８は、安全機器などのその他の機器の動作状態を表わした模擬信号を生成することもできる。エミュレータ２８８は、予め定められたテストパターンに従って安全機器の動作状態を表わした模擬信号を生成し、当該模擬信号を安全プログラム２２８に入力することで、安全プログラム２２８の動作をシミュレーションすることができる。
【００９６】
（Ｅ５．評価部２９０）
評価部２９０は、エミュレータ２８８からの入力値を安全プログラム２２８に与えることで算出される出力値と、当該入力値に対応する出力期待値とを比較し、その比較結果をシミュレーション結果として出力する。安全プログラム２２８への入力値に対する出力期待値は、設計者によって予め設定されている。
【００９７】
評価部２９０によるシミュレーション結果は、たとえば、ディスプレイ２０８Ａに表示される。図１０は、ディスプレイ２０８Ａに表示されているシミュレーション結果画面２９１を示す図である。
【００９８】
図１０を参照して、シミュレーション結果画面２９１は、安全プログラム２２８における入力信号の変数名を表示する変数名表示欄２９２Ａと、対応する入力信号についてのコメントを表示するコメント表示欄２９２Ｂと、対応する入力信号についてのリセット種別を表示するリセット種別表示欄２９２Ｃと、対応する入力信号についての出力期待値（出力信号）の組み合わせを表示する期待値設定欄２９２Ｄと、シミュレーション結果を示す結果表示欄２９２Ｅと、シミュレーション結果に対応するコメントを表示する結果コメント表示欄２９２Ｆと、評価実行日時を示す日時表示欄２９２Ｇとを含む。
【００９９】
結果表示欄２９２Ｅには、合格したものについては「Ｐａｓｓｅｄ」が表示され、何らかのエラーが生じたものについては「Ｆａｉｌｅｄ」が表示される。さらに、何らかのエラーが生じた場合には、期待値設定欄２９２Ｄにおいて、そのエラーが生じた出力変数の表示態様が異なったものとされる。結果コメント表示欄２９２Ｆには、そのエラーに対応するエラーメッセージが表示される。すなわち、いずれのフェーズにおいて異常であると判断されたのかを特定する情報が判断結果に含められる。また、異常であると判断されたフェーズに応じたコメントが判断結果に含められる。また、ＥＤＭエラーの出力が無効にされた状態でシミュレーションが行われた場合には、そのことが結果コメント表示欄２９２Ｆに表示される。
【０１００】
＜Ｆ．タイミングチャート＞
上述のように、安全プログラムの実行モードは、ＥＤＭエラーを無効化する第１シミュレーションモードと、対象機器の動作状態を表わす模擬信号をＥＤＭファンクションブロックにフィードバックする第２シミュレーションモードと、対象機器が接続された状態で安全プログラムを実行する実機モードとを含む。典型的には、第１，第２シミュレーションモードにおいては、安全プログラムは、情報処理装置２００上で実行される。実機モードにおいては、安全プログラムは、安全コントローラ１００上で実行される。
【０１０１】
以下では、図１１および図１２を参照して、第１シミュレーションおよび実機モードのそれぞれで安全プログラムが実行された場合における各安全機器の動作態様について説明する。
【０１０２】
まず、図１１を参照して、第１シミュレーションモードにおける安全プログラムの実行態様について説明する。図１１は、第１シミュレーションモードで安全プログラムを実行したときの信号状態を示す図である。当該安全プログラムは、図４に示されるファンクションブロックの組み合わせで構成されているとする。
【０１０３】
情報処理装置２００は、シミュレーション時においては、各安全機器の動作状態を取得することができないので、各安全機器の動作状態を仮想的に変化させた模擬信号を生成し、当該模擬信号を安全プログラムに入力する。
【０１０４】
時刻Ｔ１において、安全プログラムは、非常停止スイッチを押下されたことを示す模擬信号を生成し、当該模擬信号を安全プログラムに入力する。これにより、安全プログラムは、非常停止スイッチが押下されたと判断する。これに伴って、安全プログラムは、第１，第２コンタクタをオフ状態にするための制御信号を出力する。通常、当該制御信号が出力されてから所定時間Δｔｈの間にフィードバック信号ＳＧ７が変化しない場合、安全プログラムは、ＥＤＭエラーを出力する。しかしながら、第１シミュレーションモードにおいては、ＥＤＭエラーの出力が無効化されている。そのため、図１１の例では、フィードバック信号ＳＧ７が所定時間Δｔｈの間に変化していないにも関わらず、ＥＤＭエラーは出力されない。
【０１０５】
時刻Ｔ２において、安全プログラムは、非常停止スイッチの停止状態が解除されたことを示す模擬信号を生成し、当該模擬信号を安全プログラムに入力する。これにより、安全プログラムは、非常停止スイッチが解除されたと判断する。
【０１０６】
時刻Ｔ３において、安全プログラムは、非常停止スイッチが押下されたことを示す模擬信号を生成し、当該模擬信号を安全プログラムに入力する。これにより、安全プログラムは、非常停止スイッチが押下されたと判断する。これに伴って、安全プログラムは、第１，第２コンタクタをオン状態にするための制御信号を出力する。通常、当該制御信号が出力されてから所定時間Δｔｈの間にフィードバック信号ＳＧ７が変化しない場合、安全プログラムは、ＥＤＭエラーを出力する。しかしながら、第１シミュレーションモードにおいては、ＥＤＭエラーの出力が無効化されている。その結果、図１１の例では、フィードバック信号ＳＧ７が所定時間Δｔｈの間に変化していないにも関わらず、ＥＤＭエラーが出力されない。
【０１０７】
次に、図１２を参照して、実機モードにおける安全プログラムの実行態様について説明する。図１２は、実機モードで安全プログラムを実行したときの信号状態を示す図である。当該安全プログラムは、図４に示されるファンクションブロックの組み合わせで構成されているとする。
【０１０８】
時刻Ｔ１において、非常停止スイッチが押下されたとする。これに伴って、「０」（ＦＡＬＳＥ）を示す制御信号が第１，第２コンタクタに出力される。当該制御信号が出力されてから所定時間Δｔｈが経過するまでの間に、第１，第２コンタクタの動作状態を表わすフィードバック信号ＳＧ７が変化しない場合、安全プログラムは、ＥＤＭエラーを出力する。図１２の例では、ＥＤＭエラーは出力されない。すなわち、第１，第２コンタクタの接点が正常に開状態に駆動されたことを意味する。
【０１０９】
時刻Ｔ２において、非常停止スイッチが解除されたとする。非常停止スイッチが解除されたことでは、コンタクタの接点は、閉状態にならない。
【０１１０】
時刻Ｔ３において、リセットボタンが押下されたとする。これに伴って、「１」（ＴＲＵＥ）を示す制御信号が第１，第２コンタクタに出力される。当該制御信号が出力されてから所定時間Δｔｈが経過するまでの間に、第１，第２コンタクタの動作状態を表わすフィードバック信号ＳＧ７が変化しない場合、安全プログラムは、ＥＤＭエラーを出力する。図１２の例では、ＥＤＭエラーは出力されない。すなわち、第１，第２コンタクタの接点が正常に閉状態に駆動されたことを意味する。
【０１１１】
＜Ｇ．情報処理装置２００の制御構造＞
図１３を参照して、情報処理装置２００の制御構造について説明する。図１３は、シミュレーション時における安全プログラムの実行フローを示す図である。図１３の処理は、情報処理装置２００のプロセッサ２０２がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
【０１１２】
ステップＳ１１０において、プロセッサ２０２は、安全プログラムの実行操作を受けたか否かを判断する。プロセッサ２０２は、安全プログラムの実行操作を受けたと判断した場合（ステップＳ１１０においてＹＥＳ）、制御をステップＳ１１２に切り替える。そうでない場合には（ステップＳ１１０においてＮＯ）、プロセッサ２０２は、ステップＳ１１０の処理を再び実行する。
【０１１３】
ステップＳ１１２において、プロセッサ２０２は、実行対象のファンクションブロックを安全プログラムから読み込む。実行対象のファンクションブロックは、たとえば、予め定められたテストパターンに従って決定される。
【０１１４】
ステップＳ１２０において、プロセッサ２０２は、実行対象のファンクションブロックがＥＤＭファンクションブロックであるか否かを判断する。プロセッサ２０２は、実行対象のファンクションブロックがＥＤＭファンクションブロックであると判断した場合（ステップＳ１２０においてＹＥＳ）、制御をステップＳ１３０に切り替える。そうでない場合には（ステップＳ１２０においてＮＯ）、プロセッサ２０２は、制御をステップＳ１５０に切り替える。
【０１１５】
ステップＳ１３０において、プロセッサ２０２は、安全プログラムの実行モードが第１シミュレーションモードに設定されているか否かを判断する。プロセッサ２０２は、安全プログラムの実行モードが第１シミュレーションモードに設定されていると判断した場合（ステップＳ１３０においてＹＥＳ）、制御をステップＳ１３２に切り替える。そうでない場合には（ステップＳ１３０においてＮＯ）、プロセッサ２０２は、安全プログラムの実行モードが第２シミュレーションモードであると判断し、制御をステップＳ１４２に切り替える。
【０１１６】
ステップＳ１３２において、プロセッサ２０２は、実行対象のファンクションブロック（ＥＤＭファンクションブロック）に関連付けられている命令を実行する。
【０１１７】
ステップＳ１３４において、プロセッサ２０２は、ＥＤＭエラーの判定処理をスキップする。これにより、ＥＤＭエラーの出力が無効化される。
【０１１８】
ステップＳ１４２において、プロセッサ２０２は、実行対象のファンクションブロック（ＥＤＭファンクションブロック）に関連付けられている命令を実行する。
【０１１９】
ステップＳ１４４において、プロセッサ２０２は、上述の設定画面２６０（図９参照）において設定されたフィードバック設定に従って、監視対象機器からのフィードバック信号を模倣的に表した模倣信号を生成し、当該模倣信号をフィードバック信号としてＥＤＭファンクションブロックに入力する。
【０１２０】
ステップＳ１４６において、プロセッサ２０２は、ＥＤＭエラー判定を行う。より具体的には、プロセッサ２０２は、対象機器への制御信号が変化してから所定時間の間に模擬信号が変化しない場合に、ＥＤＭエラーを出力する。そうでない場合には、プロセッサ２０２は、正常を示す判定結果を出力する。
【０１２１】
ステップＳ１５０において、プロセッサ２０２は、プロセッサ２０２は、実行対象のファンクションブロックに関連付けられている命令を実行する。
【０１２２】
ステップＳ１６０において、プロセッサ２０２は、次に実行すべきファンクションブロックが存在するか否かを判断する。典型的には、プロセッサ２０２は、すべてのテストパターンについて安全プログラムの動作のシミュレーションが終了していない場合に、次に実行すべきファンクションブロックが存在すると判断する。プロセッサ２０２は、次に実行すべきファンクションブロックが存在すると判断した場合（ステップＳ１６０においてＹＥＳ）、制御をステップＳ１６２に切り替える。そうでない場合には（ステップＳ１６０においてＮＯ）、プロセッサ２０２は、図１３に示される処理を終了する。
【０１２３】
ステップＳ１６２において、プロセッサ２０２は、次の実行対象のファンクションブロックを安全プログラムから読み込む。一例として、次の実行対象のファンクションブロックは、予め定められたテストパターンに従って決定される。
【０１２４】
＜Ｈ．まとめ＞
以上のようにして、情報処理装置２００は、安全プログラムの動作をシミュレーションする場合であって、安全プログラムの生成元のファンクションブロックにＥＤＭファンクションブロックが含まれているときに、ＥＤＭエラーの出力を無効にする。これにより、設計者は、安全プログラムのシミュレーション時にＥＤＭファンクションブロックを削除するなどの余計な操作を行う必要がなくなり、安全プログラムの設計効率が改善される。
【０１２５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１２６】
１  安全システム、１０  モータ、１２  ドライバ、１４  セーフティリレー、１６  安全機器、２０  制御系ネットワーク、２２  情報系ネットワーク、４０  設定覧、４１，４２  プルダウンメニュー、４４  時間設定領域、４５  チェックボックス、４７  追加ボタン、５０  登録一覧、５２  項目、５４  削除ボタン、６２  ＯＫボタン、６４  キャンセルボタン、１００  安全コントローラ、１０２，２０２  プロセッサ、１０４，２０４  主メモリ、１０６  フラッシュメモリ、１０８  演算処理部、１１０  制御系ネットワークインターフェイス、１１２，２１０  情報系ネットワークインターフェイス、１１４  フィールドバスインターフェイス、１１６  メモリカードインターフェイス、１１８  メモリカード、１２０，２１６  ローカル通信インターフェイス、１２２  内部バスインターフェイス、２００  情報処理装置、２０６  操作ユニット、２０８  出力ユニット、２０８Ａ  ディスプレイ、２１２  光学ドライブ、２１４  記録媒体、２１８  内部バス、２２０  補助記憶装置、２２２  実行プログラム、２２４，２５１，２５５，２５７  ファンクションブロック、２２６  各種設定、２２６Ａ  実行モード、２２８  安全プログラム、２５０  ユーザインターフェイス、２６０  設定画面、２７０，２７４  入力部、２７２，２７６  出力部、２８２  提供部、２８４  生成部、２８６  実行部、２８８  エミュレータ、２９０  評価部、２９１  シミュレーション結果画面、２９２Ａ  変数名表示欄、２９２Ｂ  コメント表示欄、２９２Ｃ  リセット種別表示欄、２９２Ｄ  期待値設定欄、２９２Ｅ  結果表示欄、２９２Ｆ  結果コメント表示欄、２９２Ｇ  日時表示欄、３００  制御装置。
【図１】
2018151867.tif 000003
【図２】
2018151867.tif 000004
【図３】
2018151867.tif 000005
【図４】
2018151867.tif 000006
【図５】
2018151867.tif 000007
【図６】
2018151867.tif 000008
【図７】
2018151867.tif 000009
【図８】
2018151867.tif 000010
【図９】
2018151867.tif 000011
【図１０】
2018151867.tif 000012
【図１１】
2018151867.tif 000013
【図１２】
2018151867.tif 000014
【図１３】
2018151867.tif 000015