(57)【要約】【課題】高速割り込みにより動作する装置において実行される処理の実行時間を正確に計測することを可能にする。【解決手段】割り込みにより実行される各計測対象の処理の実行に先立って以下の計測開始処理を実行するとともに計測対象の処理の実行終了を契機として以下の計測終了処理を実行する。計測開始処理では、フリーランタイマのタイマ値を読み込み、実行を中断される他の処理がある場合にはそれまでの実行時間を表す値を当該タイマ値とスタックのタイマ値と第１の補正値を用いて算出した後に当該タイマ値をスタックへプッシュする。計測終了処理では、フリーランタイマのタイマ値を読み込み、当該タイマ値とスタックのタイマ値との差から予め定められた第２の補正値を減算し、さらにそれまでの実行時間を表す値を加算して、実行を終了する処理の実行時間を算出する。【選択図】図３
2015018475.tif 000002
【特許請求の範囲】
【請求項１】
各々割り込みにより実行されるとともに各々割り込みの優先度が予め定められた複数の処理を制御部に実行させる場合における各処理の実行時間をフリーランタイマとスタックとを用いて計測する計測方法において、
前記複数の処理の各々に先立って実行される計測開始処理であって、前記フリーランタイマのタイマ値を読み込み、当該計測開始処理に後続する処理によって実行を中断される他の処理がない場合には当該読み込んだタイマ値を前記スタックへプッシュする一方、実行を中断される他の処理がある場合には当該タイマ値と前記スタックの最上段に格納されているタイマ値との差から予め定められた第１の補正値を減算して当該他の処理のそれまでの実行時間を表す値を算出して記憶装置に記憶させた後に、当該読み込んだタイマ値を前記スタックへプッシュする計測開始処理と、
前記複数の処理の各々の実行終了を契機として実行される計測終了処理であって、前記フリーランタイマのタイマ値を読み込み、当該タイマ値と前記スタックの最上段の格納内容と当該実行を終了する処理のそれまでの実行時間を表すものとして前記記憶装置に記憶されている値とから算出される値を予め定められた第２の補正値を用いて補正し、当該実行を終了する処理の実行時間を算出する計測終了処理と、
を前記制御部に実行させることを特徴とする計測方法。
【請求項２】
前記第１の補正値は、割り込み発生から前記計測開始処理におけるタイマ値の読み込みまでの第１の所要時間と前記計測終了処理におけるタイマ値の読み込みから割り込み終了までの第２の所要時間との和に応じた値であり、前記第２の補正値は、前記計測開始処理におけるタイマ値の読み込みから当該計測開始処理の実行完了までの第３の所要時間と前記計測終了処理の実行開始から当該計測終了処理におけるタイマ値の読み込みまでの第４の所要時間との和に応じた値である
ことを特徴とする請求項１に記載の計測方法。
【請求項３】
前記第１および第２の補正値は前記制御部の種類または仕様に応じて定められた値であるととともに、前記第１の補正値は、前記計測開始処理に後続する処理の優先度に応じて定められた値であることを特徴とする請求項２に記載の計測方法。
【請求項４】
各々割り込みにより実行されるとともに各々割り込みの優先度が予め定められた複数の処理を実行する制御部と、
フリーランタイマと、
スタック、とを備え、
前記制御部は、
前記複数の処理の各々に先立って実行される計測開始処理であって、前記フリーランタイマのタイマ値を読み込み、当該計測開始処理に後続する処理によって実行を中断される他の処理がない場合には当該読み込んだタイマ値を前記スタックへプッシュする一方、実行を中断される他の処理がある場合には当該タイマ値と前記スタックの最上段に格納されているタイマ値との差から予め定められた第１の補正値を減算して当該他の処理のそれまでの実行時間を表す値を算出して記憶装置に記憶させた後に、当該読み込んだタイマ値を前記スタックへプッシュする計測開始処理と、
前記複数の処理の各々の実行終了を契機として実行される計測終了処理であって、前記フリーランタイマのタイマ値を読み込み、当該タイマ値と前記スタックの最上段の格納内容と当該実行を終了する処理のそれまでの実行時間を表すものとして前記記憶装置に記憶されている値とから算出される値を予め定められた第２の補正値を用いて補正し、当該実行を終了する処理の実行時間を算出する計測終了処理と、を実行する
ことを特徴とするコンピュータ装置。
【請求項５】
データの書き換えが可能な不揮発性メモリを有し、
前記第１および第２の補正値は前記制御部の種類または仕様に応じて予め定められた前記第１の補正値および前記第２の補正値が前記不揮発性メモリに格納されており、前記第１の補正値は、前記実行を中断される処理の優先度に応じた値に定められている
ことを特徴とする請求項４に記載のコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータ装置におけるプログラムの実行時間の計測技術に関する。
【背景技術】
【０００２】
近年、電気自動車が急速に普及しつつある。電気自動車には動力源として三相交流電動機などの電動機が搭載されているとともに、電動機の駆動制御を行うインバータなどの駆動装置と、駆動装置と通信しその制御を行う制御装置が搭載されている。制御装置は、駆動装置に与えるトルク指令等の各種指令値（例えば、ｘ[Ｎｍ]など出力トルクの物理量を示す値）を運転者の操作に応じて生成する。駆動装置は、電動機に与える交流電力を制御装置から与えられた指令値に応じて調整する。これにより、電気自動車の走行制御が実現される。また、制御装置は、上記信号線を介して駆動装置のメモリに格納されている各種データ（例えば、出力トルクや回転速度（単位時間当たりの回転数）などの現在値を表すデータ）を取得し、それらデータに基づいて各種メータ類の表示制御を行う処理も実行する。これにより、車両の状態を運転者に把握させることができる。
【０００３】
電動機へ与える電力を制御装置から与えられる指令値に応じて調整する処理は、駆動装置に予めインストールされた制御プログラムにしたがってその駆動装置のＣＰＵ（Central Processing Unit：以下、制御部）を作動させることで実現される。制御プログラムの開発工程では、当該処理の実行時間（換言すれば、制御部によるプログラムの実行時間）が要求仕様に応じて定まる時間内に収まっているか否かの検証が行われる。このような実行時間の計測は、ハードウェアタイマを使用して行われることが一般的である。制御プログラムにしたがって上記制御部が実行する処理はタイマ割り込み等によって一定の時間間隔で周期的に実行される定周期処理と、不定期に発生する割り込みによって実行される不定期処理とに大別される。優先度の高い他の処理の割り込みが発生する場合、当該他の処理の実行時間をハードウェアタイマによる計測時間から差し引かなければ、割り込まれた処理の正確な実行時間を計測することはできない。そこで、プログラムの実行時間を正確に計測することを可能にする技術が種々提案されており、その一例としては「スタック方式」と呼ばれる計測方法が挙げられる（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−２８８２３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、駆動装置における制御プログラムの実行過程では、数１０マイクロ秒間隔といった短い時間間隔で割り込みが発生する。このような高速割り込みにより動作している装置では、従来のスタック方式によりプログラムの実行時間を計測したとしても、正確に計測することは難しい。従来のスタック方式では計測処理に要する時間が考慮されていない一方、高速割り込みにより動作する装置では割り込みマスクや符号付きの演算を行う関係上、計測処理に要する時間を無視できないからである。
【０００６】
本発明は以上に説明した課題に鑑みて為されたものであり、高速割り込みにより動作する装置において実行される処理の実行時間を正確に計測することを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本発明は、各々割り込みにより実行されるとともに各々割り込みの優先度が予め定められた複数の処理を制御部に実行させる場合における各処理の実行時間をフリーランタイマとスタックとを用いて計測する計測方法であって、以下の計測開始処理と計測終了処理とを含む計測方法を提供する。計測開始処理は、各処理の実行開始に先立って実行される処理である。この計測開始処理では、制御部は、フリーランタイマのタイマ値を読み込み、当該計測開始処理に後続する処理によって実行を中断される他の処理がない場合には当該読み込んだタイマ値をスタックへプッシュする一方、実行を中断される他の処理がある場合には当該タイマ値とスタックの最上段に格納されているタイマ値との差から予め定められた第１の補正値を減算して当該他の処理のそれまでの実行時間を表す値を算出して記憶装置に記憶させた後に、当該読み込んだタイマ値をスタックへプッシュする。計測終了処理は、各処理の実行終了を契機として実行される。この計測終了処理では、制御部は、フリーランタイマのタイマ値を読み込み、当該タイマ値と前記スタックの最上段の格納内容と当該実行を終了する処理のそれまでの実行時間を表すものとして記憶装置に記憶されている値とから算出される値を予め定められた第２の補正値を用いて補正し、当該実行を終了する処理の実行時間を算出する。
【０００８】
ここで、第１の補正値は、割り込み発生から計測開始処理におけるタイマ値の読み込みまでの第１の所要時間と計測終了処理におけるタイマ値の読み込みから割り込み終了までの第２の所要時間との和に応じた値であり、第２の補正値は、計測開始処理におけるタイマ値の読み込みから当該計測開始処理の実行完了までの第３の所要時間と計測終了処理の実行開始から当該計測終了処理におけるタイマ値の読み込みまでの第４の所要時間との和に応じた値である。本発明の計測方法によれば、上記第１および第２の補正値の減算による補正を施すことで実行時間の計測に要する時間を差し引き、各処理の実行時間を他の処理によって実行が中断されるか否かを問わずに正確に計測することが可能になる。なお、スタックへフリーランタイマのタイマ値をプッシュする際には、特許文献１に開示の技術と同様に符号反転を行ってプッシュするようにしても良い。また、実行を中断される処理のそれまでの実行時間を表す値の格納先となる記憶装置はスタックとは別個のものであっても良いし、スタックに当該役割を兼ねさせても良い。
【０００９】
より好ましい態様においては、第１および第２の補正値は制御部の種類または仕様に応じて定められた値であるととともに、第１の補正値は計測開始処理に後続する処理の優先度に応じて定められた値である。このような態様によれば、各々優先度の異なる処理の実行時間をより正確に計測することが可能になる。
【００１０】
また、上記課題を解決するために本発明は、各々割り込みにより実行されるとともに各々割り込みの優先度が予め定められた複数の処理を実行する制御部と、フリーランタイマと、スタック、とを備え、フリーランタイマとスタックとを用いて各処理の実行時間を計測する処理を上記制御部に実行させるとともに、上記計測開始処理と計測終了処理とを上記制御部に実行させることを特徴とするコンピュータ装置を提供する。このような態様によっても上記複数の処理の各々の実行時間を正確に計測することが可能になる。また、本発明の別の態様としては上記計測開始処理と計測終了処理とを上記制御部に実行させるプログラムを上記コンピュータ装置用のソフトウェアライブラリとして提供する態様が考えられる。このようなソフトウェアライブラリの具体的な提供態様としては、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）などのコンピュータ読み取り可能な記録媒体に書き込んで配布する態様やインターネットなどの電気通信回線経由のダウンロードにより配布する態様が考えられる。このようにして配布されるプログラムにしたがって一般的なコンピュータ装置の制御部を作動させることで当該コンピュータ装置において割り込みにより実行される各処理の実行時間を、本発明の計測方法により、従来よりも正確に計測することが可能になる。
【００１１】
より好ましい態様においては、上記コンピュータ装置はデータの書き換えが可能な不揮発性メモリを有し、前記第１および第２の補正値は前記制御部の種類に応じて予め定められているとともに、前記不揮発性メモリには、前記第１の処理の優先度に応じて定められた前記第１の補正値と、前記第２の処理の優先度に応じて定められた前記第２の補正値とが格納されることを特徴とする。
【図面の簡単な説明】
【００１２】
【図１】本発明の制御装置の一実施形態の駆動装置２０を含む試験システム１の構成例を示す図である。
【図２】同駆動装置２０の構成例を示す図である。
【図３】同駆動装置２０における実行時間計測を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照しつつ本発明の実施形態を説明する。
（Ａ：構成）
図１は、本発明の計測方法により制御プログラムの実行時間を計測する機能を備えた駆動装置２０を含む試験システム１の構成例を示す図である。駆動装置２０は例えばインバータであり、電動機３０とともに電気自動車に搭載される。試験システム１は、駆動装置２０の保守点検や開発工程における各種試験を行うためのものである。
【００１４】
図１に示すように、試験システム１は、試験対象の駆動装置２０および電動機３０の他に、ツイストペアケーブルなどの信号線を介して駆動装置２０に接続される試験装置１０を含んでいる。試験装置１０は、例えばパーソナルコンピュータであり、当該信号線を介して各種指令Ｍを駆動装置２０に与える。本実施形態では、試験装置１０から駆動装置２０へ与える指令Ｍに応じて電動機３０の動作にどのような変化が生じるのかを観察したり、駆動装置２０から返信されてくるデータＤを試験装置１０を用いて確認したりすることで駆動装置２０の試験が進められる。
【００１５】
駆動装置２０は、車載電池などの直流電源（図１では図示略）から供給される直流電力を交流電力ＰＷに変換して電動機３０に与える。駆動装置２０は、予めインストールされた制御プログラムを実行する制御部（図示略）と、当該制御プログラムを実行する際のワークエリアとして使用されるメモリとを含んでいる。本実施形態では、上記制御プログラムを制御部に実行させることで、制御装置（本実施形態では試験装置１０、駆動装置２０および電動機３０の実運用の際には車載コントローラ）から与えられる各種指令に応じて電動機３０に与える交流電力ＰＷを制御する処理が実現される。
【００１６】
加えて、本実施形態では、前述したスタック方式の計測方法を上記制御部に実行させることで上記制御プログラムにしたがって実行される各種処理の実行時間を計測することができるとともに、その計測方法を工夫することで従来よりも正確に実行時間を計測することが可能となっている。以下、本実施形態の特徴を顕著に示す駆動装置２０を中心に説明する。
【００１７】
図２は、駆動装置２０の構成例を示す図である。図２に示すように駆動装置２０は、制御部１１０、通信インターフェース（図２では、「Ｉ／Ｆ」と略記、以下、本明細書においても同様）部１２０、電力変換部１３０、フリーランタイマ１４０、記憶部１５０、およびこれら構成要素間のデータ授受を仲介するバス１６０を含んでいる。
【００１８】
制御部１１０は例えばＣＰＵである。制御部１１０は記憶部１５０（より正確には不揮発性記憶部１５４）に記憶されているプログラムを実行することにより駆動装置２０の制御中枢として機能する。制御部１１０が上記プログラムにしたがって実行する処理については後に明らかにする。
【００１９】
通信Ｉ／Ｆ部１２０は例えばＮＩＣ（Network Interface Card）であり、通信線を介して試験装置１０に接続されている。通信Ｉ／Ｆ部１２０は上記通信線を介して試験装置１０から送られている各種指令Ｍを受信して制御部１１０に与える一方、制御部１１０から与えられた各種データＤを上記通信線を介して試験装置１０へ送信する。電力変換部１３０は前述した直流電源と電動機３０とに接続されている。電力変換部１３０は、ＩＧＢＴなどのスイッチング素子を含んでおり（図２では図示略）、当該スイッチング素子のスイッチング（オン／オフの切り替え）により、直流電源から供給される直流電力を交流電力ＰＷに変換して電動機３０に与える。電力変換部１３０に含まれるスイッチング素子のオン／オフ制御は制御部１１０によって行われる。フリーランタイマ１４０は、ハードウェアタイマであり、前述したスタック方式の実行時間計測に用いられる。
【００２０】
記憶部１５０は揮発性記憶部１５２と不揮発性記憶部１５４とを含んでいる。揮発性記憶部１５２は例えばＲＡＭ（Random Access Memory）である。揮発性記憶部１５２は各種プログラムを実行する際のワークエリアとして制御部１１０によって利用される。また、揮発性記憶部１５２は上記スタック方式の実行時間計測を行う際のスタックとしても利用され、さらに制御プログラムにしたがって実行される電動機３０の制御のための各種処理の実行時間を表すデータも格納される。不揮発性記憶部１５４は例えばハードディスクやＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）などデータの書き換えが可能な不揮発性メモリである。図２に示すように不揮発性記憶部１５４には、前述した制御プログラムの役割を果たすソフトウェアライブラリ（通信制御ライブラリ１５４２、電力変換部制御ライブラリ１５４４、および計測支援ライブラリ１５４６）が予め格納されている。
【００２１】
通信制御ライブラリ１５４２は、試験装置１０と通信する処理（すなわち、各種指令Ｍの受信および各種データＤの送信）を制御部１１０に実現させるためのプログラムの集合体である。電力変換部制御ライブラリ１５４４は、試験装置１０から与えられる各種指令Ｍに応じて電力変換部１３０の作動制御を行う処理を制御部１１０に実行させるためのプログラムの集合体である。通信制御ライブラリ１５４２は、駆動装置２０を組み込んで電気自動車を製造するメーカ等によってその電気自動車に搭載される車載ネットワークの仕様に応じて作成される。つまり、通信制御ライブラリ１５４２に含まれる各プログラムは、制御部１１０を、駆動装置２０が搭載される電機自動車の車載ネットワーク毎に適宜カスタマイズされたカスタマイズ部として機能させるプログラムである。これに対して、電力変換部制御ライブラリ１５４４は、駆動装置２０の製造元により作成される。電力変換部制御ライブラリ１５４４に含まれる各プログラムは、制御部１１０を、電力変換部１３０の作動制御を実現するコア部として機能させるプログラムである。
【００２２】
通信制御ライブラリ１５４２或いは電力変換部制御ライブラリ１５４４に含まれるプログラムにしたがって制御部１１０が実行する処理は、前述した定周期処理と不定期処理とに大別される。本実施形態では、これらの処理の実行開始を指示する割り込みは数十マイクロ秒といった短い時間間隔で発生する。これらの処理には予め優先度が設定されており、定周期処理の優先度は最も低く設定されている。制御部１１０は、これら不定期処理および定周期処理の何れかの実行中に、当該実行中の処理よりも優先度の高い処理の実行を指示する割り込みが発生すると、実行中の処理を一旦中断し、当該優先度の高い処理を実行する。そして、当該優先度の高い処理の実行を完了すると制御部１１０は、実行を中断中の処理の実行を再開する。
【００２３】
計測支援ライブラリ１５４６に含まれるプログラムは、通信制御ライブラリ１５４２或いは電力変換部制御ライブラリ１５４４に含まれるプログラムにしたがって実行される処理の実行時間を制御部１１０に計測させるためのプログラムである。なお、本実施形態では、通信制御ライブラリ１５４２或いは電力変換部制御ライブラリ１５４４に含まれるプログラムにしたがって実行される処理を実行時間の計測対象とするが、前者にしたがって実行される処理のみを実行時間の計測対象としても良い。前述したように、通信制御ライブラリ１５４２は、駆動装置２０および電動機３０の搭載される車両の製造元によって開発されるソフトウェアであり、通信制御ライブラリ１５４２に含まれる各プログラムの実行時間が予め定められた時間（駆動装置２０の正常動作の保証という観点から駆動装置２０の製造元により推奨された時間、或いは要求仕様等に応じて定まる時間）内に収まっているか否かを検証しておくことは上記車両の製造元にとって極めて重要だからである。
【００２４】
本実施形態では、計測支援ライブラリ１５４６に含まれている各プログラムは、通信制御ライブラリ１５４２或いは電力変換部制御ライブラリ１５４４に含まれる各プログラムから所謂ＡＰＩ（Application Programming Interface）として呼び出し可能なように駆動装置２０に実装されている。例えば、ある処理の実行時間を計測するためには、当該処理を制御部１１０に実行させるプログラムの先頭に実行時間の計測を開始するための計測開始処理の実行を指示するＡＰＩ（以下、計測開始ＡＰＩ）を呼び出すためのコードを埋め込んでおく。一方、当該プログラムの末尾には、実行時間の計測を終了するための計測終了処理の実行を指示するＡＰＩ（以下、計測終了ＡＰＩ）を呼び出すためのコードを埋め込んでおくといった具合である。このようにすると、実行時間の計測対象の処理の実行を開始するための割り込みの発生を契機として、制御部１１０は、まず、計測開始処理を実行し、実行時間の計測対象の処理の実行終了を契機として計測終了処理を実行する。
【００２５】
計測開始処理は、上記のように実行時間の計測対象の処理の実行開始に先立って実行される処理である。この計測開始処理では、制御部１１０は、まず、フリーランタイマ１４０のタイマ値を読み込む。次いで、制御部１１０は、当該計測開始処理に後続する処理（すなわち、実行時間の計測対象の処理）によって実行を中断される他の処理があるか否かを判定し、該当する他の処理がない場合には、読み込んだタイマ値を符号反転して揮発性記憶部１５２内に設けられたスタックへプッシュする。ここで、当該計測開始処理に後続する処理によって実行を中断される他の処理があるか否かについては、スタックにタイマ値が格納されているか否かに基づいて判定すれば良い。具体的には、スタックにタイマ値が格納されていれば、実行を中断される他の処理があると判定するといった具合である。また、読み込んだタイマ値を符号反転してスタックへプッシュするのは、特許文献１に開示の技術と同様の理由によるものである。
【００２６】
実行を中断される他の処理がある場合には、制御部１１０は、フリーランタイマ１４０のタイマ値と上記スタックの最上段に格納されているタイマ値との差から予め定められた第１の補正値を減算した値を当他の処理のそれまでの実行時間を表す値として算出し、上記スタックの最上段の格納内容を当該値で更新した後に、当該読み込んだタイマ値を符号反転して上記スタックへプッシュする。つまり、本実施形態の駆動装置２０では、上記スタックは、優先度の高い処理の割り込みにより実行を中断される処理のそれまでの実行時間を示す値を記憶する記憶装置の役割を兼ねているのである。
【００２７】
計測終了処理は、実行時間の計測対象の処理の実行終了を契機として実行される処理である。この計測終了処理では、制御部１１０は、フリーランタイマ１４０のタイマ値を読み込み、当該タイマ値と上記スタックの最上段に格納されているタイマ値との差から予め定められた第２の補正値を減算し、両タイマ値の示す期間における当該実行を終了する処理の実行時間を算出する。なお、当該処理について、上記期間以前の実行時間を示す値が揮発性記憶部１５２（詳細については後述するが、本実施形態では上記スタックの最上段）に記憶されていた場合には、制御部１１０は、上記減算結果に当該値を加算して当該実行を終了する処理の実行時間を算出する。
【００２８】
上記第１の補正値とは、図３に示すように、実行時間の計測対象の処理の実行開始を指示する割り込みの発生から計測開始処理ＭＳにおけるタイマ値の読み込みまでの第１の所要時間Ｔａ１と、計測終了処理ＭＥにおけるタイマ値の読み込みから割り込み終了までの第２の所要時間Ｔａ２との和に応じた値である。なお、図３に示す例では、計測開始処理ＭＳに先行する符号ＷＨおよび計測終了処理ＭＥに後続する符号ＷＨは割り込みハンドラを表している。一方、第２の補正値とは、計測開始処理におけるタイマ値の読み込みから当該計測開始処理の実行完了までの第３の所要時間Ｔｃ１ｅと、計測終了処理の実行開始から当該計測終了処理におけるタイマ値の読み込みまでの第４の所要時間Ｔｃ２ｓとの和に応じた値である。
【００２９】
上記第１および第２の補正値の具体的な値については制御部１１０の種類や仕様に応じて定めるようにすれば良く、さらに第１の補正値（上記第１の時間Ｔａ１および第２の時間Ｔａ２）については実行時間の計測対象の処理の優先度に応じた値に定めるようにすれば良い。各々優先度の異なる処理の実行時間を正確に計測するためである。本実施形態では、最も優先度に高い処理についてはＴａ１＝３４マイクロ秒、Ｔａ２＝５４マイクロ秒と定められており、その他の処理についてはＴａ１＝６０マイクロ秒、Ｔａ２＝７８マイクロ秒と定められている。また、第２の補正値（上記第３の時間Ｔｃ１ｅおよび第４の時間Ｔｃ２ｓ）については、Ｔｃ１ｅ＝５２マイクロ秒、Ｔｃ２ｓ＝２４マイクロ秒と定められている。本実施形態では、上記第１の補正値は上記優先度と対応付けて計測開始処理のプログラムに予め埋め込まれており、上記第２の補正値は計測終了処理のプログラムに予め埋め込まれている。
以上が駆動装置２０の構成である。
【００３０】
（Ｂ：動作）
以下、制御部１１０が通信制御ライブラリ１５４２および電力変換部制御ライブラリ１５４４に含まれる各プログラムにしたがってｎ（ｎは２以上の自然数）種類の処理ＳＬｘ（ｘ＝１〜ｎ）を実行するとともにｘの値が小さいほど優先度が高く設定されている状況下で、処理ＳＬ２の実行中に、割り込みにより処理ＳＬ１の実行が開始される場合を例にとって、計測開始処理および計測終了処理の処理内容を説明する。なお、以下に説明する動作例では、処理ＳＬ２の開始時点では他の処理は実行されていない。また、前述したように、処理ＳＬｘ（ｘ＝１〜ｎ）の各々を制御部１１０に実行させる各プログラム（通信制御ライブラリ１５４２に含まれるプログラム）には、その先頭に計測開始ＡＰＩを呼び出すためのコードが埋め込まれており、その末尾には計測終了ＡＰＩを呼び出すためのコードが埋め込まれている。また、計測開始ＡＰＩの呼び出しの際にはその呼び出し元のプログラムにしたがって実現される処理の優先度を表す値が当該ＡＰＩの引数として用いられる。呼び出し元の処理の優先度に応じて上記第１の補正値の値を異ならせるためである。
【００３１】
処理ＳＬ２の実行開始を指示する割り込みの発生時点では、他に実行中の処理はない。このため、図３に示すように、処理ＳＬ２の実行に先立って実行される計測開始処理ＭＳでは、制御部１１０は、フリーランタイマ１４０のタイマ値Ｔ１を読み込み、当該タイマ値Ｔ１を符号反転してスタックへプッシュする。その後、制御部１１０は、処理ＳＬ２の実行を開始し、処理ＳＬ１の実行開始を指示する割り込みが発生すると、処理ＳＬ２の実行を中断する。制御部１１０は上記割り込みにより実行を指示されたプログラムを不揮発性記憶部１５４から揮発性記憶部１５２に読み出してその実行を開始するのであるが、当該プログラムの先頭にも前述した計測開始ＡＰＩが含まれている。このため、制御部１１０は、まず、計測開始処理ＭＳを実行する。
【００３２】
処理ＳＬ１に先立つ計測開始処理ＭＳでは制御部１１０は、まず、フリーランタイマ１４０のタイマ値Ｔ２を読み込む。本動作例では、処理ＳＬ１により実行を中断される処理があるため、制御部１１０は、上記実行を中断される処理についての上記割り込みが発生するまでの実行時間を表す値Ｔα´をタイマ値Ｔ２とスタックの最上段の格納内容と第１の補正値とに基づいて算出する。より詳細に説明すると、制御部１１０は、上記タイマ値Ｔ２に、スタックの最上段に格納されている値（−Ｔ１）を加算し、さらに第１の補正値を減算することで、上記値Ｔα´（Ｔα´＝Ｔ２−Ｔ１−Ｔａ２−Ｔａ１）を算出する。次いで、制御部１１０は、スタックの最上段の格納内容を当該値Ｔα´に更新し、その後、フリーランタイマ１４０から読み込んだタイマ値Ｔ２を符号反転してスタックへプッシュする（図３参照）。なお、スタックへのタイマ値のプッシュを符号反転せずに行う場合には、フリーランタイマ１４０のタイマ値Ｔ２とスタックの最上段に格納されているタイマ値Ｔ１との差を算出し、さらに上記第１の補正値を減算することで上記値Ｔα´を算出する処理を制御部１１０に実行させるようにすれば良い。
【００３３】
ここで注目すべき点は、上記割り込みが発生するまでの処理ＳＬ２の実際の実行時間Ｔα（図３に示すように、Ｔα＝Ｔ２−Ｔ１−Ｔｃ１ｅ−Ｔａ１）は上記の要領で算出される値Ｔα´とは微妙に異なっているという点である。このように、処理ＳＬ２の実際の実行時間Ｔαと計測開始処理ＭＳにて算出される値Ｔα´は微妙に異なるのであるが、両者の誤差は処理ＳＬ２に後続する計測終了処理ＭＥにおいて補正されるため、特段の問題は生じない。この点については後に詳細に説明する。なお、優先度の高い処理の割り込みにより実行を中断される処理のそれまでの実行時間を示す値を記憶する役割をスタックとは異なる他の記憶装置に担わせる場合には、処理ＳＬ１に先立つ計測開始処理ＭＳにおいては、スタックの最上段の値をプルし、当該値とフリーランタイマ１４０のタイマ値とから上記値Ｔα´を算出し、処理ＳＬ２と対応付けて上記記憶装置に記憶させた後に、上記タイマ値を符号反転してスタックへプッシュする処理を制御部１１０に実行させるようにすれば良い。
【００３４】
上記の要領で処理ＳＬ１の実行を開始した制御部１１０は、当該処理ＳＬ１の実行終了を契機として計測終了処理ＭＥを実行する。この計測終了処理ＭＥでは制御部１１０は、スタックの最上段に格納されている値（本実施形態では、−Ｔ２）をプルし、当該値とフリーランタイマ１４０から読み込んだタイマ値との和（本動作例では、スタックの最上段に保持されているタイマ値とフリーランタイマ１４０から読み込んだタイマ値との差）を算出し、さらにその算出結果から第２の補正値を減算する。これにより、本動作例では、処理ＳＬ１の実行時間を表す値Ｔｘ（Ｔｘ＝Ｔ３−Ｔ２−Ｔｃ１ｅ−Ｔｃ２ｓ）が算出される。制御部１１０は、このようにして算出した処理ＳＬ１の実行時間Ｔｘを当該処理ＳＬ１と対応づけて揮発性記憶部１５２の所定領域に書き込む。図３を参照すれば明らかように、上記の要領で算出される値Ｔｘは処理ＳＬ１の実際の実行時間と一致する。
【００３５】
次いで、制御部１１０は、スタックの最上段の格納内容（本動作例では、Ｔα´）を、フリーランタイマ１４０から読み込んだタイマ値Ｔ３を減算した値（本動作例では、−Ｔ３＋Ｔα´）に更新し、計測終了処理ＭＥを終了する。なお、優先度の高い処理の割り込みにより実行を中断される処理のそれまでの実行時間を示す値を記憶する役割をスタックとは異なる他の記憶装置に担わせる場合には、本計測終了処理ＭＥにおいては、スタックの最上段の値をプルし、当該値とフリーランタイマ１４０のタイマ値とから上記値Ｔｘを算出して上記記憶装置に記憶させた後に、上記タイマ値を符号反転してスタックへプッシュする処理を制御部１１０に実行させるようにすれば良い。
【００３６】
図３に示すように、処理ＳＬ１についての割り込みが終了すると、制御部１１０は処理ＳＬ２の実行を再開する。しかし、本動作例では、再度、処理ＳＬ１の実行開始を指示する割り込みが発生するため、処理ＳＬ２の実行は再度中断される。図３に示すように、当該再度の割り込みによる計測開始処理ＭＳでは制御部１１０は、フリーランタイマ１４０のタイマ値Ｔ２´を読み込み、当該タイマ値Ｔ２´とスタックの最上段の格納内容（−Ｔ３＋Ｔα´）とに基づいて処理ＳＬ２についての当該割り込みが発生するまでの実行時間を表す値Ｔα´＋Ｔγ´（ただし、Ｔγ´＝Ｔ２´−Ｔ３−Ｔａ２−Ｔａ１）を算出し、当該値で上記スタックの最上段の格納内容を更新する。その後、制御部１１０は、フリーランタイマ１４０から読み込んだタイマ値Ｔ２´を符号反転して上記スタックへプッシュする。なお、上記割り込みが発生するまでの処理ＳＬ２の実際の実行時間Ｔγは、図３に示すように、上記の要領で算出される値Ｔγ´と一致する。以降、処理ＳＬ１の実行終了を契機として計測終了処理ＭＥが実行される点、この計測終了処理ＭＥでは処理ＳＬ１の実行時間Ｔｙ（Ｔｙ＝Ｔ３´−Ｔ２´−Ｔｃ１ｅ−Ｔｃ２ｓ）が算出される点、上記実行時間Ｔｙの出力後、スタックの最上段の格納内容が（−Ｔ３´＋Ｔα´＋Ｔγ´）に更新される点、および上記の要領で算出された値Ｔｙは処理ＳＬ１の実際の実行時間と一致する点は前述した１回目の処理ＳＬ１の実行における場合と同様である。
【００３７】
処理ＳＬ１についての割り込みが終了すると、制御部１１０は、再度、処理ＳＬ２の実行を再開し、処理ＳＬ２の実行が終了すると、計測終了処理ＭＥを実行する。この計測終了処理ＭＥでは制御部１１０は、スタックの最上段の格納内容（Ｔα´＋Ｔγ´−Ｔ３´）とフリーランタイマ１４０から読み込んだタイマ値Ｔ４とからそれまでの処理ＳＬ２の実行時間を表す値Ｔα´＋Ｔγ´＋Ｔβ´（ただし、Ｔβ´＝Ｔ４−Ｔ３´−Ｔｃ１ｅ−Ｔｃ２ｓ）を算出する。なお、優先度の高い処理の割り込みにより実行を中断される処理のそれまでの実行時間を示す値を記憶する役割をスタックとは異なる他の記憶装置が担っている場合には、スタックの最上段には−Ｔ３´のみが格納されているため、当該値とフリーランタイマ１４０から読み込んだタイマ値Ｔ４との和から上記第２の補正値を減算して値Ｔβ´を算出し、上記記憶装置に記憶されているＴα´およびＴγ´を加算して処理ＳＬ２の実行時間を表す値を算出する処理を制御部１１０に実行させるようにすれば良い。
【００３８】
図３を参照すれば明らかように、２回目の処理ＳＬ１についての割り込み終了後、処理ＳＬ２の実行が完了するまでの実際の実行時間Ｔβ（図３に示すように、Ｔβ＝Ｔ４−Ｔ３´−Ｔａ２−Ｔｃ２ｓ）と上記の要領で算出される値Ｔβ´とは微妙に異なっている。しかし、ＴβとＴβ´の差（Ｔβ―Ｔβ´）は−Ｔａ２＋Ｔｃ１ｓであり、ＴαとＴα´の差Ｔａ２−Ｔｃ１ｓと相殺する。つまり、Ｔα´＋Ｔγ´＋Ｔβ´＝Ｔα＋Ｔγ＋Ｔβとなり、処理ＳＬ２の実行時間が正確に算出される。
【００３９】
以上説明したように本実施形態によれば、他の処理によって実行を中断されない処理（上記動作例では処理ＳＬ１）の実行時間を正確に算出することができることは勿論、他の処理の割り込みにより実行を中断される処理（上記動作例では処理ＳＬ２）の実行時間を正確に計測することが可能になる。
【００４０】
（Ｃ：変形）
以上本発明の実施形態について説明したが、この実施形態に以下の変形を加えても勿論良い。
（１）上記実施形態では、電動機３０の駆動装置２０における電力変換部１３０の作動制御を行うプログラムにしたがって制御部１１０が実行する各種処理の実行時間を計測する場合について説明した。しかし、本発明の計測方法による実行時間の計測対象の処理は、駆動装置２０にて実行される処理に限定されるものではない。例えば家庭用ゲーム機や携帯型ゲーム機において実行される処理の実行時間を計測対象としても良く、また、スマートフォンやタブレット型コンピュータなどの携帯型コンピュータにおいて実行される処理、或いはルータなどのネットワーク機器において実行される処理の実行時間を計測対象としても良い。要は、コンピュータ装置において割り込みにより実行される処理であって、処理毎に優先度が予め定められている処理であれば、本発明の計測方法を適用することでその実行時間を正確に計測することができ、特に、割り込みが数十マイクロ秒といった極めて短い時間間隔で発生する場合に効果的である。
【００４１】
（２）上記実施形態では、第１および第２の補正値として制御部１１０の種類や仕様に応じて定められる値を用い、かつ第１の補正値として実行時間の計測対象の処理の優先度に応じた値を用いたが、制御部１１０の種類または仕様のみに応じて定められた値を用いても良く、また実行時間の計測対象の処理の優先度のみに応じて定められた値を用いても良い。このような態様によれば、上記実施形態に比較して実行時間の計測精度が低下するものの、これら補正値を用いた補正を行う分だけ従来のスタック方式よりも精度良く実行時間を計測することが可能になるからでる。
【００４２】
（３）上記実施形態では、第１の補正値および第２の補正値が計測支援ライブラリ１５４６の各プログラムに埋め込まれていたが、これら補正値を書き込んだテーブルを上記各プログラムとは別個に不揮発性記憶部１５４に記憶させ、各プログラムにしたがって作動する制御部１１０には当該テーブルから各補正値を読み込んで使用する処理を実行させるようにしても良い。このように実行時間計測用のプログラムとは別個に各補正値を記憶させておけば、例えば制御部１１０の換装（より高性能なものへの置き換え）や各処理の割り込みレベルの変更が発生した場合であっても上記テーブルの書き換えによって柔軟に対処することが可能になる。
【００４３】
（４）上記実施形態では、最も優先度の高い処理とその他の処理とで第１の補正値の値を異ならせる場合について説明したが、最も優先度の高い処理に先立って実行される計測開始処理とその他の処理に先立って実行される計測開始処理とで処理内容を異ならせても良い。具体的には、計測開始処理の実行中は他の処理による割り込みを禁止するために、計測開始処理の冒頭で割り込み禁止制御を行い、計測開始処理の末尾で当該禁止を解除する制御を行うことが一般的であるが、最も優先度の高い処理に先行する計測開始処理では、他の処理による割り込みが発生することはないため、上記禁止制御や禁止の解除を省略するのである。計測終了処理についても同様に、最も優先度の高い処理に後続する計測終了処理では、上記禁止制御や禁止の解除を省略し、その他の処理に後続する計測終了処理では上記禁止制御や禁止の解除を実行するようにしても良い。
【符号の説明】
【００４４】
１…試験システム、１０…試験装置、１１０…制御部、１２０…通信Ｉ／Ｆ部、１３０…電力変換部、１４０…フリーランタイマ、１５０…記憶部、１５２…揮発性記憶部、１５４…不揮発性記憶部、１５４２…通信制御ライブラリ、１５４４…電力変換部制御ライブラリ、１５４６…計測支援ライブラリ、１６０…バス、３０…電動機。
【図１】
2015018475.tif 000003
【図２】
2015018475.tif 000004
【図３】
2015018475.tif 000005