(57)【要約】【課題】本発明は、少なくともプログラマブル回路部と、プログラマブル回路部に接続される演算処理部とを含み、ユーザプログラムを演算処理部で実行可能な制御装置において、不要な停止を防止することができる制御装置およびその制御方法を提供する。【解決手段】本発明は、異常判定部１５がＦＰＧＡ部２０での機能ユニット（機能部）と対応するＦＰＧＡ部２０での位置情報（位置番号）を含むマップ情報に基づき、エラー検出部２３で検出したソフトエラーの位置と機能ユニットとの対応を判定する。さらに、プロセッサ部１０は、異常判定部１５においてソフトエラーの位置が機能ユニットの未使用部であると判定した場合、制御装置１００の運転を継続し、異常判定部１５においてソフトエラーの位置が機能ユニットの使用部（例えば、多数決回路部および使用回路部など）であると判定した場合、予め定められた処理を実行する。【選択図】図２
2018128820.tif 000002
【特許請求の範囲】
【請求項１】
少なくともプログラマブル回路部と、前記プログラマブル回路部に接続される演算処理部とを含み、ユーザプログラムを前記演算処理部で実行可能な制御装置であって、
前記プログラマブル回路部は、
前記プログラマブル回路部において構成される機能部のコンフィグレーションデータを格納する格納部と、
前記格納部のソフトエラーを検出するエラー検出部とを備え、
前記演算処理部は、
前記プログラマブル回路部での前記機能部と対応する前記プログラマブル回路部での位置情報を含むマップ情報を記憶する記憶部と、
前記マップ情報に基づき、前記エラー検出部で検出したソフトエラーの位置と前記機能部との対応を判定する異常判定部とを備え、
前記演算処理部は、
前記異常判定部において前記ソフトエラーの位置が前記機能部の未使用部であると判定した場合、前記制御装置の運転を継続し、
前記異常判定部において前記ソフトエラーの位置が前記機能部の使用部であると判定した場合、予め定められた処理を実行する、制御装置。
【請求項２】
前記予め定められた処理は、前記プログラマブル回路部を停止させる処理である、請求項１に記載の制御装置。
【請求項３】
前記予め定められた処理は、前記ソフトエラーの位置の前記機能部のみを停止させる縮退運転へ切替える処理である、請求項１に記載の制御装置。
【請求項４】
前記機能部は、冗長回路で構成された第１機能部と、非冗長回路で構成された第２機能部とを含み、
前記演算処理部は、
前記異常判定部において前記ソフトエラーの位置が前記第１機能部であると判定した場合に、前記ソフトエラーの位置の回路のみを停止させて継続運転させ、
前記異常判定部において前記ソフトエラーの位置が前記第２機能部であると判定した場合に、前記ソフトエラーの位置の前記機能部のみを停止させる縮退運転へ切替える処理を実行する、請求項１または請求項２に記載の制御装置。
【請求項５】
前記エラー検出部は、前記格納部を予め定められたブロックに分け、当該ブロック毎にソフトエラーを検出することが可能である、請求項１〜請求項４のいずれか１項に記載の制御装置。
【請求項６】
前記異常判定部は、過去に検出した前記ソフトエラーの位置であるか否かを考慮して、前記予め定められた処理を実行する、請求項１〜請求項５のいずれか１項に記載の制御装置。
【請求項７】
前記エラー検出部は、ＣＲＣ（Cyclic Redundancy Check）コードを用いてエラー検出を行う、請求項１〜請求項６のいずれか１項に記載の制御装置。
【請求項８】
前記プログラマブル回路部は、前記格納部のＳＲＡＭ（Static random access memory）にコンフィグレーションデータが格納されているＦＰＧＡ（Field-programmable gate array）である、請求項１〜請求項７のいずれか１項に記載の制御装置。
【請求項９】
少なくともプログラマブル回路部と、前記プログラマブル回路部に接続される演算処理部とを含み、ユーザプログラムを前記演算処理部で実行可能な制御装置の制御方法であって、
前記プログラマブル回路部は、前記プログラマブル回路部において構成される機能部のコンフィグレーションデータを格納する格納部と、前記格納部のソフトエラーを検出するエラー検出部とを備え、
前記演算処理部は、前記プログラマブル回路部での前記機能部と対応する前記プログラマブル回路部での位置情報を含むマップ情報を記憶する記憶部を備え、
前記制御方法は、
前記マップ情報に基づき、前記エラー検出部で検出したソフトエラーの位置と前記機能部との対応を判定するステップと、
前記ソフトエラーの位置が前記機能部の未使用部であると判定した場合、前記制御装置の運転を継続するステップと、
前記ソフトエラーの位置が前記機能部の使用部であると判定した場合、予め定められた処理を実行するステップとを含む、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、少なくともプログラマブル回路部と、プログラマブル回路部に接続される演算処理部とを含み、ユーザプログラムを演算処理部で実行可能な制御装置およびその制御方法に関する。
【背景技術】
【０００２】
多くの生産現場で使用される機械や設備は、典型的には、プログラマブルコントローラ（Programmable  Logic  Controller；以下、ＰＬＣとも称す）などの制御装置によって制御される。このような制御装置で実行される制御プログラムは、典型的には、ユーザーがサポート装置と称される情報処理装置を操作して設計することで生成される。このようなユーザーによって自由に設計・作成されるプログラムをユーザプログラムとも称す。
【０００３】
ＰＬＣでは、ＣＰＵ（Central Processing Unit）ユニットと、外部のスイッチやセンサからの信号入力および外部のリレーやアクチュエータへの信号出力を担当するＩ／Ｏ（Input/ Output）ユニットなどの機能ユニットとが含まれる。機能ユニットについては、ＦＰＧＡ（Field-programmable gate array）などのプログラマブル回路を用いて実現される場合がある。
【０００４】
しかし、プログラマブル回路は、ユーザーが独自に回路を構築できるメリットを有している一方で、コンフィグレーションデータを格納したＣｏｎｆｉｇＲＡＭ（以下、ＣＲＡＭとも称す）の情報が放射線等により変更されるソフトエラーが発生する可能性があるデメリットを有している。特に、ＣＲＡＭにＳＲＡＭ（Static random access memory）を利用する場合、ソフトエラーの発生する可能性が顕著である。
【０００５】
そのため、特許文献１には、ＦＰＧＡに対してソフトエラーを検出するために監視制御回路が設けられた構成が開示されている。具体的に、特許文献１に開示された監視制御回路では、ＦＰＧＡ内に設けたＣＲＡＭの記憶データのエラーの有無をチェックするチェック手段と、このチェック手段によりエラー有りを検出した時に、エラー検出情報と検出日時情報とを含めて記録する記録手段とを備え、記録手段に記録した時に、外部にエラー発生を表示することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−５２７８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１に開示された監視制御回路は、コンフィグレーションデータを格納するＣＲＡＭでのソフトエラーの発生の有無しか判定することしかできず、発生したソフトエラーが、プログラマブル回路において構成される機能ユニットとは無関係な位置であっても、制御装置を停止させる必要があった。そのため、制御装置の機能に影響しないソフトエラーが発生しても制御装置が停止し、不要な停止を発生させる問題があった。
【０００８】
本発明は、少なくともプログラマブル回路部と、プログラマブル回路部に接続される演算処理部とを含み、ユーザプログラムを演算処理部で実行可能な制御装置において、不要な停止を防止することができる制御装置およびその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明のある局面によれば、少なくともプログラマブル回路部と、プログラマブル回路部に接続される演算処理部とを含み、ユーザプログラムを演算処理部で実行可能な制御装置であって、プログラマブル回路部は、プログラマブル回路部において構成される機能部のコンフィグレーションデータを格納する格納部と、格納部のソフトエラーを検出するエラー検出部とを備え、演算処理部は、プログラマブル回路部での機能部と対応するプログラマブル回路部での位置情報を含むマップ情報を記憶する記憶部と、マップ情報に基づき、エラー検出部で検出したソフトエラーの位置と機能部との対応を判定する異常判定部とを備え、演算処理部は、異常判定部においてソフトエラーの位置が機能部の未使用部であると判定した場合、制御装置の運転を継続し、異常判定部においてソフトエラーの位置が機能部の使用部であると判定した場合、予め定められた処理を実行する。
【００１０】
好ましくは、予め定められた処理は、プログラマブル回路部を停止させる処理である。
好ましくは、予め定められた処理は、ソフトエラーの位置の機能部のみを停止させる縮退運転へ切替える処理である。
【００１１】
好ましくは、機能部は、冗長回路で構成された第１機能部と、非冗長回路で構成された第２機能部とを含み、演算処理部は、異常判定部においてソフトエラーの位置が第１機能部であると判定した場合に、ソフトエラーの位置の回路のみを停止させて継続運転させ、異常判定部においてソフトエラーの位置が第２機能部であると判定した場合に、ソフトエラーの位置の機能部のみを停止させる縮退運転へ切替える処理を実行する。
【００１２】
好ましくは、エラー検出部は、格納部を予め定められたブロックに分け、当該ブロック毎にソフトエラーを検出することが可能である。
【００１３】
好ましくは、異常判定部は、過去に検出したソフトエラーの位置であるか否かを考慮して、予め定められた処理を実行する。
【００１４】
好ましくは、エラー検出部は、ＣＲＣ（Cyclic Redundancy Check）コードを用いてエラー検出を行う。
【００１５】
好ましくは、プログラマブル回路部は、格納部のＳＲＡＭ（Static random access memory）にコンフィグレーションデータが格納されているＦＰＧＡ（Field-programmable gate array）である。
【００１６】
本発明のある別の局面によれば、少なくともプログラマブル回路部と、プログラマブル回路部に接続される演算処理部とを含み、ユーザプログラムを演算処理部で実行可能な制御装置の制御方法であって、プログラマブル回路部は、プログラマブル回路部において構成される機能部のコンフィグレーションデータを格納する格納部と、格納部のソフトエラーを検出するエラー検出部とを備え、演算処理部は、プログラマブル回路部での機能部と対応するプログラマブル回路部での位置情報を含むマップ情報を記憶する記憶部を備え、制御方法は、マップ情報に基づき、エラー検出部で検出したソフトエラーの位置と機能部との対応を判定するステップと、ソフトエラーの位置が機能部の未使用部であると判定した場合、制御装置の運転を継続するステップと、ソフトエラーの位置が機能部の使用部であると判定した場合、予め定められた処理を実行するステップとを含む。
【発明の効果】
【００１７】
本技術に係る制御装置によれば、異常判定部においてソフトエラーの位置が機能部の未使用部であるか、使用部であるかを判定することができるので、高信頼性を実現しつつ不要な停止を防止することができる。
【図面の簡単な説明】
【００１８】
【図１】本実施形態における制御装置のハードウェア構成の一例を表すブロック図である。
【図２】本実施形態におけるＦＰＧＡ部のソフトエラー検出の一例を説明するためのブロック図である。
【図３】本実施形態におけるエラー読出部のエラー情報の読み出しタイミングの一例を説明するためのタイミングチャートである。
【図４】本実施形態におけるマップ情報の一例を説明するための図である。
【図５】本実施形態における異常検出時の処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１９】
以下において、本実施の形態について図面を参照して詳しく説明する。なお、図中同一符号は同一または相当部分を示す。
【００２０】
図１は、本実施形態における制御装置のハードウェア構成の一例を表すブロック図である。本実施形態の制御装置１００は、一例として、ＰＬＣ（Programmable Logic Controller）を用いて実装される。制御装置１００は、予め格納されたプログラム（システムプログラムおよびユーザプログラムなど）を実行することで算出される指令値を、Ｉ／Ｏ（Input/ Output）ユニット３０を介して接続される制御対象（例えば、モータドライバなど）に与えるとともに、当該制御対象から状態値を取得する。すなわち、制御装置１００は、制御対象の状態値をフィードバックすることで、適切な指令値を動的に生成し、状況に応じて適切に制御できる。
【００２１】
また、制御装置１００は、図１に示すようにプロセッサ部１０と、ＦＰＧＡ部２０と、ＲＯＭ１１、ＲＡＭ１２と、Ｉ／Ｏユニット３０とを有する。制御装置１００内の各部品は、バスによって接続されている。
【００２２】
プロセッサ部１０は、ＲＯＭ１１やＲＡＭ１２に格納されたプログラムを実行することで、主に、制御対象の制御や動作に係る処理を行う。ＦＰＧＡ部（プログラマブル回路部）２０は、機能ユニットを構成し、プロセッサ部１０から入力されたデジタル値に対して特定の処理を実行する。ＲＯＭ１１は、制御装置１００を制御するプログラムや、プログラムの動作に必要なデータ等を格納する。ＲＡＭ１２は、プロセッサ部１０のワークエリアとして動作する。Ｉ／Ｏユニット３０は、制御対象との間のインターフェースを提供する。入出力機器２００は、タッチパネルのように、ユーザーに対して情報を提示し、ユーザーからの操作入力を受け付ける装置である。
【００２３】
ＦＰＧＡ部２０は、特定の処理を実行する機能ユニット（機能部）として構成するために、デバイス内にコンフィグレーションデータを書き込むコンフィグレーションを必要とする。一般的には、電源投入直後にＦＰＧＡ部２０に対してコンフィグレーションを行い、所望の回路動作が可能な機能ユニットを得ることになる。
【００２４】
しかし、ＦＰＧＡ部２０は、コンフィグレーションデータを格納したＣＲＡＭの情報が放射線等により変更されるソフトエラーが発生する可能性があるので、ＣＲＡＭのソフトエラーを検出するためにエラー検出を行っている。以下、ＦＰＧＡ部２０のソフトエラー検出について詳しく説明する。図２は、本実施形態におけるＦＰＧＡ部２０のソフトエラー検出の一例を説明するためのブロック図である。
【００２５】
ＦＰＧＡ部２０は、ＣＲＡＭ２１に格納されたコンフィグレーションデータをデバイス内に書き込むコンフィグレーションを行うことで、機能ユニットを構成するユーザー回路２２が設定される。ここで、ＣＲＡＭ２１は、例えばＳＲＡＭ（Static random access memory）である。
【００２６】
ＦＰＧＡ部２０は、ＣＲＡＭ２１のソフトエラーを検出するためエラー検出部２３を含んでいる。エラー検出部２３は、ＣＲＣ（Cyclic Redundancy Check）コードを用いてソフトエラーの検出を行う。具体的に、エラー検出部２３は、ＣＲＡＭ２１のフレーム毎にＣＲＣコードを付加し、フレーム単位でＣＲＣチェックを行うことでソフトエラーの検出を行っている。エラー検出部２３は、ＦＰＧＡ部２０に含まれる複数のフレームに対し順にＣＲＣコードの計算と付加されたＣＲＣコードが一致しているか否かのＣＲＣチェックを行い、全てのフレームのＣＲＣチェックが完了すると、再度最初のフレームからサイクリックにＣＲＣチェックを行う。なお、エラー検出部２３は、ＦＰＧＡ部２０に含まれる全てのフレームを１つの単位としてＣＲＣチェックを行うのではなく、予め定められたブロックに分け、当該ブロック毎にＣＲＣチェックを行ってもよい。例えば、機能ユニットＡを構成するブロックから機能ユニットＤを構成するブロックの４つのブロックにＦＰＧＡ部２０を分け、それぞれのブロック毎にＣＲＣチェックを行う。
【００２７】
ＦＰＧＡ部２０の全体でＣＲＡＭ２１のソフトエラーの有無を判定した場合、機能ユニットを構成していない未使用部でソフトエラーが発生していても区別ができない。そこで、本実施の形態では、ソフトエラーの発生したＦＰＧＡ部２０での位置（以下、ソフトエラーの位置とも称す）が、ＦＰＧＡ部２０で構成したどの機能ユニットに対応しているのかを特定している。具体的に、プロセッサ部１０の異常判定部１５は、マップ情報１６に基づき、エラー検出部２３で検出したソフトエラーの位置がどの機能ユニットに対応しているのかを判定している。
【００２８】
まず、エラー検出部２３は、ソフトエラーを検出した場合、エラー読出部２４を介して、検出したソフトエラーの内容を含むログ情報をユーザー回路２２のレジスタに書き込む。ログ情報には、検出したソフトエラーの内容として例えばソフトエラーの位置（発生個所のアドレス情報）やエラー発生状況フラグなどが含まれている。また、ログ情報は、１回目に検出したソフトエラーの内容がログ０に、２回目に検出したソフトエラーの内容がログ１に順に保持される。さらに、エラー検出部２３は、ソフトエラーの発生個数やプロセッサ部１０による確認状況などの情報を含むステータスをユーザー回路２２のレジスタに書き込む。
【００２９】
ここで、エラー読出部２４でのエラー情報の読み出しタイミングについて説明する。図３は、本実施形態におけるエラー読出部２４のエラー情報の読み出しタイミングの一例を説明するためのタイミングチャートである。図３に示すタイミングチャートでは、ＣＲＡＭ２１のＮフレームからＮ＋５フレームまでのタイミングが図示されている。そして、エラー検出部２３は、ＣＲＡＭ２１のＮ＋１フレーム、Ｎ＋２フレームおよびＮ＋４フレームでソフトエラーを検出している。エラー検出部２３は、ＣＲＡＭ２１のＮ＋１フレームでソフトエラーを検出しても、Ｎ＋１フレームのデータ読み出し期間ではエラー情報フラグがＯＮ状態とならない。エラー検出部２３では、次のＮ＋２フレームでＮ＋１フレームで検出したソフトエラーのエラー情報フラグがＯＮ状態になる。そのため、エラー読出部２４は、Ｎ＋２フレームのデータ読み出し期間にエラー検出部２３からＮ＋１フレームで検出したソフトエラーのエラー情報を読み出している。
【００３０】
同じように、エラー検出部２３は、ＣＲＡＭ２１のＮ＋２フレームでソフトエラーを検出しても、Ｎ＋２フレームのデータ読み出し期間ではエラー情報フラグがＯＮ状態とならない。エラー検出部２３では、次のＮ＋３フレームでＮ＋２フレームで検出したソフトエラーのエラー情報フラグがＯＮ状態になる。そのため、エラー読出部２４は、Ｎ＋３フレームのデータ読み出し期間にエラー検出部２３からＮ＋２フレームで検出したソフトエラーのエラー情報を読み出している。なお、ＣＲＡＭ２１のＮ＋３フレームではソフトエラーが検出されていないため、Ｎ＋４フレームのデータ読み出し期間にはエラー情報フラグがＯＦＦ状態となる。しかし、エラー読出部２４は、Ｎ＋４フレームのデータ読み出し期間に、Ｎ＋３フレームで検出したソフトエラーのエラー情報を読み出す必要がないため、Ｎ＋２フレームで検出したソフトエラーのエラー情報を継続して読み出し可能である。
【００３１】
図２に戻って、エラー検出部２３は、ソフトエラーを検出した場合、プロセッサ部１０に対して割込み通知を送信する。プロセッサ部１０は、割込み通知を受信すると、異常判定部１５での処理が開始される。異常判定部１５は、ＦＰＧＡ部２０の通信ＩＦ（Interface）２５を介して、ユーザー回路２２で保持しているログ情報を参照し、当該ログ情報からソフトエラーの位置を読み出す。異常判定部１５は、マップ情報１６に基づき、読み出したソフトエラーの位置がどの機能ユニットに対応しているのかを判定する。読み出したソフトエラーの位置には位置番号が含まれている。マップ情報１６は、この位置番号に対応した機能ユニットの情報が記憶されている。つまり、マップ情報１６は、ＦＰＧＡ部２０での機能ユニットと対応するＦＰＧＡ部２０での位置情報（位置番号）を含んでいる。
【００３２】
図４は、本実施形態におけるマップ情報１６の一例を説明するための図である。マップ情報１６には、０〜８の位置番号と、それに対応した機能ユニットの名称の情報が記憶されている。位置番号０は、対応する機能ユニットが未使用部である。位置番号１は、対応する機能ユニットが冗長回路部であり、より具体的には位置番号１Ａが冗長回路Ａ、位置番号１Ｂが冗長回路Ｂ、位置番号１Ｃが冗長回路Ｃとして機能している。位置番号２は、対応する機能ユニットが第１シリアル通信部である。位置番号３は、対応する機能ユニットが第２シリアル通信部である。位置番号４は、対応する機能ユニットが入出力制御部である。位置番号５は、対応する機能ユニットがローカル通信部である。位置番号６は、対応する機能ユニットがネットワーク通信部である。位置番号７は、対応する機能ユニットがタイマの機能部である。位置番号８は、対応する機能ユニットがその他の機能部である。
【００３３】
異常判定部１５は、マップ情報１６に基づき、読み出したソフトエラーの位置がどの機能ユニットに対応しているのかを判定した場合、その情報をユーザー回路２２で保持しているステータスに書き込み、ステータスを更新する。例えば、異常判定部１５は、読み出したログ情報において判定した機能ユニットが未使用部、冗長回路部および使用回路部のいずれであるのかの情報をステータスに書き込み、ステータスを更新する。なお、ステータスにおいて、異常判定部１５がまだ解析していないログ情報には未解析の情報が記憶されている。そのため、異常判定部１５は、ログ情報からソフトエラーの位置を読み出す際、ステータスを参照することでまだ解析していないログ情報を識別することができる。
【００３４】
マップ情報１６は、ユーザー回路２２に構成する機能ユニットを設定するためのコンフィグレーションデータを作成した際に形成され、プロセッサ部１０の記憶部（例えば、ＲＡＭ１２）に記憶される。
【００３５】
従来、ソフトエラーの位置がどの機能ユニットに対応しているのかを特定できなかったため、ＦＰＧＡの不正動作を防止する目的でソフトエラーが検出されれば機械的に制御装置を停止していた。そのため、機能に影響しないソフトエラー（未使用部で発生したソフトエラー）発生時も制御装置を停止し、不要な停止が発生することが問題であった。また、ソフトエラーが発生した時に不正動作の有無を診断プログラムなどで別途診断することで不要な停止を防止することは可能であるが、診断プログラムなどの不正動作の有無の検出率が低いことと、診断を実行するための期間が必要であることなどの問題があった。
【００３６】
そこで、前述したように、異常判定部１５がマップ情報１６に基づき、ソフトエラーの位置がどの機能ユニットに対応しているのかを判定できるようになったことで、不要な停止を防止することができる。具体的に、本実施形態における異常検出時の処理について以下に説明する。図５は、本実施形態における異常検出時の処理を説明するためのフローチャートである。
【００３７】
まず、プロセッサ部１０は、エラー検出部２３からソフトエラー検出の割込み通知を受信したか否かを判定する（ステップＳ５１）。割込み通知を受信していないと判定した場合（ステップＳ５１：ＮＯ）、プロセッサ部１０は、割込み通知の受信待ち状態を継続し、通常の処理を実行する。割込み通知を受信したと判定した場合（ステップＳ５１：ＹＥＳ）、プロセッサ部１０は、エラーＬＥＤ（図示せず）を点灯させるための点灯信号を出力する（ステップＳ５２）。エラーＬＥＤは、制御装置または制御装置に接続されたコントローラなどに設けられており、ユーザーにエラー発生を報知するための報知手段である。なお、報知手段は、エラーＬＥＤに限定されず、ＬＣＤなどの表示装置や、エラー音を出力するためのスピーカなどであってもよい。
【００３８】
次に、プロセッサ部１０（特に、異常判定部１５）は、ユーザー回路２２からログ情報を読み出し、マップ情報１６に基づいてエラー位置を特定する（ステップＳ５３）。ここで、エラー位置を特定するとは、エラー検出部２３で検出したソフトエラーの位置がＦＰＧＡ部２０で構成したどの機能ユニットに対応しているのかを特定することである。例えば、異常判定部１５は、ソフトエラーの位置が位置番号４（図４参照）であれば、特定したエラー位置の機能ユニット（機能部）が入出力制御部であると判定する。
【００３９】
次に、プロセッサ部１０（特に、異常判定部１５）は、特定したエラー位置が機能ユニット（機能部）として未使用部か否かを判定する（ステップＳ５４）。例えば、異常判定部１５は、ソフトエラーの位置が位置番号０（図４参照）であれば、特定したエラー位置の機能ユニット（機能部）が未使用部であると判定する。特定したエラー位置が機能ユニット（機能部）として未使用部である判定した場合（ステップＳ５４：ＹＥＳ）、プロセッサ部１０は、制御装置１００を継続運転させる（ステップＳ５５）。つまり、機能ユニット（機能部）として未使用部にソフトエラーが発生しても、制御装置１００としては正常に機能することができるため停止させずに継続運転を行い、ソフトエラーか発生しても不要な停止を防止している。なお、プロセッサ部１０は、ステップＳ５５で制御装置１００を継続運転させた後、異常検出時の処理を終了する。
【００４０】
次に、特定したエラー位置が機能ユニット（機能部）として未使用部でないと判定する場合（ステップＳ５４：ＮＯ）、プロセッサ部１０（特に、異常判定部１５）は、特定したエラー位置が機能ユニット（機能部）として冗長回路部か否かを判定する（ステップＳ５６）。ここで、冗長回路部とは、冗長化された回路部であり、同等の機能を有する回路が重複して形成されている。例えば、同等の機能を有する回路を２重化した２重化回路部や、同等の機能を有する回路を３重化して多数決を行う冗長回路部に含まれる。図４に示す例では、冗長回路Ａ、冗長回路Ｂ、および冗長回路Ｃに同等の機能を有する回路を３重化してある。
【００４１】
特定したエラー位置が機能ユニット（機能部）として冗長回路部である判定した場合（ステップＳ５６：ＹＥＳ）、プロセッサ部１０は、エラー位置の冗長回路の機能を停止させる（ステップＳ５７）。例えば、異常判定部１５は、ソフトエラーの位置が位置番号１Ａ（図４参照）であれば、特定したエラー位置の冗長回路Ａの機能を停止させる。プロセッサ部１０は、冗長回路部でソフトエラーか発生した場合、冗長回路部のうちソフトエラーか発生した回路のみを停止させる。つまり、冗長回路部が冗長回路Ａ、冗長回路Ｂ、および冗長回路Ｃと３重化した冗長回路部であれば、冗長回路Ａの機能のみを停止させ残りの冗長回路Ｂ、および冗長回路Ｃで処理を実行する。その後、プロセッサ部１０は、冗長回路Ｂ、および冗長回路Ｃで制御装置１００を継続運転させる（ステップＳ５５）。つまり、冗長回路部の一部の回路にソフトエラーが発生しても、制御装置１００としては正常に機能することができるため停止させずに継続運転を行い、ソフトエラーか発生しても不要な停止を防止している。なお、プロセッサ部１０は、ステップＳ５５で制御装置１００を継続運転させた後、異常検出時の処理を終了する。
【００４２】
次に、特定したエラー位置が機能ユニット（機能部）として冗長回路部でないと判定した場合（ステップＳ５６：ＮＯ）、プロセッサ部１０は、エラー位置の機能ユニット（機能部）を停止させる（ステップＳ５８）。例えば、異常判定部１５は、ソフトエラーの位置が位置番号２（図４参照）であれば、特定したエラー位置の機能ユニット（機能部）が第１シリアル通信部であると判定する。プロセッサ部１０は、ソフトエラーか発生した第１シリアル通信部の機能ユニット（機能部）のみを停止させる。
【００４３】
プロセッサ部１０は、ステップＳ５７でソフトエラーか発生した回路のみを停止させた状態で、制御装置１００を縮退運転させることができるか否かを判定する（ステップＳ５９）。具体的に、プロセッサ部１０では、ソフトエラーが発生した場合に縮退運転を「可」とするか「否」とするかの縮退運転情報をテーブルとして予め用意してあり、ステップＳ５８で停止させた機能ユニットに対応する縮退運転情報を当該テーブルから読み出して判定を行っている。なお、プロセッサ部１０では、ステップＳ５８で停止した機能ユニット（機能部）が無くても制御装置１００の動作を維持することが可能であり、他の機能ユニット（機能部）での処理に影響を与えない機能ユニットを縮退運転「可」としてテーブルに登録してある。例えば、第１シリアル通信部の機能ユニット（機能部）のみを停止させても、第２シリアル通信部と接続している機器に対する処理に影響を与えない場合、第１シリアル通信部の機能を縮退させて運転を継続させることができる。制御装置１００を縮退運転させることができる判定した場合（ステップＳ５９：ＹＥＳ）、プロセッサ部１０は、ステップＳ５７で一部の機能ユニット（機能部）を停止した状態で、制御装置１００を縮退運転させる（ステップＳ６０）。一部の機能ユニット（機能部）が利用できなくても、制御装置１００を縮退運転させることで、ソフトエラーか発生しても不要な停止を防止している。なお、プロセッサ部１０は、ステップＳ６０で制御装置１００を縮退運転させた後、異常検出時の処理を終了する。
【００４４】
次に、制御装置１００を縮退運転させることができない判定した場合（ステップＳ５９：ＮＯ）、プロセッサ部１０は、制御装置１００を停止させるためにバックアップ処理を開始する（ステップＳ６１）。例えば、異常判定部１５は、ソフトエラーの位置が位置番号５（図４参照）であれば、特定したエラー位置の機能ユニット（機能部）がローカル通信部であると判定する。プロセッサ部１０は、ローカル通信部でソフトエラーが発生した場合、制御装置１００の動作を維持することができないとしてＦＰＧＡ部２０を強制的に停止させる。ＦＰＧＡ部２０を停止させる場合、ＦＰＧＡ部２０を再起動させるために必要となるデータ等をＲＡＭ１２に記憶させるための処理を行う必要があるので、プロセッサ部１０は、ステップＳ６１でバックアップ処理を開始する。なお、プロセッサ部１０は、ステップＳ６１のバックアップ処理が完了してから、ＦＰＧＡ部２０を強制的に停止させる。
【００４５】
なお、プロセッサ部１０は、ステップＳ６１でバックアップ処理を行いＦＰＧＡ部２０を強制的に停止させた場合、ＦＰＧＡ部２０に対して再コンフィグレーションを行って、再度所望の回路動作が可能な機能ユニットを設定し再起動することができる。なお、プロセッサ部１０は、ステップＳ６１でバックアップ処理を行いＦＰＧＡ部２０を強制的に停止させた後、異常検出時の処理を終了する。
【００４６】
以上のように、本実施の形態に係る制御装置１００では、異常判定部１５がＦＰＧＡ部２０での位置（位置番号）とＦＰＧＡ部２０での機能ユニット（機能部）との対応を示すマップ情報に基づき、エラー検出部２３で検出したソフトエラーの位置と機能ユニットとの対応を判定する。さらに、プロセッサ部１０は、異常判定部１５においてソフトエラーの位置が機能ユニットの未使用部であると判定した場合、制御装置１００の運転を継続し、異常判定部１５においてソフトエラーの位置が機能ユニットの使用部（例えば、冗長回路部および使用回路部など）であると判定した場合、予め定められた処理を実行する。そのため、制御装置１００は、ＦＰＧＡ部２０にソフトエラーが発生しても高信頼性を実現しつつ、不要な停止を防止することができる。
【００４７】
また、予め定められた処理は、ＦＰＧＡ部２０を停止させる処理であっても、ソフトエラーの位置の機能ユニットのみを停止させる縮退運転へ切替える処理であってもよい。制御装置１００を縮退運転させることで、さらに不要な停止を防止することができる。なお、予め定められた処理としては、制御装置１００の運転を一時停止させる処理、ソフトエラーが発生したことを報知する処理、およびソフトエラーの発生を記録した運転を行う処理などであってもよい。
【００４８】
さらに、プロセッサ部１０は、異常判定部１５においてソフトエラーの位置が冗長回路（例えば、冗長回路部など）であると判定した場合に、ソフトエラーの位置にある冗長回路のみを停止させて継続運転させる。また、プロセッサ部１０は、異常判定部１５においてソフトエラーの位置が非冗長回路（例えば、使用回路部など）であると判定した場合に、縮退運転可能と判断すればソフトエラーの位置の機能部のみを停止させる縮退運転へ切替える処理を実行する。そのため、制御装置１００は、ＦＰＧＡ部２０の冗長回路にソフトエラーが発生しても高信頼性を実現しつつ不要な停止を防止することができる。
【００４９】
また、本実施の形態に係る制御装置１００の制御方法では、マップ情報に基づき、エラー検出部２３で検出したソフトエラーの位置と機能ユニットとの対応を判定するステップ（ステップＳ５３）を行う。さらに、当該制御方法では、ソフトエラーの位置が機能ユニットの未使用部であると判定した場合、制御装置１００の運転を継続するステップ（ステップＳ５５）を行い。また、当該制御方法では、ソフトエラーの位置が機能ユニットの使用部（例えば、冗長回路部および使用回路部など）であると判定した場合、予め定められた処理を実行するステップ（ステップＳ５８，Ｓ６０）を行う。そのため、制御装置１００の制御方法は、ＦＰＧＡ部２０にソフトエラーが発生しても高信頼性を実現しつつ、不要な停止を防止することができる。
【００５０】
（変形例）
（１）本実施の形態に係るエラー検出部２３では、ＦＰＧＡ部２０に含まれる全てのフレームを１つの単位としてソフトエラーの検出を行う場合について説明したが、これに限られない。例えば、エラー検出部２３は、ＣＲＡＭ２１を予め定められたブロックに分け、当該ブロック毎にソフトエラーを検出すてもよい。エラー検出部２３は、複数のブロックに分けてソフトエラーを検出することで、全てのフレームの検出結果を待たずにソフトエラーを検出することができる。
【００５１】
（２）本実施の形態に係るプロセッサ部１０では、異常判定部１５においてソフトエラーの位置が機能ユニットの使用部（例えば、冗長回路部および使用回路部など）であると判定した場合、予め定められた処理を実行すると説明したが、これに限られない。例えば、プロセッサ部１０は、ユーザー回路２２のログ情報に基づいて過去に検出したソフトエラーの位置であるか否かを考慮して、予め定められた処理を実行してもよい。そのため、同じ位置でソフトエラーが発生した場合に制御装置１００を停止することができ、不要な停止を防止することができる。
【００５２】
（３）本実施の形態に係るプロセッサ部１０では、エラー位置の機能ユニットが冗長回路部の場合、ソフトエラーか発生した冗長回路のみを停止させた状態で、制御装置１００を継続運転させると説明したが、これに限られない。例えば、プロセッサ部１０は、エラー位置の機能ユニットが３つ以上の冗長回路である場合に、ソフトエラーか発生して停止させる冗長回路の数が過半数以上になったとき縮退運転させてもよい。
【００５３】
（４）本実施の形態に係るプロセッサ部１０では、使用回路部にソフトエラーが発生した場合、予め定められた処理を実行すると説明したが、これに限られない。例えば、使用回路部の機能によって重み付けを行い、プロセッサ部１０は、使用回路部にソフトエラーが発生した場合に当該重み付けに基づいて実行する処理を変更してもよい。具体的に、プロセッサ部１０は、機能がローカル通信部である使用回路部にソフトエラーが発生すればＦＰＧＡ部２０を強制的に停止させるが、機能がシリアル通信部である使用回路部にソフトエラーが発生すれば縮退運転させる。
【００５４】
（５）本実施の形態に係る制御装置１００では、図１および図２に示す構成においてソフトエラーによる異常発生時の処理について説明したが、当該構成は一例であって、同様の異常発生時の処理が可能であれば何れの構成であってもよい。
【００５５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００５６】
１０  プロセッサ部、１１  ＲＯＭ、１２  ＲＡＭ、１５  異常判定部、１６  マップ情報、２０  ＦＰＧＡ部、２１  ＣＲＡＭ  ２２  ユーザー回路、２３  エラー検出部、２４  エラー読出部、３０  Ｉ／Ｏユニット、１００  制御装置、２００  入出力機器。
【図１】
2018128820.tif 000003
【図２】
2018128820.tif 000004
【図３】
2018128820.tif 000005
【図４】
2018128820.tif 000006
【図５】
2018128820.tif 000007
【手続補正書】
【提出日】平成29年12月20日(2017.12.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項５
【補正方法】変更
【補正の内容】
【請求項５】
前記エラー検出部は、前記格納部を予め定められたブロックに分け、当該ブロック毎にソフトエラーを検出することを含む、請求項１〜請求項４のいずれか１項に記載の制御装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
好ましくは、エラー検出部は、格納部を予め定められたブロックに分け、当該ブロック毎にソフトエラーを検出することを含む。