(57)【要約】【課題】  設定周期ごとに実行する制御タスクの実行を確保する。【解決手段】  設定周期で割込み信号１０を発生する割込み手段２と、この割込み信号１０に応答して制御タスク３の実行を制御する実行制御手段１と、制御タスク実行時に制御タスク以外の他のタスクの割込みを禁止する手段１とを有するデジタル制御装置において、制御タスク３は、設定周期をパラメータに含む演算処理を行う制御タスク３ａと制御タスク３ａの演算結果を用いて演算処理を行う制御タスク３ｂとに区分され、実行制御手段１は、設定周期Ｔ内に制御タスク３が終了しないタスクオーバーランを検出したとき、次に実行する制御タスクの少なくとも制御タスク３ａを設定周期Ｔ内に実行させる。【選択図】  図１  
2005301812.tif 000002
【特許請求の範囲】
【請求項１】
設定周期ごとに実行する制御タスクの実行を制御する実行制御手段と、前記制御タスクの実行時に他の制御タスクおよび他のタスクの割込みを禁止する手段とを有するデジタル制御装置において、
前記制御タスクは、前記設定周期に同期して実行を確保すべき第一のタスク部と、該第一のタスク部以外の第二のタスク部とに区分され、
前記実行制御手段は、前記設定周期内に前記制御タスクが終了しないタスクオーバーランを検出したとき、次に実行する前記制御タスクの少なくとも前記第一のタスク部を前記設定周期内に実行させることを特徴とするデジタル制御装置。
【請求項２】
前記第一のタスク部は、前記設定周期をパラメータに含む演算処理を行うタスク部であり、前記第二のタスク部は、前記第一のタスク部の演算結果を用いて演算処理を行うタスク部であることを特徴とする請求項１に記載のデジタル制御装置。
【請求項３】
前記実行制御手段は、タスクオーバーランに係る前記制御タスクの第二のタスク部の実行が完了するまで、次に実行する前記制御タスクの割込みを禁止し、前記第二のタスク部の終了後に次に実行する前記制御タスクの前記第一のタスク部のみを実行させることを特徴とする請求項１に記載のデジタル制御装置。
【請求項４】
前記実行制御手段は、タスクオーバーランに係る前記制御タスクの第二のタスク部の実行中に、次に実行する前記制御タスクの割込み信号が入力されたとき、前記第二のタスク部の実行を中断して、前記次に実行する前記制御タスクの第一のタスク部のみを実行させることを特徴とする請求項１に記載のデジタル制御装置。
【請求項５】
前記第一のタスク部の終了後、前記中断していた第二のタスク部を再開することを特徴とする請求項４に記載のデジタル制御装置。
【請求項６】
前記タスクオーバーランは、前記制御タスクの割込み信号によりセットされ、該割込み信号に対応するタスクの終了時にリセットされる保持回路を用いて検出され、
前記実行制御手段は、次に実行する前記制御タスクの割込み信号が入力されたとき、前記保持回路の内容によって前記タスクオーバーランを検出することを特徴とする請求項１ないし５の何れかに記載のデジタル制御装置。
【請求項７】
前記タスクオーバーランは、前記割込み信号により計数が増加し、前記制御タスクの終了時に計数が減少するカウンタ回路を用いて検出されることを特徴とする請求項１ないし５のいずれかに記載のデジタル制御装置。
【請求項８】
前記タスクオーバーランは、前記制御タスクの起動時にメモリ上にセットされた前記割込み信号の信号数を前記制御タスクの終了時に減少させて、判定するものであることを特徴とする請求項１ないし５のいずれかに記載のデジタル制御装置。
【請求項９】
前記割込み信号は、タイマによって周期的に発生され、
前記タスクオーバーランは、前記タイマの経過時間と前記設定周期との比較結果である実行開始時刻の未経過、一致、経過の三状態を出力するコンパレータにより検出されるものであることを特徴とする請求項１ないし５のいずれかに記載のデジタル制御装置。
【請求項１０】
タイマの時刻を逐次読み出し、該読み出された時刻と予め設定された起動時刻との比較により設定周期毎に制御タスクを実行し、該制御タスク実行時に該制御タスク以外の他のタスクの実行が行われない実行制御手段とを有するデジタル制御装置において、
前記制御タスクは、前記設定周期を計算パラメータに含む演算処理を行う第一のタスク部と前記第一のタスク部の演算結果を用いて演算処理を行う第二のタスク部とに区分されてなり、
前記実行制御手段は、前記設定周期内に前記制御タスクが終了しないタスクオーバーランを検出したとき、次に実行する前記制御タスクの少なくとも前記第一のタスク部を前記設定周期内に実行させることを特徴とするデジタル制御装置。
【請求項１１】
請求項１乃至９の何れかに記載のデジタル制御装置を用いたエンジン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御タスクを周期的に実行するデジタル制御装置およびこれを用いたエンジン制御装置に関する。
【背景技術】
【０００２】
制御タスクを周期的に実行する制御装置においては、一般に、ＣＰＵに制御タスクを起動するタイマを設け、タイマにより周期的に発生する割込み信号のタイミングに制御タスクを実行することで、周期的な制御タスクの実行を実現している。このような制御装置の適用先としては、さまざまな制御対象が考えられるが、例えばアクチュエータ機構の制御装置であれば、一般に制御対象であるアクチュエータ機構の状態量をセンサにより計測し、計測値をデジタル化してＣＰＵに取り込んだものと、ＣＰＵ内で算出した制御指令値を比較することで制御演算を行い、その結果を操作量として制御対象に出力し反映することで機構の制御を行うという、デジタル方式の制御装置が広く用いられている。
【０００３】
このようなデジタル制御装置では、制御タスクの実行が制御周期よりも短い時間で確実に終了できるように、制御周期に対して処理能力に十分な余裕を持たしておく必要がある。その上で各制御タスクが所定の時間間隔で適切に実行されるよう、各種提案がなされている。
【０００４】
例えば、タスクの終了前に重複して発生する割込み要求の回数を記憶しておき、タスクの優先順序順に記憶した要求回数だけ実行する技術が開示されている（特許文献１）。このようなタスク起動手段の工夫により、演算負荷を平均化し、必要な制御タスクを公平に順次実行していくことができる。
【０００５】
一方で、このようなタスク配分による調整でも負荷変動を吸収し切れずＣＰＵ処理が間に合わない場合には、制御タスクの処理抜けが発生したり、動作遅れが発生するなど、正常な制御が続行できなくなる可能性がある。このような問題の発生を防止するために、例えば、プログラム内の各タスクの処理の初めにカウンタを加算し、終了時に減算することにより、プログラムの実行状態を確認する技術が開示されている（特許文献２）。この技術によればプログラムが正常に実行されている場合はカウンタの値は変わらず、正常に実行されなかった場合はカウンタの値が変化するため、このカウンタの値をチェックすることで制御タスクのオーバーランによる処理抜けや遅れなどの実行状況を確認することができる。また、必要に応じてリセットを行うことでプログラムの暴走を防止することができる。
【０００６】
また、ＣＰＵの演算負荷が高くなった場合にも制御を継続することができる技術として、補正制御プログラムと演算負荷検出手段とを設け、演算負荷を検出して該演算負荷がしきい値よりも大きい場合には、補正制御プログラムの実行を停止するようにした技術が開示されている（特許文献３）。
【０００７】
なお、計測しやすい状態量、例えば変位のみをセンサにより計測し、その他の状態量、例えば速度や加速度、外乱などといった量を状態観測器を用いて計算により求める状態観測器に関する技術が開示されている（非特許文献１）。
【０００８】
【特許文献１】特開平６−２００８２０号公報
【特許文献２】特開平５−１５８７４５号公報
【特許文献３】特開２００２−３６６３７４号公報
【非特許文献１】白石昌武著、入門現代制御理論、初版、日刊工業新聞社、１９９５年３月２８日発行、ｐ１０９―
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、前述のようなタスク起動手段を有するデジタル制御装置にあっては、以下のような問題点があった。まず、タスク起動のスケジューリングによって負荷を平均化するため、定常的にタスク実行時間が限界に近い場合には、周期的に実行しなければならない制御タスクが次々と先送りされてしまい、制御タスク実行の周期性が失われやすい。結果として、リアルタイム性を損なう恐れがある。特に処理遅れが大きくなりタスクの処理抜けが生じてしまうと、次の周期までタスクは起動されないためタスクの実行周期が一時的に２倍になってしまう。したがって、制御対象の位置の状態量に基づく速度算出のように、時間の長さ（実行周期）が計算パラメータに含まれる、いわゆる時間依存処理の場合には、計算結果にデータの欠損が生じ、あるいは計算結果が著しく誤った値となることがあり、制御に悪影響を及ぼすことがある。
【００１０】
次に、割込みイベント数のカウント処理を含むような場合にはカウント漏れを起こしてしまう。また、各タスクの優先度処理や起動要求の判定処理など複雑な処理を必要とするため、タスク起動処理にかかるＣＰＵ負荷が大きくなってしまい、実際の制御演算に割り振るべき処理能力が減少してしまう。
【００１１】
一方、前述のようなプログラムの実行状況を確認する手段を有するデジタル制御装置にあっては、特に定常的にタスク実行時間が限界に近い場合には、本来は制御処理を継続することが望ましい状況であってもタスクオーバーランの検出によって強制的に処理が中断される場合があり、動作継続可能な負荷変動の許容幅が狭くなってしまうという問題点があった。
【００１２】
本発明は、設定周期ごとに実行する制御タスクの実行を確保することを課題とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するため、本発明は以下の手段を有することを特徴とする。
【００１４】
本発明のデジタル制御装置は、設定周期ごとに実行する制御タスクの実行を制御する実行制御手段と、前記制御タスクの実行時に他の制御タスクおよび他のタスクの割込みを禁止する手段とを有するデジタル制御装置において、前記制御タスクは、前記設定周期に同期して実行を確保すべき第一のタスク部と、該第一のタスク部以外の第二のタスク部とに区分され、前記実行制御手段は、前記設定周期内に前記制御タスクが終了しないタスクオーバーランを検出したとき、次に実行する前記制御タスクの少なくとも前記第一のタスク部を前記設定周期内に実行させることを特徴とする。
【００１５】
これにより、制御タスクがタスクオーバーランしたときでも、設定周期をパラメータに含む演算処理を行う第一のタスク部は設定周期内に必ず実行されるので、データに欠損を生じることを防止でき、演算結果が著しく誤った値になることを防ぐことができる。その結果、この演算結果を用いて演算処理が行われる第二のタスク部を含む制御タスクの制御精度が向上する。また、制御タスク実行時にその制御タスク以外の他のタスクの割込みを禁止する手段を有するので、第一のタスク部あるいは第二のタスク部の実行時に他のタスクが実行されないから、制御タスクの実行を確保できる。
【００１６】
この場合において、第一のタスク部は、設定周期をパラメータに含む演算処理を行うタスク部であり、第二のタスク部は、第一のタスク部の演算結果を用いて演算処理を行うタスク部とすることができる。
【００１７】
また、具体的に、実行制御手段は、タスクオーバーランに係る制御タスクの第二のタスク部の実行が完了するまで、次に実行する制御タスクの割込みを禁止し、第二のタスク部の終了後に次に実行する制御タスクの第一のタスク部のみを実行させることができる。これにより、処理中の第二のタスク部の実行を完了させることができ、その制御タスクの処理結果を利用できる。また、次に実行する制御タスクの第一のタスク部のみを実行させることができるので、第一のタスク部の実行回数が確保でき、時間依存性を有するデータの欠損を防止することができる。なお、前の制御タスクがオーバーランした時間分だけ、次に実行する制御タスクの時間依存性データに誤差が生ずるが、このような誤差を排除したい場合は、第二のタスク部の実行中に、次に実行する制御タスクの割込み信号が入力されたとき、前記第二のタスク部の実行を中断して、前記次に実行する前記制御タスクの第一のタスク部のみを実行させるようにすることができる。これにより、第一のタスク部の実行を設定周期に等周期に保持できるから演算処理結果の誤差を排除することができる。この場合、第一のタスク部の終了後、中断していた第二のタスク部を再開すことができる。これにより、前の第二のタスク部の実行が確保でき、制御データの欠損を防止できる。
【発明の効果】
【００１８】
本発明によれば、設定周期ごとに実行する制御タスクの実行を確保でき、時間依存性データの欠損を防ぐことができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態を図面を用いて説明する。
【００２０】
（実施の形態１）
図１に本発明の一実施形態のデジタル制御装置に係る制御タスクの実行制御のフローチャートを示し、図２に本実施形態のデジタル制御装置のブロック構成図を示す。図２に示すように、デジタル制御装置は、ＣＰＵ１と、設定周期で割込み信号を発生するタイマ２と、制御タスク３が格納されたメモリ４と、入力回路５、出力回路６、タスクオーバーラン検出手段７を有して構成されている。デジタル制御装置の制御対象８は、入力回路５と出力回路６を介してＣＰＵ１に接続されている。また、メモリ４には、制御タスク３のプログラム以外に、一時保存データなどが格納されるようになっており、ＣＰＵ１からアクセス可能に接続されている。
【００２１】
ＣＰＵ１は、制御対象８から入力回路５を介して取り込んだ制御対象の状態量に基づいて制御タスク３により制御演算を実行し、その結果に基づいて出力回路６を介して制御対象８に制御量を出力するようになっている用いて。また、そし、の制御結果は、制御対象８に設けられたセンサにより計測された状態量の計測値が入力回路５介して用いてＣＰＵ１にフィードバックされるようになっている。
【００２２】
また、ＣＰＵ１は、タイマ２から出力される割込み信号１０に応答して制御タスク３の実行を制御するタスク実行制御手段と、制御タスク３の実行時に他のタスクの割込みを禁止する割込み禁止手段を有して構成されている。割込み信号１０は、制御タスク３を開始するトリガとして用いられる。ＣＰＵ１は、制御タスク３に係る割込み信号１０をマスクする機能を有して構成され、マスク命令設定が実行されると割込み信号１０が入力されたとしても、その割込みは無視されるようになっているように設定される。
【００２３】
制御タスク３は、割込み信号１０の設定周期Ｔを計算パラメータに含む演算処理を行う第一のタスク部である制御タスク３ａと、制御タスク３ａの演算結果を用いて演算処理を行う第二のタスク部である制御タスク３ｂとに区分して構成されている。つまり、制御タスク３ａは時間依存タスクであり、制御タスク３ｂは設定周期を計算パラメータに含まない非時間依存タスクである。ここで、時間依存タスクの処理内容の例を説明する。時間依存タスクとは、設定周期をパラメータに含む演算処理であり、特に状態量の演算を例示できる。時間依存タスクの起動が飛ばされた場合、実際の計算周期と計算パラメータ上の時間が一致せず、計算結果が誤った値となり制御に悪影響を及ぼす。例えば、アクチュエータ装置の位置制御のように、制御対象となる物体の運動を制御する場合、制御を行なうためには物体の位置や速度などの状態量を把握する必要がある。ところが、センサにより計測できる状態量の種類には限度があるため、変位のみをセンサにより計測し、例えば速度や加速度、外乱などの量を状態観測器を用いて計算により求めること行われる。この状態観測器は、非特許文献１に記載されているように、制御対象のモデルをセンサの計測値に収束させる処理であり、一般に離散系の微分方程式を表わす行列演算の式として表される。速度等は微分項が含まれるため、式には制御タスクの実行周期が係数として含まれており、実行間隔を正確に管理しないと算出される状態量は誤差を含んでしまうおそれがある。したがって、そのような状態観測器の演算処理を制御タスク３ａに割り当てる。また、他の例としては、プログラムが暴走していないことを確認するためのウォッチドッグタイマ処理が挙げられる。これは正常に動作していることを知らせるために定期的に外部に信号を出力する必要があり、もしタスクの起動が飛ばされた場合には、正常にプログラムが動作していないと判断されてＣＰＵ１がリセットされてしまう。これらのように実行間隔を正確に管理しないと正常動作できない処理を制御タスク３ａに割り当てる。
【００２４】
タスクオーバーラン検出手段７は、タイマ２から割込み信号１０を取り込み、例えばカウンタ回路により割込み信号１０の発生数をカウントアップし、ＣＰＵ１からのアクセスによってカウントダウンするとともに、そのときのカウント値をＣＰＵ１に出力するように構成されている。これにより、ＣＰＵ１は、タスクオーバーラン検出手段７のカウンタ回路にアクセスし、例えばカウント値が「０」か否かにより、制御タスク３が設定周期Ｔ内に終了したか否かを検出できるようになっている。このタスクオーバーラン検出手段７の具体的な実施形態については、後述する。
【００２５】
このように構成される本実施形態のデジタル制御装置の特徴である制御タスクの実行制御手段の詳細構成について、図１に示した制御フローチャートに従って動作とともに説明する。図１に示すように、制御タスクの実行制御手段は、タイマ２から出力される割込み信号１０によって起動される。ステップ３１において、他の制御タスク３または他のタスクの割込みを禁止する。次いで、ステップ３１、３２において、割込みに係る制御タスク３の制御タスク３ａ、３ｂをメモリ４から読み出して順次実行させる。次に、ステップ３３で、タスクオーバーラン検出手段７にアクセスしてオーバーラン検出データを読み出すとともにクリアする。ステップ３４において、読み出したオーバーラン検出データに基づいて、タスクオーバーランの有無を判定し、オーバーランが無ければリターンする。一方、実行中の制御タスク３にオーバーランが有れば、ステップ３５に進んで、次に実行する制御タスク３の制御タスク３ａのみを実行させ、その終了時に割込み許可をしてリターンする。
【００２６】
この動作のタイムチャートを図３に示す。図３（１）は、タスクのオーバーランが無い通常の実行状態を示したものである。太矢印で示す周期的な割込み信号１０に対応して制御タスク３―１、３−２、３−３が起動されている。なお、図中の（ａ）、（ｂ）は、それぞれ制御タスク３ａ、３ｂに対応する。一般に、タイマ割込みによってタスク起動を行なう場合、起動タスクでは多重起動を防止するために処理中は割込みをマスクして割込み禁止状態にする。本実施形態でもプログラムの誤動作を防止し暴走に陥らないようにするために割込み処理中は割込みをマスクしている（図１のステップ３０）。
【００２７】
一方、割込みをマスクして制御タスク３ａ、３ｂを実行する場合、例えば、負荷変動により制御タスク３の実行時間が延びてしまい、設定周期Ｔより長くなってしまうタスクオーバーラン状態が起きることがある。この場合、次回実行する制御タスク３の割込み信号は未だマスクされているため起動されないから、何ら対策を講じないと、その制御タスク３は、丸１周期分飛ばされてしまう。制御タスク３が１周期分飛ばされるため、タスク実行時間の不足やプログラム暴走の危険性は解消される。しかし、その制御タスク３の実行周期が一時的に２倍になってしまい、例えば制御対象の速度算出のように時間の長さが計算パラメータとなる時間依存処理を含む処理では、計算結果が著しく誤った値となり、制御に悪影響を及ぼす。
【００２８】
そこで、本実施形態は、制御タスク３を時間依存制御タスク３ａと非時間依存制御タスク３ｂとに予め分けておき、各制御タスク３の実行終了時にそのタスクのオーバーラン検出を行ない、図１のステップ３４、３５の処理を行うようにしているのである。図３（２）に、タスクオーバーランが生じたときの制御タスク３のタスク起動状況を示す。太実線の矢印の割込み信号に対して、対応する制御タスク３−４が起動される。同図は、その制御タスク３−４の実行時の演算負荷が大きく、設定周期Ｔの間隔よりも処理時間がかかってしまい、タスクオーバーランが生じた場合を示している。この制御タスク３−４の次回の制御タスク３−５のタスク実行のための割込み信号を太点線の矢印で示すが、タスクオーバーランの結果、この割込み信号はマスクされているために制御タスク３−５は起動されない。このタスクオーバーランの有無は、制御タスク３−４の制御タスク３ｂの終了時にタスクオーバーラン検出手段７のデータを読み出し、当該タスクが設定時間Ｔ内、すなわち制御周期の間隔に相当する時間内に処理が終了したか否かにより確認できる。図３（２）の例の場合、次回の制御タスク３−５の割込み信号までに処理が終了しなかったので、タスクオーバーランが発生したことが分かる。この場合、図１のステップ３５に示すように、タスクオーバーランが発生した場合は、り、続けて割込みが無視された次回の制御タスク３−５の制御タスク３ａの部分のみを起動させて、時間依存タスクの周期処理の回数を確保する。言い換えれば、時間依存制御タスク（ａ）については、設定時間Ｔ内の実行を確保するようにしている。における等周期処理を維持する。図２（２）はタスクオーバーランが生じたときのタスク起動状況を図示したものである。
【００２９】
上述したように、図１の実施形態によれば、タスクオーバランがあっても、設定周期Ｔをパラメータに含む制御タスク３ａが設定周期内に必ず実行されるので、時間依存タスクの周期処理の回数を確保できる。その結果、演算結果の誤差を小さくすることができ、その演算結果を用いた制御タスク３ｂの演算精度が向上し、制御精度が向上する。
【００３０】
ここで、本実施形態のをデジタル制御装置を、状態観測器処理に関連してＡ／Ｄ変換処理に適用した場合の動作について説明する。状態観測器の処理に時間依存タスクである制御タスク３ａを適用する。この場合のデジタル制御装置の入出力波形は、例えば図４のように観測される。つまり、タイマ割込み信号１０は、図のように等間隔に入力されるが、制御タスク３は、前回の制御タスク３の終了時刻によって遅延する場合がある。つまり、演算負荷を高めていくと、例えばＡ／Ｄ変換器のＳＯＣ（変換開始）信号が割込み信号１０に対して波形８１のように遅延して観測される。なお、ウォッチドッグタイマのセット出力が同様に遅延して観測される。一方、制御出力値は、波形８１のように遅延があった場合は、タスクオーバーランによって非時間依存タスクである制御タスク３ｂが省略されているので、入力された制御対象の状態量が変化していたとしても、周期８３の制御出力として周期８２の制御出力を引き続き保持して出力する。
【００３１】
（実施形態２）
図５に、本発明の他の実施形態の制御タスクの実行制御のフローチャートを示す。図１の実施形態は、制御タスク実行中に割込み信号をマスクして実行したが、制御タスク３ａを実行する間だけマスクすることによっても、時間依存タスクの周期処理を確保できる。
【００３２】
すなわち、図５に示すように、制御タスクの実行制御手段は、タイマ２から出力される割込み信号１０によって起動される。ステップ５０において、他の制御タスク３または他のタスクの割込みを禁止し、ステップ５１において、割込みに係る制御タスク３の制御タスク３ａのみをメモリ４から読み出して実行させる。  次いで、制御タスク３ａの実行を終了したとき、ステップ５２において割込みを許可する。そして、ステップ５３に進み、今回実行した制御タスク３ａが時間内に終了したか否かを確認するために、タスクオーバーラン検出手段７にアクセスしてオーバーラン検出データを読み出すとともにクリアする。次いで、ステップ５４において、読み出したオーバーラン検出データに基づいて、タスクオーバーランの有無を判定する。この判定が、タスクオーバーラン無しであれば、ステップ５５に進んで、実行中の制御タスク３の制御タスク３ｂを実行してリターンする。ステップ５４の判定が、タスクオーバーラン有りであればリターンする。
【００３３】
このリターンにより、次の制御タスク３の割り込みが出されると、実行制御手段が起動され、ステップ５０にて割込み禁止され、次の制御タスク３の制御タスク３ａが実行される。つまり、ステップ５５における前の制御タスク３ｂの実行に際して、割込み禁止を行っていないから、次の制御タスク３ａの実行が割り込み要求と同時に実行される。すなわち、図１の実施形態と異なり、割込み信号１０をマスクしないか、あるいは制御タスク３ａを実行する間だけマスクするようにする。また、制御タスク３ａの処理終了時に、割り込みを許可した後、タスクオーバーラン有無の検出を行なう。このとき、タスクオーバーラン有りでも、割込み信号１０をマスクしていないので、制御タスク３ａに続く制御タスク３ｂの処理が終了していなくても、次回分の割込み信号１０により制御タスク３ａの処理が開始される。その結果、制御タスク３ａの実行が確保される。一方、前回の制御タスク３ｂの処理が終了していない状態で、次回分の制御タスク３ａの処理が開始された場合、タスクオーバーランを検出して、その制御タスク３ｂを中断していたルーチンへ戻るため、実行時間の調整をしながら時間依存タスクの実行時間は正確に管理できる。
【００３４】
この動作のタイムチャートを図６に示す。太実線の矢印のタイミングに対して割込みが発生し、例えば制御タスク３−１１ａが起動される。この制御タスク３−１１ａが正常に終了すれば、続けて制御タスク３−１１ｂが起動される。つまり、制御タスク３−１１ａの終了時にタスクオーバーラン検出手段７を読み出し、制御タスク３−１１ａが設定周期Ｔに処理が終了しているか否かを確認する（ステップＳ５３）。タスクオーバーランが生じていなければ（ステップ５４）、制御タスク３−１１ｂが起動される（ステップ５５）。
【００３５】
ここで、図６の例によれば、制御タスク３−１１ｂの実行時の演算負荷が大きく、制御タスク３の設定周期Ｔよりも処理時間がかかってしまい、タスクオーバーランが生じている。この場合、本実施形態では、制御タスク３−１１ａの終了時に割込み許可をしているから（ステップ５２）、次の制御タスク３−１２ａのための割込み信号により制御タスク３−１１ｂの実行が中断され、次の制御タスク３−１２ａのみが起動される。その結果、時間依存タスクの等周期の実行が確保される。そして、制御タスク３−１２ａの終了後に、中断していた制御タスク３−１１ｂの退避データが読み出され、残りの制御タスク３−１１ｂ’が実行される。
【００３６】
上述したように、本実施形態によれば、時間依存タスクの制御タスク３−１１ａと、制御タスク３−１２ａの実行時間間隔が設定周期Ｔに等しくなる。その結果、設定周期Ｔを計算パラメータに含む演算結果の誤差を排除できる。
【００３７】
なお、本実施形態のタスク制御を、リアルタイムＯＳを搭載したデジタル制御装置に適用する場合、時間依存タスクの制御タスク３ａは処理中の割込みをマスクし、かつ割込みの優先順位を非時間依存タスクの制御タスク３ｂよりも高くし、制御タスク３ｂは処理中の割り込みを許可しておくことにより、リアルタイムＯＳの機能を活用して少ないステップ数で、本実施形態と同一の機能を実現するプログラムを記述できる。その場合、タイマ割込みベクトルは時間依存タスクの制御タスク３ａを起動するよう設定され、また非時間依存タスクの制御タスク３ｂは制御タスク３ａからソフトウェア割込みで起動させるようにするか、もしくは単なるサブルーチンコールなどで起動するように設定できる。
【００３８】
（実施形態３）
図７に、タスクオーバーラン検出手段７の一実施形態の構成を示す。同図に示すように、タスクオーバーラン検出手段７は、カウンタ回路６１と、バスバッファ６２を有して形成されている。カウンタ回路６１のカウントアップ端子に割込み信号１０が入力され、割込み信号１０が発生するとカウンタ回路６１のカウンタ値が１つ増加する。カウンタ回路６１のカウンタ値は、カウンタ回路６１のデータ出力端子からバスバッファ６２とバス１２のデータバス６５を介してＣＰＵ１に入力されるようになっている。また、バス１２を介してＣＰＵ１からリードライト信号６４が、カウンタ回路６１のカウントダウン端子に入力され、リードライト信号６４の反転信号がバスバッファ６２に入力されている。このように構成されることから、例えば、ＣＰＵ１からライト時に「Ｈ」になるリードライト信号６４がカウンタ回路６１のカウントダウン端子に入力して、カウンタ回路６１にライトアクセスをするとカウンタ値は１つ減少する。また、リードアクセスをすると、バスバッファ６２がアクティブになって、データバス６５にカウンタ値が出力され、ＣＰＵから読み出すことができる。これにより、例えば、タイマ２から出力された割込み信号１０が制御タスク実行中に何回出力されたかが分かる。つまり、制御タスク起動時に割込み信号１０によってカウンタが１増加されているはずなので、制御タスク終了時に一度ライトアクセスして１減少しておき、リードしてみることで、もしゼロが読み出されれば正常に実行できたと判定できる。一方、もし１以上の値が読み出されればタスクオーバーランが発生したと判定できる。
【００３９】
また、本実施形態によれば、仮に、タスクオーバーランが何周期にも渡って発生したとしても、読み出されたカウンタ値の回数だけ時間依存タスクを繰り返し実行し、その演算結果を補正を行なうことが可能である。
【００４０】
なお、１周期以上の遅延は仕様上有り得ない場合であって、タスクオーバーランした割込み回数まで分からなくてもよい場合は、カウンタ回路の代わりにフリップフロップ回路を用いて構成することができる。
【００４１】
（実施形態４）
図８に、本発明の他の実施形態のデジタル制御装置の構成を示す。本実施形態が、図２実施形態と異なる点は、制御タスクを実行する設定周期Ｔを規定するタイマ２をバス１１を介してＣＰＵ１に接続し、タイマ２により計測された現在時刻をＣＰＵ１から読み出し可能に構成されていること、およびタスクオーバーラン検出手段７をソフトウェアで構成している点である。
【００４２】
本実施形態によれば、制御タスクはＣＰＵの初期化後に起動され、メモリ４上に記憶された制御タスク３ａ、３ｂを実行すると同時に、制御タスク起動時のタイマ２の時刻を読み出し、メモリ４上に保存する。ここで必要に応じて、読み出した時刻に設定周期Ｔ分の時間を加算した次の制御タスク起動時刻を予め算出して保存しておいてもよい。
【００４３】
本実施の形態による制御タスクの実行制御動作のタイムチャートを、図３を用いて説明する。ここで、本実施形態では、割込み信号を使用しないので、太矢印は設定周期Ｔに基づいたタスク起動時刻を表している。タスクオーバーランが生じていない状況では、制御タスク３−２の起動時刻から制御タスク３−２の起動時刻を算出しておく。制御タスク３−１の終了後にタイマ２の時刻を繰り返し読み出すことにより、制御タスク３−２の起動時刻を待ち、その起動時刻を過ぎたところで制御タスク３−２の実行を開始する。つまり、本実施形態は、一般にポーリングと呼ばれるタスク起動方法である。同様にして、制御タスク３−３以降も順次起動する。つまり、タイマ２の時刻を逐次読み出し、読み出された時刻と予め設定された起動時刻とを比較して、一致した設定周期毎に制御タスク３が実行される。
【００４４】
一方、図３（２）のように、負荷変動により制御タスク３−４の実行時間が延び、設定周期Ｔよりも長くなって、タスクオーバーランの状態になってしまうと、制御タスク３−４の次の制御タスク３−５の実行開始時刻は、太点線の矢印で示すとおり制御タスク３−４の終了時には既に過ぎてしまう。したがって、制御タスク３−４の終了後にタイマ２の時刻を読み出し、予め保存しておいた次回の制御タスク３−５の起動時刻と比較することにより、タスクオーバーランが生じたことが確認できる。
【００４５】
タスクオーバーランが発生したことを検出した場合は、次の制御タスク３−５については、制御タスク３−５の（ａ）部のみを実行させ、これにより時間依存タスクの周期的な実行を確保する。このように、制御タスクの起動時にはタスクオーバーランの有無にかかわらず、予め保存してあった制御タスクの実行開始時刻に設定周期Ｔを加算した次のタスク開始時刻を算出して再び保存しておくことにより、タイマ２のポーリングによって等周期処理が実現できる。
【００４６】
ここで、図９に、本実施形態のタイマのポーリングを含むタスク実行制御のフローチャートを示す。タスク実行制御プログラム本体の起動後、ステップ７０にて初期化を行なって制御ループに入る。制御ループでは、ステップ７１にてタイマ値を読み出し、ステップ７２で制御タスクの実行開始時刻と比較する。ステップ７２における比較の結果、実行開始時刻以前であればステップ７１に戻る。実行開始時刻に一致していれば、ステップ７３で次回の実行時刻を保存する。そして、ステップ７４、７５に進んで、所定の制御タスク３ａ、３ｂを選択して実行する。それらの実行を終了した後、ステップ７１に戻る。
【００４７】
一方、ステップ７２の判断で、実行開始時刻を経過している場合は、ステップ７６で次回の実行時刻を保存した後、ステップ７７でタスクオーバーラン時の時間依存タスクである制御タスク３ａのみが選択実行される。このようにタイマのポーリングによって制御タスクを起動する本実施形態により、割込みを用いるよりも少ない処理時間オーバーヘッドで時間依存タスクである制御タスク３ａの実行が確保されるとともに、制御タスク３ａの実行間隔を管理することが可能になる。
【００４８】
（実施形態５）
図８の実施形態では、ＣＰＵ１によりバス１１を介してタイマ２の時刻を読み出して制御タスクの実行周期を制御していたが、この処理をレジスタとコンパレータにより構成されるハードウェアで用意しておき、レジスタにタイマ２の時刻を自動的にロードされるようにしておくことにより、ＣＰＵ１からはコンパレータの出力をリードアクセスするだけで、実行開始時刻の未経過、一致、経過の三状態を示すフラグを返すように構成することが可能である。これによれば、さらに軽量なタスク起動処理が可能になる。
【００４９】
（実施形態６）
図７の実施形態のタスクオーバーラン検出手段７は、ハードウェアのタイマ２からの割り込み回数をカウントするカウンタ回路６１を用いて構成していたが、ハードウエアを用いずに、ソフトウエアで構成することができる。すなわち、ハードウェアのタイマ２の割込みが発生した時に直接タスクを起動せず、割込みハンドラと呼ばれる小さな割込みルーチンを起動し、その中で状況に応じてタスクの起動、マスク処理などを行なうことで、割込み処理の管理がソフトウェア的に可能になる。この場合、タスクオーバーラン検出手段を割込みハンドラ中のプログラムとして記述でき、割込み回数をメモリ上にカウント、保持することで同一の機能を実現できる。これによれば、多少の処理時間オーバーヘッドが増加してしまうが、ハードウェアの簡素化と低価格化が可能である。
【００５０】
（実施形態７）
図１０に、本発明のデジタル制御装置を、自動車の制御装置に適用した場合のシステム構成を示す。図において、エンジン制御装置９１は、エンジン９６を制御するデジタル制御装置であり、上述した本発明の各実施形態のデジタル制御装置を適用できる。したがって、本実施形態によれば、設定周期で測定すべきエンジン状態量の演算結果に著しい誤差を含むことがないので、その演算結果を用いたエンジン制御の制御精度が向上する。
【００５１】
すなわち、エンジン制御装置９１は、エンジン状態センサ９４の情報をもとに時間依存タスクの制御タスク３ａにより状態観測器を用いて状態量を算出し、与えられた制御指令値に基づいて非時間依存タスクの制御タスク３ｂにより制御量を算出する。算出された制御量は、インジェクタ９２や電子制御スロットル９３に出力され、燃料噴射量や吸入空気量等の物理量を変化させることによりエンジン９６の制御を行なう。本実施形態のデジタル制御装置によれば、刻々と変わる状態量の算出を高精度に保ちつつ、高負荷の制御タスクを実行可能である。
【００５２】
また、エンジン９６にはクランク角センサ９５があり、前述したタイマ２による等周期処理ばかりでなく、クランク角パルスの割込みによる周期処理に本発明を適用する場合も考えられる。さらには、電磁駆動弁機構などのような超高速な制御周期を必要とする新しいアクチュエータ機構に対して、本発明を適用することで、デジタル制御装置はリフト量センサに基づく高速な周期の状態観測器の演算を行なって状態量の算出処理を維持しながら、同時に高速な周期処理の制御タスクによる駆動電流値算出を実行可能である。
【００５３】
また、図１０のクルーズコントロール制御装置９７は、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）バス９８を介して車速信号などの状態量を取得し、かつエンジントルク要求値や変速要求などの制御出力を出力する。
【００５４】
前述の実施形態では、制御対象がデジタル制御装置に直接接続された形態について述べたが、この例のようにネットワークによる通信を介して接続される制御対象について制御処理を行なうデジタル制御装置に対しても本発明を適用できる。
【００５５】
また、本発明のデジタル制御装置の一般的な適用事例としては、産業用ロボットなどメカトロニクス装置のサーボ制御が考えられる。メカ制御には機構運動解析による状態観測器演算が必須であり、この状態観測器演算の演算周期を維持しつつサーボ制御処理を同時に実行可能となる。さらに、例えばファクシミリのような通信機器に適用することができる。調歩同期方式通信のタスクのように正確な処理周期を必要とする部分を時間依存タスクとし、印刷などの他の処理部分を非時間依存タスクに分けることで、ＣＰＵ１の処理能力を最大限に効率化することが可能となる。
【００５６】
上述したように、本発明の各実施形態のデジタル制御装置によれば、次の効果が得られる。
（１）起動中の制御タスクが一時的な高負荷状態により時間内に処理が完了せずタスクオーバーランした場合にも、オーバーランした制御タスクの次に実行する制御タスクの時間依存タスク部の周期処理の回数を維持することができる。
（２）起動中の制御タスクが一時的な高負荷状態により時間内に処理が完了せずオーバーランした場合にも、全ての制御タスクの時間依存タスク部における等周期処理を維持することができるという効果がある。
（３）タスクオーバーランにより無視された割込み信号入力の回数も含めたタスクオーバーラン検出が可能となる。
（４）タイマのポーリングによって処理負荷のオーバーヘッドを低く抑えながら等周期処理を行ない、かつ起動中の制御タスクが一時的な高負荷状態により時間内に処理が完了せずオーバーランした場合にも、オーバーランした制御タスクの次に実行する制御タスクを含め、時間依存タスク部の周期処理の回数を維持することができる。
（５）ソフトウェアにより直接タイマ時刻値を比較するよりも低い処理負荷オーバーヘッドでタスク起動状態の判定をすることができる。
（６）多少の処理時間オーバーヘッドを負担するだけでハードウェアの簡素化と低価格化を可能にすることができる。
【図面の簡単な説明】
【００５７】
【図１】本発明の一実施形態のデジタル制御装置に係る制御タスクの実行制御のフローチャートである。
【図２】本発明の一実施形態のデジタル制御装置の構成図である。
【図３】図１実施形態の制御タスクの実行制御の動作を示すタイムチャートである。
【図４】図１実施形態の制御タスクの実行制御によるデジタル制御装置の入出力信号のタイムチャートである。
【図５】本発明の他の実施形態のデジタル制御装置に係る制御タスクの実行制御のフローチャートである。
【図６】図５実施形態の制御タスクの実行制御の動作を示すタイムチャートである。
【図７】本発明の一実施の形態のオーバーラン検出手段の回路図である。
【図８】本発明の他の実施形態のデジタル制御装置の構成図である。
【図９】本発明の他の実施形態のオーバーラン検出手段と制御タスク実行制御のフローチャートである。
【図１０】本発明の一実施形態のデジタル制御装置を適用してなる自動車のエンジン制御装置の構成図である。
【符号の説明】
【００５８】
１  ＣＰＵ
２  タイマ
３ａ  制御タスク
３ｂ  制御タスク
４  メモリ
５  入力回路
６  出力回路
７  タスクオーバーラン検出手段
８  制御対象
１０  割込み信号
１１、１２  バス
【図１】
2005301812.tif 000003
【図２】
2005301812.tif 000004
【図３】
2005301812.tif 000005
【図４】
2005301812.tif 000006
【図５】
2005301812.tif 000007
【図６】
2005301812.tif 000008
【図７】
2005301812.tif 000009
【図８】
2005301812.tif 000010
【図９】
2005301812.tif 000011
【図１０】
2005301812.tif 000012