(57)【特許請求の範囲】
【請求項１】
機械または設備を制御する制御システムであって、
記憶部と、
前記記憶部のメモリ空間へ書込んだデータまたは前記メモリ空間から読出したデータに対するエラーの有無を診断する診断手段と、
前記診断手段による診断結果に応じた処理を実行する処理実行手段と、
前記メモリ空間のうち前記診断手段を有効に適用する範囲を設定する設定手段とを備え、
前記処理実行手段は、前記メモリ空間のうち前記診断手段を有効に適用する範囲の設定に基づいて、当該範囲内のデータにエラーの存在が検出された場合に、必要な処理を実行し、
前記設定手段は、前記記憶部の前記メモリ空間のうちデータが有効に記憶されている領域を表示するとともに、当該表示内容に対して前記範囲の設定を受付ける、制御システム。
【請求項２】
前記設定手段は、前記記憶部の前記メモリ空間のうちデータが有効に記憶されている領域をマップ表示するとともに、前記範囲の設定として、当該マップに対して開始位置および終了位置の設定を受付ける、請求項１に記載の制御システム。
【請求項３】
前記設定手段は、実行されるプログラム、プログラムで利用される変数、プログラムで利用されるデータの少なくとも一部を含む項目に対して、前記診断手段を有効に適用する対象の設定をさらに受付ける、請求項１または２に記載の制御システム。
【請求項４】
前記診断手段を有効に適用する範囲は、前記処理実行手段において実行される実行プログラムの生成段階で動的に設定される、請求項３に記載の制御システム。
【請求項５】
前記診断手段は、前記設定手段により設定されている範囲外のデータについては、エラーの有無を診断しない、請求項１〜４のいずれか１項に記載の制御システム。
【請求項６】
前記処理実行手段は、前記設定手段により設定されている範囲外のデータについては、前記診断手段によりエラーの存在が検出されても、前記必要な処理を実行しない、請求項１〜４のいずれか１項に記載の制御システム。
【請求項７】
前記メモリ空間のうち前記診断手段を有効に適用する範囲を示す情報を出力する出力手段をさらに備える、請求項１〜６のいずれか１項に記載の制御システム。
【請求項８】
前記メモリ空間には、書込対象のデータと当該データに応じて算出される冗長符号とが併せて書込まれており、
前記診断手段は、前記メモリ空間から読出されたデータと対応する冗長符号とが整合するか否かに基づいて、エラーの有無を診断する、請求項１〜７のいずれか１項に記載の制御システム。
【請求項９】
前記診断手段は、書込対象のデータを前記メモリ空間の指定された領域に書込むとともに、当該書込んだデータを読出し、当該読出したデータの内容に基づいて、エラーの有無を診断する、請求項１〜７のいずれか１項に記載の制御システム。
【請求項１０】
前記診断手段は、書込対象のデータを前記メモリ空間の指定された第１の領域および当該第１の領域と対応付けられる第２の領域のそれぞれに書込むとともに、当該書込んだそれぞれのデータを読出して比較することで、エラーの有無を診断する、請求項１〜７のいずれか１項に記載の制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ空間に格納されるデータに対する診断機能を有する制御装置に関する。
【背景技術】
【０００２】
ストアドプログラム方式のコンピュータは、主記憶に配置されたプログラムを逐次実行する。このようなプログラムおよびプログラムの実行時に必要な変数などのデータは、電荷などの電気的な作用を利用して記憶される。
【０００３】
電気的な作用を利用して記憶されるデータは、宇宙線、静電気、その他の外乱といった様々な電気的なノイズの影響を受けて、その記憶している値が破損または変化する場合がある。このようなデータに対するエラー耐性を高めるための様々な方法が知られている。
【０００４】
データを格納する際にパリティビットと称される誤り検査符号を付加するとともに、データ読出し時に、その読出したデータと対応するパリティビットとを比較することで、誤りの有無および誤りの訂正を行うような技術が知られている。このような機能を搭載したメモリはＥＣＣ（Error Check and Correct memory）メモリなどと称される。
【０００５】
特開２００９−１４６１６８号公報（特許文献１）は、バックアップ機能付きのＩＯメモリ仕様とＥＣＣ機能付きのＩＯメモリ仕様とに低コストに対応可能としたＰＬＣ用の部品実装基板を提供する技術を開示する。
【０００６】
一方で、特開２００９−１４６１６８号公報（特許文献１）に開示されるようなＥＣＣ機能付きのＩＯメモリは、ＥＣＣ機能を実現するための回路構成およびパリティビットを格納するための付加的な容量が必要になるため、ＥＣＣ機能なしのメモリに比べればコスト的に不利である。そこで、ＥＣＣ機能なしのメモリであってもデータの破損または誤読を防止するためのメモリ自己診断機能が採用されることがある。
【０００７】
メモリ自己診断機能は、プロセッサで実行されるプログラムまたはメモリを読出す回路などにソフトウェア的に実装されるものであり、データ書込み時にＣＲＣ（Cyclic Redundancy Check）などの誤り検出符号を付加しておき、データ読出し時に読出したデータを対応する誤り検出符に基づいて診断する機能である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−１４６１６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述したようなメモリ自己診断機能は、ソフトウェア的に実装されることが多いため、基本的には、書込みおよび読出し対象のデータのすべてが診断対象となる。一方で、書込みおよび読出し対象のデータの中には、エラーが許されないものと、ある程度のエラーが許容されるものとが存在し得る。そのため、メモリ自己診断機能をすべてのデータに対して一律に適用すると、データに発生したエラーに対して過剰な処理を実行することになり得る。
【００１０】
本発明は、上記のような点を考慮してなされたものであり、その目的は、データに生じ得るエラーに対する処理を状況に応じて設定可能な制御装置を提供することにある。
【課題を解決するための手段】
【００１１】
本発明のある局面に従う、機械または設備を制御する制御装置は、記憶部と、記憶部のメモリ空間へ書込んだデータまたはメモリ空間から読出したデータに対するエラーの有無を診断する診断手段と、診断手段による診断結果に応じた処理を実行する処理実行手段とを含む。処理実行手段は、メモリ空間のうち診断手段を有効に適用する範囲の設定に基づいて、当該範囲内のデータにエラーの存在が検出された場合に、必要な処理を実行する。
【００１２】
好ましくは、制御装置は、メモリ空間のうち診断手段を有効に適用する範囲の設定を受付ける設定手段をさらに含む。
【００１３】
好ましくは、制御装置は、外部からに指令に応じて、メモリ空間のうち診断手段を有効に適用する範囲を設定する設定手段をさらに含む。
【００１４】
好ましくは、設定手段は、記憶部のメモリ空間のうちデータが有効に記憶されている領域を表示するとともに、当該表示内容に対して範囲の設定を受付ける。
【００１５】
好ましくは、診断手段を有効に適用する範囲は、処理実行手段において実行される実行プログラムの生成段階で動的に設定される。
【００１６】
好ましくは、診断手段は、設定手段により設定されている範囲外のデータについては、エラーの有無を診断しない。
【００１７】
好ましくは、処理実行手段は、設定手段により設定されている範囲外のデータについては、診断手段によりエラーの存在が検出されても、必要な処理を実行しない。
【００１８】
好ましくは、制御装置は、外部装置に対して、メモリ空間のうち診断手段を有効に適用する範囲を示す情報を出力する出力手段をさらに含む。
【００１９】
好ましくは、メモリ空間には、書込対象のデータと当該データに応じて算出される冗長符号とが併せて書込まれており、診断手段は、メモリ空間から読出されたデータと対応する冗長符号とが整合するか否かに基づいて、エラーの有無を診断する。
【００２０】
好ましくは、診断手段は、書込対象のデータをメモリ空間の指定された領域に書込むとともに、当該書込んだデータを読出し、当該読出したデータの内容に基づいて、エラーの有無を診断する。
【００２１】
好ましくは、診断手段は、書込対象のデータをメモリ空間の指定された第１の領域および当該第１の領域と対応付けられる第２の領域のそれぞれに書込むとともに、当該書込んだそれぞれのデータを読出して比較することで、エラーの有無を診断する。
【発明の効果】
【００２２】
本発明によれば、データに生じ得るエラーに対する処理を状況に応じて設定可能な制御装置を提供できる。
【図面の簡単な説明】
【００２３】
【図１】本実施の形態に従うメモリ自己診断機能の概要を説明するための模式図である。
【図２】本実施の形態に従うメモリ自己診断機能を実装したシステムの構成例を示す模式図である。
【図３】本実施の形態に従うメモリ自己診断機能の適用を可変にする処理を説明するための模式図である。
【図４】本実施の形態に従うセーフティコントローラのハードウェア構成例を示す模式図である。
【図５】本実施の形態に従うメモリ自己診断機能を実現するための処理手順を説明するための図である。
【図６】本実施の形態に従うメモリ自己診断機能を実現するための処理手順を説明するための図である。
【図７】本実施の形態に従うメモリ自己診断機能を有効に適用するメモリエリアの設定方法を説明するための図である。
【図８】本実施の形態に従うメモリ自己診断機能を有効に適用するメモリエリアの別の設定方法を説明するための図である。
【図９】本実施の形態に従うメモリ自己診断機能を有効に適用するメモリエリアのさらに別の設定方法を説明するための図である。
【図１０】本実施の形態に従うメモリ自己診断機能についてのメモリエリアを設定するための実装例を示す模式図である。
【図１１】本実施の形態に従うメモリ自己診断機能についてのメモリエリアの設定内容を確認するための実装例を示す模式図である。
【図１２】本実施の形態に従うメモリ自己診断機能の適用に係る処理手順を示すフローチャートである。
【発明を実施するための形態】
【００２４】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２５】
＜Ａ．背景・課題・解決手段＞
まず、本実施の形態に従う制御装置に係る背景および課題、ならびに、その課題に対する解決手段について概要を説明する。図１は、本実施の形態に従うメモリ自己診断機能の概要を説明するための模式図である。
【００２６】
図１を参照して、プロセッサ１０がメモリ空間２０にアクセスする場合のメモリ自己診断機能について説明する。メモリ自己診断機能は、記憶部のメモリ空間へ書込んだデータまたはメモリ空間から読出したデータに対するエラーの有無を診断する機能であり、診断手段に相当する。
【００２７】
例えば、プロセッサ１０がメモリ空間２０にアクセスして、あるデータをメモリ空間２０に書込んだ後、当該書込んだデータを再度読出して、書込んだデータとの一致／不一致を判断する。例えば、データ「０１０１」をメモリ空間２０に書込んだ後、メモリ空間２０から当該書込んだデータを読出したときに、データ「０１０１」であれば、正しく書込みおよび読出しができていると判断できる。一方、データ「０１０１」をメモリ空間２０に書込んだにもかかわらず、データ「０１００」が読出された場合には、データの書込みまたは読出しが適切に行われていないと判断できる。
【００２８】
このようなデータの書込みまたは読出しが適切に行われない理由としては、宇宙線、静電気、その他の外乱といった様々な電気的なノイズ（一時的な外的要因）の影響が想定される。なお、メモリ空間の値が一時的に破損または誤読される故障モードをソフトエラーとも称す。このような一時的な外的要因によるソフトエラーについては、一般的に、再現性が低いため、根本的な原因の追求が難しい。その結果、効果的な再発防止策を立てることが容易ではない。
【００２９】
メモリ自己診断機能は、高い信頼性が要求される設備などに導入される。一例として、製造現場などに配置された機械を安全に使用するため用いられる機能安全デバイスなどが挙げられる。機能安全デバイスの典型例として、セーフティコントローラには、メモリ自己診断機能が実装されることが一般的である。
【００３０】
図２は、本実施の形態に従うメモリ自己診断機能を実装したシステムの構成例を示す模式図である。図２を参照して、セーフティコントローラ１００は、ネットワーク１５２を介してＰＬＣ（Programmable Logic Controller）１５０と接続されており、機械または設備の安全に係る監視処理を実行する。セーフティコントローラ１００は、何らのイベントが発生し、機械または設備の安全を維持する必要があると判断した場合には、ＰＬＣ１５０に対して対象設備の停止などを指令する。
【００３１】
また、フェールセーフの思想から、セーフティコントローラ１００自体に何らかの異常が生じた場合にも、ＰＬＣ１５０に対して停止指令を与えるようになっている。これは、セーフティコントローラ１００の監視機能が喪失された場合などを想定している。
【００３２】
上述のメモリ自己診断機能が採用されたセーフティコントローラ１００において、内部メモリなどにおいて何らかのエラーを検出すると、セーフティコントローラ１００からＰＬＣ１５０に対して停止指令が出力される。このような停止指令が与えられることで、ＰＬＣ１５０が制御する設備は停止することになり、稼働率などを低下させてしまう。
【００３３】
ここで、セーフティコントローラ１００で扱うデータのすべてが重要なものとは限らない。すなわち、セーフティコントローラ１００が機能安全を実現するために必要なデータと、それ以外の付加的なデータとが存在し得る。このような場合、付加的なデータに発生した何らかのエラーを検出した場合にも設備を停止させてしまうことは、安全の確保と設備の稼働率の維持とのバランスを欠く結果となり得る。
【００３４】
そこで、本実施の形態に従う制御装置では、セーフティコントローラ１００が扱うデータの重要度などに応じて、メモリ自己診断機能の適用の有無、および、メモリ自己診断機能によるエラー検出結果の利用形態、などを異ならせるようにする。
【００３５】
簡単な処理形態として、セーフティコントローラ１００において実行されるセーフティクリティカルな処理に関連するメモリエリアに対してのみメモリ自己診断機能を適用し、それ以外のメモリエリアに対してはメモリ自己診断機能を適用しないといった方法を採用する。本明細書において、「セーフティクリティカルな処理」とは、例えば、国際規格によって定義された機能安全を実現するために必要な処理を意味する。
【００３６】
図３は、本実施の形態に従うメモリ自己診断機能の適用を可変にする処理を説明するための模式図である。図３には、例えば、揮発性の記憶装置であるＲＡＭ（Random Access Memory）および不揮発性の記憶装置であるフラッシュメモリの各メモリエリア２２を、セーフティクリティカルな処理に必要なデータを格納するメモリエリア２６と、それ以外のメモリエリア２８とに分類する例を示す。なお、メモリエリア２８には、セーフティクリティカルな処理以外の処理に必要なデータが格納されている場合もあるし、何らの有効なデータも格納されていない場合もある。
【００３７】
図３に示すセーフティクリティカルな処理に必要なデータを格納するメモリエリア２６に対してはメモリ自己診断機能が有効に適用される一方で、それ以外のメモリエリア２８については、メモリ自己診断機能は無効化される。
【００３８】
「メモリ自己診断機能を有効に適用する」とは、メモリ自己診断機能が有している本来の機能を利用することを意味する。すなわち、メモリ自己診断機能が有効に適用されている場合には、メモリ自己診断機能による診断結果に応じた処理、例えば、データ内にエラーが検出された場合には、ＰＬＣ１５０に対して対象設備の停止などを指令するなど（図２参照）が実行される。
【００３９】
このように、本実施の形態に従う制御装置においては、セーフティクリティカルな処理に必要なデータを格納するとして設定されているメモリエリア２６内のデータにエラーの存在が検出された場合には、そのエラーに応じて必要な処理が実行される。
【００４０】
これに対して、「メモリ自己診断機能を無効にする」とは、メモリ自己診断機能が有している本来の機能の全部または一部を利用しないことを意味する。具体的には、メモリエリア２８に対しては、メモリ自己診断機能によるエラー検出自体が行われない、あるいは、メモリ自己診断機能によって何らかのエラーが検出されたとしても、それ以上の処理は実行されない。さらに、メモリ自己診断機能によって何らかのエラーが検出された場合には、本来の設備の停止ではなく、当該エラーに関連する誤りを自動的に訂正するようにしてもよい。あるいは、元データが存在する場合には、自動的にリストアするようにしてもよい。
【００４１】
本実施の形態に従う制御装置においては、メモリ自己診断機能は、セーフティクリティカルな処理に必要なデータを格納するとして設定されているメモリエリア２６外のデータについては、エラーの有無を診断しないようにしてもよい。あるいは、セーフティクリティカルな処理に必要なデータを格納するとして設定されているメモリエリア２６外のデータについては、エラーの存在が検出されても、そのエラーに応じた必要な処理が実行されないようにしてもよい。
【００４２】
本実施の形態によれば、メモリ自己診断機能を適用するメモリエリアおよび対象のデータをフレキシブルに設定／解放することで、必要以上のフェールセーフ動作を回避して、必要な機能安全を維持しつつ、設備全体の稼働率も高めることができる。
【００４３】
メモリエリア２６とメモリエリア２８との境界２４は、ユーザが指定および／または調整できるようにしてもよい。あるいは、セーフティコントローラ１００で実行されるプログラムの開発環境（コンパイラ、アセンブラ）などが構文解析またはオブジェクト解析によって、境界２４の位置を決定するようにしてもよい。
【００４４】
この場合、境界２４の位置は、物理的な位置として定義されてもよいし、論理的な位置として定義されてもよい。論理的な位置として定義される場合には、物理的なメモリエリア上では、離散的にエリアが設定されることもある。本実施の形態において、データ毎に処理種別が区分できるのであれば、各メモリエリアの設定はどのような態様であってもよい。
【００４５】
図３には、説明の便宜上、メモリ自己診断機能を適用するメモリエリアとそれ以外のメモリエリアとをそれぞれ定義する設定例、すなわち、メモリ自己診断機能を有効化するか否かの２段階の設定例について説明したが、より多くの種類に分類して設定してもよい。例えば、メモリ自己診断機能により何らかのエラーが検知されると処理を停止する第１のメモリエリアと、メモリ自己診断機能により何らかのエラーが検知されると警告を発しつつも処理を継続する第２のメモリエリアと、メモリ自己診断機能を適用しない第３のメモリエリアとの３種類を設定してもよいし、さらに多数の処理のうちからいずれかを設定するようにしてもよい。
【００４６】
＜Ｂ．セーフティコントローラのハードウェア構成例＞
次に、本実施の形態に従う制御装置の一例であるセーフティコントローラ１００のハードウェア構成の一例について説明する。図４は、本実施の形態に従うセーフティコントローラ１００のハードウェア構成例を示す模式図である。
【００４７】
図４を参照して、セーフティコントローラ１００は、ＰＬＣに類似したハードウェア構成を有しており、主たるコンポーネントとして、プロセッサ１０２と、データコントローラ１０４と、ＲＡＭ１０６と、フラッシュメモリ１０８と、ローカル通信インターフェイス（Ｉ／Ｆ：Interface）１１０と、ネットワークインターフェイス１１２と、内部バスコントローラ１１４と、フィールドバスコントローラ１１６とを含む。
【００４８】
プロセッサ１０２は、フラッシュメモリ１０８などに予めインストールされたシステムプログラムおよびユーザプログラムなどを実行する演算主体である。
【００４９】
データコントローラ１０４は、プロセッサ１０２と各コンポーネントとの間のデータ遣り取りを仲介する。
【００５０】
ＲＡＭ１０６は、プロセッサ１０２により実行されるプログラムのコードおよびプログラムの実行に必要なワークデータなどを一時的に格納する。フラッシュメモリ１０８は、プロセッサ１０２により実行されるシステムプログラムおよびユーザプログラムなどを不揮発的に格納する。
【００５１】
ローカル通信インターフェイス１１０は、ＵＳＢ（Universal Serial Bus）などを介して、図示しないサポート装置などとの間でデータを遣り取りする。ネットワークインターフェイス１１２は、イーサネット（登録商標）などによって、他の情報処理装置（ＰＬＣやサーバ装置など）との間でデータを遣り取りする。
【００５２】
内部バスコントローラ１１４は、内部バスを介して、図示しないＩＯ（Input Output）ユニットなどとの間でデータを遣り取りする。フィールドバスコントローラ１１６は、フィールドバスを介して、図示しないリモートＩＯ装置に装着されたＩＯユニットなどとの間でデータを遣り取りする。
【００５３】
本実施の形態に従うメモリ自己診断機能が対象とする記憶部としては、典型的には、図４に示されるＲＡＭ１０６およびフラッシュメモリ１０８などが挙げられるが、これらに限るものではない。基本的には、データを格納するためのメモリ空間が存在するものであれば、どのようなものにもメモリ自己診断機能を適用できる。例えば、プロセッサに付随するキャッシュメモリやレジスタ、ＩＯユニット内の不揮発性メモリやレジスタなどについても対象となる。
【００５４】
本実施の形態に従うメモリ自己診断機能による診断結果に応じた処理を実行する処理実行手段としては、図４に示されるプロセッサ１０２が挙げられるが、これに限らず、メモリ自己診断機能により検出されたエラーに応じて、処理を実行可能なものであれば、どのようなものを採用してもよい。
【００５５】
本実施の形態に従うメモリ自己診断機能は、任意の方法で実装することが可能である。例えば、プロセッサ１０２にて実行されるシステムプログラムの一部に含まれるドライバプログラム１１８により実装してもよい。あるいは、データコントローラ１０４の一機能として、ＩＣ（Integrated Circuited）やＬＳＩ（Large Scale Integrated circuited）などのハードワイヤード回路を用いて実現してもよいし、マイクロプロセッサがファームウェアを実行することで実現してもよい。この場合、任意の構成によって実装された自己診断ロジック１２０がデータコントローラ１０４に搭載されることになる。
【００５６】
本実施の形態に従うメモリ自己診断機能は、図４に示すようなセーフティコントローラ１００に限らず、機械または設備を制御する制御装置（例えば、ＰＬＣなど）の全般に亘って適用が可能である。また、セーフティコントローラやＰＬＣの主演算部だけではなく、ＩＯユニットやリモートＩＯ装置などの副次的な処理部にも適用可能である。
【００５７】
＜Ｃ．メモリ自己診断機能＞
次に、本実施の形態に従うメモリ自己診断機能の具体的な処理手順の一例について説明する。本実施の形態に従うメモリ自己診断機能は、記憶部のメモリ空間へ書込んだデータまたはメモリ空間から読出したデータに対するエラーの有無を診断する。図５および図６は、本実施の形態に従うメモリ自己診断機能を実現するための処理手順を説明するための図である。
【００５８】
図５および図６には、メモリ空間において、書込対象のデータと当該データに応じて算出される冗長符号とが併せて書込まれている形態を示す。このような冗長符号の一例として、ＣＲＣが知られている。ＣＲＣは、対象のデータから予め定められた多項式を用いて算出される。メモリ自己診断機能は、メモリ空間から読出されたデータと対応する冗長符号（ＣＲＣ）とが整合するか否かに基づいて、エラーの有無を診断する。
【００５９】
図５には、応用例として、データ読戻し方式を示す。データ読戻し方式は、何らかのデータをメモリ空間に書込む際に、一旦データを書込んだ後に、当該書込んだデータの読出し結果が適正であるか否かを判断する手法である。すなわち、メモリ自己診断機能は、書込対象のデータをメモリ空間の指定された領域に書込むとともに、当該書込んだデータを読出し、当該読出したデータの内容に基づいて、エラーの有無を診断する。
【００６０】
具体的には、いずれかのメモリ空間に書込むべきデータが入力されると（（１）データ入力）、当該入力されたデータにＣＲＣが付加された上で（（２）ＣＲＣ付加）、指定されたメモリ空間に書込まれる（（３）書込み）。その直後、当該メモリ空間から書込まれたデータが読出される（（４）読出し）、そして、読出したデータとＣＲＣとを比較することで、入力されたデータが正しく書込まれているか否かを判断する（（５）検証）。すなわち、検証工程においては、読出したデータから先に用いられた多項式を用いて算出されるＣＲＣの値が、読出したＣＲＣの値と一致するか否かが判断される。両者が一致すれば、入力されたデータが正しく書込まれていると判断でき、そうでなければ、データ書込みに何らかの不具合が発生しと判断される。
【００６１】
正しく書込まれたデータは、その後に与えられる読出し指令に応答して、読出されて出力される。（（６）読出し、および、（７）データ出力）。
【００６２】
このように、データ読戻し方式によれば、データを書込んだときに、その書込まれたデータの完全性が随時検証される。
【００６３】
なお、メモリ空間に書込まれるデータに当該データから算出されるＣＲＣが付加されている場合には、書込まれているデータの完全性を対応するＣＲＣを用いて任意のタイミングで検証できる。例えば、メモリ空間に適切に書込まれたデータの一部が電気的なノイズによって事後的に変化することも想定される。このような事後的なデータの変化に対しても、ＣＲＣを用いることで検出することができる。
【００６４】
そのため、図５に示すデータ読戻し方式に加えて、あるいは、データ読出し方式に代えて、ＣＲＣを用いてデータの完全性を検証する方式を採用してもよい。
【００６５】
図６には、データ多重方式の例を示す。データ多重方式は、何らかのデータをメモリ空間に書込む際に、書込まれたデータ同士を比較することで、エラーの有無を診断する。
【００６６】
具体的には、いずれかのメモリ空間に書込むべきデータが入力されると（（１）データ入力）、当該入力されたデータにＣＲＣが付加された上で（（２）ＣＲＣ付加）、指定されたメモリ空間および当該メモリ空間の双対となるメモリ空間にそれぞれ同一のデータ（入力されたデータ＋ＣＲＣ）が書込まれる（（３）多重書込み）。その直後、または、読出し指令が与えられたときに、互いに対応付けられているメモリ空間からそれぞれデータが読出されて比較される（（４）読出し、および、（５）比較）。両データが一致すれば、入力されたデータが正しく書込まれていると判断でき、そうでなければ、データ書込みに何らかの不具合が発生しと判断される。正しく書込まれたデータは、読出し結果として出力されてもよい（（７）データ出力）。
【００６７】
このように、データ多重方式によれば、データを書込んだときに、その書込まれたデータの完全性が随時検証される。なお、データ多重方式については、任意のタイミングで、保持されているデータの妥当性を評価できる。例えば、メモリ空間に書込まれたいずれかのデータが事後的に変化した場合であっても、対になっているデータの両方が同じように変化する可能性は極めて低いので、両データを対比させることで、データの部分的な欠損や不整合を検出できる。
【００６８】
なお、図６においては、データにＣＲＣを付加する構成について例示するが、データ多重方式においては、書込まれたデータ同士を比較すればよいので、ＣＲＣは必須ではない。但し、ＣＲＣを付加することで、事後的なデータの完全性を検証できるようになるというさらなる利点がある。
【００６９】
メモリ自己診断機能を実現する方法としては、図５および図６に示す方法に限らず、書込んだデータの完全性および妥当性を検証できる手法であれば、どのような方法を採用してもよい。
【００７０】
＜Ｄ．メモリ自己診断機能を有効に適用するメモリエリアの設定方法および運用＞
上述したように、本実施の形態に従う制御装置は、メモリ空間のうちメモリ自己診断機能を有効に適用する範囲の設定を行うための設定機能を有している。次に、図３に示すように、セーフティコントローラ１００がアクセス可能なメモリエリアのうち、メモリ自己診断機能を有効に適用するメモリエリアを設定する方法および運用について説明する。
【００７１】
（ｄ１：設定主体）
典型例において、セーフティコントローラ１００がアクセス可能なメモリエリアのうち、メモリ自己診断機能を有効に適用するメモリエリアは、制御装置のメーカによって、あるいは、製造段階において、予め設定されていてもよい。この場合、予め設定されたメモリエリアをユーザが変更できないようにしてもよいし、ユーザが用途や使用環境に応じて適宜変更できるようにしてもよい。前者の場合には、後述するようなメモリエリアを設定するための手段はユーザに対して提供されず、メーカ側でのみ使用されてもよい。
【００７２】
あるいは、メーカ出荷段階においては、すべてのメモリエリアがメモリ自己診断機能を有効に適用する対象にデフォルト設定されており、ユーザが用途や使用環境に応じて、適宜変更するようにしてもよい。
【００７３】
（ｄ２：メモリエリアの直接設定）
例えば、不揮発性のフラッシュメモリなどに格納（インストール）されるプログラムなどは、基本的には、格納された位置が事後的に変化することはないので、格納された静的な状態で、メモリ自己診断機能を有効に適用するメモリエリアをマニュアル設定することができる。
【００７４】
図７は、本実施の形態に従うメモリ自己診断機能を有効に適用するメモリエリアの設定方法を説明するための図である。セーフティコントローラ１００には、セーフティプログラムなどの開発環境、デバッグ環境などを提供するサポート装置が接続される。このようなサポート装置上に、図７に示すような設定画面２００が表示される。
【００７５】
ユーザは、サポート装置を操作して、設定画面２００上で、メモリ自己診断機能を有効に適用するメモリエリアを設定する。具体的には、設定画面２００には、対象のメモリ空間の使用状態を示すマップ２０２が表示されている。マップ２０２は、メモリエリアのアドレスに対応付けて視覚化されており、このマップ２０２のアドレスに関連付けて、メモリエリアを設定するための複数のスライダーが表示可能になっている。
【００７６】
マップ２０２内において、データが記憶されている領域２０４，２０６は、他の領域とは異なる表示態様で表示されている。ユーザは、マップ２０２内のデータが格納されている領域を参照しつつ、スライダー２１２，２１６，２２２，２２６を操作して、メモリ自己診断機能を有効に適用するメモリエリアを設定する。
【００７７】
このように、メモリ空間のうちメモリ自己診断機能を有効に適用する範囲の設定を受付ける設定機能として、記憶部のメモリ空間のうちデータが有効に記憶されている領域を表示するとともに、当該表示内容に対して範囲の設定を受付ける。
【００７８】
図７に示す例では、スライダー２１２がメモリエリアの開始位置２１０を規定し、スライダー２１６がメモリエリアの終了位置２１４を規定する。この結果、開始位置２１０から終了位置２１４までの範囲がメモリエリア２１８として設定される。
【００７９】
図７に示す例では、領域２０４と領域２０６とが離れて位置しているので、領域２０６に関連付けて、スライダー２２２，２２６が表示されている。すなわち、スライダー２２２がメモリエリアの開始位置２２０を規定し、スライダー２２６がメモリエリアの終了位置２２４を規定する。この結果、開始位置２２０から終了位置２２４までの範囲がメモリエリア２２８として設定される。
【００８０】
このような手順によって、メモリ空間のうち、メモリエリア２１８およびメモリエリア２２８がメモリ自己診断機能を有効に適用する範囲として設定されることになる。逆に言えば、メモリ空間のうち、メモリエリア２１８およびメモリエリア２２８以外のメモリエリアについては、メモリ自己診断機能が無効化される。すなわち、データが格納されていないメモリエリアにおいて、何らかの外的要因によってエラーが生じたとしても、機能安全を実現するために必要な処理が何ら阻害されることはない。むしろ、データが格納されていないメモリエリアにおいて生じたエラーに起因して設備を停止させることで、稼働率が低下することの方が問題になり得る。本実施の形態に従う方法によって、メモリ自己診断機能を有効に適用するメモリエリアを適切に設定することで、上述のような互いに相反する課題をバランスさせて、解決することができる。
【００８１】
（ｄ３：セーフティプログラムの作成時における設定）
セーフティコントローラ１００にて実行されるセーフティプログラムは、変数プログラムにより生成される場合がある。プログラムソースコードでは、必要なデータが変数の形で指定されるので、実際のメモリ空間のいずれに対象のデータが格納されるのかがユーザには見えない場合も多い。
【００８２】
そこで、セーフティプログラムの生成段階において、プログラムソースコードなどを参照して、対象のデータが格納されるメモリエリアを自動的に設定するようにしてもよい。
【００８３】
図８は、本実施の形態に従うメモリ自己診断機能を有効に適用するメモリエリアの別の設定方法を説明するための図である。
【００８４】
サポート装置を用いてセーフティプログラムを生成する過程で、図８（ａ）に示すような設定画面３００が表示される。設定画面３００においては、セーフティコントローラ１００において実行されるプログラムおよび各プログラムで利用される変数やデータなどが一覧表示されている（符号３０４）。ユーザは、メモリ自己診断機能を有効に適用する対象を選択する。具体的には、各項目に対応付けてチェックボックス３０２が表示されており、ユーザは、メモリ自己診断機能を有効に適用すべき対象の項目をチェックにより選択することができる。
【００８５】
なお、機能安全に係るプログラムや関連するデータ（図８（ａ）に示す例では、「セーフティプログラム」、「システム変数」、「内部変数」など）については、チェックを外す、すなわちメモリ自己診断機能を有効に適用すべき対象から除外することを禁止するようにしてもよい。このような制約を設けることで、機能安全に必要なデータに対しては、必ず、メモリ自己診断機能が有効に適用されることが保障される。
【００８６】
図８（ａ）に示す設定画面３００においてなされたユーザ設定に従って、図８（ｂ）に示すような処理手順に従って、メモリ自己診断対象エリア情報３４０が生成される。すなわち、セーフティプログラムコード３１２と、デバック用プログラムコード３１４と、設定・構成情報３１６などを含むプロジェクトデータ３１０に対して、解析処理や変換処理が実施される。
【００８７】
より具体的には、パーサ３２２、アセンブラ３２４、コンパイラ３２６を含むプログラム群３２０が順次プロジェクトデータ３１０に対して処理を行うことで、プログラムソースコードの解析や、オブジェクトの配置位置の決定などが行われ、実行コードが生成される際に、メモリ空間のいずれのメモリエリアが使用されるのかが決定される。そして、図８（ａ）に示す設定画面３００においてチェックが付与された種類のデータについて、各データが配置されるメモリ空間から、メモリ自己診断対象エリア情報３４０が生成される。このように、メモリ自己診断機能を有効に適用する範囲は、処理実行手段であるプロセッサにおいて実行される実行プログラムであるセーフティプログラムの生成段階で動的に設定されてもよい。
【００８８】
セーフティプログラムが実行される際には、メモリ自己診断対象エリア情報３４０が参照されて、メモリ自己診断機能を有効に適用するメモリエリアが設定される。
【００８９】
このような処理によってメモリ自己診断機能を有効に適用するメモリエリアを設定することで、変数プログラムのような、メモリ空間のうちいずれのメモリエリアにデータが配置されるのかがユーザには分からないような場合であっても、メモリ自己診断機能を有効に適用するメモリエリアを適切に設定できる。
【００９０】
（ｄ４：データ配置位置が動的に変更されるシステムでの設定）
セーフティコントローラ１００にてセーフティプログラムの実行中には、ワークデータの生成および更新が逐次実施される。このようなデータの動的な生成および更新に伴って、メモリ空間のうちデータの格納に使用されるメモリエリアは時間的に変化する。このような時間的に変化するメモリエリアに対しては、メモリ自己診断機能を有効に適用するメモリエリアを動的に設定することが好ましい。そこで、セーフティコントローラ１００で実行されるメモリマネージャやスケジューラなどを利用して、メモリ自己診断機能を有効に適用するメモリエリアを逐次変更するように設定してもよい。
【００９１】
図９は、本実施の形態に従うメモリ自己診断機能を有効に適用するメモリエリアのさらに別の設定方法を説明するための図である。図９に示す設定画面４００においては、メモリ自己診断機能を有効に適用する範囲を、メモリ空間のすべてのメモリエリアとするのか、あるいは、現実にデータの格納に利用されている一部のメモリエリアだけにするのかをユーザは選択できる。
【００９２】
設定画面４００でのユーザ設定に応じて、セーフティコントローラ１００のメモリマネージャおよびスケジューラは、所定周期毎にメモリ空間のうちデータの格納に使用されているメモリエリアを取得し、その取得したメモリエリアに対してのみ、メモリ自己診断機能が実行されるように処理する。
【００９３】
このような設定機能を設けることで、メモリ空間のうちデータの格納に使用されるメモリエリアの大きさや位置が変化した場合であっても、メモリ自己診断機能を効率的に適用するとともに、設備の不要な停止の可能性を低減できる。
【００９４】
（ｄ５：設定するための実装例）
上述のようなメモリ自己診断機能を有効に適用するメモリエリアを設定するための実装例について説明する。図１０は、本実施の形態に従うメモリ自己診断機能についてのメモリエリアを設定するための実装例を示す模式図である。
【００９５】
図１０（ａ）に示すように、例えば、セーフティコントローラ１００に対してサポート装置１６０が接続されている場合を想定する。ユーザは、サポート装置１６０を操作して、セーフティコントローラ１００においてメモリ自己診断機能を有効に適用するメモリエリアを設定するとともに、設定が完了すると、サポート装置１６０は設定情報を生成する。生成された設定情報は、セーフティコントローラ１００へ伝送されて、セーフティコントローラ１００に格納される。
【００９６】
このように、セーフティコントローラ１００に実装される設定機能としては、メモリ空間のうちメモリ自己診断機能を有効に適用する範囲の設定を受付ける機能を採用してもよい。
【００９７】
あるいは、図１０（ｂ）に示すように、セーフティコントローラ１００に対してサポート装置１６０が接続されている場合、あるいは、ネットワーク１５２を介してセーフティコントローラ１００および表示装置１７０が接続されている場合を想定する。
【００９８】
このような場合において、ユーザがサポート装置１６０または表示装置１７０に対して、セーフティコントローラ１００においてメモリ自己診断機能を有効に適用するメモリエリアを設定すると、当該設定された内容を示す設定指示がセーフティコントローラ１００へ送信される。セーフティコントローラ１００は、サポート装置１６０または表示装置１７０からの設定指示に応答して、設定情報を内部的に作成するとともに、その作成した設定情報を格納する。すなわち、セーフティコントローラ１００は、サポート装置１６０または表示装置１７０からの設定指示に応答して、内部的に格納されている設定情報を更新する。
【００９９】
このように、セーフティコントローラ１００に実装される設定機能としては、外部からに指令に応じて、メモリ空間のうちメモリ自己診断機能を有効に適用する範囲を設定する機能を採用してもよい。
【０１００】
なお、上述したような実装例に限定されることなく、装置構成またはシステム構成に応じた実装例を採用することができる。
【０１０１】
（ｄ６：設定内容確認）
上述したようなメモリ自己診断機能を有効に適用するメモリエリアの設定内容を確認できるようにしてもよい。図１１は、本実施の形態に従うメモリ自己診断機能についてのメモリエリアの設定内容を確認するための実装例を示す模式図である。
【０１０２】
図１１（Ａ）を参照して、例えば、セーフティコントローラ１００に対してサポート装置１６０を接続するとともに、サポート装置１６０を操作して、セーフティコントローラ１００の設定を読出す。すると、サポート装置１６０上には、図１１（Ｂ）に示すような設定確認画面２５０が表示される。
【０１０３】
このように、セーフティコントローラ１００には、サポート装置１６０などの外部装置に対して、メモリ空間のうちメモリ自己診断機能を有効に適用する範囲を示す情報を出力する機能を実装してもよい。ユーザは、この設定確認画面２５０に基づいて、メモリ自己診断機能を有効に適用するメモリエリアの妥当性などを確認することができる。
【０１０４】
なお、上述したような実装例に限定されることなく、装置構成またはシステム構成に応じた実装例を採用することができる。
【０１０５】
＜Ｅ．処理手順＞
次に、本実施の形態に従うメモリ自己診断機能の適用に係る処理手順について説明する。図１２は、本実施の形態に従うメモリ自己診断機能の適用に係る処理手順を示すフローチャートである。図１２に示す各ステップは、プロセッサ１０２がドライバプログラム１１８（いずれも、図４参照）を実行することで実現されてもよいし、データコントローラ１０４（図４参照）により実行されてもよい。
【０１０６】
図１２を参照して、まず、メモリエリアの設定を受付ける（ステップＳ２）。これにより、メモリ自己診断機能を適用すべきメモリエリアが規定される。
【０１０７】
続いて、メモリ空間のいずれかのデータに対するアクセスが要求されたか否かが判断される（ステップＳ４）。データに対するアクセスとは、少なくとも、データの書込みおよびデータの読出しのいずれかを含む。メモリ空間のいずれかのデータに対するアクセスも要求されていなければ（ステップＳ４においてＮＯの場合）、ステップＳ４の処理が繰り返される。
【０１０８】
メモリ空間のいずれかのデータに対するアクセスも要求されていれば（ステップＳ４においてＹＥＳの場合）、アクセスが要求されているアドレスがステップＳ２において設定されたメモリエリア内にあるか否かが判断される（ステップＳ６）。アクセスが要求されているアドレスがステップＳ２において設定されたメモリエリア内にない場合（ステップＳ６においてＮＯの場合）には、メモリ自己診断機能は無効化され、要求されたデータに対するアクセスが実行され（ステップＳ８）、そのアクセスの実行結果を応答する（ステップＳ１０）。そして、ステップＳ４以下の処理が繰り返される。
【０１０９】
これに対して、アクセスが要求されているアドレスがステップＳ２において設定されたメモリエリア内にある場合（ステップＳ６においてＹＥＳの場合）には、メモリ自己診断機能は有効化され、要求されたデータに対するアクセスが実行された（ステップＳ１２）後、そのデータに対するアクセスに関連付けられたメモリ自己診断機能が実行される（ステップＳ１４）。メモリ自己診断機能の実行によって、何らかのエラーが検出されたか否かを判断する（ステップＳ１６）。
【０１１０】
何らかのエラーが検出された場合（ステップＳ１６においてＹＥＳの場合）には、検出されたエラーの内容を応答する（ステップＳ１８）。これに対して、何らのエラーも検出されなかった場合（ステップＳ１６においてＮＯの場合）には、アクセスの結果を応答する（ステップＳ２０）。そして、ステップＳ４以下の処理が繰り返される。
【０１１１】
セーフティコントローラ１００が有効に実行されている間、ステップＳ２〜Ｓ２０の処理が繰り返される。
【０１１２】
＜Ｆ．適用先＞
上述したような、本実施の形態に従うメモリ自己診断機能およびそれに関連するアプリケーションは、制御装置のプロセッサがアクセス可能なメモリ（内蔵揮発メモリ、内蔵不揮発メモリ、外付けメモリなど）のいずれにも適用可能である。さらに、内部のキャッシュやレジスタにも適用可能である。
【０１１３】
さらに、メモリ自己診断機能およびそれに関連するアプリケーションをＩＯユニットやリモートＩＯ装置などにも適用可能である。あるいは、制御装置の一部または全部と一体化したシステムなどにも適用可能である。
【０１１４】
また、メモリ自己診断機能が有効に適用するメモリエリアを設定する機能は、セーフティコントローラやＰＬＣに接続されるサポート装置により提供されてもよいし、あるいは、セーフティコントローラのファームウェアにより提供されてもよい。さらに、上述した機能の全部または一部を外部のサーバ装置上と連携することで提供するようにしてもよい。
【０１１５】
＜Ｇ．利点＞
本実施の形態に従う制御装置によれば、データに生じ得るエラーに対する処理を状況に応じて設定できる。このような機能を採用することで、機能安全を確実に実現するとともに、機能安全にかかわらない部分での、宇宙線、静電気、その他の外乱といった様々な電気的なノイズの影響を受けてのエラーなどによって、機械や設備を停止させて稼働率を低下させるような可能性を低減できる。すなわち、機能安全の完全な履行と、機械・設備の稼働率の維持という互いに相反し得る課題を両立できる。
【０１１６】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１１７】
１０，１０２  プロセッサ、２０  メモリ空間、２２，２６，２８，２１８，２２８  メモリエリア、２４  境界、１００  セーフティコントローラ、１０４  データコントローラ、１０６  ＲＡＭ、１０８  フラッシュメモリ、１１０  ローカル通信インターフェイス、１１２  ネットワークインターフェイス、１１４  内部バスコントローラ、１１６  フィールドバスコントローラ、１１８  ドライバプログラム、１２０  自己診断ロジック、１５０  ＰＬＣ、１５２  ネットワーク、２００，３００，４００  設定画面、２０２  マップ、２０４，２０６  領域、２１０，２２０  開始位置、２１２，２１６，２２２，２２６  スライダー、２１４，２２４  終了位置、３０２  チェックボックス、３１０  プロジェクトデータ、３１２  セーフティプログラムコード、３１４  デバック用プログラムコード、３１６  構成情報、３２０  プログラム群、３２２  パーサ、３２４  アセンブラ、３２６  コンパイラ、３４０  メモリ自己診断対象エリア情報。
【図１】
0006717059.tif 000002
【図２】
0006717059.tif 000003
【図３】
0006717059.tif 000004
【図４】
0006717059.tif 000005
【図５】
0006717059.tif 000006
【図６】
0006717059.tif 000007
【図７】
0006717059.tif 000008
【図８】
0006717059.tif 000009
【図９】
0006717059.tif 000010
【図１０】
0006717059.tif 000011
【図１１】
0006717059.tif 000012
【図１２】
0006717059.tif 000013