(57)【要約】【課題】エラーが発生する前の異常状態を検知し、エラーの発生を回避することができる。【解決手段】複数の関数から構成された所定の制御処理を所定の動作条件にて実行し、外部機器５を制御する機器制御装置１００は、所定の制御処理を実行した際に動作した関数の実行順序を履歴情報として記録する動作追跡部１１と、記所定の制御処理を実行し、正常処理となった場合の前記履歴情報を予め記憶している判定用パターンデータ２２と、判定用パターンデータ２２と動作追跡部１１により記録された履歴情報を比較し、一致しなかった場合に、所定の制御処理を異常処理と判定する異常判定部１２と、異常判定部１２により異常処理と判定された場合には、所定の制御処理を実行する際の動作条件を、異常処理と判定された場合の動作条件より、外部機器５に対して負荷のかからない動作条件に変更する動作条件変更部１３と、を備える。【選択図】図１
2013149120.tif 000002
【特許請求の範囲】
【請求項１】
複数のルーチンから構成された所定の制御処理を、所定の動作条件にて実行し、外部機器を制御する機器制御装置であって、  
前記所定の制御処理を実行した際に動作したルーチンの実行順序を履歴情報として記録する動作追跡手段と、
前記所定の制御処理を実行し、正常処理となった場合の前記履歴情報を予め記憶している判定用情報記憶手段と、
前記判定用情報記憶手段に記憶された正常処理の場合の前記履歴情報と、前記動作追跡手段により記録された前記履歴情報を比較し、一致しなかった場合に、前記所定の制御処理を異常処理と判定する異常判定手段と、
前記異常判定手段により前記所定の制御処理を異常処理と判定された場合には、前記所定の制御処理を実行する際の動作条件を、前記異常処理と判定された場合の動作条件より、前記外部機器に対して負荷のかからない動作条件に変更する動作条件変更手段と、
を備えることを特徴とする機器制御装置。
【請求項２】
前記判定用情報記憶手段は、さらに、
前記所定の制御処理を実行し、異常処理となった場合の前記履歴情報を予め記憶し、
前記異常判定手段は、
前記判定用情報記憶手段に記憶された正常処理の場合の前記履歴情報と、前記動作追跡手段により記録された前記履歴情報を比較し、両者が一致しない場合であって、かつ、前記判定用情報記憶手段に記憶された異常処理の場合の前記履歴情報と、前記動作追跡手段により記録された前記履歴情報を比較し、両者が一致した場合には、前記所定の制御処理を異常処理と判定することを特徴とすることを特徴とする請求項１記載の機器制御装置。
【請求項３】
前記判定用情報記憶手段は、
異常処理となった場合の前記履歴情報を異常の種類に応じて複数備え、
前記動作条件変更手段は、
前記異常判定手段により異常処理と判定された場合には、判定された異常の種類に応じて、動作条件を変更することを特徴とする請求項２記載の機器制御装置。
【請求項４】
前記履歴情報は、スタック構造のデータであることを特徴とする請求項１乃至３のいずれか１項に記載の機器制御装置。
【請求項５】
複数のルーチンから構成された所定の制御処理を、所定の動作条件にて実行し、外部機器を制御する機器制御方法であって、  
前記所定の制御処理を実行した際に動作したルーチンの実行順序を履歴情報として記録する動作追跡ステップと、
前記所定の制御処理を実行し、正常処理となった場合の前記履歴情報と、前記動作追跡ステップにより記録された前記履歴情報を比較し、一致しなかった場合に、前記所定の制御処理を異常処理と判定する異常判定ステップと、
前記異常判定ステップにより前記所定の制御処理を異常処理と判定された場合には、前記所定の制御処理を実行する際の動作条件を、前記異常処理と判定された場合の動作条件より、前記外部機器に対して負荷のかからない動作条件に変更する動作条件変更ステップと、
を備えることを特徴とする機器制御方法。
【請求項６】
複数のルーチンから構成された所定の制御処理を、所定の動作条件にて実行し、外部機器を制御する機器制御装置のための機器制御プログラムであって、  
前記所定の制御処理を実行した際に動作したルーチンの実行順序を履歴情報として記録する動作追跡ステップと、
前記所定の制御処理を実行し、正常処理となった場合の前記履歴情報と、前記動作追跡ステップにより記録された前記履歴情報を比較し、一致しなかった場合に、前記所定の制御処理を異常処理と判定する異常判定ステップと、
前記異常判定ステップにより前記所定の制御処理を異常処理と判定された場合には、前記所定の制御処理を実行する際の動作条件を、前記異常処理と判定された場合の動作条件より、前記外部機器に対して負荷のかからない動作条件に変更する動作条件変更ステップと、
を前記機器制御装置に実行させることを特徴とする機器制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア機器の動作を制御する技術に関し、詳しくは、ハードウェア機器に対する制御エラーを未然に防止する機器制御装置、機器制御方法、及び機器制御プログラムに関する。
【背景技術】
【０００２】
一般に、コンピュータシステムにおいては、障害が発生した場合、システム全体を停止し、エラー情報を収集し、収集したエラー情報をシステム開発者に通知することにより、速やかに障害復旧を行うようにしている。
【０００３】
例えば、特許文献１では、障害発生に係るエラー情報を、電子メール等により容易に収集することにより、障害状況を迅速かつ確実に開発元に認知させ、速やかにシステム改修作業に対応できる障害解析システムが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−２８８３７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ハードウェア機器の能力を検証するハードウェア検証システムにおいては、ハードウェア機器に高負荷をかけてハードウェア機器の能力を検証していくため、エラーが発生するたびにシステム全体が停止してしまうと、そのたびに検証作業が滞ってしまうという問題がある。すなわち、ハードウェア検証システムにおいては、エラーが発生しない範囲でハードウェア機器に負荷をかけ、検証作業が継続できることが肝要である。
【０００６】
本発明は上記の事情を鑑みてなされたものであり、その課題の一例としては、エラーが発生する前の異常状態を検知し、エラーの発生を回避することができる機器制御装置、機器制御方法、及び機器制御プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記の課題を達成するため、請求項１に係る発明は、複数のルーチンから構成された所定の制御処理を、所定の動作条件にて実行し、外部機器を制御する機器制御装置であって、前記所定の制御処理を実行した際に動作したルーチンの実行順序を履歴情報として記録する動作追跡手段と、前記所定の制御処理を実行し、正常処理となった場合の前記履歴情報を予め記憶している判定用情報記憶手段と、前記判定用情報記憶手段に記憶された正常処理の場合の前記履歴情報と、前記動作追跡手段により記録された前記履歴情報を比較し、一致しなかった場合に、前記所定の制御処理を異常処理と判定する異常判定手段と、前記異常判定手段により前記所定の制御処理を異常処理と判定された場合には、前記所定の制御処理を実行する際の動作条件を、前記異常処理と判定された場合の動作条件より、前記外部機器に対して負荷のかからない動作条件に変更する動作条件変更手段と、を備えることを特徴とする。
【０００８】
また、請求項５に係る発明は、複数のルーチンから構成された所定の制御処理を、所定の動作条件にて実行し、外部機器を制御する機器制御方法であって、前記所定の制御処理を実行した際に動作したルーチンの実行順序を履歴情報として記録する動作追跡ステップと、前記所定の制御処理を実行し、正常処理となった場合の前記履歴情報と、前記動作追跡ステップにより記録された前記履歴情報を比較し、一致しなかった場合に、前記所定の制御処理を異常処理と判定する異常判定ステップと、前記異常判定ステップにより前記所定の制御処理を異常処理と判定された場合には、前記所定の制御処理を実行する際の動作条件を、前記異常処理と判定された場合の動作条件より、前記外部機器に対して負荷のかからない動作条件に変更する動作条件変更ステップと、を備えることを特徴とする。
【０００９】
また、請求項６に係る発明は、複数のルーチンから構成された所定の制御処理を、所定の動作条件にて実行し、外部機器を制御する機器制御装置のための機器制御プログラムであって、前記所定の制御処理を実行した際に動作したルーチンの実行順序を履歴情報として記録する動作追跡ステップと、前記所定の制御処理を実行し、正常処理となった場合の前記履歴情報と、前記動作追跡ステップにより記録された前記履歴情報を比較し、一致しなかった場合に、前記所定の制御処理を異常処理と判定する異常判定ステップと、前記異常判定ステップにより前記所定の制御処理を異常処理と判定された場合には、前記所定の制御処理を実行する際の動作条件を、前記異常処理と判定された場合の動作条件より、前記外部機器に対して負荷のかからない動作条件に変更する動作条件変更ステップと、を前記機器制御装置に実行させることを特徴とする。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態に係るハードウェア検証システムの概略構成図である。
【図２】本発明の実施の形態に係るハードウェア検証システムにおける機器制御処理の流れを示すフローチャートである。
【図３】本発明の一実施例の制御処理を実行するための関数の構成を示す模式図である。
【図４】図３に示す制御処理が正常動作の場合の関数の実行順序を示すフローチャートである。
【図５】図６とともに、図４に示す順序で関数が実行された場合のスタック情報の推移を示す模式図である。
【図６】図５とともに、図４に示す順序で関数が実行された場合のスタック情報の推移を示す模式図である。
【図７】図３に示す制御処理が異常動作の場合の関数の実行順序を示すフローチャートである。
【図８】図９及び図１０とともに、図７に示す順序で関数が実行された場合のスタック情報の推移を示す模式図である。
【図９】図８及び図１０とともに、図７に示す順序で関数が実行された場合のスタック情報の推移を示す模式図である。
【図１０】図８及び図９とともに、図７に示す順序で関数が実行された場合のスタック情報の推移を示す模式図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態を図面を用いて説明する。
【００１２】
＜システム構成＞
図１は、本発明の実施の形態に係るハードウェア検証システム１００の概略構成図である。ハードウェア検証システム１００は、外部機器５に負荷をかけることにより外部機器５のハードウェア機器としての能力を検証していく機器制御システムである。ハードウェア検証システム１００は、１または複数の外部機器５を制御する機器制御装置１０と、機器制御装置１０に対する指示を入力する入力部３と、機器制御装置１０の処理結果（制御結果）を出力する出力部４と、１または複数の外部機器５と、を備えている。
【００１３】
機器制御装置１０は、少なくとも、制御部１と、記憶部２と、を具備する構成の装置である。具体的には、制御部１は、演算機能および制御機能を備えた中央演算装置（ＣＰＵ）、記憶部２は、ＲＯＭ、ＲＡＭ等からなる主記憶装置（メモリ）から構成される。
【００１４】
記憶部２は、機器制御装置１０が実行する各種処理に必要なデータやプログラムが記憶されており、本実施の形態においては、機器制御プログラム２１、及び判定用パターンデータ２２が記憶されている。
【００１５】
機器制御プログラム２１は、後述する機器制御処理を実行するプログラムである。この機器制御プログラム２１を実行することにより、制御部１は、外部機器５を制御する。なお、本実施の形態における機器制御処理とは、外部機器５に負荷をかけつつ外部機器５のハードウェア機器としての能力を検証していく所定の制御処理をいう。
【００１６】
また、機器制御プログラム２１は、前述した主記憶装置に格納されるほか、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ−ＲＯＭなどのコンピュータ読み取り可能な記録媒体に記録することも、また、通信ネットワークを介して配信することも可能である。
【００１７】
判定用パターンデータ２２とは、上述した機器制御処理を実行しているときに、外部機器５が異常動作をしているか否かを判定するためのデータであり、具体的には、実行された複数の関数の実行順序を記録した履歴情報（以下、関数履歴情報という）である。本実施の形態では、所定の制御処理ごとに、正常動作における一の関数履歴情報（以下、正常動作の関数履歴情報という）を判定用パターンデータ２２として予め記憶しており、機器制御処理を実行した際の関数履歴情報と正常動作の関数履歴情報が一致しなかった場合を異常動作と判定するようにしている。
【００１８】
なお、これに加えて、異常動作における複数の関数の実行順序を記録した一又は複数の関数履歴情報（以下、異常動作の関数履歴情報という）を予め記憶してもよく、機器制御処理を実行中の履歴情報と異常動作の関数履歴情報が一致した場合を異常動作と判定するようにしてもよい。
【００１９】
ここで、本実施の形態のハードウェア検証システム１００における、エラー及び異常動作について説明する。本実施の形態において、エラーとは、外部機器５に対する制御エラー及び外部機器５自体のハードエラーをいい、機器制御装置１０の外部機器５に対する制御処理、つまり機器制御処理が中断または停止してしまうことをいう。一方、異常動作とは、上記エラーとなる状態にまでは達していないが、ハードウェア検証システム１００を構成する装置（機器制御装置１０、外部機器５、各装置を接続する通信ネットワークなど）のいずれかに高い負荷がかかっている状態で、この状態が継続する、あるいはこの状態よりもさらに負荷をかけると、エラーに至る状態をいう。本実施の形態のハードウェア検証システム１００は、上記判定用パターンデータ２２を用いて、この異常動作を検知することにより、未然にエラーの発生を防止するようになっている。
【００２０】
制御部１は、機器制御装置１０全体を制御する装置であり、本実施の形態では、動作追跡部１１、異常判定部１２、及び動作条件変更部１３を備えている。なお、動作追跡部１１、異常判定部１２、及び動作条件判定部１３は、機器制御プログラム２１を実行することにより実現される制御部１の機能である。
【００２１】
動作追跡部１１は、所定の制御処理を実行しているときに動作している関数を追跡し、その関数の動作履歴を記録する。ここで、所定の制御処理を実行しているときには、一般に複数の関数が順次呼び出されて実行されるので、記録される関数の動作履歴とは、実行した複数の関数の動作履歴であり、上述した関数履歴情報である。関数履歴情報は、記憶部２に一時的に記憶される。
【００２２】
異常判定部１２は、動作追跡部１１により記録された関数の動作履歴を、記憶部２に記憶された判定用パターンデータ２２と比較し、上記所定の制御処理が異常動作であるか否かを判定する。詳しくは、動作追跡部１１により記録された関数履歴情報が、記憶部２に記憶された判定用パターンデータ２２（正常動作の関数履歴情報）と一致する場合は正常動作、一致しない場合は異常動作と判定する。
【００２３】
動作条件変更部１３は、異常判定部１２により異常動作と判定された場合に、上記所定の制御処理における動作条件を変更する。この動作条件の変更とは、外部機器５に対する負荷を軽減させるための条件変更となっている。この結果、上記所定の制御処理は、より負荷のかからない動作条件で再び実行されるので、上記所定の制御処理における異常動作は解消されることとなる。
【００２４】
＜システム動作＞
次に、図２を用いて、機器制御装置１０の機器制御処理について説明する。図２は、機器制御装置１０の制御部１により実行される機器制御処理の流れを示すフローチャートである。
【００２５】
まず、制御部１は、所定の制御処理（以下、制御処理Ａという）を実行するに際して、この制御処理の動作条件を設定する（ステップＳ１０）。
【００２６】
次に、制御部１は、設定された動作条件に従って、関数を実行する（ステップＳ２０）。
【００２７】
次に、制御部１は、実行された関数の動作を追跡し、関数の動作履歴を記憶部２に記録する（ステップＳ３０）。
【００２８】
次に、制御部１は、記録された関数の動作履歴を、記憶部２に記憶された判定用パターンデータと比較し、制御処理Ａが異常動作であるか否かの異常動作判定を行う（ステップＳ４０）。これは上述したように、記録された関数履歴情報と正常動作の関数履歴情報と一致すれば正常動作、一致しなければ異常動作と判定するものである。
【００２９】
異常動作判定において制御処理Ａが異常動作と判定した場合には（ステップＳ５０：ＹＥＳ）、制御部１は、制御処理Ａの動作条件を変更する（ステップＳ６０）。すなわち、現在設定されている動作条件よりも負荷のかからない動作条件に変更する。ステップＳ６０の処理を実行後はステップＳ１０に戻り、変更した動作条件の下、再度、上記ステップＳ１０以降の処理を繰り返す。
【００３０】
一方、異常動作判定において制御処理Ａが正常動作と判定した場合には（ステップＳ５０：ＮＯ）、ステップＳ３０に戻り、同一の動作条件の下、再度、上記ステップＳ３０以降の処理を繰り返す。
【００３１】
以上に述べた本実施の形態によれば、正常動作の関数履歴情報を判定用パターンデータ２２として予め記憶しておき、この判定用パターンデータ２２と実際に動作した関数履歴情報を比較することにより、異常動作判定を行い、異常動作と判定された場合には、より負荷のかからない動作条件に変更するので、エラーが発生する前の異常状態を検知でき、エラーを未然に防止することができる。その結果、機器制御処理を中断することなく外部機器５のハードウェア性能の上限を把握することができる。
【００３２】
なお、異常動作の関数履歴情報も判定用パターンデータ２２に予め記憶しておき、上記異常動作判定に用いてもよい。この場合には、実際に動作した関数履歴情報が異常動作の関数履歴情報と一致することにより、より確実に異常動作を判定することができる。また、異常動作の種類に応じて、複数の異常動作の関数履歴情報を備え、それぞれの異常動作に応じた動作条件の変更を行うようにしてもよい。この場合には、きめ細やかな動作条件変更を行うことができる。
【００３３】
また、一般に、コンピュータシステムにおいては、プロセス（スレッド）の実行状況やメモリ使用状況などのシステムコア情報を用いて異常動作を検出する仕組みがあるが、外部のハードウェア機器を対象とする場合には、異常動作がシステムコア情報に影響しない場合がある。すなわち、外部のハードウェア機器を制御する機器制御システムにおいて、このようなシステムコア情報を用いた場合、異常動作を検出できない場合がある。しかしながら、本実施の形態では、複数の関数の実行順序を記録した関数履歴情報に基づいて、異常動作を判定するので、外部のハードウェア機器を対象とした制御処理においても、確実に異常動作を検出することが可能である。
【００３４】
さらには、上記システムコア情報を用いて異常動作を検出する仕組みにおいては、ハードウェアの構成が変われば、異常動作を検知する条件が異なってくるため、システムを改修する必要が生じるが、本実施の形態では、関数履歴情報に基づいて異常動作を検知するので、外部機器５の構成が変わっても、関数の修正は必要ない。すなわち、本実施の形態の機器制御システムは、外部機器５の構成変更に柔軟に対応することができる。
【００３５】
なお、本実施の形態においては、機器制御処理を、外部機器５に負荷をかけつつ外部機器５のハードウェア機器としての能力を検証する制御処理としたが、機器制御処理はこれに限定されるものではなく、より広義には、外部機器５を制御する処理であればいずれの処理であってもよい。
【００３６】
また、本実施の形態では、履歴情報として、関数の履歴情報を用いたが、異常動作判定を行うための履歴情報は、関数の履歴情報に限定されない。すなわち、特定の処理を実行する機能を持った一連の命令群の実行順序を示す履歴情報であれば、いずれでもよく、関数のほか、プロシージャやルーチンの履歴情報でもよい。
【００３７】
＜実施例＞
以下、一例として、外部機器５をスピーカ、制御処理Ａをスピーカに対する音声出力処理とした場合の機器制御処理を、図３〜図１０を用いて、具体的に説明する。なお、本実施例では、関数履歴情報としてスタック情報を用いている。すなわち、判定用パターンデータ２２は、スタック情報である。スタック情報とは、最後に入力したデータが先に出力されるデータ構造のデータであり、本実施例では、関数を呼び出す際に、呼び出された関数（処理中の関数）に関する情報（以下、関数情報という）を一時的にスタック情報として退避する。なお、この関数情報を一時的にスタック情報として退避する機能は、上記実施の形態の動作追跡部１１の機能に相当する。
【００３８】
図３は、制御処理Ａ（スピーカに対する音声出力処理）を実行する関数の構成を示す模式図である。図３に示す関数は階層的に構成されている。具体的には、関数ｆ１（ｆｕｎｃ動作設定）を実行すると、関数ｆ１が関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を呼び出して実行し、関数ｆ２が関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）及び関数ｆ４（ｆｕｎｃ異常動作判定）を実行し、関数ｆ３が所定の条件の場合には関数ｆ５（ｆｕｎｃリカバリー処理）及びｆ６（ｆｕｎｃエラー処理）を呼び出して実行する構成となっている。
【００３９】
図４〜図６を用いて、制御処理Ａにおける正常動作時の関数の流れ及びスタック情報の推移について説明する。図４は、制御処理Ａが正常動作をした場合の関数の実行順序を示すフローチャートである。図５及び図６は、図４に示す順序で関数が実行された場合のスタック情報の推移を示す模式図である。
【００４０】
まず、ステップＳ１０１では、関数ｆ１（ｆｕｎｃ動作設定）を実行する。この関数ｆ１（ｆｕｎｃ動作設定）を実行すると、関数ｆ１の処理の流れ（図３参照）に示すように、まず、書き込みバッファサイズを４８０バイトに設定する。このステップＳ１０１の状態におけるスタック情報を図５（ａ）に示す。ステップＳ１０１では、呼び出された関数はないので、関数情報はスタックに記憶されていない。
【００４１】
次に、ステップＳ１０２では、関数ｆ１における処理の流れから（図３参照）、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を呼び出し、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を実行する。関数ｆ２（ｆｕｎｃ音声出力デバイス準備）においては、まず、音声出力用のデバイスを使用できるように設定する処理を行い、次いで、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を示す関数情報をスタックに追加する。このステップＳ１０２の状態におけるスタック情報を図５（ｂ）に示す。ステップＳ１０２では、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を示す関数情報がスタックの最下層にある。
【００４２】
次に、ステップＳ１０３では、関数ｆ２における処理の流れから（図３参照）、関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を呼び出し、関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を実行する。関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）においては、音声出力用データをバッファに４８０バイト書き込む処理を行い、結果、４８０バイトの音声出力用データの書き込みが完了し（図３に示す関数ｆ３の条件Ａに該当した場合）、次いで、関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を示す関数情報をスタックに追加する。このステップＳ１０３の状態におけるスタック情報を図５（ｃ）に示す。ステップＳ１０３では、関数ｆ２（音声出力デバイス準備）を示す関数情報がスタックの最下層、その上に関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を示す関数情報がある。
【００４３】
次に、ステップＳ１０４では、関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）の処理が終了したので、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）に戻り、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を示す関数情報をスタックに追加する。このステップＳ１０４の状態におけるスタック情報を図６（ａ）に示す。ステップＳ１０４では、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を示す関数情報がスタックの最下層、その上に関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を示す関数情報、さらにその上に関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を示す関数情報がある。
【００４４】
次に、ステップＳ１０５では、関数ｆ２における処理の流れから（図３参照）、関数ｆ４（ｆｕｎｃ異常動作判定）を呼び出し、関数ｆ４（ｆｕｎｃ異常動作判定）を実行する。関数ｆ４（ｆｕｎｃ異常動作判定）においては、まず、記録していたスタック情報と、予め記憶していた正常動作時の正常スタック情報と、を比較し、次いで、スタック情報をクリアする。このステップＳ１０５の状態におけるスタック情報を図６（ｂ）及び（ｃ）に示す。この場合には、図６（ｂ）に示すように、記録していたスタック情報と、予め記憶していた正常動作時の正常スタック情報とが一致したので、制御処理Ａは正常動作と判定される。すなわち、関数ｆ４（ｆｕｎｃ異常動作判定）は、上記実施の形態における異常判定部１２に相当する。
【００４５】
なお、ステップＳ１０５を終了後は、ステップＳ１０２に戻り、上記ステップＳ１０２〜Ｓ１０５の処理を繰り返す。
【００４６】
次に、図７〜図１０を用いて、制御処理Ａにおける異常動作時の関数の流れ及びスタック情報の推移について説明する。図７は、制御処理Ａが異常動作をした場合の関数の実行順序を示すフローチャートである。図８〜図１０は、図７に示す順序で関数が実行された場合のスタック情報の推移を示す模式図である。
【００４７】
まず、ステップＳ２０１では、関数ｆ１（ｆｕｎｃ動作設定）を実行する。この関数ｆ１（ｆｕｎｃ動作設定）を実行すると、関数ｆ１の処理の流れ（図３参照）に示すように、まず、書き込みバッファサイズを４８０バイトに設定する。このステップＳ１０１の状態におけるスタック情報を図８（ａ）に示す。ステップＳ２０１では、呼び出された関数はないので、関数情報はスタックに記憶されていない。
【００４８】
次に、ステップＳ２０２では、関数ｆ１における処理の流れから（図３参照）、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を呼び出し、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を実行する。関数ｆ２（ｆｕｎｃ音声出力デバイス準備）においては、まず、音声出力用のデバイスを使用できるように設定する処理を行い、次いで、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を示す関数情報をスタックに追加する。このステップＳ１０２の状態におけるスタック情報を図８（ｂ）に示す。ステップＳ２０２では、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を示す関数情報がスタックの最下層にある。
【００４９】
次に、ステップＳ２０３では、関数ｆ２における処理の流れから（図３参照）、関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を呼び出し、関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を実行する。関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）においては、音声出力用データをバッファに４８０バイト書き込む処理を行い、結果、２４０バイトの音声出力用データの書き込みしかできず（図３に示す関数ｆ３の条件Ｂに該当した場合）、次いで、関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を示す関数情報をスタックに追加する。このステップＳ１０３の状態におけるスタック情報を図８（ｃ）に示す。ステップＳ２０３では、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を示す関数情報がスタックの最下層、その上に関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を示す関数情報がある。
【００５０】
次に、ステップＳ２０４では、関数ｆ３における処理の流れから（図３参照）、関数ｆ５（ｆｕｎｃリカバリー処理）を呼び出し、関数ｆ５（ｆｕｎｃリカバリー処理）を実行し、次いで、関数ｆ５（ｆｕｎｃリカバリー処理）を示す関数情報をスタックに追加する。このステップＳ２０４の状態におけるスタック情報を図９（ａ）に示す。ステップＳ２０４では、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を示す関数情報がスタックの最下層、その上に関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を示す関数情報、さらにその上に関数ｆ５（ｆｕｎｃリカバリー処理）を示す関数情報がある。
【００５１】
次に、ステップＳ２０５では、関数ｆ５（ｆｕｎｃリカバリー処理）の処理が終了したので、関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）に戻り、関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を示す関数情報をスタックに追加する。このステップＳ２０５の状態におけるスタック情報を図９（ｂ）に示す。ステップＳ２０５では、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を示す関数情報がスタックの最下層、その上に関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を示す関数情報、その上に関数ｆ５（ｆｕｎｃリカバリー処理）を示す関数情報、さらにその上に関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を示す関数情報がある。
【００５２】
次に、ステップＳ２０６では、関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）の処理が終了したので、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）に戻り、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を示す関数情報をスタックに追加する。このステップＳ２０６の状態におけるスタック情報を図９（ｃ）に示す。ステップＳ２０６では、関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を示す関数情報がスタックの最下層、その上に関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を示す関数情報、その上に関数ｆ５（ｆｕｎｃリカバリー処理）を示す関数情報、その上に関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）を示す関数情報、さらにその上に関数ｆ２（ｆｕｎｃ音声出力デバイス準備）を示す関数情報が記憶されている。
【００５３】
次に、ステップＳ２０７では、関数ｆ２における処理の流れから（図３参照）、関数ｆ４（ｆｕｎｃ異常動作判定）を呼び出し、関数ｆ４（ｆｕｎｃ異常動作判定）を実行する。関数ｆ４（ｆｕｎｃ異常動作判定）においては、まず、記録していたスタック情報と、予め記憶していた正常動作時の正常スタック情報及び異常時動作時の異常スタック情報と、を比較し、次いで、スタック情報をクリアし、最後に、書き込みバッファサイズを２４０バイトに設定する。このステップＳ２０７の状態におけるスタック情報を図１０（ａ）及び（ｂ）に示す。この場合には、図１０（ａ）に示すように、記録していたスタック情報と、予め記憶していた正常動作時の正常スタック情報とが一致せず、予め記憶していた異常動作時の異常スタック情報と一致したので、制御処理Ａは異常動作と判定され、書き込みバッファサイズは４８０バイトから２４０バイトに変更される。すなわち、関数ｆ４（ｆｕｎｃ異常動作判定）は、上記実施の形態における異常判定部１２及び動作条件変更部１３に相当する。
【００５４】
なお、ステップＳ２０７を終了後は、ステップＳ２０２に戻り、上記ステップＳ２０２〜Ｓ２０７の処理を繰り返す。
【００５５】
このように本実施例では、スピーカに対する音声出力処理を実行する場合にバッファサイズを４８０バイトに設定して音声出力用データを出力するようにしているが、その制御において異常動作、つまり４８０バイトの音声出力用データを書き込めない場合には、バッファサイズをより小さなサイズである２４０バイトに変更して、音声出力用データの書き込みを行うようにしている。この結果、次回のデータの書き込み処理では、より負荷のかからない状態でスピーカを制御することが可能である。すなわち、本実施例では、記録されたスタック情報、と予め設定されている正常スタック情報及び異常スタック情報を比較することにより、スピーカに対する音声出力処理がエラーとなる手前の異常状態を迅速に検知でき、この異常状態を、より負荷のかからない動作条件に変更することにより、正常状態に戻すことができるようになっている。
【００５６】
なお、本実施例では、１つのパターンの異常スタック情報を備える場合について説明したが、異常動作を複数に細分化して、複数のパターンの異常スタック情報を備えるようにしてもよい。この場合には、異常動作の種類（内容）に応じて、異なる動作条件を再設定することが可能となるので、よりきめ細やかにリカバリー処理を実行することができる。
【００５７】
また、本実施例では、関数履歴情報としてスタック情報を用いたが、これは好適な一例であり、動作した複数の関数の実行順序を識別可能なデータであればいずれのデータ構造であってもよい。
【００５８】
なお、図３に示したように、上述した正常動作及び異常動作とも異なり、関数ｆ３（ｆｕｎｃ音声出力用バッファに書き込み）において条件Ｃに該当する場合は、外部機器５自体のエラー（例えば、外部機器５の電源がＯＦＦなど）が発生した場合なので、関数ｆ６（エラー処理）を呼び出し、関数ｆ６（エラー処理）を実行する。
【００５９】
＜実施の形態のまとめ＞
以上述べたように、上記実施の形態の機器制御装置によれば、複数のルーチン（例えば、図３に示す関数ｆ１〜ｆ６）から構成された所定の制御処理（例えば、スピーカに対する音声出力処理）を、所定の動作条件（例えば、バッファサイズ４８０バイト）にて実行し、外部機器（例えば、外部機器５としてスピーカ）を制御する機器制御装置（例えば、機器制御装置１０）であって、前記所定の制御処理を実行した際に動作したルーチンの実行順序を履歴情報（例えば、スタック情報）として記録する動作追跡手段（例えば、動作追跡部１１）と、前記所定の制御処理を実行し、正常処理となった場合の前記履歴情報（例えば、判定用パターンデータ２２、正常スタック情報）を予め記憶している判定用情報記憶手段（例えば、記憶部２）と、前記判定用情報記憶手段に記憶された正常処理の場合の前記履歴情報と、前記動作追跡手段により記録された前記履歴情報を比較し、一致しなかった場合に、前記所定の制御処理を異常処理と判定する異常判定手段（例えば、異常判定部１２）と、前記異常判定手段により前記所定の制御処理を異常処理と判定された場合には、前記所定の制御処理を実行する際の動作条件を、前記異常処理と判定された場合の動作条件より、前記外部機器に対して負荷のかからない動作条件（例えば、バッファサイズ２４０バイト）に変更する動作条件変更手段（例えば、動作条件変更部１３）と、を備えることを基本的構成とする。
【００６０】
この機器制御装置によれば、動作したルーチンの実行順序を履歴情報とし、正常処理の場合の履歴情報と記録された履歴情報を比較し、両者が一致しなかった場合には、異常処理と判定するとともに、より負荷のかからない動作条件に変更するので、エラーが発生する前の異常状態を検知し、エラーの発生を回避することができる。
【００６１】
また、前記判定用情報記憶手段は、さらに、前記所定の制御処理を実行し、異常処理となった場合の前記履歴情報を予め記憶し、前記異常判定手段は、前記判定用情報記憶手段に記憶された正常処理の場合の前記履歴情報と、前記動作追跡手段により記録された前記履歴情報を比較し、両者が一致しない場合であって、かつ、前記判定用情報記憶手段に記憶された異常処理の場合の前記履歴情報と、前記動作追跡手段により記録された前記履歴情報を比較し、両者が一致した場合には、前記所定の制御処理を異常処理と判定してもよい。
【００６２】
この場合には、異常状態の検知をより確実に行うことができる。
【００６３】
また、前記判定用情報記憶手段は、異常処理となった場合の前記履歴情報を異常の種類に応じて複数備え、前記動作条件変更手段は、前記異常判定手段により異常処理と判定された場合には、判定された異常の種類に応じて、動作条件を変更することが好ましい。
【００６４】
この場合には、異常の種類に応じて、きめ細やかに動作条件の変更を行うことができる。
【００６５】
また、上記実施の形態の機器制御方法によれば、複数のルーチン（例えば、図３に示す関数ｆ１〜ｆ６）から構成された所定の制御処理（例えば、スピーカに対する音声出力処理）を、所定の動作条件（例えば、バッファサイズ４８０バイト）にて実行し、外部機器（例えば、外部機器５としてスピーカ）を制御する機器制御方法（例えば、図２に示す機器制御処理）であって、前記所定の制御処理を実行した際に動作したルーチンの実行順序を履歴情報（例えば、スタック情報）として記録する動作追跡ステップ（例えば、図２のステップＳ３０）と、前記所定の制御処理を実行し、正常処理となった場合の前記履歴情報（例えば、判定用パターンデータ２２、正常スタック情報）と、前記動作追跡ステップにより記録された前記履歴情報を比較し（例えば、図２のステップＳ４０）、一致しなかった場合に、前記所定の制御処理を異常処理と判定する異常判定ステップ（例えば、図２のステップＳ４０）、と、前記異常判定ステップにより前記所定の制御処理を異常処理と判定された場合には、前記所定の制御処理を実行する際の動作条件を、前記異常処理と判定された場合の動作条件より、前記外部機器に対して負荷のかからない動作条件（例えば、バッファサイズ２４０バイト）に変更する動作条件変更ステップ（例えば、図２のステップＳ６０）と、を備えることを基本的構成とする。
【００６６】
この機器制御方法によれば、動作したルーチンの実行順序を履歴情報とし、正常処理の場合の履歴情報と記録された履歴情報を比較し、両者が一致しなかった場合には、異常処理と判定するとともに、より負荷のかからない動作条件に変更するので、エラーが発生する前の異常状態を検知し、エラーの発生を回避することができる。
【００６７】
また、上記実施の形態の機器制御プログラムによれば、複数のルーチン（例えば、図３に示す関数ｆ１〜ｆ６）から構成された所定の制御処理（例えば、スピーカに対する音声出力処理）を、所定の動作条件（例えば、バッファサイズ４８０バイト）にて実行し、外部機器（例えば、外部機器５としてスピーカ）を制御する機器制御装置（例えば、機器制御装置１０）のための機器制御プログラム（例えば、機器制御プログラム２１）であって、前記所定の制御処理を実行した際に動作したルーチンの実行順序を履歴情報（例えば、スタック情報）として記録する動作追跡ステップ（例えば、図２のステップＳ３０）と、前記所定の制御処理を実行し、正常処理となった場合の前記履歴情報（例えば、判定用パターンデータ２２、正常スタック情報）と、前記動作追跡ステップにより記録された前記履歴情報を比較し、一致しなかった場合に、前記所定の制御処理を異常処理と判定する異常判定ステップ（例えば、図２のステップＳ４０）と、前記異常判定ステップにより前記所定の制御処理を異常処理と判定された場合には、前記所定の制御処理を実行する際の動作条件を、前記異常処理と判定された場合の動作条件より、前記外部機器に対して負荷のかからない動作条件に変更する動作条件変更ステップ（例えば、図２のステップＳ６０）と、を前記機器制御装置に実行させることを基本的構成とする。
【００６８】
この機器制御プログラムによれば、動作したルーチンの実行順序を履歴情報とし、正常処理の場合の履歴情報と記録された履歴情報を比較し、両者が一致しなかった場合には、異常処理と判定するとともに、より負荷のかからない動作条件に変更するので、エラーが発生する前の異常状態を検知し、エラーの発生を回避することができる。
【００６９】
また、上記の機器制御装置、機器制御方法及び機器制御プログラムにおいて、前記履歴情報は、スタック構造のデータであることが好ましい。
【００７０】
この場合には、動作したルーチンの実行順序を示す情報を容易に記録することができる。
【００７１】
以上、本発明の実施の形態について説明してきたが、本発明は、上述した実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲において、本発明の実施の形態に対して種々の変形や変更を施すことができ、そのような変形や変更を伴うものもまた、本発明の技術的範囲に含まれるものである。
【符号の説明】
【００７２】
１  制御部
２  記憶部
３  入力部
４  出力部
５  外部機器
１０  機器制御装置
１１  動作追跡部
１２  異常判定部
１３  動作条件変更部
２１  機器制御プログラム
２２  判定用パターンデータ
１００  ハードウェア検証システム
【図１】
2013149120.tif 000003
【図２】
2013149120.tif 000004
【図３】
2013149120.tif 000005
【図４】
2013149120.tif 000006
【図５】
2013149120.tif 000007
【図６】
2013149120.tif 000008
【図７】
2013149120.tif 000009
【図８】
2013149120.tif 000010
【図９】
2013149120.tif 000011
【図１０】
2013149120.tif 000012