IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 日産自動車株式会社の特許一覧

<>
  • 特開-異常監視方法及び制御システム 図1
  • 特開-異常監視方法及び制御システム 図2
  • 特開-異常監視方法及び制御システム 図3
  • 特開-異常監視方法及び制御システム 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024175590
(43)【公開日】2024-12-18
(54)【発明の名称】異常監視方法及び制御システム
(51)【国際特許分類】
   G06F 11/07 20060101AFI20241211BHJP
   G06F 11/30 20060101ALI20241211BHJP
   G06F 11/34 20060101ALI20241211BHJP
【FI】
G06F11/07 157
G06F11/07 193
G06F11/30 140H
G06F11/30 165
G06F11/34 176
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023093489
(22)【出願日】2023-06-06
(71)【出願人】
【識別番号】000003997
【氏名又は名称】日産自動車株式会社
(74)【代理人】
【識別番号】110002468
【氏名又は名称】弁理士法人後藤特許事務所
(72)【発明者】
【氏名】岩根 芳美
(72)【発明者】
【氏名】小川 浩司
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042JJ15
5B042JJ21
5B042JJ25
5B042KK02
5B042KK14
5B042MA05
5B042MC05
5B042MC12
5B042MC21
5B042MC22
5B042MC23
(57)【要約】
【課題】マイクロコンピュータの正常時における異常監視処理の負荷を抑制し、マイクロコンピュータの異常発生時における所定データを適切に確保する。
【解決手段】CPU110、メモリ120、計時回路141を有するマイクロコンピュータ100と、外部監視装置200と、不揮発性メモリ300とを備える制御システム1においてマイクロコンピュータ100の異常を監視する異常監視方法である。外部監視装置200は、パルス信号S1の出力間隔が第2異常検知ラインT1以上となったことに基づいてマイクロコンピュータ100の異常を検知してHWリセット信号S2を出力する。マイクロコンピュータ100は、パルス信号S1の出力間隔が第1異常検知ラインT3以上となったことに基づいてマイクロコンピュータ100の異常を検知してマイクロコンピュータ100に保持されている退避データを不揮発性メモリ300に記憶させる。
【選択図】図4
【特許請求の範囲】
【請求項1】
所定の処理を実行する中央処理部と、前記処理に用いられる記憶部と、前記処理の実行タイミングを制御する信号を生成する計時部とを有するマイクロコンピュータと、前記マイクロコンピュータが出力する監視信号に基づいて前記マイクロコンピュータの異常を監視する外部監視装置と、前記マイクロコンピュータとの間でデータのやり取りを行う不揮発性の外部記憶装置とを備える制御システムにおいて前記マイクロコンピュータの異常を監視する異常監視方法であって、
前記外部監視装置は、前記監視信号の出力間隔が第1基準値以上となったことに基づいて前記マイクロコンピュータの異常を検知して前記マイクロコンピュータをリセットさせるリセット信号を出力し、
前記マイクロコンピュータは、前記監視信号の出力間隔が前記第1基準値よりも小さい値である第2基準値以上となったことに基づいて前記マイクロコンピュータの異常を検知して前記マイクロコンピュータに保持されている所定データを前記外部記憶装置に記憶させる、
異常監視方法。
【請求項2】
請求項1に記載の異常監視方法であって、
前記第2基準値は、前記マイクロコンピュータの正常動作時において、前記マイクロコンピュータが前記監視信号を出力しないと想定される出力間隔を示す基準値よりも大きい値である、
異常監視方法。
【請求項3】
請求項1又は2に記載の異常監視方法であって、
前記第2基準値は、前記第1基準値と、前記所定データのデータサイズとに基づいて設定される、
異常監視方法。
【請求項4】
請求項1又は2に記載の異常監視方法であって、
前記第2基準値は、前記第1基準値と、前記所定データの全てを前記外部記憶装置に退避させることが可能な時間とに基づいて設定される、
異常監視方法。
【請求項5】
請求項1又は2に記載の異常監視方法であって、
前記マイクロコンピュータは、前記監視信号の出力間隔が前記第2基準値以上となってから、前記監視信号の出力間隔が前記第1基準値以上となるまでの間において、前記所定データを前記外部記憶装置に記憶させる、
異常監視方法。
【請求項6】
請求項1又は2に記載の異常監視方法であって、
前記所定データは、前記中央処理部及び前記記憶部に保持されている各データのうち、前記マイクロコンピュータの異常発生時のプログラムの実行状態に関するプログラム実行情報である、
異常監視方法。
【請求項7】
請求項6に記載の異常監視方法であって、
前記プログラム実行情報は、プログラムカウンタの値、メモリ値、IO値、タスク実行状態情報のうちの少なくとも1つである、
異常監視方法。
【請求項8】
所定の処理を実行する中央処理部と、前記処理に用いられる記憶部と、前記処理の実行タイミングを制御する信号を生成する計時部とを有するマイクロコンピュータと、前記マイクロコンピュータが出力する監視信号に基づいて前記マイクロコンピュータの異常を監視する外部監視装置と、前記マイクロコンピュータとの間でデータのやり取りを行う不揮発性の外部記憶装置とを備える制御システムであって、
前記外部監視装置は、前記監視信号の出力間隔が第1基準値以上となったことに基づいて前記マイクロコンピュータの異常を検知して前記マイクロコンピュータをリセットさせるリセット信号を出力し、
前記マイクロコンピュータは、前記監視信号の出力間隔が前記第1基準値よりも小さい値である第2基準値以上となったことに基づいて前記マイクロコンピュータの異常を検知して前記マイクロコンピュータに保持されている所定データを前記外部記憶装置に記憶させる、
制御システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクロコンピュータの異常を監視する異常監視方法及び制御システムに関する。
【背景技術】
【0002】
従来、マイクロコンピュータの異常を監視する技術が存在する。例えば、外部の異常検出手段(ウォッチドッグタイマ)を用いて、マイクロコンピュータの異常を検知する技術が提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平9-190360号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述した従来技術では、マイクロコンピュータ内で正常であると判断される毎に、CPUの正常状態を示すデータを常に退避用メモリに退避させ、ウォッチドッグタイマを用いてマイクロコンピュータの異常が検知された場合にはCPUの動作が停止される。このように、マイクロコンピュータの正常時には、CPUの正常状態を示すデータを常に退避用メモリに退避させるため、正常時における処理の負荷が大きくなる。また、ウォッチドッグタイマを用いてマイクロコンピュータの異常が検知された場合には、CPUの動作が停止するため、マイクロコンピュータの異常発生時における情報であってデバッグ等に必要な情報を適切に確保することが困難となる。
【0005】
本発明は、マイクロコンピュータの正常時における異常監視処理の負荷を抑制し、マイクロコンピュータの異常発生時における所定データを適切に確保することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一態様は、所定の処理を実行する中央処理部と、その処理に用いられる記憶部と、その処理の実行タイミングを制御する信号を生成する計時部とを有するマイクロコンピュータと、マイクロコンピュータが出力する監視信号に基づいてマイクロコンピュータの異常を監視する外部監視装置と、マイクロコンピュータとの間でデータのやり取りを行う不揮発性の外部記憶装置とを備える制御システムにおいてマイクロコンピュータの異常を監視する異常監視方法である。この異常監視方法では、外部監視装置は、監視信号の出力間隔が第1基準値以上となったことに基づいてマイクロコンピュータの異常を検知してマイクロコンピュータをリセットさせるリセット信号を出力する。マイクロコンピュータは、監視信号の出力間隔が第2基準値(第1基準値よりも小さい値)以上となったことに基づいてマイクロコンピュータの異常を検知してマイクロコンピュータに保持されている所定データを外部記憶装置に記憶させる。
【発明の効果】
【0007】
本発明によれば、マイクロコンピュータの正常時における異常監視処理の負荷を抑制し、マイクロコンピュータの異常発生時における所定データを適切に確保することができる。
【図面の簡単な説明】
【0008】
図1図1は、制御システムの構成例を示すブロック図である。
図2図2は、パルス信号と各基準値との関係例を示す図である。
図3図3は、パルス信号と各基準値との関係例を示す図である。
図4図4は、異常検知処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、添付図面を参照しながら本発明の実施形態について説明する。
【0010】
[制御システムの構成例]
図1は、制御システム1の構成例を示すブロック図である。制御システム1は、マイクロコンピュータ100の異常を監視する監視システムである。
【0011】
制御システム1は、マイクロコンピュータ100と、外部監視装置200と、不揮発性メモリ300とを備える。
【0012】
マイクロコンピュータ100は、CPU(Central Processing Unit)110と、メモリ120と、クロック発振器130と、周辺回路140とを備える。
【0013】
CPU110は、マイクロコンピュータ100内又はその周辺の各機器、各回路等を制御したり、データを演算したりする中央処理装置又は中央演算処理装置である。CPU110は、演算部111と、PC(program counter)112と、レジスタ群113とを備える。
【0014】
演算部111は、各種の演算処理を実行するものである。PC112は、CPU110内部でデータを保持する保持部であり、次に実行すべき命令が格納されているメモリ上の番地(アドレス)を保持する。レジスタ群113は、CPU110内部でデータを保持する複数のレジスタである。
【0015】
メモリ120は、CPU110により実行されるプログラム等を格納するメモリである。例えば、メモリ120には、スタック情報121、異常検知プログラム122、情報退避プログラム123、他の処理プログラム等が格納される。異常検知プログラム122は、計時回路141で計時された時間に基づいてマイクロコンピュータ100の異常を監視して、外部監視装置200が発動される前に、マイクロコンピュータ100の異常を検知する機能を実現するためのプログラムである。また、情報退避プログラム123は、マイクロコンピュータ100の異常が検知された場合に、退避用の不揮発性メモリ300へ所定データを退避する機能を実現するためのプログラムである。すなわち、CPU110が異常検知プログラム122を実行することにより、CPU110は、外部監視装置200が発動される前に、マイクロコンピュータ100の異常を検知する異常検知手段として機能する。また、CPU110が情報退避プログラム123を実行することにより、CPU110は、マイクロコンピュータ100の異常が検知された場合に、不揮発性メモリ300へ所定データを退避する情報退避手段として機能する。
【0016】
クロック発振器130は、各回路を動かすためのペースメーカとして使われる信号を発信する信号発振器である。クロック発振器130は、CPU110が処理を同期させるために用いられる。
【0017】
周辺回路140は、計時回路141を備える。計時回路141は、クロック発振器130から発信された信号を用いて計時する回路である。すなわち、計時回路141は、処理の実行タイミングを制御する信号を生成する計時部である。計時回路141として、コンペアマッチタイマ(CMT)等のIC(Integrated Circuit)回路を用いることが可能である。
【0018】
外部監視装置200は、ウォッチドッグタイマ機能を実現する機器である。具体的には、外部監視装置200は、マイクロコンピュータ100から出力されるパルス信号(監視信号)S1に基づいて、マイクロコンピュータ100の異常(例えば、プログラムの異常)を監視する。また、外部監視装置200は、マイクロコンピュータ100からのパルス信号S1が出力されない時間が所定時間(第2異常検知ラインT1(図2図3参照))を超えた場合には、マイクロコンピュータ100の異常を検知し、HWリセット信号S2をマイクロコンピュータ100に出力する。このHWリセット信号S2が出力されると、マイクロコンピュータ100においてCPU110がリセットされる。なお、外部監視装置200は、WDT(Watch Dog Timer)とも称される。また、外部監視装置200は、自律的なハードウェア機器として実装してもよく、外部監視装置の機能をソフトウェアとして実現してもよい。
【0019】
ここで、マイクロコンピュータ100の制御に基づいて動作する機器(ハードウェア:例えば電動モータ)が存在することも想定される。この場合には、外部監視装置200は、マイクロコンピュータ100の異常が検知された場合には、マイクロコンピュータ100が異常である旨を通知してその機器の動作を停止させることも可能である。
【0020】
不揮発性メモリ300は、マイクロコンピュータ100との間で各種情報のやり取りを行い、マイクロコンピュータ100から出力される情報を格納する外部記憶装置である。例えば、不揮発性メモリ300は、マイクロコンピュータ100の異常が外部監視装置200により検知される直前のプログラム実行状態を退避するための退避用不揮発性メモリとして機能する。例えば、不揮発性メモリ300には、信号線S11乃至S13で示すように、PC112とレジスタ群113とメモリ120とに格納されている異常直前のプログラム実行状態が退避される。不揮発性メモリ300として、例えば、書き込み可能なROM(Read Only Memory)を用いることが可能である。
【0021】
例えば、CPU110は、計時回路141により計時される時間に基づいて、CPU110が外部監視装置200へパルス信号S1を出力しない時間をカウントする。そして、CPU110は、メモリ120の異常検知プログラム122に基づいて、そのカウントされた値(カウント値)を用いて外部監視装置200が発動する前に、マイクロコンピュータ100の異常を事前に検知する。また、CPU110は、マイクロコンピュータ100の異常が事前に検知された場合には、情報退避プログラム123に基づいて、デバッグに必要な情報を不揮発性メモリ300に退避させる。
【0022】
[ウォッチドッグタイマ機能について]
ウォッチドッグタイマ機能は、コンピュータの異常、ソフトウェアのプログラム異常を監視する仕組みとして知られている。なお、ウォッチドッグタイマ機能を実現するためには、外部監視装置200へ一定間隔でパルス信号S1を出力するプログラムを実装する必要がある。そして、外部監視装置200が、マイクロコンピュータ100から出力されるパルス信号S1の周期を観測し、その観測結果に基づいて、マイクロコンピュータ100の異常を検知することが可能である。例えば、外部監視装置200が、マイクロコンピュータ100からのパルス信号S1の出力周期が長すぎることを検知した場合には、CPUをリセットさせるHWリセット信号S2をマイクロコンピュータ100に出力して制御システム1を安全状態に移行させる。
【0023】
なお、ここでは、一定間隔でパルス信号を出力するプログラムを実装する例を示したが、一定間隔以外の間隔(例えば、ある時間内にパルス信号を出力する)でパルス信号を出力する場合についても、ウォッチドッグタイマ機能を実現可能である。
【0024】
[マイクロコンピュータの異常について]
一般に、利用中のアプリケーションやコンピュータが制御不能の状態になることをコンピュータの異常(又は暴走)と称することが多い。また、コンピュータに異常が発生すると、コンピュータがフリーズしたり、入力していない操作を勝手に実行したりすることがあるため、これらを速やかに検知することが重要となる。
【0025】
ここで、コンピュータの異常の原因として、主に、ハード要因及びソフト要因が考えられる。ハード要因として、例えば、CPU異常、メモリ異常(例えば、データ化け)等が考えられる。なお、データ化けは、メモリ上の実行プログラムが化けてしまい、規定していない命令を実行することを意味する。また、ソフト要因として、例えば、不正アドレスジャンプ、スタックオーバーフロー等が考えられる。なお、不正アドレスジャンプは、プログラム自体が異常であり、命令がジャンプすることを意味する。また、スタックオーバーフローは、実行中のメモリ領域が期待以上になることを意味する。これらの各要因のうち、CPU異常以外の要因については、異常発生時のプログラムの実行状態(例えば、プログラムカウンタの値、メモリ値、IO(Input Output)値、タスク実行状態等)を確認することで、不具合原因を特定することが可能である。そこで、本実施形態では、主に、ハード要因のうちのメモリ異常、ソフト要因がコンピュータの異常の原因である場合に、回避データを用いて、その不具合の原因を特定するようにする。
【0026】
ここで、マイクロコンピュータの異常の発生時に、マイクロコンピュータが、自身(又は実行中のプログラム)が異常であることに気付かず、異常発生時のプログラムの実行状態を残さない場合を想定する。この場合には、マイクロコンピュータの異常の発生により、外部WDTでCPUリセットされる。しかし、このCPUリセットがかかった後に、同じ異常現象が再現するとは限らず、実行中のプログラムのどこで、なぜ異常が発生したかを特定するのが極めて困難となる。このため、不具合対策に、非常に多くの時間と労力を要することになる。
【0027】
これに対して、本実施形態では、マイクロコンピュータ100の異常の発生時に、マイクロコンピュータ100が、自身(又は実行中のプログラム)が異常であることを迅速に検知することが可能である。このため、異常発生時のプログラムの実行状態(例えば、プログラムカウンタの値、メモリ値、IO値、タスク実行状態等)を、CPUリセット後も消えないエリア(不揮発性メモリ300)に残すことが可能となる。すなわち、デバッグに必要な情報を事前に退避することが可能となる。これにより、実行中のプログラムのどこで、なぜ異常が発生したかを特定することが容易となる。このため、不具合原因の特定を早め、システムの信頼性を向上させることが可能となる。
【0028】
このように、本実施形態では、マイクロコンピュータ100自身がパルス信号S1を外部監視装置200に出力しない時間をカウントし、外部監視装置200が発動される前に、マイクロコンピュータ100の異常を検知する。そして、マイクロコンピュータ100が、自身の異常を検知した場合には、外部監視装置200が発動される前に、CPUリセット後も消えないエリア(不揮発性メモリ300)にプログラム実行状態を退避させる。すなわち、本実施形態では、外部監視装置200の他に、マイクロコンピュータ100内にも簡単に異常を監視する監視部(CPU110)を設け、マイクロコンピュータ100内の監視部が、外部監視装置200よりも早く異常を検知できるようにし、外部監視装置200によりマイクロコンピュータ100がリセットされる前に不揮発性メモリ300にデータを退避させる。このように、本実施形態では、マイクロコンピュータ100自身での異常監視と、外部監視装置200での異常監視との2段階で、マイクロコンピュータ100の異常を監視する。このように、段階を分けて異常を監視する異常監視手段を追加することで、マイクロコンピュータ100自身が異常を事前に検知することが可能であり、デバッグに必要な情報を退避する時間を確保できる。
【0029】
[退避対象のデータについて]
次に、マイクロコンピュータ100の異常が検知された際に、不揮発性メモリ300に退避させるデータ(退避データ)について説明する。例えば、デバックに必要となる各種情報を退避データとすることが好ましい。この退避データは、例えば、CPU110及びメモリ120に保持されている情報のうち、デバックに必要となる情報である。この情報は、例えば、メモリ120に保持されているスタック情報121、CPU110のレジスタ群113に保持されているレジスタ情報等である。具体的には、CPU110又はメモリ120に保持されているプログラムに関する各情報のうち、異常発生時のプログラムの実行状態に関する情報(例えば、プログラムカウンタの値、メモリ値、IO値、タスク実行状態等)を退避データとすることが可能である。なお、プログラムカウンタの値は、プログラムカウンタの経路、プログラムの実行経路等と称することもある。
【0030】
また、異常発生時のプログラムの実行状態に関する情報として、マイクロコンピュータ100が自身の異常を検知したタイミングから、外部監視装置200がマイクロコンピュータ100の異常を検知したタイミングまでのデータが退避データの対象となる。すなわち、図2図3に示す第1異常検知ラインT3から第2異常検知ラインT1までのデータが退避データの対象となる。
【0031】
[異常検知ラインの設定例]
図2は、マイクロコンピュータ100から出力されるパルス信号と、各基準値との関係例を示す図である。図2に示すグラフにおいて、横軸は時間軸を示し、縦軸は、マイクロコンピュータ100がパルス信号を出力しない時間を示す。すなわち、縦軸は、マイクロコンピュータ100からのパルス信号の出力により計時回路141のカウント値がリセットされてからの経過時間を示す。図2を参照して第1異常検知ラインT3を設定する例を示す。
【0032】
図2において、第2異常検知ラインT1は、外部監視装置200が異常を検知し、外部監視装置200からCPUリセットがされる基準値である。第2異常検知ラインT1は、外部監視装置200の設定状態によって決定される。
【0033】
また、ラインT2は、マイクロコンピュータ100の正常動作時において、マイクロコンピュータ100がパルス信号を出力しないと想定される出力間隔のうちの最も長い出力間隔(パルス出力しない最悪時間)を示す基準値である。ラインT2は、実験又はシミュレーション等に基づいて適宜設定が可能である。
【0034】
また、第1異常検知ラインT3は、マイクロコンピュータ100が異常を検知し、マイクロコンピュータ100の退避データの退避を開始する基準値である。
【0035】
ここで、外部監視装置200からCPUリセットがされる前に、マイクロコンピュータ100の退避データを退避させるためには、外部監視装置200からCPUリセットがされるタイミングよりも前に、マイクロコンピュータ100は異常を検知する必要がある。そこで、外部監視装置200からCPUリセットがされる第2異常検知ラインT1よりも小さい値が、第1異常検知ラインT3として設定される。つまり、T1>T3の関係を保つ必要がある。
【0036】
また、マイクロコンピュータ100のプログラムの処理負荷を上げないため、正常動作中には、情報退避プログラム123に基づく処理をなるべく実行させないことが好ましい。そこで、正常動作時においてマイクロコンピュータ100がパルス信号を出力しないと想定される時間のうちの最も長い時間(ラインT2)よりも大きい値が、第1異常検知ラインT3として設定される。つまり、T3>T2の関係を保つ必要がある。
【0037】
以上のことに基づいて、T1>T3>T2の関係を保つことを前提に、第1異常検知ラインT3を任意に設定することが可能である。すなわち、図2に示す範囲H1において、第1異常検知ラインT3を任意に設定することが可能である。
【0038】
次に、図2を参照して、異常検知処理について説明する。折れ線P1は、マイクロコンピュータ100からパルス信号が出力されない時間の遷移を示す線である。具体的には、時間t0乃至t3のそれぞれのタイミングでマイクロコンピュータ100からパルス信号が出力される。また、時間t3のタイミングでマイクロコンピュータ100からパルス信号が出力された後には、マイクロコンピュータ100からパルス信号が出力されないため、パルス出力しない時間が増加する。すなわち、時間t4のタイミングで、パルス出力しない時間がラインT2以上となる。また、時間t5のタイミングで、パルス出力しない時間が第1異常検知ラインT3以上となる。また、時間t6のタイミングで、パルス出力しない時間が第2異常検知ラインT1以上となる。
【0039】
パルス出力しない時間が第1異常検知ラインT3以上となった場合には、マイクロコンピュータ100は、自身の異常を検知する。すなわち、CPU110は、メモリ120の異常検知プログラム122に基づいて、マイクロコンピュータ100の異常を検知する。また、CPU110は、マイクロコンピュータ100の異常が検知された場合には、情報退避プログラム123に基づいて、デバッグに必要な情報を不揮発性メモリ300に退避させる。
【0040】
パルス出力しない時間が第2異常検知ラインT1以上となった場合には、外部監視装置200は、マイクロコンピュータ100の異常を検知する。この場合には、外部監視装置200は、CPU110をリセットするためのHWリセット信号S2をマイクロコンピュータ100に出力する。これにより、マイクロコンピュータ100はリセットされる。
【0041】
[退避対象となる情報に基づく異常検知ラインの設定例]
図3は、マイクロコンピュータ100から出力されるパルス信号と、各基準値との関係例を示す図である。なお、図3は、図2に示す例において、第1異常検知ラインT3を変更したものであり、それ以外については、図2と共通するため、図2と共通する部分には同一の符号を付してこれらの説明を省略する。
【0042】
図3では、外部監視装置200によるCPUリセットがされる前に、退避したい情報をより確実に退避させることができるように第1異常検知ラインT3を設定する場合の設定例を示す。すなわち、退避したい情報をより確実に退避させる前にCPUリセットされることを防ぐことが可能となる。また、図3では、パルス出力しない時間が第1異常検知ラインT3以上となるタイミングは、時間t7となる。
【0043】
ここで、退避対象となる情報(データ量)については、退避対象となる情報の種類等に基づいて予め把握することが可能である。例えば、プログラムAを実行する場合に、そのプログラムAのサイズと、異常を検知したときに知りたい情報とを予め把握しておくことが可能である。このため、プログラムAを実行する場合における退避対象となる情報(データ量)についてのデータサイズを把握可能である。すなわち、退避対象となる情報の不揮発性メモリ300への退避がより確実に終了する時間t10を算出可能である。この場合には、第2異常検知ラインT1からt10を減算することで第1異常検知ラインT3を求めることが可能である。すなわち、第1異常検知ラインT3=T1-t10で求められる(ただし、T3≧T2)。このように、T3≧T2が成立している場合には、第1異常検知ラインT3を設定することが可能である。
【0044】
ただし、T3≧T2が成立していない場合には、T3≧T2が成立するように、異常検知時に退避したいデータ量を調節した上で、第1異常検知ラインT3の設計値を決定することが好ましい。
【0045】
このように、異常検知プログラム122に基づいてマイクロコンピュータ100の異常を検知する時間を、退避したいデータサイズに応じて、不揮発性メモリ300へのデータ退避がより確実に終了する時間に、任意に設定することが可能である。すなわち、退避したいデータサイズに応じて、不揮発性メモリ300への情報退避がより確実に終了する時間を基準にして第1異常検知ラインT3を設定することが可能である。これにより、データ退避中に外部監視装置200によるCPUリセットが発動されてしまい必要なデータが取得しきれないという事態を防止することが可能である。
【0046】
また、例えば、異常発生直前の正常時のデータがスタックメモリ等に必ず残るように異常検知のタイミングを設定すれば、いつ、どのプログラムが実行中に異常が発生したか等の変化点を捕えることができる。これにより、不具合原因の特定を早めることができ、制御システム1の信頼性を向上させることが可能となる。
【0047】
ここで、第1異常検知ラインT3を相対的に低く設定すれば、異常監視処理の負荷が増加するが、退避できるデータを多く確保することができる。しかし、第1異常検知ラインT3を低く設定し過ぎると、マイクロコンピュータ100が異常でない場合でも異常と検知されてしまうおそれもある。一方、第1異常検知ラインT3を相対的に高く設定すれば、異常監視処理の負荷を減少させることが可能であるが、退避できるデータが少なくなる。そこで、異常監視処理の負荷と、退避したいデータとの関係を考慮して第1異常検知ラインT3を設定することが好ましい。
【0048】
[監視システムの動作例]
図4は、マイクロコンピュータ100における異常検知処理の一例を示すフローチャートである。また、この異常検知処理は、メモリ120(図1参照)に記憶されているプログラムに基づいてCPU110(図1参照)により実行される。また、この異常検知処理は、異常検知機能の起動時に開始される。また、この異常検知処理では、異常検知機能の起動時から、退避データを退避するまでの処理を示す。この異常検知処理では、図1乃至図3を適宜参照して説明する。
【0049】
ステップS401において、マイクロコンピュータ100の電源が投入され、CPUリセットがされると、CPU110は初期状態から起動する。
【0050】
ステップS402において、CPU110は、初期設定のプログラムを実行する。ここで、CPU110は、計時回路141、第1異常検知ラインT3(異常検知トリガ)の初期設定を実行する。この第1異常検知ラインT3については、図2図3で示した設定方法により予め設定されている。
【0051】
ステップS403において、CPU110は、計時回路141によるタイマカウントを開始させ、異常監視を開始する。なお、計時回路141を用いてカウントされた値(カウント値)は、図2図3に示すグラフの縦軸の値に相当する。
【0052】
ステップS404において、CPU110は、通常動作を開始してプログラムを順次実行する。この通常動作の中で、CPU110は、実行中のプログラムに基づいて、外部監視装置200へパルス信号を出力する。例えば、実行中のプログラムが定期的にパルス出力を実施するものである場合には、外部監視装置200へ定期的にパルス信号が出力される。
【0053】
ステップS405において、CPU110は、外部監視装置200へのパルス信号が出力されているか否かを確認(検知)する。外部監視装置200へのパルス信号が出力されている場合には、ステップS406に進む。一方、外部監視装置200へのパルス信号が出力されていない場合には、ステップS407に進む。
【0054】
ステップS406において、CPU110は、計時回路141を用いてカウントされた値(カウント値)をクリアする。
【0055】
ステップS407において、CPU110は、計時回路141を用いてカウントされた値(カウント値)が第1異常検知ラインT3(図2図3参照)に到達しているか否かを確認する。そのカウント値が第1異常検知ラインT3に到達している場合には、ステップS408に進む。一方、そのカウント値が第1異常検知ラインT3に到達していない場合には、ステップS404に戻る。
【0056】
ステップS408において、CPU110は、マイクロコンピュータ100の異常が開始していると判定し、情報退避プログラム123に基づいて、プログラム実行情報を不揮発性メモリ300に退避させる退避処理を開始する。ここで、マイクロコンピュータ100の異常の原因が、CPU異常(ハード要因)以外の要因である場合には、CPU自体は正常であるため、上述した退避処理を実行することは可能である。ただし、マイクロコンピュータ100の異常の原因が、CPU異常(ハード要因)である場合には、CPU自体が異常となっているため、上述した退避処理を実行することが困難であることも想定される。この場合には、外部監視装置200からHWリセット信号S2が出力されるまで待機し、HWリセット信号S2が出力されたタイミングでCPU110がリセットされる。
【0057】
ステップS409において、CPU110は、動作を実行する。また、ステップS410において、CPU110は、外部監視装置200からHWリセット信号S2が出力されたか否かを判定する。外部監視装置200からHWリセット信号S2が出力された場合には、CPUリセットがされ、異常検知処理の動作を終了する。一方、外部監視装置200からHWリセット信号S2が出力されていない場合には、外部監視装置200からHWリセット信号S2が出力されるまで動作を継続して実行する。すなわち、プログラム実行情報を退避したら、外部監視装置200からHWリセット信号S2が出力されるまで動作を継続し続ける。
【0058】
このように、不揮発性メモリ300に退避されたプログラム実行情報については、例えば、デバック用の情報として用いることが可能である。すなわち、マイクロコンピュータ100に異常が発生した際に、マイクロコンピュータ100がどのような状態になっていたかを開発者等が確認する際に用いることが可能である。
【0059】
[本実施形態の効果例]
このように、本実施形態では、マイクロコンピュータ100自身が、外部監視装置200が発動される前に、異常を事前に検知することができるため、異常直前のプログラム実行状態等をCPUリセット後も消えない不揮発性メモリ300に残すことが可能である。すなわち、外部監視装置200が発動される前に、デバッグ等に必要な情報(退避データ)を事前に退避することができる。この退避データに基づいて、実行中のプログラムのどこで、なぜ異常な状態になったかを特定することができるため、不具合原因の特定を早め、制御システム1の信頼性を向上させることが可能になる。すなわち、マイクロコンピュータ100の異常発生時における退避データを適切に確保することができる。また、マイクロコンピュータ100自身が、異常を検知した場合にのみ、退避データを不揮発性メモリ300に退避させるため、マイクロコンピュータ100の正常時における異常監視処理の負荷を抑制することができる。
【0060】
ここで、マイクロコンピュータ100の異常が検知された後に、マイクロコンピュータ100の異常が検知される前のデータ(退避データ)を用いて、その異常検知直前の状態から再スタートさせる場合を想定する。このように再スタートさせる場合には、ノイズ等の一時的なデータ化けが異常の原因となっているときには効果的だが、異常の原因が、退避用メモリのハード故障である場合、プログラム自体に問題があり、不正アドレスジャンプ、スタックオーバーフローによるものである場合等には、本質的な異常の原因を特定できないまま、動作し続けてしまうおそれがある。
【0061】
これに対して、本実施形態では、マイクロコンピュータ100の異常が検知される前のデータ(退避データ)を確保しておき、その退避データを用いて異常検知前の状態に戻すのではなく、その退避データを用いて不具合原因を特定する。このため、異常の原因が、退避用メモリのハード故障である場合、プログラム自体に問題があり、不正アドレスジャンプ、スタックオーバーフローによるものである場合等についても、本質的な異常の原因を特定することが可能となる。
【0062】
[本実施形態の構成例及びその効果]
本実施形態に係る異常監視方法は、所定の処理を実行するCPU110(中央処理部の一例)と、その処理に用いられるメモリ120(記憶部の一例)と、その処理の実行タイミングを制御する信号を生成する計時回路141(計時部の一例)とを有するマイクロコンピュータ100と、マイクロコンピュータ100が出力するパルス信号S1(監視信号の一例)に基づいてマイクロコンピュータ100の異常を監視する外部監視装置200と、マイクロコンピュータ100との間でデータのやり取りを行う不揮発性メモリ300(不揮発性の外部記憶装置の一例)とを備える制御システム1においてマイクロコンピュータ100の異常を監視する異常監視方法である。ステップS410において、外部監視装置200は、パルス信号S1の出力間隔が第2異常検知ラインT1(第1基準値の一例)以上となったことに基づいてマイクロコンピュータ100の異常を検知してマイクロコンピュータ100をリセットさせるHWリセット信号S2(リセット信号の一例)を出力する。ステップS407、S408において、マイクロコンピュータ100は、パルス信号S1の出力間隔が第1異常検知ラインT3(第2基準値の一例)以上となったことに基づいてマイクロコンピュータ100の異常を検知してマイクロコンピュータ100に保持されている退避データ(所定データの一例)を不揮発性メモリ300に記憶させる。また、本実施形態に係るプログラムは、これらの各処理をコンピュータに実行させるプログラムである。言い換えると、本実施形態に係るプログラムは、制御システム1が実行可能な各機能をコンピュータに実現させるプログラムである。
【0063】
この構成によれば、マイクロコンピュータ100の異常発生時における退避データを適切に確保することができるため、不具合原因の特定を早め、制御システム1の信頼性を向上させることが可能になる。また、マイクロコンピュータ100自身が、異常を検知した場合にのみ、退避データを不揮発性メモリ300に退避させるため、マイクロコンピュータ100の正常時における異常監視処理の負荷を抑制することができる。
【0064】
本実施形態に係る異常監視方法では、第1異常検知ラインT3(第2基準値の一例)は、マイクロコンピュータ100の正常動作時において、マイクロコンピュータ100がパルス信号S1(監視信号の一例)を出力しないと想定される出力間隔を示すラインT2(基準値の一例)よりも大きい値である。
【0065】
この構成によれば、第1異常検知ラインT3をラインT2よりも大きく設定することにより、マイクロコンピュータ100自身が、適切なタイミングで異常を検知することが可能となる。これにより、適切な退避データを不揮発性メモリ300に退避させることができ、マイクロコンピュータ100の正常時における異常監視処理の負荷を抑制することができる。
【0066】
本実施形態に係る異常監視方法では、第1異常検知ラインT3(第2基準値の一例)を、第2異常検知ラインT1(第1基準値の一例)と、退避データ(所定データの一例)のデータサイズとに基づいて設定してもよい。
【0067】
この構成によれば、外部監視装置200によるCPUリセットがされる前に、退避データをより確実に退避させることができるように、退避データのデータサイズを用いて、第1異常検知ラインT3を設定することが可能である。
【0068】
本実施形態に係る異常監視方法では、第1異常検知ラインT3(第2基準値の一例)を、第2異常検知ラインT1(第1基準値の一例)と、退避データ(所定データの一例)の全てを不揮発性メモリ300(外部記憶装置の一例)に退避させることが可能な時間とに基づいて設定してもよい。
【0069】
この構成によれば、外部監視装置200によるCPUリセットがされる前に、退避データをより確実に退避させることができるように、退避データの全てを退避させることが可能な時間を用いて、第1異常検知ラインT3を設定することが可能である。
【0070】
本実施形態に係る異常監視方法では、マイクロコンピュータ100は、パルス信号S1(監視信号の一例)の出力間隔が第1異常検知ラインT3(第2基準値の一例)以上となってから、パルス信号S1の出力間隔が第2異常検知ラインT1(第1基準値の一例)以上となるまでの間において、退避データ(所定データの一例)を不揮発性メモリ300(外部記憶装置の一例)に記憶させる。
【0071】
この構成によれば、外部監視装置200によるCPUリセットがされる前に、退避データをより確実に退避させることができる。
【0072】
本実施形態に係る異常監視方法では、退避データ(所定データの一例)を、CPU110(中央処理部の一例)及びメモリ120(記憶部の一例)に保持されている各データのうち、マイクロコンピュータ100の異常発生時のプログラムの実行状態に関するプログラム実行情報としてもよい。
【0073】
この構成によれば、デバッグ等に必要な退避データを適切に確保することが可能となる。
【0074】
本実施形態に係る異常監視方法では、プログラム実行情報を、プログラムカウンタの値、メモリ値、IO値、タスク実行状態情報のうちの少なくとも1つとしてもよい。
【0075】
この構成によれば、デバッグ等に必要な退避データを予め設定しておき、適切に確保することが可能となる。
【0076】
本実施形態に係る制御システム1は、所定の処理を実行するCPU110(中央処理部の一例)と、その処理に用いられるメモリ120(記憶部の一例)と、その処理の実行タイミングを制御する信号を生成する計時回路141(計時部の一例)とを有するマイクロコンピュータ100と、マイクロコンピュータ100が出力するパルス信号S1(監視信号の一例)に基づいてマイクロコンピュータ100の異常を監視する外部監視装置200と、マイクロコンピュータ100との間でデータのやり取りを行う不揮発性メモリ300(不揮発性の外部記憶装置の一例)とを備える制御システムである。外部監視装置200は、パルス信号S1の出力間隔が第2異常検知ラインT1(第1基準値の一例)以上となったことに基づいてマイクロコンピュータ100の異常を検知してマイクロコンピュータ100をリセットさせるHWリセット信号S2(リセット信号の一例)を出力する。マイクロコンピュータ100は、パルス信号S1の出力間隔が第1異常検知ラインT3(第2基準値の一例)以上となったことに基づいてマイクロコンピュータ100の異常を検知してマイクロコンピュータ100に保持されている退避データ(所定データの一例)を不揮発性メモリ300に記憶させる。なお、制御システム1の代わりに、制御システム1により実現される各処理を実行可能な複数の機器により構成される制御システムとしてもよく、制御システム1により実現される各処理を実行可能な1の機器により構成される制御装置としてもよい。
【0077】
この構成によれば、マイクロコンピュータ100の異常発生時における退避データを適切に確保することができるため、不具合原因の特定を早め、制御システム1の信頼性を向上させることが可能になる。また、マイクロコンピュータ100自身が、異常を検知した場合にのみ、退避データを不揮発性メモリ300に退避させるため、マイクロコンピュータ100の正常時における異常監視処理の負荷を抑制することができる。
【0078】
なお、本実施形態で示した各処理手順は、本実施形態を実現するための一例を示したものであり、本実施形態を実現可能な範囲で各処理手順の一部の順序を入れ替えてもよく、各処理手順の一部を省略したり他の処理手順を追加したりしてもよい。
【0079】
なお、本実施形態の各処理は、各種の処理手順をコンピュータに実行させるためのプログラムに基づいて実行される。本実施形態は、それらの各処理を実行する機能を実現するプログラム、そのプログラムを記憶する記録媒体の実施形態としても把握することができる。例えば、マイクロコンピュータに新機能を追加するためのアップデート処理により、そのプログラムをマイクロコンピュータの記憶装置に記憶させることができる。これにより、そのアップデートされたマイクロコンピュータに本実施形態で示した各処理を実施させることが可能となる。
【0080】
以上、本発明の実施形態について説明したが、上記実施形態は本発明の適用例を示したに過ぎず、本発明の技術的範囲を上記実施形態の具体的構成に限定する趣旨ではない。
【符号の説明】
【0081】
1 制御システム、100 マイクロコンピュータ、110 CPU、111 演算部、112 PC、113 レジスタ群、120 メモリ、121 スタック情報、122 異常検知プログラム、123 情報退避プログラム、130 クロック発振器、140 周辺回路、141 計時回路、200 外部監視装置、300 不揮発性メモリ
図1
図2
図3
図4