(57)【要約】  プロセッサ（１１）およびメモリ（１２）を有し、メモリは、第１メモリ領域（１２Ａ）と、第１メモリ領域とは異なるアドレスの第２メモリ領域（１２Ｂ）を有し、プロセッサは、第１メモリ領域に書き込まれた入力データのプログラム処理を含む第１処理過程と、第２メモリ領域に書き込まれた入力データのプログラム処理、および第２メモリ領域に書き込まれた出力データへの冗長符号の付与と、を含む第２処理過程と、を実行する実行制御部（１３）と、第１処理過程における冗長符号の付与を経た出力データ、および第２処理過程における冗長符号の付与を経た出力データを照合する結果照合部（１４）と、プロセッサおよびメモリの故障の有無を診断する演算診断部（１５）と、冗長検査、結果照合部における照合および演算診断部における診断の少なくともいずれかにおいて異常が検出された場合に、出力データの出力を停止させる異常処理部(１６)と、を有する。
2014041829.tif 000002
【特許請求の範囲】
【請求項１】
入力データのプログラム処理を実施するプロセッサと、
前記プロセッサへ入力される前記入力データ、および前記プログラム処理の結果である出力データを保持するメモリと、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記入力データおよび前記出力データを保持可能であって、
前記プロセッサは、
前記第１メモリ領域に書き込まれた前記入力データの前記プログラム処理と、前記プログラム処理の結果として前記第１メモリ領域に書き込まれた前記出力データへの冗長符号の付与と、を含む第１処理過程と、前記第２メモリ領域に書き込まれた前記入力データの前記プログラム処理と、前記プログラム処理の結果として前記第２メモリ領域に書き込まれた前記出力データへの冗長符号の付与と、を含む第２処理過程と、を実行する実行制御部と、
前記第１処理過程における前記冗長符号の付与を経た前記出力データと、前記第２処理過程における前記冗長符号の付与を経た前記出力データとを照合する結果照合部と、
前記プロセッサおよび前記メモリの故障の有無を演算によって診断する演算診断部と、
前記入力データおよび前記出力データの冗長検査、前記結果照合部における照合、および前記演算診断部における診断の少なくともいずれかにおいて異常が検出された場合に、前記出力データの出力を停止させる異常処理部と、を有することを特徴とする安全演算装置。
【請求項２】
前記実行制御部は、前記第２処理過程において、ビット反転させた前記出力データを前記第２メモリ領域に書き込み、
前記結果照合部は、前記第１メモリ領域から読み出した前記出力データと、前記第２メモリ領域から読み出した前記出力データとを、互いの排他論理和により照合することを特徴とする請求項１に記載の安全演算装置。
【請求項３】
前記実行制御部は、前記第２処理過程において、補数への変換を経た前記出力データを前記第２メモリ領域に書き込み、
前記結果照合部は、前記第１メモリ領域から読み出した前記出力データと、前記第２メモリ領域から読み出した前記出力データとを、互いの和により照合することを特徴とする請求項１に記載の安全演算装置。
【請求項４】
前記実行制御部は、前記第１メモリ領域に書き込む前記出力データと前記第２メモリ領域に書き込む前記出力データとのうちの一方について、エンディアンを逆転させ、
前記結果照合部は、前記第１メモリ領域から読み出した前記出力データと前記第２メモリ領域から読み出した前記出力データとのうちの一方についてエンディアンを逆転させて、照合することを特徴とする請求項１に記載の安全演算装置。
【請求項５】
前記実行制御部は、前記第１メモリ領域から読み出した前記入力データの前記プログラム処理において、１６ビット向けのコンパイラとして生成されたプログラムを使用し、かつ、前記第２メモリ領域から読み出した前記入力データの前記プログラム処理において、３２ビット向けのコンパイラとして生成されたプログラムを使用することを特徴とする請求項１に記載の安全演算装置。
【請求項６】
入力データのプログラム処理を実施するプロセッサと、
前記プロセッサへ入力される前記入力データ、および前記プログラム処理の結果である出力データを保持するメモリと、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記入力データおよび前記出力データを保持可能であって、
前記プロセッサは、
前記入力データを含む入力メッセージに付与されている冗長符号を復号して検査する入力メッセージ処理と、前記出力データに冗長符号を付与し出力メッセージとする出力メッセージ処理とを実施するメッセージ処理部と、
前記第１メモリ領域に書き込まれた前記入力メッセージについての制御演算と、前記出力メッセージ処理により得られた前記出力メッセージの前記第１メモリ領域への書き込みとを含む第１処理過程と、前記第２メモリ領域に書き込まれた前記入力メッセージについての制御演算と、前記出力メッセージ処理を経た前記出力メッセージの前記第２メモリ領域への書き込みとを含む第２処理過程と、を実行する実行制御部と、
前記第１メモリ領域に書き込まれた前記出力メッセージと、前記第２メモリ領域に書き込まれた前記出力メッセージとを照合する結果照合部と、
前記プロセッサおよび前記メモリの故障の有無を演算によって診断する演算診断部と、
前記入力データおよび前記出力データの冗長検査、前記結果照合部における照合、および前記演算診断部における診断の少なくともいずれかにおいて異常が検出された場合に、前記出力メッセージの出力を停止させる異常処理部と、を有することを特徴とする安全演算装置。
【請求項７】
入力信号を数値化し、入力データとする入力部と、
前記入力データのプログラム処理を実施するプロセッサと、
前記プロセッサへ入力される前記入力データを保持するメモリと、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記入力データを保持可能であって、
前記プロセッサは、
前記入力部へのテスト信号の送信によって、前記入力部の異常の有無を診断する入力診断部と、
前記入力データに冗長符号を付与し入力メッセージとする入力メッセージ処理を実施するメッセージ処理部と、
前記入力データに対する演算処理と、前記第１メモリ領域への前記入力メッセージの書き込みとを含む第１処理過程と、前記入力データに対する演算処理と、前記第２メモリ領域への前記入力メッセージの書き込みとを含む第２処理過程と、を実行する実行制御部と、
前記第１メモリ領域に書き込まれた前記入力メッセージと、前記第２メモリ領域に書き込まれた前記入力メッセージとを照合する結果照合部と、
安全制御のための演算処理を実施する安全演算装置へ前記入力メッセージを送信する送信部と、を備え、
前記送信部は、前記入力診断部における診断、および前記結果照合部における照合の少なくともいずれかにおいて異常が検出された場合に、前記入力メッセージの送信を停止させることを特徴とする安全入力装置。
【請求項８】
出力メッセージのプログラム処理を実施するプロセッサと、
前記出力メッセージに含まれる出力データを保持するメモリと、
前記出力データに応じた出力信号を出力する出力部と、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記出力データを保持可能であって、
前記プロセッサは、
安全制御のための演算処理を実施する安全演算装置からの前記出力メッセージを受信する受信部と、
前記出力メッセージに含まれる冗長符号を基に前記出力メッセージの内容を検査する出力メッセージ処理を実施するメッセージ処理部と、
前記出力メッセージの内容の検査と、前記第１メモリ領域への前記出力データの書き込みとを含む第１処理過程と、前記出力メッセージの内容の検査と、前記第２メモリ領域への前記出力データの書き込みとを含む第２処理過程と、を実行する実行制御部と、
前記第１メモリ領域に書き込まれた前記出力データと、前記第２メモリ領域に書き込まれた前記出力データとを照合する結果照合部と、
前記出力部へのテスト信号の送信によって、前記出力部の異常の有無を診断する出力診断部と、を備え、
前記出力部は、前記出力診断部における診断、および前記結果照合部における照合の少なくともいずれかにおいて異常が検出された場合に、前記出力信号の出力を停止させることを特徴とする安全出力装置。
【請求項９】
安全コントローラへの入力信号の入力を受け付ける安全入力装置と、
安全制御のための演算処理を実施する安全演算装置と、
前記安全コントローラから出力信号を出力する安全出力装置と、を有し、
前記安全演算装置は、
前記安全入力装置からの入力データのプログラム処理を実施するプロセッサと、
前記プロセッサへ入力される前記入力データ、および前記プログラム処理の結果である出力データを保持するメモリと、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記入力データおよび前記出力データを保持可能であって、
前記プロセッサは、
前記第１メモリ領域に書き込まれた前記入力データの前記プログラム処理と、前記プログラム処理の結果として前記第１メモリ領域に書き込まれた前記出力データへの冗長符号の付与と、を含む第１処理過程と、前記第２メモリ領域に書き込まれた前記入力データの前記プログラム処理と、前記プログラム処理の結果として前記第２メモリ領域に書き込まれた前記出力データへの冗長符号の付与と、を含む第２処理過程と、を実行する実行制御部と、
前記第１処理過程における前記冗長符号の付与を経た前記出力データと、前記第２処理過程における前記冗長符号の付与を経た前記出力データとを照合する結果照合部と、
前記プロセッサおよび前記メモリの故障の有無を演算によって診断する演算診断部と、
前記入力データおよび前記出力データの冗長検査、前記結果照合部における照合、および前記演算診断部における診断の少なくともいずれかにおいて異常が検出された場合に、前記出力データの出力を停止させる異常処理部と、を有することを特徴とする安全コントローラ。
【請求項１０】
安全コントローラへの入力信号の入力を受け付ける安全入力装置と、
安全制御のための演算処理を実施する安全演算装置と、
前記安全コントローラから出力信号を出力する安全出力装置と、を有し、
前記安全入力装置は、
前記入力信号を数値化し、入力データとする入力部と、
前記入力データのプログラム処理を実施するプロセッサと、
前記プロセッサへ入力される前記入力データを保持するメモリと、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記入力データを保持可能であって、
前記プロセッサは、
前記入力部へのテスト信号の送信によって、前記入力部の異常の有無を診断する入力診断部と、
前記入力データに冗長符号を付与し入力メッセージとする入力メッセージ処理を実施するメッセージ処理部と、
前記入力データに対する演算処理と、前記第１メモリ領域への前記入力メッセージの書き込みとを含む第１処理過程と、前記入力データに対する演算処理と、前記第２メモリ領域への前記入力メッセージの書き込みとを含む第２処理過程と、を実行する実行制御部と、
前記第１メモリ領域に書き込まれた前記入力メッセージと、前記第２メモリ領域に書き込まれた前記入力メッセージとを照合する結果照合部と、
前記安全演算装置へ前記入力メッセージを送信する送信部と、を備え、
前記送信部は、前記入力診断部における診断、および前記結果照合部における照合の少なくともいずれかにおいて異常が検出された場合に、前記入力メッセージの送信を停止させることを特徴とする安全コントローラ。
【請求項１１】
安全コントローラへの入力信号の入力を受け付ける安全入力装置と、
安全制御のための演算処理を実施する安全演算装置と、
前記安全コントローラから出力信号を出力する安全出力装置と、を有し、
前記安全出力装置は、
前記安全演算装置からの出力メッセージのプログラム処理を実施するプロセッサと、
前記出力メッセージに含まれる出力データを保持するメモリと、
前記出力データに応じた出力信号を出力する出力部と、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記出力データを保持可能であって、
前記プロセッサは、
前記安全演算装置からの前記出力メッセージを受信する受信部と、
前記出力メッセージに含まれる冗長符号を基に前記出力メッセージの内容を検査する出力メッセージ処理を実施するメッセージ処理部と、
前記出力メッセージの内容の検査と、前記第１メモリ領域への前記出力データの書き込みとを含む第１処理過程と、前記出力メッセージの内容の検査と、前記第２メモリ領域への前記出力データの書き込みとを含む第２処理過程と、を実行する実行制御部と、
前記第１メモリ領域に書き込まれた前記出力データと、前記第２メモリ領域に書き込まれた前記出力データとを照合する結果照合部と、
前記出力部へのテスト信号の送信によって、前記出力部の異常の有無を診断する出力診断部と、を備え、
前記出力部は、前記出力診断部における診断、および前記結果照合部における照合の少なくともいずれかにおいて異常が検出された場合に、前記出力信号の出力を停止させることを特徴とする安全コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、安全演算装置、安全入力装置、安全出力装置および安全コントローラ、特に、信頼性の高い制御動作を保障するための内部診断を実施する安全コントローラの構成に関する。
【背景技術】
【０００２】
安全制御のための安全コントローラは、例えば、機能安全に関する国際規格であるIEC61508にしたがって、プロセッサやメモリにおける回路の永続的な故障であるハードウェア故障と、一時的な故障であるソフトウェア故障との両方を検出可能であることが求められている。【０００３】
安全コントローラの内部診断については、例えば、２つのプロセッサの演算結果を照合して相互診断する手法や、１つのプロセッサにて同じ演算処理を２回実行して処理結果を比較する手法が知られている。例えば、特許文献１には、１つのプロセッサが同じ演算処理を２回実行した結果を別々のメモリに書き込む方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭５９−１９４２０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の構成によると、２つのメモリからの出力は、二重化されたデマルチプレクサとフリップフロップ回路とを用いて一重化される。プロセッサで演算処理を２回実行した結果の照合は、二重化されたハードウェア回路により実現される。この二重化された回路構成を採用する場合、一重の入出力回路からなる一般的な構成に比べて、冗長な回路構成が必要となる分、安全コントローラが複雑かつ高コストとなることが問題となる。【０００６】
本発明は、上記に鑑みてなされたものであって、一重の回路構成として簡易かつ低コストを実現し、ハードウェア故障およびソフトウェア故障の両方を検出可能とする安全演算装置、安全入力装置、安全出力装置および安全コントローラを得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、入力データのプログラム処理を実施するプロセッサと、前記プロセッサへ入力される前記入力データ、および前記プログラム処理の結果である出力データを保持するメモリと、を有し、前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記入力データおよび前記出力データを保持可能であって、前記プロセッサは、前記第１メモリ領域に書き込まれた前記入力データの前記プログラム処理と、前記プログラム処理の結果として前記第１メモリ領域に書き込まれた前記出力データへの冗長符号の付与と、を含む第１処理過程と、前記第２メモリ領域に書き込まれた前記入力データの前記プログラム処理と、前記プログラム処理の結果として前記第２メモリ領域に書き込まれた前記出力データへの冗長符号の付与と、を含む第２処理過程と、を実行する実行制御部と、前記第１処理過程における前記冗長符号の付与を経た前記出力データと、前記第２処理過程における前記冗長符号の付与を経た前記出力データとを照合する結果照合部と、前記プロセッサおよび前記メモリの故障の有無を演算によって診断する演算診断部と、前記入力データおよび前記出力データの冗長検査、前記結果照合部における照合、および前記演算診断部における診断の少なくともいずれかにおいて異常が検出された場合に、前記出力データの出力を停止させる異常処理部と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明にかかる安全演算装置は、プロセッサおよびメモリを含む一重の回路構成を備える。実行制御部は、第１メモリ領域から読み出した入力データ、および第２メモリ領域から読み出した入力データに対し、それぞれプログラム処理を実行する。結果照合部は、双方の入力データについてのプログラム処理の結果を照合することで、ソフトウェア故障を検出する。演算診断部は、プロセッサおよびメモリにおけるハードウェア故障を検出する。これにより、安全演算装置は、一重の回路構成として簡易かつ低コストを実現し、ハードウェア故障およびソフトウェア故障の両方を検出できるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の実施の形態１にかかる安全演算装置を備える安全コントローラの構成を示すブロック図である。
【図２】図２は、安全コントローラの動作手順を示すフローチャートである（その１）。
【図３】図３は、安全コントローラの動作手順を示すフローチャートである（その２）。
【図４】図４は、本発明の実施の形態２にかかる安全演算装置を備える安全コントローラの動作手順を示すフローチャートである（その１）。
【図５】図５は、本発明の実施の形態２にかかる安全演算装置を備える安全コントローラの動作手順を示すフローチャートである（その２）。
【図６】図６は、本発明の実施の形態６にかかる安全演算装置を備える安全コントローラの構成を示すブロック図である。
【図７】図７は、本発明の実施の形態７にかかる安全入力装置を備える安全コントローラの構成を示すブロック図である。
【図８】図８は、安全入力装置の動作手順を示すフローチャートである。
【図９】図９は、本発明の実施の形態８にかかる安全出力装置を備える安全コントローラの構成を示すブロック図である。
【図１０】図１０は、安全出力装置の動作手順を示すフローチャートである。
【図１１】図１１は、本発明の実施の形態９にかかる安全コントローラの構成を示すブロック図である。
【図１２】図１２は、本発明の実施の形態１０にかかる安全コントローラの構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下に、本発明にかかる安全演算装置、安全入力装置、安全出力装置および安全コントローラの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態１．
図１は、本発明の実施の形態１にかかる安全演算装置を備える安全コントローラの構成を示すブロック図である。安全コントローラは、安全演算装置１０、安全入力装置１８および安全出力装置１９を備える。
【００１２】
安全演算装置１０は、安全制御のための演算処理を実施する。安全入力装置１８は、安全コントローラへの入力信号の入力を受け付ける。安全出力装置１９は、安全コントローラから外部へ出力信号を出力する。安全演算装置１０、安全入力装置１８および安全出力装置１９は、バス２０を介して互いに内部接続されている。
【００１３】
安全演算装置１０は、プロセッサ１１およびメモリ１２を有する。プロセッサ１１は、安全演算装置１０へ入力された入力データのプログラム処理を実施する。メモリ１２は、プロセッサ１１へ入力される入力データ、およびプログラム処理の結果である出力データを保持する。
【００１４】
メモリ１２は、互いに独立した第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂを有する。第２メモリ領域１２Ｂは、第１メモリ領域１２Ａとはアドレスが異なる。第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂは、いずれも入力データおよび出力データを保持可能とされている。
【００１５】
プロセッサ１１は、実行制御部１３、結果照合部１４、演算診断部１５、異常処理部１６および入出力処理部１７を有する。実行制御部１３は、第１メモリ領域１２Ａに書き込まれた入力データについての第１処理過程と、第２メモリ領域１２Ｂに書き込まれた入力データについての第２処理過程とを実行する。結果照合部１４は、第１処理過程において第１メモリ領域１２Ａに書き込まれた出力データと、第２処理過程において第２メモリ領域１２Ｂに書き込まれた出力データとを照合する。
【００１６】
演算診断部１５は、プロセッサ１１およびメモリ１２の故障の有無を演算により診断する。演算診断部１５によるプロセッサ１１およびメモリ１２の診断には、例えば、テストパターンを用いる。異常処理部１６は、入力データおよび出力データの冗長検査、結果照合部１４における照合、および演算診断部１５における診断の少なくともいずれかにおいて異常が検出された場合に、出力データの出力を停止させる。
【００１７】
入出力処理部１７は、安全入力装置１８と第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂとの間の入力データの転送と、安全出力装置１９と第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂとの間の出力データの転送とを行う。
【００１８】
図２および図３は、安全コントローラの動作手順を示すフローチャートである。安全入力装置１８は、入力データに冗長符号を付与する。入出力処理部１７は、冗長符号が付与された入力データを安全入力装置１８から読み込む。入出力処理部１７は、読み込んだ入力データを第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂに書き込む（ステップＳ１）。
【００１９】
実行制御部１３は、第１メモリ領域１２Ａへ書き込まれた入力データ（第１入力データ）に付随する冗長符号をチェックする（ステップＳ２）。冗長符号は、例えばＣＲＣ（Cyclic  Redundancy  Checking）とする。
【００２０】
かかる冗長検査において異常が検出された場合（ステップＳ３、Ｙｅｓ）、異常処理部１６は、安全コントローラの動作を停止させる（ステップＳ１８）。一方、ステップＳ２の冗長検査により異常が無いことを確認すると（ステップＳ３、Ｎｏ）、実行制御部１３は、第１入力データのプログラム処理を実行する（ステップＳ４）。プログラムは、例えばユーザにより作成されたアプリケーションプログラムとする。実行制御部１３は、プログラム処理において、第１入力データと、第１メモリ領域１２Ａが保持する自己保存データとを用いる。
【００２１】
実行制御部１３は、ステップＳ４における処理結果である出力データ（第１出力データ）を、第１メモリ領域１２Ａに書き込む（ステップＳ５）。実行制御部１３は、第１メモリ領域１２Ａが保持する自己保存データを、ステップＳ４における処理結果に応じて書き換える。
【００２２】
実行制御部１３は、第１メモリ領域１２Ａへ書き込まれた第１出力データに冗長符号を付与する（ステップＳ６）。冗長符号は、例えばＣＲＣとする。ステップＳ２からステップＳ６は、第１メモリ領域１２Ａに書き込まれた第１入力データについての第１処理過程に相当する。
【００２３】
次に、実行制御部１３は、第２メモリ領域１２Ｂへ書き込まれた入力データ（第２入力データ）に付随する冗長符号をチェックする（ステップＳ７）。冗長符号は、例えばＣＲＣとする。かかる冗長検査において異常が検出された場合（ステップＳ８、Ｙｅｓ）、異常処理部１６は、安全コントローラの動作を停止させる（ステップＳ１８）。一方、ステップＳ７の冗長検査により異常が無いことを確認すると（ステップＳ８、Ｎｏ）、実行制御部１３は、第２入力データのプログラム処理を実行する（ステップＳ９）。
【００２４】
第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂは、オフセットアドレスが異なる以外は、メモリマップは同一である。実行制御部１３は、第２入力データに対しては、ステップＳ４における第１入力データの処理のときとは異なるオフセットアドレスとして、同じプログラムを実行する。実行制御部１３は、プログラム処理において、第２入力データと、第２メモリ領域１２Ｂが保持する自己保存データとを用いる。
【００２５】
実行制御部１３は、ステップＳ９における処理結果である出力データ（第２出力データ）を、第２メモリ領域１２Ｂに書き込む（ステップＳ１０）。実行制御部１３は、第２メモリ領域１２Ｂが保持する自己保存データを、ステップＳ９における処理結果に応じて書き換える。
【００２６】
実行制御部１３は、第２メモリ領域１２Ｂへ書き込まれた第２出力データに冗長符号を付与する（ステップＳ１１）。冗長符号は、例えばＣＲＣとする。ステップＳ７からステップＳ１１は、第２メモリ領域１２Ｂに書き込まれた第２入力データについての第２処理過程に相当する。
【００２７】
次に、結果照合部１４は、ステップＳ６における冗長符号の付与を経た第１出力データと、ステップＳ１１における冗長符号の付与を経た第２出力データとを比較照合する（ステップＳ１２）。結果照合部１４は、第１および第２出力データに加えて、値が変更される可能性のある自己保存データを、比較照合の範囲に含めることとしても良い。
【００２８】
結果照合部１４での照合において異常が検出された場合（ステップＳ１３、Ｙｅｓ）、異常処理部１６は、安全コントローラの動作を停止させる（ステップＳ１８）。一方、結果照合部１４での照合において異常が無いことを確認すると（ステップＳ１３、Ｎｏ）、入出力処理部１７は、第１メモリ領域１２Ａから第１出力データを読み出し、第１出力データを安全出力装置１９に書き込む。
【００２９】
安全出力装置１９は、入出力処理部１７によって書き込まれた第１出力データに付随する冗長符号をチェックする（ステップＳ１４）。かかる冗長検査において異常が検出された場合（ステップＳ１５、Ｙｅｓ）、異常処理部１６は、安全出力装置１９による第１出力データの出力を停止させる（ステップＳ１８）。一方、ステップＳ１４の冗長検査により異常が無いことを確認すると（ステップＳ１５、Ｎｏ）、安全出力装置１９は、第１出力データを出力する。
【００３０】
次に、演算診断部１５は、プロセッサ１１およびメモリ１２の故障の有無を診断する（ステップＳ１６）。演算診断部１５は、プロセッサ１１の演算ユニット（ＡＬＵ；Arithmetic  and  Logic  Unit）を、テストパターンを使用して診断する。テストパターンとしては、ＡＬＵのレジスタの各ビットが独立してＯＮ／ＯＦＦできることを確認可能であるものを選択する。
【００３１】
例えば、和算を行うＡＬＵの場合、演算対象となる２つのレジスタの各ビット（０，０），（０，１），（１，０），（１，１）の確認と、下位ビットからのキャリー演算を実施する。さらに、隣接しているメモリビット間にショートが無いことを確認するために、テストパターンとしては、隣接ビットが異なる結果となるもの（０ｘ５５５５および０ｘＡＡＡＡ）を選択する。
【００３２】
演算診断部１５は、第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂの指定されたアドレスに対し、互いに異なるテストパターンの書き込みおよび読み出しを行う。第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂは、互いに異なるオフセットアドレスと、同じメモリマップとを持つ。同じテストパターンでは、オフセットアドレスラインが固着する故障があっても、第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂの同じアドレスに同じ値が書き込まれることとなり、正確な故障診断が困難となる。演算診断部１５は、第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂの指定されたアドレスに予め異なる値を書き込み、読み出された値と書き込み時の値とを比較することで、アドレスラインの故障を診断する。
【００３３】
プロセッサ１１およびメモリ１２の故障診断において異常が検出された場合（ステップＳ１７、Ｙｅｓ）、すなわちプロセッサ１１およびメモリ１２の少なくともいずれかに故障があった場合、異常処理部１６は、安全コントローラの動作を停止させる（ステップＳ１８）。異常処理部１６は、第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂからの信号出力をＯＦＦにする。
【００３４】
一方、プロセッサ１１およびメモリ１２の故障診断により異常が無いこと、すなわちプロセッサ１１およびメモリ１２のいずれにも故障が無いことを確認すると（ステップＳ１７、Ｎｏ）、安全コントローラは、ステップＳ１に戻って、安全制御のための動作を継続する。
【００３５】
安全コントローラは、入力データおよび出力データの冗長検査、結果照合部１４における照合、および演算診断部１５における診断の少なくともいずれかにおいて異常が検出された場合、ステップＳ１８における動作の停止により、無為の無限ループ状態となる。これにより、安全コントローラは、異常を検出した時点で、出力データの出力を停止させる。
【００３６】
安全コントローラは、安全演算装置１０のプロセッサ１１およびメモリ１２のいずれかにソフトウェア故障が発生した場合、結果照合部１４による照合結果から、故障の発生を検出することができる。なお、安全コントローラは、ソフトウェア故障があった場合に、動作を停止させる以外に、所定の処置を施した上で動作を継続することとしても良い。
【００３７】
ソフトウェア故障は、ソフトウェア処理におけるある周期にて検出されても、次周期以降には解消されることがあり得る。安全コントローラは、例えば、故障が検出された周期の直前の周期における出力データを当該周期に適用することで、エラー扱いとせず次周期以降の処理を継続することとしても良い。安全コントローラは、所定回数の周期にて連続して故障を検出した場合に、動作を停止させることとしても良い。
【００３８】
安全コントローラは、プロセッサ１１およびメモリ１２のいずれかにハードウェア故障が発生した場合、演算診断部１５による診断結果から、故障の発生を検出することができる。ハードウェア故障は、ソフトウェア処理のある周期にて検出されれば、次周期以降も解消されないこととなる。このため、安全コントローラは、ハードウェア故障を検出した場合、直ちに動作を停止させる。
【００３９】
安全コントローラは、プロセッサ１１、メモリ１２、安全入力装置１８および安全出力装置１９からなる一重の回路構成を採用する。安全コントローラは、二重化されたハードウェア構造を採用しなくても、ハードウェア故障およびソフトウェア故障の両方を検出することができる。安全コントローラは、一重の回路構成として簡易かつ低コストを実現できる。
【００４０】
実施の形態２．
図４および図５は、本発明の実施の形態２にかかる安全演算装置を備える安全コントローラの動作手順を示すフローチャートである。本実施の形態にかかる安全コントローラは、実施の形態１にかかる安全コントローラ（図１参照）と同様の構成を備える。本実施の形態における動作手順のうちステップＳ１からステップＳ９の手順は、実施の形態１における動作手順のステップＳ１からＳ９（図２参照）と同様である。
【００４１】
実行制御部１３は、ステップＳ９における処理結果である出力データ（第２出力データ）を、ビット反転させる（ステップＳ２０）。実行制御部１３は、ビット反転を経た第２出力データを、第２メモリ領域１２Ｂに書き込む（ステップＳ１０）。また、実行制御部１３は、第２メモリ領域１２Ｂが保持する自己保存データを、ステップＳ９における処理結果に応じて書き換えるとともに、ビット反転させる。
【００４２】
実行制御部１３は、第２メモリ領域１２Ｂへ書き込まれた第２出力データに冗長符号を付与する（ステップＳ１１）。冗長符号は、例えばＣＲＣとする。ステップＳ７からステップＳ１１は、第２メモリ領域１２Ｂに書き込まれた第２入力データについての第２処理過程に相当する。
【００４３】
次に、結果照合部１４は、ステップＳ６における冗長符号の付与を経た第１出力データと、ステップＳ１１における冗長符号の付与を経た第２出力データとを比較照合する（ステップＳ１２）。ステップＳ１２において、結果照合部１４は、互いの排他論理和を求める手法により、第１出力データと第２出力データとを照合する。その後ステップＳ１３からステップＳ１５の動作手順は、実施の形態１におけるステップＳ１３からステップＳ１５の動作手順と同様である。
【００４４】
ステップＳ１４の冗長検査により異常が無いことを確認すると（ステップＳ１５、Ｎｏ）、安全出力装置１９は、第１出力データを出力する。次に、演算診断部１５は、プロセッサ１１の故障の有無を診断する（ステップＳ２１）。第１メモリ領域１２Ａが保持する第１出力データに対し、第２メモリ領域１２Ｂが保持する第２出力データは、ステップＳ２０におけるビット反転を経ている。アドレスラインの故障は、第１出力データと第２出力データとを比較照合することで検出できる。よって、実施の形態２では、演算診断部１５によるメモリ１２の故障診断は不要となる。
【００４５】
ステップＳ１７およびステップＳ１８の動作手順は、実施の形態１におけるステップＳ１７およびステップＳ１８の動作手順と同様である。実施の形態２にかかる安全コントローラは、実施の形態１と同様に、一重の回路構成として簡易かつ低コストを実現し、ハードウェア故障およびソフトウェア故障の両方を検出することができる。
【００４６】
実施の形態３．
実施の形態３にかかる安全コントローラは、実施の形態１にかかる安全コントローラ（図１参照）と同様の構成を備える。本実施の形態にかかる安全コントローラの動作手順は、実施の形態２にかかる安全コントローラの動作手順（図４および図５参照）のうちステップＳ２０において、ビット反転に代えて、補数への変換を行う。ここで、本実施の形態の動作手順を、図４および図５のフローチャートを参照して説明する。
【００４７】
実行制御部１３は、ステップＳ９における処理結果である出力データ（第２出力データ）を、補数へ変換する。実行制御部１３は、補数への変換を経た第２出力データを、第２メモリ領域１２Ｂに書き込む（ステップＳ１０）。また、実行制御部１３は、第２メモリ領域１２Ｂが保持する自己保存データを、ステップＳ９における処理結果に応じて書き換えるとともに、補数に変換する。
【００４８】
結果照合部１４は、ステップＳ６における冗長符号の付与を経た第１出力データと、ステップＳ１１における冗長符号の付与を経た第２出力データとを比較照合する（ステップＳ１２）。ステップＳ１２において、結果照合部１４は、互いの和がゼロであるか否かにより、第１出力データと第２出力データとを照合する。その後の動作手順は、実施の形態２におけるステップＳ１３からステップＳ１８の動作手順と同様である。
【００４９】
実施の形態３では、実施の形態２と同様、第１メモリ領域１２Ａに書き込まれる第１出力データと第２メモリ領域１２Ｂに書き込まれる第２出力データとは異なる値である。アドレスラインの故障は、第１出力データと第２出力データとを比較照合することで検出できる。よって、実施の形態３では、演算診断部１５によるメモリ１２の故障診断は不要となる。
【００５０】
実施の形態３にかかる安全コントローラは、実施の形態１および２と同様に、一重の回路構成として簡易かつ低コストを実現し、ハードウェア故障およびソフトウェア故障の両方を検出することができる。
【００５１】
実施の形態４．
実施の形態４にかかる安全コントローラは、実施の形態１にかかる安全コントローラ（図１参照）と同様の構成を備える。本実施の形態にかかる安全コントローラの動作手順は、実施の形態２にかかる安全コントローラの動作手順（図４および図５参照）のうちステップＳ２０において、ビット反転に代えて、エンディアンを逆転させる変換を行う。ここで、本実施の形態の動作手順を、図４および図５のフローチャートを参照して説明する。
【００５２】
実行制御部１３は、ステップＳ９における処理結果である出力データ（第２出力データ）について、例えば１６ビットデータの上位ビットおよび下位ビットを逆にする変換を行う。実行制御部１３は、エンディアンの逆転を経た第２出力データを、第２メモリ領域１２Ｂに書き込む（ステップＳ１０）。また、実行制御部１３は、第２メモリ領域１２Ｂが保持する自己保存データを、ステップＳ９における処理結果に応じて書き換えるとともに、エンディアンを逆転させる。
【００５３】
結果照合部１４は、ステップＳ６における冗長符号の付与を経た第１出力データと、ステップＳ１１における冗長符号の付与を経た第２出力データとを比較照合する（ステップＳ１２）。その際、結果照合部１４は、第２メモリ領域１２Ｂが保持する第２出力データを、エンディアンを逆転させて読み出す。結果照合部１４は、第１出力データと、エンディアンの逆転を経た第２出力データとを照合する。その後の動作手順は、実施の形態２におけるステップＳ１３からステップＳ１８の動作手順と同様である。
【００５４】
実施の形態４では、実施の形態２および３と同様、第１メモリ領域１２Ａに書き込まれる第１出力データと第２メモリ領域１２Ｂに書き込まれる第２出力データとは異なる値である。アドレスラインの故障は、第１出力データと第２出力データとを比較照合することで検出できる。よって、実施の形態４では、演算診断部１５によるメモリ１２の故障診断は不要となる。
【００５５】
実施の形態４にかかる安全コントローラは、実施の形態１から３と同様に、一重の回路構成として簡易かつ低コストを実現し、ハードウェア故障およびソフトウェア故障の両方を検出することができる。
【００５６】
実施の形態４にかかる安全コントローラは、ステップＳ４における処理結果である出力データ（第１出力データ）についてエンディアンを逆転させることとしても良い。結果照合部１４は、比較照合の際に、第１メモリ領域１２Ａが保持する第１出力データ、および第２メモリ領域１２Ｂが保持する第２出力データのいずれについて、エンディアンを逆転させて読み出すこととしても良い。
【００５７】
実施の形態５．
実施の形態５にかかる安全コントローラは、実施の形態１にかかる安全コントローラ（図１参照）と同様の構成を備える。本実施の形態にかかる安全コントローラの動作手順は、実施の形態１にかかる安全コントローラの動作手順（図２および図３参照）と同様である。ここで、本実施の形態の動作手順を、図２および図３のフローチャートを参照して説明する。
【００５８】
第１入力データのプログラム処理（ステップＳ４）において、実行制御部１３は、１６ビット向けのコンパイラとして生成されたプログラムを使用する。一方、第２入力データのプログラム処理（ステップＳ９）において、実行制御部１３は、３２ビット向けのコンパイラとして生成されたプログラムを使用する。
【００５９】
コントローラが扱うデータのほとんどは、１６ビットデータである。実行制御部１３は、ステップＳ４において、１６ビットである第１入力データをレジスタにロードし、１６ビット命令を実行する。実行制御部１３は、処理結果である１６ビットの第１出力データを第１メモリ領域１２Ａに書き込む（ステップＳ５）。
【００６０】
また、プロセッサ１１は、ステップＳ９において、１６ビットである第２入力データをレジスタにロードし、３２ビット命令を実行する。実行制御部１３は、処理結果である１６ビットの第２出力データを第２メモリ領域１２Ｂに書き込む（ステップＳ１０）。
【００６１】
実施の形態５では、第１入力データおよび第２入力データに対して実行する命令が互いに異なる。結果照合部１４は、第１出力データと第２出力データとの比較照合により、プロセッサ１１のソフトウェア故障およびハードウェア故障を検出することができる。よって、実施の形態５では、演算診断部１５によるプロセッサ１１の故障診断は不要となる。
【００６２】
実施の形態５にかかる安全コントローラは、実施の形態１から４と同様に、一重の回路構成として簡易かつ低コストを実現し、ハードウェア故障およびソフトウェア故障の両方を検出することができる。
【００６３】
実施の形態６．
図６は、本発明の実施の形態６にかかる安全演算装置を備える安全コントローラの構成を示すブロック図である。安全コントローラは、安全演算装置３０、安全入力装置１８および安全出力装置１９を備える。実施の形態１と同一の部分には同一の符号を付し、重複する説明を適宜省略する。
【００６４】
安全演算装置３０は、安全制御のための演算処理を実施する。安全演算装置３０、安全入力装置１８および安全出力装置１９は、バス２０を介して互いに内部接続されている。安全入力装置１８は、安全コントローラへの入力データを基に、冗長符号を算出する。安全入力装置１８は、入力データに冗長符号および付帯情報が付与された入力メッセージを生成する。入力メッセージは、入力データおよび冗長符号を含む。冗長符号は、例えばＣＲＣとする。付帯情報は、例えばヘッダ情報とする。
【００６５】
安全演算装置３０は、プロセッサ３１およびメモリ１２を有する。プロセッサ３１は、安全演算装置３０へ入力された入力データのプログラム処理を実施する。メモリ１２は、プロセッサ３１へ入力される入力メッセージ、およびプログラム処理の結果である出力メッセージを保持する。
【００６６】
プロセッサ３１は、実行制御部３２、結果照合部３３、制御演算部３４、メッセージ処理部３５、演算診断部３６、異常処理部３７および送受信部３８を有する。送受信部３８は、安全入力装置１８からの入力メッセージの受信と、安全出力装置１９への出力メッセージの送信とを行う。送受信部３８は、安全入力装置１８と第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂとの間の入力メッセージの転送と、安全出力装置１９と第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂとの間の出力メッセージの転送とを行う。
【００６７】
メッセージ処理部３５は、入力メッセージ処理および出力メッセージ処理を実施する。メッセージ処理部３５は、入力メッセージ処理として、入力メッセージに付与されている冗長符号を復号して検査する。メッセージ処理部３５は、出力メッセージ処理として、出力データに冗長符号を付与し出力メッセージを生成する。
【００６８】
制御演算部３４は、メッセージ処理部３５からの入力メッセージに含まれる入力データについて、制御演算を実施する。制御演算部３４は、例えば安全制御ロジックを実行する。実行制御部３２は、第１メモリ領域１２Ａに書き込まれた入力メッセージについての第１処理過程と、第２メモリ領域１２Ｂに書き込まれた入力メッセージについての第２処理過程とを実行する。
【００６９】
結果照合部３３は、第１処理過程において第１メモリ領域１２Ａに書き込まれた出力メッセージと、第２処理過程において第２メモリ領域１２Ｂに書き込まれた出力メッセージとを照合する。
【００７０】
演算診断部３６は、プロセッサ３１およびメモリ１２の故障の有無を演算により診断する。演算診断部３６によるプロセッサ３１およびメモリ１２の診断には、例えば、テストパターンを用いる。
【００７１】
異常処理部３７は、入力データおよび出力データの冗長検査、結果照合部３３における照合、および演算診断部３６における診断の少なくともいずれかにおいて異常が検出された場合に、出力メッセージの出力を停止させる。
【００７２】
次に、安全コントローラの動作手順を説明する。送受信部３８は、入力データに冗長符号が付与された入力メッセージを、安全入力装置１８から読み込む。送受信部３８は、読み込んだ入力メッセージを第１メモリ領域１２Ａおよび第２メモリ領域１２Ｂに書き込む。
【００７３】
メッセージ処理部３５は、送受信部３８で読み込まれた入力メッセージに対し、入力メッセージ処理を実施する。メッセージ処理部３５は、第１処理過程において、入力メッセージに付随する冗長符号を復号し、冗長検査を実施する。メッセージ処理部３５は、入力メッセージに含まれる入力データおよびヘッダ情報をチェックする。実行制御部３２は、メッセージ処理部３５での入力メッセージ処理を経た入力メッセージを第１メモリ領域１２Ａに書き込む。
【００７４】
実行制御部３２は、第１処理過程において、第１メモリ領域１２Ａから読み出した入力メッセージを制御演算部３４へ送る。制御演算部３４は、入力メッセージに含まれる入力データの制御演算、例えば安全制御ロジックを実施する。実行制御部３２は、制御演算部３４での制御演算を経た入力データを、出力データとして第１メモリ領域１２Ａに書き込む。
【００７５】
実行制御部３２は、第１処理過程において、第１メモリ領域１２Ａから読み出した出力データをメッセージ処理部３５へ送る。メッセージ処理部３５は、第１メモリ領域１２Ａから読み出した出力データに対して、出力メッセージ処理を実施する。メッセージ処理部３５は、出力データを基に冗長符号を算出し、出力データに冗長符号を付与する。実行制御部３２は、冗長符号が付与された出力データを、出力メッセージとして、第１メモリ領域１２Ａに書き込む。実行制御部３２は、第１処理過程において、入力メッセージ処理、制御演算、出力メッセージ処理を実行し、その結果を第１メモリ領域１２Ａに随時記録する。
【００７６】
次に、メッセージ処理部３５は、第２処理過程において、入力メッセージに付随する冗長符号を復号し、冗長検査を実施する。メッセージ処理部３５は、入力メッセージに含まれる入力データおよびヘッダ情報をチェックする。実行制御部３２は、メッセージ処理部３５での入力メッセージ処理を経た入力メッセージを第２メモリ領域１２Ｂに書き込む。
【００７７】
実行制御部３２は、第２処理過程において、第２メモリ領域１２Ｂから読み出した入力メッセージを制御演算部３４へ送る。制御演算部３４は、入力メッセージに含まれる入力データの制御演算、例えば安全制御ロジックを実施する。実行制御部３２は、制御演算部３４での制御演算を経た入力データを、出力データとして第２メモリ領域１２Ｂに書き込む。
【００７８】
実行制御部３２は、第２処理過程において、第２メモリ領域１２Ｂから読み出した出力データをメッセージ処理部３５へ送る。メッセージ処理部３５は、第２メモリ領域１２Ｂから読み出した出力データに対して、出力メッセージ処理を実施する。メッセージ処理部３５は、出力データを基に冗長符号を算出する。メッセージ処理部３５は、出力データに冗長符号が付与された出力メッセージを生成する。実行制御部３２は、メッセージ処理部３５で生成された出力メッセージを、第２メモリ領域１２Ｂに書き込む。実行制御部３２は、第２処理過程において、入力メッセージ処理、制御演算、出力メッセージ処理を実行し、その結果を第２メモリ領域１２Ｂに随時記録する。
【００７９】
結果照合部３３は、第１メモリ領域１２Ａに書き込まれた出力メッセージと、第２メモリ領域１２Ｂに書き込まれた出力メッセージとを比較照合する。異常処理部３７は、入力データおよび出力データの冗長検査、結果照合部３３における照合、および演算診断部３６における診断の少なくともいずれかにおいて異常が検出された場合に、出力メッセージの出力を停止させる。
【００８０】
実施の形態６においても、安全コントローラは、実施の形態１と同様、一重の回路構成として簡易かつ低コストを実現できる。
【００８１】
実施の形態７．
図７は、本発明の実施の形態７にかかる安全入力装置を備える安全コントローラの構成を示すブロック図である。安全コントローラは、安全入力装置４０、安全演算装置５０および安全出力装置１９を備える。
【００８２】
安全演算装置５０は、安全制御のための演算処理を実施する。安全入力装置４０は、安全コントローラへの入力信号の入力を受け付ける。安全出力装置１９は、安全コントローラから外部へ出力信号を出力する。安全入力装置４０、安全演算装置５０および安全出力装置１９は、バス２０を介して互いに内部接続されている。
【００８３】
安全入力装置４０は、入力部４１、プロセッサ４２およびメモリ４３を有する。入力部４１は、安全入力装置４０への入力信号を数値化し、入力データとする。プロセッサ４２は、入力部４１からの入力データのプログラム処理を実施する。メモリ４３は、プロセッサ４２へ入力される入力データを保持する。
【００８４】
メモリ４３は、互いに独立した第１メモリ領域４３Ａおよび第２メモリ領域４３Ｂを有する。第２メモリ領域４３Ｂは、第１メモリ領域４３Ａとはアドレスが異なる。第１メモリ領域４３Ａおよび第２メモリ領域４３Ｂは、いずれも入力データを保持可能とされている。
【００８５】
プロセッサ４２は、入力演算部４４、入力診断部４５、メッセージ処理部４６、実行制御部４７、結果照合部４８および送信部４９を有する。入力演算部４４は、入力部４１からの入力データに対する演算処理を実施する。入力診断部４５は、入力部４１へのテスト信号の送信によって、入力部４１の異常の有無を診断する。
【００８６】
メッセージ処理部４６は、入力メッセージ処理として、入力データに冗長符号および付帯情報を付与する。これにより、メッセージ処理部４６は、安全演算装置５０に対する入力メッセージを生成する。
【００８７】
実行制御部４７は、第１メモリ領域４３Ａへの入力メッセージの書き込みを含む第１処理過程と、第２メモリ領域４３Ｂへの入力メッセージの書き込みを含む第２処理過程と、を実行する。
【００８８】
結果照合部４８は、第１処理過程において第１メモリ領域４３Ａに書き込まれた入力メッセージと、第２処理過程において第２メモリ領域４３Ｂに書き込まれた入力メッセージとを照合する。
【００８９】
送信部４９は、第１メモリ領域４３Ａに書き込まれた入力メッセージと、第２メモリ領域４３Ｂに書き込まれた入力メッセージとのいずれかを、安全演算装置５０へ送信する。
【００９０】
図８は、安全入力装置の動作手順を示すフローチャートである。入力診断部４５は、入力部４１に対してテスト信号を送信する（ステップＳ３１）。入力診断部４５は、入力部４１の異常の有無を判断する（ステップＳ３２）。
【００９１】
入力診断部４５は、入力部４１において入力データの値とテスト信号とが一致するか否かを確認する。入力信号がデジタル信号である場合、入力診断部４５は、入力データの現在値とはＯＮ／ＯＦＦを反転させた信号をテスト信号とする。例えば、該当する入力チャンネルの値が「ＯＮ」である場合、入力診断部４５は、テスト信号としてＯＦＦ信号を送信する。入力演算部４４がＯＦＦ信号を確認した場合、入力診断部４５は、入力部４１に異常が無いものと判断する。該当する入力チャンネルの値が「ＯＦＦ」である場合、入力診断部４５は、テスト信号としてＯＮ信号を送信しても良い。
【００９２】
入力信号がアナログ信号である場合、入力診断部４５は、アナログ入力の範囲の幅で変動する波形をテスト信号とする。テスト信号の波形を入力演算部４４が確認した場合、入力診断部４５は、入力部４１に異常が無いものと判断する。入力信号部４５は、アナログ入力の範囲内の値を複数回に分けて入力部４１へ送信しても良い。当該値を入力演算部４４が確認した場合、入力診断部４５は、入力部４１に異常が無いものと判断する。入力診断部４５は、ＡＤ変換後の各ビットのＯＮ／ＯＦＦを確認できるように、テスト信号を選択する。
【００９３】
入力部４１に異常があると入力診断部４５が判断した場合（ステップＳ３２、Ｙｅｓ）、送信部４９は、安全演算装置５０への入力メッセージの送信を停止させる（ステップＳ４３）。安全コントローラは、動作を停止させる。
【００９４】
入力部４１に異常が無いと入力診断部４５が判断した場合（ステップＳ３２、Ｎｏ）、入力部４１は、複数の入力端子の信号をサンプリングして数値化する。入力部４１は、数値化された入力データを取得する（ステップＳ３３）。入力演算部４４は、入力部４１の各入力チャンネルについて、入力データのフィルタ処理を実施する（ステップＳ３４）。入力演算部４４は、フィルタ処理により、通過させる入力データの値（入力値）を決定する。
【００９５】
入力信号がデジタル信号である場合、入力演算部４４は、所定の周期の入力信号が同じ値となったとき、当該値を入力値として確定する。または、入力演算部４４は、所定の周期の入力信号の値のうち最も頻度が高い値を、入力値として確定する。入力信号がアナログ信号である場合、入力演算部４４は、入力信号の所定の周期における移動平均値を、入力値として確定する。入力演算部４４は、入力信号の所定の周期の中で急変した値を除去してから、入力値を確定しても良い。
【００９６】
メッセージ処理部４６は、入力演算部４４からの入力データに冗長符号および付帯情報を付与する。冗長符号は、例えばＣＲＣとする。付帯情報は、例えばヘッダ情報とする。メッセージ処理部４６は、入力データに冗長符号およびヘッダ情報が付与された入力メッセージ（第１入力メッセージ）を生成する（ステップＳ３５）。
【００９７】
メッセージ処理部４６は、入力データの通信ヘッダに、ヘッダ情報として送受信局情報やメッセージ番号を付与する。メッセージ処理部４６は、ヘッダ情報およびペイロード（入力データ）についてＣＲＣ符号を算出する。メッセージ処理部４６は、算出されたＣＲＣ符号をペイロードに追加する。
【００９８】
安全演算装置５０は、ＣＲＣ符号を再計算することで、入力メッセージのビット化けを検出することができる。また、安全演算装置５０は、ヘッダ情報を確認することで、受け付けた入力メッセージが受信すべき入力メッセージであるか否かを判断することができる。
【００９９】
実行制御部４７は、メッセージ処理部４６からの第１入力メッセージを、第１メモリ領域４３Ａに書き込む（ステップＳ３６）。第１処理過程は、ステップＳ３３からステップＳ３５までの処理過程とする。第１メモリ領域４３Ａは、第１入力メッセージを格納する以外に、第１処理過程における変数等の記憶領域としても機能する。
【０１００】
次に、入力演算部４４は、ステップＳ３４と同様に、入力部４１の各入力チャンネルについて、入力データのフィルタ処理を実施する（ステップＳ３７）。メッセージ処理部４６は、ステップＳ３５と同様に、入力演算部４４からの入力データに冗長符号およびヘッダ情報を付与する。メッセージ処理部４６は、入力データに冗長符号およびヘッダ情報が付与された入力メッセージ（第２入力メッセージ）を生成する（ステップＳ３８）。
【０１０１】
実行制御部４７は、メッセージ処理部４６からの第２入力メッセージを、第２メモリ領域４３Ｂに書き込む（ステップＳ３９）。第２処理過程は、ステップＳ３７からステップＳ３９までの処理過程とする。第２メモリ領域４３Ｂは、第２入力メッセージを格納する以外に、第２処理過程における変数等の記憶領域としても機能する。
【０１０２】
結果照合部４８は、第１メモリ領域４３Ａから第１入力メッセージを読み出す。結果照合部４８は、第２メモリ領域４３Ｂから第２入力メッセージを読み出す。結果照合部４８は、それぞれ読み出された第１入力メッセージと第２入力メッセージとを比較照合する（ステップＳ４０）。
【０１０３】
結果照合部４８での照合において異常が検出された場合（ステップＳ４１、Ｙｅｓ）、送信部４９は、安全演算装置５０への入力メッセージの送信を停止させる（ステップＳ４３）。安全コントローラは、動作を停止させる。
【０１０４】
結果照合部４８での照合において異常が無いことを確認すると（ステップＳ４１、Ｎｏ）、送信部４９は、第１入力メッセージまたは第２入力メッセージを安全演算装置５０へ送信する（ステップＳ４２）。送信部４９は、例えば、第２メモリ領域４３Ｂから第２入力メッセージを読み出す。送信部４９は、読み出された第２入力メッセージを、安全演算装置５０へ送信する。送信部４９から安全演算装置５０へ入力メッセージを送信すると、安全入力装置４０は、ステップＳ３１に戻り、安全コントローラへの入力信号の入力を受け付けるための動作を継続する。
【０１０５】
安全入力装置４０は、プロセッサ４２およびメモリ４３のいずれにソフトウェア故障が発生した場合、結果照合部４８による照合結果から、故障の発生を検出することができる。なお、安全入力装置４０は、ソフトウェア故障があった場合に、動作を停止させる以外に、所定の処置を施した上で動作を継続することとしても良い。
【０１０６】
ソフトウェア故障は、ソフトウェア処理におけるある周期にて検出されても、次周期以降には解消されることがあり得る。安全入力装置４０は、例えば、故障が検出された周期の直前の周期における入力メッセージを当該周期に適用することで、エラー扱いとせず次周期以降の処理を継続することとしても良い。安全入力装置４０は、所定回数の周期にて連続して故障を検出した場合に、動作を停止させることとしても良い。
【０１０７】
安全入力装置４０は、プロセッサ４２およびメモリ４３のいずれかにハードウェア故障が発生した場合、結果照合部４８による照合では、故障の発生を検出することが困難である。安全入力装置４０は、ハードウェア故障を自己診断するために、例えば、周期の途中にて所定の診断プログラムを実施する。
【０１０８】
安全入力装置４０は、入力部４１への入力信号の範囲の全体について、入力診断部４５による診断を実施する。安全入力装置４０は、一重の回路構成の入力部４１について、回路部品の固着やドリフトの発生による誤入力を検出することができる。安全入力装置４０および安全演算装置５０は、入力メッセージの冗長検査とヘッダ情報の確認を行うことで、一重の通信手段にて、入力メッセージのエラーを検出できる。安全入力装置４０は、結果照合部４８での入力メッセージの照合により、ソフトウェアエラーの混入を防止できる。
【０１０９】
安全入力装置４０は、入力部４１、プロセッサ４２およびメモリ４３からなる一重の回路構成を採用する。実施の形態７にかかる安全入力装置４０は、一重の回路構成として簡易かつ低コストを実現し、ハードウェア故障およびソフトウェア故障の両方を検出することができる。
【０１１０】
なお、安全入力装置４０のプロセッサ４２の動作には、上記の実施の形態１から５におけるプロセッサ１１（図１参照）と同様の動作を追加することとしても良い。
【０１１１】
実施の形態８．
図９は、本発明の実施の形態８にかかる安全出力装置を備える安全コントローラの構成を示すブロック図である。安全コントローラは、安全入力装置１８、安全演算装置５０および安全出力装置６０を備える。
【０１１２】
安全演算装置５０は、安全制御のための演算処理を実施する。安全入力装置１８は、安全コントローラへの入力信号の入力を受け付ける。安全出力装置６０は、安全コントローラから外部へ出力信号を出力する。安全入力装置１８、安全演算装置５０および安全出力装置６０は、バス２０を介して互いに内部接続されている。
【０１１３】
安全出力装置６０は、出力部６１、プロセッサ６２およびメモリ６３を有する。プロセッサ６２は、出力メッセージのプログラム処理を実施する。メモリ６３は、出力メッセージに含まれる出力データを保持する。出力部６１は、出力データに応じた出力信号を出力する。
【０１１４】
メモリ６３は、互いに独立した第１メモリ領域６３Ａおよび第２メモリ領域６３Ｂを有する。第２メモリ領域６３Ｂは、第１メモリ領域６３Ａとはアドレスが異なる。第１メモリ領域６３Ａおよび第２メモリ領域６３Ｂは、いずれも出力データを保持可能とされている。
【０１１５】
プロセッサ６２は、電源遮断部６４、出力診断部６５、結果照合部６６、出力演算部６７、メッセージ処理部６８、実行制御部６９および受信部７０を有する。受信部７０は、安全演算装置５０からの出力メッセージを受信する。
【０１１６】
メッセージ処理部６８は、出力メッセージ処理として、出力メッセージに含まれる冗長符号および付帯情報を基に出力メッセージの内容を検査する。出力演算部６７は、出力メッセージから出力データを取り出すための演算処理を実施する。実行制御部６９は、第１メモリ領域６３Ａへの出力データの書き込みを含む第１処理過程と、第２メモリ領域６３Ｂへの出力データの書き込みを含む第２処理過程と、を実行する。
【０１１７】
結果照合部６６は、第１処理過程において第１メモリ領域６３Ａに書き込まれた出力データと、第２処理過程において第２メモリ領域６３Ｂに書き込まれた出力データとを照合する。
【０１１８】
出力診断部６５は、出力部６１へのテスト信号の送信によって、出力部６１の異常の有無を診断する。電源遮断部６４は、出力診断部６５での診断結果に応じて、出力部６１への電源を遮断する。
【０１１９】
図１０は、安全出力装置の動作手順を示すフローチャートである。出力診断部６５は、出力部６１に対してテスト信号を送信する（ステップＳ５１）。出力診断部６５は、出力部６１の異常の有無を判断する（ステップＳ５２）。
【０１２０】
出力診断部６５は、出力部６１において出力データの値とテスト信号とが一致するか否かを確認する。出力信号をデジタル信号とする場合、出力診断部６５は、出力データの現在値とはＯＮ／ＯＦＦを反転させた信号をテスト信号とする。出力診断部６５は、出力部６１へテスト信号を出力する。
【０１２１】
例えば、該当する出力端子の値が「ＯＮ」である場合、出力診断部６５は、テスト信号としてＯＦＦ信号を送信する。一定時間内に出力診断部６５がＯＦＦ信号を確認した場合、出力診断部６５は、出力部６１に異常が無いものと判断する。または、出力診断部６５は、出力端子の信号を読み出し、読み出された信号の値と、期待する出力データの値とを比較する。
【０１２２】
出力信号をアナログ信号とする場合、出力診断部６５は、ＤＡ変換器のレンジ範囲の値を複数回に分けて、出力部６１へ送信する。出力診断部６５は、出力部６１の出力データの値を読み出して、読み出された値が誤差範囲内である場合、出力部６１に異常が無いものと判断する。出力診断部６５によるテストは、出力端子に接続されたデバイスが反応しない程度の短い時間内に行われるものとする。出力部６１は、出力診断部６５によるテスト中に、現在の出力データによる出力信号を継続して出力しても良い。
【０１２３】
出力部６１に異常があると出力診断部６５が判断した場合（ステップＳ５２、Ｙｅｓ）、電源遮断部６４は、出力部６１の電源を遮断する（ステップＳ６３）。出力部６１の電源の遮断により、安全出力装置６０は、出力部６１からの出力信号を強制的にゼロとする。
【０１２４】
出力部６１に異常が無いと出力診断部６５が判断した場合（ステップＳ５２、Ｎｏ）、受信部７０は、安全演算装置５０からの出力メッセージを受信する（ステップＳ５３）。メッセージ処理部６８は、受信部７０が受信した出力メッセージ（第１出力メッセージ）の内容を検査する（ステップＳ５４）。
【０１２５】
出力メッセージは、冗長符号および付帯情報を含む。冗長符号は、例えばＣＲＣとする。付帯情報は、例えばヘッダ情報とする。メッセージ処理部６８は、第１出力メッセージのＣＲＣ符号を再計算することで、第１出力メッセージのビット化けを検出する。また、メッセージ処理部６８は、ヘッダ情報である送受信局情報やメッセージ番号を確認することで、受け付けた第１出力メッセージが、安全出力装置６０が出力信号を得るべき正しい出力メッセージであるか否かを判断する。
【０１２６】
出力演算部６７は、出力部６１の出力端子ごとの出力データ（第１出力データ）を、第１出力メッセージから取り出す。出力演算部６７は、第１出力データのフィルタ処理を実施する（ステップＳ５５）。出力演算部６７は、所定の周期における移動平均値、または連続する同値を、フィルタ処理によって通過させる第１出力データの値（出力値）として決定する。出力演算部６７は、フィルタ処理によって、出力値の振動を防止する。
【０１２７】
実行制御部６９は、出力演算部６７からの第１出力データを、第１メモリ領域６３Ａに書き込む（ステップＳ５６）。第１処理過程は、ステップＳ５４からステップＳ５６までの処理過程とする。第１メモリ領域６３Ａは、第１出力データを格納する以外に、第１処理過程における変数等の記憶領域としても機能する。
【０１２８】
次に、メッセージ処理部６８は、ステップＳ５４と同様に、受信部７０が受信した出力メッセージ（第２出力メッセージ）の内容を検査する（ステップＳ５７）。メッセージ処理部６８は、第２出力メッセージのＣＲＣ符号を再計算することで、第２出力メッセージのビット化けを検出する。また、メッセージ処理部６８は、ヘッダ情報である送受信局情報やメッセージ番号を確認することで、受け付けた第２出力メッセージが、安全出力装置６０が出力信号を得るべき正しい出力メッセージであるか否かを判断する。
【０１２９】
出力演算部６７は、ステップＳ５５と同様に、出力部６１の出力端子ごとの出力データ（第２出力データ）を、第２出力メッセージから取り出す。出力演算部６７は、第２出力データのフィルタ処理を実施する（ステップＳ５８）。
【０１３０】
実行制御部６９は、出力演算部６７からの第２出力データを、第２メモリ領域６３Ｂに書き込む（ステップＳ５９）。第２処理過程は、ステップＳ５７からステップＳ５９までの処理過程とする。第２メモリ領域６３Ｂは、第２出力データを格納する以外に、第２処理過程における変数等の記憶領域としても機能する。
【０１３１】
結果照合部６６は、第１メモリ領域６３Ａから第２出力データを読み出す。結果照合部６６は、第２メモリ領域６３Ｂから第２出力データを読み出す。結果照合部６６は、それぞれ読み出された第１出力データと第２出力データとを比較照合する（ステップＳ６０）。
【０１３２】
結果照合部６６での照合において異常が検出された場合（ステップＳ６１、Ｙｅｓ）、電源遮断部６４は、出力部６１の電源を遮断する（ステップＳ６３）。出力部６１の電源の遮断により、安全出力装置６０は、出力部６１からの出力信号を強制的にゼロとする。
【０１３３】
結果照合部６６での照合において異常が無いことを確認すると（ステップＳ６１、Ｎｏ）、出力部６１は、第１出力データまたは第２出力データに基づく出力信号を出力する（ステップＳ６２）。出力部６１が出力信号を出力すると、安全出力装置６０は、ステップＳ５１に戻り、出力信号を出力するための動作を継続する。
【０１３４】
安全出力装置６０は、プロセッサ６２およびメモリ６３のいずれにソフトウェア故障が発生した場合、結果照合部６６による照合結果から、故障の発生を検出することができる。なお、安全出力装置６０は、ソフトウェア故障があった場合に、動作を停止させる以外に、所定の処置を施した上で動作を継続することとしても良い。
【０１３５】
ソフトウェア故障は、ソフトウェア処理におけるある周期にて検出されても、次周期以降には解消されることがあり得る。安全出力装置６０は、例えば、故障が検出された周期の直前の周期における出力データを当該周期に適用することで、エラー扱いとせず次周期以降の処理を継続することとしても良い。安全出力装置６０は、所定回数の周期にて連続して故障を検出した場合に、動作を停止させることとしても良い。
【０１３６】
安全出力装置６０は、プロセッサ６２およびメモリ６３のいずれかにハードウェア故障が発生した場合、結果照合部６６による照合では、故障の発生を検出することが困難である。安全出力装置６０は、ハードウェア故障を自己診断するために、例えば、周期の途中にて所定の診断プログラムを実施する。
【０１３７】
安全出力装置６０は、出力部６１の出力レンジの全体について、出力診断部６５による診断を実施する。安全出力装置６０は、一重の回路構成の出力部６１について、回路部品の固着やドリフトの発生による誤出力を検出することができる。安全出力装置６０および安全演算装置５０は、出力メッセージの冗長検査とヘッダ情報の確認を行うことで、一重の通信手段にて、出力メッセージのエラーを検出できる。安全出力装置６０は、結果照合部６６での出力データの照合により、ソフトウェアエラーの混入を防止できる。
【０１３８】
安全出力装置６０は、出力部６１、プロセッサ６２およびメモリ６３からなる一重の回路構成を採用する。実施の形態８にかかる安全出力装置６０は、一重の回路構成として簡易かつ低コストを実現し、ハードウェア故障およびソフトウェア故障の両方を検出することができる。
【０１３９】
なお、安全出力装置６０のプロセッサ６２の動作には、上記の実施の形態１から５におけるプロセッサ１１（図１参照）と同様の動作を追加することとしても良い。
【０１４０】
実施の形態９．
図１１は、本発明の実施の形態９にかかる安全コントローラの構成を示すブロック図である。安全コントローラは、安全入力装置１８、安全演算装置１０、安全出力装置１９、ゲートウェイ８０およびエンジニアリングツール８１を有する。安全演算装置１０は、例えば、実施の形態１にかかる安全演算装置１０とする。
【０１４１】
エンジニアリングツール８１は、例えば、ＰＬＣシステム等で動作させるシーケンスプログラムを編集するツールである。エンジニアリングツール８１は、例えば、エンジニアリングツールソフトウェアがインストールされたパーソナルコンピュータなどで実現される。
【０１４２】
安全演算装置１０、安全入力装置１８および安全出力装置１９は、バス２０を介して互いに内部接続されている。エンジニアリングツール８１は、ゲートウェイ８０を介してバス２０に接続されている。スイッチおよびセンサ８３は、安全入力装置１８の入力部に接続されている。アクチュエータおよびコンタクタ８４は、安全出力装置１９の出力部に接続されている。
【０１４３】
エンジニアリングツール８１は、安全演算装置１０の安全制御プログラムや設定パラメータの変更あるいは書き込みを行う。安全コントローラは、安全演算装置１０を適用することで、二重化されたハードウェア構造を採用しなくても、ハードウェア故障およびソフトウェア故障の両方を検出することができる。安全コントローラは、一重の回路構成として簡易かつ低コストを実現できる。
【０１４４】
安全コントローラの動作には、上記の実施の形態２から５にかかる安全コントローラと同様の動作を追加することとしても良い。安全コントローラは、実施の形態６にかかる安全演算装置３０（図６参照）を適用しても良い。
【０１４５】
安全コントローラは、実施の形態７にかかる安全入力装置４０（図７参照）を適用しても良い。この場合、エンジニアリングツール８１は、安全入力装置４０に対し、入力データのフィルタ処理の条件や、入力診断の条件を指定する。この場合も、安全コントローラは、一重の回路構成として簡易かつ低コストを実現できる。
【０１４６】
安全コントローラは、実施の形態８にかかる安全出力装置６０（図９参照）を適用しても良い。この場合、エンジニアリングツール８１は、安全出力装置６０に対し、出力データのフィルタ処理の条件や、出力診断の条件を指定する。この場合も、安全コントローラは、一重の回路構成として簡易かつ低コストを実現できる。
【０１４７】
安全コントローラは、例えば、実施の形態６にかかる安全演算装置３０、実施の形態７にかかる安全入力装置４０、および実施の形態８にかかる安全出力装置６０を組み合わせたものとしても良い。
【０１４８】
実施の形態１０．
図１２は、本発明の実施の形態１０にかかる安全コントローラの構成を示すブロック図である。実施の形態９と同一の部分には同一の符号を付し、重複する説明を適宜省略する。
【０１４９】
安全コントローラは、安全入力装置１８、安全演算装置１０、安全出力装置１９、ネットワーク接続装置８５およびエンジニアリングツール８１を有する。安全演算装置１０は、例えば、実施の形態１にかかる安全演算装置１０とする。安全演算装置１０、安全入力装置１８、安全出力装置１９およびエンジニアリングツール８１は、ネットワーク接続装置８５を介して互いに接続されている。
【０１５０】
エンジニアリングツール８１は、安全演算装置１０の安全制御プログラムや設定パラメータの変更あるいは書き込みを行う。安全コントローラは、安全演算装置１０を適用することで、二重化されたハードウェア構造を採用しなくても、ハードウェア故障およびソフトウェア故障の両方を検出することができる。安全コントローラは、一重の回路構成として簡易かつ低コストを実現できる。
【０１５１】
安全コントローラの動作には、上記の実施の形態２から５にかかる安全コントローラと同様の動作を追加することとしても良い。安全コントローラは、実施の形態６にかかる安全演算装置３０（図６参照）を適用しても良い。
【０１５２】
安全コントローラは、実施の形態７にかかる安全入力装置４０（図７参照）を適用しても良い。この場合、エンジニアリングツール８１は、安全入力装置４０に対し、入力データのフィルタ処理の条件や、入力診断の条件を指定する。この場合も、安全コントローラは、一重の回路構成として簡易かつ低コストを実現できる。
【０１５３】
安全コントローラは、実施の形態８にかかる安全出力装置６０（図９参照）を適用しても良い。この場合、エンジニアリングツール８１は、安全出力装置６０に対し、出力データのフィルタ処理の条件や、出力診断の条件を指定する。この場合も、安全コントローラは、一重の回路構成として簡易かつ低コストを実現できる。
【０１５４】
安全コントローラは、例えば、実施の形態６にかかる安全演算装置３０、実施の形態７にかかる安全入力装置４０、および実施の形態８にかかる安全出力装置６０を組み合わせたものとしても良い。
【産業上の利用可能性】
【０１５５】
本発明の安全コントローラは、機械や設備の安全制御を担う安全コントローラとして有用である。
【符号の説明】
【０１５６】
１１  プロセッサ、１２  メモリ、１２Ａ  第１メモリ領域、１２Ｂ  第２メモリ領域、１３  実行制御部、１４  結果照合部、１５  演算診断部、１６  異常処理部、１７  入出力処理部、１８  安全入力装置、１９  安全出力装置、２０  バス、３０  安全演算装置、３１  プロセッサ、３２  実行制御部、３３  結果照合部、３４  制御演算部、３５  メッセージ処理部、３６  演算診断部、３７  異常処理部、３８  送受信部、４０  安全入力装置、４１  入力部、４２  プロセッサ、４３  メモリ、４３Ａ  第１メモリ領域、４３Ｂ  第２メモリ領域、４４  入力演算部、４５  入力診断部、４６  メッセージ処理部、４７  実行制御部、４８  結果照合部、４９  送信部、５０  安全演算装置、６０  安全出力装置、６１  出力部、６２  プロセッサ、６３  メモリ、６３Ａ  第１メモリ領域、６３Ｂ  第２メモリ領域、６４  電源遮断部、６５  出力診断部、６６  結果照合部、６７  出力演算部、６８  メッセージ処理部、６９  実行制御部、７０  受信部、８０  ゲートウェイ、８１  エンジニアリングツール、８３  スイッチおよびセンサ、８４  アクチュエータおよびコンタクタ、８５  ネットワーク接続装置。
【図１】
2014041829.tif 000003
【図２】
2014041829.tif 000004
【図３】
2014041829.tif 000005
【図４】
2014041829.tif 000006
【図５】
2014041829.tif 000007
【図６】
2014041829.tif 000008
【図７】
2014041829.tif 000009
【図８】
2014041829.tif 000010
【図９】
2014041829.tif 000011
【図１０】
2014041829.tif 000012
【図１１】
2014041829.tif 000013
【図１２】
2014041829.tif 000014
【手続補正書】
【提出日】平成27年1月28日(2015.1.28)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、入力データのプログラム処理を実施するプロセッサと、前記プロセッサへ入力される前記入力データ、および前記プログラム処理の結果である出力データを保持するメモリと、を有し、前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記入力データおよび前記出力データを保持可能であって、前記プロセッサは、前記第１メモリ領域に書き込まれた前記入力データの冗長検査および前記プログラム処理と、前記プログラム処理の結果として前記第１メモリ領域に書き込まれた前記出力データへの冗長符号の付与と、を含む第１処理過程と、前記第２メモリ領域に書き込まれた前記入力データの冗長検査および前記プログラム処理と、前記プログラム処理の結果として前記第２メモリ領域に書き込まれた前記出力データへの冗長符号の付与と、を含む第２処理過程と、を実行する実行制御部と、前記第１処理過程における前記冗長符号の付与を経た前記出力データと、前記第２処理過程における前記冗長符号の付与を経た前記出力データとを照合する結果照合部と、前記プロセッサおよび前記メモリの故障の有無を演算によって診断する演算診断部と、前記実行制御部における前記入力データの前記冗長検査、前記結果照合部における照合、および前記演算診断部における診断の少なくともいずれかにおいて異常が検出された場合に、前記出力データの出力を停止させる異常処理部と、を有することを特徴とする。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
実行制御部１３は、第１メモリ領域１２Ａへ書き込まれた入力データ（第１入力データ）に付随する冗長符号をチェックする（ステップＳ２）。冗長符号は、例えばＣＲＣ（Cyclic  Redundancy  Code）とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
例えば、加算を行うＡＬＵの場合、演算対象となる２つのレジスタの各ビット（０，０），（０，１），（１，０），（１，１）の確認と、下位ビットからのキャリー演算を実施する。さらに、隣接しているメモリビット間にショートが無いことを確認するために、テストパターンとしては、隣接ビットが異なる結果となるもの（０ｘ５５５５および０ｘＡＡＡＡ）を選択する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００９２
【補正方法】変更
【補正の内容】
【００９２】
入力信号がアナログ信号である場合、入力診断部４５は、アナログ入力の範囲の幅で変動する波形をテスト信号とする。テスト信号の波形を入力演算部４４が確認した場合、入力診断部４５は、入力部４１に異常が無いものと判断する。入力診断部４５は、アナログ入力の範囲内の値を複数回に分けて入力部４１へ送信しても良い。当該値を入力演算部４４が確認した場合、入力診断部４５は、入力部４１に異常が無いものと判断する。入力診断部４５は、ＡＤ変換後の各ビットのＯＮ／ＯＦＦを確認できるように、テスト信号を選択する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００９７
【補正方法】変更
【補正の内容】
【００９７】
メッセージ処理部４６は、入力データの通信ヘッダに、ヘッダ情報として送受信局情報やメッセージ番号を付与する。メッセージ処理部４６は、ヘッダ情報およびペイロード（入力データ）についてＣＲＣを算出する。メッセージ処理部４６は、算出されたＣＲＣをペイロードに追加する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００９８
【補正方法】変更
【補正の内容】
【００９８】
安全演算装置５０は、ＣＲＣを再計算することで、入力メッセージのビット化けを検出することができる。また、安全演算装置５０は、ヘッダ情報を確認することで、受け付けた入力メッセージが受信すべき入力メッセージであるか否かを判断することができる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１２５
【補正方法】変更
【補正の内容】
【０１２５】
出力メッセージは、冗長符号および付帯情報を含む。冗長符号は、例えばＣＲＣとする。付帯情報は、例えばヘッダ情報とする。メッセージ処理部６８は、第１出力メッセージのＣＲＣを再計算することで、第１出力メッセージのビット化けを検出する。また、メッセージ処理部６８は、ヘッダ情報である送受信局情報やメッセージ番号を確認することで、受け付けた第１出力メッセージが、安全出力装置６０が出力信号を得るべき正しい出力メッセージであるか否かを判断する。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１２８
【補正方法】変更
【補正の内容】
【０１２８】
次に、メッセージ処理部６８は、ステップＳ５４と同様に、受信部７０が受信した出力メッセージ（第２出力メッセージ）の内容を検査する（ステップＳ５７）。メッセージ処理部６８は、第２出力メッセージのＣＲＣを再計算することで、第２出力メッセージのビット化けを検出する。また、メッセージ処理部６８は、ヘッダ情報である送受信局情報やメッセージ番号を確認することで、受け付けた第２出力メッセージが、安全出力装置６０が出力信号を得るべき正しい出力メッセージであるか否かを判断する。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１３１
【補正方法】変更
【補正の内容】
【０１３１】
結果照合部６６は、第１メモリ領域６３Ａから第１出力データを読み出す。結果照合部６６は、第２メモリ領域６３Ｂから第２出力データを読み出す。結果照合部６６は、それぞれ読み出された第１出力データと第２出力データとを比較照合する（ステップＳ６０）。
【手続補正１０】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力データのプログラム処理を実施するプロセッサと、
前記プロセッサへ入力される前記入力データ、および前記プログラム処理の結果である出力データを保持するメモリと、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記入力データおよび前記出力データを保持可能であって、
前記プロセッサは、
前記第１メモリ領域に書き込まれた前記入力データの冗長検査および前記プログラム処理と、前記プログラム処理の結果として前記第１メモリ領域に書き込まれた前記出力データへの冗長符号の付与と、を含む第１処理過程と、前記第２メモリ領域に書き込まれた前記入力データの冗長検査および前記プログラム処理と、前記プログラム処理の結果として前記第２メモリ領域に書き込まれた前記出力データへの冗長符号の付与と、を含む第２処理過程と、を実行する実行制御部と、
前記第１処理過程における前記冗長符号の付与を経た前記出力データと、前記第２処理過程における前記冗長符号の付与を経た前記出力データとを照合する結果照合部と、
前記プロセッサおよび前記メモリの故障の有無を演算によって診断する演算診断部と、
前記実行制御部における前記入力データの前記冗長検査、前記結果照合部における照合、および前記演算診断部における診断の少なくともいずれかにおいて異常が検出された場合に、前記出力データの出力を停止させる異常処理部と、を有することを特徴とする安全演算装置。
【請求項２】
前記実行制御部は、前記第２処理過程において、ビット反転させた前記出力データを前記第２メモリ領域に書き込み、
前記結果照合部は、前記第１メモリ領域から読み出した前記出力データと、前記第２メモリ領域から読み出した前記出力データとを、互いの排他論理和により照合することを特徴とする請求項１に記載の安全演算装置。
【請求項３】
前記実行制御部は、前記第２処理過程において、補数への変換を経た前記出力データを前記第２メモリ領域に書き込み、
前記結果照合部は、前記第１メモリ領域から読み出した前記出力データと、前記第２メモリ領域から読み出した前記出力データとを、互いの和により照合することを特徴とする請求項１に記載の安全演算装置。
【請求項４】
前記実行制御部は、前記第１メモリ領域に書き込む前記出力データと前記第２メモリ領域に書き込む前記出力データとのうちの一方について、エンディアンを逆転させ、
前記結果照合部は、前記第１メモリ領域から読み出した前記出力データと前記第２メモリ領域から読み出した前記出力データとのうちの一方についてエンディアンを逆転させて、照合することを特徴とする請求項１に記載の安全演算装置。
【請求項５】
前記実行制御部は、前記第１メモリ領域から読み出した前記入力データの前記プログラム処理において、１６ビット向けのコンパイラとして生成されたプログラムを使用し、かつ、前記第２メモリ領域から読み出した前記入力データの前記プログラム処理において、３２ビット向けのコンパイラとして生成されたプログラムを使用することを特徴とする請求項１に記載の安全演算装置。
【請求項６】
入力データのプログラム処理を実施するプロセッサと、
前記プロセッサへ入力される前記入力データ、および前記プログラム処理の結果である出力データを保持するメモリと、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記入力データおよび前記出力データを保持可能であって、
前記プロセッサは、
前記入力データを含む入力メッセージに付与されている冗長符号を復号して冗長検査を実施する入力メッセージ処理と、前記出力データに冗長符号を付与し出力メッセージとする出力メッセージ処理とを実施するメッセージ処理部と、
前記第１メモリ領域に書き込まれた前記入力メッセージについての制御演算と、前記出力メッセージ処理により得られた前記出力メッセージの前記第１メモリ領域への書き込みとを含む第１処理過程と、前記第２メモリ領域に書き込まれた前記入力メッセージについての制御演算と、前記出力メッセージ処理を経た前記出力メッセージの前記第２メモリ領域への書き込みとを含む第２処理過程と、を実行する実行制御部と、
前記第１メモリ領域に書き込まれた前記出力メッセージと、前記第２メモリ領域に書き込まれた前記出力メッセージとを照合する結果照合部と、
前記プロセッサおよび前記メモリの故障の有無を演算によって診断する演算診断部と、
前記メッセージ処理部における前記入力データの前記冗長検査、前記結果照合部における照合、および前記演算診断部における診断の少なくともいずれかにおいて異常が検出された場合に、前記出力メッセージの出力を停止させる異常処理部と、を有することを特徴とする安全演算装置。
【請求項７】
入力信号を数値化し、入力データとする入力部と、
前記入力データのプログラム処理を実施するプロセッサと、
前記プロセッサへ入力される前記入力データを保持するメモリと、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記入力データを保持可能であって、
前記プロセッサは、
前記入力部へのテスト信号の送信によって、前記入力部の異常の有無を診断する入力診断部と、
前記入力データに冗長符号を付与し入力メッセージとする入力メッセージ処理を実施するメッセージ処理部と、
前記入力データに対する演算処理と、前記第１メモリ領域への前記入力メッセージの書き込みとを含む第１処理過程と、前記入力データに対する演算処理と、前記第２メモリ領域への前記入力メッセージの書き込みとを含む第２処理過程と、を実行する実行制御部と、
前記第１メモリ領域に書き込まれた前記入力メッセージと、前記第２メモリ領域に書き込まれた前記入力メッセージとを照合する結果照合部と、
安全制御のための演算処理を実施する安全演算装置へ前記入力メッセージを送信する送信部と、を備え、
前記送信部は、前記入力診断部における診断、および前記結果照合部における照合の少なくともいずれかにおいて異常が検出された場合に、前記入力メッセージの送信を停止させることを特徴とする安全入力装置。
【請求項８】
出力メッセージのプログラム処理を実施するプロセッサと、
前記出力メッセージに含まれる出力データを保持するメモリと、
前記出力データに応じた出力信号を出力する出力部と、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記出力データを保持可能であって、
前記プロセッサは、
安全制御のための演算処理を実施する安全演算装置からの前記出力メッセージを受信する受信部と、
前記出力メッセージに含まれる冗長符号を基に前記出力メッセージの内容を検査する出力メッセージ処理を実施するメッセージ処理部と、
前記出力メッセージの内容の検査と、前記第１メモリ領域への前記出力データの書き込みとを含む第１処理過程と、前記出力メッセージの内容の検査と、前記第２メモリ領域への前記出力データの書き込みとを含む第２処理過程と、を実行する実行制御部と、
前記第１メモリ領域に書き込まれた前記出力データと、前記第２メモリ領域に書き込まれた前記出力データとを照合する結果照合部と、
前記出力部へのテスト信号の送信によって、前記出力部の異常の有無を診断する出力診断部と、を備え、
前記出力部は、前記出力診断部における診断、および前記結果照合部における照合の少なくともいずれかにおいて異常が検出された場合に、前記出力信号の出力を停止させることを特徴とする安全出力装置。
【請求項９】
安全コントローラへの入力信号の入力を受け付ける安全入力装置と、
安全制御のための演算処理を実施する安全演算装置と、
前記安全コントローラから出力信号を出力する安全出力装置と、を有し、
前記安全演算装置は、
前記安全入力装置からの入力データのプログラム処理を実施するプロセッサと、
前記プロセッサへ入力される前記入力データ、および前記プログラム処理の結果である出力データを保持するメモリと、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記入力データおよび前記出力データを保持可能であって、
前記プロセッサは、
前記第１メモリ領域に書き込まれた前記入力データの冗長検査および前記プログラム処理と、前記プログラム処理の結果として前記第１メモリ領域に書き込まれた前記出力データへの冗長符号の付与と、を含む第１処理過程と、前記第２メモリ領域に書き込まれた前記入力データの冗長検査および前記プログラム処理と、前記プログラム処理の結果として前記第２メモリ領域に書き込まれた前記出力データへの冗長符号の付与と、を含む第２処理過程と、を実行する実行制御部と、
前記第１処理過程における前記冗長符号の付与を経た前記出力データと、前記第２処理過程における前記冗長符号の付与を経た前記出力データとを照合する結果照合部と、
前記プロセッサおよび前記メモリの故障の有無を演算によって診断する演算診断部と、
前記実行制御部における前記入力データの前記冗長検査、前記安全出力装置における前記出力データの冗長検査、前記結果照合部における照合、および前記演算診断部における診断の少なくともいずれかにおいて異常が検出された場合に、前記出力データの出力を停止させる異常処理部と、を有することを特徴とする安全コントローラ。
【請求項１０】
安全コントローラへの入力信号の入力を受け付ける安全入力装置と、
安全制御のための演算処理を実施する安全演算装置と、
前記安全コントローラから出力信号を出力する安全出力装置と、を有し、
前記安全入力装置は、
前記入力信号を数値化し、入力データとする入力部と、
前記入力データのプログラム処理を実施するプロセッサと、
前記プロセッサへ入力される前記入力データを保持するメモリと、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記入力データを保持可能であって、
前記プロセッサは、
前記入力部へのテスト信号の送信によって、前記入力部の異常の有無を診断する入力診断部と、
前記入力データに冗長符号を付与し入力メッセージとする入力メッセージ処理を実施するメッセージ処理部と、
前記入力データに対する演算処理と、前記第１メモリ領域への前記入力メッセージの書き込みとを含む第１処理過程と、前記入力データに対する演算処理と、前記第２メモリ領域への前記入力メッセージの書き込みとを含む第２処理過程と、を実行する実行制御部と、
前記第１メモリ領域に書き込まれた前記入力メッセージと、前記第２メモリ領域に書き込まれた前記入力メッセージとを照合する結果照合部と、
前記安全演算装置へ前記入力メッセージを送信する送信部と、を備え、
前記送信部は、前記入力診断部における診断、および前記結果照合部における照合の少なくともいずれかにおいて異常が検出された場合に、前記入力メッセージの送信を停止させることを特徴とする安全コントローラ。
【請求項１１】
安全コントローラへの入力信号の入力を受け付ける安全入力装置と、
安全制御のための演算処理を実施する安全演算装置と、
前記安全コントローラから出力信号を出力する安全出力装置と、を有し、
前記安全出力装置は、
前記安全演算装置からの出力メッセージのプログラム処理を実施するプロセッサと、
前記出力メッセージに含まれる出力データを保持するメモリと、
前記出力データに応じた出力信号を出力する出力部と、を有し、
前記メモリは、第１メモリ領域と、前記第１メモリ領域とは異なるアドレスの第２メモリ領域と、のそれぞれに、前記出力データを保持可能であって、
前記プロセッサは、
前記安全演算装置からの前記出力メッセージを受信する受信部と、
前記出力メッセージに含まれる冗長符号を基に前記出力メッセージの内容を検査する出力メッセージ処理を実施するメッセージ処理部と、
前記出力メッセージの内容の検査と、前記第１メモリ領域への前記出力データの書き込みとを含む第１処理過程と、前記出力メッセージの内容の検査と、前記第２メモリ領域への前記出力データの書き込みとを含む第２処理過程と、を実行する実行制御部と、
前記第１メモリ領域に書き込まれた前記出力データと、前記第２メモリ領域に書き込まれた前記出力データとを照合する結果照合部と、
前記出力部へのテスト信号の送信によって、前記出力部の異常の有無を診断する出力診断部と、を備え、
前記出力部は、前記出力診断部における診断、および前記結果照合部における照合の少なくともいずれかにおいて異常が検出された場合に、前記出力信号の出力を停止させることを特徴とする安全コントローラ。
【手続補正１１】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
2014041829.tif 000015
【国際調査報告】
2014041829.tif 000016
2014041829.tif 000017
2014041829.tif 000018
2014041829.tif 000019