(57)【特許請求の範囲】
【請求項１】
予め定められた処理時間測定区間の異常検出対象の処理時間を測定する処理時間測定手段と、
前記処理時間測定手段で測定した処理時間を蓄積する測定データ蓄積手段と、
前記測定データ蓄積手段に蓄積された測定データに基づいて、前記処理時間測定手段で測定した処理時間が基準から一定の閾値分はずれる場合を異常として検出する異常検出手段と、
前記異常検出対象の挙動データを取得する挙動データ取得手段と、
前記挙動データ取得手段で取得した処理時間測定区間の挙動データを蓄積する挙動データ蓄積手段を備え、
前記挙動データ取得手段は、前記異常検出手段で異常を検出した場合に挙動データ取得を停止することを特徴とする電子機器。
【請求項２】
前記挙動データ取得手段は、前記異常検出手段で異常を検出した場合に、その直前までの一定期間分の挙動データを前記挙動データ蓄積手段に蓄積すること特徴とする請求項１記載の電子機器。
【請求項３】
前記測定データ蓄積手段に蓄積された測定データは、処理時間を近似的に計算する計算式であることを特徴とする請求項１記載の電子機器。
【請求項４】
前記異常検出手段が用いる計算式は、前記電子機器の外部で生成したものを使用することを特徴とする請求項１記載の電子機器。
【請求項５】
前記挙動データ蓄積手段がデータを格納するメモリは、リングバッファとしてデータが蓄積されることを特徴とする請求項１記載の電子機器。
【請求項６】
前記挙動データ取得手段で取得した挙動データを出力するための出力手段を有することを特徴とする請求項１記載の電子機器。
【請求項７】
前記挙動データ蓄積手段は、前記異常検出手段で異常が検出されなかった場合の挙動データについては削除をおこない、異常を検出した場合の挙動データのみを蓄積することを特徴とする請求項１記載の電子機器。
【請求項８】
異常検出対象の処理時間を測定する処理時間測定手段と、
前記処理時間測定手段で測定した処理時間を蓄積する測定データ蓄積手段と、
前記測定データ蓄積手段に蓄積された測定データに基づいて、前記処理時間測定手段で測定した処理時間が基準から一定の閾値分はずれる場合を異常として検出する異常検出手段と、
前記異常検出対象の挙動データを取得する挙動データ取得手段と、
前記挙動データ取得手段で取得した挙動データを蓄積する挙動データ蓄積手段を備える電子機器の異常検出方法であって、
（１）前記挙動データ取得手段が予め定められた処理時間測定区間の挙動データの取得を開始し、挙動データ蓄積手段が前記処理時間測定区間の挙動データの蓄積を開始するステップと、
（２）前記異常検出手段が、異常の検出を開始し、前記処理時間測定手段が、異常検出対象の処理時間を測定を開始するステップと、
（３）前記処理時間測定手段が、異常検出対象の処理時間を測定を終了するステップと、
（４）前記異常検出手段が、前記（２）と前記（３）間で測定された処理時間に基づき、正常か異常かを判定するステップと、
（５）前記異常が検出されたときに、前記挙動データ取得手段が挙動データの取得を停止し、挙動データ蓄積手段が前記挙動データの蓄積を停止するステップとを有することを特徴とする電子機器の異常検出方法。
【請求項９】
前記（４）のステップにおいて正常と判定されたときに、前記（１）のステップから蓄積されている挙動データを削除することを特徴とする請求項８記載の電子機器の異常検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器に係り、特に、異常時の電子機器の挙動データを適切に取得するのに好適な異常検出機能付き電子機器に関する。
【背景技術】
【０００２】
一般に、電子機器においては、プロセッサが、動作時のトレース情報を、メモリに書き込み、エラー時においては、それを解析して電子機器の異常の原因を突き止める技術が広く知られている。
【０００３】
例えば、特許文献１には、マイクロコンピュータ２上で動作するプログラムが自己の動作状態のトレースを、ＲＡＭ４などに記憶し、特に、異常検出部９が異常を検出するときには、エラートレースとして、その動作状態を記憶する電子機器が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２３６５９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記特許文献１の異常検出時のデバッグ支援のための技法は、制御プログラムを実行して動作させる電子機器において、広くおこなわれている技術である。しかしながら、上記特許文献１は、異常が起こった場合の動作状態に関するデータ（トレース）を適切に取得することについては考慮されていない。すなわち、電子機器の異常と、異常原因を特定するためのデータに対応がなく、デバッグするものは、電子機器の異常と、異常原因を特定するデータとの関連を把握するのが困難であった。
【０００６】
本発明は、上記問題点を解決するためになされたもので、その目的は、電子機器自身の制御プログラムの動作の異常を検知し、異常原因を特定するためのデータを適切に取得し、異常の原因の解析をおこないやすくする電子機器を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の電子機器は、異常検出対象の処理時間を測定する処理時間測定手段と、処理時間測定手段で測定した処理時間を蓄積する測定データ蓄積手段と、測定データ蓄積手段に蓄積された測定データに基づいて、処理時間測定手段で測定した処理時間が基準値から一定の閾値分はずれる場合を異常として検出する異常検出手段と、異常検出対象の挙動データを取得する挙動データ取得手段と、挙動データ取得手段で取得した挙動データを蓄積する挙動データ蓄積手段を備える。挙動データ取得手段は、異常検出手段で異常を検出した場合に挙動データ取得を停止するようにし、異常検出手段で異常を検出した場合に、その直前までの一定期間分の挙動データを挙動データ蓄積手段に蓄積するようにする。
【０００８】
挙動データ蓄積手段は、例えば、データを格納するメモリは、リングバッファとしてデータが蓄積されるようにする。
【０００９】
また、正常時の場合には、挙動データを削除するようにし、異常時の場合の挙動データのみをメモリ上に残すようにしてもよい。
【発明の効果】
【００１０】
本発明によれば、電子機器自身の制御プログラムの動作の異常を検知し、異常原因を特定するためのデータを適切に取得し、異常の原因の解析をおこないやすくする電子機器を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態に係る異常検出機能付き電子機器１の概略構成を示すブロック図である。
【図２】本実施形態の制御処理プログラムの機能構成を示すブロック図である。
【図３】異常検出対象部１２１の処理時間の測定に関する処理を示すフローチャートである。
【図４】制御プログラムの処理に関して、繰り返し回数とその処理時間の関係を示すグラフである。
【図５】図４のグラフに、測定点ａ，ｂをプロットしたグラフである。
【図６】本発明の第一の実施形態に係る異常検出機能付き電子機器１における解析データ取得処理の正常時の処理を示すタイミングチャートである。
【図７】図６で示した挙動データ処理部１２３における挙動データの取得処理の詳細を示すフローチャートである。
【図８】リングバッファの概念を説明するための図である。
【図９】本発明の第一の実施形態に係る異常検出機能付き電子機器１における解析データ取得処理の異常時の処理を示すタイミングチャートである。
【図１０】本発明の第一の実施形態に係る異常時のリングバッファの挙動データの蓄積状態を説明する図である。
【図１１】本発明の第一の実施形態に係る異常検出機能付き電子機器１における解析データ取得処理の異常時の処理を示すタイミングチャートである。
【図１２】本発明の第一の実施形態に係る異常時のリングバッファの挙動データの蓄積状態を説明する図である。
【図１３】本発明の第二の実施形態に係る異常時のリングバッファの挙動データの蓄積状態を説明する図である。
【発明を実施するための形態】
【００１２】
以下、本発明に係る各実施形態を、図１ないし図１３を用いて説明する。
【００１３】
〔実施形態１〕
以下、本発明の第一の実施形態を、図１ないし図１０を用いて説明する。
【００１４】
本実施形態では、電子機器自身を制御する制御プログラムを対象に、処理に要する時間を測定し、処理時間の長さに異常を検出した場合、異常原因を特定するためのデータを適切に取得する解析データ取得処理を有する異常検出機能付き電子機器１を例に採って説明する。また、本実施形態の異常検出機能付き電子機器１は、搭載メモリが少なく、メモリをリングバッファとして使用する場合においても、解析に必要なデータの取得を可能にするものである。
【００１５】
先ず、図１を用いて本発明の一実施形態に係る異常検出機能付き電子機器１の概略構成について説明する。
図１は、実施形態に係る異常検出機能付き電子機器１の概略構成を示すブロック図である。
【００１６】
本実施形態の異常検出機能付き電子機器１は、図１に示すように、制御部１１と、記憶部１２と、通信部１３と、入力部１４と、出力部１５と、表示部１６を有している。
【００１７】
制御部１１は、記憶部１２が保持している処理プログラムを実行し、機器全体の動作を制御する部分であり、半導体装置のマイクロコンピュータにより実現される。
【００１８】
記憶部１２は、必要なデータ、プログラムを記憶する部分であり、半導体メモリ、磁気ディスクなどの媒体で実現される。本実施形態の記憶部１２は、電子機器１の動作を制御する機器制御処理プログラム、機器制御処理プログラムの性能劣化を検出して異常判定する異常検出処理プログラム、異常判定された処理プログラムの動作を解析するために必要なデータを取得する動作解析データ取得処理プログラムなどを記憶する部分である。
【００１９】
なお、本実施形態では、異常が検出された機器制御処理プログラムの動作を解析するための動作解析データ（以下、「挙動データ」という）として、機器制御処理プログラム中で呼び出されるスレッドの実行期間の情報を取得する場合を例に採って説明する。
【００２０】
通信部１３は、外部機器との通信をおこなう部分である。異常検出機能付き電子機器１の処理プログラムと、外部機器の有する処理プログラムとの間で通信をおこなう場合などに使用する。例えば、異常検出処理部１２２や挙動データ処理部１２３と同等の処理部を有する外部機器を用いて、異常検出機能付き電子機器１の異常検出や挙動データ取得をおこなう場合など、外部機器との間で処理コマンドを送受信するために使用する。
【００２１】
入力部１４は、電源を入れるなど異常検出機能付き電子機器１を操作するためのインタフェース部である。入力部１４の例としては、ボタン、スイッチ、キー、ダイアル、スティック、マウス、リモートコントローラ、タッチパネルなどがある。
【００２２】
出力部１５は、機器操作用画面や機器情報、機器の処理結果など、ユーザに提供するための画像データを出力する部分である。また、取得した挙動データの情報を外部記憶媒体に出力する場合にも使用する。
【００２３】
表示部１６は、ユーザに機器操作用画面や機器情報、機器の処理結果、取得した挙動データの情報を表示する部分である。表示部１６の例としては、液晶パネル、プラズマディスプレイパネル、有機ＥＬパネルなどがある。また、表示部１６は、スピーカなどを備えており、音声出力もおこなう。
【００２４】
なお、異常検出機能付き電子機器１は、表示部１６を異常検出機能付き電子機器１に備えていなくてもよく、その場合は外部接続された表示機器にて所望の画像が表示されるように、出力部１５から画像データを出力させればよい。
【００２５】
次に、図２を用いて本実施形態の制御処理プログラムの機能構成について説明する。
図２は、本実施形態の制御処理プログラムの機能構成を示すブロック図である。
【００２６】
本実施形態の制御処理プログラムは、機器制御処理部１２１と、異常検出処理部１２２と、挙動データ処理部１２３の機能により構成されている。
【００２７】
機器制御処理部１２１は、異常検出機能付き電子機器１自身の制御プログラムであり、電子機器として動作させるための機器制御処理プログラムの有する機能である。機器制御処理プログラムは、例えば、リモコンから異常検出機能付き電子機器１の設定変更をおこなった場合、入力部１４に入力された情報に基づいて異常検出機能付き電子機器１の設定を変更し、処理結果を出力部１５を通して表示部１６に表示させるといった一連の処理を実行するプログラムである。本実施形態では、機器制御処理部１２１の処理について異常検出をおこなう。以下、機器制御処理部１２１のことを、「異常検出対象部１２１」とも記すことにする。
【００２８】
異常検出処理部１２２は、異常検出対象部１２１の性能劣化を検出して異常判定する異常判定処理プログラムの有する機能であり、処理時間測定部１２２１と、測定データ蓄積部１２２２と、異常検出部１２２３から構成される。処理時間測定部１２２１は、異常検出対象部１２１の処理について処理時間の測定をおこなう機能ブロックである。測定データ蓄積部１２２２は、測定した処理時間を蓄積する機能ブロックである。異常検出部１２２３は、測定した処理時間について異常の有無を検出する機能ブロックであるである。
【００２９】
挙動データ処理部１２３は、異常検出対象部１２１の状態を解析するために必要なデータを取得する動作解析データ取得処理プログラムの有する機能であり、挙動データ取得部１２３１と、挙動データ蓄積部１２３２から構成される。挙動データ取得部１２３１は、異常検出対象部１２１の処理の挙動データを取得する機能ブロックである。挙動データ蓄積部１２３２は、取得した挙動データを蓄積する機能ブロックである。
【００３０】
次に、各処理部の動作について説明する。本実施形態の制御部の動作の概略は、異常検出対象部１２１から、異常検出処理部１２２および挙動データ処理部１２３に対して処理要求を出し、これら処理部を制御するものである。
【００３１】
異常検出対象部１２１から挙動データ処理部１２３へ出す要求は、挙動データ取得の開始および停止要求である。挙動データ取得要求により、挙動データ取得部１２３１が動作する。挙動データ取得部１２３１は、挙動データ取得の開始要求を受けると、異常検出対象部１２１の処理を監視し、その挙動データの取得を開始する。また、挙動データ取得の停止要求を受けた場合は、挙動データの取得を停止する。取得した挙動データは、挙動データ蓄積部１２３２に蓄積し、異常発生時の原因解析データとして使用する。
【００３２】
一方、異常検出対象部１２１から異常検出処理部１２２へ出す要求は、異常検出と処理時間測定の開始および停止要求である。異常検出開始要求により、異常検出処理部１２２が異常検出の動作を開始する。また、処理時間測定開始要求により、処理時間測定部１２２１が動作する。処理時間測定部１２２１は、処理時間測定の開始要求を受けると、異常検出対象部１２１の処理について、処理時間の測定を開始する。また、処理時間測定の停止要求を受けた場合は、処理時間の測定を停止する。ここで、処理時間の測定方法は如何なるものでもよい。例えば、異常検出対象部１２１で動作するプログラムにて、タイマ機能を使用する方法が挙げられる。すなわち、異常検出対象部１２１の有するクロックを使用することにより、任意の処理の処理時間を測定することが可能である。処理時間測定部１２２１で測定した処理時間は、測定データ蓄積部１２２２に蓄積される。異常検出部１２２３は、処理時間測定部１２２１で測定した処理時間を、測定データ蓄積部１２２２に蓄積されている蓄積情報と比較し、処理時間の長さに異常がないか判定をおこなう。すなわち、正常な場合の処理時間と比較し、一定の値よりも長すぎたり、短すぎたりする場合には、異常と判定する。そして、異常がある場合は、異常検出処理部１２２から挙動データ処理部１２３へ挙動データ取得停止要求を出す。挙動データ処理部１２３は、挙動データ取得停止要求を受けると、挙動データ取得部１２３１を制御することにより、挙動データの取得を停止する。
【００３３】
次に、図３ないし図５を用いて異常検出のために、制御プログラムの処理時間の測定とその結果の蓄積について説明する。
図３は、異常検出対象部１２１の処理時間の測定に関する処理を示すフローチャートである。
図４は、制御プログラムの処理に関して、繰り返し回数とその処理時間の関係を示すグラフである。
図５は、図４のグラフに、測定点ａ，ｂをプロットしたグラフである。
【００３４】
先に述べたように、本実施形態では、異常検出機能付き電子機器１自身の制御プログラムの処理時間を測定し、処理に要する時間から異常を検出する。
ここでは、異常検出対象部１２１の実行環境により、処理Ａの繰り返し回数（Ｍ）が変わる処理を例に挙げている。また、処理Ａの繰り返し処理を処理時間測定区間として設定し、測定される処理時間（Ｔｉｍｅ）を記している。ここで、図３に示す異常検出対象部１２１の処理の流れについて説明する。初めに、処理Ａの繰り返し回数をカウントする変数ｎを初期化する（Ｓ１０）。繰り返し処理の開始前に、処理時間測定開始要求を実行する（Ｓ１１）。処理Ａを実行後（Ｓ１２）、変数ｎをインクリメントする（Ｓ１３）。変数ｎのインクリメント後、繰り返し回数の判定をおこなう（Ｓ１４）。処理ＡをＭ回繰り返し実行した後、処理時間測定停止要求を実行する（Ｓ１５）。このように、処理時間を測定する区間の開始位置で処理時間測定開始要求（Ｓ１１）を、停止位置で処理時間測定停止要求（Ｓ１５）を実行することにより、特定の処理区間における処理時間（Ｔｉｍｅ）を測定する。
【００３５】
次に、この測定結果の蓄積について説明する。
【００３６】
測定データ蓄積部１２２２は、異常検出部１２２３が異常を検出するための参照情報として使用する処理時間のデータを蓄積する。参照情報となる処理時間のデータは、事前に異常検出対象部１２１を何度か実行し、処理時間を測定することで蓄積しておく。蓄積するデータの形式は、如何なる形式であってもよく、テキストデータやバイナリデータなどの形式が挙げられる。ここで、図３の処理を例に、参照情報の蓄積方法を説明する。この場合、処理時間測定区間における処理時間（Ｔｉｍｅ）を参照情報として測定することになる。処理時間測定区間を変えずに、異常検出対象部１２１の実行環境を変えながら、すなわち、Ｍの値を変えながら、異常検出対象部１２１を何度か実行し、その時のＭの値と、処理時間のデータを、測定データ蓄積部１２２２に蓄積する。図４は、これらの蓄積データから近似曲線を描いたものである。このように、蓄積データを線形で表現することにより、任意のＭの値に応じた処理時間（Ｔｉｍｅ）を求めることができるようになるため、あらゆる実行環境に対応可能な参照情報として扱えるようになる。この近似曲線を参照情報として使用した場合、処理時間に異常がある場合のデータは、図５の測定点ａや測定点ｂのように近似曲線から、閾値εよりも逸脱したデータとして現れるため、容易に異常を判定することが可能になる。
【００３７】
なお、実際の異常判定では、近似曲線を計算式の形で表現し、この計算式を測定データ蓄積部１２２２で保持しておく。計算式の一例としては近似式が挙げられる。処理時間測定部１２２１で測定した処理時間が近似式から外れている場合に異常と判定する。また、どの程度近似式から外れている場合を異常とするかを決める閾値情報についても、測定データ蓄積部１２２２の中に保持しておく。なお、異常判定に使用する近似式は、処理時間測定部１２２１が測定データ蓄積部１２２２に蓄積したデータを基に自動的に生成するか、ユーザが手動で生成するものとする。また、異常判定に使用する近似式は、電子機器の外部で生成したものでもよい。何れの方法で生成した場合でも、近似式は測定データ蓄積部１２２２に保持しておき、異常検出部１２２３で異常判定する場合に使用する。
【００３８】
次に、図６を用いて本発明の第一の実施形態に係る異常検出機能付き電子機器１における解析データ取得処理の正常時の処理について説明する。
図６は、本発明の第一の実施形態に係る異常検出機能付き電子機器１における解析データ取得処理の正常時の処理を示すタイミングチャートである。
【００３９】
ここでいう「正常時」とは、異常検出処理部１２２の異常検出処理において、異常が検出されない場合を意味する。逆に、異常検出処理部１２２の異常検出処理において、異常が検出された場合を「異常時」と呼ぶことにする。
【００４０】
図６では、解析データ取得処理の流れについて、縦方向に時間軸をとり、異常検出対象部１２１、異常検出処理部１２２、挙動データ処理部１２３の処理を示している。なお、異常検出対象部１２１においては、異常を検出するための処理時間を測定する処理時間測定区間を予め設定しておき、その区間の開始および終了位置において、処理時間測定開始および停止要求を出す処理を組み込んでおく。また、異常検出対象部１２１の処理の始まりと終わりには、挙動データ取得および異常検出の開始と停止要求を出す処理を組み込んでおくものとする。
【００４１】
初めに、異常検出対象部１２１が、自身の処理を開始する（Ｓ１００）。異常検出対象部１２１の処理の開始直後、異常検出対象部１２１から挙動データ処理部１２３へ挙動データ取得開始要求を出すことにより（Ｓ１０１）、挙動データ処理部１２３は挙動データ取得を開始する（Ｓ１０２）。これに続いて、異常検出対象部１２１から異常検出処理部１２２へ異常検出開始要求を出すことにより（Ｓ１０３）、異常検出処理部１２２は、異常検出を開始する（Ｓ１０４）。
【００４２】
異常検出対象部１２１の処理が、異常検出の対象となる処理時間測定区間の開始位置に到達すると、異常検出対象部１２１は、異常検出処理部１２２へ処理時間測定開始要求を出す（Ｓ１０５）。異常検出処理部１２２は、この要求を受けることにより、処理時間の測定を開始する（Ｓ１０６）。そして、異常検出対象部１２１の処理が、異常検出の対象となる処理時間測定区間の終了位置に到達すると、異常検出対象部１２１は、異常検出処理部１２２へ処理時間測定停止要求を出す（Ｓ１０７）。異常検出処理部１２２は、この要求を受けることにより、処理時間の測定を停止する（Ｓ１０８）。
【００４３】
その後、異常検出処理部１２２は、測定した処理時間を、測定データ蓄積部１２２２に蓄積している参照情報と比較し、データが基準時のものと比べて逸脱したものであるか否かを判定することにより、異常検出を行う（Ｓ１０９）。ここでは、正常時のときの処理について述べているので、異常は検出されなかったものとする。
【００４４】
異常検出対象部１２１は、自身の処理が終了する前に異常検出処理部１２２へ異常検出停止要求を出すことにより（Ｓ１１０）、異常検出処理部１２２は異常検出を停止する（Ｓ１１１）。
【００４５】
続いて、異常検出対象部１２１から挙動データ処理部１２３へ挙動データ取得停止要求を出すことにより（Ｓ１１２）、挙動データ処理部１２３は挙動データ取得を停止する（Ｓ１１３）。最後に、異常検出対象部１２１自身の処理が終了する（Ｓ１１４）。
【００４６】
次に、図７および図８を用いて本実施形態における挙動データの取得処理について説明する。
図７は、図６で示した挙動データ処理部１２３における挙動データの取得処理の詳細を示すフローチャートである。
図８は、リングバッファの概念を説明するための図である。
【００４７】
取得した挙動データは、挙動データ蓄積部１２３２に示すメモリなどの記憶媒体に蓄積される。しかし、搭載メモリの少ない電子機器の場合、長時間の挙動データの蓄積は困難である。そこで、本実施形態では、挙動データの蓄積をリングバッファにより実現することにより、搭載メモリが少ない場合における挙動データ取得蓄積の容量不足の問題を解消する。
【００４８】
リングバッファ(ring buffer)、は、図８（ａ）に示されるように、概念上は、リング状に配置されたバッファであり、書き込みが一巡すると前に書いたデータの上に新しいデータが上書きされる。ただし、実際上の物理領域は、線形に構成されているので、図８（ｂ）に示されるように、書き込みポインタを、領域の終端まで来たときに、始端に戻すことにより、擬似的にリングバッファの機能を持たせている。
【００４９】
上述のように、挙動データの蓄積先をリングバッファとした場合には、古い挙動データは上書きされ、直近の挙動データだけが残る。しかしながら、異常検出時の制御プログラムの解析に必要な挙動データは、異常を検出した直前の挙動データである可能性が高い。そこで、本実施形態の制御プログラムの動作においては、異常を検出した時点で挙動データの取得を停止することにする。このようにすることにより、挙動データの蓄積をリングバッファで実現する場合においても、異常検出時の制御プログラム解析に必要な挙動データを残すことが可能になる。
【００５０】
ここで、図７により本実施形態におけるリングバッファを用いた挙動データの取得処理の流れを説明する。
【００５１】
先ず、挙動データ処理部１２３は、挙動データ取得を開始する（Ｓ１０２）。
【００５２】
次に、挙動データ処理部１２３は、取得した挙動データを、格納先の記憶媒体の格納アドレスに格納する（Ｓ１１５）。
【００５３】
次に、格納アドレスをインクリメントする（Ｓ１１６）。
【００５４】
そして、格納アドレスがバッファ容量を超過したか否かを判定し（Ｓ１１７）、超過した場合には、データ格納アドレスをバッファ先頭に戻すことにより、リングバッファの機能を実現する（Ｓ１１８）。
【００５５】
一方、格納アドレスがバッファ容量を超えなければ、挙動データの取得停止要求の有無を判定し（Ｓ１１９）、停止要求がなければ挙動データ取得を続ける。最終的には、挙動データの取得停止要求により、挙動データの取得を停止する（Ｓ１１３）。
【００５６】
次に、図９を用いて本発明の第一の実施形態に係る異常検出機能付き電子機器１における解析データ取得処理に関し、異常時の処理について説明する。
図９は、本発明の第一の実施形態に係る異常検出機能付き電子機器１における解析データ取得処理の異常時の処理を示すタイミングチャートである。
【００５７】
初めに、異常検出対象部１２１が、自身の処理を開始する（Ｓ１００）。異常検出対象部１２１の処理の開始直後、異常検出対象部１２１から挙動データ処理部１２３へ挙動データ取得開始要求を出すことにより（Ｓ１０１）、挙動データ処理部１２３は挙動データ取得を開始する（Ｓ１０２）。これに続いて、異常検出対象部１２１から異常検出処理部１２２へ異常検出開始要求を出すことにより（Ｓ１０３）、異常検出処理部１２２は、異常検出を開始する（Ｓ１０４）。
【００５８】
異常検出対象部１２１の処理が、異常検出の対象となる処理時間測定区間の開始位置に到達すると、異常検出対象部１２１は、異常検出処理部１２２へ処理時間測定開始要求を出す（Ｓ１０５）。異常検出処理部１２２は、この要求を受けることにより、処理時間の測定を開始する（Ｓ１０６）。そして、異常検出対象部１２１の処理が、異常検出の対象となる処理時間測定区間の終了位置に到達すると、異常検出対象部１２１は異常検出処理部１２２へ処理時間測定停止要求を出す（Ｓ１０７）。異常検出処理部１２２は、この要求を受けることで、処理時間の測定を停止する（Ｓ１０８）。その後、異常検出処理部１２２は、測定した処理時間を、測定データ蓄積部１２２２に蓄積している参照情報と比較し、データが基準時のものと比べて逸脱したものであるか否かを判定することにより、異常検出をおこなう（Ｓ１０９）。ここでは、異常時について述べているので、ここで、異常を検出したとする。異常検出処理部１２２は、挙動データ処理部１２３に挙動データ取得停止要求を出すことにより（Ｓ１２０）、挙動データ処理部１２３は挙動データ取得を停止する（Ｓ１１３）。この後、異常検出処理部１２２は、異常検出処理を停止する（Ｓ１１１）。また、異常検出対象部１２１は、自身の処理が終了に到達した時点で停止する（Ｓ１１４）。
【００５９】
次に、図１０を用いて、本発明の第一の実施形態に係る異常時のリングバッファの挙動データの蓄積状態を説明する。
図１０は、本発明の第一の実施形態に係る異常時のリングバッファの挙動データの蓄積状態を説明する図である。
【００６０】
図７で示したように、挙動データ処理部１２３で取得した挙動データは、リングバッファに蓄積される。
【００６１】
解析データ取得処理で挙動データの取得をおこなった場合には、挙動データを蓄積するリングバッファは、図１０に示されるようになる。ここで、左端をリングバッファの先頭アドレス、右端をリングバッファの終了アドレスとして、リングバッファ内のデータを簡易的に示している。異常検出処理部１２２が異常を検出し、挙動データ処理部１２３が挙動データ取得を停止した時点のリングバッファの状態であり、異常検出の対象となった処理時間を測定した処理時間測定区間の挙動データが蓄積されている。また、データの蓄積はリングバッファで実現しているため、挙動データＡや挙動データＢで示すような、過去に取得した挙動データＡ，Ｂも含まれている。
【００６２】
ここで、異常時の場合には、蓄積される挙動データは、挙動データの取得を開始した時点からのものではなく、“Ｐｅｒｉｏｄ”で示すように、挙動データの取得を停止する直前の一定区間の挙動データだけとなる。しかしながら、先に述べたように、異常検出時の制御プログラムの解析に必要な挙動データは、異常を検出した直前の挙動データである可能性が高い。よって、異常を検出した時点で挙動データの取得を停止することで、挙動データの蓄積をリングバッファで実現する場合においても、異常検出時の制御プログラム解析に必要な挙動データを残すことが可能であるため、問題は生じることはなく、特に、異常の解析をおこなうために有益な挙動データのみがリングバッファに蓄積される。
【００６３】
本実施形態では、異常検出対象部１２１の処理に対し、処理時間の測定をおこなう区間を、１区間だけ設定する例を示したが、複数の区間を設定するようにしてもよい。その場合は、各区間の開始および終了位置において、異常検出対象部１２１から異常検出処理部１２２へ処理時間測定の開始および停止要求を出すことにより実現可能である。また、各処理時間測定の停止後、取得した処理時間のデータを、測定データ蓄積部１２２２に蓄積している参照情報と比較することで、処理区間ごとの異常検出が可能となる。その場合には、事前に各処理区間についての近似式などの比較のためのデータを準備しておく必要がある。また、異常検出対象部１２１、異常検出処理部１２２、挙動データ処理部１２３が同一の記憶部１２にある場合について示したが、異なる記憶部の上にあってもよい。さらに、各処理部は、独立している必要も無く、何れかの処理部の中に含まれるような構成にしてもよい。なお、本実施形態では、異常検出対象部１２１から、異常検出処理部１２２および挙動データ処理部１２３へ制御要求を出す方法について示したが、異常検出対象部１２１以外の処理部から、異常検出処理部１２２および挙動データ処理部１２３へ制御要求を出す構成にしてもよい。
【００６４】
このように本実施形態によれば、電子機器の制御プログラムを対象に、処理に要する時間を測定し、処理時間の長さに異常を検出した場合、挙動データの取得を自動で停止させることが可能になる。電子機器自身の制御プログラムの動作の異常を検知し、異常原因を特定するためのデータを適切に取得する異常検出機能付き電子機器を提供できる。
【００６５】
一般的に、異常検出時の制御プログラムの解析に必要な挙動データは、異常を検出した直前の挙動データである可能性が高い。よって、本実施形態を適用した場合、挙動データの蓄積をリングバッファで実現した場合においても異常原因を特定するためのデータを適切に取得できる。また、解析の対象とすべき挙動データは最後に取得した挙動データとなるため、問題の個所の挙動データ抽出が容易になる。
【００６６】
さらに、挙動データの蓄積にリングバッファを用いることで搭載メモリの少ない電子機器にも適用可能となる。
【００６７】
なお、挙動データは、図１で示した出力部１５から出力したり、表示部１６に表示することにより、デバッグ時に出力して利用することができる。
【００６８】
また、本実施形態の異常検出機能付き電子機器１のように、電子機器に異常検出処理部１２２や挙動データ処理部１２３を組み込む構成にすることにより、電子機器単体での異常検出および異常時の挙動データ取得が可能になる。これにより、製品開発におけるテスト工程などで、各々のテストとなる電子機器にデバッグ機能を有する外部機器を接続することなくテストをおこなうことができるため開発効率が向上することが期待される。
【００６９】
〔実施形態２〕
以下、本発明に係る第二の実施形態を、図１１ないし図１３を用いて説明する。
【００７０】
第一の実施形態では、異常検出処理部１２２が異常を検出した場合に、挙動データ処理部１２３に対して挙動データ取得停止要求を出して、挙動データの取得を停止し、異常時における解析のためのデータを、リングバッファに残す例を説明した。ここで、異常検出時に挙動データの取得を停止しているため、解析の対象とすべき挙動データは最後に取得した挙動データとなる。
【００７１】
しかしながら、図１０に示すように、過去に取得した挙動データＡや挙動データＢも含まれているため、その挙動データを格納した開始アドレスはわからないという問題点がある。すなわち、挙動データＡと処理時間測定区間の挙動データとの境界がわからない。これは、挙動データをどこまで遡って解析すればよいかわからないことを意味しており、挙動データの解析に手間がかかる。
【００７２】
本実施形態は、このような問題が生じないような挙動データの蓄積をおこなうようにしたものである。
【００７３】
先ず、図１１を用いて本発明の第二の実施形態に係る異常検出機能付き電子機器１における解析データ取得処理に関し、正常時の処理について説明する。
図１１は、本発明の第二の実施形態に係る異常検出機能付き電子機器１における解析データ取得処理の異常時の処理を示すタイミングチャートである。
【００７４】
異常検出対象部１２１においては、異常を検出するための処理時間を測定する処理時間測定区間を予め設定しておき、区間の開始位置では挙動データ取得および処理時間測定の開始要求を、終了位置では処理時間測定および挙動データ取得の停止要求を出す処理を組み込んでおく。また、異常検出対象部１２１の処理の始まりと終わりには、異常検出の開始および停止要求を出す処理を組み込んでおくものとする。
【００７５】
初めに、異常検出対象部１２１が、自身の処理を開始する（Ｓ１００）。
異常検出対象部１２１の処理の開始直後、異常検出対象部１２１から異常検出処理部１２２へ異常検出開始要求を出すことにより（Ｓ１０３）、異常検出処理部１２２は、異常検出を開始する（Ｓ１０４）。
【００７６】
異常検出対象部１２１の処理が、異常検出の対象となる処理時間測定区間の開始位置に到達する直前で、異常検出対象部１２１は、挙動データ処理部１２３へ挙動データ取得開始要求を出す（Ｓ１０１）。挙動データ処理部１２３は、この要求を受けることにより、挙動データ取得を開始する（Ｓ１０２）。続いて、異常検出対象部１２１は、異常検出処理部１２２へ処理時間測定開始要求を出す（Ｓ１０５）。異常検出処理部１２２は、この要求を受けることにより、処理時間の測定を開始する（Ｓ１０６）。そして、異常検出対象部１２１の処理が、異常検出の対象となる処理時間測定区間の終了位置に到達すると、異常検出対象部１２１は、異常検出処理部１２２へ処理時間測定停止要求を出す（Ｓ１０７）。異常検出処理部１２２は、この要求を受けることで、処理時間の測定を停止する（Ｓ１０８）。その後、異常検出処理部１２２は、測定した処理時間を、測定データ蓄積部１２２２に蓄積している参照情報と比較し、データが正常時のものと比べて逸脱したものであるか否かを判定することにより、異常検出をおこなう（Ｓ１０９）。ここでは、正常時のときの処理について述べているので、異常は検出されなかったものとする。
【００７７】
異常検出処理部１２２は、挙動データ処理部１２３に挙動データ取得停止要求を出すことで（Ｓ１２０）、挙動データ処理部１２３は挙動データ取得を停止する（Ｓ１１３）。挙動データ処理部１２３は、挙動データ取得を停止した後、異常検出されなかった区間（Ｐｅｒｉｏｄ）に取得した挙動データを削除する（Ｓ１２１）。
【００７８】
異常検出対象部１２１は、自身の処理が終了する前に異常検出処理部１２２へ異常検出停止要求を出すことにより（Ｓ１１０）、異常検出処理部１２２は、異常検出を停止する（Ｓ１１１）。最後に、異常検出対象部１２１自身の処理が終了する（Ｓ１１４）。
【００７９】
次に、図１２を用いて本発明の第二の実施形態に係る異常検出機能付き電子機器１における解析データ取得処理に関し、異常時の処理について説明する。
図１２は、本発明の第二の実施形態に係る異常時のリングバッファの挙動データの蓄積状態を説明する図である。
【００８０】
初めに、異常検出対象部１２１が、自身の処理を開始する（Ｓ１００）。
【００８１】
異常検出対象部１２１の処理の開始直後、異常検出対象部１２１から異常検出処理部１２２へ異常検出開始要求を出すことにより（Ｓ１０３）、異常検出処理部１２２は、異常検出を開始する（Ｓ１０４）。
【００８２】
異常検出対象部１２１の処理が、異常検出の対象となる処理時間測定区間の開始位置に到達する直前で、異常検出対象部１２１は、挙動データ処理部１２３へ挙動データ取得開始要求を出す（Ｓ１０１）。挙動データ処理部１２３は、この要求を受けることにより、挙動データ取得を開始する（Ｓ１０２）。続いて、異常検出対象部１２１は異常検出処理部１２２へ処理時間測定開始要求を出す（Ｓ１０５）。異常検出処理部１２２は、この要求を受けることで、処理時間の測定を開始する（Ｓ１０６）。そして、異常検出対象部１２１の処理が、異常検出の対象となる処理時間測定区間の終了位置に到達すると、異常検出対象部１２１は、異常検出処理部１２２へ処理時間測定停止要求を出す（Ｓ１０７）。異常検出処理部１２２は、この要求を受けることにより、処理時間の測定を停止する（Ｓ１０８）。その後、異常検出処理部１２２は、測定した処理時間を、測定データ蓄積部１２２２に蓄積している参照情報と比較し、データが正常時のものと比べて逸脱したものであるか否かを判定することにより、異常検出をおこなう（Ｓ１０９）。ここでは異常系について述べるので、異常を検出されたものとする。
【００８３】
異常検出処理部１２２は、挙動データ処理部１２３に挙動データ取得停止要求を出すことで（Ｓ１２０）、挙動データ処理部１２３は挙動データ取得を停止する（Ｓ１１３）。この後、異常検出処理部１２２は、異常検出処理を停止する（Ｓ１１１）。また、異常検出対象部１２１は、処理の終了に到達した時点で停止する（Ｓ１１４）。
【００８４】
次に、図１３を用いて、本発明の第二の実施形態に係る異常時のリングバッファの挙動データの蓄積状態を説明する。
図１３は、本発明の第二の実施形態に係る異常時のリングバッファの挙動データの蓄積状態を説明する図である。
【００８５】
先に図１０を用いて正常時の説明をしたが、異常が検出されなかった区間の挙動データについては、Ｓ１２１で削除している。よって、異常系において、異常が検出された場合、挙動データ蓄積部１２３２には、図１２の“Ｐｅｒｉｏｄ”で示す区間の挙動データのみが蓄積されることになる。すなわち、挙動データ蓄積用リングバッファの中は、図１３に示すような状態になっており、異常が検出された処理時間測定区間の挙動データのみだけが残っており、異常が検出された処理時間測定区間における挙動データが容易に抽出できる。
【００８６】
本実施形態では、異常検出対象部１２１の処理に対し、処理時間の測定をおこなう区間を１区間だけ設定する例を示したが、複数の区間を設定するようにしてもよい。その場合は、各区間の開始および終了位置において、異常検出対象部１２１から異常検出処理部１２２へ処理時間測定の開始および停止要求を出すことにより実現可能である。また、各処理時間測定の開始および停止要求の前後で、異常検出対象部１２１から挙動データ処理部１２３に挙動データ取得の開始および終了要求を出すことにより、処理時間測定区間ごとの挙動データ取得が可能になる。また、異常検出対象部１２１は、複数の処理時間測定区間を含むような位置で、挙動データ処理部１２３に対する挙動データ取得の開始および終了要求を出してもよい。また、異常検出対象部１２１から挙動データ処理部１２３への挙動データ取得開始要求と、異常検出対象部１２１から異常検出処理部１２２への処理時間測定開始要求は連携させてもよい。例えば、異常検出対象部１２１が挙動データ取得要求を出すことで、自動的に処理時間測定を開始するようにすることで、挙動データ取得要求と処理時間測定要求の両方の要求を出す必要が無くなるため、処理が簡易化できる。
【００８７】
このように本実施形態によれば、異常を検出した場合の挙動データのみを蓄積することが可能になる。これにより、異常が検出された処理時間測定区間における挙動データが容易に抽出できる。
【００８８】
〔異常検出機能付き電子機器の適用例〕
本発明を適用する異常検出機能付き電子機器１の具体例を示すならば、空調機を制御するための制御コントローラが挙げられる。この場合、空調機は、通信部１３を介して、制御コントローラに接続され、制御コントローラにより制御される。よって、制御コントローラ自身の制御プログラムに異常が生じた場合には、空調機を正しく制御することができない。そこで、制御コントローラ自身の制御プログラムに異常検出機能を搭載し、制御コントローラに異常がある場合に検知できるようにする。異常検出および異常時の挙動データ取得は、制御コントローラの制御プログラムを開発する中でも有効である。例えば、制御プログラムの変更にミスがある場合に異常検出をおこなうことが可能である。さらに、異常検出だけでなく、その時の挙動データを取得できるため、処理プログラムの修正個所を判断するための情報を得ることが可能であり、制御プログラムの開発者を支援することができる。
【符号の説明】
【００８９】
１…異常検出機能付き電子機器
１１…制御部
１２…記憶部
１３…通信部
１４…入力部
１５…出力部
１６…表示部
【図１】
0005788358.tif 000002
【図２】
0005788358.tif 000003
【図３】
0005788358.tif 000004
【図４】
0005788358.tif 000005
【図５】
0005788358.tif 000006
【図６】
0005788358.tif 000007
【図７】
0005788358.tif 000008
【図８】
0005788358.tif 000009
【図９】
0005788358.tif 000010
【図１０】
0005788358.tif 000011
【図１１】
0005788358.tif 000012
【図１２】
0005788358.tif 000013
【図１３】
0005788358.tif 000014