(57)【特許請求の範囲】
【請求項１】
所定周期で周期トリガを出力する周辺回路を起動して周期処理を制御するプロセッサにより実行が制御されるモジュールの、周期処理エラーを検出する周期エラー検出方法であって、
フリーランでアップカウント動作を行うカウンタと、レジスタとを有するキャプチャタイマを備え、
前記周期トリガをキャプチャトリガとして前記カウンタから取得したカウント値を第１のカウント値として前記レジスタに保存するステップと、
前記モジュールの処理開始時にキャプチャトリガをかけて前記カウンタから取得したカウント値を、第２のカウント値として前記レジスタに保存するステップと、
前記モジュールの処理終了時にキャプチャトリガをかけて前記カウンタから取得したカウント値を、第３のカウント値として前記レジスタに保存するステップと、
前記プロセッサが、前記モジュールからの完了通知を受け取ると、前記レジスタから前記第１、第２、第３のカウント値を読み出し、その値にもとづいて前記モジュールの処理時間を算出し、前記所定周期と比較して周期処理エラーの発生の有無を判定するステップと
を備えることを特徴とする周期エラー検出方法。
【請求項２】
前記周期処理エラーの発生の有無を判定するステップは、
前記処理時間として、前記第２のカウント値から前記第１のカウント値を減算した値に、前記第３のカウント値から前記第２のカウント値を減算した値を加算した値を算出し、
その算出した値を前記所定周期と比較して前記周期処理エラーの発生の有無を判定する
ことを特徴とする請求項１に記載の周期エラー検出方法。
【請求項３】
前記周期処理エラーの発生の有無を判定するステップは、
前記プロセッサが周期エラー検出プログラムを実行して、前記周期処理エラーの発生の有無を判定する
ことを特徴とする請求項２に記載の周期エラー検出方法。
【請求項４】
前記周辺回路が、モータ駆動を制御するモータ制御回路であり、
前記モジュールが、モータのベクトル制御に関する演算を処理するベクトルエンジンである
ことを特徴とする請求項１乃至３のいずれか１項に記載の周期エラー検出方法。
【請求項５】
所定周期で周期トリガを出力する周辺回路を起動して周期処理を制御するプロセッサにより実行が制御されるモジュールの、周期処理エラーを検出する周期エラー検出回路であって、
フリーランでアップカウント動作を行うカウンタと、前記周期トリガをキャプチャトリガとして前記カウンタから取得されたたカウント値が第１のカウント値として保存され、前記モジュールの処理開始時に出力されたキャプチャトリガにより前記カウンタから取得されたカウント値が第２のカウント値として保存され、前記モジュールの処理終了時に出力されたキャプチャトリガにより前記カウンタから取得されたカウント値が第３のカウント値として保存されるレジスタとを有するキャプチャタイマと、
前記レジスタに保存されている前記第１、第２、第３のカウント値にもとづいて前記モジュールの処理時間を算出し、前記所定周期と比較して周期処理エラーの発生の有無を判定する判定回路と
を備え、
前記判定回路が、前記プロセッサからの要求に応じて、前記判定結果を前記プロセッサへ送出する
ことを特徴とする周期エラー検出回路。
【請求項６】
前記判定回路が、
前記第２のカウント値から前記第１のカウント値を減算する第１の減算器と、
前記第３のカウント値から前記第２のカウント値を減算する第２の減算器と、
前記第１の減算器の出力と前記第２の減算器の出力を加算する加算器と、
前記加算器の出力を前記所定周期と比較する比較器と
を備えることを特徴とする請求項５に記載の周期エラー検出回路。
【請求項７】
前記モジュールが、モータのベクトル制御に関する演算を処理するベクトルエンジンであり、
前記周辺回路が、モータ駆動を制御するモータ制御回路である
ことを特徴とする請求項５または６に記載の周期エラー検出回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、周期エラー検出方法および周期エラー検出回路に関する。
【背景技術】
【０００２】
従来、プロセッサの制御により周期処理を実行する装置では、周期的に周期トリガを発生する周辺回路がプロセッサからの起動命令を受けて起動し、この周辺回路から出力される周期トリガを受けて、コプロセッサなどのモジュールが所定の処理の実行を開始する。
【０００３】
このとき、各モジュールは、その内部で処理時間を計測し、その処理が所定の周期内に終了したときは、完了通知をプロセッサへ出力する。一方、所定の周期内に処理が終了しないときは、処理時間超過を示す情報である「周期エラー発生」をプロセッサへ通知する。周期エラー発生が通知された場合、プロセッサは異常処理を行う。
【０００４】
このように、従来は、モジュール単位の処理によって周期エラーが検出されている。しかし、その際、周辺回路の起動や完了通知に要する時間、プロセッサ処理に関わるオーバヘッドなど、が考慮されない。そのため、各モジュールから正常処理を示す完了通知が出力されても、装置全体の処理としては周期処理が間に合わないことが起こりうる。その場合、プロセッサによる異常処理が行われないため、装置全体の処理に重大なフォールトが引き起こされる、という問題が生じる可能性がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−１４２９７１号公報
【特許文献２】特開平８−２８０１８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、周期処理の処理時間超過を確実に検出することのできる周期エラー検出方法および周期エラー検出回路を提供することにある。
【課題を解決するための手段】
【０００７】
実施形態の周期エラー検出方法は、所定周期で周期トリガを出力する周辺回路を起動して周期処理を制御するプロセッサにより実行が制御されるモジュールの、周期処理エラーを検出する。この周期エラー検出方法は、フリーランでアップカウント動作を行うカウンタと、レジスタとを有するキャプチャタイマを備え、前記周期トリガをキャプチャトリガとして前記カウンタから取得したカウント値を第１のカウント値として前記レジスタに保存し、前記モジュールの処理開始時にキャプチャトリガをかけて前記カウンタから取得したカウント値を、第２のカウント値として前記レジスタに保存し、前記モジュールの処理終了時にキャプチャトリガをかけて前記カウンタから取得したカウント値を、第３のカウント値として前記レジスタに保存する。前記プロセッサが、前記モジュールからの完了通知を受け取ると、前記レジスタから前記第１、第２、第３のカウント値を読み出し、その値にもとづいて前記モジュールの処理時間を算出し、前記所定周期と比較して周期処理エラーの発生の有無を判定する。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態の周期エラー検出方法が実行されるプロセッサ制御システムの構成の例を示すブロック図。
【図２】図１のシステムの動作シーケンスの例を示す図。
【図３】周期エラー検出処理のフローの例を示す図。
【図４】周期エラー検出プログラムの例を示す図。
【図５】第１の実施形態の周期エラー検出方法が実行されるモータ制御システムの構成の例を示すブロック図。
【図６】図５のシステムの動作シーケンスの例を示す図。
【図７】第２の実施形態の周期エラー検出回路を備えるモータ制御システムの構成の例を示すブロック図。
【図８】第２の実施形態の周期エラー検出回路の判定回路の内部構成の例を示す回路図。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態について図面を参照して説明する。なお、図中、同一または相当部分には同一の符号を付して、その説明は繰り返さない。
【００１０】
（第１の実施形態）
図１は、第１の実施形態の周期エラー検出方法が実行されるプロセッサ制御システムの構成の例を示すブロック図である。
【００１１】
このシステムは、周期処理を制御するプロセッサ１００と、プロセッサ１００から起動されて所定周期で周期トリガを出力する周辺回路１１０と、プロセッサ１００により実行が制御されるモジュール１２０と、を有しており、本実施形態では、キャプチャタイマ１を備える。キャプチャタイマ１は、フリーランでアップカウント動作を行うカウンタ１１と、レジスタ１２とを有する。
【００１２】
次に、このシステムの動作シーケンスを、図２に示す例を用いて説明する。
【００１３】
プロセッサ１００からの起動（起動１）を受けて、周辺回路１１０は、周期トリガを所定の制御周期Ｔｐｅｒｉｏｄ間隔で出力する。また、周辺回路１１０は、この周期トリガをキャプチャタイマ１へのキャプチャトリガＣＴＧ１として、カウンタ１１から定期的にカウント値ｃｎｔ１を取得する。取得されたカウント値ｃｎｔ１は、レジスタ１２に保存される。
【００１４】
その後、プロセッサ１００は、モジュール１２０を起動する（起動２）。この起動を受けて、モジュール１２０は処理を開始する。その際、モジュール１２０は、キャプチャタイマ１へキャプチャトリガＣＴＧ２をかけて、カウンタ１１からカウント値ｃｎｔ２を取得する。取得されたカウント値ｃｎｔ２は、レジスタ１２に保存される。
【００１５】
モジュール１２０は、処理を行い、処理が終了すると、キャプチャタイマ１へキャプチャトリガＣＴＧ３をかけて、カウンタ１１からカウント値ｃｎｔ３を取得する。取得されたカウント値ｃｎｔ３は、レジスタ１２に保存される。
【００１６】
また、モジュール１２０は、処理が完了すると、プロセッサ１００へ「完了通知」を出力する。
【００１７】
プロセッサ１００は、この完了通知を受けると、レジスタ１２からカウント値データｃｎｔ１、ｃｎｔ２、ｃｎｔ３を読み出し、その値にもとづいてモジュール１２０の処理時間を算出し、その処理時間を制御周期Ｔｐｅｒｉｏｄと比較して、周期処理エラーの発生の有無を判定する。
【００１８】
図３に、この周期処理エラー発生の有無判定の具体的な処理フローを示す。
【００１９】
モジュール１２０からの完了通知を受け取ると、プロセッサ１００は、レジスタ１２からカウント値データｃｎｔ１、ｃｎｔ２、ｃｎｔ３を読み出す（ステップＳ０１）。
【００２０】
続いて、プロセッサ１００は、
Ｔ１＝ｃｎｔ２−ｃｎｔ１
Ｔ２＝ｃｎｔ３−ｃｎｔ２
を求め、その合計（Ｔ１＋Ｔ２）をモジュール１２０の処理時間として算出する（ステップＳ０２）。
【００２１】
ここで、時間Ｔ１は、モジュール１２０の処理が行われる周期の始点の周期エッジからモジュール１２０の起動（起動２）までの時間を示し、時間Ｔ２は、モジュール１２０の起動からモジュール１２０の処理終了までの時間を表す。
【００２２】
したがって、処理時間（Ｔ１＋Ｔ２）は、モジュール１２０が処理を開始した周期の始点の周期エッジからモジュール１２０の処理終了までの時間となる。
【００２３】
次に、プロセッサ１００は、処理時間（Ｔ１＋Ｔ２）を制御周期Ｔｐｅｒｉｏｄと比較し、処理時間（Ｔ１＋Ｔ２）が制御周期Ｔｐｅｒｉｏｄ以下かどうかを判定する（ステップＳ０３）。
【００２４】
このとき、プロセッサ１００は、処理時間（Ｔ１＋Ｔ２）が制御周期Ｔｐｅｒｉｏｄ以下であれば（ＹＥＳ）、周期処理エラーなし（ＯＫ）と判定し、処理時間（Ｔ１＋Ｔ２）が制御周期Ｔｐｅｒｉｏｄ以下でなければ（ＮＯ）、周期処理エラーあり（ＮＧ）と判定する。
【００２５】
図４は、この周期処理エラー発生の有無判定を行う周期エラー検出プログラムＰＲＧＭ１の記述例である。
【００２６】
この周期エラー検出プログラムＰＲＧＭ１では、周辺回路１１０から出力される周期トリガとキャプチャタイマ１のカウンタ１１のカウント開始が非同期である場合、モジュール１２０の処理中にカウンタ１１のカウント値にオーバーフローが発生することを考慮し、（１）〜（３）のいずれかの条件式に合致すれば「ＯＫ」と判定している。
【００２７】
条件式（１）は、＜ケース１＞に示すように、モジュール１２０の処理中にカウンタ１１にオーバーフローが発生しなかった場合を想定した判定基準である。
【００２８】
条件式（２）は、＜ケース２＞に示すように、ｃｎｔ１の取得とｃｎｔ２の取得の間に、カウンタ１１にオーバーフローが発生した場合を想定した判定基準である。
【００２９】
オーバーフローが発生するとキャプチャタイマ１のカウント値が０に戻り、ｃｎｔ１とｃｎｔ２の間に、カウント値の逆転が発生するので、条件式（２）では、ｃｎｔ２にオーバーフロー値ｏｖｆｌを加算してＴ１を算出するようにしている。
【００３０】
ここで、オーバーフロー値ｏｖｆｌは、カウンタ１１のフルカウント値ｆｕｌｌに１を加算した値（ｏｖｆｌ＝ｆｕｌｌ＋１）である。
【００３１】
条件式（３）は、＜ケース３＞に示すように、ｃｎｔ２の取得とｃｎｔ３の取得の間に、カウンタ１１にオーバーフローが発生した場合を想定した判定基準である。
【００３２】
この場合、ｃｎｔ２とｃｎｔ３の間に、カウント値の逆転が発生するので、条件式（３）では、ｃｎｔ３にオーバーフロー値ｏｖｆｌを加算してＴ２を算出するようにしている。
【００３３】
図５には、第１の実施形態の周期エラー検出方法が実行される別のシステムの例として、モータ制御システムの構成の例を示す。
【００３４】
図５に示すモータ制御システムは、周期処理を制御するＣＰＵ２００と、ＣＰＵ２００から起動されて所定周期で周期トリガを出力するモータ制御回路であるＰＭＤ（Programmable  Motor  Driver）２１０と、ＣＰＵ２００により実行が制御されるベクトルエンジン２２０と、を有する。また、このモータ制御システムも、キャプチャタイマ１を有する。
【００３５】
ＰＭＤ２１０は、モータ駆動信号の基準となるキャリア信号を出力するとともに、このキャリア信号の周期にもとづく周期で周期トリガを出力する。
【００３６】
ベクトルエンジン２２０は、モータのベクトル制御で実行される基本的な処理（座標軸変換、相変換、ＳＩＮ／ＣＯＳ演算）や、電流制御に使用されるＰＩ制御を自動的に実行する専用ハードウェアである。
【００３７】
次に、このモータ制御システムの動作シーケンスを、図６に示す例を用いて説明する。
【００３８】
ＣＰＵ２００は、メインルーチン実行時に、ＰＭＤ２１０を起動する（起動１）。この起動を受けて、ＰＭＤ２１０は、キャリア信号の出力を開始するとともに、所定の制御周期Ｔｐｅｒｉｏｄ間隔で周期トリガを出力する。
【００３９】
また、ＰＭＤ２１０は、この周期トリガをキャプチャタイマ１へのキャプチャトリガＣＴＧ１として、カウンタ１１から定期的にカウント値ｃｎｔ１を取得する。取得されたカウント値ｃｎｔ１は、レジスタ１２に保存される。
【００４０】
その後、ＰＭＤ２１０は、ある周期トリガの出力時に、ＰＭＤ２１０に割り込み（割り込み１）をかける。この割り込みに応じて、ＣＰＵ２００は、割り込みルーチン１を起動させる。
【００４１】
この割り込みルーチン１は、その実行中に、ベクトルエンジン２２０を起動する（起動２）。
【００４２】
この起動を受けて、ベクトルエンジン２２０は処理を開始する。その際、ベクトルエンジン２２０は、キャプチャタイマ１へキャプチャトリガＣＴＧ２をかけて、カウンタ１１からカウント値ｃｎｔ２を取得する。取得されたカウント値ｃｎｔ２は、レジスタ１２に保存される。
【００４３】
ベクトルエンジン２２０は、処理を行い、処理が終了すると、再びキャプチャタイマ１へキャプチャトリガＣＴＧ３をかけて、カウンタ１１からカウント値ｃｎｔ３を取得する。取得されたカウント値ｃｎｔ３は、レジスタ１２に保存される。
【００４４】
また、ベクトルエンジン２２０は、処理が完了すると、ＣＰＵ２００へ割り込み（割り込み２）をかける。この割り込みが、ＣＰＵ２００に対する「完了通知」となる。
【００４５】
ＣＰＵ２００は、この割り込みに応じて、割り込みルーチン２を起動させるとともに、レジスタ１２からカウント値データｃｎｔ１、ｃｎｔ２、ｃｎｔ３を読み出す。
【００４６】
ＣＰＵ２００は、この読み出したカウント値データｃｎｔ１、ｃｎｔ２、ｃｎｔ３にもとづいてベクトルエンジン２２０の処理時間を算出し、その処理時間を制御周期Ｔｐｅｒｉｏｄと比較して、周期処理エラーの発生の有無を判定する。
【００４７】
この周期処理エラーの発生の有無を判定する処理の実行は、先に説明したプロセッサ制御システムの場合と同じであるので、ここでは、その説明を省略する。
【００４８】
このような本実施形態によれば、周辺回路からの周期トリガの出力時、モジュールの処理開始時および終了時に、キャプチャタイマにキャプチャトリガをかけ、取得したカウント値をレジスタに保存しておき、モジュールからの完了通知を受けたときに、プロセッサが、レジスタを読み出し、保存されているカウント値からモジュールの処理時間を算出し、周期処理エラーの発生の有無を判定する。これにより、モジュールの処理時間の算出に、周辺回路の起動や完了通知に要する時間、プロセッサ処理に関わるオーバヘッドなどが反映され、周期処理の処理時間超過を確実に検出することができる。その結果、装置全体の処理に重大なフォールトが発生することを防止することができる。
【００４９】
（第２の実施形態）
第１の実施形態では、周期エラー発生の有無をソフトウェアで判定する例を示したが、本実施形態では、判定回路を設け、周期エラー発生の有無をハードウェアで判定する例を示す。
【００５０】
図７は、本実施形態の周期エラー検出回路を備えるモータ制御システムの構成の例を示すブロック図である。
【００５１】
図７に示すモータ制御システムは、図５に示した構成に判定回路２を追加したものである。すなわち、本実施形態の周期エラー検出回路は、キャプチャタイマ１および判定回路２を備える。キャプチャタイマ１の動作は、第１の実施形態と同じであるので、ここでは、その説明を省略する。
【００５２】
判定回路２は、レジスタ１２に保存されているカウント値データｃｎｔ１、ｃｎｔ２、ｃｎｔ３を読み出し、その値にもとづいてベクトルエンジン２２０の処理時間を算出し、その処理時間を制御周期Ｔｐｅｒｉｏｄと比較して、周期処理エラーの発生の有無を判定する。
【００５３】
本実施形態では、ＣＰＵ２００は、ベクトルエンジン２２０から割り込み要求（割り込み２）により完了通知が送られると、判定回路２へ判定結果の送出を要求する。
【００５４】
この要求を受けて、判定回路２は、周期処理エラーの発生有無に関する判定結果をＣＰＵ２００へ送出する。
【００５５】
これにより、ＣＰＵ２００は、ベクトルエンジン２２０の周期処理エラー発生を検知することができる。
【００５６】
図８は、判定回路２の内部構成の例を示す回路図である。この回路は、図４に示した周期エラー検出プログラムＰＲＧＭ１の条件式（１）〜（３）に対応する演算を行う回路である。
【００５７】
すなわち、判定部２１は、条件式（１）に対応する演算
０≦（ｃｎｔ２−ｃｎｔ１）＋（ｃｎｔ３−ｃｎｔ２）≦Ｔｐｅｒｉｏｄ
を実行し、
判定部２２は、条件式（２）に対応する演算
０≦（ｃｎｔ２＋ｏｖｆｌ−ｃｎｔ１）＋（ｃｎｔ３−ｃｎｔ２）≦Ｔｐｅｒｉｏｄ
を実行し、
判定部２３は、条件式（３）に対応する演算
０≦（ｃｎｔ２−ｃｎｔ１）＋（ｃｎｔ３＋ｏｖｆｌ−ｃｎｔ２）≦Ｔｐｅｒｉｏｄ
を実行する。
【００５８】
比較器ＣＭＰ１〜ＣＭＰ３からは、それぞれの条件が満たされたときに“１”が出力され、条件が満たされないときは“０”が出力される。
【００５９】
したがって、比較器ＣＭＰ１〜ＣＭＰ３の出力が入力されるＮＯＲゲートＮＲ１から出力される判定結果は、出力が“０”のときは「周期処理エラーなし（ＯＫ）」であり、出力が“１”のときは「周期処理エラーあり（ＮＧ）」である。
【００６０】
なお、本実施形態では、モータ制御システムに判定回路２を設けた例を示したが、図１に示したプロセッサ制御システムに判定回路２を設けることも、もちろん可能である。
【００６１】
このような本実施形態によれば、ベクトルエンジンなどのモジュールの周期処理エラー発生の有無をハードウェアで判定するので、ソフトウェアで判定するのに比べて、判定処理を高速に実行することができる。これにより、周期処理にエラーが発生した場合の処置をより迅速に実行することができる。
【００６２】
以上説明した少なくとも１つの実施形態の周期エラー検出方法および周期エラー検出回路によれば、周期処理の処理時間超過を確実に検出することができる。
【００６３】
また、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６４】
１  キャプチャタイマ
１１  カウンタ
１２  レジスタ
２  判定回路
２１〜２３  判定部
ＳＵＢ１１〜ＳＵＢ３２  減算器
ＡＤＤ１１〜ＡＤＤ３２  加算器
ＣＭＰ１〜ＣＭＰ３  比較器
ＮＲ１  ＮＯＲゲート
１００  プロセッサ
１１０  周辺回路
１２０  モジュール
２００  ＣＰＵ
２１０  ＰＭＤ
２２０  ベクトルエンジン
【図１】
0005653332.tif 000002
【図２】
0005653332.tif 000003
【図３】
0005653332.tif 000004
【図４】
0005653332.tif 000005
【図５】
0005653332.tif 000006
【図６】
0005653332.tif 000007
【図７】
0005653332.tif 000008
【図８】
0005653332.tif 000009