特開2017-219945(P2017-219945A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧
<>
  • 特開2017219945-制御装置 図000003
  • 特開2017219945-制御装置 図000004
  • 特開2017219945-制御装置 図000005
  • 特開2017219945-制御装置 図000006
  • 特開2017219945-制御装置 図000007
  • 特開2017219945-制御装置 図000008
  • 特開2017219945-制御装置 図000009
  • 特開2017219945-制御装置 図000010
  • 特開2017219945-制御装置 図000011
  • 特開2017219945-制御装置 図000012
  • 特開2017219945-制御装置 図000013
  • 特開2017219945-制御装置 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2017-219945(P2017-219945A)
(43)【公開日】2017年12月14日
(54)【発明の名称】制御装置
(51)【国際特許分類】
   G06F 12/16 20060101AFI20171117BHJP
【FI】
   G06F12/16 330C
【審査請求】未請求
【請求項の数】11
【出願形態】OL
【全頁数】19
(21)【出願番号】特願2016-112480(P2016-112480)
(22)【出願日】2016年6月6日
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】植田 貴雅
(72)【発明者】
【氏名】宗田 靖男
【テーマコード(参考)】
5B018
【Fターム(参考)】
5B018GA03
5B018HA01
5B018HA11
5B018HA25
5B018JA21
5B018JA22
5B018KA02
5B018MA01
5B018MA23
5B018NA01
5B018NA06
5B018QA13
(57)【要約】
【課題】データに生じ得るエラーに対する処理を状況に応じて設定可能な制御装置を提供する。
【解決手段】機械または設備を制御する制御装置は、記憶部と、記憶部のメモリ空間へ書込んだデータまたはメモリ空間から読出したデータに対するエラーの有無を診断する診断手段と、診断手段による診断結果に応じた処理を実行する処理実行手段とを含む。処理実行手段は、メモリ空間のうち診断手段を有効に適用する範囲の設定に基づいて、当該範囲内のデータにエラーの存在が検出された場合に、当該範囲内のデータにエラーの存在が検出された場合に、必要な処理を実行する。
【選択図】図3
【特許請求の範囲】
【請求項1】
機械または設備を制御する制御装置であって、
記憶部と、
前記記憶部のメモリ空間へ書込んだデータまたは前記メモリ空間から読出したデータに対するエラーの有無を診断する診断手段と、
前記診断手段による診断結果に応じた処理を実行する処理実行手段とを備え、
前記処理実行手段は、前記メモリ空間のうち前記診断手段を有効に適用する範囲の設定に基づいて、当該範囲内のデータにエラーの存在が検出された場合に、必要な処理を実行する、制御装置。
【請求項2】
前記メモリ空間のうち前記診断手段を有効に適用する範囲の設定を受付ける設定手段をさらに備える、請求項1に記載の制御装置。
【請求項3】
外部からに指令に応じて、前記メモリ空間のうち前記診断手段を有効に適用する範囲を設定する設定手段をさらに備える、請求項1に記載の制御装置。
【請求項4】
前記設定手段は、前記記憶部の前記メモリ空間のうちデータが有効に記憶されている領域を表示するとともに、当該表示内容に対して前記範囲の設定を受付ける、請求項1〜3のいずれか1項に記載の制御装置。
【請求項5】
前記診断手段を有効に適用する範囲は、前記処理実行手段において実行される実行プログラムの生成段階で動的に設定される、請求項1〜3のいずれか1項に記載の制御装置。
【請求項6】
前記診断手段は、前記設定手段により設定されている範囲外のデータについては、エラーの有無を診断しない、請求項1〜5のいずれか1項に記載の制御装置。
【請求項7】
前記処理実行手段は、前記設定手段により設定されている範囲外のデータについては、前記診断手段によりエラーの存在が検出されても、前記必要な処理を実行しない、請求項1〜5のいずれか1項に記載の制御装置。
【請求項8】
外部装置に対して、前記メモリ空間のうち前記診断手段を有効に適用する範囲を示す情報を出力する出力手段をさらに備える、請求項1〜7のいずれか1項に記載の制御装置。
【請求項9】
前記メモリ空間には、書込対象のデータと当該データに応じて算出される冗長符号とが併せて書込まれており、
前記診断手段は、前記メモリ空間から読出されたデータと対応する冗長符号とが整合するか否かに基づいて、エラーの有無を診断する、請求項1〜8のいずれか1項に記載の制御装置。
【請求項10】
前記診断手段は、書込対象のデータを前記メモリ空間の指定された領域に書込むとともに、当該書込んだデータを読出し、当該読出したデータの内容に基づいて、エラーの有無を診断する、請求項1〜8のいずれか1項に記載の制御装置。
【請求項11】
前記診断手段は、書込対象のデータを前記メモリ空間の指定された第1の領域および当該第1の領域と対応付けられる第2の領域のそれぞれに書込むとともに、当該書込んだそれぞれのデータを読出して比較することで、エラーの有無を診断する、請求項1〜8のいずれか1項に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリ空間に格納されるデータに対する診断機能を有する制御装置に関する。
【背景技術】
【0002】
ストアドプログラム方式のコンピュータは、主記憶に配置されたプログラムを逐次実行する。このようなプログラムおよびプログラムの実行時に必要な変数などのデータは、電荷などの電気的な作用を利用して記憶される。
【0003】
電気的な作用を利用して記憶されるデータは、宇宙線、静電気、その他の外乱といった様々な電気的なノイズの影響を受けて、その記憶している値が破損または変化する場合がある。このようなデータに対するエラー耐性を高めるための様々な方法が知られている。
【0004】
データを格納する際にパリティビットと称される誤り検査符号を付加するとともに、データ読出し時に、その読出したデータと対応するパリティビットとを比較することで、誤りの有無および誤りの訂正を行うような技術が知られている。このような機能を搭載したメモリはECC(Error Check and Correct memory)メモリなどと称される。
【0005】
特開2009−146168号公報(特許文献1)は、バックアップ機能付きのIOメモリ仕様とECC機能付きのIOメモリ仕様とに低コストに対応可能としたPLC用の部品実装基板を提供する技術を開示する。
【0006】
一方で、特開2009−146168号公報(特許文献1)に開示されるようなECC機能付きのIOメモリは、ECC機能を実現するための回路構成およびパリティビットを格納するための付加的な容量が必要になるため、ECC機能なしのメモリに比べればコスト的に不利である。そこで、ECC機能なしのメモリであってもデータの破損または誤読を防止するためのメモリ自己診断機能が採用されることがある。
【0007】
メモリ自己診断機能は、プロセッサで実行されるプログラムまたはメモリを読出す回路などにソフトウェア的に実装されるものであり、データ書込み時にCRC(Cyclic Redundancy Check)などの誤り検出符号を付加しておき、データ読出し時に読出したデータを対応する誤り検出符に基づいて診断する機能である。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2009−146168号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
上述したようなメモリ自己診断機能は、ソフトウェア的に実装されることが多いため、基本的には、書込みおよび読出し対象のデータのすべてが診断対象となる。一方で、書込みおよび読出し対象のデータの中には、エラーが許されないものと、ある程度のエラーが許容されるものとが存在し得る。そのため、メモリ自己診断機能をすべてのデータに対して一律に適用すると、データに発生したエラーに対して過剰な処理を実行することになり得る。
【0010】
本発明は、上記のような点を考慮してなされたものであり、その目的は、データに生じ得るエラーに対する処理を状況に応じて設定可能な制御装置を提供することにある。
【課題を解決するための手段】
【0011】
本発明のある局面に従う、機械または設備を制御する制御装置は、記憶部と、記憶部のメモリ空間へ書込んだデータまたはメモリ空間から読出したデータに対するエラーの有無を診断する診断手段と、診断手段による診断結果に応じた処理を実行する処理実行手段とを含む。処理実行手段は、メモリ空間のうち診断手段を有効に適用する範囲の設定に基づいて、当該範囲内のデータにエラーの存在が検出された場合に、必要な処理を実行する。
【0012】
好ましくは、制御装置は、メモリ空間のうち診断手段を有効に適用する範囲の設定を受付ける設定手段をさらに含む。
【0013】
好ましくは、制御装置は、外部からに指令に応じて、メモリ空間のうち診断手段を有効に適用する範囲を設定する設定手段をさらに含む。
【0014】
好ましくは、設定手段は、記憶部のメモリ空間のうちデータが有効に記憶されている領域を表示するとともに、当該表示内容に対して範囲の設定を受付ける。
【0015】
好ましくは、診断手段を有効に適用する範囲は、処理実行手段において実行される実行プログラムの生成段階で動的に設定される。
【0016】
好ましくは、診断手段は、設定手段により設定されている範囲外のデータについては、エラーの有無を診断しない。
【0017】
好ましくは、処理実行手段は、設定手段により設定されている範囲外のデータについては、診断手段によりエラーの存在が検出されても、必要な処理を実行しない。
【0018】
好ましくは、制御装置は、外部装置に対して、メモリ空間のうち診断手段を有効に適用する範囲を示す情報を出力する出力手段をさらに含む。
【0019】
好ましくは、メモリ空間には、書込対象のデータと当該データに応じて算出される冗長符号とが併せて書込まれており、診断手段は、メモリ空間から読出されたデータと対応する冗長符号とが整合するか否かに基づいて、エラーの有無を診断する。
【0020】
好ましくは、診断手段は、書込対象のデータをメモリ空間の指定された領域に書込むとともに、当該書込んだデータを読出し、当該読出したデータの内容に基づいて、エラーの有無を診断する。
【0021】
好ましくは、診断手段は、書込対象のデータをメモリ空間の指定された第1の領域および当該第1の領域と対応付けられる第2の領域のそれぞれに書込むとともに、当該書込んだそれぞれのデータを読出して比較することで、エラーの有無を診断する。
【発明の効果】
【0022】
本発明によれば、データに生じ得るエラーに対する処理を状況に応じて設定可能な制御装置を提供できる。
【図面の簡単な説明】
【0023】
図1】本実施の形態に従うメモリ自己診断機能の概要を説明するための模式図である。
図2】本実施の形態に従うメモリ自己診断機能を実装したシステムの構成例を示す模式図である。
図3】本実施の形態に従うメモリ自己診断機能の適用を可変にする処理を説明するための模式図である。
図4】本実施の形態に従うセーフティコントローラのハードウェア構成例を示す模式図である。
図5】本実施の形態に従うメモリ自己診断機能を実現するための処理手順を説明するための図である。
図6】本実施の形態に従うメモリ自己診断機能を実現するための処理手順を説明するための図である。
図7】本実施の形態に従うメモリ自己診断機能を有効に適用するメモリエリアの設定方法を説明するための図である。
図8】本実施の形態に従うメモリ自己診断機能を有効に適用するメモリエリアの別の設定方法を説明するための図である。
図9】本実施の形態に従うメモリ自己診断機能を有効に適用するメモリエリアのさらに別の設定方法を説明するための図である。
図10】本実施の形態に従うメモリ自己診断機能についてのメモリエリアを設定するための実装例を示す模式図である。
図11】本実施の形態に従うメモリ自己診断機能についてのメモリエリアの設定内容を確認するための実装例を示す模式図である。
図12】本実施の形態に従うメモリ自己診断機能の適用に係る処理手順を示すフローチャートである。
【発明を実施するための形態】
【0024】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0025】
<A.背景・課題・解決手段>
まず、本実施の形態に従う制御装置に係る背景および課題、ならびに、その課題に対する解決手段について概要を説明する。図1は、本実施の形態に従うメモリ自己診断機能の概要を説明するための模式図である。
【0026】
図1を参照して、プロセッサ10がメモリ空間20にアクセスする場合のメモリ自己診断機能について説明する。メモリ自己診断機能は、記憶部のメモリ空間へ書込んだデータまたはメモリ空間から読出したデータに対するエラーの有無を診断する機能であり、診断手段に相当する。
【0027】
例えば、プロセッサ10がメモリ空間20にアクセスして、あるデータをメモリ空間20に書込んだ後、当該書込んだデータを再度読出して、書込んだデータとの一致/不一致を判断する。例えば、データ「0101」をメモリ空間20に書込んだ後、メモリ空間20から当該書込んだデータを読出したときに、データ「0101」であれば、正しく書込みおよび読出しができていると判断できる。一方、データ「0101」をメモリ空間20に書込んだにもかかわらず、データ「0100」が読出された場合には、データの書込みまたは読出しが適切に行われていないと判断できる。
【0028】
このようなデータの書込みまたは読出しが適切に行われない理由としては、宇宙線、静電気、その他の外乱といった様々な電気的なノイズ(一時的な外的要因)の影響が想定される。なお、メモリ空間の値が一時的に破損または誤読される故障モードをソフトエラーとも称す。このような一時的な外的要因によるソフトエラーについては、一般的に、再現性が低いため、根本的な原因の追求が難しい。その結果、効果的な再発防止策を立てることが容易ではない。
【0029】
メモリ自己診断機能は、高い信頼性が要求される設備などに導入される。一例として、製造現場などに配置された機械を安全に使用するため用いられる機能安全デバイスなどが挙げられる。機能安全デバイスの典型例として、セーフティコントローラには、メモリ自己診断機能が実装されることが一般的である。
【0030】
図2は、本実施の形態に従うメモリ自己診断機能を実装したシステムの構成例を示す模式図である。図2を参照して、セーフティコントローラ100は、ネットワーク152を介してPLC(Programmable Logic Controller)150と接続されており、機械または設備の安全に係る監視処理を実行する。セーフティコントローラ100は、何らのイベントが発生し、機械または設備の安全を維持する必要があると判断した場合には、PLC150に対して対象設備の停止などを指令する。
【0031】
また、フェールセーフの思想から、セーフティコントローラ100自体に何らかの異常が生じた場合にも、PLC150に対して停止指令を与えるようになっている。これは、セーフティコントローラ100の監視機能が喪失された場合などを想定している。
【0032】
上述のメモリ自己診断機能が採用されたセーフティコントローラ100において、内部メモリなどにおいて何らかのエラーを検出すると、セーフティコントローラ100からPLC150に対して停止指令が出力される。このような停止指令が与えられることで、PLC150が制御する設備は停止することになり、稼働率などを低下させてしまう。
【0033】
ここで、セーフティコントローラ100で扱うデータのすべてが重要なものとは限らない。すなわち、セーフティコントローラ100が機能安全を実現するために必要なデータと、それ以外の付加的なデータとが存在し得る。このような場合、付加的なデータに発生した何らかのエラーを検出した場合にも設備を停止させてしまうことは、安全の確保と設備の稼働率の維持とのバランスを欠く結果となり得る。
【0034】
そこで、本実施の形態に従う制御装置では、セーフティコントローラ100が扱うデータの重要度などに応じて、メモリ自己診断機能の適用の有無、および、メモリ自己診断機能によるエラー検出結果の利用形態、などを異ならせるようにする。
【0035】
簡単な処理形態として、セーフティコントローラ100において実行されるセーフティクリティカルな処理に関連するメモリエリアに対してのみメモリ自己診断機能を適用し、それ以外のメモリエリアに対してはメモリ自己診断機能を適用しないといった方法を採用する。本明細書において、「セーフティクリティカルな処理」とは、例えば、国際規格によって定義された機能安全を実現するために必要な処理を意味する。
【0036】
図3は、本実施の形態に従うメモリ自己診断機能の適用を可変にする処理を説明するための模式図である。図3には、例えば、揮発性の記憶装置であるRAM(Random Access Memory)および不揮発性の記憶装置であるフラッシュメモリの各メモリエリア22を、セーフティクリティカルな処理に必要なデータを格納するメモリエリア26と、それ以外のメモリエリア28とに分類する例を示す。なお、メモリエリア28には、セーフティクリティカルな処理以外の処理に必要なデータが格納されている場合もあるし、何らの有効なデータも格納されていない場合もある。
【0037】
図3に示すセーフティクリティカルな処理に必要なデータを格納するメモリエリア26に対してはメモリ自己診断機能が有効に適用される一方で、それ以外のメモリエリア28については、メモリ自己診断機能は無効化される。
【0038】
「メモリ自己診断機能を有効に適用する」とは、メモリ自己診断機能が有している本来の機能を利用することを意味する。すなわち、メモリ自己診断機能が有効に適用されている場合には、メモリ自己診断機能による診断結果に応じた処理、例えば、データ内にエラーが検出された場合には、PLC150に対して対象設備の停止などを指令するなど(図2参照)が実行される。
【0039】
このように、本実施の形態に従う制御装置においては、セーフティクリティカルな処理に必要なデータを格納するとして設定されているメモリエリア26内のデータにエラーの存在が検出された場合には、そのエラーに応じて必要な処理が実行される。
【0040】
これに対して、「メモリ自己診断機能を無効にする」とは、メモリ自己診断機能が有している本来の機能の全部または一部を利用しないことを意味する。具体的には、メモリエリア28に対しては、メモリ自己診断機能によるエラー検出自体が行われない、あるいは、メモリ自己診断機能によって何らかのエラーが検出されたとしても、それ以上の処理は実行されない。さらに、メモリ自己診断機能によって何らかのエラーが検出された場合には、本来の設備の停止ではなく、当該エラーに関連する誤りを自動的に訂正するようにしてもよい。あるいは、元データが存在する場合には、自動的にリストアするようにしてもよい。
【0041】
本実施の形態に従う制御装置においては、メモリ自己診断機能は、セーフティクリティカルな処理に必要なデータを格納するとして設定されているメモリエリア26外のデータについては、エラーの有無を診断しないようにしてもよい。あるいは、セーフティクリティカルな処理に必要なデータを格納するとして設定されているメモリエリア26外のデータについては、エラーの存在が検出されても、そのエラーに応じた必要な処理が実行されないようにしてもよい。
【0042】
本実施の形態によれば、メモリ自己診断機能を適用するメモリエリアおよび対象のデータをフレキシブルに設定/解放することで、必要以上のフェールセーフ動作を回避して、必要な機能安全を維持しつつ、設備全体の稼働率も高めることができる。
【0043】
メモリエリア26とメモリエリア28との境界24は、ユーザが指定および/または調整できるようにしてもよい。あるいは、セーフティコントローラ100で実行されるプログラムの開発環境(コンパイラ、アセンブラ)などが構文解析またはオブジェクト解析によって、境界24の位置を決定するようにしてもよい。
【0044】
この場合、境界24の位置は、物理的な位置として定義されてもよいし、論理的な位置として定義されてもよい。論理的な位置として定義される場合には、物理的なメモリエリア上では、離散的にエリアが設定されることもある。本実施の形態において、データ毎に処理種別が区分できるのであれば、各メモリエリアの設定はどのような態様であってもよい。
【0045】
図3には、説明の便宜上、メモリ自己診断機能を適用するメモリエリアとそれ以外のメモリエリアとをそれぞれ定義する設定例、すなわち、メモリ自己診断機能を有効化するか否かの2段階の設定例について説明したが、より多くの種類に分類して設定してもよい。例えば、メモリ自己診断機能により何らかのエラーが検知されると処理を停止する第1のメモリエリアと、メモリ自己診断機能により何らかのエラーが検知されると警告を発しつつも処理を継続する第2のメモリエリアと、メモリ自己診断機能を適用しない第3のメモリエリアとの3種類を設定してもよいし、さらに多数の処理のうちからいずれかを設定するようにしてもよい。
【0046】
<B.セーフティコントローラのハードウェア構成例>
次に、本実施の形態に従う制御装置の一例であるセーフティコントローラ100のハードウェア構成の一例について説明する。図4は、本実施の形態に従うセーフティコントローラ100のハードウェア構成例を示す模式図である。
【0047】
図4を参照して、セーフティコントローラ100は、PLCに類似したハードウェア構成を有しており、主たるコンポーネントとして、プロセッサ102と、データコントローラ104と、RAM106と、フラッシュメモリ108と、ローカル通信インターフェイス(I/F:Interface)110と、ネットワークインターフェイス112と、内部バスコントローラ114と、フィールドバスコントローラ116とを含む。
【0048】
プロセッサ102は、フラッシュメモリ108などに予めインストールされたシステムプログラムおよびユーザプログラムなどを実行する演算主体である。
【0049】
データコントローラ104は、プロセッサ102と各コンポーネントとの間のデータ遣り取りを仲介する。
【0050】
RAM106は、プロセッサ102により実行されるプログラムのコードおよびプログラムの実行に必要なワークデータなどを一時的に格納する。フラッシュメモリ108は、プロセッサ102により実行されるシステムプログラムおよびユーザプログラムなどを不揮発的に格納する。
【0051】
ローカル通信インターフェイス110は、USB(Universal Serial Bus)などを介して、図示しないサポート装置などとの間でデータを遣り取りする。ネットワークインターフェイス112は、イーサネット(登録商標)などによって、他の情報処理装置(PLCやサーバ装置など)との間でデータを遣り取りする。
【0052】
内部バスコントローラ114は、内部バスを介して、図示しないIO(Input Output)ユニットなどとの間でデータを遣り取りする。フィールドバスコントローラ116は、フィールドバスを介して、図示しないリモートIO装置に装着されたIOユニットなどとの間でデータを遣り取りする。
【0053】
本実施の形態に従うメモリ自己診断機能が対象とする記憶部としては、典型的には、図4に示されるRAM106およびフラッシュメモリ108などが挙げられるが、これらに限るものではない。基本的には、データを格納するためのメモリ空間が存在するものであれば、どのようなものにもメモリ自己診断機能を適用できる。例えば、プロセッサに付随するキャッシュメモリやレジスタ、IOユニット内の不揮発性メモリやレジスタなどについても対象となる。
【0054】
本実施の形態に従うメモリ自己診断機能による診断結果に応じた処理を実行する処理実行手段としては、図4に示されるプロセッサ102が挙げられるが、これに限らず、メモリ自己診断機能により検出されたエラーに応じて、処理を実行可能なものであれば、どのようなものを採用してもよい。
【0055】
本実施の形態に従うメモリ自己診断機能は、任意の方法で実装することが可能である。例えば、プロセッサ102にて実行されるシステムプログラムの一部に含まれるドライバプログラム118により実装してもよい。あるいは、データコントローラ104の一機能として、IC(Integrated Circuited)やLSI(Large Scale Integrated circuited)などのハードワイヤード回路を用いて実現してもよいし、マイクロプロセッサがファームウェアを実行することで実現してもよい。この場合、任意の構成によって実装された自己診断ロジック120がデータコントローラ104に搭載されることになる。
【0056】
本実施の形態に従うメモリ自己診断機能は、図4に示すようなセーフティコントローラ100に限らず、機械または設備を制御する制御装置(例えば、PLCなど)の全般に亘って適用が可能である。また、セーフティコントローラやPLCの主演算部だけではなく、IOユニットやリモートIO装置などの副次的な処理部にも適用可能である。
【0057】
<C.メモリ自己診断機能>
次に、本実施の形態に従うメモリ自己診断機能の具体的な処理手順の一例について説明する。本実施の形態に従うメモリ自己診断機能は、記憶部のメモリ空間へ書込んだデータまたはメモリ空間から読出したデータに対するエラーの有無を診断する。図5および図6は、本実施の形態に従うメモリ自己診断機能を実現するための処理手順を説明するための図である。
【0058】
図5および図6には、メモリ空間において、書込対象のデータと当該データに応じて算出される冗長符号とが併せて書込まれている形態を示す。このような冗長符号の一例として、CRCが知られている。CRCは、対象のデータから予め定められた多項式を用いて算出される。メモリ自己診断機能は、メモリ空間から読出されたデータと対応する冗長符号(CRC)とが整合するか否かに基づいて、エラーの有無を診断する。
【0059】
図5には、応用例として、データ読戻し方式を示す。データ読戻し方式は、何らかのデータをメモリ空間に書込む際に、一旦データを書込んだ後に、当該書込んだデータの読出し結果が適正であるか否かを判断する手法である。すなわち、メモリ自己診断機能は、書込対象のデータをメモリ空間の指定された領域に書込むとともに、当該書込んだデータを読出し、当該読出したデータの内容に基づいて、エラーの有無を診断する。
【0060】
具体的には、いずれかのメモリ空間に書込むべきデータが入力されると((1)データ入力)、当該入力されたデータにCRCが付加された上で((2)CRC付加)、指定されたメモリ空間に書込まれる((3)書込み)。その直後、当該メモリ空間から書込まれたデータが読出される((4)読出し)、そして、読出したデータとCRCとを比較することで、入力されたデータが正しく書込まれているか否かを判断する((5)検証)。すなわち、検証工程においては、読出したデータから先に用いられた多項式を用いて算出されるCRCの値が、読出したCRCの値と一致するか否かが判断される。両者が一致すれば、入力されたデータが正しく書込まれていると判断でき、そうでなければ、データ書込みに何らかの不具合が発生しと判断される。
【0061】
正しく書込まれたデータは、その後に与えられる読出し指令に応答して、読出されて出力される。((6)読出し、および、(7)データ出力)。
【0062】
このように、データ読戻し方式によれば、データを書込んだときに、その書込まれたデータの完全性が随時検証される。
【0063】
なお、メモリ空間に書込まれるデータに当該データから算出されるCRCが付加されている場合には、書込まれているデータの完全性を対応するCRCを用いて任意のタイミングで検証できる。例えば、メモリ空間に適切に書込まれたデータの一部が電気的なノイズによって事後的に変化することも想定される。このような事後的なデータの変化に対しても、CRCを用いることで検出することができる。
【0064】
そのため、図5に示すデータ読戻し方式に加えて、あるいは、データ読出し方式に代えて、CRCを用いてデータの完全性を検証する方式を採用してもよい。
【0065】
図6には、データ多重方式の例を示す。データ読戻し方式は、何らかのデータをメモリ空間に書込む際に、一旦データを書込んだ後に、当該書込んだデータの読出し結果が適正であるか否かを判断する手法である。すなわち、メモリ自己診断機能は、書込対象のデータをメモリ空間の指定された第1の領域および当該第1の領域と対応付けられる第2の領域のそれぞれに書込むとともに、当該書込んだそれぞれのデータを読出して比較することで、エラーの有無を診断する。
【0066】
具体的には、いずれかのメモリ空間に書込むべきデータが入力されると((1)データ入力)、当該入力されたデータにCRCが付加された上で((2)CRC付加)、指定されたメモリ空間および当該メモリ空間の双対となるメモリ空間にそれぞれ同一のデータ(入力されたデータ+CRC)が書込まれる((3)多重書込み)。その直後、または、読出し指令が与えられたときに、互いに対応付けられているメモリ空間からそれぞれデータが読出されて比較される((4)読出し、および、(5)比較)。両データが一致すれば、入力されたデータが正しく書込まれていると判断でき、そうでなければ、データ書込みに何らかの不具合が発生しと判断される。正しく書込まれたデータは、読出し結果として出力されてもよい((7)データ出力)。
【0067】
このように、データ多重方式によれば、データを書込んだときに、その書込まれたデータの完全性が随時検証される。なお、データ多重方式については、任意のタイミングで、保持されているデータの妥当性を評価できる。例えば、メモリ空間に書込まれたいずれかのデータが事後的に変化した場合であっても、対になっているデータの両方が同じように変化する可能性は極めて低いので、両データを対比させることで、データの部分的な欠損や不整合を検出できる。
【0068】
なお、図6においては、データにCRCを付加する構成について例示するが、データ多重方式においては、書込まれたデータ同士を比較すればよいので、CRCは必須ではない。但し、CRCを付加することで、事後的なデータの完全性を検証できるようになるというさらなる利点がある。
【0069】
メモリ自己診断機能を実現する方法としては、図5および図6に示す方法に限らず、書込んだデータの完全性および妥当性を検証できる手法であれば、どのような方法を採用してもよい。
【0070】
<D.メモリ自己診断機能を有効に適用するメモリエリアの設定方法および運用>
上述したように、本実施の形態に従う制御装置は、メモリ空間のうちメモリ自己診断機能を有効に適用する範囲の設定を行うための設定機能を有している。次に、図3に示すように、セーフティコントローラ100がアクセス可能なメモリエリアのうち、メモリ自己診断機能を有効に適用するメモリエリアを設定する方法および運用について説明する。
【0071】
(d1:設定主体)
典型例において、セーフティコントローラ100がアクセス可能なメモリエリアのうち、メモリ自己診断機能を有効に適用するメモリエリアは、制御装置のメーカによって、あるいは、製造段階において、予め設定されていてもよい。この場合、予め設定されたメモリエリアをユーザが変更できないようにしてもよいし、ユーザが用途や使用環境に応じて適宜変更できるようにしてもよい。前者の場合には、後述するようなメモリエリアを設定するための手段はユーザに対して提供されず、メーカ側でのみ使用されてもよい。
【0072】
あるいは、メーカ出荷段階においては、すべてのメモリエリアがメモリ自己診断機能を有効に適用する対象にデフォルト設定されており、ユーザが用途や使用環境に応じて、適宜変更するようにしてもよい。
【0073】
(d2:メモリエリアの直接設定)
例えば、不揮発性のフラッシュメモリなどに格納(インストール)されるプログラムなどは、基本的には、格納された位置が事後的に変化することはないので、格納された静的な状態で、メモリ自己診断機能を有効に適用するメモリエリアをマニュアル設定することができる。
【0074】
図7は、本実施の形態に従うメモリ自己診断機能を有効に適用するメモリエリアの設定方法を説明するための図である。セーフティコントローラ100には、セーフティプログラムなどの開発環境、デバッグ環境などを提供するサポート装置が接続される。このようなサポート装置上に、図7に示すような設定画面200が表示される。
【0075】
ユーザは、サポート装置を操作して、設定画面200上で、メモリ自己診断機能を有効に適用するメモリエリアを設定する。具体的には、設定画面200には、対象のメモリ空間の使用状態を示すマップ202が表示されている。マップ202は、メモリエリアのアドレスに対応付けて視覚化されており、このマップ202のアドレスに関連付けて、メモリエリアを設定するための複数のスライダーが表示可能になっている。
【0076】
マップ202内において、データが記憶されている領域204,206は、他の領域とは異なる表示態様で表示されている。ユーザは、マップ202内のデータが格納されている領域を参照しつつ、スライダー212,216,222,226を操作して、メモリ自己診断機能を有効に適用するメモリエリアを設定する。
【0077】
このように、メモリ空間のうちメモリ自己診断機能を有効に適用する範囲の設定を受付ける設定機能として、記憶部のメモリ空間のうちデータが有効に記憶されている領域を表示するとともに、当該表示内容に対して範囲の設定を受付ける。
【0078】
図7に示す例では、スライダー212がメモリエリアの開始位置210を規定し、スライダー216がメモリエリアの終了位置214を規定する。この結果、開始位置210から終了位置214までの範囲がメモリエリア218として設定される。
【0079】
図7に示す例では、領域204と領域206とが離れて位置しているので、領域206に関連付けて、スライダー222,226が表示されている。すなわち、スライダー222がメモリエリアの開始位置220を規定し、スライダー226がメモリエリアの終了位置224を規定する。この結果、開始位置220から終了位置224までの範囲がメモリエリア228として設定される。
【0080】
このような手順によって、メモリ空間のうち、メモリエリア218およびメモリエリア228がメモリ自己診断機能を有効に適用する範囲として設定されることになる。逆に言えば、メモリ空間のうち、メモリエリア218およびメモリエリア228以外のメモリエリアについては、メモリ自己診断機能が無効化される。すなわち、データが格納されていないメモリエリアにおいて、何らかの外的要因によってエラーが生じたとしても、機能安全を実現するために必要な処理が何ら阻害されることはない。むしろ、データが格納されていないメモリエリアにおいて生じたエラーに起因して設備を停止させることで、稼働率が低下することの方が問題になり得る。本実施の形態に従う方法によって、メモリ自己診断機能を有効に適用するメモリエリアを適切に設定することで、上述のような互いに相反する課題をバランスさせて、解決することができる。
【0081】
(d3:セーフティプログラムの作成時における設定)
セーフティコントローラ100にて実行されるセーフティプログラムは、変数プログラムにより生成される場合がある。プログラムソースコードでは、必要なデータが変数の形で指定されるので、実際のメモリ空間のいずれに対象のデータが格納されるのかがユーザには見えない場合も多い。
【0082】
そこで、セーフティプログラムの生成段階において、プログラムソースコードなどを参照して、対象のデータが格納されるメモリエリアを自動的に設定するようにしてもよい。
【0083】
図8は、本実施の形態に従うメモリ自己診断機能を有効に適用するメモリエリアの別の設定方法を説明するための図である。
【0084】
サポート装置を用いてセーフティプログラムを生成する過程で、図8(a)に示すような設定画面300が表示される。設定画面300においては、セーフティコントローラ100において実行されるプログラムおよび各プログラムで利用される変数やデータなどが一覧表示されている(符号304)。ユーザは、メモリ自己診断機能を有効に適用する対象を選択する。具体的には、各項目に対応付けてチェックボックス302が表示されており、ユーザは、メモリ自己診断機能を有効に適用すべき対象の項目をチェックにより選択することができる。
【0085】
なお、機能安全に係るプログラムや関連するデータ(図8(a)に示す例では、「セーフティプログラム」、「システム変数」、「内部変数」など)については、チェックを外す、すなわちメモリ自己診断機能を有効に適用すべき対象から除外することを禁止するようにしてもよい。このような制約を設けることで、機能安全に必要なデータに対しては、必ず、メモリ自己診断機能が有効に適用されることが保障される。
【0086】
図8(a)に示す設定画面300においてなされたユーザ設定に従って、図8(b)に示すような処理手順に従って、メモリ自己診断対象エリア情報340が生成される。すなわち、セーフティプログラムコード312と、デバック用プログラムコード314と、設定・構成情報316などを含むプロジェクトデータ310に対して、解析処理や変換処理が実施される。
【0087】
より具体的には、パーサ322、アセンブラ324、コンパイラ326を含むプログラム群320が順次プロジェクトデータ310に対して処理を行うことで、プログラムソースコードの解析や、オブジェクトの配置位置の決定などが行われ、実行コードが生成される際に、メモリ空間のいずれのメモリエリアが使用されるのかが決定される。そして、図8(a)に示す設定画面300においてチェックが付与された種類のデータについて、各データが配置されるメモリ空間から、メモリ自己診断対象エリア情報340が生成される。このように、メモリ自己診断機能を有効に適用する範囲は、処理実行手段であるプロセッサにおいて実行される実行プログラムであるセーフティプログラムの生成段階で動的に設定されてもよい。
【0088】
セーフティプログラムが実行される際には、メモリ自己診断対象エリア情報340が参照されて、メモリ自己診断機能を有効に適用するメモリエリアが設定される。
【0089】
このような処理によってメモリ自己診断機能を有効に適用するメモリエリアを設定することで、変数プログラムのような、メモリ空間のうちいずれのメモリエリアにデータが配置されるのかがユーザには分からないような場合であっても、メモリ自己診断機能を有効に適用するメモリエリアを適切に設定できる。
【0090】
(d4:データ配置位置が動的に変更されるシステムでの設定)
セーフティコントローラ100にてセーフティプログラムの実行中には、ワークデータの生成および更新が逐次実施される。このようなデータの動的な生成および更新に伴って、メモリ空間のうちデータの格納に使用されるメモリエリアは時間的に変化する。このような時間的に変化するメモリエリアに対しては、メモリ自己診断機能を有効に適用するメモリエリアを動的に設定することが好ましい。そこで、セーフティコントローラ100で実行されるメモリマネージャやスケジューラなどを利用して、メモリ自己診断機能を有効に適用するメモリエリアを逐次変更するように設定してもよい。
【0091】
図9は、本実施の形態に従うメモリ自己診断機能を有効に適用するメモリエリアのさらに別の設定方法を説明するための図である。図9に示す設定画面400においては、メモリ自己診断機能を有効に適用する範囲を、メモリ空間のすべてのメモリエリアとするのか、あるいは、現実にデータの格納に利用されている一部のメモリエリアだけにするのかをユーザは選択できる。
【0092】
設定画面400でのユーザ設定に応じて、セーフティコントローラ100のメモリマネージャおよびスケジューラは、所定周期毎にメモリ空間のうちデータの格納に使用されているメモリエリアを取得し、その取得したメモリエリアに対してのみ、メモリ自己診断機能が実行されるように処理する。
【0093】
このような設定機能を設けることで、メモリ空間のうちデータの格納に使用されるメモリエリアの大きさや位置が変化した場合であっても、メモリ自己診断機能を効率的に適用するとともに、設備の不要な停止の可能性を低減できる。
【0094】
(d5:設定するための実装例)
上述のようなメモリ自己診断機能を有効に適用するメモリエリアを設定するための実装例について説明する。図10は、本実施の形態に従うメモリ自己診断機能についてのメモリエリアを設定するための実装例を示す模式図である。
【0095】
図10(a)に示すように、例えば、セーフティコントローラ100に対してサポート装置160が接続されている場合を想定する。ユーザは、サポート装置160を操作して、セーフティコントローラ100においてメモリ自己診断機能を有効に適用するメモリエリアを設定するとともに、設定が完了すると、サポート装置160は設定情報を生成する。生成された設定情報は、セーフティコントローラ100へ伝送されて、セーフティコントローラ100に格納される。
【0096】
このように、セーフティコントローラ100に実装される設定機能としては、メモリ空間のうちメモリ自己診断機能を有効に適用する範囲の設定を受付ける機能を採用してもよい。
【0097】
あるいは、図10(b)に示すように、セーフティコントローラ100に対してサポート装置160が接続されている場合、あるいは、ネットワーク152を介してセーフティコントローラ100および表示装置170が接続されている場合を想定する。
【0098】
このような場合において、ユーザがサポート装置160または表示装置170に対して、セーフティコントローラ100においてメモリ自己診断機能を有効に適用するメモリエリアを設定すると、当該設定された内容を示す設定指示がセーフティコントローラ100へ送信される。セーフティコントローラ100は、サポート装置160または表示装置170からの設定指示に応答して、設定情報を内部的に作成するとともに、その作成した設定情報を格納する。すなわち、セーフティコントローラ100は、サポート装置160または表示装置170からの設定指示に応答して、内部的に格納されている設定情報を更新する。
【0099】
このように、セーフティコントローラ100に実装される設定機能としては、外部からに指令に応じて、メモリ空間のうちメモリ自己診断機能を有効に適用する範囲を設定する機能を採用してもよい。
【0100】
なお、上述したような実装例に限定されることなく、装置構成またはシステム構成に応じた実装例を採用することができる。
【0101】
(d6:設定内容確認)
上述したようなメモリ自己診断機能を有効に適用するメモリエリアの設定内容を確認できるようにしてもよい。図11は、本実施の形態に従うメモリ自己診断機能についてのメモリエリアの設定内容を確認するための実装例を示す模式図である。
【0102】
図11(A)を参照して、例えば、セーフティコントローラ100に対してサポート装置160を接続するとともに、サポート装置160を操作して、セーフティコントローラ100の設定を読出す。すると、サポート装置160上には、図11(B)に示すような設定確認画面250が表示される。
【0103】
このように、セーフティコントローラ100には、サポート装置160などの外部装置に対して、メモリ空間のうちメモリ自己診断機能を有効に適用する範囲を示す情報を出力する機能を実装してもよい。ユーザは、この設定確認画面250に基づいて、メモリ自己診断機能を有効に適用するメモリエリアの妥当性などを確認することができる。
【0104】
なお、上述したような実装例に限定されることなく、装置構成またはシステム構成に応じた実装例を採用することができる。
【0105】
<E.処理手順>
次に、本実施の形態に従うメモリ自己診断機能の適用に係る処理手順について説明する。図12は、本実施の形態に従うメモリ自己診断機能の適用に係る処理手順を示すフローチャートである。図12に示す各ステップは、プロセッサ102がドライバプログラム118(いずれも、図4参照)を実行することで実現されてもよいし、データコントローラ104(図4参照)により実行されてもよい。
【0106】
図12を参照して、まず、メモリエリアの設定を受付ける(ステップS2)。これにより、メモリ自己診断機能を適用すべきメモリエリアが規定される。
【0107】
続いて、メモリ空間のいずれかのデータに対するアクセスが要求されたか否かが判断される(ステップS4)。データに対するアクセスとは、少なくとも、データの書込みおよびデータの読出しのいずれかを含む。メモリ空間のいずれかのデータに対するアクセスも要求されていなければ(ステップS4においてNOの場合)、ステップS4の処理が繰り返される。
【0108】
メモリ空間のいずれかのデータに対するアクセスも要求されていれば(ステップS4においてYESの場合)、アクセスが要求されているアドレスがステップS2において設定されたメモリエリア内にあるか否かが判断される(ステップS6)。アクセスが要求されているアドレスがステップS2において設定されたメモリエリア内にない場合(ステップS6においてNOの場合)には、メモリ自己診断機能は無効化され、要求されたデータに対するアクセスが実行され(ステップS8)、そのアクセスの実行結果を応答する(ステップS10)。そして、ステップS4以下の処理が繰り返される。
【0109】
これに対して、アクセスが要求されているアドレスがステップS2において設定されたメモリエリア内にある場合(ステップS6においてYESの場合)には、メモリ自己診断機能は有効化され、要求されたデータに対するアクセスが実行された(ステップS12)後、そのデータに対するアクセスに関連付けられたメモリ自己診断機能が実行される(ステップS14)。メモリ自己診断機能の実行によって、何らかのエラーが検出されたか否かを判断する(ステップS16)。
【0110】
何らかのエラーが検出された場合(ステップS16においてYESの場合)には、検出されたエラーの内容を応答する(ステップS18)。これに対して、何らのエラーも検出されなかった場合(ステップS16においてNOの場合)には、アクセスの結果を応答する(ステップS20)。そして、ステップS4以下の処理が繰り返される。
【0111】
セーフティコントローラ100が有効に実行されている間、ステップS2〜S20の処理が繰り返される。
【0112】
<F.適用先>
上述したような、本実施の形態に従うメモリ自己診断機能およびそれに関連するアプリケーションは、制御装置のプロセッサがアクセス可能なメモリ(内蔵揮発メモリ、内蔵不揮発メモリ、外付けメモリなど)のいずれにも適用可能である。さらに、内部のキャッシュやレジスタにも適用可能である。
【0113】
さらに、メモリ自己診断機能およびそれに関連するアプリケーションをIOユニットやリモートIO装置などにも適用可能である。あるいは、制御装置の一部または全部と一体化したシステムなどにも適用可能である。
【0114】
また、メモリ自己診断機能が有効に適用するメモリエリアを設定する機能は、セーフティコントローラやPLCに接続されるサポート装置により提供されてもよいし、あるいは、セーフティコントローラのファームウェアにより提供されてもよい。さらに、上述した機能の全部または一部を外部のサーバ装置上と連携することで提供するようにしてもよい。
【0115】
<G.利点>
本実施の形態に従う制御装置によれば、データに生じ得るエラーに対する処理を状況に応じて設定できる。このような機能を採用することで、機能安全を確実に実現するとともに、機能安全にかかわらない部分での、宇宙線、静電気、その他の外乱といった様々な電気的なノイズの影響を受けてのエラーなどによって、機械や設備を停止させて稼働率を低下させるような可能性を低減できる。すなわち、機能安全の完全な履行と、機械・設備の稼働率の維持という互いに相反し得る課題を両立できる。
【0116】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0117】
10,102 プロセッサ、20 メモリ空間、22,26,28,218,228 メモリエリア、24 境界、100 セーフティコントローラ、104 データコントローラ、106 RAM、108 フラッシュメモリ、110 ローカル通信インターフェイス、112 ネットワークインターフェイス、114 内部バスコントローラ、116 フィールドバスコントローラ、118 ドライバプログラム、120 自己診断ロジック、150 PLC、152 ネットワーク、200,300,400 設定画面、202 マップ、204,206 領域、210,220 開始位置、212,216,222,226 スライダー、214,224 終了位置、302 チェックボックス、310 プロジェクトデータ、312 セーフティプログラムコード、314 デバック用プログラムコード、316 構成情報、320 プログラム群、322 パーサ、324 アセンブラ、326 コンパイラ、340 メモリ自己診断対象エリア情報。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12