(57)【要約】【課題】プロセッサを使用したソフトウェア制御で、目的の処理を所望のタイミングで実行することを可能にする。【解決手段】本発明の一態様としての制御装置は、第１の処理部を制御するプロセッサを備え、前記プロセッサは、前記プロセッサにより実行中のプログラムまたは前記プロセッサとバスを介して接続されたハードウェアから、前記第１の処理部に関する第１の処理の割り込み要求を受け付けた場合に、前記第１の処理の実行を開始するまでにどれくらいの遅延が生じるかを判断するための判断情報を取得し、前記判断情報に基づいて、前記第１の処理を実行するか否かを判定する。【選択図】図２
2015056039.tif 000002
【特許請求の範囲】
【請求項１】
第１の処理部を制御するプロセッサを備え、
前記プロセッサは、前記プロセッサにより実行中のプログラムまたは前記プロセッサとバスを介して接続されたハードウェアから、前記第１の処理部に関する第１の処理の割り込み要求を受け付けた場合、前記第１の処理の実行を開始するまでにどれくらいの遅延が生じるかを判断するための判断情報を取得し、前記判断情報に基づいて、前記第１の処理を実行するか否かを判定する
制御装置。
【請求項２】
前記プロセッサは、前記第１の処理を実行することを決定した場合に前記第１の処理を実行する
請求項１に記載の制御装置。
【請求項３】
基準時刻を計数する時刻計数部を備え、
前記プロセッサは、前記割り込み要求を受け付けた場合に、前記時刻計数部により計数される基準時刻を取得し、前記取得した基準時刻と、前記第１の処理を実行する目標時刻との差分に基づいて、前記判断情報を取得する
請求項１または２に記載の制御装置。
【請求項４】
前記判断情報は、前記目標時刻と前記基準時刻の差分を表し、
前記プロセッサは、前記差分が許容範囲内に含まれる場合は、前記第１の処理を実行することを決定し、前記許容範囲内に含まれない場合は、前記第１の処理を実行しないことを決定する
請求項３に記載の制御装置。
【請求項５】
前記許容範囲を設定する設定部を備え、
前記第１の処理部は、交流電力を出力するインバータの制御を行い、
前記設定部は、前記インバータが出力する交流電力の周波数情報に基づいて、前記許容範囲を設定する
請求項４に記載の制御装置。
【請求項６】
前記プロセッサの使用率または前記使用率の統計値を計算する使用率計算部をさらに備え、
前記プロセッサは、前記割り込み要求を受けた場合、前記使用率計算部により計算される前記プロセッサの使用率もしくは前記使用率の統計値を前記判断情報として取得し、
前記プロセッサは、前記判断情報に基づき前記プロセッサが高負荷状態であるときは、前記第１の処理を実行しないことを決定し、前記高負荷状態でないときは、前記第１の処理を実行することを決定する
請求項１または２に記載の制御装置。
【請求項７】
前記プロセッサは、前記使用率または前記統計値が許容値以上の場合に、前記プロセッサが高負荷状態であると判断する
請求項６に記載の制御装置。
【請求項８】
タイマと、
前記プロセッサの使用率または前記使用率の統計値を計算する使用率計算部をさらに備え、
前記プロセッサは、前記プロセッサの使用率または前記使用率の統計値を前記判断情報として取得し、前記第１の処理を実行するか否かを判定する代わりに、前記第１の処理を実行する目標時刻と、前記判断情報に基づき前記タイマに時間を設定し、
前記プロセッサは、前記タイマがタイムアウトすると、前記タイマからの割り込み要求を受けて前記第１の処理を実行する
請求項１または２に記載の制御装置。
【請求項９】
前記プロセッサは、前記使用率が高いほど小さな値の時間を前記タイマに設定する
請求項８に記載の制御装置。
【請求項１０】
前記使用率計算部は、前記プロセッサが行う処理別に、前記プロセッサの使用率または前記使用率の統計値を計算し、
前記プロセッサは、前記プロセッサの使用率または前記使用率の統計値から、あらかじめ決められた処理の使用率またはその統計値を差し引いた値を、前記判断情報として取得する
請求項６ないし９のいずれか一項に記載の制御装置。
【請求項１１】
前記第１の処理よりも実行の優先度が高い第２の処理が実行中か否かを表す高優先処理実行情報を格納するメモリを備え、
前記プロセッサは、前記高優先処理実行情報を前記判断情報として前記メモリから取得し、前記第２の処理が実行中でないことを示す場合に、前記第１の処理を実行することを決定する
請求項１または２に記載の制御装置。
【請求項１２】
前記基準時刻を格納するメモリを備え、
前記時刻計数部は、前記メモリにおける前記基準時刻をカウントアップして更新し、
前記プロセッサは、前記メモリから読み出すことで前記基準時刻を取得する
請求項３ないし５のいずれか一項に記載の制御装置。
【請求項１３】
前記目標時刻を格納するメモリを備え、
前記プロセッサは、前記メモリから読み出すことで前記目標時刻を取得する
請求項３ないし５、８、９のいずれか一項に記載の制御装置。
【請求項１４】
メモリを備え、
前記使用率計算部は、計算した前記プロセッサの使用率または前記使用率の統計値を前記メモリに書き込み、
前記プロセッサは、前記メモリから読み出すことで前記プロセッサの使用率または前記使用率の統計値を取得する
請求項６ないし９のいずれか一項に記載の制御装置。
【請求項１５】
請求項１ないし１４のいずれか一項に従った第１および第２の制御装置を備え、
前記第１の制御装置は、前記第２の制御装置と通信を行う第１の通信部を含み、
前記第２の制御装置は、前記第１の制御装置と通信を行う第２の通信部を含み、
前記第１および第２の制御装置は、前記第１および第２の通信部を用いて基準時刻の同期を行う
制御システム。
【請求項１６】
前記第１および第２の制御装置は、それぞれ
基準時刻を記憶するメモリ
前記基準時刻をカウントアップして更新する時刻更新部と、を備え
前記プロセッサは、前記第１の処理を実行する目標時刻と、前記メモリに記憶された基準時刻との差分に基づいて、前記判断情報を算出し、
前記目標時刻は前記第１および第２の制御装置でそれぞれ同じ値に設定されている
請求項１１に記載の制御システム。
【請求項１７】
第１の処理部を制御するプロセッサが、前記プロセッサにより実行中のプログラムまたは前記プロセッサとバスを介して接続されたハードウェアから、前記第１の処理部に関する第１の処理の割り込み要求を受け付けた場合に、前記第１の処理の実行を開始するまでにどれくらいの遅延が生じるかを判断するための判断情報を取得するステップと
前記判断情報に基づいて、前記第１の処理を実行するか否かを判定するステップと
を備えた制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、制御装置、制御システムおよび制御方法に関する。
【背景技術】
【０００２】
従来の制御装置では、優先度の高い処理の影響により、優先度の低い処理が実行されるタイミングに遅延が生じる問題があった。この問題に対して、全ての処理の実行周期と実行時間を把握した上で、最適にタスクスケジューリングする方法が知られている。この方法は、全てのタスクの実行周期と実行時間を把握できることを前提としている。
【０００３】
近年普及している軽量なアプリケーションを実装可能な通信モジュールでは、ＣＰＵにより通信処理が高い優先度で処理され、ユーザはこの実行周期や実行時間を知ることはできない。そのためユーザが実装するアプリケーションの実行タイミングは、この影響により遅延が発生してしまう。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８‐３２８６１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施形態は、上記従来技術の問題点を解決するためになされたものであって、プロセッサに所望の処理を所望のタイミングで実行させることを可能とする制御装置、制御システムおよび制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様としての制御装置は、第１の処理部を制御するプロセッサを備え、前記プロセッサは、前記プロセッサにより実行中のプログラムまたは前記プロセッサとバスを介して接続されたハードウェアから、前記第１の処理部に関する第１の処理の割り込み要求を受け付けた場合、前記第１の処理の実行を開始するまでにどれくらいの遅延が生じるかを判断するための判断情報を取得し、前記判断情報に基づいて、前記第１の処理を実行するか否かを判定する。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態に係る制御装置のブロック図。
【図２】第１の実施形態に係る動作を示すフローチャート。
【図３】第１の実施形態に係る制御装置と被制御装置のブロック図。
【図４】第１の実施形態に係る動作を示すフローチャート。
【図５】第１の実施形態に係る動作を示すフローチャート。
【図６】第２の実施形態に係る動作を示すフローチャート。
【図７】第２の実施形態に係る制御装置と被制御装置のブロック図。
【図８】第２の実施形態に係る動作を示すシーケンス図。
【図９】第３の実施形態に係る位相同期システムを示すブロック図。
【図１０】第３の実施形態に係る通信システムを示すブロック図。
【図１１】本発明の実施形態に関わる動作で使用するための情報の設定に関わる機能ブロック図。
【図１２】第１の実施形態の動作の具体例を説明するための図。
【図１３】カウントダウンタイマと周期タイマを示す図。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら、本発明の実施形態について説明する。
【０００９】
（第１の実施形態）
図１は、本発明の第１の実施形態に係わる制御装置のブロック図である。
【００１０】
図１に示す制御装置において、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１とメモリ１０２とペリフェラル１０３が、バス１０４に接続されている。本制御装置は、一例として、一般的な制御や通信のＩＣ（Ｉｎｔｅｇｒｅｔｅｄ  Ｃｉｒｃｕｉｔ）やＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）として実装されることができる。また一例として本制御装置は、無線ＬＡＮ等の通信モジュールとして実装されることができる。
【００１１】
ＣＰＵ１０１は、メモリ１０２に格納されたプログラムを読み出して実行する。プログラムは、通信処理を行うためのプログラムや、ユーザアプリケーションなど種々のプログラム、本実施形態の処理を実現するプログラムなどがあり得る。ＣＰＵ１０１は、プロセッサの一例であり、ＣＰＵ１０１の代わりに、ＭｅＰ（Ｍｅｄｉａ  ｅｍｂｅｄｅｄｄ  Ｐｒｏｃｅｓｓｏｒ）、マイクロプロセッサ、マイコン（ＭＣＵ、Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を配置してもよい。
【００１２】
メモリ１０２は、不揮発性メモリであるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）と、揮発性メモリであるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を備える。プログラムはＲＯＭに書き込まれ、データはＲＡＭに書き込まれるのが一般的である。ＲＡＭに関しては、一般的に記憶容量が大きいとされるＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）や、ＤＲＡＭよりもアクセス速度が高速であるとされるＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）等が存在する。メモリ１０２は、ＳＲＡＭを備えることが望ましいが、制御に支障のない場合はＤＲＡＭを備えていてもよい。メモリ１０２は、上述したＣＰＵ１０１が実行するプログラムや、ＣＰＵ１０１が実行の際に必要とする各種データを格納する。
【００１３】
ペリフェラル１０３は、メモリ１０２以外のハードウェアとして存在する機能ブロックであり、ＣＰＵ１０１により制御される第１の処理部に相当する。ペリフェラル１０３の例として、時間を計測し割り込み処理のトリガを生成するタイマや、パルス波を出力するＰＷＭ（Ｐｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｌａｔｉｏｎ）がある。また、ペリフェラル１０３の他の例として、通信のためのＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）やＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ  Ｔｒａｎｓｍｉｔｔｅｒ）、Ｉ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＳＰＩ（Ｓｙｓｔｅｍ  Ｐａｃｋｅｔ  Ｉｎｔｅｒｆａｃｅ）、ＣＡＮ（Ｃｏｎｔｒｏｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＳＤＩＯ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）、ＰＩＯ（Ｐａｒａｌｌｅｌ  Ｉｎｐｕｔ／ＯｕｔｐｕｔあるいはＰｒａｇｒａｍｍｅｄ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）、ＣＰＵと独立して時間を計測可能なＲＴＣ、デジタル信号とアナログ信号を変換するＡＤＣ（Ａｎａｌｏｇ  ｔｏ  Ｄｉｇｉｔａｌ  Ｃｏｎｖｅｒｔｅｒ）とＤＡＣ（Ｄｉｇｉｔａｌ  ｔｏ  Ａｎａｌｏｇ  Ｃｏｎｖｅｒｔｅｒ）、各種センサ、通信処理部等が挙げられる。通信処理部では、デジタル信号処理に速度が要求される下位層の処理の一部を担うことが一般的である。
【００１４】
本発明の第１の実施形態では、少なくとも１つ以上のペリフェラルが備わっており、ペリフェラルは、ソフトウェア（プログラム）がＣＰＵ１０１で処理される中で制御される対象となる。ＣＰＵ１０１は、任意のトリガによりペリフェラルに関する第１の処理の割り込み要求を受けると、ＣＰＵ１０１の負荷状況に応じて、第１の処理の実行開始までにどれくらいの遅延が生じるかを判断するための判断情報を算出する算出部と、当該判断情報に基づいて、第１の処理を実行するか否かを判定する判定部を備える。
【００１５】
次に図１および図２を用いて、本発明の第１の実施形態に係わる制御装置の動作について説明する。図２は、本発明の第１の実施形態に係わる制御装置の動作の一例を示すフローチャートである。図１１は、本実施形態に関わる動作で使用するための情報の設定に関わる機能ブロック図である。
【００１６】
ＣＰＵ１０１は、任意のトリガによる割り込み要求を受け付けると、まず第１の処理を実行するに先立ち、メモリ１０２に記録されている目標時刻と許容誤差情報（図１１参照）を取得する（Ｓ１１）。
【００１７】
ここでトリガとは割り込みを指し、ハードウェアあるいはソフトウェアで発生させられる。後述のタイマによる割り込み処理をトリガとしてもよい。トリガがＣＰＵ１０１において待機状態の場合は、まだ本フローの動作は開始せず、実行状態に遷移したときに本フローの動作が開始される。
【００１８】
目標時刻は、第１の処理を実行する目標となる時刻である。目標時刻は、予め一意に決定されていてもよいし、後述のパルス波の出力タイミング制御のように、図１１に示す目標時刻設定部１１により動的に計算および設定してもよい。たとえば、ペリフェラルがＰＷＭを備える場合に、ＰＷＭのパルス波の波長情報（パルス周期）を取得し、次のステップＳ１２で得られる現在の基準時刻と併せて、目標時刻を決定してもよい。ユーザアプリケーションが、事前に目標時刻と許容誤差情報をメモリに格納しておいてもよい。簡単な構成では、目標時刻と許容誤差情報は、第１の処理の内容に応じて事前に決定してメモリに格納しておくことが考えられる。
【００１９】
許容誤差情報は、目標時刻からずれて第１の処理を実行することを許容する時間範囲（許容誤差範囲）を表す。すなわち、第１の処理は、目標時刻から許容誤差範囲内の時刻であれば、実行することが許容される。許容誤差範囲内の時刻であれば、それは第１の処理の所望の実行タイミングに相当する。
【００２０】
ＣＰＵ１０１は、目標時刻と許容誤差情報を取得すると、次に現在の基準時刻を取得する（Ｓ１２）。基準時刻は、制御装置内部の時刻のことである。現在の基準時刻は、図１１に示すように、メモリ１０２の一部のレジスタに記録されている。基準時刻は、クロック１４に合わせてハードウェアあるいは、ＣＰＵ１０１で実行されるソフトウェアのいずれかの手段である時刻計時部１３により、値がインクリメントされ、逐次更新される。ソフトウェアであれば、最も高い優先度で、時刻の更新処理が実行されるべきである。時刻の更新処理によるＣＰＵ処理ジッタの影響が、第１の処理の実行の許容誤差情報に対して十分小さくなければならない。
【００２１】
ＣＰＵ１０１は、現在の基準時刻と目標時刻の差分を計算し、これを判断情報として取得する。そして、この差分が、許容誤差情報が示す許容誤差範囲内であるか判定する（Ｓ１３）。ＣＰＵ１０１は、判断情報を取得する取得部と、判断情報が示す値が許容範囲内かを判定する判定部を含む。許容誤差範囲内であれば（ＹＥＳ）、ＣＰＵ１０１は、続けて第１の処理を実行して（Ｓ１４）、本フローの処理を終了する。図１２（Ａ）に当該差分が許容誤差範囲内に入る場合の例を具体的に示す。図１２（Ａ）は横軸を基準時刻にとったタイミング図である。この例では現在の基準時刻が目標時刻よりも後であるが、当該差分が許容誤差範囲内で有る限り、目標時刻よりも前でも良い。
【００２２】
許容誤差範囲外であれば（ＮＯ）、ＣＰＵ１０１の判定部は、第１の処理を実行しないことを決定し、本フローの処理を終了する。図１２（Ｂ）に当該差分が許容誤差範囲内に入らない場合の例を具体的に示す。この例では現在の基準時刻が目標時刻よりも後であるが、目標時刻よりも前であっても、許容誤差範囲に入らなければ、第１の処理を実行しない。少なくとも設定可能な限り、現在の基準時刻を取得してから第１の処理の実行有無の判断を完了するまでは、ＣＰＵ１０１は他の処理を実行しないことが望ましい。
【００２３】
ＣＰＵ１０１が、任意のトリガを受け付けてから、現在の基準時刻を取得するまでに要する時間は、ＣＰＵの負荷状況あるいは動作状況に依存する。たとえばＣＰＵが、トリガの発生後も優先度の高い通信を継続して行っている場合は、ＣＰＵの負荷が高い状態であり、トリガの発生から、現在の基準時刻を取得するまでに要する時間が長くなると想定される。また、トリガによる割り込みが、他の優先度の高い処理のために待機させられ、実行状態に遷移することが遅延する場合もある。このため、ＣＰＵの負荷が高い場合、トリガが発生した後、現在の基準時刻と目標時刻の差分を判定した結果、差分が許容誤差を超える可能性が高まる。一方、ＣＰＵの負荷が低い状態であれば、トリガの発生から現在の基準時刻を取得するまでの時間が短時間であると想定され、上記差分が許容誤差範囲内に収まる可能性が高くなる。上記差分が許容誤差範囲内に収まる場合には、ＣＰＵは直ちに第１の処理を実行することで、第１の処理を所望タイミングに対し許容誤差範囲内で実行することが可能となる。上記差分が許容誤差範囲内に収まらない場合は、第１の処理を実行しないことで、第１の処理が許容誤差範囲外のタイミングで実行されることを阻止できる。
【００２４】
以下、第１の処理が、ＰＷＭのパルス波停止と開始処理である場合を具体例として、目標時刻の計算方法の例を示す。
【００２５】
前述のように、ペリフェラル１０３の一例であるＰＷＭは専用ハードウェアで動作する。ＣＰＵ１０１は、予めＰＷＭを動作させているものとする。目標時刻である任意の時刻に、第１の処理を実行したい場合に、図２の処理フローを実行することで、第１の処理を目標時刻または許容誤差範囲内で実行することができ、パルス波（たとえばパルス波の立ち上がりまたは立ち下がり）を所望の基準時刻に合わせることができる。
【００２６】
目標時刻は、一例として、以下の方法で計算できる。パルス波のパルス幅と１周期の波長が固定でかつオフセットの情報があれば、（１）式で示すように、現在の基準時刻をパルス周期で剰余計算した結果が、現在の基準時刻に最も近いハイレベル（ＨＩＧＨ）あるいはローレベル（ＬＯＷ）に切り替わるべき目標時刻までの差分とできる。なお、オフセットの情報も、上述したパルス周期の情報と同様の手段で取得できる。オフセットは０以上であり、０の場合は情報としてなくてかまわない。目標時刻は、現在の基準時刻にこの差分を加算することで計算できる。
（目標時刻までの差分）＝ｍｉｎ｛（現在の基準時刻）％（パルス周期），（パルス周期）−（（現在の基準時刻）％（パルス周期））｝＋（オフセット）  ・・・（１）
【００２７】
ただし（１）式においてＡ％Ｂは、Ａを被除数、Ｂを除数としたときの剰余を表す。なお、ＰＷＭにより出力されるパルス波が必ずＨＩＧＨから開始される場合には、ＬＯＷである期間に停止と開始を実行することで、パルス波に高周波ノイズが乗ることを回避できる。
【００２８】
次に、図３を用いて、制御装置の被制御対象に応じて許容誤差情報を自動的に決定する例を示す。図３において制御装置に対して被制御装置が接続されている。ここでは、被制御装置として、インバータを例に挙げる。制御装置のペリフェラル１０３は、ＰＷＭ１１１とＰＩＯ１１２と通信部１１３とを含む。被制御装置は、ＩＯポート１２１と、位相制御部１２２とを含む。
【００２９】
ＰＩＯ１１２は、ＰＷＭ１１１により生成されるパルス波の出力に応じて、インバータに対してタイミング参照信号としてパルス波を出力する。
【００３０】
インバータでは、これをＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）ポート１２１あるいはその他のインターフェースで受け、位相制御部１２２は、ＩＯポート１２１から入力されるパルス波に基づき、交流出力の位相制御を行う。
【００３１】
インバータの交流出力の位相を、制御装置の所望の基準時刻に合わせる場合、許容誤差は、交流出力一周期の波長に対する所定の割合に基づき決定する。
【００３２】
例えば許容誤差を波長の５％と定めた場合、許容誤差は、５０Ｈｚでは１ミリ秒、１００Ｈｚでは５００マイクロ秒となる。許容誤差の設定は、一例として、図１１に示す許容誤差設定部１２が、インバータの周波数情報を取得して、許容誤差情報が記録されているメモリ１０２のレジスタの値を更新することで実現される。許容誤差設定部１２は周波数情報を、通信部１１３を介して被制御装置であるインバータから取得してもよいし、別の制御装置から有線または無線により周波数情報を取得してもよい。許容誤差設定部１２は、ハードウェアあるいはＣＰＵ１０１上で実行されるソフトウェアで実現される機能ブロックである。ハードウェアの場合は、当該ハードウェアはペリフェラル１０３の一部でもよいし、これとは別にバス１０４に接続された別の回路でもよい。
【００３３】
図４は、本発明の第１の実施形態に係わる制御装置の動作の別の例を示すフローチャートである。
【００３４】
制御装置は、図１１に示すＣＰＵ使用率を計算する使用率計算部１５を持ち、本フローの動作では、これを利用して第１の処理の実行是非を判断しようとするものである。ＣＰＵ使用率とは、実行中のプログラムが、ＣＰＵの処理時間を占有している割合を指す。一例として、ペリフェラルとしてのＲＴＣ（リアルタイムクロック）を、Ｉ２Ｃを介して用いることで、ＣＰＵ使用率の測定する方法が考えられる。ＣＰＵ使用率は定期的に計算してメモリに書き込んでも良いし、ＣＰＵ１が任意のトリガによる割り込みを受け付けたときに計算してもよい。
【００３５】
ＣＰＵ１０１は、任意のトリガによる割り込みを受けると、第１の処理を実行するに先立ち、メモリ１０２に記録されている許容誤差情報（たとえば許容ＣＰＵ使用率）を取得する（Ｓ２１）。
【００３６】
次に、ＣＰＵ１０１は、現在のＣＰＵ使用率を、メモリのレジスタから読み出すことで、判断情報として取得する（Ｓ２２）。ＣＰＵ使用率計測部から直接、ＣＰＵ使用率を取得してもよい。
【００３７】
現在のＣＰＵ使用率が、許容誤算範囲内であれば、たとえば許容ＣＰＵ使用率以下であれば、（ＹＥＳ）、続けてＣＰＵ１０１は、第１の処理を実行して（Ｓ２４）、本フローを終了する。許容誤差範囲外であれば、たとえば現在のＣＰＵ使用率が、許容ＣＰＵ使用率より大きければ（ＮＯ）、第１の処理を実行せずに、本フローの処理を終了する。
【００３８】
このようにＣＰＵ使用率が許容誤差範囲内にある場合にのみ、第１の処理を実行することで、第１の処理の実行を所望のタイミング範囲内で行うことが期待できる。
【００３９】
上述した例ではＲＴＣを利用してＣＰＵ使用率を測定する場合を示したが、以下、ＣＰＵ使用率を推定により取得する方法の例を示す。一例として、ＣＰＵで行う高優先処理（第１の処理より優先度が高い）が通信である場合、その通信量からＣＰＵ使用率を推定することができる。例えば一定時間の送受信パケット数をカウントする通信量測定部をＣＰＵ使用率計算部として設ける。通信量測定部は、ハードウェアまたはＣＰＵ１０１上で実行されるソフトウェアで実現される機能ブロックである。予め送受信パケット数とＣＰＵ使用率の関係を、関数化あるいはテーブル化しておく。通信量測定部は、一定時間毎に送受信パケット数を計算してメモリ内の所定のレジスタに書き込むことで、レジスタの値を更新する。ＣＰＵは当該レジスタから取得した送受信パケット数に応じたＣＰＵ使用率を、関数またはテーブルに基づき求める。
【００４０】
図５は、本発明の第１の実施形態に係わる制御装置の動作のさらに別の例を示すフローチャートである。本フローの処理では、トリガの受け付け時（トリガが待機状態から実行状態に遷移した時）に、ＣＰＵで第１の処理よりも優先度の高い高優先処理が実行されている場合には、第１の処理の実行を見送り、そうでない場合は、第１の処理を実行する。
【００４１】
ＣＰＵ１０１は、任意のトリガにより、第１の処理を実行するに先立ち、高優先処理実行情報を判断情報として取得する（Ｓ３１）。高優先処理実行情報は、高優先処理が実行中であるか否かを特定する情報である。この情報が、高優先処理が実行中でないことを示していれば（ＹＥＳ）、ＣＰＵ１０１は、第１の処理を実行し（Ｓ３３）、本フローの処理を終了する。一方、高優先処理が実行中であることを示していれば（ＮＯ）、ＣＰＵ１０１は、第１の処理を実行することなく、本フローの処理を終了する。
【００４２】
ここで高優先処理実行情報の設定方法を説明する。高優先処理実行情報は、たとえばフラグの形式を有し、メモリ内に設けた１ビット以上の領域を有するレジスタに格納される。例えば高優先処理が通信処理の場合は、通信開始時に、フラグを設定し（オンにし）、通信処理終了時に解除する（オフにする）ことで、レジスタのフラグを参照すれば、通信処理が実行中であるか判断することができる。高優先処理実行情報の設定は、図１１に示す高優先処理監視部１６が行い、高優先処理監視部１６は、ハードウェア、あるいはＣＰＵで実行されるソフトウェアの機能ブロックとして実現される。
【００４３】
ＣＰＵの処理状況は時々刻々と変化するため、ＣＰＵ使用率及びこれに準ずる情報の取得（図４のＳ２１等）と、高優先処理実行情報の取得（図５のＳ３１等）は、第１の処理を実行する直前に実施することが望ましい。また、ＣＰＵ使用率及びこれに準ずる情報は、定期的に計算されるようにし、第１の処理の実行是非の判定時に最新の値を使用、または過去の値を用いた平均値（単純平均、移動平均等）、過去Ｘ回分の値の中央値、最頻値、最大値等の統計値を使用してもよい。
【００４４】
また、一回当たりのＣＰＵ使用率を測定する期間は、高優先処理の実行状況を検出するために十分短い期間である必要がある。一例として、高優先処理が通信処理である場合には、測定期間はＣＰＵの動作周波数にも依存するが、ナノ秒〜マイクロ秒のオーダが望ましい。
【００４５】
また、第１の処理と優先度が同じかそれより小さい処理の実行により、ＣＰＵ使用率が増加している可能性がある。そのような処理については、予め個別に実行中のＣＰＵ使用率を処理別に測定して記憶する、または、そのような優先度が同じかそれより小さい処理が実行中であることを示すフラグを設定しておく。そして、ＣＰＵ使用率を取得する際には、当該フラグを参照し、第１の処理と優先度が同じかそれより小さい処理のＣＰＵ使用率を、現在のＣＰＵ使用率から差し引いた値を、実効ＣＰＵ使用率（判断情報）として使用してもよい。このように計算した実行ＣＰＵ使用率は、優先度の高い処理の実行に基づくＣＰＵ使用率を表す。
【００４６】
以上、本発明の第１の実施形態によれば、第１の処理を実行する直前に現在の基準時刻と目標時刻との差分を確認して、差分が許容誤差範囲内であれば、目的の処理（第１の処理）を実行する。これにより、第１の処理が被るＣＰＵ処理ジッタの影響を考慮しつつ、第１の処理を目標時刻に精度よく合わせて、またはその許容範囲内で実行することができる。実行時刻の目標時刻に対する精度は、許容誤差範囲の設定により、目的の処理が実行される確率と引き換えに向上させることができる。許容誤差範囲を超える場合には目的の処理が実行されないため、第１の処理が独立して動作するＰＷＭのようなハードウェアに対する命令の場合に特に有効である。
【００４７】
また、ＣＰＵ使用率あるいはこれに準ずる情報に応じて、ＣＰＵ使用率が許容値を超えている場合は、第１の処理を実行しないことで、第１の処理の実行タイミングを安定化することができる。また、高優先度処理が実行されている場合にも、第１の処理を実行しないことで、第１の処理の実行タイミングを安定化することができる。
【００４８】
このように、本実施形態によれば、ＣＰＵの処理ジッタの影響による実行タイミングの遅延を低減することができる。特に、本実施形態は、ＣＰＵにおいて高い優先度の処理がブラックボックス化されて実行されている場合に有効である。
【００４９】
（第２の実施形態）
第１の処理のトリガを発生させるために、カウントダウンタイマを使うことで、目標時刻と第１の処理を実行する時刻の差分を小さくすることができる。カウントダウンタイマは、一例として、ハードウェア（後述する図７参照）、あるいはＣＰＵ上で動作するソフトウェアとして実現されることができる。カウントダウンタイマは、設定された時間が経過すると、ＣＰＵ１０１への割り込みを発生させる。
【００５０】
図６に本発明の第２の実施の形態におけるタイマの時間設定及びその開始手順を示す。
【００５１】
まずＣＰＵ１０１は、任意のトリガを受け付けると、メモリ１０２に記録されている目標時刻を取得する。ただし、前述のパルス波出力タイミング調整で例に挙げたように、目標時刻は予め一意に決定されていなくてもよく、現在の基準時刻とパルス周期から目標時刻を決定するなど、動的に決定してもよい（Ｓ４１）。
【００５２】
次に、ＣＰＵ１０１は、ＣＰＵ使用率をメモリから取得し（Ｓ４２）、現在の基準時刻（Ｓ４３）をメモリから取得する。ＣＰＵ使用率の取得と現在の基準時刻の取得については順番が入れ替わってもよい。現在の基準時刻を先に取得する場合、ＣＰＵ使用率の取得に要する時間を予め測定し、この測定した時間に基づき、先に取得された現在の基準時刻を補正してもよい。
【００５３】
ＣＰＵ１０１は、取得された現在の基準時刻から、カウントダウンタイマに設定する時間を計算し、計算した時間をカウントダウンタイマに設定する（Ｓ４４）。設定する時間は、一例として、取得した現在の基準時刻から目標時刻までの差分から、ＣＰＵ使用率に応じた調整量を差し引いた値とする。
【００５４】
調整量は以下のようにした取得できる。予めＣＰＵ使用率とＣＰＵ処理ジッタの関係を測定して、調整量とＣＰＵ使用率の関係を関数化あるいはテーブル化しておく。ステップＳ４２で取得されたＣＰＵ使用率を、関数あるいはテーブルにより調整量に換算する。これにより、ＣＰＵ使用率に応じた調整量を取得できる。
【００５５】
ＣＰＵ１０１は、このようにして計算された時間をカウントダウンタイマに設定したら、カウントダウンタイマを開始させる（Ｓ４５）。カウントダウンタイマは、設定された時間が経過すると、ＣＰＵ１０１への割り込みを発生させる。ＣＰＵ１０１は、当該トリガ（割り込み）を、たとえばその優先度に応じて処理し、第１の処理を実行する。
【００５６】
以下、カウントダウンタイマを使用した制御方法の具体例として、パルス波出力タイミング調整方法を説明する。本具体例を説明するための図として、本実施形態に係る制御装置の例を図７に示す。図３に示した制御装置のペリフェラルにタイマ１１４が追加されている。
【００５７】
タイマ１１４は、図１３に示すように、前述したカウントダウンタイマ１１４ａに加えて、周期的にパルス波出力タイミングを調整するために周期タイマ１１４ｂを有する。周期タイマ１１４ｂから周期的に周期トリガが発生し、ＣＰＵは周期トリガ（周期割り込み）を受けてカウントダウンタイマに設定するタイマ値を計算し、計算したタイマ値をカウントダウンタイマに設定し、カウントダウンタイマを起動させる。カウントダウンタイマがタイムアウトすると、カウントダウンタイマからＣＰＵへのトリガが発生させられ、ＣＰＵはトリガを受けて、第１の処理を実行する。ただし、カウントダウンタイマを設定及び開始する方法としては、このような周期タイマを用いた方法に限定されない。
【００５８】
図８に、本実施形態に係る制御装置の動作シーケンスを示す。各機能ブロックの振る舞いがシーケンスとして示されている。縦に伸びる矢印付の実線は、第１の処理の実行（ここではＰＷＭに伸びる矢印）に至るまでに行うＣＰＵ１０１の制御のタイミングを表したものである。
【００５９】
ＣＰＵ１０１は、周期タイマからの周期トリガにより、図６で示した目標時刻情報の代わりに、パルス周期情報Ｔを取得し（図８では省略）、ＣＰＵ使用率ｕ１を取得し（Ｓ５１）、現在の基準時刻τ１を取得する（Ｓ５２）。この例ではＣＰＵ使用率をＣＰＵ使用率測定部から直接取得しているが、メモリから取得する構成も可能である。
【００６０】
目標時刻は、例えば（２）式で計算される（Ｓ５３）。なお、図８ではオフセットは０の例を示している。
（目標時刻ｔ１）＝（現在の基準時刻τ１）＋（パルス周期Ｔ）−（（現在の基準時刻τ１）％（パルス周期Ｔ））＋（オフセットδ）
・・・式（２）
【００６１】
カウントダウンタイマの設定時間は、例えば（３）式で計算される（Ｓ５４）。
（タイマ設定時間）＝（目標時刻ｔ１）−（現在の基準時刻τ１）−（タイマ調整量α１）
・・・式（３）
【００６２】
タイマ調整量α１は、上述したように、ＣＰＵ使用率ｕ１を関数またはテーブル等に基づき換算して得ることができる。
【００６３】
カウントダウンタイマに時間を設定し、当該タイマを開始させると、（ｔ１−τ１−α１）経過後、カウントダウンタイマがタイムアウトし、トリガを発生させる。図８の例では、カウントダウンタイマが発生させた割り込みを、そのトリガ発生からΔ１経過後にＣＰＵ１０１が処理開始しており（Ｓ５５）、目標時刻ｔ１に対して、ＣＰＵ処理ジッタ（Δ１−α１）だけ、遅延している。すなわち、第１の処理であるパルス波出力の停止及び開始が、目標時刻ｔ１に対して誤差（Δ１−α１）で実行されている。ＣＰＵ１０１が優先度の高い処理を行っている場合、それより優先度の低い第１の処理の割り込み（カウントダウンタイマの割り込み）は待機させられ、割り込みの実行開始が遅延されたり、割り込みの処理そのものが遅延する場合がある。なお、図ではカウントダウンタイマからＰＷＭに直接矢印が延びているが、これはカウントダウンタイマからのトリガがＣＰＵ１０１で処理され、ＣＰＵ１０１から第１の処理の実行としてＰＷＭが制御されることを表したものである。
【００６４】
図８の右には、２度目の第１の処理の実行に対するシーケンスが示されている。この例では、ＣＰＵ使用率ｕ２が、１度目のシーケンスのときのＣＰＵ使用率ｕ１よりも小さく、それに応じて、タイマ調整量α２も、タイマ調整量α１より小さいことが示されている。また目標時刻ｔ２よりも｜Δ２−α２｜だけ早く、第１の処理が行われている。
【００６５】
なお、各計算処理遅延（目標時刻の計算処理、タイマ設定時間の計算処理など）を予め測定あるいは所要クロック数から求めておき、これに基づきタイマ設定時間を補正してもよい。
【００６６】
なお、ＣＰＵ使用率の測定は、上述したように、定期的に行ってもよく、過去に取得された１回以上の値の統計値を、実効ＣＰＵ使用率として使用してもよい。統計値は、平均値（単純平均、移動平均等）、過去Ｘ回分の値の中央値、最頻値、最大値などがある。ＣＰＵ使用率の取得頻度が高いほど、ＣＰＵ処理ジッタの影響を正確に推定することができるが、過度のＣＰＵ使用率の取得は、これ自体がＣＰＵ使用率を増加させる要因になる可能性がある。そこで、予めＣＰＵ使用率の取得頻度とＣＰＵ処理ジッタの推定精度の関係を測定により明らかにし、所要の推定精度を満たすＣＰＵ使用率の取得頻度を設定してもよい。
【００６７】
また、第１の処理よりも優先度が同じかもしくはそれ以下の処理により、ＣＰＵ使用率が増加している可能性がある。そのような処理について、前述のように予め個別に実行中のＣＰＵ使用率を測定して記憶しておき、また、第１の処理よりも優先度が同等以下の処理が実行中であることを示すフラグを設定しておく。実運用中にはＣＰＵ使用率を取得する際に、フラグを参照し、該当する処理のＣＰＵ使用率を差し引いた値を、実効ＣＰＵ使用率として使用してもよい。
【００６８】
なお、ＣＰＵ使用率を運用中に取得できない場合、予めＣＰＵ使用率とＣＰＵ処理ジッタの関係を測定し、いかなるＣＰＵ使用率になってもＣＰＵ処理ジッタの影響が最小化されるように固定のタイマ調整量を設定してもよい。例えば、ＣＰＵ使用率が最小の場合と最大の場合のＣＰＵ処理ジッタの平均値を採用することで、第１の処理の実行時刻の目標時刻に対する最大誤差を低減する一定の効果が得られる。
【００６９】
以上、第２の実施形態に係わる制御装置によれば、目的の処理が受けるＣＰＵ処理ジッタの程度を予測することでＣＰＵ処理ジッタの影響を補正することが可能で、ＣＰＵ処理ジッタの程度が許容値を超える場合には、目的の処理を実行しないことにより、目的の処理の実行タイミングを安定化させることができる。
【００７０】
また、第１の実施形態で述べた第１の処理の実行直前の時刻の確認に併せて、トリガにカウントダウンタイマを使うことで第１の処理を目標時刻に近い時刻で実行する可能性を向上させることができる。しかし高優先処理の実行により第１の処理のタイミングはＣＰＵ処理ジッタの影響を被る。そこで、ＣＰＵ処理ジッタの程度を予測してカウントダウンタイマの設定に反映することで、第１の処理が被るＣＰＵ処理ジッタの影響を緩和することができる。
【００７１】
また、第１の処理と実行優先度が同じかそれ以下の別の処理が実行されている場合、第１の処理は必ずしもＣＰＵ使用率に比例した程度のＣＰＵ処理ジッタの影響を受けない。そこで、第１の処理と実行優先度が同じかそれ以下の別の処理のＣＰＵ使用率を予め個別に測定しておき、その実行状況に応じて現在のＣＰＵ使用率から差し引くことで、実効ＣＰＵ使用率を算出し、より精度よくＣＰＵ処理ジッタの影響を緩和することができる。
【００７２】
尚、運用中にＣＰＵ使用率を測定できない場合でも、予め適切なタイマ調整量の固定値を設定しておくことで、ＣＰＵ使用率の影響を緩和する一定の効果が得られる。
【００７３】
（第３の実施形態）
図９は、本発明の第３の実施形態に係わる制御システムとして位相制御システムの例を示す。この制御システムは、本発明の第１の実施形態で説明した制御装置と被制御装置の組を２つ備える。すなわち制御装置１と被制御装置１の組と、制御装置２と被制御装置２の組が示される。図示の例では、制御装置と被制御装置を２組表示しているが、２組以上であってもよい。
【００７４】
制御装置１と被制御装置１は、図７に示した制御装置と被制御装置と同様であるため、拡張または変更された処理を除き重複する説明を省略する。制御装置２と被制御装置２も、図７に示した制御装置と被制御装置と同様であるため、各ブロックの番号を２０１〜２０４、２１１〜２１４，２２１〜２２２に振り直して表示するとともに、拡張または変更された処理を除き重複する説明を省略する。
【００７５】
このシステムでは、各制御装置の通信部１１３、２１３を介して各制御装置を時刻同期させることで、各被制御装置を同期制御する。各制御装置を時刻同期させるとは、各制御装置の基準時刻を同期させることである。図示の例では、各制御装置を時刻同期させて、ＰＷＭ１１１、２１１によるパルス波出力を同期させ、これにより各被制御装置を同期制御する。例えば被制御装置がインバータであれば、各被制御装置はそれぞれ制御装置のＰＩＯ１１２、２１２から入力されるパルス波に位相を合わせて交流電力を出力することで、複数インバータの交流出力は高い力率で合成される。これは特に、交流電力出力同期のリファレンスとなる系統と独立したインバータシステムにおいて有効である。たとえば第１または第２の実施形態の目標時刻を各制御装置で一致させつつ、時刻同期を図ることで、各被制御装置の位相を同期させることができる。
【００７６】
図１０は、本発明の第３の実施形態に係わる制御システムとして無線センサネットワークシステムを示す。
【００７７】
このシステムは、２台の制御装置として、通信装置１と通信装置２を備える。ただし、本システムは３台以上の通信装置で構成されてもよい。本システムでは、各通信装置で、必要なときのみ通信部を起動して、データの送受信を行うスリープ制御を行う。
【００７８】
通信装置１では、ＣＰＵ３０１、メモリ３０２、ペリフェラル３０３がバス３０４に接続されている。ペリフェラル３０３は、通信部３１３、タイマ３１４、インターフェース３１５、アンテナ３１６を備える。同様に、通信装置２は、ＣＰＵ４０１、メモリ４０２、ペリフェラル４０３がバス４０４に接続されている。ペリフェラル４０３は、通信部４１３、タイマ４１４、インターフェース４１５、アンテナ４１６を備える。これまで述べてきた制御装置と同様の名称のブロックの動作は、基本的に同様であるため、拡張または変更された処理の除き、重複する説明を省略する。インターフェース３１５、４１５は、外部とのインターフェースであり、外部から有線または無線でアナログまたはデジタルのデータを取得する。たとえば生体に装着したセンサからセンシングデータを取得する。
【００７９】
ここでは、図９に示したインバータシステムと同様に、通信部３１３、４１３間の通信（ここでは特に無線通信）を用いて時刻同期が行われて。所定の時刻になるとデータの送受信を行うために、通信部３１３、４１３を起動する。そして、送受信を終えると、通信部３１３、４１３の電源供給を停止あるいは低消費電力モードに移行する制御を実行し、消費電力を抑制する。
【００８０】
当該システムの場合、各々の通信装置が持つ基準時刻の同期が、一定の正確性を保っているとしても、これに基づいて通信部３１３、４１３を制御する際に、制御遅延が生じ、これにより他の通信装置の送受信の時刻に起動が間に合わないと、通信が失敗してしまう可能性がある。この場合、その間の起動中に消費される電力が無駄になってしまう。また、通信の失敗への対策として早い時刻に通信装置を起動する命令を実行すると、低消費電力化の効果が低下する。
【００８１】
そこで、本実施形態により、起動して通信を実施する時刻を目標時刻とし、第１の処理を通信処理として、適切なタイミングで通信部を起動し、データの送信または受信を実行する。目標時刻に対して所定時間以上の遅延が見込まれる場合には、通信部を起動しないようにする。これにより、より効果的に低消費電力化を図ることができる。尚、遅延が見込まれるとして通信部を起動しなかった場合には、次の機会でデータの送受信を行えばよい。このような制御を行うことで、少なくとも一方の通信装置の通信部を無駄に起動することを阻止できるため、消費電量化の効果を高めることができる。
【００８２】
通信部３１３および４１３間の通信は、同期する仕組みを備えていればいかなる方式でもよく、有線／無線を問わない。同期についても方式は問わないが、被制御装置間を同期制御するのに十分な同期精度を達成する方式である必要がある。通信方式と同期方式については、例えば有線通信ではＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）が双方向通信により数ミリ秒の精度を得られることが知られている。また、無線ＬＡＮとして知られるＩＥＥＥ８０２．１１ではＴＳＦ（Ｔｉｍｉｎｇ  Ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  Ｆｕｎｃｔｉｏｎ）でビーコンフレームが時刻情報を配布する片方向通信により数マイクロ秒の同期精度が得られる。被制御装置としてインバータを想定すると、インバータ間の５０Ｈｚ交流出力位相を同期させるのに、無線ＬＡＮの同期精度は十分である。
【００８３】
なお、各実施形態で述べた制御装置は、コンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、制御装置は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、ＣＤ−ＲＯＭなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。また、ＢおよびＣは、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスクもしくはＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒなどの記憶媒体などを適宜利用して実現することができる。
【００８４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【図１】
2015056039.tif 000003
【図２】
2015056039.tif 000004
【図３】
2015056039.tif 000005
【図４】
2015056039.tif 000006
【図５】
2015056039.tif 000007
【図６】
2015056039.tif 000008
【図７】
2015056039.tif 000009
【図８】
2015056039.tif 000010
【図９】
2015056039.tif 000011
【図１０】
2015056039.tif 000012
【図１１】
2015056039.tif 000013
【図１２】
2015056039.tif 000014
【図１３】
2015056039.tif 000015