(57)【特許請求の範囲】
【請求項１】
制御対象機器を制御するための第１制御データを保存する第１データ領域と前記第１制御データの値を反転させた第２制御データを保存する第２データ領域とを含む保存部と、
前記第２データ領域から読み出した前記第２制御データの値を反転させた第３制御データと、前記第１データ領域から読み出した前記第１制御データとが一致するか否かの比較を行う比較処理を実行する比較処理部と、
前記比較処理部に前記比較処理を実行させ、前記第１制御データと前記第３制御データとが一致する場合に、前記第１制御データの値を反転させた第４制御データを前記第１データ領域に保存させ、前記第１制御データの値と同一の値である第５制御データを前記第２データ領域に保存させた後に、前記第２データ領域から読み出した前記第５制御データの値を反転させ、前記第１データ領域から読み出した前記第４制御データと比較し、前記第４制御データと反転させた前記第５制御データとが一致する場合に、前記第４制御データの値を反転させた前記第１制御データと同一の値を前記第１データ領域に保存させ、前記第４制御データの値と同一の値を前記第２データ領域に保存させる診断処理を実行する診断部と、
を備えるメモリ診断装置。
【請求項２】
前記制御対象機器を制御する機器制御部を備え、
前記診断部は、前記比較処理部に前記比較処理を実行させ、前記第１制御データと前記第３制御データとが一致しないとの比較結果が求められた場合に、前記第１制御データおよび前記第１データ領域に異常ありとの診断結果を、前記機器制御部に送信する、
請求項１に記載のメモリ診断装置。
【請求項３】
前記診断部は、前記機器制御部による前記制御対象機器を制御するため処理が終了した場合に、前記比較処理部に前記比較処理を実行させ、前記第１制御データと前記第３制御データとが一致するとの比較結果が求められた場合に、前記診断処理を実行する、
請求項２に記載のメモリ診断装置。
【請求項４】
前記診断部は、前記診断処理を中断するための診断中断フラグをセットする診断中断制御部を備え、
前記診断部は、前記比較処理および前記診断処理を実行している間に、前記機器制御部から前記制御対象機器を制御するため処理の開始要求が通知された場合、前記診断中断制御部に前記診断中断フラグをセットさせ、前記診断処理を中断させる、
請求項２または３に記載のメモリ診断装置。
【請求項５】
前記診断部は、前記診断中断フラグがセットされていない場合、前記保存部の前記第１データ領域に保存された前記第１制御データおよび前記第２データ領域に保存された第２制御データの先頭のアドレスに基づいて、前記第１データ領域および前記第２データ領域への診断処理を実行し、前記診断中断フラグがセットされている場合、前記診断処理を中断した前記保存部の前記第１データ領域および前記第２データ領域のアドレスに基づいて前記第１データ領域および前記第２データ領域への診断処理を実行する、
請求項４に記載のメモリ診断装置。
【請求項６】
前記診断部は、前記診断処理を実行した後、再度前記比較処理を実行する、
請求項１から５のいずれか一項に記載のメモリ診断装置。
【請求項７】
制御対象機器を制御するための第１制御データを保存する第１データ領域と前記第１制御データの値を反転させた第２制御データを保存する第２データ領域とを含む保存部から、前記第１制御データおよび前記第２制御データを読み出し、
読み出した前記第２制御データの値を反転させて第３制御データとし、読み出した前記第１制御データと一致するか否かを求め、前記第１制御データと前記第３制御データとが一致する場合に、前記第１制御データの値を反転させた第４制御データを前記第１データ領域に保存させ、前記第１制御データの値と同一の値である第５制御データを前記第２データ領域に保存させた後、前記第２データ領域から読み出した前記第５制御データの値を反転させ、前記第１データ領域から読み出した前記第４制御データと比較し、前記第４制御データと反転させた前記第５制御データとが一致する場合に、前記第４制御データの値を反転させた前記第１制御データと同一の値を前記第１データ領域に保存させ、前記第４制御データの値と同一の値を前記第２データ領域に保存させる、
メモリ診断方法。
【請求項８】
コンピュータに、
制御対象機器を制御するための第１制御データを保存する第１データ領域と前記第１制御データの値を反転させた第２制御データを保存する第２データ領域とを含む保存部から、前記第１制御データおよび前記第２制御データを読み出すステップ、
読み出した前記第２制御データの値を反転させて第３制御データとし、読み出した前記第１制御データと一致するか否かを求め、前記第１制御データと前記第３制御データとが一致する場合に、前記第１制御データの値を反転させた第４制御データを前記第１データ領域に保存させ、前記第１制御データの値と同一の値である第５制御データを前記第２データ領域に保存させた後、前記第２データ領域から読み出した前記第５制御データの値を反転させ、前記第１データ領域から読み出した前記第４制御データと比較し、前記第４制御データと反転させた前記第５制御データとが一致する場合に、前記第４制御データの値を反転させた前記第１制御データと同一の値を前記第１データ領域に保存させ、前記第４制御データの値と同一の値を前記第２データ領域に保存させるステップ、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、メモリ診断装置、メモリ診断方法、及びプログラムに関する。
【背景技術】
【０００２】
情報処理装置において、読み出し及び書き換え可能な記憶媒体は、制御用プログラム、デバイス値、パラメータ等の保存領域として用いられている。しかしながら、記憶媒体に故障が生じると、制御用プログラム、デバイス値等のデータに破損が生じ、情報処理装置の誤動作を引き起こす可能性がある。このため、記憶媒体に生じた故障をいち早く検知し、情報処理装置を安全な状態へと移行させることが求められる。【０００３】
そこで、例えば、特許文献１には、任意のデータへのアクセス時における当該データの格納領域に対する診断と、テストデータを用いた定期的な診断を併用することにより、メモリセルの固着故障を診断することができる技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１０４０６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
テストデータを用いる診断は、記憶媒体のメモリセルに複数のテストデータを読み込みおよび書き込みさせる試験を繰り返すことにより、メモリセルの固着故障を診断する。このため、記憶媒体の診断のために、複数のテストデータを用意する必要があり、手間がかかるという課題がある。また、テストデータを用いて診断する場合、診断の対象となる領域に含まれるデータを、まとめて別の領域に退避させる必要がある。このため、情報処理装置が次の処理を実行する場合には、退避させていたデータを元に戻す必要があり、処理が煩雑になるという課題がある。【０００６】
本開示は上述の課題を解決するためのものであり、記憶媒体に対する診断を簡便に行うことができるメモリ診断装置、メモリ診断方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目標を達成するために、メモリ診断装置は、保存部と、比較処理部と、診断部とを備える。保存部は、制御対象機器を制御するための第１制御データを保存する第１データ領域と第２制御データを保存するための第２データ領域とを含む。比較処理部は、第２データ領域から読み出した第２制御データの値を反転させた第３制御データと、第１データ領域から読み出した第１制御データとが一致するか否かの比較を行う比較処理を実行する。診断部は、比較処理部に比較処理を実行させ、第１制御データと第３制御データとが一致する場合に、第１制御データの値を反転させた第４制御データを第１データ領域に保存させ、第１制御データの値と同一の値である第５制御データを第２データ領域に保存させた後に、第２データ領域から読み出した第５制御データの値を反転させ、第１データ領域から読み出した第４制御データと比較し、第４制御データと反転させた第５制御データとが一致する場合に、第４制御データの値を反転させた第１制御データと同一の値を第１データ領域に保存させ、第４制御データの値と同一の値を第２データ領域に保存させる診断処理を実行する。
【発明の効果】
【０００８】
本開示におけるメモリ診断装置は、第１データ領域に保存された制御対象機器を制御するための第１制御データと第２データ領域に保存された第２制御データとを比較し、両者が一致する場合に、第１制御データを反転させて第１データ領域および第２データ領域に保存させ、その後、再度第１データ領域および第２データ領域に保存された第１制御データおよび第２制御データを比較する処理を実行させることにより、第１制御データおよび第１データ領域の異常の有無を診断することができるため、記憶媒体に対する診断を簡便に行うことができる。
【図面の簡単な説明】
【０００９】
【図１】本開示の実施の形態１に係るメモリ診断装置の全体構成の一例を示す図
【図２】本開示の実施の形態１に係るメモリ診断装置のハードウエア構成の一例を示す図
【図３】本開示の実施の形態１に係るメモリ診断装置における診断の流れを説明するための図
【図４】図３に示した診断の流れの続きを説明するための図
【図５】図４に示した診断の流れの続きを説明するための図
【図６】図５に示した診断の流れの続きを説明するための図
【図７】本開示の実施の形態１に係るメモリ診断装置における診断の流れを説明するための図
【図８】図７に示した診断の流れの続きを説明するための図
【図９】図８に示した診断の流れの続きを説明するための図
【図１０】本開示の実施の形態１に係るメモリ診断処理のフローチャート
【図１１Ａ】本開示の実施の形態２に係るメモリ診断装置における制御周期とメモリの診断についての関係を示す図
【図１１Ｂ】本開示の実施の形態２に係るメモリ診断装置における制御周期とメモリの診断についての関係を示す図
【図１２Ａ】本開示の実施の形態２に係るメモリ診断装置における割り込み要因とメモリの診断についての関係を示す図
【図１２Ｂ】本開示の実施の形態２に係るメモリ診断装置における割り込み要因とメモリの診断についての関係を示す図
【図１３】本開示の実施の形態２に係るメモリ診断装置の全体構成の一例を示す図
【図１４Ａ】本開示の実施の形態２に係る診断の中断機能付きメモリ診断処理のフローチャート
【図１４Ｂ】図１４Ａに示したフローチャートの続きのフローチャート
【図１５Ａ】本開示の実施の形態３に係る診断の中断機能付きメモリ診断処理のフローチャート
【図１５Ｂ】図１５Ａに示したフローチャートの続きのフローチャート
【発明を実施するための形態】
【００１０】
（実施の形態１）
本開示におけるメモリ診断装置は、記憶媒体に対する診断を簡便に行うことができる装置である。以下、本開示の実施の形態１に係るメモリ診断装置１について、図面を参照しつつ説明する。なお、同一または同等の部分に同一の符号を付す。
【００１１】
メモリ診断装置１は、情報処理装置１００に含まれ、メモリ部１２の診断を行う機能を備えた装置である。情報処理装置１００は、例えば、制御対象機器２を制御するプログラマブルコントローラ（以下、ＰＬＣ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒと称する）として構成される。
【００１２】
メモリ診断装置１の全体構成の一例を、図１に示す。メモリ診断装置１は、メモリ部１２の診断及び制御対象機器２を制御する演算部１１と、制御対象機器２を制御するための各種データ、プログラムを保存するメモリ部１２とを備える。制御対象機器２は、例えば、ワークを加工するワーク加工装置、各種製品を生産する製品生産装置、加工済のワーク、生産された製品等を検査する検査装置等である。
【００１３】
メモリ診断装置１の演算部１１は、制御対象機器２の制御を行う機器制御部１１１と、メモリ部１２に対してデータの読み出し、書き込み、および、読み出したデータの比較を行うメモリ処理部１１２と、メモリ部１２の診断を実行する診断部１１３とを含む。
【００１４】
機器制御部１１１は、メモリ部１２に保存された制御対象機器２を制御するためのプログラムを、メモリ処理部１１２を介して読み込み、実行する。また、機器制御部１１１は、メモリ部１２に保存された制御対象機器２を制御するための各種データを、メモリ処理部１１２を介して読み込む。機器制御部１１１は、メモリ部１２から読み込んだ各種データを、実行するプログラムの出力要求に応じて制御対象機器２へ送信する。
【００１５】
メモリ処理部１１２は、メモリ部１２から読み出したデータの比較を行う比較処理部３０１と、メモリ部１２に対して各種データの読み込みおよび書き込みを行うメモリアクセス処理部３０２とを含む。比較処理部３０１は、機器制御部１１１および診断部１１３からの指示に応じて、メモリ部１２から読みだされた各種データの比較を行う。メモリアクセス処理部３０２は、診断部１１３からの指示に応じて、メモリ部１２に対して各種データの読み込みおよび書き込みを行う。
【００１６】
診断部１１３は、機器制御部１１１により実行される制御対象機器２を制御するためのプログラムが終了すると、メモリ部１２の診断を行う。メモリ部１２は、各種データを格納された第１データ領域１２１と、第１データ領域１２１に格納されたデータを反転させたデータを格納させる第２データ領域１２２とを含む。詳細は後述するが、診断部１１３は、第１データ領域１２１と第２データ領域１２２とに格納されたデータを比較および照合することにより、メモリ部１２を診断する。なお、メモリ部１２は、請求の範囲における保存部の一例である。
【００１７】
演算部１１に備えられた機器制御部１１１と、メモリ処理部１１２と、診断部１１３とは、それぞれソフトウエアにより実現される機能である。この機能を実行するためのハードウエア構成の一例を図２に示す。メモリ診断装置１は、例えば、情報処理装置１００として動作するＰＬＣユニットに含まれるモジュールユニットとして構成することができる。メモリ診断装置１は、制御対象機器２を接続するための機器接続部４０１と、各種データ、プログラム等を保存する記憶機器４０２と、記憶機器４０２に保存されたプログラムを読み込んで展開する制御用メモリ４０３と、制御用メモリ４０３に展開されたプログラムを実行するプロセッサ４０４とを備える。また、機器接続部４０１と、記憶機器４０２と、制御用メモリ４０３と、プロセッサ４０４とは、バス４０６により相互に接続されている。
【００１８】
機器接続部４０１は、制御対象機器２を接続するための接続部である。メモリ診断装置１は、機器接続部４０１を介して、制御対象機器２に各種データ、制御用信号を送信する。また、メモリ診断装置１は、機器接続部４０１を介して、制御対象機器２から各種データを受信する。機器接続部４０１は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポート、ＩＥＥＥ１３９４ポート、有線または無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ポート等の、制御対象機器２を接続することができる各種接続ポートを用いて構成することができる。
【００１９】
記憶機器４０２は、制御対象機器２を制御するために用いられる各種データ、プログラムを保存することができる機器である。記憶機器４０２は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、フラッシュメモリ等の各種記憶装置を用いて構成することができる。
【００２０】
制御用メモリ４０３は、記憶機器４０２とともに、図１に示したメモリ部１２として機能する。制御用メモリ４０３は、揮発性の半導体メモリ、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）といった記憶素子および記憶媒体を用いて構成することができる。
【００２１】
プロセッサ４０４は、図１に示した演算部１１として機能する。プロセッサ４０４は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＭＰＵ（Ｍｉｃｒｏ−ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の演算処理装置を用いて構成することができる。
【００２２】
図１に示したメモリ診断装置１の診断部１１３は、機器制御部１１１により実行される制御対象機器２を制御するためのプログラムが終了すると、メモリ部１２の診断を行う。メモリ診断装置１で行われるメモリ部１２の診断の流れについて、図３から図９を参照しつつ、以下に説明する。
【００２３】
まず、図３から図６を参照して、メモリ部１２に異常が発生していない場合の診断の流れについて説明する。ここでいうメモリ部１２に発生する異常とは、メモリ部１２の第１データ領域１２１および第２データ領域１２２の各診断対象アドレスで示されるデータ領域に発生する、ソフトエラーおよび固着故障のいずれかである。ソフトエラーとは、α線、中性子線、ＥＭＩ（Ｅｌｅｃｔｒｏ  Ｍａｇｎｅｔｉｃ  Ｉｎｔｅｒｆｅｒｅｎｃｅ）ノイズおよび内部クロストーク等に起因して、一時的にデータ領域に格納されているデータがビット反転といった不具合を起こし、一時的にデータが正常なデータとは異なる異常なデータとなってしまうエラーである。また、固着故障とは、ソフトエラーとは異なるハードエラーを指し、データ領域が物理的に損傷して、データ領域を構成するビットが変更できなくなるエラーである。
【００２４】
図３に示す診断部１１３は、メモリ処理部１１２のメモリアクセス処理部３０２に、診断の対象となるメモリ部１２の第１データ領域１２１および第２データ領域１２２の診断対象アドレスを送信する。診断対象アドレスは、診断対象となるデータの格納領域の先頭のアドレスである。ここでは、例えば、第１データ領域１２１の診断対象アドレスを１６進数で０ｘ００Ａ０とし、第２データ領域１２２の診断対象アドレスを１６進数で０ｘ１０Ｂ０とする。メモリアクセス処理部３０２は、診断部１１３から受診した診断対象アドレスの示すアドレスのデータを、メモリ部１２の第１データ領域１２１および第２データ領域１２２から読み出す。
【００２５】
ここで、メモリアクセス処理部３０２にメモリ部１２の第１データ領域１２１から読み出されるデータは、第１データ領域１２１の診断対象アドレスである０ｘ００Ａ０を先頭とする１Ｂｙｔｅ分のデータを例に挙げることができる。なお、このデータを、以下では、第１制御データと称する。また、メモリアクセス処理部３０２にメモリ部１２の第２データ領域１２２から読み出されるデータは、第２データ領域１２２の診断対象アドレスである０ｘ１０Ｂ０を先頭とする１Ｂｙｔｅ分のデータを例に挙げることができる。なお、このデータを、以下では、第２制御データと称する。ここで、第１制御データは、例えば、１０１０１１１０で示されるデジタルデータとする。また、第２制御データは、例えば、０１０１０００１で示されるデジタルデータとする。つまり、第２制御データは、第１制御データの値を反転させた値を示すデータである。
【００２６】
メモリアクセス処理部３０２は、メモリ部１２から読み出した第１制御データおよび第２制御データを、メモリ処理部１１２の比較処理部３０１に送信する。比較処理部３０１は、メモリ部１２から読み出された第２制御データを反転処理し、第３制御データを生成する。ここで、第２制御データは０１０１０００１であるため、反転処理された第３制御データは１０１０１１１０となる。
【００２７】
比較処理部３０１は、第１制御データと、第３制御データとを比較処理する。ここで、第１制御データは、１０１０１１１０であり、第３制御データは１０１０１１１０であるため、両者は一致する。したがって、比較処理部３０１は、診断部１１３に「データ異常なし」との比較結果を送信する。また、比較処理部３０１は、診断部１１３に第１制御データを送信する。診断部１１３は、比較処理部３０１から受信した比較結果が「データ異常なし」である場合、処理を続行する。
【００２８】
また、診断部１１３は、比較処理部３０１から受信した比較結果が「データ異常なし」ではない場合、すなわち、「データ異常あり」である場合、ソフトエラーが生じたものとして、図１に示した機器制御部１１１にソフトエラーを通知する。機器制御部１１１は、診断部１１３から受信した通知に基づいて、制御対象機器２に停止信号を送信する、情報処理装置１００よりも上位のコントロールシステムにソフトエラーが生じたことを通知する等の処理を行う。
【００２９】
ここで、図４に移る。診断部１１３は、比較処理部３０１から受信した第１制御データを反転処理し、第４制御データを生成する。ここで、第１制御データは１０１０１１１０であるため、反転処理された第４制御データは０１０１０００１となる。診断部１１３は、メモリ処理部１１２のメモリアクセス処理部３０２に、第４制御データを送信する。また、診断部１１３は、診断の対象となるメモリ部１２の第１データ領域１２１および第２データ領域１２２の診断対象アドレスを送信する。この診断対象アドレスは、図３に示した診断対象アドレスと同様のアドレスである。
【００３０】
メモリアクセス処理部３０２は、診断部１１３から受信した第４制御データを反転処理し、第５制御データを生成する。ここで、第４制御データは０１０１０００１であるため、反転処理された第５制御データは１０１０１１１０となる。メモリアクセス処理部３０２は、メモリ部１２の第１データ領域１２１の診断対象アドレスに、第４制御データを書き込ませる。また、メモリアクセス処理部３０２は、メモリ部１２の第２データ領域１２２の診断対象アドレスに、第５制御データを書き込ませる。
【００３１】
続いて、図５に移る。診断部１１３は、メモリ処理部１１２のメモリアクセス処理部３０２に、診断の対象となるメモリ部１２の第１データ領域１２１および第２データ領域１２２の診断対象アドレスを送信する。この診断対象アドレスは、図３に示した診断対象アドレスと同様のアドレスである。メモリアクセス処理部３０２は、診断部１１３から受診した診断対象アドレスの示すアドレスのデータを、メモリ部１２の第１データ領域１２１および第２データ領域１２２から読み出す。ここで、メモリ部１２の第１データ領域１２１から読み出されるデータは、図４で書き込まれた第４制御データである。また、第２データ領域１２２から読み出されるデータは、図４で書き込まれた第５制御データである。
【００３２】
メモリアクセス処理部３０２は、メモリ部１２から読み出した第４制御データおよび第５制御データを、メモリ処理部１１２の比較処理部３０１に送信する。比較処理部３０１は、メモリ部１２から読み出された第５制御データを反転処理し、第６制御データを生成する。ここで、第５制御データは１０１０１１１０であるため、反転処理された第６制御データは０１０１０００１となる。
【００３３】
比較処理部３０１は、第４制御データと、第６制御データとを比較処理する。ここで、第４制御データは、０１０１０００１であり、第６制御データは０１０１０００１であるため、両者は一致する。したがって、比較処理部３０１は、診断部１１３に「データ異常なし」との比較結果を送信する。また、比較処理部３０１は、診断部１１３に第４制御データを送信する。
【００３４】
ここで、図６に移る。診断部１１３は、比較処理部３０１から受信した第４制御データを反転処理する。ここで、第４制御データは０１０１０００１であるため、反転処理すると１０１０１１１０になる。反転処理された第４制御データの値は、図３に示した第１制御データと同じ値である。診断部１１３は、メモリ処理部１１２のメモリアクセス処理部３０２に、反転処理された第４制御データ、すなわち、第１制御データを送信する。また、診断部１１３は、診断の対象となるメモリ部１２の第１データ領域１２１および第２データ領域１２２の診断対象アドレスを送信する。この診断対象アドレスは、図３に示した診断対象アドレスと同様のアドレスである。
【００３５】
メモリアクセス処理部３０２は、診断部１１３から受信した第１制御データを反転処理し、第２制御データを生成する。ここで、第１制御データは１０１０１１１０であるため、反転処理された第２制御データは０１０１０００１となる。メモリアクセス処理部３０２は、メモリ部１２の第１データ領域１２１の診断対象アドレスに、第１制御データを書き込ませる。また、メモリアクセス処理部３０２は、メモリ部１２の第２データ領域１２２の診断対象アドレスに、第２制御データを書き込ませる。これにより、メモリ部１２の第１データ領域１２１および第２データ領域１２２に書き込まれたデータは、メモリ部１２の診断を開始した時と同じ値に戻る。
【００３６】
この後、診断部１１３は、診断対象となるデータの格納領域が残っている場合、診断対象アドレスをインクリメントする。具体的には、診断部１１３は、第１データ領域１２１の診断対象アドレスである０ｘ００Ａ０にプラス１ｂｙｔｅをし、０ｘ０Ａ８とする。また診断部１１３は、第２データ領域１２２の診断対象アドレスである０ｘ１０Ｂ０にプラス１ｂｙｔｅをし、０ｘ１０Ｂ８とする。メモリ診断装置１は、インクリメントした診断対象アドレスで示されるデータの格納領域に対して、図３から図６に示した診断の処理をくり返す。
【００３７】
また、診断部１１３は、診断対象となるデータの格納領域を全て診断した場合、図１に示した機器制御部１１１に診断結果を通知する。その後、診断部１１３は、機器制御部１１１により実行される制御対象機器２を制御するためのプログラムが終了するまで待機する。
【００３８】
続いて、図７から図９を参照して、メモリ部１２に異常が発生している場合の診断の流れについて説明する。ここでは、メモリ部１２に発生している異常は、メモリ部１２の第１データ領域１２１に発生したメモリの固着故障とする。
【００３９】
図７に示す診断部１１３は、メモリ処理部１１２のメモリアクセス処理部３０２に、診断の対象となるメモリ部１２の第１データ領域１２１および第２データ領域１２２の診断対象アドレスを送信する。ここでは、例えば、第１データ領域１２１の診断対象アドレスを０ｘ００Ａ０とし、第２データ領域１２２の診断対象アドレスを０ｘ１０Ｂ０とする。メモリアクセス処理部３０２は、診断部１１３から受診した診断対象アドレスの示すアドレスのデータを、メモリ部１２の第１データ領域１２１および第２データ領域１２２から読み出す。
【００４０】
ここで、メモリアクセス処理部３０２にメモリ部１２の第１データ領域１２１から読み出されるデータは、第１データ領域１２１の診断対象アドレスである０ｘ００Ａ０を先頭とする１Ｂｙｔｅ分のデータである。なお、このデータを、以下では、第１制御データと称する。ここで、第１制御データは、例えば、１０１０１１１０とする。また、ここでは、第１データ領域１２１の診断対象アドレスである０ｘ００Ａ０から、３ビット目のメモリセルに固着故障が生じているものとする。
【００４１】
メモリアクセス処理部３０２にメモリ部１２の第２データ領域１２２から読み出されるデータは、第２データ領域１２２の診断対象アドレスである０ｘ１０Ｂ０を先頭とする１Ｂｙｔｅ分のデータである。なお、このデータを、以下では、第２制御データと称する。第２制御データは、例えば、０１０１０００１とする。すなわち、第２制御データは、第１制御データの値を反転させた値を示すデータである。
【００４２】
メモリアクセス処理部３０２は、メモリ部１２から読み出した第１制御データおよび第２制御データを、メモリ処理部１１２の比較処理部３０１に送信する。比較処理部３０１は、メモリ部１２から読み出された第２制御データを反転処理し、第３制御データを生成する。ここで、第２制御データは０１０１０００１であるため、反転処理された第３制御データは１０１０１１１０となる。
【００４３】
比較処理部３０１は、第１制御データと、第３制御データとを比較処理する。ここで、第１制御データは１０１０１１１０であり、第３制御データは１０１０１１１０であるため、両者は一致する。比較処理部３０１は、診断部１１３に「データ異常なし」との比較結果を送信する。また、比較処理部３０１は、診断部１１３に第１制御データを送信する。このため、診断部１１３は、比較処理部３０１から受信した比較結果により、第１データ領域１２１にメモリセルの固着故障が生じていても検出することができない。
【００４４】
ここで、図８に移る。診断部１１３は、比較処理部３０１から受信した第１制御データを反転処理し、第４制御データを生成する。ここで、第１制御データは１０１０１１１０であるため、反転処理された第４制御データは０１０１０００１となる。診断部１１３は、メモリ処理部１１２のメモリアクセス処理部３０２に、第４制御データを送信する。また、診断部１１３は、診断の対象となるメモリ部１２の第１データ領域１２１および第２データ領域１２２の診断対象アドレスを送信する。この診断対象アドレスは、図７に示した診断対象アドレスと同様のアドレスである。
【００４５】
メモリアクセス処理部３０２は、診断部１１３から受信した第４制御データを反転処理し、第５制御データを生成する。ここで、第４制御データは０１０１０００１であるため、反転処理された第５制御データは１０１０１１１０となる。メモリアクセス処理部３０２は、メモリ部１２の第１データ領域１２１の診断対象アドレスに、第４制御データを書き込ませる。このとき、第１データ領域１２１の診断対象アドレスから、３ビット目のメモリセルに固着故障が生じているため、書き込まれている「１」からデータが更新されない。このため、メモリ部１２の第１データ領域１２１に書き込まれたデータは、０１１１０００１となる。このデータを、以下では、第４’制御データと称する。また、メモリアクセス処理部３０２は、メモリ部１２の第２データ領域１２２の診断対象アドレスに、第５制御データを書き込ませる。
【００４６】
続いて、図９に移る。診断部１１３は、メモリ処理部１１２のメモリアクセス処理部３０２に、診断の対象となるメモリ部１２の第１データ領域１２１および第２データ領域１２２の診断対象アドレスを送信する。この診断対象アドレスは、図７に示した診断対象アドレスと同様のアドレスである。メモリアクセス処理部３０２は、診断部１１３から受診した診断対象アドレスの示すアドレスのデータを、メモリ部１２の第１データ領域１２１および第２データ領域１２２から読み出す。ここで、メモリ部１２の第１データ領域１２１から読み出されるデータは、図８で書き込まれた第４’制御データである。また、第２データ領域１２２から読み出されるデータは、図８で書き込まれた第５制御データである。
【００４７】
メモリアクセス処理部３０２は、メモリ部１２から読み出した第４’制御データおよび第５制御データを、メモリ処理部１１２の比較処理部３０１に送信する。比較処理部３０１は、メモリ部１２から読み出された第５制御データを反転処理し、第６制御データを生成する。ここで、第５制御データは１０１０１１１０であるため、反転処理された第６制御データは０１０１０００１となる。
【００４８】
比較処理部３０１は、第４’制御データと、第６制御データとを比較処理する。ここで、第４’制御データは、０１１１０００１であり、第６制御データは０１０１０００１であるため、両者は不一致となる。比較処理部３０１は、診断部１１３に「データ異常あり」との比較結果を送信する。また、比較処理部３０１は、診断部１１３に第４’制御データを送信する。このため、診断部１１３は、比較処理部３０１から受信した比較結果により、第１データ領域１２１に生じたメモリセルの固着故障を検出することができる。
【００４９】
この後、診断部１１３は、図１に示した機器制御部１１１に、第１データ領域１２１に故障が生じていることを通知する。機器制御部１１１は診断部１１３から受信した通知に基づいて、制御対象機器２に停止信号を送信する、情報処理装置１００よりも上位のコントロールシステムに故障が生じたことを通知する等の処理を行う。
【００５０】
以上のとおり、メモリ診断装置１は、診断対象アドレスの示すメモリ部１２の第１データ領域１２１および第２データ領域１２２に保存されたデータを、反転処理して比較処理することをくり返すことにより、メモリの異常の有無を検出することができる。
【００５１】
続いて、メモリ診断装置１において実行されるメモリ診断処理について、図１０に示すフローチャートを参照しつつ、以下に説明する。メモリ診断処理は、メモリ診断処理プログラムとして図２に示した記憶機器４０２に保存されている。メモリ診断装置１は起動すると、図２に示した記憶機器４０２からメモリ診断処理プログラムを読み出して制御用メモリ４０３に展開させ、プロセッサ４０４に実行させる。
【００５２】
図１に示した診断部１１３は、図１に示した機器制御部１１１から制御対象機器２を制御するためのプログラムの処理の完了通知があったか否か判定する（ステップＳ１０１）。機器制御部１１１から完了通知があった場合（ステップＳ１０１；ＹＥＳ）、診断部１１３に診断対象アドレスが設定される（ステップＳ１０２）。ここで設定される診断対象アドレスは、診断対象となるデータの格納領域の先頭のアドレスである。具体的には、図１に示したメモリ部１２の第１データ領域１２１および第２データ領域１２２の先頭アドレスである。また、機器制御部１１１から完了通知が無い場合（ステップＳ１０１；ＮＯ）、診断部１１３は、機器制御部１１１から完了通知があるまでステップＳ１０１の処理をくり返す。
【００５３】
診断部１１３は、図３に示したメモリ処理部１１２のメモリアクセス処理部３０２に、診断の対象となるメモリ部１２の第１データ領域１２１および第２データ領域１２２の診断対象アドレスから診断対象のデータを読み出させる。図３に示したメモリ処理部１１２の比較処理部３０１は、読み出した診断対象のデータを比較する（ステップＳ１０３）。比較処理部３０１は、比較結果とメモリ部１２の第１データ領域１２１から読み出したデータを診断部１１３に送信する。診断部１１３は、比較処理部３０１から受信した比較結果が「データ異常なし」か否か判定する（ステップＳ１０４）。
【００５４】
比較結果が「データ異常なし」である場合（ステップＳ１０４；ＹＥＳ）、診断部１１３は、図４に示したとおり、比較処理部３０１から受信した第１制御データを反転処理し、第４制御データを生成する。メモリアクセス処理部３０２は、診断部１１３から第４制御データを受信し、反転処理して第５制御データを生成する。メモリアクセス処理部３０２は、第４制御データおよび第５制御データを、メモリ部１２の第１データ領域１２１および第２データ領域１２２に書き込ませる（ステップＳ１０５）。
【００５５】
診断部１１３は、図５に示したメモリ処理部１１２のメモリアクセス処理部３０２に、診断の対象となるメモリ部１２の第１データ領域１２１および第２データ領域１２２の診断対象アドレスから診断対象のデータを読み出させる。図５に示したメモリ処理部１１２の比較処理部３０１は、読み出した診断対象のデータを比較する（ステップＳ１０６）。比較処理部３０１は、比較結果とメモリ部１２の第１データ領域１２１から読み出したデータを診断部１１３に送信する。診断部１１３は、比較処理部３０１から受信した比較結果が「データ異常なし」か否か判定する（ステップＳ１０７）。
【００５６】
比較結果が「データ異常なし」である場合（ステップＳ１０７；ＹＥＳ）、診断部１１３は、図６に示したとおり、比較処理部３０１から受信した第４制御データを反転処理する。反転処理された第４制御データの値は、図３に示した第１制御データと同じ値である。メモリアクセス処理部３０２は、診断部１１３から反転処理された第４制御データ、すなわち、第１制御データを受信し、反転処理して第２制御データを生成する。メモリアクセス処理部３０２は、第１制御データおよび第２制御データを、メモリ部１２の第１データ領域１２１および第２データ領域１２２に書き込ませる（ステップＳ１０８）。
【００５７】
診断部１１３は、診断対象となるデータの格納領域が残っているか否か判定する（ステップＳ１０９）。診断対象となるデータの格納領域が残っている場合（ステップＳ１０９；ＹＥＳ）、診断部１１３は診断対象アドレスをインクリメントする（ステップＳ１１０）。その後、診断部１１３は、ステップＳ１０３に戻る。診断部１１３は、ステップＳ１０３以降のステップを実行する。
【００５８】
ここで、ステップＳ１０４において、比較処理部３０１から受信した比較結果が「データ異常なし」でなかった場合（ステップＳ１０４；ＮＯ）、診断部１１３はソフトエラーが生じたことを検出する（ステップＳ１１２）。また、ステップＳ１０７において、比較処理部３０１から受信した比較結果が「データ異常なし」でなかった場合（ステップＳ１０７；ＮＯ）、診断部１１３は、メモリ部１２のメモリセルに固着故障が生じたことを検出する（ステップＳ１１３）。続いて診断部１１３は、診断結果を図１に示した機器制御部１１１に通知する（ステップＳ１１４）。機器制御部１１１は、診断部１１３から受信した通知に基づいて、制御対象機器２に停止信号を送信する、情報処理装置１００よりも上位のコントロールシステムに異常が生じたことを通知する等の処理を行う。その後、診断部１１３は、ステップＳ１０１に戻り、ステップＳ１０１からステップＳ１１４までの処理をくり返す。
【００５９】
また、ステップＳ１０９において、診断対象となるデータの格納領域が残っていない場合（ステップＳ１０９；ＮＯ）、診断部１１３は、診断結果を図１に示した機器制御部１１１に通知する（ステップＳ１１４）。機器制御部１１１は、制御対象機器２を制御するためのプログラムを実行する。続いて、診断部１１３は、ステップＳ１０１に戻り、ステップＳ１０１からステップＳ１１４までの処理をくり返す。
【００６０】
以上のとおり、実施の形態１によれば、第１データ領域１２１に保存された制御対象機器２を制御するための第１制御データと第２データ領域１２２に保存された第２制御データとを比較し、両者が一致する場合に、第１制御データを反転させて第１データ領域１２１および第２データ領域１２２に保存させた後、再度、第１データ領域１２１および第２データ領域１２２に保存された第１制御データおよび第２制御データを比較する処理を実行させることにより、第１制御データおよび第１データ領域１２１の異常の有無を診断することができる。このため、メモリ診断装置１は、記憶媒体に対する診断を簡便に行うことができる。
【００６１】
（実施の形態２）
実施の形態１では、メモリ診断装置１は、機器制御部１１１から制御対象機器２を制御するためのプログラムの処理の完了通知があると、メモリ部１２の診断を開始する。メモリ部１２の診断中、メモリ診断装置１の診断部１１３は、診断対象アドレスに示されたメモリ部１２のデータを一時的に書き換える。このため、メモリ部１２の診断中に、機器制御部１１１が診断対象アドレスに示されたメモリ部１２のデータを読み込むと、誤ったデータを読み込む可能性がある。したがって、実施の形態１では、診断対象となるデータ全体の診断が完了するまで、機器制御部１１１は制御対象機器２を制御するためのプログラムの処理の開始を待つ必要がある。
【００６２】
しかしながら、制御対象機器２を制御するためのプログラムには、一定間隔の制御周期で実行する定周期実行タイプのプログラム、割り込み要因の発生に基づいて割り込み処理を実行する割り込みプログラム等がある。例えば、図１１Ａに、定周期実行タイプのプログラムの動作を示す。定周期実行タイプのプログラムは、一定間隔の制御周期で実行されるプログラムである。制御周期の１周期は、定周期実行タイプのプログラムの実行にかかる時間と、メモリの診断にかかる時間と、待機の時間とを合わせた時間になるようにすることが望ましい。しかしながら、定周期実行タイプのプログラムの実行に予定よりも時間がかかる場合がある。そして、こういった場合にメモリ診断を実行すると、図１１Ｂに示すとおり、定周期実行タイプのプログラムの処理開始が待たされることになる。このため、定周期実行タイプのプログラムの実行間隔が制御周期を超過してしまい、制御対象機器２の性能要求を満たせなくなる恐れがある。
【００６３】
また、例えば、図１２Ａに、割り込みプログラムの動作を示す。割り込みプログラムは、割り込み要因の発生に基づいて処理を実行するプログラムである。割り込み応答時間は、割り込み要因の発生から割り込みプログラムの終了までの時間である。ここでは、機器制御部１１１は、割り込み要因の発生があると割り込みプログラムを実行し、続いて、メモリの診断を実行する。その後、機器制御部１１１は、次に割り込み要因の発生があるまで待機する。しかしながら、メモリの診断に予定よりも時間がかかる場合がある。この場合、図１２Ｂに示すとおり、割り込みプログラムの処理開始が待たされることになる。このため、割り込み応答時間が予定されていた割り込み応答時間よりも長くなり、制御対象機器２の性能要求を満たせなくなる恐れがある。
【００６４】
そこで、実施の形態２では、メモリの診断中に定周期実行タイプのプログラムの処理開始要求がある場合、割り込み要因の発生がある場合等に、メモリの診断を中断させる機能を備えるものとする。図１３に、メモリ診断装置１Ａの全体構成を示す。メモリ診断装置１Ａは、診断部１１３に診断中断制御部３０３を備える。
【００６５】
診断中断制御部３０３は、メモリ部１２の診断中に、機器制御部１１１からメモリの診断中に定周期実行タイプのプログラム、割り込みプログラム等の処理開始が通知された場合に、診断中断フラグをセットする。ここでセットされる診断中断フラグは、メモリ診断装置１Ａで実行するメモリ部１２の診断を、中断するためのフラグである。診断中断フラグは、診断中断制御部３０３によって、診断部１１３にセットされる。診断部１１３は、診断中断フラグのセットがされている場合には、前回のメモリ部１２の診断が中断されたものと判断し、診断対象アドレスを書き換えずに、診断中断フラグのみをクリアする。これにより、診断対象アドレスが書き換えられないため、前回の診断を中断した際の診断対象アドレスからメモリ部１２の診断を実行することができる。また、診断部１１３は、診断中断フラグのセットがされていない場合には、新たに診断対象アドレスをセットし、メモリ部１２の診断を行う。なお、その他の構成については、図１に示したメモリ診断装置１と同様である。また、定周期実行タイプのプログラム、割り込みプログラム等を総称して、以下では機器制御用プログラムと称する。
【００６６】
続いて、メモリ診断装置１Ａにおいて実行される診断の中断機能付きメモリ診断処理について、図１４Ａおよび図１４Ｂに示すフローチャートを参照しつつ、以下に説明する。診断の中断機能付きメモリ診断処理は、診断の中断機能付きメモリ診断処理プログラムとして図２に示した記憶機器４０２に保存されている。メモリ診断装置１Ａは起動すると、図２に示した記憶機器４０２から診断の中断機能付きメモリ診断処理プログラムを読み出して制御用メモリ４０３に展開させ、プロセッサ４０４に実行させる。
【００６７】
図１３に示した診断部１１３は、機器制御部１１１から制御対象機器２を制御するためのプログラムの処理の完了通知があったか否か判定する（ステップＳ２０１）。機器制御部１１１から完了通知があった場合（ステップＳ２０１；ＹＥＳ）、診断中断フラグがセットされているか否か判定する（ステップＳ２０２）。また、機器制御部１１１から完了通知が無い場合（ステップＳ２０１；ＮＯ）、診断部１１３は、機器制御部１１１から完了通知があるまでステップＳ２０１の処理をくり返す。
【００６８】
診断中断フラグがセットされていない場合（ステップＳ２０２；ＮＯ）、診断部１１３に診断対象アドレスが設定される（ステップＳ２０３）。ここで設定される診断対象アドレスは、診断対象となるデータの格納領域の先頭のアドレスである。具体的には、図１３に示したメモリ部１２の第１データ領域１２１および第２データ領域１２２の先頭アドレスである。また、診断中断フラグがセットされている場合（ステップＳ２０２；ＹＥＳ）、診断中断フラグをクリアする（ステップＳ２０４）。
【００６９】
診断部１１３は、図１３に示したメモリ処理部１１２のメモリアクセス処理部３０２に、診断の対象となるメモリ部１２の第１データ領域１２１および第２データ領域１２２の診断対象アドレスから診断対象のデータを読み出させる。図１３に示したメモリ処理部１１２の比較処理部３０１は、読み出した診断対象のデータを比較する（ステップＳ２０５）。比較処理部３０１は、比較結果とメモリ部１２の第１データ領域１２１から読み出したデータを診断部１１３に送信する。診断部１１３は、比較処理部３０１から受信した比較結果が「データ異常なし」か否か判定する（ステップＳ２０６）。
【００７０】
比較結果が「データ異常なし」である場合（ステップＳ２０６；ＹＥＳ）、診断部１１３は、機器制御部１１１から機器制御用プログラムの開始要求が通知されたか否か判定する（ステップＳ２０７）。機器制御部１１１から機器制御用プログラムの開始要求が通知されていない場合（ステップＳ２０７；ＮＯ）、診断部１１３は、図４に示したとおり、比較処理部３０１から受信した第１制御データを反転処理し、第４制御データを生成する。メモリアクセス処理部３０２は、診断部１１３から第４制御データを受信し、反転処理して第５制御データを生成する。メモリアクセス処理部３０２は、第４制御データおよび第５制御データを、メモリ部１２の第１データ領域１２１および第２データ領域１２２に書き込ませる（ステップＳ２０８）。
【００７１】
診断部１１３は、図５に示したメモリ処理部１１２のメモリアクセス処理部３０２に、診断の対象となるメモリ部１２の第１データ領域１２１および第２データ領域１２２の診断対象アドレスから診断対象のデータを読み出させる。図５に示したメモリ処理部１１２の比較処理部３０１は、読み出した診断対象のデータを比較する（ステップＳ２０９）。
【００７２】
ここで、図１４Ｂに移る。比較処理部３０１は、比較結果とメモリ部１２の第１データ領域１２１から読み出したデータを診断部１１３に送信する。診断部１１３は、比較処理部３０１から受信した比較結果が「データ異常なし」か否か判定する（ステップＳ２１０）。
【００７３】
比較結果が「データ異常なし」である場合（ステップＳ２１０；ＹＥＳ）、診断部１１３は、図６に示したとおり、比較処理部３０１から受信した第４制御データを反転処理する。反転処理された第４制御データの値は、図３に示した第１制御データと同じ値である。メモリアクセス処理部３０２は、診断部１１３から反転処理された第４制御データ、すなわち、第１制御データを受信し、反転処理して第２制御データを生成する。メモリアクセス処理部３０２は、第１制御データおよび第２制御データを、メモリ部１２の第１データ領域１２１および第２データ領域１２２に書き込ませる（ステップＳ２１１）。
【００７４】
診断部１１３は、機器制御部１１１から機器制御用プログラムの開始要求が通知されているか否か判定する（ステップＳ２１２）。機器制御部１１１から機器制御用プログラムの開始要求が通知されていない場合（ステップＳ２１２；ＮＯ）、診断部１１３は、診断対象となるデータの格納領域が残っているか否か判定する（ステップＳ２１３）。診断対象となるデータの格納領域が残っている場合（ステップＳ２１３；ＹＥＳ）、診断部１１３は診断対象アドレスをインクリメントする（ステップＳ２１４）。その後、診断部１１３は、図１４Ａに示したステップＳ２０５に戻る。診断部１１３は、ステップＳ２０５以降のステップを実行する。
【００７５】
ここで、図１４Ａに示したステップＳ２０６において、比較処理部３０１から受信した比較結果が「データ異常なし」でなかった場合（ステップＳ２０６；ＮＯ）、診断部１１３はソフトエラーが生じたことを検出する（ステップＳ２１５）。また、図１４Ｂに示したステップＳ２１０において、比較処理部３０１から受信した比較結果が「データ異常なし」でなかった場合（ステップＳ２１０；ＮＯ）、診断部１１３は、メモリ部１２のメモリセルに固着故障が生じたことを検出する（ステップＳ２１６）。
【００７６】
続いて診断部１１３は、図１３に示した診断中断制御部３０３に、診断中断フラグをクリアさせる（ステップＳ２１７）。続いて診断部１１３は、診断結果を図１３に示した機器制御部１１１に通知する（ステップＳ２１９）。機器制御部１１１は、診断部１１３から受信した通知に基づいて、制御対象機器２に停止信号を送信する、情報処理装置１００よりも上位のコントロールシステムに異常が生じたことを通知する等の処理を行う。その後、診断部１１３は、図１４Ａに示したステップＳ２０１に戻り、ステップＳ２０１からステップＳ２１９までの処理をくり返す。
【００７７】
また、図１４Ａに示したステップＳ２０７、および、図１４Ｂに示したステップＳ２１２において、機器制御部１１１から機器制御用プログラムの開始要求が通知されている場合（ステップＳ２０７；ＹＥＳ、ステップＳ２１２；ＹＥＳ）、診断部１１３は、図１３に示した診断中断制御部３０３に、診断中断フラグをセットさせる（ステップＳ２１８）。診断部１１３は、診断結果を図１３に示した機器制御部１１１に通知する（ステップＳ２１９）。機器制御部１１１は、機器制御用プログラムを実行する。続いて、診断部１１３は、図１４Ａに示したステップＳ２０１に戻り、ステップＳ２０１からステップＳ２１９までの処理をくり返す。
【００７８】
また、図１４Ｂに示したステップＳ２１３において、診断対象となるデータの格納領域が残っていない場合（ステップＳ２１３；ＮＯ）、診断部１１３は、図１３に示した診断中断制御部３０３に、診断中断フラグをクリアさせる（ステップＳ２１７）。続いて、診断部１１３は、診断結果を図１に示した機器制御部１１１に通知する（ステップＳ２１９）。機器制御部１１１は、制御対象機器２を制御するためのプログラムを実行する。続いて、診断部１１３は、図１４Ａに示したステップＳ２０１に戻り、ステップＳ２０１からステップＳ２１９までの処理をくり返す。
【００７９】
以上のとおり、実施の形態２によれば、メモリ診断装置１Ａは、実施の形態１における効果に加え、メモリ部１２の診断中に機器制御用プログラムの開始要求が通知された場合、診断を中断し、機器制御部１１１に機器制御用プログラムを実行させることができる。これにより、制御対象機器２の性能要求を満たすことができる。
【００８０】
（実施の形態３）
実施の形態２では、図１４Ａに示したステップＳ２０７、および、図１４Ｂに示したステップＳ２１２において、機器制御部１１１から機器制御用プログラムの開始要求が通知されている場合（ステップＳ２０７；ＹＥＳ、ステップＳ２１２；ＹＥＳ）に、ステップＳ２１８において、診断部１１３は、図１３に示した診断中断制御部３０３に診断中断フラグをセットさせるものとした。しかしながら、この場合、次のメモリ部１２の診断を実行する際に、中断前の診断対象アドレスが再び診断の対象となり非効率である。そこで、実施の形態３では、メモリ部１２の診断を中断した後、次に診断を実行する際、中断前の診断対象アドレスを再び診断しないようにする。これにより、メモリ部１２の診断を、効率的に実行することができる。
【００８１】
実施の形態３に係る診断の中断機能付きメモリ診断処理は、実施の形態２に示した診断の中断機能付きメモリ診断処理の代わりに、図１３に示したメモリ診断装置１Ａにおいて実行させることができる処理である。本実施の形態に係る診断の中断機能付きメモリ診断処理について、図１５Ａおよび図１５Ｂに示すフローチャートを参照しつつ、以下に説明する。診断の中断機能付きメモリ診断処理は、診断の中断機能付きメモリ診断処理プログラムとして図２に示した記憶機器４０２に保存されている。メモリ診断装置１Ａは起動すると、図２に示した記憶機器４０２から診断の中断機能付きメモリ診断処理プログラムを読み出して制御用メモリ４０３に展開させ、プロセッサ４０４に実行させる。
【００８２】
図１５Ａに示すステップＳ３０１からステップＳ３０９における処理は、図１４Ａに示したステップＳ２０１からステップＳ２０９における処理と同様である。ここで、図１５Ｂに移る。比較処理部３０１は、比較結果とメモリ部１２の第１データ領域１２１から読み出したデータを診断部１１３に送信する。診断部１１３は、比較処理部３０１から受信した比較結果が「データ異常なし」か否か判定する（ステップＳ３１０）。
【００８３】
比較結果が「データ異常なし」である場合（ステップＳ３１０；ＹＥＳ）、診断部１１３は、図６に示したとおり、比較処理部３０１から受信した第４制御データを反転処理する。反転処理された第４制御データの値は、図３に示した第１制御データと同じ値である。メモリアクセス処理部３０２は、診断部１１３から反転処理された第４制御データ、すなわち、第１制御データを受信し、反転処理して第２制御データを生成する。メモリアクセス処理部３０２は、第１制御データおよび第２制御データを、メモリ部１２の第１データ領域１２１および第２データ領域１２２に書き込ませる（ステップＳ３１１）。
【００８４】
診断部１１３は、診断対象となるデータの格納領域が残っているか否か判定する（ステップＳ３１２）。診断対象となるデータの格納領域が残っている場合（ステップＳ３１２；ＹＥＳ）、診断部１１３は診断対象アドレスをインクリメントする（ステップＳ３１３）。診断部１１３は、機器制御部１１１から機器制御用プログラムの開始要求が通知されているか否か判定する（ステップＳ３１４）。機器制御部１１１から機器制御用プログラムの開始要求が通知されていない場合（ステップＳ３１４；ＮＯ）、診断部１１３は、図１５Ａに示したステップＳ３０５に戻る。診断部１１３は、ステップＳ３０５以降のステップを実行する。
【００８５】
ここで、図１５Ａに示したステップＳ３０６において、比較処理部３０１から受信した比較結果が「データ異常なし」でなかった場合（ステップＳ３０６；ＮＯ）、診断部１１３はソフトエラーが生じたことを検出する（ステップＳ３１５）。また、図１５Ｂに示したステップＳ３１０において、比較処理部３０１から受信した比較結果が「データ異常なし」でなかった場合（ステップＳ３１０；ＮＯ）、診断部１１３は、メモリ部１２のメモリセルに固着故障が生じたことを検出する（ステップＳ３１６）。
【００８６】
続いて診断部１１３は、図１３に示した診断中断制御部３０３に、診断中断フラグをクリアさせる（ステップＳ３１７）。続いて診断部１１３は、診断結果を図１３に示した機器制御部１１１に通知する（ステップＳ３１９）。機器制御部１１１は、診断部１１３から受信した通知に基づいて、制御対象機器２に停止信号を送信する、情報処理装置１００よりも上位のコントロールシステムに異常が生じたことを通知する等の処理を行う。その後、診断部１１３は、図１５Ａに示したステップＳ３０１に戻り、ステップＳ３０１からステップＳ３１９までの処理をくり返す。
【００８７】
また、図１５Ａに示したステップＳ３０７、および、図１５Ｂに示したステップＳ３１４において、機器制御部１１１から機器制御用プログラムの開始要求が通知されている場合（ステップＳ３０７；ＹＥＳ、ステップＳ３１４；ＹＥＳ）、診断部１１３は、図１３に示した診断中断制御部３０３に、診断中断フラグをセットさせる（ステップＳ３１８）。診断部１１３は、診断結果を図１３に示した機器制御部１１１に通知する（ステップＳ３１９）。機器制御部１１１は、機器制御用プログラムを実行する。続いて、診断部１１３は、図１５Ａに示したステップＳ３０１に戻り、ステップＳ３０１からステップＳ３１９までの処理をくり返す。
【００８８】
また、図１５Ｂに示したステップＳ３１２において、診断対象となるデータの格納領域が残っていない場合（ステップＳ３１２；ＮＯ）、診断部１１３は、図１３に示した診断中断制御部３０３に、診断中断フラグをクリアさせる（ステップＳ３１７）。続いて、診断部１１３は、診断結果を図１に示した機器制御部１１１に通知する（ステップＳ３１９）。機器制御部１１１は、制御対象機器２を制御するためのプログラムを実行する。続いて、診断部１１３は、図１５Ａに示したステップＳ３０１に戻り、ステップＳ３０１からステップＳ３１９までの処理をくり返す。
【００８９】
以上のとおり、実施の形態３によれば、メモリ診断装置１Ａは、実施の形態１および２における効果に加え、診断対象アドレスをインクリメントした後、制御用プログラムの開始要求の有無を確認するように構成されているため、メモリ部１２の診断を中断した後、次の診断を実行する際、中断前の診断対象アドレスを再び診断することがなく、メモリ部１２に診断を効率的に実行することができる。
【００９０】
（変形例１）
上記の実施の形態１から実施の形態３において、図１および図１３に示した演算部１１に含まれる機器制御部１１１と、メモリ処理部１１２と、診断部１１３とを実現するためのハードウエア構成として、図２に示した各種データおよびデータを保存する記憶機器４０２と、各種プログラムを読み込む制御用メモリ４０３と、各種プログラムを実行するプロセッサ４０４とを用いるものとした。これに限らず、記憶機器４０２と、制御用メモリ４０３と、プロセッサ４０４とを合わせて、例えば、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）を用いて実現してもよい。
【００９１】
（変形例２）
上記の実施の形態１から実施の形態３において、図１および図１３に示した制御対象機器２を制御する機器制御部１１１を、メモリ診断装置１、１Ａの演算部１１に含むものとした。これに限らず、機器制御部１１１を、メモリ診断装置１、１Ａの外部に配置する構成としてもよい。
【００９２】
（変形例３）
上記の実施の形態１から実施の形態３では、メモリ診断処理として、図１０に示したステップＳ１０８、図１４Ｂに示したステップＳ２１１および図１５Ｂに示したステップＳ３１１において、第１制御データおよび第２制御データを、メモリ部１２の第１データ領域１２１および第２データ領域１２２に書き込ませる処理を行い、次のステップに移行させていた。しかしながら、図１０に示したステップＳ１０８を実行した後に、図１０に示したステップＳ１０３およびステップＳ１０４と同様の比較処理を、再度実行することとしてもよい。また、図１４Ｂに示したステップＳ２１１を実行した後に、図１４Ａに示したステップＳ２０５およびステップＳ２０６と同様の比較処理を、再度実行することとしてもよい。また、図１５Ｂに示したステップＳ３１１の実行の後に、ステップＳ３０５およびステップＳ３０６と同様の比較処理を、再度実行することとしてもよい。この場合、図１０に示したステップＳ１０８、図１４Ｂに示したステップＳ２１１および図１５Ｂに示したステップＳ３１１において、メモリ部１２の第１データ領域１２１および第２データ領域１２２に書き込ませた第１制御データおよび第２制御データに異常がないか確認することができる。
【００９３】
（変形例４）
上記の実施の形態１から実施の形態３では、第４制御データ及び第５制御データを生成する手段として、診断部１１３で第１制御データを反転処理して第４制御データを生成し、メモリアクセス処理部３０２で第４制御データを反転処理して第５制御データを生成するものとした。しかしながら、第４制御データ及び第５制御データの生成は、上記の実施の形態１から実施の形態３で述べた手段に限られない。例えば、第１制御データを診断部１１３で反転処理せず、メモリアクセス処理部３０２が、診断部１１３から第１制御データを受信し、第１制御データの値と同一の値を第５制御データとして生成するものとしてもよい。また、メモリアクセス処理部３０２が、第１制御データの値を反転処理し、第４制御データを生成するものとしてもよい。
【００９４】
（変形例５）
上記の実施の形態１から実施の形態３では、第４制御データから第１制御データおよび第２制御データを生成する手段として、診断部１１３で第４制御データを反転処理して第１制御データを生成し、メモリアクセス処理部３０２で第１制御データを反転処理して第２制御データを生成するものとした。しかしながら、第４制御データから第１制御データ及び第２制御データの生成は、上記の実施の形態１から実施の形態３で述べた手段に限られない。例えば、第４制御データを診断部１１３で反転処理せず、メモリアクセス処理部３０２が、診断部１１３から第４制御データを受信し、第４制御データの値と同一の値を第２制御データとして生成するものとしてもよい。また、メモリアクセス処理部３０２で第４制御データの値を反転処理し、第１制御データを生成するものとしてもよい。
【００９５】
また、本開示の実施の形態１から実施の形態３では、メモリ診断処理プログラムおよび診断の中断機能付きメモリ診断処理プログラムを、コンピュータが読み取り可能なＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ−ＲＯＭ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの記録媒体に格納して配布し、このプログラムをコンピュータにインストールすることにより、メモリ診断処理プログラムおよび診断の中断機能付きメモリ診断処理プログラムに含まれる機能を実現することができるコンピュータを構成してもよい。そして、各機能をＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）とアプリケーションとの分担、またはＯＳとアプリケーションとの協同により実現する場合には、アプリケーションのみを記録媒体に格納してもよい。
【００９６】
本開示は、本開示の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、この開示を説明するためのものであり、本開示の範囲を限定するものではない。すなわち、本開示の範囲は、実施の形態ではなく、請求の範囲によって示される。そして請求の範囲内及びそれと同等の開示の意義の範囲内で施される様々な変形が、この開示の範囲内とみなされる。
【産業上の利用可能性】
【００９７】
本開示は、メモリ診断装置に好適に利用することができる。
【符号の説明】
【００９８】
１、１Ａ  メモリ診断装置、２  制御対象機器、１１  演算部、１２  メモリ部、１００、１００Ａ  情報処理装置、１１１  機器制御部、１１２  メモリ処理部、１１３  診断部、１２１  第１データ領域、１２２  第２データ領域、３０１  比較処理部、３０２  メモリアクセス処理部、３０３  診断中断制御部、４０１  機器接続部、４０２  記憶機器、４０３  制御用メモリ、４０４  プロセッサ、４０６  バス。
【要約】
メモリ診断装置（１）は、制御対象機器（２）を制御するための第１制御データと第２制御データとを保存する第１データ領域（１２１）と第２データ領域（１２２）とを含む保存部と、第２制御データの値を反転させた第３制御データと第１制御データとが一致するか否かの比較処理を実行する比較処理部（３０１）と、比較処理部（３０１）に比較処理を実行させ、第１制御データと第３制御データとが一致する場合に、第１制御データの値を反転させた第４制御データを第１データ領域（１２１）に保存させ、第５制御データを第２データ領域（１２２）に保存させた後に、第５制御データの値を反転させて第４制御データと比較し、一致する場合に、第４制御データの値を反転させた値を第１データ領域（１２１）に保存させ、第４制御データの値と同一の値を第２データ領域（１２２）に保存させる、診断処理を実行する診断部（１１３）とを備える。【図１】
0006884298.tif 000002
【図２】
0006884298.tif 000003
【図３】
0006884298.tif 000004
【図４】
0006884298.tif 000005
【図５】
0006884298.tif 000006
【図６】
0006884298.tif 000007
【図７】
0006884298.tif 000008
【図８】
0006884298.tif 000009
【図９】
0006884298.tif 000010
【図１０】
0006884298.tif 000011
【図１１Ａ】
0006884298.tif 000012
【図１１Ｂ】
0006884298.tif 000013
【図１２Ａ】
0006884298.tif 000014
【図１２Ｂ】
0006884298.tif 000015
【図１３】
0006884298.tif 000016
【図１４Ａ】
0006884298.tif 000017
【図１４Ｂ】
0006884298.tif 000018
【図１５Ａ】
0006884298.tif 000019
【図１５Ｂ】
0006884298.tif 000020