(57)【要約】【課題】  リアルタイム性と同時性を損なうことなく、制御装置の通信バッファメモリにソフトエラー対策を施す。【解決手段】  算出部１０２は、通信部１０１またはＣＰＵ１１０から、それぞれ監視データＲＸＤまたは制御データＴＸＤを取得すると、当該データを基にＥＣＣを算出し、当該ＥＣＣをその算出元となったデータと対応付けて記憶部１０３に書き込む。次いで、算出部１０２は、当該データを通信バッファメモリ１２０に書き込む。検証部１０４は、ＣＰＵ１１０からの読み出し指示を契機として、ＣＰＵ１１０により指示されたデータを通信バッファメモリ１２０から読み出す。次いで、検証部１０４は、当該データに対応するＥＣＣを記憶部１０３から読み出し、当該ＥＣＣを基に当該データについてソフトエラーの有無の検証を行い、発生したソフトエラーが１ビットのビット誤りであればその訂正を行う。【選択図】図３
2016194839.tif 000002
【特許請求の範囲】
【請求項１】
受信した監視データを通信バッファメモリに書き込み、当該監視データを用いて制御対象機器を制御する制御データを演算し前記通信バッファメモリに書き込む制御装置において、
前記通信バッファメモリに書き込む監視データまたは制御データについて、少なくとも１ビットのエラーを訂正することができるエラーチェックコードを算出する算出部と、
前記算出部により算出されたエラーチェックコードを、算出元のデータと対応付けて保持する記憶部と、
前記通信バッファメモリからデータを読み出す際に当該データに対応するエラーチェックコードを前記記憶部から読み出し、当該エラーチェックコードを用いてエラーの有無の検証を行い、エラーの訂正を行う検証部と
を有することを特徴とする制御装置。
【請求項２】
前記エラーチェックコードの算出元のデータを複製して前記通信バッファメモリに書き込む書き込み部を有し、
前記検証部は、複製元のデータと複製されたデータの少なくとも一方に対して当該複製元のデータに対応するエラーチェックコードを用いた検証を行う
ことを特徴とする請求項１に記載の制御装置。
【請求項３】
前記検証部は、前記複製元のデータに対する検証と前記複製されたデータに対する検証を並列に実行することを特徴とする請求項２に記載の制御装置。
【請求項４】
前記検証部は、前記複製元のデータと複製されたデータのうち、予め定められた方についての検証を行い、当該検証により検出されたエラーが訂正不能なものである場合に、他方についての検証を行う
ことを特徴とする請求項２に記載の制御装置。
【請求項５】
通信バッファメモリに書き込むデータについて、少なくとも１ビットのエラーを訂正することができるエラーチェックコードを算出する算出部と、
前記算出部により算出されたエラーチェックコードを、算出元のデータと対応付けて保持する記憶部と、
前記通信バッファメモリからのデータの読み出し指示を与えられたことを契機として、前記通信バッファメモリから該当データを読み出すとともに、当該データに対応するエラーチェックコードを前記記憶部から読み出し、当該エラーチェックコードを用いてエラーの有無についての検証を行い、エラーの訂正を行う検証部と、
を有し、
前記検証部による検証を経たデータを前記読み出し指示の送信元へ出力することを特徴とする通信インタフェース回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システムにおけるソフトエラーの検出および訂正を行う技術に関する。
【背景技術】
【０００２】
工場や各種プラント等の産業施設に設置される制御システムには、産業施設内に設置されたセンサからの監視データの収集やその収集結果に応じて電動機等の駆動制御を行う制御装置が含まれている。このような制御装置としては、ＤＣＳ（Distributed Control System：分散型制御システム或いは分散型制御装置）やプログラマブルロジックコントローラ（以下、ＰＬＣ）が用いられる。一般的なＦＡ（Factory Automation）システムでは制御装置としてＰＬＣが用いられることが多く、高信頼性を要求されるプラント設備では制御装置としてＤＣＳが用いられることが多い。
【０００３】
この種の制御システムでは、制御装置は所定のアプリケーションを実行することにより、センサから監視データを収集し、当該データを基に制御対象機器を制御するための制御データを生成するという処理を繰り返し実行する。この繰り返し実行される処理の単位はタクトと呼ばれる。制御装置は半導体メモリなどの内部メモリを有しており、この内部メモリには、上記アプリケーションを実現するためのプログラムが予め記憶されている。
【０００４】
内部メモリに記憶されたプログラムやデータ、或いは制御装置のＣＰＵ（Central Processing Unit）内部のキャッシュメモリに格納されたデータの構成ビットのうちの１または複数が、中性子線やα線の影響で反転する現象が知られている。この現象はソフトエラーと呼ばれている。制御装置が実行するプログラムにソフトエラーが発生すると、誤った処理が為され、制御の継続に支障が生じる場合がある。このため、プログラム等を格納するメモリやＣＰＵ内部のキャッシュメモリには、例えば冗長ビットの付加や属性情報の付加等のソフトエラー対策が施されている。
【０００５】
ソフトエラーはＣＰＵ内部のキャッシュメモリ等に格納されたデータ等だけでなく、通信バッファメモリに格納されたデータにも発生する場合がある。通信バッファメモリとは、電動機などの制御対象機器やセンサ等とのデータ通信用に制御装置に設けられているバッファメモリである。例えば、センサ等から制御装置へ送信された監視データは一旦通信バッファメモリに格納され、その後、ＣＰＵによって読み出される、といった具合である。通信バッファメモリに格納された監視データにソフトエラーが発生した場合、誤った制御データが生成される可能性があり、制御の継続に支障が生じる虞がある。通信バッファメモリの一例としてはＳＲＡＭが挙げられる。このような通信バッファメモリに関するソフトエラーの検出を目的とした技術としては、特許文献１に開示の技術が挙げられる。
【０００６】
特許文献１には、ソフトエラー検出機能を備えた通信用ＦＰＧＡ（Field Programmable Gate
Array）が開示されている。ＣＰＵがメインメモリから送信データを読み出し、当該データをこのＦＰＧＡ内部のバッファメモリに書き込むと、ＦＰＧＡは当該送信データと所定の保持データとの排他的論理和（第１の排他的論理和）を算出し、当該第１の排他的論理和を示す排他的論理和データを記憶する。送信データの送信時、ＦＰＧＡはバッファメモリから読み出した送信データと第１の排他的論理和との排他的論理和（第２の排他的論理和）を算出する。そして、ＦＰＧＡは算出した第２の排他的論理和と保持データとを比較し、当該第２の排他的論理和が保持データと一致しない場合にはエラーが発生していると判断し送信データの送信を停止する。
【０００７】
また、外部機器から受信した受信データがＦＰＧＡ内部のバッファメモリに書き込まれると、ＦＰＧＡは当該受信データと所定の保持データとの排他的論理和（第１の排他的論理和）を算出し、当該第１の排他的論理和を示す排他的論理和データを記憶する。ＣＰＵがバッファメモリから受信データを読み出すと、ＦＰＧＡは当該受信データと第１の排他的論理和との排他的論理和（第２の排他的論理和）を算出する。そして、ＦＰＧＡは算出した第２の排他的論理和と保持データとを比較し、当該第２の排他的論理和が保持データと一致しない場合にはエラーが発生していると判断し受信データを破棄する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１４−８６９２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
制御システムに要求される特性として、リアルタイム性と同時性がある。リアルタイム性とは、次のタクトに跨ることなく１つのタクト内で監視データの受信から制御データの送信までを実行することを言う。また、同時性とは、複数の監視データを一括して処理する場合、いずれか１つでも監視データが欠けることにより制御データの生成が妨げられることがないよう、１つのタクト内で受信すべき複数の監視データをすべて受信することを言う。制御システムには、リアルタイム性と同時性の充足が要求されるのであるが、制御システムの通信バッファメモリについてのソフトエラー対策として特許文献１に開示の技術を用いると、リアルタイム性と同時性の確保に支障が生じる虞がある。その理由は以下の通りである。
【００１０】
特許文献１に開示のＦＰＧＡは、送信データにソフトエラーを検出するとその送信を停止する。このため、通信バッファメモリに格納された制御データにソフトエラーが発生すると、制御対象機器への制御データの送信は停止する。この場合、このとき実行中のタクトでは制御データは制御対象機器に送信されず、リトライ、すなわち、次の周期のタクトでの制御データの送信が実行される。つまり、リアルタイム性が損なわれる。
【００１１】
また、特許文献１に開示のＦＰＧＡは、受信データにソフトエラーを検出すると当該受信データを破棄する。このため、タクトの実行時、通信バッファメモリに格納された処理対象である複数の監視データの一部にソフトエラーが発生すると、この監視データは破棄される。この場合、処理に必要な監視データの一部がＣＰＵに転送されず、同時性が損なわれる。
【００１２】
この発明は、以上のような事情に鑑みてなされたものであり、リアルタイム性と同時性を損なうことなく、制御システムの通信バッファメモリにソフトエラー対策を施すことを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために本発明は、受信した監視データを通信バッファメモリに書き込み、当該監視データを用いて制御対象機器を制御する制御データを演算し前記通信バッファメモリに書き込む制御装置に以下の算出部と記憶部と検証部とを設けることを特徴とする。算出部は、通信バッファメモリに書き込む監視データまたは制御データについて、少なくとも１ビットのエラーを訂正することができるエラーチェックコードを算出する。記憶部は、算出部により算出されたエラーチェックコードを、算出元のデータと対応付けて保持する。検証部は、通信バッファメモリからデータを読み出す際に当該データに対応するエラーチェックコードを記憶部から読み出し、当該エラーチェックコードを用いてエラーの有無の検証を行い、エラーの訂正を行う。
【００１４】
本発明によれば、エラーチェックコードが１ビットの誤りの訂正および２ビットのビット誤りの検出を可能なものであれば、通信バッファメモリ内のデータにソフトエラーが発生しても、１ビットのビット誤りであれば、検証部によってそのビット誤りは訂正される。このため、本発明を制御システムに適用すると、通信バッファメモリ内のデータ（監視対象機器から受信した監視データおよび制御対象機器に送信する制御データ）にソフトエラーが発生しても１ビットのビット誤りであればタクトの実行時にリトライが発生することがなく、１つのタクトで所定の処理を完結することができる。したがって、従来技術に比べてリアルタイム性を確保することができる。また、１つのタクトにおいて複数の監視データを用いて制御データを演算する場合、当該処理に必要な監視データの一部にソフトエラーが発生したとしても、１ビットのビット誤りであれば、制御データの演算に必要な監視データの全てを揃えることができるので、従来技術に比べて同時性を確保することができる。
【００１５】
より好ましい態様においては、上記制御装置は、通信バッファメモリに書き込むデータを複製して通信バッファメモリに書き込む書き込み部を備え、検証部は、複製元のデータと複製されたデータの少なくとも一方に対して上記検証を行うことを特徴とする。詳細については後述するが、本態様によれば、複製元のデータと複製されたデータの両方に訂正不能なソフトエラーが発生しない限り、リトライを行う必要はない。したがって、上記複製を行わない態様に比較してより高い確度でリアルタイム性および同時性を確保することが可能になる。なお、検証部における検証態様としては、複製元のデータに対する検証と複製されたデータに対する検証を並列に実行する態様と、両者を直列に実行する態様とが考えられる。両者を直列に実行する態様とは、複製元のデータおよび複製されたデータのうち、予め定められた一方について上記検証を実行し、当該検証により訂正不能なエラーが検出された場合に他方についての上記検証を実行する態様である。
【００１６】
上記課題を解決するために本発明は、制御システムにおける制御装置用の通信インタフェース回路として、以下の算出部、記憶部、および検証部を備える通信インタフェース回路を提供する。算出部は、通信バッファメモリに書き込むデータについて、少なくとも１ビットのエラーを訂正することができるエラーチェックコードを算出する。通信インタフェース回路が通信バッファメモリに書き込むデータの具体例としては、センサ等から受信して制御装置のＣＰＵへ引き渡す監視データと、当該ＣＰＵから受け取って制御対象機器へ送信する制御データが挙げられる。記憶部は、算出部により算出されたエラーチェックコードをその算出元となったデータと対応付けて保持する。検証部は、通信バッファメモリからのデータの読み出し指示を与えられたことを契機として、通信バッファメモリから該当データを読み出すとともに、当該データに対応するエラーチェックコードを記憶部から読み出し、当該エラーチェックコードを用いてエラーの有無の検証を行い、エラーの訂正を行う。そして、本通信インタフェース回路は、検証部による検証を経たデータを読み出し指示の送信元へ出力する。従来の制御装置における通信インタフェース回路を本発明の通信インタフェース回路に置き換えることで、当該制御装置を本発明の制御装置として機能させることが可能になる。
【発明の効果】
【００１７】
この発明によれば、リアルタイム性と同時性を損なうことなく、制御システムの通信バッファメモリにソフトエラー対策を施すことが可能になる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１実施形態である制御装置１０を含む制御システム１の構成例を示す図である。
【図２】同実施形態における制御装置１０の構成を示す図である。
【図３】同実施形態における通信インタフェース回路１００の構成を示す図である。
【図４】本発明の第２実施形態である制御装置２０の構成を示す図である。
【図５】同実施形態において、算出部２０２が実行するＥＣＣ算出処理およびデータ格納処理の内容を示すフローチャートである。
【図６】同実施形態において、検証部２０４が実行するソフトエラー検証処理の内容を示すフローチャートである。
【図７】本発明の第３実施形態である制御装置３０の構成を示す図である。
【図８】選択部３０５が実行するデータ選択処理の内容を示すフローチャートである。
【発明を実施するための形態】
【００１９】
＜第１実施形態＞
図１は、本発明の第１実施形態である制御装置１０を含む制御システム１の構成例を示す図である。この制御システム１は、例えば工場や各種プラント等の産業施設において構築される。図１に示すように、制御システム１は、制御装置１０、Ｉ／Ｏ機器２０＿ｎ（ｎ＝１〜Ｎ：Ｎは任意の自然数）、監視対象機器３０＿ｎおよび制御対象機器４０＿ｎを有している。なお、図１以降の各図では、ＩＯ機器は、「Ｉ／Ｏ」と略記されている。
【００２０】
監視対象機器３０＿ｎと制御対象機器４０＿ｎは、Ｉ／Ｏ機器２０＿ｎを介して制御装置１０に接続されている。Ｉ／Ｏ機器２０＿ｎ、監視対象機器３０＿ｎおよび制御対象機器４０＿ｎは、従来の制御システムにおいて一般的に用いられているものと特段に変わるところはなく、概略は以下の通りである。監視対象機器３０＿ｎは、例えば産業施設内に設置されたセンサであり、監視データを収集し、当該監視データを制御装置１０へ送信する。制御対象機器４０＿ｎは、例えば電動機であり、制御装置１０から制御データを受信すると、当該制御データに基づいた駆動を行う。Ｉ／Ｏ機器２０＿ｎは、制御装置１０と監視対象機器３０＿ｎとの間のデータ通信、或いは制御装置１０と制御対象機器４０＿ｎとの間のデータ通信を中継する中継装置である。Ｉ／Ｏ機器２０＿ｎは、監視対象機器３０＿ｎから送信された監視データを受信すると、当該監視データを制御装置１０に転送する。また、Ｉ／Ｏ機器２０＿ｎは、制御装置１０から送信された制御データを受信すると、当該制御データを制御対象機器４０＿ｎに転送する。
【００２１】
制御装置１０は、例えばＰＬＣである。制御装置１０は、Ｉ／Ｏ機器２０＿ｎを介して監視対象機器３０＿ｎから監視データを受信すると、当該監視データを基に制御データを演算し、当該制御データをＩ／Ｏ機器２０＿ｎを介して制御対象機器４０＿ｎに送信する処理を実行する。
【００２２】
前述したように、監視データをＩ／Ｏ機器２０＿ｎから収集した後制御データを制御対象機器４０＿ｎに送信するまでの間に制御装置１０が実行する一連の処理はタクトと呼ばれる。このタクトを所定の周期で繰り返し実行させることで、各制御対象機器４０＿ｎの駆動制御が実現される。本実施形態では、制御装置１０に本発明の特徴を顕著に示す処理を実行させることで、リアルタイム性や同時性を損なうことなく、通信バッファメモリに対するソフトエラー対策を行うことが可能になっている。以下、制御装置１０の詳細について説明する。
【００２３】
図２は、制御装置１０の構成を示す図である。図２に示すように、制御装置１０は、通信インタフェース回路１００、ＣＰＵ１１０、通信バッファメモリ１２０を有している。
【００２４】
通信バッファメモリ１２０は、例えばＳＲＡＭ（Static Random Access Memory）であり、監視データおよび制御データを格納するために設けられたものである。本実施形態では、１つのタクトにおいて複数の監視対象機器３０＿ｎおよび複数の制御対象機器４０＿ｎとデータ通信する場合があり、そのため、通信バッファメモリ１２０として大容量のＳＲＡＭが採用されている。
【００２５】
ＣＰＵ１１０は、制御装置１０の制御中枢である。ＣＰＵ１１０は、図示しない内部メモリに格納されているプログラムにしたがってタクトを周期的に実行する。より詳細には、ＣＰＵ１１０は、通信バッファメモリ１２０に格納された監視データを基に制御データを演算し、その演算結果の制御データを通信バッファメモリ１２０に格納する動作をタクト毎に実行する。
【００２６】
通信インタフェース回路１００は、例えばＦＰＧＡやＡＳＩＣ（Application Specific Integrated Circuit）であり、ＣＰＵ１１０と通信バッファメモリ１２０との間のデータ授受を仲介するとともに外部機器（監視対象機器３０＿ｎや制御対象機器４０＿ｎ）と通信バッファメモリ１２０との間のデータ授受を仲介するデータ通信機能を有している。より詳細に説明すると、通信インタフェース回路１００は、監視対象機器３０＿ｎから受信した監視データを通信バッファメモリ１２０に書き込むとともに、ＣＰＵ１１０からの指示に応じて当該監視データを通信バッファメモリ１２０から読み出してＣＰＵ１１０に与える。また通信インタフェース回路１００は、ＣＰＵ１１０から与えられた制御データを通信バッファメモリ１２０に書き込むとともに、ＣＰＵ１１０からの指示に応じて当該制御データを通信バッファメモリ１２０から読み出し、その宛先の制御対象機器４０＿ｎへ送信する。加えて、通信インタフェース回路１００は、通信バッファメモリ１２０に格納された監視データおよび制御データについてのソフトエラーの検出や訂正を行うための機能を有する。以下、通信インタフェース回路１００の詳細を説明する。
【００２７】
図３は、通信インタフェース回路１００の構成を示す図である。図３には、理解を容易にするため、通信インタフェース回路１００に加えて、ＣＰＵ１１０および通信バッファメモリ１２０が記載されている。通信バッファメモリ１２０は、監視データを記憶するためのリングバッファを形成する受信データ領域１２１＿ｋ（ｋ＝１〜ｍ：ｍは任意の自然数）と制御データを記憶するためのリングバッファを形成する送信データ領域１２２＿ｋ（ｋ＝１〜ｍ：ｍは任意の自然数）を有する。図３に示すように、通信インタフェース回路１００は、通信部１０１、算出部１０２、記憶部１０３および検証部１０４を有している。通信部１０１、算出部１０２および検証部１０４は、通信インタフェース回路１００が有するＣＰＵ（図示略）により実現されるソフトウェアモジュールである。また、記憶部１０３は、通信インタフェース回路１００が有するメモリ（図示略）である。この図において、実線で示す矢印は監視データ（ＲＸＤ）の転送過程を示し、破線で示す矢印は制御データ（ＴＸＤ）の転送過程を示す。以下、図３を参照しながら、通信インタフェース回路１００の各部の機能について、監視データの転送過程および制御データの転送過程に即して説明する。
【００２８】
まず、監視データの転送過程について説明する。通信部１０１は、Ｉ／Ｏ機器２０＿ｎを介して監視対象機器３０＿ｎから監視データＲＸＤを受信すると、当該監視データを算出部１０２に与える。
【００２９】
算出部１０２は、通信部１０１から監視データＲＸＤを受け取ると、当該監視データを基にエラーチェックコード（以下、ＥＣＣという）を算出する。本実施形態では、１ビットのビット誤りの訂正および２ビットのビット誤りの検出が可能なＥＣＣが採用されている。なお、ＥＣＣ算出アルゴリズムについては周知のものを用いるようにすれば良い。また、２ビット以上のビット誤りを訂正可能なＥＣＣを用いても良い。算出部１０２は、監視データＲＸＤを基に算出したＥＣＣを記憶部１０３に書き込む。記憶部１０３は、受信データ領域１２１＿ｋに格納される監視データを基に算出されたＥＣＣを格納するための受信ＥＣＣ領域１３１＿ｋを有する。また、記憶部１０３は、送信データ領域１２２＿ｋに格納される制御データを基に算出されたＥＣＣを格納するための送信ＥＣＣ領域１３２＿ｋを有する。つまり、記憶部１０３には、ＥＣＣの算出元のデータと対応付けて当該ＥＣＣが記憶される。監視データの転送過程では、算出部１０２は、記憶部１０３の受信ＥＣＣ領域１３１＿ｋにＥＣＣを書き込み、通信バッファメモリ１２０の受信データ領域１２１＿ｋに監視データＲＸＤを書き込む。
【００３０】
監視データＲＸＤおよびＥＣＣの書込みが完了すると、通信インタフェース回路１００はその旨をＣＰＵ１１０に通知する。この通知には、監視データＲＸＤの格納場所を示す情報（アドレス）が含まれている。例えば、監視データＲＸＤが受信データ領域１２１＿ｍに格納されているのであれば、上記通知には、受信データ領域１２１＿ｍの先頭アドレスが含まれている。ＣＰＵ１１０は、この通知に応じて通信インタフェース回路１００に監視データＲＸＤの読み出しを指示する。
【００３１】
ＣＰＵ１１０からの読み出し指示を契機として、検証部１０４はＣＰＵ１１０により指示された監視データＲＸＤを通信バッファメモリ１２０から読み出す。本動作例では、検証部１０４は通信バッファメモリ１２０の受信データ領域１２１＿ｍから監視データＲＸＤを読み出す。検証部１０４は、受信データ領域１２１＿ｍから監視データＲＸＤを読み出すと、記憶部１０３から当該監視データに対応するＥＣＣ（すなわち、受信ＥＣＣ領域１３１＿ｍに格納されているＥＣＣ）を読み出す。検証部１０４は、監視データＲＸＤおよびこれに対応するＥＣＣを読み出すと、当該ＥＣＣを基にこの監視データにソフトエラーが発生しているか否か検証する。検証部１０４は、監視データＲＸＤにソフトエラーを検出しなかった場合、当該監視データをＣＰＵ１１０に与える。ＣＰＵ１１０は、検証部１０４からソフトエラーの検証処理を経た監視データＲＸＤを受け取ると、当該監視データを基に制御データＴＸＤを生成する。
【００３２】
検証部１０４は、監視データＲＸＤに１ビットのソフトエラーを検出した場合、ＥＣＣによりこのソフトエラーを訂正する。ここで、検証部１０４がソフトエラーの訂正を行うためには、訂正の処理に要する時間の分だけ処理時間が必要となる。そこで、検証部１０４がソフトエラーを検出すると、通信インタフェース回路１００は検証部１０４によるソフトエラーの訂正が完了するまでの間、ＣＰＵ１１０にＷＡＩＴ信号を送信しＣＰＵ１１０にその間の処理を待機させる。これにより、検証部１０４はソフトエラーの訂正を行うための処理時間を確保することができる。検証部１０４が訂正後の監視データをＣＰＵ１１０に与えると、通信インタフェース回路１００はＣＰＵ１１０にＲＤＹ信号を送信することで、ＣＰＵ１１０に処理を再開させる。これに対して、監視データＲＸＤに２ビットのソフトエラーを検出した場合には、検証部１０４は、例えばその旨をＣＰＵ１１０に通知する。この場合、ＣＰＵ１１０は、リトライを実行して次の周期のタクトで上述した処理を実行する。
【００３３】
本実施形態によると、通信バッファメモリ１２０に格納されている監視データにソフトエラーが発生したとしても、１ビットのビット誤りであれば検証部１０４によりそのビット誤りは訂正され、訂正後の監視データがＣＰＵ１１０に与えられる。このため、１ビットのビット誤りに起因するリトライが発生することはない。
【００３４】
次に、制御データＴＸＤの転送過程について説明する。ＣＰＵ１１０は、監視データＲＸＤを基に制御データＴＸＤを生成すると、当該制御データを算出部１０２に与える。
【００３５】
ＣＰＵ１１０から制御データＴＸＤを受け取ったことを契機として、算出部１０２は当該制御データを基にＥＣＣを算出する。制御データの転送過程では、算出部１０２は、記憶部１０３の送信ＥＣＣ領域１３２＿ｍに当該ＥＣＣを書き込み、通信バッファメモリ１２０の送信データ領域１２２＿ｍに制御データＴＸＤを書き込む。
【００３６】
制御データＴＸＤおよびＥＣＣの書込みが完了すると、通信インタフェース回路１００はその旨をＣＰＵ１１０に通知する。この通知には、送信データ領域１２２＿ｍ（すなわち、制御データＴＸＤの格納場所）を示す情報（アドレス等）が含まれている。ＣＰＵ１１０は、この通知に応じて通信インタフェース回路１００に制御データＴＸＤの送信を指示する。
【００３７】
ＣＰＵ１１０からの送信指示を契機として、検証部１０４はＣＰＵ１１０により指示された制御データＴＸＤを通信バッファメモリ１２０から読み出す。本動作例では、検証部１０４は通信バッファメモリ１２０の送信データ領域１２２＿ｍから制御データＴＸＤを読み出す。検証部１０４は、送信データ領域１２２＿ｍから制御データＴＸＤを読み出すと、記憶部１０３から当該制御データに対応するＥＣＣ（すなわち、送信ＥＣＣ領域１３２＿ｍに格納されているＥＣＣ）を読み出す。検証部１０４は、制御データＴＸＤおよびこれに対応するＥＣＣを読み出すと、当該ＥＣＣを基にこの制御データにソフトエラーが発生しているか否か判定する。検証部１０４は、制御データＴＸＤにソフトエラーを検出しなかった場合、当該制御データを通信部１０１に与える。通信部１０１は、検証部１０４からソフトエラーの検証処理を経た制御データＴＸＤを受け取ると、当該制御データを制御対象機器４０＿ｎへ宛てて送信する。
【００３８】
一方、検証部１０４が制御データＴＸＤにソフトエラーを検出した場合、通信インタフェース回路１００はＣＰＵ１１０にＷＡＩＴ信号を送信し、検証部１０４が当該ソフトエラーの訂正を行うための処理時間を確保する。
【００３９】
検証部１０４は、制御データＴＸＤに１ビットのソフトエラーを検出した場合、ＥＣＣによりこのソフトエラーを訂正し、訂正後の制御データＴＸＤを通信部１０１に与える。その後、通信インタフェース回路１００はＣＰＵ１１０にＲＤＹ信号を送信し、ＣＰＵ１１０に処理を再開させる。これに対して、制御データＴＸＤに２ビットのソフトエラーを検出した場合には、検証部１０４は、例えばその旨をＣＰＵ１１０に通知する。この場合、ＣＰＵ１１０は、リトライを実行して次の周期のタクトで上述した処理を実行する。
【００４０】
本実施形態によると、通信バッファメモリ１２０に格納されている制御データにソフトエラーが発生したとしても、１ビットのビット誤りであればそのビット誤りは検証部１０４によって訂正され、訂正後の制御データが制御対象機器４０＿ｎへ宛てて送信される。このため、１ビットのビット誤りに起因するリトライが発生することはない。
【００４１】
以上説明したように、本実施形態によれば、ＣＰＵ１１０が実行するタクトの過程で、通信バッファメモリ１２０に格納された監視データ或いは制御データに１ビットのビット誤りが発生したとしても、ＣＰＵ１１０は監視データの受信から制御データの送信までの一連の処理を中断することなく完結させることができる。この結果、１ビットのビット誤りに起因するリトライを行う必要はなく、従来に比べてリアルタイム性を確保することができる。
【００４２】
また、ＣＰＵ１１０が複数の監視データを一括して処理する場合、当該処理に必要な監視データの一部にソフトエラーが発生したとしても、１ビットのビット誤りであればリトライを行う必要がなく、従来に比べて同時性を確保することができる。
【００４３】
＜第２実施形態＞
図４は、本発明の第２実施形態である制御装置２０の構成を示す図である。図４では、図３と同一の構成要素には同一の符号が付されている。図３と図４を対比すれば明らかなように、本実施形態による制御装置２０は、通信インタフェース回路１００に代えて通信インタフェース回路２００を、通信バッファメモリ１２０に代えて通信バッファメモリ２２０を有する点において第１実施形態による制御装置１０と異なる。以下、第１実施形態との相違点である通信インタフェース回路２００および通信バッファメモリ２２０を中心に説明する。
【００４４】
第１実施形態による通信インタフェース回路１００は、２ビットのビット誤りを検出した場合には、ＣＰＵ１１０にその旨を通知しソフトエラーの検証を終了した。これに対して、本実施形態による通信インタフェース回路２００は、２ビットのビット誤りを検出した場合であっても、ソフトエラーの検証を継続して実行する。通信インタフェース回路２００は、算出部１０２に代えて算出部２０２を、検証部１０４に代えて検証部２０４を有する点において通信インタフェース回路１００と異なる。算出部２０２は、通信バッファメモリ２２０に監視データＲＸＤ或いは制御データＴＸＤを書き込むだけでなく、当該監視データ或いは制御データをＳ個（Ｓは任意の自然数）複製し、複製された監視データ或いは制御データについても通信バッファメモリ２２０に書き込むという点において、算出部１０２と異なる。以下では、通信バッファメモリ２２０に書き込まれる１＋Ｓ個の監視データを監視データＲＸＤ＿ｓ（ｓ＝０〜Ｓ）と表記する。ここで、監視データＲＸＤ＿０は、複製元の監視データであり、監視データＲＸＤ＿ｓ（ｓ＝１〜Ｓ）は複製された監視データである。同様に、通信バッファメモリ２２０に書き込まれる１＋Ｓ個の制御データを制御データＴＸＤ＿ｓ（ｓ＝０〜Ｓ）と表記する。ここで、制御データＴＸＤ＿０は、複製元の制御データであり、制御データＴＸＤ＿ｓ（ｓ＝１〜Ｓ）は複製された制御データである。検証部２０４は、監視データＲＸＤ＿０或いは制御データＴＸＤ＿０について、当該監視データ或いは制御データに対応するＥＣＣを用いてソフトエラーの検証を行うだけでなく、監視データＲＸＤ＿ｓ（ｓ＝１〜Ｓ）或いは制御データＴＸＤ＿ｓ（ｓ＝１〜Ｓ）についても当該ＥＣＣを用いてソフトエラーの検証を行う場合があるという点において、検証部１０４と異なる。
【００４５】
通信バッファメモリ２２０は、監視データＲＸＤ＿ｓ（ｓ＝０〜Ｓ）を記憶するためのリングバッファを形成する受信データ領域２２１＿ｋ（ｋ＝１〜ｍ：ｍは任意の自然数）を有する。受信データ領域２２１＿ｋは１＋Ｓ個の記憶領域に等分されており、ｓ番目の記憶領域には監視データＲＸＤ＿ｓが書き込まれる。また、通信バッファメモリ２２０は、制御データＴＸＤ＿ｓ（ｓ＝０〜Ｓ）を記憶するためのリングバッファを形成する送信データ領域２２２＿ｋ（ｋ＝１〜ｍ：ｍは任意の自然数）を有する。送信データ領域２２２＿ｋは１＋Ｓ個の記憶領域に等分されており、ｓ番目の記憶領域には制御データＴＸＤ＿ｓが書き込まれる。
【００４６】
以下、図５および図６を参照しながら監視データの転送過程における制御装置２０の動作について説明する。図５は、算出部２０２が実行するＥＣＣ算出処理およびデータ格納処理の内容を示すフローチャートである。図５に示すように、算出部２０２は、通信部１０１から監視データＲＸＤを受け取ると（ステップＳＡ１０）、当該監視データを基にＥＣＣを算出し、算出したＥＣＣを記憶部１０３の受信ＥＣＣ領域１３１＿ｍに書き込む（ステップＳＡ２０）。また、算出部２０２は監視データＲＸＤを複製し、監視データＲＸＤ＿ｓ（ｓ＝０〜Ｓ）を通信バッファメモリ２２０の受信データ領域２２１＿ｍに書き込む（ステップＳＡ３０）。
【００４７】
監視データおよびＥＣＣの書込みが完了すると、通信インタフェース回路２００はその旨をＣＰＵ１１０に通知する。この通知にも、監視データＲＸＤ＿ｓの格納場所を示す情報（アドレス）が含まれている。本動作例では、監視データＲＸＤ＿ｓは受信データ領域２２１＿ｍに格納されているため、上記通知には、受信データ領域２２１＿ｍの先頭アドレスが含まれている。ＣＰＵ１１０は、この通知を受け取ると、通信インタフェース回路２００に受信データ領域２２１＿ｍに格納された監視データの読み出しを指示する。
【００４８】
図６は、監視データの読み出しを指示されたことを契機として検証部２０４が実行するソフトエラー検証処理の内容を示すフローチャートである。検証部２０４は、記憶部１０３からＣＰＵ１１０により指示された監視データＲＸＤに対応するＥＣＣ（すなわち、受信ＥＣＣ領域１３１＿ｍに格納されているＥＣＣ）を読み出す（ステップＳＢ１０）。検証部２０４は、受信ＥＣＣ領域１３１＿ｍからＥＣＣを読み出すと、検証対象である監視データを示すインデックスｓに“０（すなわち、受信データ領域２２１＿ｍのｓ番目（ｓ＝０）の記憶領域に格納された監視データＲＸＤ＿０を示すインデックス）”を設定する（ステップＳＢ２０）。次いで、検証部２０４は、インデックスｓに対応する監視データ（すなわち、監視データＲＸＤ＿ｓ）を通信バッファメモリ２２０から読み出す（ステップＳＢ３０）。次いで、検証部２０４は、ステップＳＢ１０にて読み出したＥＣＣを基にステップＳＢ３０にて読み出した監視データにソフトエラーが発生しているか否かを判定する（ステップＳＢ４０）。ステップＳＢ４０の判定結果が「ＮＯ」の場合、検証部２０４は当該監視データをＣＰＵ１１０に与える（ステップＳＢ７０）。ＣＰＵ１１０は、検証部２０４からソフトエラーの検証処理を経た監視データを受け取ると、当該監視データを基に制御データＴＸＤを生成する。
【００４９】
ステップＳＢ４０の判定結果が「ＹＥＳ」の場合、検証部２０４は監視データＲＸＤ＿ｓに発生したソフトエラーが１ビットのビット誤りであるか否かを判定する（ステップＳＢ５０）。ステップＳＢ５０の判定結果が「ＹＥＳ」の場合、通信インタフェース回路２００はＣＰＵ１１０にＷＡＩＴ信号を送信し、検証部２０４が当該ソフトエラーの訂正を行うための処理時間を確保する。そして、検証部２０４はＥＣＣによりこのソフトエラーを訂正し（ステップＳＢ６０）、訂正後の監視データをＣＰＵ１１０に与える（ステップＳＢ７０）。
【００５０】
ステップＳＢ５０の判定結果が「ＮＯ」である場合、検証部２０４はインデックスｓの値がＳであるか否かを判定する（ステップＳＢ８０）。ステップＳＢ８０の判定結果が「ＮＯ」である場合、検証部２０４はインデックスｓに“１”を加算し（ステップＳＢ９０）、ステップＳＢ３０以降の処理を再度実行する。
【００５１】
これに対して、ステップＳＢ８０の判定結果が「ＹＥＳ」である場合には、受信データ領域２２１＿ｍに格納されている１＋Ｓ個の監視データのすべてについてソフトエラーの検証処理が実行されているので、検証部２０４はソフトエラーの検証処理を終了する。この場合、検証部２０４は、例えばその旨をＣＰＵ１１０に通知する。この通知に応じて、ＣＰＵ１１０はリトライを実行して次の周期のタクトで上述した処理を実行する。
【００５２】
以上、監視データの転送過程における制御装置２０の動作を説明したが、制御データの転送過程における制御装置２０の動作についても、監視データの転送過程において説明したことがそのまま当てはまる。すなわち、算出部２０２がＣＰＵ１１０から制御データＴＸＤを受け取った後、通信部１０１がソフトエラーの検証処理を経た制御データＴＸＤ＿ｓ（ｓ＝０〜Ｓ）を制御対象機器４０＿ｎへ宛てて送信するまでの間に制御装置２０により実行される処理は、上述した監視データの転送過程における制御装置２０の動作の説明において、「監視データＲＸＤ」を「制御データＴＸＤ」と、「監視データＲＸＤ＿ｓ」を「制御データＴＸＤ＿ｓ」と、「受信データ領域２２１＿ｍ」を「送信データ領域２２２＿ｍ」と、「受信ＥＣＣ領域１３１＿ｍ」を「送信ＥＣＣ領域１３２＿ｍ」と読み替えることにより実現される。
【００５３】
本実施形態でも第１実施形態と同様の効果が得られる。加えて、本実施形態によれば、ＣＰＵ１１０が実行するタクトの過程で、通信バッファメモリ２２０に格納された監視データ或いは制御データに２ビット以上のビット誤りが発生したとしても、当該監視データ或いは制御データを複製した１または複数の監視データ或いは制御データのうち、いずれか１の監視データ或いは制御データに２ビット以上のビット誤りが発生していなければ、当該監視データおよび制御データを用いて、ＣＰＵ１１０は監視データの受信から制御データの送信までに行う一連の処理を中断することなく完結させることができる。つまり、本実施形態によれば、第１実施形態よりも高い確度でリアルタイム性を確保することができる。
【００５４】
また、ＣＰＵ１１０が複数の監視データを一括して処理する場合、当該処理に必要な監視データの一部に２ビット以上のビット誤りが発生したとしても、当該監視データを複製した１または複数の監視データのうち、いずれか１の監視データに２ビット以上のビット誤りが発生していなければリトライを行う必要がなく、第１実施形態よりも高い確度で同時性を確保することができる。
【００５５】
また、本実施形態では、監視データ或いは制御データの複製数に応じてリトライの発生頻度を制御することが可能であり、システムに要求されるリアルタイム性および同時性の確保の程度に応じて上記複製数を定めるようにすれば良い。
【００５６】
＜第３実施形態＞
図７は、本発明の第３実施形態である制御装置３０の構成を示す図である。図７では、図４と同一の構成要素には同一の符号が付されている。図４と図７を対比すれば明らかなように、本実施形態による制御装置３０は、通信インタフェース回路２００に代えて通信インタフェース回路３００を、通信バッファメモリ２２０に代えて通信バッファメモリ３２０Ａおよび３２０Ｂを有する点において第２実施形態による制御装置２０と異なる。以後、通信バッファメモリ３２０Ａおよび３２０Ｂを区別しない場合には、通信バッファメモリ３２０と表記する。以下、第２実施形態との相違点である通信インタフェース回路３００および通信バッファメモリ３２０を中心に説明する。
【００５７】
第２実施形態による通信インタフェース回路２００では、監視データの転送過程において、複製元の監視データに訂正不能なソフトエラーを検出した場合、通信バッファメモリ２２０から複製された監視データを読み出し、当該監視データについてソフトエラーの検証処理を実行した。同様に、制御データの転送過程において、複製元の制御データに訂正不能なソフトエラーを検出した場合、通信バッファメモリ２２０から複製された制御データを読み出し、当該制御データについてソフトエラーの検証処理を実行した。これに対して、本実施形態による通信インタフェース回路３００では、監視データの転送過程において、複製元の監視データに対するソフトエラーの検証処理と複製された監視データに対するソフトエラーの検証処理を並列に実行する。同様に、制御データの転送過程において、複製元の制御データに対するソフトエラーの検証処理と複製された制御データに対するソフトエラーの検証処理を並列に実行する。
【００５８】
通信インタフェース回路３００は、通信部１０１に代えて通信部３０１を、算出部２０２に代えて算出部３０２を、検証部２０４に代えて検証部３０４Ａおよび３０４Ｂを有し、さらに上記各部に加えて選択部３０５を有する点において通信インタフェース回路２００と異なる。以後、検証部３０４Ａおよび３０４Ｂを区別しない場合には、検証部３０４と表記する。通信部３０１は、ソフトエラーの検証処理を経た制御データを選択部３０５から受け取るという点においてのみ、通信部１０１と異なる。算出部３０２は、監視データＲＸＤ或いは制御データＴＸＤをＳ個（本実施形態ではＳ＝１）複製するという点では算出部２０２と共通するが、複製元の監視データおよび制御データを通信バッファメモリ３２０Ａに、複製された監視データおよび制御データを通信バッファメモリ３２０Ｂに書き込むという点において、算出部２０２と異なる。以下では、通信バッファメモリ３２０Ａに書き込まれる監視データおよび制御データを、それぞれ監視データＲＸＤ＿Ａおよび制御データＴＸＤ＿Ａと表記する。同様に、通信バッファメモリ３２０Ｂに書き込まれる監視データおよび制御データを、それぞれＲＸＤ＿Ｂおよび制御データＴＸＤ＿Ｂと表記する。検証部３０４Ａは、複製元の監視データおよび制御データについて、ＥＣＣを用いてソフトエラーの検証処理を実行する。検証部３０４Ｂは、複製された監視データおよび制御データについて上記処理を実行する。
【００５９】
選択部３０５は、例えばマルチプレクサである。選択部３０５は、検証部３０４Ａ或いは検証部３０４Ｂのいずれか一方からソフトエラーの検証処理を経た監視データを受け取った場合、当該監視データをＣＰＵ１１０に与える。選択部３０５は、検証部３０４Ａと検証部３０４Ｂの両方からソフトエラーの検証処理を経た監視データを受け取った場合、検証部３０４Ａから受け取った監視データをＣＰＵ１１０に与える。同様に、選択部３０５は、検証部３０４Ａ或いは検証部３０４Ｂのいずれか一方からソフトエラーの検証処理を経た制御データを受け取った場合、当該制御データを通信部３０１に与える。選択部３０５は、検証部３０４Ａと検証部３０４Ｂの両方からソフトエラーの検証処理を経た制御データを受け取った場合、検証部３０４Ａから受け取った制御データを通信部３０１に与える。
【００６０】
通信バッファメモリ３２０Ａは、複製元の監視データを記憶するためのリングバッファを形成する受信データ領域３２１Ａ＿ｋ（ｋ＝１〜ｍ：ｍは任意の自然数）と複製元の制御データを記憶するためのリングバッファを形成する送信データ領域３２２Ａ＿ｋ（ｋ＝１〜ｍ：ｍは任意の自然数）を有する。同様に、通信バッファメモリ３２０Ｂは、複製された監視データを記憶するためのリングバッファを形成する受信データ領域３２１Ｂ＿ｋ（ｋ＝１〜ｍ：ｍは任意の自然数）と複製された制御データを記憶するためのリングバッファを形成する送信データ領域３２２Ｂ＿ｋ（ｋ＝１〜ｍ：ｍは任意の自然数）を有する。本実施形態では、通信バッファメモリ３２０Ａおよび通信バッファメモリ３２０Ｂは、各々別個のメモリチップとして実装されている。このため、通信バッファメモリ３２０Ａと通信バッファメモリ３２０Ｂを１個のメモリチップで実装する場合に比較して故障に対する耐性が高くなる。なお、通信バッファメモリ３２０Ａと通信バッファメモリ３２０Ｂを１個のメモリチップで実装しても勿論良い。
【００６１】
以下、図８を参照しながら監視データの転送過程における制御装置３０の動作について説明する。算出部３０２は、通信部３０１から監視データＲＸＤを受け取ると、当該監視データを基にＥＣＣを算出し、算出したＥＣＣを記憶部１０３の受信ＥＣＣ領域１３１＿ｋ（ｋ＝１〜ｍ）のいずれかに書き込む。本動作例では、算出部３０２は、当該ＥＣＣを受信ＥＣＣ領域１３１＿ｍに書き込む。また、算出部３０２は監視データＲＸＤを複製し、複製元の監視データＲＸＤ＿Ａを通信バッファメモリ３２０Ａの受信データ領域３２１Ａ＿ｋのいずれかに書き込む。本動作例では、算出部３０２は、受信ＥＣＣ領域１３１＿ｍに対応する受信データ領域、すなわち受信データ領域３２１Ａ＿ｍに当該監視データを書き込む。同様に、算出部３０２は、複製された監視データＲＸＤ＿Ｂを受信データ領域３２１Ｂ＿ｍに書き込む。
【００６２】
監視データおよびＥＣＣの書込みが完了すると、通信インタフェース回路３００はその旨をＣＰＵ１１０に通知する。この通知にも、監視データＲＸＤ＿ＡおよびＲＸＤ＿Ｂの格納場所を示す情報（アドレス）が含まれている。本動作例では、監視データＲＸＤ＿ＡおよびＲＸＤ＿Ｂは、それぞれ受信データ領域３２１Ａ＿ｍおよび３２１Ｂ＿ｍに格納されているため、上記通知には、受信データ領域３２１Ａ＿ｍおよび３２１Ｂ＿ｍの先頭アドレスが含まれている。ＣＰＵ１１０は、この通知を受け取ると、通信インタフェース回路３００に受信データ領域３２１Ａ＿ｍに格納された監視データＲＸＤ＿Ａおよび受信データ領域３２１Ｂ＿ｍに格納された監視データＲＸＤ＿Ｂの読み出しを指示する。
【００６３】
ＣＰＵ１１０からの読み出し指示を契機として、検証部３０４Ａおよび３０４Ｂにより以下に示す処理が並列に実行される。検証部３０４Ａ（３０４Ｂ）はＣＰＵ１１０により指示された監視データＲＸＤ＿Ａ（ＲＸＤ＿Ｂ）を通信バッファメモリ３２０Ａ（３２０Ｂ）から読み出す。本動作例では、検証部３０４Ａ（３０４Ｂ）は通信バッファメモリ３２０Ａ（３２０Ｂ）の受信データ領域３２１Ａ＿ｍ（３２１Ｂ＿ｍ）から監視データＲＸＤ＿Ａ（ＲＸＤ＿Ｂ）を読み出す。検証部３０４Ａ（３０４Ｂ）は、受信データ領域３２１Ａ＿ｍ（３２１Ｂ＿ｍ）から監視データＲＸＤ＿Ａ（ＲＸＤ＿Ｂ）を読み出すと、記憶部１０３から当該監視データに対応するＥＣＣ（すなわち、受信ＥＣＣ領域１３１＿ｍに格納されているＥＣＣ）を読み出す。検証部３０４Ａ（３０４Ｂ）は、監視データＲＸＤ＿Ａ（ＲＸＤ＿Ｂ）およびこれに対応するＥＣＣを読み出すと、当該ＥＣＣを基にこの監視データにソフトエラーが発生しているか否かを検証する。検証部３０４Ａ（３０４Ｂ）は、監視データＲＸＤ＿Ａ（ＲＸＤ＿Ｂ）にソフトエラーを検出しなかった場合、当該監視データを選択部３０５に与える。検証部３０４Ａ（３０４Ｂ）は、監視データＲＸＤ＿Ａ（ＲＸＤ＿Ｂ）に１ビットのビット誤りを検出した場合は、選択部３０５にその旨を通知し、その後、選択部３０５からソフトエラーの訂正指示を受信した場合に限り、当該ソフトエラーの訂正を行い、訂正後の監視データを選択部３０５に与える。検証部３０４Ａ（３０４Ｂ）は、監視データＲＸＤ＿Ａ（ＲＸＤ＿Ｂ）に２ビットのビット誤りを検出した場合には、選択部３０５にその旨を通知する。
【００６４】
図８は、選択部３０５が実行するデータ選択処理の内容を示すフローチャートである。選択部３０５は、検証部３０４Ａと検証部３０４Ｂの少なくとも一方から監視データを取得したか否かを判定する（ステップＳＣ１０）。本動作例では、検証部３０４Ａと検証部３０４Ｂの両方から、ソフトエラーの発生を通知された場合に、ステップＳＣ１０の判定結果は「ＮＯ」となる。ステップＳＣ１０の判定結果が「ＹＥＳ」の場合、選択部３０５は取得した監視データの個数が１個か否かを判定する（ステップＳＣ２０）。ステップＳＣ２０の判定結果が「ＹＥＳ」の場合、すなわち、監視データＲＸＤ＿Ａ或いは監視データＲＸＤ＿Ｂの一方にソフトエラーが発生し、他方の監視データだけが選択部３０５に与えられた場合、選択部３０５は当該監視データをＣＰＵ１１０に与える（ステップＳＣ３０）。ＣＰＵ１１０は、選択部３０５からソフトエラーの検証処理を経た監視データを受け取ると、当該監視データを基に制御データＴＸＤを生成する。一方、ステップＳＣ２０の判定結果が「ＮＯ」の場合、すなわち、監視データＲＸＤ＿ＡおよびＲＸＤ＿Ｂにソフトエラーが発生していなく、両方の監視データが選択部３０５に与えられた場合、選択部３０５は監視データＲＸＤ＿ＡをＣＰＵ１１０に与える（ステップＳＣ４０）。本動作例では、この場合、監視データＲＸＤ＿ＡをＣＰＵ１１０に与えたが、監視データＲＸＤ＿Ｂを与えても勿論良い。
【００６５】
ステップＳＣ１０の判定結果が「ＮＯ」の場合、選択部３０５は検証部３０４Ａと検証部３０４Ｂの両方から、２ビットのビット誤りが発生した旨の通知を受けたか否かを判定する（ステップＳＣ５０）。ステップＳＣ５０の判定結果が「ＹＥＳ」の場合、すなわち監視データＲＸＤ＿ＡおよびＲＸＤ＿Ｂのいずれにも２ビットのビット誤りが検出された場合、選択部３０５はＣＰＵ１１０にその旨を通知し（ステップＳＣ６０）、処理を終了する。この場合、ＣＰＵ１１０は、リトライを実行して次の周期のタクトで上述した処理を実行する。
【００６６】
ステップＳＣ５０の判定結果が「ＮＯ」の場合、すなわち監視データＲＸＤ＿ＡおよびＲＸＤ＿Ｂの両方に１ビットのビット誤りが検出された場合、或いは監視データＲＸＤ＿ＡまたはＲＸＤ＿Ｂの一方に１ビットのビット誤りが検出され、他方に２ビットのビット誤りが検出された場合、選択部３０５はＣＰＵ１１０にＷＡＩＴ信号を送信し（ステップＳＣ７０）、当該ビット誤りを検出した検証部がソフトエラーの訂正を行うための処理時間を確保する。その後、選択部３０５は、１ビットのビット誤りを検出した検証部に対して、このソフトエラーの訂正を指示し（ステップＳＣ８０）、当該指示を受けた検証部は、当該ソフトエラーを訂正し、訂正後の監視データを選択部３０５に与える。なお、検証部３０４Ａと検証部３０４Ｂの両方が１ビットのビット誤りを検出した場合、選択部３０５は検証部３０４Ａと検証部３０４Ｂのいずれか一方にソフトエラーの訂正を指示する。本動作例では、選択部３０５は検証部３０４Ａにソフトエラーの訂正を指示する。選択部３０５は、訂正指示を送信した検証部から当該ソフトエラーの訂正を経た監視データを受け取ると、当該監視データをＣＰＵ１１０に与える（ステップＳＣ９０）。
【００６７】
以上、監視データの転送過程における制御装置３０の動作を説明したが、制御データの転送過程における制御装置３０の動作についても、監視データの転送過程において説明したことがそのまま当てはまる。すなわち、算出部３０２がＣＰＵ１１０から制御データＴＸＤを受け取った後、選択部３０５がソフトエラーの検証処理を経た制御データＴＸＤ＿Ａ或いはＴＸＤ＿Ｂを通信部３０１へ宛てて送信するまでの間に制御装置３０により実行される処理は、上述した監視データの転送過程における制御装置３０の動作の説明において、「監視データＲＸＤ＿Ａ（監視データＲＸＤ＿Ｂ）」を「制御データＴＸＤ＿Ａ（制御データＴＸＤ＿Ｂ）」と、「受信データ領域３２１Ａ＿ｍ（３２１Ｂ＿ｍ）」を「送信データ領域３２２Ａ＿ｍ（３２２Ｂ＿ｍ）」と、「受信ＥＣＣ領域１３１＿ｍ」を「送信ＥＣＣ領域１３２＿ｍ」と読み替えることにより実現される。
【００６８】
本実施形態でも第２実施形態と同様の効果が得られる。加えて、本実施形態によれば、複製元の監視データ或いは制御データに対するソフトエラーの検証処理と複製された監視データ或いは制御データに対するソフトエラーの検証処理が並列に実行されるため、複製元のデータと複製されたデータの両方について検証処理を実行することが必要な場合、例えば、第２実施形態において先に検証される方のデータに２ビット以上のソフトエラーが発生している場合に、処理に要する時間を第２実施形態よりも短くすることができる。
【００６９】
また、本実施形態によると、監視データＲＸＤ＿Ａ或いは監視データＲＸＤ＿Ｂのいずれか一方にソフトエラーが発生しても、他方の監視データにソフトエラーが発生していなければ、ＷＡＩＴ信号をＣＰＵに送信する必要はなく、ソフトエラーの訂正を行うための処理時間の確保に起因するタクトの処理時間の長期化を防止することができる。この場合、ソフトエラーを検出した検証部に当該ソフトエラーを訂正させる必要はなく、ソフトエラーの訂正処理を省略できる分だけ当該検証部に掛かる負荷が低減される。
【００７０】
＜他の実施形態＞
以上、この発明の各実施形態について説明したが、この発明には他にも実施形態が考えられる。例えば、以下の通りである。
（１）上記第２実施形態の通信インタフェース回路２００或いは上記第３実施形態の通信インタフェース回路３００では、算出部２０２或いは算出部３０２が監視データ或いは制御データを複製したが、別途監視データ或いは制御データを複製して通信バッファメモリに書き込む書き込み部を設けても良い。これにより、算出部２０２或いは算出部３０２が実行する処理の負荷を低減させることができる。
【００７１】
（２）上記各実施形態では、制御システムの制御装置への本発明の適用例を説明したが、通信インタフェース回路１００、２００或いは３００を単体で製造販売しても良い。また、上記実施形態では、本発明の特徴を顕著に示す算出部、および検証部をソフトウェアにより実現したが電子回路などのハードウェアにより実現しても良く、また、上記書き込み部についても同様である。また、上記第３実施形態の選択部をソフトウェアにより実現しても良い。
【００７２】
（３）上記第３実施形態の通信インタフェース回路３００では、監視データ或いは制御データを１個複製した。しかし、複製する監視データ或いは制御データの個数はこれに限定されるものではなく、２個以上複製してもよい。なお、監視データ或いは制御データを２個以上複製する場合は、その増加に応じた分だけ通信バッファメモリ３２０および検証部３０４を新たに設ける必要があることは言うまでもない。
【００７３】
（４）上記各実施形態では、制御装置へ監視データを送信する監視対象機器と制御装置による制御対象の制御対象機器とが別体の装置であったが、監視対象機器と制御対象機器とが一体となった装置であっても勿論良い。例えば、制御対象機器にその駆動状態等を検出するためのセンサが内蔵されている場合などである。要は、受信した監視データを通信バッファメモリに書き込み、当該監視データを用いて制御対象機器を制御する制御データを演算し前記通信バッファメモリに書き込む制御装置であれば、本発明を適用可能である。
【符号の説明】
【００７４】
１…制御システム、１０，２０，３０…制御装置、２０＿１〜２０＿ｎ…Ｉ／Ｏ機器、３０＿１〜３０＿ｎ…監視対象機器、４０＿１〜４０＿ｎ…制御対象機器、１００，２００，３００…通信インタフェース回路、１１０…ＣＰＵ、１２０，２２０，３２０…通信バッファメモリ、１０１，３０１…通信部、１０２，２０２，３０２…算出部、１０３…記憶部、１０４，２０４，３０４…検証部、１２１＿ｋ，２２１＿ｋ，３２１＿ｋ…受信データ領域、１２２＿ｋ，２２２＿ｋ，３２２＿ｋ…送信データ領域、１３１＿ｋ…受信ＥＣＣ領域、１３２＿ｋ…送信ＥＣＣ領域、ＲＸＤ，ＲＸＤ＿ｓ，ＲＸＤ＿Ａ，ＲＸＤ＿Ｂ…監視データ、ＴＸＤ，ＴＸＤ＿ｓ，ＴＸＤ＿Ａ，ＴＸＤ＿Ｂ…制御データ。
【図１】
2016194839.tif 000003
【図２】
2016194839.tif 000004
【図３】
2016194839.tif 000005
【図４】
2016194839.tif 000006
【図５】
2016194839.tif 000007
【図６】
2016194839.tif 000008
【図７】
2016194839.tif 000009
【図８】
2016194839.tif 000010