(57)【特許請求の範囲】
【請求項１】
予め定められた条件が成立すると対象機器を安全が保たれるように動作させるための安全プログラム、の機能安全を評価する評価システムであって、前記安全プログラムは、１または複数の入力信号に対して、１または複数の出力信号の値を決定するための命令の組み合わせを含み、
１または複数の入力信号に基づいて、前記安全プログラムに従う演算を実行することで、対応する１または複数の出力信号の値を決定する処理実行手段と、
評価対象の入力信号と、評価対象の出力信号と、前記評価対象の入力信号の値の変化に対応して出力されるべき前記評価対象の出力信号の値である出力期待値とを含む、評価条件を受付ける設定手段と、
前記評価対象の入力信号の値を初期値である第１の入力値から第２の入力値に変化させるとともに、前記処理実行手段により決定される前記評価対象の出力信号の第１の出力値が前記出力期待値と一致しているか否かに基づいて異常の有無を判断する第１の判断手段と、
前記評価対象の入力信号の値を前記第２の入力値から前記第１の入力値に戻すとともに、前記処理実行手段により決定される前記評価対象の出力信号の第２の出力値が前記第１の出力値と一致しているか否かに基づいて異常の有無を判断する第２の判断手段と、
前記評価対象の入力信号に関連付けて、前記第１の判断手段および前記第２の判断手段での判断結果を出力する出力手段とを備え、
前記評価条件は、前記入力信号の値が前記第２の入力値から前記第１の入力値に戻ったときに、対応する出力信号の出力値を連動して元の値に戻すことを示す第１の種別と、予め定められたリセット条件が成立するまでは出力信号の出力値を元の値に戻さないことを示す第２の種別とのうち、いずれかの設定を含み、
前記第２の判断手段は、
前記第１の種別が設定されている場合には、前記評価対象の出力信号の第２の出力値が前記第１の出力値と一致しているときに異常と判断し、
前記第２の種別が設定されている場合には、前記評価対象の出力信号の第２の出力値が前記第１の出力値とは異なっているときに異常と判断する、評価システム。
【請求項２】
前記評価条件は、前記第２の種別の前記予め定められたリセット条件として、リセット信号の設定を含み、
前記評価システムは、前記第２の判断手段による判断後、前記リセット信号を有効化するとともに、前記処理実行手段により決定される前記評価対象の出力信号の第３の出力値が前記第１の出力値と一致しているか否かを判断する第３の判断手段をさらに備える、請求項１に記載の評価システム。
【請求項３】
前記第１の判断手段による判断の前に、前記評価対象の入力信号の値を前記第１の入力値に設定するとともに、前記処理実行手段により決定される前記評価対象の出力信号の第４の出力値が初期値と一致しているか否かを判断する第４の判断手段をさらに備える、請求項１または２に記載の評価システム。
【請求項４】
前記初期値である第１の入力値は、前記安全プログラムを実行する安全コントローラに供給される電源が喪失したときと同様のメモリの状態において示される値とは異なる値が用いられる、請求項１〜３のいずれか１項に記載の評価システム。
【請求項５】
前記出力手段は、いずれの判断手段により異常であると判断されたのかを特定する情報を前記判断結果に含める、請求項１〜４のいずれか１項に記載の評価システム。
【請求項６】
前記評価条件は、前記評価対象の入力信号と、前記評価対象の出力信号と、前記出力期待値とからなる組を複数含み、前記判断手段による判断は各組について実行され、
前記出力手段は、いずれの組の入力信号について異常であると判断されたのかを特定する情報を前記判断結果に含める、請求項１〜５のいずれか１項に記載の評価システム。
【請求項７】
前記評価条件は、前記評価対象の入力信号と、複数の前記評価対象の出力信号と、それぞれ対応する複数の前記出力期待値とからなる組を含み、前記判断手段による判断は前記複数の出力期待値の各々について実行され、
前記出力手段は、いずれの出力信号について異常であると判断されたのかを特定する情報を前記判断結果に含める、請求項１〜６のいずれか１項に記載の評価システム。
【請求項８】
前記出力手段は、異常であると判断された判断手段に応じたコメントを前記判断結果に含める、請求項１〜７のいずれか１項に記載の評価システム。
【請求項９】
予め定められた条件が成立すると対象機器を安全が保たれるように動作させるための安全プログラム、の機能安全を評価する評価プログラムであって、前記安全プログラムは、１または複数の入力信号に対して、１または複数の出力信号の値を決定するための命令の組み合わせを含み、前記評価プログラムはコンピュータに
１または複数の入力信号に基づいて、前記安全プログラムに従う演算を実行することで、対応する１または複数の出力信号の値を決定するステップと、
評価対象の入力信号と、評価対象の出力信号と、前記評価対象の入力信号の値の変化に対応して出力されるべき前記評価対象の出力信号の値である出力期待値とを含む、評価条件を受付けるステップと、
前記評価対象の入力信号の値を初期値である第１の入力値から第２の入力値に変化させるとともに、前記安全プログラムに従う演算により決定される前記評価対象の出力信号の第１の出力値が前記出力期待値と一致しているか否かに基づいて異常の有無を判断する第１の判断ステップと、
前記評価対象の入力信号の値を前記第２の入力値から前記第１の入力値に戻すとともに、前記安全プログラムに従う演算により決定される前記評価対象の出力信号の第２の出力値が第１の期待値と一致しているか否かに基づいて異常の有無を判断する第２の判断ステップと、
前記評価対象の入力信号に関連付けて、前記第１の判断ステップおよび前記第２の判断ステップでの判断結果を出力するステップとを実行させ、
前記評価条件は、前記入力信号の値が前記第２の入力値から前記第１の入力値に戻ったときに、対応する出力信号の出力値を連動して元の値に戻すことを示す第１の種別と、予め定められたリセット条件が成立するまでは出力信号の出力値を元の値に戻さないことを示す第２の種別とのうち、いずれかの設定を含み、
前記第２の判断ステップは、
前記第１の種別が設定されている場合には、前記評価対象の出力信号の第２の出力値が前記第１の出力値と一致しているときに異常と判断するステップと、
前記第２の種別が設定されている場合には、前記評価対象の出力信号の第２の出力値が前記第１の出力値とは異なっているときに異常と判断するステップとを含む、評価プログラム。
【請求項１０】
予め定められた条件が成立すると対象機器を安全が保たれるように動作させるための安全プログラム、の機能安全を評価する評価プログラムに指令されてコンピュータが実行する評価方法であって、前記安全プログラムは、１または複数の入力信号に対して、１または複数の出力信号の値を決定するための命令の組み合わせを含み、
１または複数の入力信号に基づいて、前記安全プログラムに従う演算を実行することで、対応する１または複数の出力信号の値を決定するステップと、
評価対象の入力信号と、評価対象の出力信号と、前記評価対象の入力信号の値の変化に対応して出力されるべき前記評価対象の出力信号の値である出力期待値とを含む、評価条件を受付けるステップと、
前記評価対象の入力信号の値を初期値である第１の入力値から第２の入力値に変化させるとともに、前記安全プログラムに従う演算により決定される前記評価対象の出力信号の第１の出力値が前記出力期待値と一致しているか否かに基づいて異常の有無を判断する第１の判断ステップと、
前記評価対象の入力信号の値を前記第２の入力値から前記第１の入力値に戻すとともに、前記安全プログラムに従う演算により決定される前記評価対象の出力信号の第２の出力値が前記第１の出力値と一致しているか否かに基づいて異常の有無を判断する第２の判断ステップと、
前記評価対象の入力信号に関連付けて、前記第１の判断ステップおよび前記第２の判断ステップでの判断結果を出力するステップとを備え、
前記評価条件は、前記入力信号の値が前記第２の入力値から前記第１の入力値に戻ったときに、対応する出力信号の出力値を連動して元の値に戻すことを示す第１の種別と、予め定められたリセット条件が成立するまでは出力信号の出力値を元の値に戻さないことを示す第２の種別とのうち、いずれかの設定を含み、
前記第２の判断ステップは、
前記第１の種別が設定されている場合には、前記評価対象の出力信号の第２の出力値が前記第１の出力値と一致しているときに異常と判断するステップと、
前記第２の種別が設定されている場合には、前記評価対象の出力信号の第２の出力値が前記第１の出力値とは異なっているときに異常と判断するステップとを含む、評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、安全プログラムの機能安全を評価する評価システム、評価プログラムおよび、評価方法に関する。
【背景技術】
【０００２】
多くの製造現場で使用される機械を安全に使用するためには、国際規格に従う安全機器（安全コンポーネント）を使用しなければならばない。この安全機器は、ロボットなどの自動的に動く装置によって人の安全が脅かされることの防止を目的としている。このような安全機器は、安全プログラムを実行する安全コントローラをはじめとして、人の存在や侵入を検知する検知機器、非常時の操作を受付ける入力機器、実際に機器を停止させる出力機器などを含む。
【０００３】
このような製造現場での安全を確保する技術の一つとして、例えば、特開２０１４−１３７６２１号公報（特許文献１）は、安全コントローラのユーザプログラムの設計を容易にすることが可能な安全コントローラのユーザプログラムの設計を支援する方法を開示する。
【０００４】
特開２０１４−１３７６２１号公報（特許文献１）は、安全コントローラと安全Ｉ／Ｏターミナルとがバス型ネットワークを介して接続され、安全コントローラでは、安全Ｉ／Ｏターミナルに接続される安全入力機器からの入力信号に基づいて、安全Ｉ／Ｏターミナルに接続される安全出力機器に対して安全動作を行うための指令を出力する構成を開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１３７６２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、安全コントローラで実行される安全プログラムについては、予め設計されたとおりに動作することを確認する必要がある。上述の特許文献１は、安全コントローラのユーザプログラムの設計を容易にすることが可能な安全コントローラのユーザプログラムの設計を支援する方法を開示するが、出来上がった安全コントローラのユーザプログラムを検査する手法については教示されていない。
【０００７】
そのため、安全プログラムの機能安全をより容易に評価できる技術が要望されている。
【課題を解決するための手段】
【０００８】
本発明のある局面に従えば、予め定められた条件が成立すると対象機器を安全が保たれるように動作させるための安全プログラム、の機能安全を評価する評価システムが提供される。評価システムは、１または複数の入力信号に基づいて、安全プログラムに従う演算を実行することで、対応する１または複数の出力信号の値を決定する処理実行手段と、評価対象の入力信号と、評価対象の出力信号と、評価対象の入力信号の値の変化に対応して出力されるべき評価対象の出力信号の値である出力期待値とを含む、評価条件を受付ける設定手段と、評価対象の入力信号の値を初期値である第１の入力値から第２の入力値に変化させるとともに、処理実行手段により決定される評価対象の出力信号の第１の出力値が出力期待値と一致しているか否かを判断する第１の判断手段と、評価対象の入力信号の値を第２の入力値から第１の入力値に戻すとともに、処理実行手段により決定される評価対象の出力信号の第２の出力値が第１の出力値と一致しているか否かを判断する第２の判断手段と、評価対象の入力信号に関連付けて、第１の判断手段および第２の判断手段での判断結果を出力する出力手段とを含む。
【０００９】
好ましくは、評価条件は、入力信号の値が第２の入力値から第１の入力値に戻ったときに、対応する出力信号の出力値を連動して元の値に戻すことを示す第１の種別と、予め定められたリセット条件が成立するまでは出力信号の出力値を元の値に戻さないことを示す第２の種別とのうち、いずれかの設定を含む。第２の判断手段は、第１の種別が設定されている場合には、評価対象の出力信号の第２の出力値が第１の出力値とは異なっているときに正常と判断し、第２の種別が設定されている場合には、評価対象の出力信号の第２の出力値が第１の出力値と一致しているときに正常と判断する。
【００１０】
より好ましくは、評価条件は、第２の種別の予め定められたリセット条件として、リセット信号の設定を含む。評価システムは、第２の判断手段による判断後、リセット信号を有効化するとともに、処理実行手段により決定される評価対象の出力信号の第３の出力値が第１の出力値と一致しているか否かを判断する第３の判断手段をさらに含む。
【００１１】
好ましくは、評価システムは、第１の判断手段による判断の前に、評価対象の入力信号の値を第１の入力値に設定するとともに、処理実行手段により決定される評価対象の出力信号の第４の出力値が初期値と一致しているか否かを判断する第４の判断手段をさらに含む。
【００１２】
好ましくは、初期値である第１の入力値は、安全プログラムを実行する安全コントローラに供給される電源が喪失したときと同様のメモリの状態において示される値とは異なる値が用いられる。
【００１３】
好ましくは、出力手段は、いずれの判断手段により異常であると判断されたのかを特定する情報を判断結果に含める。
【００１４】
好ましくは、評価条件は、評価対象の入力信号と、評価対象の出力信号と、出力期待値とからなる組を複数含み、判断手段による判断は各組について実行される。出力手段は、いずれの組の入力信号について異常であると判断されたのかを特定する情報を判断結果に含める。
【００１５】
好ましくは、評価条件は、評価対象の入力信号と、複数の評価対象の出力信号と、それぞれ対応する複数の出力期待値とからなる組を含み、判断手段による判断は複数の出力期待値の各々について実行される。出力手段は、いずれの出力信号について異常であると判断されたのかを特定する情報を判断結果に含める。
【００１６】
好ましくは、出力手段は、異常であると判断された判断手段に応じたコメントを判断結果に含める。
【００１７】
本発明の別の局面に従えば、予め定められた条件が成立すると対象機器を安全が保たれるように動作させるための安全プログラム、の機能安全を評価する評価プログラムが提供される。評価プログラムはコンピュータに、１または複数の入力信号に基づいて、安全プログラムに従う演算を実行することで、対応する１または複数の出力信号の値を決定するステップと、評価対象の入力信号と、評価対象の出力信号と、評価対象の入力信号の値の変化に対応して出力されるべき評価対象の出力信号の値である出力期待値とを含む、評価条件を受付けるステップと、評価対象の入力信号の値を初期値である第１の入力値から第２の入力値に変化させるとともに、安全プログラムに従う演算により決定される評価対象の出力信号の第１の出力値が出力期待値と一致しているか否かを判断するステップと、評価対象の入力信号の値を第２の入力値から第１の入力値に戻すとともに、安全プログラムに従う演算により決定される評価対象の出力信号の第２の出力値が第１の期待値と一致しているか否かを判断するステップと、評価対象の入力信号に関連付けて、判断するステップでの判断結果を出力するステップとを実行させる。
【００１８】
本発明のさらに別の局面に従えば、予め定められた条件が成立すると対象機器を安全が保たれるように動作させるための安全プログラム、の機能安全を評価する評価方法が提供される。評価方法は、１または複数の入力信号に基づいて、安全プログラムに従う演算を実行することで、対応する１または複数の出力信号の値を決定するステップと、評価対象の入力信号と、評価対象の出力信号と、評価対象の入力信号の値の変化に対応して出力されるべき評価対象の出力信号の値である出力期待値とを含む、評価条件を受付けるステップと、評価対象の入力信号の値を初期値である第１の入力値から第２の入力値に変化させるとともに、安全プログラムに従う演算により決定される評価対象の出力信号の第１の出力値が出力期待値と一致しているか否かを判断するステップと、評価対象の入力信号の値を第２の入力値から第１の入力値に戻すとともに、安全プログラムに従う演算により決定される評価対象の出力信号の第２の出力値が第１の出力値と一致しているか否かを判断するステップと、評価対象の入力信号に関連付けて、判断するステップでの判断結果を出力するステップとを含む。
【発明の効果】
【００１９】
本発明によれば、安全プログラムの機能安全をより容易に評価できる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態に従う評価システムの概要を機能的な面から説明する模式図である。
【図２】本実施の形態に従う評価システムのハードウェア構成の一例を示す模式図である。
【図３】本実施の形態に従う評価システムのソフトウェア構成の一例を示す模式図である。
【図４】本実施の形態に従う評価システムの構成例を示す模式図である。
【図５】本実施の形態に従う評価システムが対象とする安全プログラムの一例を示す模式図である。
【図６】本実施の形態に従う安全プログラムに含まれる非常停止ＦＢに設定されるリセット種別を説明するための図である。
【図７】本実施の形態に従う評価システムが対象とする安全プログラムの別の一例を示す模式図である。
【図８】本実施の形態に従う機能安全評価の手順の一例を説明するタイムチャートである。
【図９】本実施の形態に従う評価システムにおいて評価条件を設定するためのユーザインターフェイス画面の一例を示す模式図である。
【図１０】本実施の形態に従う評価システムにおいて出力期待値のエクスポートおよびインポート処理を説明するための図である。
【図１１】本実施の形態に従う評価システムにおいて他のアプリケーションとの連携によって出力期待値を設定する処理を説明するための図である。
【図１２】本実施の形態に従う評価システムにおいて実行される機能安全評価の処理手順を示すフローチャートである。
【図１３】本実施の形態に従う評価システムにおいて実行される機能安全評価の処理手順を示すフローチャートである。
【図１４】本実施の形態に従う評価システムにおいて実行される機能安全評価の評価結果の一例を示す模式図である。
【図１５】本実施の形態に従う評価システムが提供する評価条件の設定支援機能を説明する模式図である。
【図１６】本実施の形態に従う評価システムが提供する評価条件の設定支援機能を説明する模式図である。
【図１７】本実施の形態に従う評価システムが提供する評価条件の設定支援機能に係る処理手順を示すフローチャートである。
【発明を実施するための形態】
【００２１】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２２】
＜Ａ．評価システムの概要＞
まず、本実施の形態に従う評価システムの概要について説明する。評価システムは、任意の安全プログラムの機能安全を評価する。
【００２３】
本明細書において、「安全プログラム」は、予め定められた条件（安全条件）が成立すると対象機器を安全が保たれるように動作させるためのプログラムであり、安全コントローラの処理を定義する命令群を意味する。より具体的には、安全プログラムは、１または複数の入力信号に対して、１または複数の出力信号の値を決定するための命令の組み合わせを含む。
【００２４】
安全プログラムは、安全コントローラの処理を定義するものであれば、どのような実体であってもよい。すなわち、安全プログラムは、１または複数のソースコードとして存在してもよいし、１または複数のオブジェクトコードとして存在してもよいし、安全コントローラのプロセッサで実行可能な形式（実行形式）であってもよい。
【００２５】
また、安全プログラムは、ファンクションブロックダイアグラム（ＦＢＤ：Function Block Diagram）を用いて記述されていてもよい。あるいは、ラダーダイアグラム（ＬＤ：Ladder Diagram）、命令リスト（ＩＬ：Instruction List）、構造化テキスト（ＳＴ：Structured Text）、および、シーケンシャルファンクションチャート（ＳＦＣ：Sequential Function Chart）のいずれか、あるいは、これらの組み合わせで記述されてもよい。さらにあるいは、ＪａｖａＳｃｒｉｐｔ（登録商標）やＣ言語のような汎用的なプログラミング言語で記述されていてもよい。
【００２６】
なお、ＰＬＣプログラミングの国際基準ＩＥＣ  ６１１３１−３（ＪＩＳ  Ｂ  ３５０３）の普及活動と、ベンダに依存しない標準ファンクションブロックダイアグラムの仕様策定および認定を行う第三者機関であるＰＬＣｏｐｅｎ（登録商標）が、ｔｅｃｈｎｉｃａｌ  ｃｏｍｍｉｔｔｅｅ  ５において公開している規約に準拠して安全プログラムを作成することが好ましい。
【００２７】
本実施の形態に従う評価システムにおける安全プログラムの機能安全の評価とは、対象の安全プログラムによる挙動がしかるべき安全規格に適合しているか否かを検証するものである。具体的には、安全プログラムに入力される変数の値の各組み合わせを入力し、当該入力に対する出力結果が、本来あるべき結果と一致するか否かを逐次判断する。評価システムは、このよう入力値の各組み合わせについての検証動作を自動的に実行することができる。
【００２８】
以下の説明では、変数プログラムとして記述された安全プログラムについて例示する。そのため、実際に安全コントローラと安全コンポーネントなどとの間で遣り取りされる信号（典型的には、入力信号および出力信号）を安全プログラム内では、それぞれ「変数」として取り扱うことになる。これらの現実の信号と安全プログラム内の対応する変数とは本質的に同じものであるため、以下の説明では、これらを「信号」と総称することもある。すなわち、本明細書において、「信号」は、現実に遣り取りされる電気信号に加えて、安全コントローラ上でその電気信号に割り当てられた値を参照する変数を含み得る。
【００２９】
図１は、本実施の形態に従う評価システム１の概要を機能的な面から説明する模式図である。図１を参照して、評価システム１は、その主たる機能として、プログラム実行機能２と、比較機能４と、解析・抽出機能６とを含む。
【００３０】
プログラム実行機能２は、安全プログラム１０に従って所定周期毎またはイベント発生毎に演算処理を実行し、その実行結果を出力する。プログラム実行機能２のプログラム実行時には、１または複数の入力値を取得し、その取得した入力値に基づいて論理演算などを実行する。入力値と当該入力値に対応する出力期待値との組み合わせを含む、評価条件２０が予め用意されており、評価条件２０に基づいて、安全プログラム１０の入力値が順次更新される。
【００３１】
比較機能４は、評価条件２０に基づく入力値をプログラム実行機能２に入力したときに出力される出力値と、評価条件２０において当該入力値に対応する出力期待値とを比較する。両者が一致する場合には、１次的な安全動作が健全であると判断する。
【００３２】
評価条件２０には、入力値および当該入力値に対応する出力期待値が格納されるとともに、復帰動作の条件についても格納されている。本実施の形態に従う機能安全評価においては、設定されている復帰動作の条件に従って、先に入力された入力値が変化または維持される。そして、この入力値の変化または維持に伴う出力値の変化または維持が、予め設定されている復帰動作の条件に適合するか否かも判断される。
【００３３】
このように、本実施の形態においては、安全動作のトリガとなる入力値を与えることでしかるべき安全動作が実行されるか否かの評価（１次的な安全動作の評価）に加えて、安全動作のトリガとなる入力値が元の値に復帰したときに、停止状態などが維持されるか、あるいは、停止状態などが通常の動作状態に復帰するかについても評価（２次的な安全動作の評価）がなされる。なお、２次的な安全動作の評価では、予め設定された復帰動作の条件に従う挙動であるか否かが判断される。
【００３４】
以上のような評価結果は、機能安全評価結果３０として、画面上または紙面上に出力されてもよい。
【００３５】
本実施の形態に従う評価システム１は、安全プログラム１０に定義されている入力値を自動的に抽出し、評価条件２０に必要な入力値のリストなどを自動的に生成機能が実装されていてもよい。安全プログラム１０に含まれる論理（安全パス）が多くなると、すべての入力値と出力値との関係を手動で抽出することは難しくなる。そこで、本実施の形態に従う評価システム１では、解析・抽出機能６が安全プログラム１０を解析し、その中に含まれる入力値などを抽出し、評価条件２０の作成を支援する。このような支援機能を実装することで、より確実に機能安全を評価することができる。
【００３６】
以下、機能安全評価を実行する処理、および、評価条件２０の作成を支援する処理などについて、より詳細に説明する。
【００３７】
＜Ｂ．評価システムのハードウェア構成＞
次に、評価システム１のハードウェア構成について例示する。図２は、本実施の形態に従う評価システム１のハードウェア構成の一例を示す模式図である。
【００３８】
図２に示す本実施の形態に従う評価システム１は、典型的には、汎用コンピュータが予めインストールされたプログラムを実行することで実現される。具体的には、評価システム１は、主たるコンポーネントとして、オペレーティングシステム（ＯＳ：Operating System）および後述するような各種プログラムを実行するプロセッサ１０２と、プロセッサ１０２でのプログラム実行に必要なデータを格納するための作業領域を提供するメモリ１０４と、キーボードやマウスなどのユーザ操作を受付ける入力部１０６と、ディスプレイ、各種インジケータ、プリンタなどの処理結果を出力する出力部１０８と、外部ネットワークと通信するためのネットワークインターフェイス（Ｉ／Ｆ：Inter Face）１１０と、光学ドライブ１１２と、安全コントローラなどと通信するためのローカル通信インターフェイス（Ｉ／Ｆ）１１６と、補助記憶装置１２０とを含む。これらのコンポーネントは、内部バス１１８などを介してデータ通信可能に接続される。
【００３９】
評価システム１は、光学ドライブ１１２を有しており、コンピュータ読取可能なプログラムを非一過的に格納する光学記録媒体（例えば、ＤＶＤ（Digital Versatile Disc）など）のコンピュータ読取可能な記録媒体１１４から、各種プログラムを読取って補助記憶装置１２０などにインストールする。本実施の形態に従う機能安全の評価に係る処理は、安全コントローラに対する設定、プログラミング、デバッグなどの機能を提供する開発環境プログラムの一部として提供されてもよい。
【００４０】
評価システム１で実行される各種プログラムは、コンピュータ読取可能な記録媒体１１４を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に従う機能安全の評価に係るプログラムは、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。このような場合には、本実施の形態に従う機能安全の評価の実現に必要なすべてのソフトウェアモジュールが配布されるのではなく、その一部のみが配布されることになる。このような場合であっても、本発明の技術的範囲に包含されることは自明である。また、本実施の形態に従う機能安全の評価に係る処理が、他のプログラムまたはソフトウェアの一部として実装されてもよい。
【００４１】
補助記憶装置１２０は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Flash Solid State Drive）などで構成され、プロセッサ１０２で実行されるプログラムを格納する。具体的には、補助記憶装置１２０は、後述するような処理を提供するプログラムとして、安全プログラム（ソースプログラム）からプロセッサ１０２で実行可能なコード（実行モジュール）を生成するための実行モジュール生成プログラム１２２と、安全コントローラを模擬して安全プログラム（実行モジュール）を実行するためのエミュレータプログラム１２４と、後述するような機能安全を評価するための機能安全評価プログラム１２６とを含む。これらのプログラムが提供する機能および処理については、後述する。
【００４２】
また、補助記憶装置１２０は、機能安全の評価対象となる安全プログラム１０および各種設定１３０を保持する。
【００４３】
図２には、汎用コンピュータがプログラムを実行することで、本実施の形態に従う安全プログラムの機能安全の評価を実現するが、このような構成に代えて、その全部または一部をハードワイヤード回路で実装してもよい。例えば、プロセッサ１０２が上述の各種プログラムを実行することで提供される機能をＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field-Programmable Gate Array）を用いて実装してもよい。
【００４４】
＜Ｃ．評価システムのソフトウェア構成＞
次に、評価システム１のソフトウェア構成について例示する。図３は、本実施の形態に従う評価システム１のソフトウェア構成の一例を示す模式図である。図３を参照して、評価システム１は、そのソフトウェアコンポーネントとして、実行モジュール生成部１５２と、エミュレータ１５４と、入力値変更部１５６と、比較部１５８と、結果出力部１６０と、評価条件生成部１７０とを含む。
【００４５】
実行モジュール生成部１５２は、プロセッサ１０２が実行モジュール生成プログラム１２２（図２）を実行することで実現され、安全プログラム１０から実行モジュールを生成する。実行モジュール生成部１５２は、典型的には、コンパイラ、アセンブラ、リンカなどの機能を含む。
【００４６】
エミュレータ１５４は、プロセッサ１０２がエミュレータプログラム１２４（図２）を実行することで実現され、実行モジュール生成部１５２により生成された実行プログラムを実行する。
【００４７】
入力値変更部１５６は、予め用意された評価条件に従って、機能安全を評価するための入力値をエミュレータ１５４へ与える。比較部１５８は、機能安全を評価するための入力値をエミュレータ１５４へ与えることで算出される出力値と、当該入力値に対応する出力期待値とを比較し、その比較結果を出力する。この比較処理については、後述するように複数種類存在する。結果出力部１６０は、比較部１５８からの比較結果を機能安全の評価出力として出力する。
【００４８】
入力値変更部１５６、比較部１５８、および、結果出力部１６０は、プロセッサ１０２が機能安全評価プログラム１２６（図２）を実行することで実現される。
【００４９】
評価条件生成部１７０は、安全プログラム１０の内容を解析して、機能安全評価に必要な入力値の組み合わせなどを生成する。
【００５０】
図２および図３には、汎用コンピュータに実装されるエミュレータを用いて安全プログラムを実行する構成について例示したが、現実の安全コントローラを用いてもよい。以下、本実施の形態に従う評価システムの具体的な構成例について例示する。
【００５１】
図４は、本実施の形態に従う評価システムの構成例を示す模式図である。図４（Ａ）には、汎用コンピュータのみで評価システムを実現する例を示し、図４（Ｂ）には、汎用コンピュータおよび安全コントローラを用いて評価システムを実現する例を示す。
【００５２】
図４（Ａ）に示すように、汎用コンピュータＰＣのみで評価システムを実現する場合には、汎用コンピュータＰＣ上に、エミュレータ１５４、比較部１５８、結果出力部１６０を実装することになる。
【００５３】
これに対応して、汎用コンピュータＰＣおよび安全コントローラを用いて評価システムを実現する場合には、汎用コンピュータＰＣと安全コントローラとをデータ遣り取り可能に接続する。その上で、汎用コンピュータＰＣ上に比較部１５８および結果出力部１６０を実装するとともに、安全コントローラ上で対象の安全プログラム１０を実行させることになる。
【００５４】
このように、評価システム１は、１または複数の入力信号に基づいて、安全プログラム１０に従う演算を実行することで、対応する１または複数の出力信号の値を決定する処理実行機能を有しており、この処理実行機能は、安全プログラム１０を現実または仮想的に実行できる環境により実現できる。
【００５５】
＜Ｄ．安全プログラム＞
次に、本実施の形態に従う評価システム１が対象とする安全プログラムの一例について説明する。本実施の形態においては、一例として、国際基準ＩＥＣ  ６１１３１−３（ＪＩＳ  Ｂ  ３５０３）に従うファンクションブロックダイアグラム（ＦＢＤ：Function Block Diagram）を用いて記述する例を示す。
【００５６】
図５は、本実施の形態に従う評価システム１が対象とする安全プログラム１０の一例を示す模式図である。図５に示す安全プログラム１０は、典型的には、何らかのロボットが配置され、その周囲にある危険エリアを安全柵で囲むとともに、安全柵の一部に人が出入りできるようになっている設備などを想定したものである。人が危険エリアに出入りする部分には、ライトカーテンが設けられるとともに、危険エリアの周囲には、万が一の事態が発生したときに、ロボットを緊急停止できる非常停止ボタンが設けられているとする。
【００５７】
図５に示す安全プログラム１０では、２つの非常停止ファンクションブロック（以下、「非常停止ＦＢ」とも記す。）１２，１４と、出力チェックファンクションブロック（以下、「出力チェックＦＢ」とも記す。）１８と、両者を接続するアンドブロック１６とを含む。非常停止ＦＢ１２は、非常停止ボタンからの入力信号を処理する論理であり、非常停止ＦＢ１４は、ライトカーテンからの入力信号するための論理である。
【００５８】
本実施の形態に従う評価システム１が対象とする安全プログラム１０では、変数プログラミングによりプログラムが記述されている。すなわち、非常停止ボタンやライトカーテンから出力される信号の各々は、予め定められた設定に従って、ユニークな内部変数に割り当てられている。安全プログラム１０においては、各ファンクションブロックに対して、適切な内部変数を入力または出力に論理的に関連付けることで、目的の動作が実現される。
【００５９】
非常停止ＦＢ１２，１４の各々は、その入力として、ファンクションブロックの処理の有効／無効を設定する「Ａｃｔｉｖａｔｅ」と、非常停止に係る安全コンポーネントから出力される信号が入力される「Ｓ＿ＥＳｔｏｐＩｎ」と、リセット後のプログラム実行を開始するか否かを設定する信号が入力される「Ｓ＿ＳｔａｒｔＲｅｓｅｔ」と、安全動作後のリセット種別を設定する信号が入力される「Ｓ＿ＡｕｔｏＲｅｓｅｔ」と、安全動作後の動作をリセットする信号が入力される「Ｒｅｓｅｔ」との、合計５つを有している。
【００６０】
また、非常停止ＦＢ１２，１４の各々は、その出力として、ファンクションブロックが運転状態であるか否か示す信号を出力する「Ｒｅａｄｙ」と、安全動作を指示する信号を出力する「Ｓ＿ＥＳｔｏｐＯｕｔ」と、何らかのエラーの発生を示す信号を出力する「Ｅｒｒｏｒ」と、発生したエラーの内容に対応するコードを出力する「ＤｉａｇＣｏｄｅ」との、合計４つを有している。
【００６１】
本実施の形態において、安全プログラム１０では、正常時における入力値および出力値を「ＴＲＵＥ」（「１」または「真」）とする。すなわち、何らかの条件にて安全動作を行う場合には、当該安全動作のトリガとなる入力値が「ＦＡＬＳＥ（「０」または「偽」）」に変化することで、出力値も「ＦＡＬＳＥ」となり、「ＦＡＬＳＥ」の出力値によって、対象の装置が安全動作を行う。
【００６２】
入力信号および出力信号の初期値として設定される「ＴＲＵＥ」は、安全プログラム１０を実行する安全コントローラに供給される電源が喪失したときと同様のメモリの状態において示される値（すなわち、「ＦＡＬＳＥ」）とは異なる値が用いられる。すなわち、安全コントローラの不揮発性メモリに電荷などが保持されていない状態において示される値とは異なる値を用いることで、ハードウェアの故障などにおいて、安全動作が行われる、いわゆるフェールセーフを実現できる。
【００６３】
なお、正常時および非常時における入力値および出力値に対する値の割り付けは設計事項であり、どのようなものであってもよい。但し、上述したようなフェールセーフの観点などからは、正常時の入力値および出力値を「ＴＲＵＥ」とすることが好ましい。
【００６４】
図５に示す安全プログラム１０において、非常停止ＦＢ１２の入力「Ｓ＿ＥＳｔｏｐＩｎ」には、非常停止ボタンから出力される信号を示す変数「Ｖａｒ＿ＥｍｅｒｇｅｎｃｙＳｔｏｐ１」が割り当てられ、入力「Ｒｅｓｅｔ」には、安全コントローラに対するシステムリセットを示す変数「ＳｙｓｔｅｍＲｅｓｅｔ」が割り当てられている。
【００６５】
非常停止ＦＢ１４の入力「Ｓ＿ＥＳｔｏｐＩｎ」には、ライトカーテンから出力される信号を示す変数「Ｖａｒ＿ＬｉｇｈｔＣｕｒｔａｉｎ１」が割り当てられ、入力「Ｒｅｓｅｔ」には、安全コントローラに対するシステムリセットを示す変数「ＳｙｓｔｅｍＲｅｓｅｔ」が割り当てられている。
【００６６】
非常停止ＦＢ１２，１４の「Ａｃｔｉｖａｔｅ」にはいずれも「ＴＲＵＥ」、すなわち処理の有効が設定されており、「Ｓ＿ＳｔａｒｔＲｅｓｅｔ」にはいずれも「ＴＲＵＥ」、すなわちリセット後のプログラム実行が設定されており、「Ｓ＿ＡｕｔｏＲｅｓｅｔ」にはいずれも「ＦＡＬＳＥ」、すなわちリセット種別として「マニュアルリセット」が設定されている。
【００６７】
非常停止ＦＢ１２，１４の各々は、基本的には、「Ｓ＿ＥＳｔｏｐＩｎ」に入力される変数が「ＦＡＬＳＥ」になると、「Ｓ＿ＥＳｔｏｐＯｕｔ」の出力値が「ＦＡＬＳＥ」に変化する。このような安全動作の後、設定されたリセット種別に従って、「Ｓ＿ＥＳｔｏｐＩｎ」に入力される変数、および／または、「Ｒｅｓｅｔ」に入力される変数の値に応じて、「Ｓ＿ＥＳｔｏｐＯｕｔ」の出力値をリセットまたは維持する。
【００６８】
非常停止ＦＢ１２および非常停止ＦＢ１４のそれぞれのからの「Ｓ＿ＥＳｔｏｐＯｕｔ」は、アンドブロック１６に入力され、両者の論理積が出力チェックＦＢ１８へ入力される。
【００６９】
出力チェックＦＢ１８は、安全動作を司る安全コンポーネントが指令どおりに機能しているかをチェックする論理である。出力チェックＦＢ１８は、その入力として、ファンクションブロックの処理の有効／無効を設定する「Ａｃｔｉｖａｔｅ」と、安全コンポーネントの動作指令を示す信号が入力される「Ｓ＿ＯｕｔＣｏｎｔｒｏｌ」と、安全コンポーネントの状態値を示す信号が入力される「Ｓ＿ＥＤＭ１」および「Ｓ＿ＥＤＭ２」と、健全性の監視周期を示す値が入力される「ＭｏｎｉｔｏｒｉｎｇＴｉｍｅ」と、リセット後のプログラム実行を開始するか否かを設定する信号が入力される「Ｓ＿ＳｔａｒｔＲｅｓｅｔ」と、安全動作後の状態値をリセットする信号が入力される「Ｒｅｓｅｔ」との、合計７つを有している。
【００７０】
また、出力チェックＦＢ１８は、その出力として、ファンクションブロックが運転状態であるか否か示す信号を出力する「Ｒｅａｄｙ」と、安全コンポーネントに対する安全動作を指示する最終的な信号を出力する「Ｓ＿ＥＤＭ＿Ｏｕｔ」と、何らかのエラーの発生を示す信号を出力する「Ｅｒｒｏｒ」と、発生したエラーの内容に対応するコードを出力する「ＤｉａｇＣｏｄｅ」との、合計４つを有している。
【００７１】
出力チェックＦＢ１８は、「Ｓ＿ＯｕｔＣｏｎｔｒｏｌ」への入力値に応じて、「Ｓ＿ＥＤＭ＿Ｏｕｔ」から対象の安全コンポーネントへ与える指令値を変化させるとともに、安全コンポーネントの状態値が指令値と一致しているか否かを判断する。これによって、例えば、安全リレーの断線などによる不動、および、溶着などによる常時動作などの不具合を検出することができる。
【００７２】
図５に示す安全プログラム１０は、簡単な論理の一例を示すが、より多くの入力信号が与えられえるとともに、より多くの安全コンポーネントに対して指令値を与えるようにしてもよい。
【００７３】
＜Ｅ．リセット種別＞
次に、図５に示す安全プログラム１０に含まれる非常停止ＦＢに設定されるリセット種別について説明する。上述したように、非常停止ＦＢに、一例として、「オートリセット」および「マニュアルリセット」を選択的に設定できるようになっている。
【００７４】
「オートリセット」は、例えば、ライトカーテンなどの安全コンポーネントからの入力信号が「ＦＡＬＳＥ」になっている間だけ安全動作を行うような場合などに好適である。例えば、人が危険エリアに侵入している間だけ装置を停止させ、それ以外の状態では装置を動作させるような状況に用いることができる。このような「オートリセット」を設定することで、作業者に対する安全を確保しつつ、タクトタイムへの影響を低減できる。
【００７５】
「マニュアルリセット」は、一般的なリセット種別であり、非常停止ボタンなどの安全コンポーネントが操作されて、安全動作が行われた後、リセットには所定の復帰操作を必要とするような場合に好適である。例えば、非常停止ボタンが操作されて、装置が作業途中で停止した場合などには、当該装置を初期位置に戻した上で、リセットすることが好ましい。
【００７６】
このように、リセット種別としては、入力信号の値が「ＦＡＬＳＥ」（第２の入力値）から「ＴＲＵＥ」（第１の入力値）に戻ったときに、対応する出力信号の出力値を連動して元の値に戻すことを示す「オートリセット」（第１の種別）と、予め定められたリセット条件が成立するまでは出力信号の出力値を元の値に戻さないことを示す「マニュアルリセット」（第２の種別）とを含む。
【００７７】
図６は、本実施の形態に従う安全プログラム１０に含まれる非常停止ＦＢに設定されるリセット種別を説明するための図である。
【００７８】
図６（Ａ）は、リセット種別として「オートリセット」が設定されている場合を示し、図６（Ｂ）は、リセット種別として「マニュアルリセット」が設定されている場合を示す。
【００７９】
図６（Ａ）に示す「オートリセット」では、非常停止ＦＢの入力「Ｓ＿ＥＳｔｏｐＩｎ」が「ＴＲＵＥ」から「ＦＡＬＳＥ」に変化すると、非常停止ＦＢの出力「Ｓ＿ＥＳｔｏｐＯｕｔ」が「ＴＲＵＥ」から「ＦＡＬＳＥ」に変化する。この「Ｓ＿ＥＳｔｏｐＯｕｔ」の変化によって、安全動作が行われる。その後、非常停止ＦＢの入力「Ｓ＿ＥＳｔｏｐＩｎ」が「ＦＡＬＳＥ」から「ＴＲＵＥ」に復帰すると、リセット動作も併せて実行される。すなわち、非常停止ＦＢの入力「Ｓ＿ＥＳｔｏｐＩｎ」に連動して、非常停止ＦＢの出力「Ｓ＿ＥＳｔｏｐＯｕｔ」も変化することになる。
【００８０】
本実施の形態に従う評価システム１では、「オートリセット」が設定されている出力変数については、対応する入力変数の値の変化に連動して、その値が変化することを確認する。
【００８１】
図６（Ｂ）に示す「マニュアルリセット」では、非常停止ＦＢの入力「Ｓ＿ＥＳｔｏｐＩｎ」が「ＴＲＵＥ」から「ＦＡＬＳＥ」に変化して、非常停止ＦＢの出力「Ｓ＿ＥＳｔｏｐＯｕｔ」が「ＴＲＵＥ」から「ＦＡＬＳＥ」に変化した後、非常停止ＦＢの入力「Ｓ＿ＥＳｔｏｐＩｎ」が「ＦＡＬＳＥ」から「ＴＲＵＥ」に復帰したとしても、非常停止ＦＢの出力「Ｓ＿ＥＳｔｏｐＯｕｔ」が「ＦＡＬＳＥ」に維持される。この状態において、非常停止ＦＢの入力「Ｒｅｓｅｔ」が「ＦＡＬＳＥ」から「ＴＲＵＥ」に変化することで、はじめて非常停止ＦＢの出力「Ｓ＿ＥＳｔｏｐＯｕｔ」は「ＦＡＬＳＥ」から「ＴＲＵＥ」に変化する。
【００８２】
本実施の形態に従う評価システム１では、「マニュアルリセット」が設定されている出力変数については、安全動作の実行後、対応する入力変数の値が変化したとしても、その変化後の値が維持されること、および、リセットに係る変数が入力されたときには、その値が初期値にリセットされること、を確認する。
【００８３】
＜Ｆ．機能安全評価の全体手順＞
次に、本実施の形態に従う評価システム１が提供する機能安全評価の全体手順について説明する。
【００８４】
図７は、本実施の形態に従う評価システム１が対象とする安全プログラム１０の別の一例を示す模式図である。図８は、本実施の形態に従う機能安全評価の手順の一例を説明するタイムチャートである。図８には、図７に示す安全プログラム１０を対象に機能安全評価を適用した場合の手順を時系列に示す。図７に示す安全プログラム１０において、非常停止ＦＢ１２の「Ｓ＿ＥＳｔｏｐＩｎ」に入力される変数を「入力変数１」とし、非常停止ＦＢ１４の「Ｓ＿ＥＳｔｏｐＩｎ」に入力される変数を「入力変数２」とし、非常停止ＦＢ１２，１４の「Ｒｅｓｅｔ」に共通して入力される変数を「リセット変数」として、非常停止ＦＢ１２の「Ｓ＿ＥＳｔｏｐＯｕｔ」から出力される変数を「出力変数１」とする。なお、非常停止ＦＢ１４の「Ｓ＿ＥＳｔｏｐＯｕｔ」から出力される変数については、図８には示していない。
【００８５】
図８（Ａ）は、出力変数に対して「オートリセット」が設定されている例を示し、図８（Ｂ）は、出力変数に対して「マニュアルリセット」が設定されている例を示す。
【００８６】
本実施の形態に従う機能安全評価は、典型的には、３つのフェーズ（初期化フェーズ、遮断フェーズ、復帰フェーズ）を含む。初期化フェーズでは、すべての入力変数を予め設定された初期値に設定したときに、出力変数がしかるべき初期状態になっていることを確認する。遮断フェーズでは、設定された入力変数が安全動作を示す値に変化したときに、対応する出力変数がしかるべき値に変化していること、および／または、対応する出力変数が変化していないこと、を確認する。復帰フェーズでは、入力変数および／またはリセット変数がリセット動作を示す値に変化したときに、設定されたリセット種別でリセットされることを確認する。
【００８７】
図８に示す機能安全評価の手順において、出力変数１は、期待値として「ＴＲＵＥ」が設定されている変数であり、入力変数１に対して連動することが予定されている。これに対して、出力変数２は、期待値として「ＦＡＬＳＥ」が設定されている変数であり、入力変数１に対して連動しないことが予定されている。以下に説明する判断処理は、図１に示す比較機能４および図３に示す比較部１５８によって実行される。
【００８８】
まず、図８（Ａ）を参照して、リセット種別として「オートリセット」が設定されている場合の機能安全評価の手順について説明する。
【００８９】
初期化フェーズにおいて、評価対象の入力信号の値を初期値（第１の入力値）に設定するとともに、安全プログラム１０に従う演算処理によって決定される評価対象の出力信号の値（第４の出力値）が初期値と一致しているか否かが判断される。
【００９０】
具体的には、登録されているすべての入力変数を「ＴＲＵＥ」にセットする（符号２０２）。併せて、リセット変数を一旦「ＴＲＵＥ」にセットした後（符号２０４）、「ＦＡＬＳＥ」にセットする（符号２０６）。この変化に対応して、登録されているすべての出力変数が「ＴＲＵＥ」であることを確認する（符号２０８）。いずれかの出力変数が「ＦＡＬＳＥ」であれば、何らかの異常があると判断される（符号２１０）。
【００９１】
続く遮断フェーズにおいて、評価対象の入力信号の値を初期値である「ＴＲＵＥ」（第１の入力値）から「ＦＡＬＳＥ」（第２の入力値）に変化させるとともに、安全プログラム１０に従う演算処理によって決定される評価対象の出力信号の値（第１の出力値）が対応する出力期待値と一致しているか否かが判断される。
【００９２】
具体的には、特定の入力変数１を「ＴＲＵＥ」から「ＦＡＬＳＥ」にセットする（符号２１２）。この変化に対応して、期待値設定がチェックされている（入力変数１に対する連動することが予定されている）出力変数１が「ＦＡＬＳＥ」であることを確認する（符号２１４）。出力変数１が「ＴＲＵＥ」であれば、入力変数１に連動しておらず、何らかの異常があると判断される（符号２１６）。一方、期待値設定がチェックされていない（入力変数１に対する連動しないことが予定されている）出力変数２が「ＴＲＵＥ」であることを確認する（符号２１８）。出力変数２が「ＦＡＬＳＥ」であれば、入力変数１と連動しており、何らかの異常があると判断される（符号２２０）。
【００９３】
最終の復帰フェーズにおいて、評価対象の入力信号の値を「ＦＡＬＳＥ」（第２の入力値）から「ＴＲＵＥ」（第１の入力値）に戻すとともに、安全プログラム１０に従う演算処理によって決定される評価対象の出力信号の値（第２の出力値）が遮断フェーズでの値（第１の出力値）と一致しているか否かが判断される。
【００９４】
具体的には、入力変数１を「ＦＡＬＳＥ」から「ＴＲＵＥ」にセットする（符号２２２）。このとき、リセット変数は「ＦＡＬＳＥ」のまま維持される。この変化に対応して、登録されているすべての出力変数が「ＴＲＵＥ」であることを確認する（符号２２４，２２８）。いずれかの出力変数が「ＦＡＬＳＥ」であれば、何らかの異常があると判断される（符号２２６，２３０）。
【００９５】
このように、「オートリセット」（第１の種別）が設定されている場合には、入力信号の値を「ＦＡＬＳＥ」から「ＴＲＵＥ」に戻したときの評価対象の出力信号の出力値が「ＦＡＬＳＥ」（第１の出力値）とは異なっているときに正常と判断する。
【００９６】
次に、図８（Ｂ）を参照して、リセット種別として「マニュアルリセット」が設定されている場合の機能安全評価の手順について説明する。「マニュアルリセット」が設定されている場合の機能安全評価の手順のうち、初期化フェーズおよび遮断フェーズについては、図８（Ａ）に示す「オートリセット」の初期化フェーズおよび遮断フェーズとそれぞれ同一であるので、その説明は繰返さない。
【００９７】
復帰フェーズにおいて、入力変数１を「ＦＡＬＳＥ」から「ＴＲＵＥ」にセットする（符号２３２）。このとき、リセット変数は「ＦＡＬＳＥ」のまま維持される。この変化に対応して、この変化に対応して、期待値設定がチェックされている（入力変数１に対する連動することが予定されている）出力変数１が「ＦＡＬＳＥ」であることを確認する（符号２３６）。出力変数１が「ＴＲＵＥ」に変化すれば、リセット変数の変化を待たずに入力変数１に連動したことになり、何らかの異常があると判断される（符号２３８）。
【００９８】
続いて、リセット変数を一旦「ＴＲＵＥ」にセットした後（符号２４０）、「ＦＡＬＳＥ」にセットする（符号２４２）。この変化に対応して、登録されているすべての出力変数が「ＴＲＵＥ」であることを確認する（符号２４４）。いずれかの出力変数が「ＦＡＬＳＥ」であれば、何らかの異常があると判断される（符号２４６）。
【００９９】
このように、「マニュアルリセット」（第２の種別）が設定されている場合には、入力信号の値を「ＦＡＬＳＥ」から「ＴＲＵＥ」に戻したときの評価対象の出力信号の出力値が「ＦＡＬＳＥ」（第１の出力値）と一致しているときに正常と判断する。その上で、リセット信号を有効化するとともに、安全プログラム１０に従う演算処理によって決定される評価対象の出力信号の値（第３の出力値）が遮断フェーズでの値（第１の出力値）と一致しているか否かが判断される。
【０１００】
＜Ｇ．評価条件の設定＞
本実施の形態に従う評価システム１は、図８に示すような機能安全評価を自動的に実行する。以下、機能安全評価の自動実行に必要な評価条件２０の設定方法などについて説明する。
【０１０１】
図９は、本実施の形態に従う評価システム１において評価条件２０を設定するためのユーザインターフェイス画面の一例を示す模式図である。評価システム１は、図９に示すような設定画面３００を表示するとともに、設定画面３００に対するユーザからの設定を受付ける。
【０１０２】
より具体的には、設定画面３００は、機能安全評価の自動実行を指示するＲＵＮボタン３０２と、機能安全評価の実行結果を表示する表示ボタン３０４と、評価対象の変数を登録するための変数登録ボタン３０６と、リセット変数に用いられる変数を設定するリセット変数設定エリア３０８と、入力変数に係る設定値を表示する入力設定表示エリア３１０と、出力変数に係る設定値を表示する出力設定表示エリア３２０と、入力変数に対する出力変数の期待値（以下、「出力期待値」とも称す。）を設定する期待値設定エリア３３０とを含む。
【０１０３】
リセット変数設定エリア３０８には、評価対象の安全プログラムに含まれるファンクションブロックにリセット信号として共通して入力される変数が設定される。すなわち、評価条件２０は、オートリセットの予め定められたリセット条件としてのリセット信号の設定を含む。なお、図９に示す設定画面３００では、単一のリセット信号が共通に入力されるようになっているが、ファンクションブロック毎に別々のリセット信号を用いるようにしてもよい。
【０１０４】
入力設定表示エリア３１０では、対象の安全プログラムに含まれる入力変数に係る情報の登録および表示が可能になっている。出力設定表示エリア３２０では、対象の安全プログラムに含まれる出力変数に係る情報の登録および表示が可能になっている。入力設定表示エリア３１０および出力設定表示エリア３２０での変数登録については、変数登録ボタン３０６が選択されることで有効化される。
【０１０５】
入力設定表示エリア３１０は、予め設定されている入力変数の変数名を表示する変数名表示欄３１２と、対応する入力変数についてのコメントを表示するコメント表示欄３１４と、対応する入力変数についてのリセット種別を表示するリセット種別表示欄３１６と、対応する入力変数についての入力タイプを表示する入力タイプ表示欄３１８とを含む。
【０１０６】
出力設定表示エリア３２０は、予め設定されている出力変数の変数名を表示する変数名表示欄３２２と、対応する出力変数についてのコメントを表示するコメント表示欄３２４とを含む。
【０１０７】
期待値設定エリア３３０は、本実施の形態に従う機能安全評価に必要な評価条件を受付ける。すなわち、期待値設定エリア３３０の各行が機能安全評価の各条件となる。具体的には、期待値設定エリア３３０は、対象となる入力変数を表示する入力変数表示エリア３３４と、対応する入力変数についてのコメントを表示するコメント表示欄３３６と、対応する入力変数についてのリセット種別を表示するリセット種別表示欄３３８と、対応する入力変数についての各出力変数の出力期待値を設定する期待値設定欄３４０とを含む。
【０１０８】
期待値設定欄３４０は、１つの入力変数に対して、対象となる出力変数の数だけ出力値（出力期待値）が設定されるようになっている。図９に示す設定画面３００の例では、出力設定表示エリア３２０に表示されている４つの出力変数に対応して、４つの欄が設けられており、各欄に出力期待値を設定できるようになっている。ユーザは、事前の安全設計に基づいて、期待値設定欄３４０にしかるべき値を設定することになる。なお、図９の期待値設定欄３４０において、「０」は、対応の入力変数が「ＦＡＬＳＥ」になった場合に、対応の出力変数も「ＦＡＬＳＥ」へ変化することを意味し、「１」は、対応の入力変数が「ＦＡＬＳＥ」になった場合であっても、対応の出力変数が「ＴＲＵＥ」を維持することを意味する。
【０１０９】
例えば、ある非常停止ボタンＡが危険エリアＡに配置されている装置Ａの安全動作をトリガするものであり場合には、当該非常停止ボタンＡからの入力信号に対応する入力変数に関連付けて、危険エリアＡにある装置Ａの非常停止を司る安全リレーへの指令を示す出力変数については、安全動作を示す「ＦＡＬＳＥ」、つまり「０」が出力期待値として設定される。一方で、非常停止ボタンＡは危険エリアＢに向けられるものではなく、危険エリアＢには別の非常停止ボタンＢが設けられる場合には、非常停止ボタンＡに対する操作によって、危険エリアＢの装置Ｂが停止することは予定されていない。そのため、当該非常停止ボタンＡからの入力信号に対応する入力変数に関連付けて、危険エリアＢにある装置Ｂの非常停止を司る安全リレーへの指令を示す出力変数については、安全動作しないことを示す「ＴＲＵＥ」、つまり「１」が出力期待値として設定される。このように、期待値設定欄３４０において、入力変数の各々とそれぞれの出力変数との間の関係が設定される。
【０１１０】
期待値設定エリア３３０は、各入力変数を機能安全評価の対象とするか否かを設定するためのチェックボックス３３２を含む。本実施の形態に従う機能安全評価においては、対応するチェックボックス３３２がチェックされた入力変数の値（入力値）を変化させるとともに、各出力変数の値が期待値設定欄３４０に設定された期待値と一致しているか否かが判断される。
【０１１１】
図９に示すように、期待値設定欄３４０は、評価対象の入力信号と、評価対象の出力信号と、評価対象の入力信号の値の変化に対応して出力されるべき評価対象の出力信号の値である出力期待値とを含む、評価条件２０を受付ける。通常、評価条件２０としては、入力信号と、出力信号と、出力期待値との組が複数含まれ得る。
【０１１２】
図９を参照して説明したように、本実施の形態に従う評価システム１は、評価対象の入力信号と、評価対象の出力信号と、評価対象の入力信号の値の変化に対応して出力されるべき評価対象の出力信号の値である出力期待値とを含む、評価条件を受付ける。
【０１１３】
次に、評価条件の一部である、図９に示す設定画面３００に含まれる期待値設定欄３４０への出力期待値の設定を容易化する機能の一例について説明する。
【０１１４】
本実施の形態に従う評価システム１は、出力期待値の設定および再利用を容易化できるように、一般的なフォーマット（典型的には、ＣＳＶ（Comma-Separated Values）形式やテキスト形式）に従って記述された出力期待値のデータの外部読み込みが可能である。また、予め設定した出力期待値を当該一般的なフォーマットのデータとして出力することも可能である。
【０１１５】
図１０は、本実施の形態に従う評価システムにおいて出力期待値のエクスポートおよびインポート処理を説明するための図である。例えば、ユーザが設定画面３００のエクスポートボタン３４２（図９）を選択すると、設定画面３００の期待値設定欄３４０に設定されている出力期待値の一覧がＣＳＶ形式のデータ（外部出力データ３４６）として外部出力／保存される。
【０１１６】
また、ユーザが設定画面３００のインポートボタン３４４（図９）を選択すると、予め用意されていたＣＳＶ形式のデータ（外部出力データ３４６）が読み込まれ、設定画面３００の期待値設定欄３４０に各値が設定される。
【０１１７】
このように、出力期待値が一般的なフォーマットのデータとして外部出力および外部読み込みできる機能が実装されることで、他のアプリケーションなどとの連携も強化され、機能安全の評価をより迅速かつ容易に行うことができる。
【０１１８】
図１０に示すファイルを用いた他のアプリケーションとの連携に加えて、他のアプリケーションで設定した出力期待値を直接用いるようにしてもよい。
【０１１９】
図１１は、本実施の形態に従う評価システムにおいて他のアプリケーションとの連携によって出力期待値を設定する処理を説明するための図である。図１１を参照して、例えば、表計算アプリケーション４００上で期待値設定欄３４０に設定する出力期待値を示す表を作成し、この作成した対象となる範囲４０２を選択およびコピーし、設定画面３００の期待値設定欄３４０上でペースト（いわゆる、コピー＆ペースト操作）を行うことで、ユーザが所望する出力期待値を設定できる。
【０１２０】
なお、図１１には、典型例として、表計算アプリケーションとの連携について例示したが、これに限られることなく、コピー＆ペースト操作が可能なアプリケーションであれば、どのようなアプリケーションとも連携できる。
【０１２１】
このように、他のアプリケーションとの連携により、出力期待値をより容易に設定できる。
【０１２２】
＜Ｈ．機能安全評価の処理手順＞
次に、本実施の形態に従う機能安全評価の処理手順について説明する。図９に示すような設定画面３００において、評価対象の入力変数と対応する出力期待値との組が設定されると、以下のような手順に従って、対象の安全プログラムの機能安全が評価される。
【０１２３】
図１２および図１３は、本実施の形態に従う評価システム１において実行される機能安全評価の処理手順を示すフローチャートである。図１２および図１３に示す各ステップは、典型的にはプロセッサ１０２が機能安全評価プログラム１２６（いずれも図２）を実行することで実現される。なお、図９に示す評価条件が予め設定されているとする。
【０１２４】
図１２および図１３を参照して、まず、評価対象の安全プログラムが取得され、当該取得された安全プログラムの実行モジュールが生成される（ステップＳ２）。そして、エミュレータ（または、外部の安全コントローラ）にて実行モジュールの実行が開始される（ステップＳ４）。つまり、１または複数の入力信号に基づいて、安全プログラムに従う演算を実行することで、対応する１または複数の出力信号の値を決定する処理が繰返し実行される。そして、評価処理が開始される。
【０１２５】
まず、評価処理の初期化フェーズが実行される。初期化フェーズでは、評価対象の入力信号の値を初期値である「ＴＲＵＥ」（第１の入力値）に設定するとともに、安全プログラムに従う演算により決定される評価対象の出力信号の出力値が初期値である「ＦＡＬＳＥ」と一致しているか否かを判断する処理が実行される。
【０１２６】
具体的には、エミュレータに入力されるすべての入力変数を初期値である「ＴＲＵＥ」にセットする（ステップＳ１０）。安全プログラムの実行モジュールをエミュレータにて実行する場合には、内部インターフェイス（典型的には、ＡＰＩ（Application Programming Interface））を介して、設定された入力変数の値が当該エミュレータへ与えられる。一方、安全プログラムの実行モジュールを外部の安全コントローラにて実行する場合には、ローカル通信インターフェイス１１６などを介して入力変数および出力変数が遣り取りされる。
【０１２７】
続いて、リセット変数を「ＴＲＵＥ」に一旦セットした後、「ＦＡＬＳＥ」に戻す（ステップＳ１２）。その後、評価対象である１または複数の出力変数の値がいずれも「ＴＲＵＥ」であるか否かが判断される（ステップＳ１４）。
【０１２８】
評価対象であるいずれかの出力変数の値が「ＦＡＬＳＥ」である場合（ステップＳ１４においてＮＯの場合）には、「ＦＡＬＳＥ」である出力変数を特定するとともに、初期化フェーズでのエラーメッセージを出力する（ステップＳ１６）。この場合、以降の機能安全評価の処理は中止される。初期化フェーズでのエラーメッセージとしては、例えば、「出力変数（ＸＸＸ）がリセット時にＦＡＬＳＥとなっています」といったものが用いられる。
【０１２９】
評価対象であるいずれの出力変数の値も「ＴＲＵＥ」である場合（ステップＳ１４においてＹＥＳの場合）には、以下の遮断フェーズおよび復帰フェーズの処理が実行される。期待値設定エリア３３０（評価条件２０）に設定される入力変数毎に、遮断フェーズおよび復帰フェーズの処理が繰返される。
【０１３０】
具体的には、まず、期待値設定エリア３３０に設定されている入力変数のうち、対応するチェックボックス３３２がチェックされている入力変数の１つを選択する（ステップＳ２０）。そして、評価対象の入力信号の値を初期値である「ＴＲＵＥ」（第１の入力値）から「ＦＡＬＳＥ」（第２の入力値）に変化させるとともに、安全プログラムに従う演算により決定される評価対象の出力信号の第１の出力値が出力期待値と一致しているか否かを判断する処理が実行される。
【０１３１】
具体的には、選択されている入力変数を「ＦＡＬＳＥ」にセットし（ステップＳ２２）、評価対象である１または複数の出力変数の値を取得する（ステップＳ２４）。つまり、選択されている入力変数が遮断される。続いて、選択されている入力変数に対応する、評価対象のそれぞれの出力変数についての出力期待値と、取得したそれぞれの出力変数の値とが一致するか否かを判断する（ステップＳ２６）。すなわち、出力期待値として「ＦＡＬＳＥ」が設定されている出力変数については、取得された値が「ＦＡＬＳＥ」であるか否かが判断され、出力期待値として「ＴＲＵＥ」が設定されている出力変数については、取得された値が「ＴＲＵＥ」であるか否かが判断される。
【０１３２】
いずれかの出力変数について取得した値と出力期待値とが一致しない場合（ステップＳ２６においてＮＯの場合）には、当該出力期待値と一致しない出力変数を特定するとともに、遮断フェーズでのエラーメッセージを出力する（ステップＳ２８）。この場合には、後続の復帰フェーズはスキップされ、ステップＳ６０の処理が実行される。遮断フェーズでのエラーメッセージとしては、例えば、「出力変数（ＸＸＸ）が出力期待値と一致しません」といったものが用いられる。
【０１３３】
一方、評価対象のそれぞれの出力変数についての出力期待値と、取得したそれぞれの出力変数の値とがすべて一致する場合（ステップＳ２６においてＹＥＳの場合）には、続いて、復帰フェーズの処理が実行される。すなわち、評価対象の入力信号の値を「ＦＡＬＳＥ」（第２の入力値）から「ＴＲＵＥ」（第１の入力値）に戻すとともに、安全プログラムに従う演算により決定される評価対象の出力信号の第２の出力値が第１の出力値と一致しているか否かを判断する処理が実行される。
【０１３４】
具体的には、選択されている入力変数に設定されているリセット種別が「オートリセット」および「マニュアルリセット」のいずれであるかが判断される（ステップＳ３０）。
【０１３５】
リセット種別として「オートリセット」が設定されている場合（ステップＳ３０において「オートリセット」の場合）には、選択されている入力変数を「ＴＲＵＥ」に戻し（ステップＳ３２）、評価対象である１または複数の出力変数の値を取得する（ステップＳ３４）。つまり、選択されている入力変数を復帰させる。続いて、選択されている入力変数に対応する、評価対象であるいずれの出力変数もその値が「ＴＲＵＥ」であるか否かを判断する（ステップＳ３６）。すなわち、選択されている入力変数の復帰に伴って、対応するすべての出力変数も復帰しているか否かが判断される。
【０１３６】
評価対象であるいずれかの出力変数の値が「ＦＡＬＳＥ」のままである場合（ステップＳ３６においてＮＯの場合）には、「ＦＡＬＳＥ」のままである出力変数を特定するとともに、復帰フェーズでのエラーメッセージを出力し（ステップＳ３８）、ステップＳ６０の処理が実行される。復帰フェーズでのエラーメッセージとしては、例えば、「出力変数（ＸＸＸ）が自動復帰しませんでした」といったものが用いられる。
【０１３７】
一方、評価対象であるいずれの出力変数もその値が「ＴＲＵＥ」である場合（ステップＳ３６においてＹＥＳの場合）には、選択されている入力変数については、機能安全評価のすべてに合格であることを出力し（ステップＳ４０）、ステップＳ６０の処理が実行される。
【０１３８】
一方、リセット種別として「マニュアルリセット」が設定されている場合（ステップＳ３０において「マニュアルリセット」の場合）には、選択されている入力変数を「ＴＲＵＥ」に戻し（ステップＳ４２）、評価対象である１または複数の出力変数の値を取得する（ステップＳ４４）。つまり、選択されている入力変数を復帰させる。続いて、選択されている入力変数に対応する評価対象の出力変数のうち、出力期待値がいずれも「ＦＡＬＳＥ」に設定されている出力変数の値が「ＦＡＬＳＥ」のままであるか否かを判断する（ステップＳ４６）。すなわち、「マニュアルリセット」の対象となっている出力変数の値が、選択されている入力変数の復帰に伴って復帰していないことが判断される。
【０１３９】
出力期待値がいずれも「ＦＡＬＳＥ」に設定されているいずれかの出力変数の値が「ＴＲＵＥ」である場合（ステップＳ４６においてＮＯの場合）には、「ＴＲＵＥ」である出力変数を特定するとともに、復帰フェーズでのエラーメッセージを出力し（ステップＳ４８）、ステップＳ６０の処理が実行される。復帰フェーズでのエラーメッセージとしては、例えば、「出力変数（ＸＸＸ）が自動復帰しました」といったものが用いられる。
【０１４０】
出力期待値がいずれも「ＦＡＬＳＥ」に設定されているすべての出力変数の値が「ＦＡＬＳＥ」である場合（ステップＳ４６においてＹＥＳの場合）には、リセット信号を有効化するとともに、安全プログラムに従う演算により決定される評価対象の出力信号の第３の出力値が第１の出力値と一致しているか否かを判断する処理が実行される。すなわち、リセット変数を一旦「ＴＲＵＥ」にセットした後、「ＦＡＬＳＥ」に戻し（ステップＳ５０）、評価対象である１または複数の出力変数の値を取得する（ステップＳ５２）。つまり、リセット変数を活性化する。続いて、評価対象である１または複数の出力変数の値がいずれも「ＴＲＵＥ」であるか否かが判断される（ステップＳ５４）。
【０１４１】
評価対象であるいずれかの出力変数の値が「ＦＡＬＳＥ」である場合（ステップＳ５４においてＮＯの場合）には、「ＦＡＬＳＥ」である出力変数を特定するとともに、復帰フェーズでのエラーメッセージを出力する（ステップＳ５６）。復帰フェーズでのエラーメッセージとしては、例えば、「出力変数（ＸＸＸ）がリセット時にＦＡＬＳＥとなっています」といったものが用いられる。
【０１４２】
評価対象であるいずれの出力変数の値も「ＴＲＵＥ」である場合（ステップＳ５４においてＹＥＳの場合）には、選択されている入力変数については、機能安全評価のすべてに合格であることを出力し（ステップＳ５８）、ステップＳ６０の処理が実行される。
【０１４３】
ステップＳ６０において、期待値設定エリア３３０に設定されている入力変数のうち、対応するチェックボックス３３２がチェックされている入力変数のすべてについて評価が実行されたか否かが判断される（ステップＳ６０）。チェックされているいずれかの入力変数についての評価が未だ実行されていない場合（ステップＳ６０においてＮＯの場合）には、評価が未だ実行されていないいずれかの入力変数を選択し（ステップＳ６２）、ステップＳ２２以下の処理が再度実行される。
【０１４４】
チェックされているすべての入力変数についての評価が実行されている場合（ステップＳ６０においてＹＥＳの場合）には、機能安全評価の処理は終了する。
【０１４５】
＜Ｉ．機能安全評価の評価結果＞
次に、図１２および図１３に示す機能安全評価の評価結果について説明する。
【０１４６】
本実施の形態に従う評価システム１は、評価対象の入力信号に関連付けて、機能安全評価の評価結果を出力する機能を有している。
【０１４７】
図１４は、本実施の形態に従う評価システム１において実行される機能安全評価の評価結果の一例を示す模式図である。図１４を参照して、評価結果画面３５０は、対象となった入力変数の変数名を表示する変数名表示欄３５４と、対応する入力変数についてのコメントを表示するコメント表示欄３５６と、対応する入力変数についてのリセット種別を表示するリセット種別表示欄３５８と、対応する入力変数についての出力期待値の組み合わせを表示する期待値設定欄３６０と、評価結果を示す結果表示欄３７２と、評価結果に対応するコメントを表示する結果コメント表示欄３７４と、評価実行日時を示す日時表示欄３７６とを含む。
【０１４８】
結果表示欄３７２には、上述の評価によって、合格したものについては「Ｐａｓｓｅｄ」が表示され、何らかのエラーが生じたものについては「Ｆａｉｌｅｄ」が表示される。さらに、何らかのエラーが生じた場合には、期待値設定欄３６０において、そのエラーが生じた出力変数の表示態様が異なったものとされる。結果コメント表示欄３７４には、そのエラーに対応するエラーメッセージが表示される。すなわち、いずれのフェーズにおいて異常であると判断されたのかを特定する情報が判断結果に含められる。また、異常であると判断されたフェーズに応じたコメントが判断結果に含められる。
【０１４９】
図１４に示すように、一般的には、評価条件２０は、評価対象の入力信号と、評価対象の出力信号と、出力期待値とからなる組を複数含む。そして、上述したような評価処理は各組について実行される。いずれの組の入力信号について異常であると判断されたのかを特定する情報が判断結果に含められる。
【０１５０】
また、図１４に示すように、一般的には、評価条件２０は、評価対象の入力信号と、複数の評価対象の出力信号と、それぞれ対応する複数の出力期待値とからなる組を含む。そして、上述したような、評価処理は複数の出力期待値の各々について実行される。いずれの出力信号について異常であると判断されたのかを特定する情報が判断結果に含められる。
【０１５１】
このような出力期待値を基準として、いずれかの出力変数にエラーが生じると、当該エラーの内容が出力期待値と対応付けて表示されることで、安全プログラムの機能安全評価をより効率的に行うことができる。
【０１５２】
＜Ｊ．評価条件の設定支援＞
次に、図９に示すような設定画面３００にて入力される評価条件の設定を支援するための構成について説明する。以下に説明する処理は、図１に示す解析・抽出機能６によって提供される。
【０１５３】
本実施の形態に従う評価条件は、１または複数の入力信号（あるいは、入力変数）の設定、１または複数の出力信号（あるいは、出力変数）、および、出力期待値を含む。ユーザがこれらの情報を任意に設定してもよいが、安全プログラムのステップ数（プログラム量）が大きくなると、対象とすべき入力信号および出力信号のすべてを設定することは、比較的手間を要する。そこで、本実施の形態に従う評価システム１において、評価条件の設定を支援する機能を実装してもよい。
【０１５４】
図１５および図１６は、本実施の形態に従う評価システム１が提供する評価条件の設定支援機能を説明する模式図である。
【０１５５】
図１５を参照して、安全プログラム１０に含まれる命令のうち、対象機器を安全が保たれるように動作させるための演算処理に向けられた命令を抽出する処理が実行される。続いて、安全プログラム１０から抽出された命令に関連付けられている入力信号および出力信号を抽出する処理が実行される。このように、安全プログラム１０に含まれる安全動作に係る命令を抽出し、その抽出した命令に設定されている変数などを抽出することができる。そして、図９に示すように、設定画面３００にて、抽出された入力信号と出力信号とを対応付けて表示するとともに、表示された出力信号について、対象機器を安全が保たれるように動作させるための値である出力期待値の設定を受付ける処理が実行される。最終的に、図１３および図１４に示すように、抽出された入力信号の値を変化させるとともに、当該入力信号の値の変化に応じて、安全プログラムに従う演算により算出される出力信号の値が、設定された出力期待値と一致するか否かを判断することで、機能安全が評価される。
【０１５６】
安全プログラム１０は、他のプログラムの一部として組み込まれている場合もあり、また、安全動作以外の処理に係る命令を含む場合もある。そこで、安全プログラム１０に含まれる安全動作に係る命令（図１５に示す例では、ファンクションブロック）を選択的に抽出することが好ましい。
【０１５７】
特に、何らかの規約に準拠して作成された安全プログラムについては、安全動作に用いられるファンクションブロックの仕様などは、メーカを問わず共通化されており、例えば、非常停止ＦＢおよび出力チェックＦＢが安全プログラムから抽出される。そして、抽出されたファンクションブロックに入力または出力として設定されている変数が評価条件に用いられる変数として抽出される。また、入力信号を抽出した命令に対して設定されているリセット種別も併せて抽出されてもよい。
【０１５８】
図１５に示す例では、対象の入力変数として、非常停止ＦＢ１２の「Ｓ＿ＥＳｔｏｐＩｎ」に割り当てられている変数「Ｖａｒ＿ＥｍｅｒｇｅｎｃｙＳｔｏｐ１」が抽出され、非常停止ＦＢ１４の「Ｓ＿ＥＳｔｏｐＩｎ」に割り当てられている変数「Ｖａｒ＿ＬｉｇｈｔＣｕｒｔａｉｎ１」が抽出される。この入力変数の抽出に併せて、対象のファンクションブロックに設定されているリセット種別の値が抽出される。図１５に示す例では、非常停止ＦＢ１２およびＦＢ１４の「Ｓ＿ＡｕｔｏＲｅｓｅｔ」に設定されている値である「ＦＡＬＳＥ」から、「マニュアルリセット」であることが判断される。
【０１５９】
また、対象の出力変数として、出力チェックＦＢ１８の「Ｓ＿ＥＤＭ＿ＯＵＴ」に割り当てられている変数「Ｖａｒ＿ＳａｆｅｔｙＲｅｌａｙ１」が抽出される。
【０１６０】
このように、ＰＬＣｏｐｅｎ（登録商標）などが公開している規約に準拠してファンクションブロックを用いて安全プログラムが記述されている場合には、安全プログラムに含まれる非常停止ファンクションブロック（図１５に示す例では、非常停止ＦＢ１２，１４）が抽出される。そして、非常停止ファンクションブロックに割り当てられている入力信号が抽出される。さらに、抽出した非常停止ファンクションブロックの出力先に接続されている他のファンクションブロック（図１５に示す例では、出力チェックＦＢ１８）を辿って最終出力される信号が対象の出力信号として抽出される。
【０１６１】
図１６に示すように設定された変数について、上述のような処理によって、機能安全評価の対象となる入力変数および出力変数が抽出される。そして、抽出された入力変数および出力変数の組み合わせが、設定画面３００の期待値設定エリア３３０（図９）などに表示される。
【０１６２】
通常、複数の入力信号が抽出されるので、図９の設定画面３００に示すように、これらの抽出された入力信号が複数表示されるとともに、抽出された入力信号に関連付けられる複数の出力信号が各入力信号に対応付けて表示される。
【０１６３】
図１７は、本実施の形態に従う評価システム１が提供する評価条件の設定支援機能に係る処理手順を示すフローチャートである。図１７に示す各ステップは、典型的にはプロセッサ１０２が機能安全評価プログラム１２６（いずれも図２）を実行することで実現される。
【０１６４】
図１７を参照して、まず、評価対象の安全プログラムが取得され、当該取得された安全プログラムに対する解析（パース）が実行される（ステップＳ１００）。続いて、安全プログラムに対する解析結果に基づいて、安全プログラムに含まれる安全動作に係る命令（ファンクションブロック：例えば、非常停止ＦＢおよび出力チェックＦＢ）を抽出し（ステップＳ１０２）、抽出した命令に割り当てられている入力変数を抽出する（ステップＳ１０４）。この入力変数の抽出に併せて、対象の命令に設定されているリセット種別の情報を抽出する（ステップＳ１０６）。さらに、抽出した命令に割り当てられている出力変数を抽出する（ステップＳ１０８）。
【０１６５】
これらの抽出された、入力変数、入力変数に対応するリセット種別、出力変数の情報を、図９に示す設定画面３００の期待値設定欄３４０に反映する（ステップＳ１１０）。そして、処理は終了する。
【０１６６】
このような評価条件の設定を支援するための処理の実行後、ユーザからの評価条件の設定を受付ける。
【０１６７】
＜Ｋ．利点＞
本実施の形態によれば、安全プログラムに含まれる入力信号と、当該入力信号に対応付けられた１または複数の出力信号との組み合わせを規定するとともに、各組み合わせにおける各出力信号値の期待値（出力期待値）が設定される。また、各入力信号に対応付けられたリセット種別も設定される。その上で、入力信号の値（入力値）を３つのフェーズ（初期化フェーズ、遮断フェーズ、復帰フェーズ）に応じて変化させるとともに、各フェーズにおいて算出される出力値が、予め設定された出力期待値およびリセット種別に応じた値であるか否かが判断されることで、安全プログラムの総合的な機能安全が自動的に評価される。そのため、安全プログラムの機能安全をより容易に評価できる。
【０１６８】
また、本実施の形態によれば、いずれかのフェーズにおいて異常が発生すると、当該異常が発生したフェーズ、および、当該異常が発生した出力信号が特定されるとともに、機能安全の評価結果として出力される。そのため、安全プログラムの機能安全に何らかの不具体があっても、容易にその原因および解決方法を特定することができる。
【０１６９】
また、本実施の形態によれば、安全プログラムに含まれる入力信号、出力信号、リセット種別が自動的に抽出されるので、ユーザは、出力期待値のみを設定すれば、機能安全の評価を容易に行うことができる。
【０１７０】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１７１】
１  評価システム、２  プログラム実行機能、４  比較機能、６  解析・抽出機能、１０  安全プログラム、１２，１４  非常停止ＦＢ、１６  アンドブロック、１８  出力チェックＦＢ、２０  評価条件、３０  機能安全評価結果、１０２  プロセッサ、１０４  メモリ、１０６  入力部、１０８  出力部、１１２  光学ドライブ、１１４  記録媒体、１１６  ローカル通信インターフェイス、１１８  内部バス、１２０  補助記憶装置、１２２  実行モジュール生成プログラム、１２４  エミュレータプログラム、１２６  機能安全評価プログラム、１３０  各種設定、１５２  実行モジュール生成部、１５４  エミュレータ、１５６  入力値変更部、１５８  比較部、１６０  結果出力部、１７０  評価条件生成部、３００  設定画面、４００  表計算アプリケーション。
【図１】
0006540561.tif 000002
【図２】
0006540561.tif 000003
【図３】
0006540561.tif 000004
【図４】
0006540561.tif 000005
【図５】
0006540561.tif 000006
【図６】
0006540561.tif 000007
【図７】
0006540561.tif 000008
【図８】
0006540561.tif 000009
【図９】
0006540561.tif 000010
【図１０】
0006540561.tif 000011
【図１１】
0006540561.tif 000012
【図１２】
0006540561.tif 000013
【図１３】
0006540561.tif 000014
【図１４】
0006540561.tif 000015
【図１５】
0006540561.tif 000016
【図１６】
0006540561.tif 000017
【図１７】
0006540561.tif 000018