(57)【要約】【課題】揮発性メモリに対する給電が瞬断から復帰した後に、揮発性メモリに記憶されたデータの変化に起因して、機関状態量が誤った値に設定されることを抑制することのできる内燃機関の制御システムを提供する。【解決手段】位置センサＳ１，Ｓ２の出力信号に基づいて吸気バルブの最大リフト量の初期値に対する変更履歴を検出し、変更履歴を示す履歴データ及び該履歴データと第１の対応関係を有する対照データをＤＲＡＭ７２ｂに記憶するとともに、その変更履歴の誤差を示す参照量データ及び該参照量データと第２の対応関係を有する対照データをＤＲＡＭ７２ｂに記憶する。ＤＲＡＭ７２ｂに対する給電が一時的に停止される状態から復帰した後に、履歴データとその対照データとが第１の対応関係を維持し、且つ、参照量データとその対照データとが第２の対応関係を維持していることを条件に、その時点の変更履歴を履歴データによって示される値に設定する。【選択図】図４
2008232063.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の状態量について機関始動時における初期値からの変更履歴を検出する履歴検出手段と、該履歴検出手段によって検出された変更履歴を記憶する揮発性メモリとを有し、前記揮発性メモリに記憶された変更履歴と前記初期値とに基づいて前記状態量の現在値を算出する内燃機関の制御システムであって、
前記変更履歴を示す履歴データ及び該履歴データと第１の対応関係を有する対照データを前記揮発性メモリに記憶するとともに、前記状態量とは異なる参照量を示す参照量データ及び該参照量データと第２の対応関係を有する対照データを前記揮発性メモリに記憶し、前記揮発性メモリに対する給電が一時的に停止される状態から復帰した後に、前記揮発性メモリに残存した前記履歴データと該履歴データの対照データとが前記第１の対応関係を維持し、且つ、前記揮発性メモリに残存した前記参照量データと該参照量データの対照データとが前記第２の対応関係を維持していることを条件に、その時点の前記変更履歴を前記残存した履歴データによって示される値に設定する
ことを特徴とする内燃機関の制御システム。
【請求項２】
請求項１に記載の内燃機関の制御システムにおいて、
前記履歴データの対照データは、前記履歴データの論理レベルをビット毎に反転したデータである
ことを特徴とする内燃機関の制御システム。
【請求項３】
請求項１又は２に記載の内燃機関の制御システムにおいて、
前記参照量は、前記状態量とは別の内燃機関の状態量にかかる変更履歴である
ことを特徴とする内燃機関の制御システム。
【請求項４】
請求項１〜３に記載の内燃機関の制御システムにおいて、
前記第１の対応関係と前記第２の対応関係とは、同一の対応関係である
ことを特徴とする内燃機関の制御システム。
【請求項５】
請求項１〜４のいずれか一項に記載の内燃機関の制御システムにおいて、
前記状態量は機関バルブのバルブ状態量である
ことを特徴とする内燃機関の制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機関状態量について機関始動時における初期値からの変更履歴を検出し、これら初期値と変更履歴とに基づいて同機関状態量を算出する内燃機関の制御システムに関する。
【背景技術】
【０００２】
近年、内燃機関の燃費や出力の向上を図るため、マイクロコンピュータにより機関バルブの最大リフト量にかかる目標値を機関運転状態に基づいて設定するとともに、その目標値と一致するように最大リフト量をフィードバック制御する内燃機関の制御システムが広く採用されている（例えば特許文献１参照）。このような制御システムとしては、以下の構成が一般的に採用される。すなわち、この制御システムにあっては、最大リフト量を変更するアクチュエータと、アクチュエータの作動量について機関始動時における初期値からの変更履歴、換言すれば最大リフト量の変更履歴を検出するセンサとが設けられている。機関運転中に、マイクロコンピュータは、同マイクロコンピュータの揮発性メモリのメモリセルを充電・放電することにより、そのセンサによって検出された変更履歴を揮発性メモリに記憶する。また、マイクロコンピュータは、その揮発性メモリに記憶された変更履歴と不揮発性メモリに記憶された機関始動時の最大リフト量の初期値とに基づいて最大リフト量の実際値を算出し、この実際値と機関運転状態に基づいて設定された目標値との乖離が小さくなるようにアクチュエータを通じて機関バルブの最大リフト量を変更する。
【０００３】
ところで、車体や内燃機関の振動により、マイクロコンピュータの給電回路において接触不良が生じる可能性があり、揮発性メモリに対する給電の一時的な停止、いわゆる瞬断が生じることがある。こうした瞬断が発生する前後において、揮発性メモリに対する給電の状態が不安定な状態であるため、充電されたメモリセルに蓄積されている電荷が放電したり、突入電流等の影響により放電されたメモリセルに電荷が充電されたりすることがある。そのため、給電が瞬断から復帰した後、揮発性メモリに記憶されたデータの内容が変化し、最大リフト量の制御を正確に実行できなくなることが懸念される。
【０００４】
そこで、上述したような瞬断による悪影響を最小限に抑えるために、以下の処理が通常実行される。すなわち、通常制御時に変更履歴のデータを揮発性メモリの所定のアドレスに記憶するとともに、ミラーデータ等、その履歴データと所定の対応関係を有するように設定された対照データを他のアドレスに記憶し、給電が瞬断から復帰した後に、２つのアドレスに残存した残存データについてその所定の対応関係が維持されている否かを判断する。そして、所定の対応関係が維持されている旨判断した場合には、残存データの内容が瞬断直前に記憶された内容である旨判断し、その時点の変更履歴を残存データに示す値に設定する。これにより、揮発性メモリに対する給電の瞬断が発生した場合であっても、給電復帰後、速やかに最大リフト量の制御を再開することができるようになる。
【０００５】
一方、それら残存データについて所定の対応関係が維持されていない旨判断した場合には、それらアドレスの少なくとも１つに記憶されたデータの内容が瞬断により変化した旨判断し、アクチュエータの作動量を基準値（例えば、最大作動量又は最小作動量）になるように制御する。そして、予め不揮発性メモリに記憶されたこの基準位置に対応するアクチュエータの作動量を学習し、最大リフト量の実際値を再設定するようにしている。
【特許文献１】特開２００５−２０１１１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
このように、瞬断から復帰した後に履歴データとその対照データとに基づいて揮発性メモリに残存した残存データの内容が瞬断直前に記憶された内容であるか否かを判断することが可能にはなる。ただし、揮発性メモリに対する給電の瞬断の前後、履歴データとその対照データとにおいて互いに対応するビットのビットデータの双方が共に変化し、履歴データとその対照データとが所定の対応関係を維持したまま他のデータに変化するような状況となることも否定できない。したがって、給電が瞬断から復帰した後、それらのデータの内容が変化したにもかかわらず、履歴データとその対照データとが所定の対応関係を維持していることにより、揮発性メモリに残存した残存データの内容が瞬断直前に記憶された内容である旨の判断がなされてしまうおそれがある。そして、このような誤判断が発生すると、その時点の変更履歴が残存データに示す値に誤って設定され、最大リフト量の制御を正確に再開できなくなることが懸念される。
【０００７】
なお、機関バルブの最大リフト量を制御する制御システムについて説明したが、こうした不都合は同構成に限らず、機関状態量について機関始動時における初期値からの変更履歴とその初期値とに基づいて同機関状態量の実際値を算出する他の内燃機関の制御システムにおいても概ね共通して発生し得る。
【０００８】
本発明は、こうした従来の実情に鑑みてなされたものであり、その目的は、揮発性メモリに対する給電が瞬断から復帰した後に、揮発性メモリに記憶されたデータの変化に起因して、機関状態量が誤った値に設定されることを抑制することのできる内燃機関の制御システムを提供することにある。
【課題を解決するための手段】
【０００９】
以下、上記課題を解決するための手段及びその作用効果について記載する。
請求項１に記載の発明は、内燃機関の状態量について機関始動時における初期値からの変更履歴を検出する履歴検出手段と、該履歴検出手段によって検出された変更履歴を記憶する揮発性メモリとを有し、前記揮発性メモリに記憶された変更履歴と前記初期値とに基づいて前記状態量の現在値を算出する内燃機関の制御システムであって、前記変更履歴を示す履歴データ及び該履歴データと第１の対応関係を有する対照データを前記揮発性メモリに記憶するとともに、前記状態量とは異なる参照量を示す参照量データ及び該参照量データと第２の対応関係を有する対照データを前記揮発性メモリに記憶し、前記揮発性メモリに対する給電が一時的に停止される状態から復帰した後に、前記揮発性メモリに残存した前記履歴データと該履歴データの対照データとが前記第１の対応関係を維持し、且つ、前記揮発性メモリに残存した前記参照量データと該参照量データの対照データとが前記第２の対応関係を維持していることを条件に、その時点の前記変更履歴を前記残存した履歴データによって示される値に設定することをその要旨とする。
【００１０】
同構成では、状態量の履歴データとその対照データとの対応関係の他、変更履歴とは異なる参照量を示す参照量データとその対照データとの対応関係についても監視し、揮発性メモリに対する給電が一時的に停止する、いわゆる瞬断から復帰した後にそれらの対応関係がいずれも維持されていることを条件に揮発性メモリに残存した履歴データが給電停止前に揮発性メモリに記憶されたデータである、換言すれば揮発性メモリに記憶されたデータが瞬断により変化していない旨判断するようにしている。そのため、例えば変更履歴のデータとその対照データとの対応関係のみを監視する場合と比較して、揮発性メモリに残存した各データが給電停止前に揮発性メモリに記憶されたデータであるか否かを高い信頼性をもって判断することができる。したがって、揮発性メモリに対する給電が瞬断から復帰した後に、揮発性メモリに記憶されたデータの変化に起因して、状態量が誤った値に設定されることを抑制することができるようになる。
【００１１】
請求項２に記載の発明は、請求項１に記載の内燃機関の制御システムにおいて、前記履歴データの対照データは、前記履歴データの論理レベルをビット毎に反転したデータであることをその要旨とする。
【００１２】
例えば履歴データの対照データとしてその履歴データと同じデータを揮発性メモリに記憶する場合に、履歴データと対照データとにおいて互いに対応するメモリセルの充電・放電状態が同じ状態になる。ここで、揮発性メモリに対する給電の瞬断が発生したときには、それら互いに対応するメモリセルの充電・放電状態が同じように変化する可能性が高く、履歴データとその対照データとが一致した関係を維持したまま他のデータに変化することがある。このように履歴データとその対照データとが変化すると、給電が瞬断から復帰した後に、揮発性メモリに残存したデータが変化したにもかかわらず、それらデータの値が一致しておりその対応関係が維持されていると誤判断するおそれがある。
【００１３】
この点、上記構成によれば、履歴データの対照データとしてその履歴データの論理レベルをビット毎に反転したデータを揮発性メモリに記憶することにより、履歴データとその対照データとにおいて互いに対応するメモリセルの充電・放電状態が異なる状態になる。そのため、例えば履歴データと同じデータを対照データとして記憶する場合と比較し、揮発性メモリに対する給電の瞬断が発生するときに、履歴データとその対照データとにおいて互いに対応するメモリセルの充電・放電状態が同じように変化することに起因して、履歴データとその対照データが同一のデータに変化することを抑制することができ、揮発性メモリに対する給電が瞬断から復帰した後に、状態量が誤った値に設定されることを抑制することのできるようになる。
【００１４】
請求項３に記載の発明は、請求項１又は２に記載の内燃機関の制御システムにおいて、前記参照量は、前記状態量とは別の内燃機関の状態量にかかる変更履歴であることをその要旨とする。
【００１５】
同構成によれば、内燃機関の制御等に必要となる状態量を参照量とすることにより、状態量の信頼性を確認するためだけに他のパラメータを別途に揮発性メモリに記憶する場合と比較して、揮発性メモリに記憶するデータの数が増加することがなく、揮発性メモリの使用量を低減することができる。
【００１６】
請求項４に記載の発明は、請求項１〜３に記載の内燃機関の制御システムにおいて、前記第１の対応関係と前記第２の対応関係とは、同一の対応関係であることをその要旨とする。
【００１７】
同構成によれば、第１の対応関係と第２の対応関係とが同一の対応関係であるため、変更履歴のデータとその対照データとの対応関係、参照量データとその対照データとの対応関係を監視するための制御ロジックについてその簡素化を図ることができる。
【００１８】
請求項５に記載の発明は、請求項１〜４のいずれか一項に記載の内燃機関の制御システムにおいて、前記状態量は機関バルブのバルブ状態量であることをその要旨とする。
例えば機関バルブの最大リフト量等のバルブ状態量を制御する制御システムにおいて、揮発性メモリに対する給電が一時的に停止される状態から復帰した後に、それらのデータの内容が変化したにもかかわらず、揮発性メモリに残存した残存データの内容が瞬断直前に記憶された内容である旨の判断がなされてしまうと、その時点の変更履歴が残存データに示す値に誤って設定され、最大リフト量の制御を正確に再開できなくなることが懸念される。
【００１９】
この点、上記構成によれば、揮発性メモリに対する給電が瞬断から復帰した後に、揮発性メモリに残存したバルブ状態量の履歴データの内容が瞬断前に記憶された内容であるか否かを高い信頼性のもとに判断することができ、変更履歴が誤って設定されることを好適に抑制することができる。なお、機関バルブのバルブ特性には、機関バルブの開時期、閉時期、最大リフト量、開期間、及びリフトプロフィール、並びにこれらの組み合わせが含まれる。
【発明を実施するための最良の形態】
【００２０】
（第１の実施形態）
以下、本発明を機関バルブの最大リフト量を制御する内燃機関の制御システムに適用した第１の実施形態について、図１〜図１０を参照して説明する。ここで、図１は、車両に搭載される内燃機関の吸・排気動弁装置の一部断面構造を示す断面図であり、図２は、内燃機関の吸・排気動弁装置の配設態様を示す平面図である。
【００２１】
図１及び図２に示されるように、内燃機関は４つの気筒を有しており、そのシリンダヘッド２にはこれら気筒に対応した一対の排気バルブ１０と吸気バルブ２０とが往復動可能にそれぞれ設けられている。また、シリンダヘッド２には、それら排気バルブ１０と吸気バルブ２０とに対応して排気動弁装置９０と吸気動弁装置１００とがそれぞれ設けられている。
【００２２】
排気動弁装置９０には、各排気バルブ１０に対応してラッシュアジャスタ１２が設けられるとともに、このラッシュアジャスタ１２と排気バルブ１０との間にはロッカーアーム１３が架設されている。ロッカーアーム１３は、その一端がラッシュアジャスタ１２に支持されるとともに他端が排気バルブ１０の基端部に当接されている。また、シリンダヘッド２に回転可能に支持された排気カムシャフト１４には複数のカム１５が形成されており、それらカム１５の外周面はロッカーアーム１３の中間部分に設けられたローラ１３ａに当接されている。排気バルブ１０にはリテーナ１６が設けられるとともに、このリテーナ１６とシリンダヘッド２との間にはバルブスプリング１１が設けられている。このバルブスプリング１１の付勢力によって排気バルブ１０は閉弁方向に付勢されている。そしてこれにより、ロッカーアーム１３のローラ１３ａはカム１５の外周面に押圧されている。機関運転時にカム１５が回転すると、ロッカーアーム１３はラッシュアジャスタ１２により支持される部分を支点として揺動する。その結果、排気バルブ１０はロッカーアーム１３によって開閉駆動されるようになる。
【００２３】
一方、吸気動弁装置１００には、排気側と同様にバルブスプリング２１、吸気バルブ２０に設けられたリテーナ２６、ロッカーアーム２３及びラッシュアジャスタ２２が設けられている。シリンダヘッド２に回転可能に支持された吸気カムシャフト２４には複数のカム２５が形成されている。ここで、排気動弁装置９０とは異なり、吸気動弁装置１００には、カム２５とロッカーアーム２３との間に仲介駆動機構５０が設けられている。この仲介駆動機構５０は入力部５１と一対の出力部５２とを有しており、これら入力部５１及び出力部５２はシリンダヘッド２に固定された支持パイプ５３に揺動可能に支持されている。ロッカーアーム２３は、ラッシュアジャスタ２２及びバルブスプリング２１の付勢力によって出力部５２側に付勢され、同ロッカーアーム２３の中間部分に設けられたローラ２３ａが出力部５２の外周面に当接されている。これにより、入力部５１が出力部５２とともに左回り方向Ｗ１に揺動付勢され、入力部５１においてその径方向に延出した部分の先端に設けられたローラ５１ａがカム２５の外周面に押圧される。
【００２４】
こうした吸気動弁装置１００では、機関運転時にカム２５が回転すると、同カム２５はローラ５１ａに摺接しつつ入力部５１を押圧し、これにより出力部５２が支持パイプ５３の周方向に揺動するようになる。そして出力部５２が揺動すると、ロッカーアーム２３はラッシュアジャスタ２２により支持される部分を支点として揺動する。その結果、吸気バルブ２０はロッカーアーム２３によって開閉駆動されるようになる。
【００２５】
また、支持パイプ５３には、その軸方向に沿って駆動可能なコントロールシャフト５４が挿入されている。このコントロールシャフト５４は、連結部材を介して入力部５１及び出力部５２に駆動連結されており、同コントロールシャフト５４がその軸方向に沿って駆動すると、それら入力部５１及び出力部５２が相対的に揺動するようになる。次に、図３を参照してコントロールシャフト５４と入力部５１，出力部５２とを連結する仲介駆動機構５０について詳述する。尚、図３は仲介駆動機構５０の内部構造を示す破断斜視図である。
【００２６】
図３に示されるように、入力部５１はそれら一対の出力部５２の間に設けられており、これら入力部５１と出力部５２との内部には略円筒状の連通空間が形成されている。また、入力部５１の内周面にはヘリカルスプライン５１ｈが形成されるとともに、出力部５２の内周面には入力部５１のヘリカルスプライン５１ｈとその歯すじが逆向きに傾斜するヘリカルスプライン５２ｈが形成されている。
【００２７】
入力部５１と出力部５２との内部に形成された空間には、略円筒状のスライダギア５５が設けられている。このスライダギア５５の外周面の中央部分には、入力部５１のヘリカルスプライン５１ｈに噛合するヘリカルスプライン５５ａが形成されるとともに、その外周面の両端部には出力部５２のヘリカルスプライン５２ｈに噛合するヘリカルスプライン５５ｂが形成されている。
【００２８】
また、この略円筒状のスライダギア５５の内壁には、その周方向に沿って延伸する溝５５ｃが形成されており、この溝５５ｃにはブッシュ５６が嵌合されている。なお、このブッシュ５６は、溝５５ｃの伸びる方向に沿って同溝５５ｃの内周面を摺動することができるが、スライダギア５５に対するその軸方向の相対変位は溝５５ｃによって規制されている。
【００２９】
そして、支持パイプ５３はスライダギア５５の内部に形成された貫通空間に挿入されるとともに、コントロールシャフト５４はその支持パイプ５３に挿入されている。また、支持パイプ５３の管壁にはその軸方向に延伸する長孔５３ａが形成されている。スライダギア５５とコントロールシャフト５４との間には、長孔５３ａを通じてこれらスライダギア５５とコントロールシャフト５４とを連結する係止ピン５７が設けられている。この係止ピン５７の一端がコントロールシャフト５４に形成された凹部（図示略）に挿入されるとともに、他端がブッシュ５６に形成された貫通孔５６ａに挿入されている。
【００３０】
こうした仲介駆動機構５０にあって、コントロールシャフト５４がその軸方向に沿って変位すると、これに連動してスライダギア５５が軸方向に変位する。スライダギア５５の外周面に形成されたヘリカルスプライン５５ａ，５５ｂは、入力部５１及び出力部５２の内周面に形成されたヘリカルスプライン５１ｈ、５２ｈとそれぞれ噛合されているため、スライダギア５５がその軸方向に変位すると、入力部５１と出力部５２とは逆の方向に回転する。その結果、入力部５１と出力部５２との相対位相差が変更され、吸気バルブ２０の最大リフト量が変更される。
【００３１】
ここで、先の図２に示されるように、コントロールシャフト５４の基端部（図中右端部）には、ブラシレスモータ６０が設けられており、このブラシレスモータ６０は、マイクロコンピュータ７０に接続されている。マイクロコンピュータ７０は、ブラシレスモータ６０を駆動制御することにより吸気バルブ２０の最大リフト量を機関運転状態に応じた目標リフト量と一致するようにフィードバック制御する。以下、このマイクロコンピュータ７０による最大リフト量のフィードバック制御について、図４〜図６を参照して説明する。ここで、図４は、コントロールシャフト５４、ブラシレスモータ６０及びマイクロコンピュータ７０を示すブロック図であり、図５は、各センサの出力波形及び各カウンタ値の推移態様を示すタイミングチャートである。
【００３２】
図４に示されるように、コントロールシャフト５４の基端部は、変換機構６１を介してブラシレスモータ６０の出力軸６０ａに連結されている。この変換機構６１は、出力軸６０ａの回転運動をコントロールシャフト５４の軸方向への直線運動に変換するためのものである。すなわち、出力軸６０ａを正・逆回転させると、その回転が変換機構６１によってコントロールシャフト５４の往復動に変換される。また、コントロールシャフト５４には、係止部５４ａが形成されるとともに、内燃機関のシリンダヘッドカバー３には、この係止部５４ａが当接可能な２つのストッパ３ａ，３ｂが形成されている。コントロールシャフト５４は、これらストッパ３ａ，３ｂに係止部５４ａが当接するようになる２つの駆動限界位置の間において駆動可能となっている。ここで、コントロールシャフト５４の係止部５４ａがストッパ３ａに当接する駆動限界位置（以下「Ｈｉ端」と称する）に駆動したときにブラシレスモータ６０の作動量、すなわち回転角が設計最大値ＤＨ０になる。一方、コントロールシャフト５４の係止部５４ａがストッパ３ｂに当接する駆動限界位置（以下「Ｌｏ端」と称する）に駆動したときにブラシレスモータ６０の回転角が設計最小値ＤＬ０になる。
【００３３】
ブラシレスモータ６０には、３つの電気角センサＤ１〜Ｄ３と、これら電気角センサＤ１〜Ｄ３に対応して出力軸６０ａと一体回転する８極の多極マグネット（図示略）とが設けられている。これら電気角センサＤ１〜Ｄ３は、８極の多極マグネットの磁気に応じて図５（ａ）〜（ｃ）に示されるようなパルス状の信号、すなわち論理ハイレベル信号「Ｈ」と論理ローレベル信号「Ｌ」とを交互に出力する。なお、こうしたパルス信号の波形が得られるよう、３つの電気角センサＤ１〜Ｄ３は出力軸６０ａの周方向において１２０°毎に配置されている。したがって、これら電気角センサＤ１〜Ｄ３のうちの１つから出力されるパルス信号のエッジは出力軸６０ａの４５°回転毎に発生している。また、これら電気角センサＤ１〜Ｄ３のうちの１つからのパルス信号は、他の電気角センサからのパルス信号に対し、出力軸６０ａの３０°回転分だけ進み側及び遅れ側に位相をずらした状態となっている。
【００３４】
また、ブラシレスモータ６０には、ロータリーエンコーダとして機能する２つの位置センサＳ１，Ｓ２と、これら位置センサＳ１，Ｓ２に対応して出力軸６０ａと一体回転する４８極の多極マグネット（図示略）とが設けられている。これら位置センサＳ１，Ｓ２は、４８極の多極マグネットの磁気に応じて図５（ｄ）及び（ｅ）に示されるようなパルス状の信号、すなわち論理ハイレベル信号「Ｈ」と論理ローレベル信号「Ｌ」とを交互に出力する。なお、こうしたパルス信号の波形が得られるよう、位置センサＳ１は出力軸６０ａの周方向において位置センサＳ２から１７６．２５°を隔てて配置されている。したがって、位置センサＳ１，Ｓ２のうちの１つから出力されるパルス信号のエッジは出力軸６０ａの７．５°回転毎に発生している。また、位置センサＳ２からのパルス信号は、位置センサＳ１からのパルス信号に対し、出力軸６０ａの３．７５°回転分だけ進み側及び遅れ側に位相をずらした状態となっている。
【００３５】
ここで、電気角センサＤ１〜Ｄ３を合わせたパルス信号のエッジ間隔が１５°であるのに対し、位置センサＳ１，Ｓ２を合わせたパルス信号のエッジ間隔は３．７５°となっている。したがって、電気角センサＤ１〜Ｄ３を合わせたパルス信号のエッジ発生から次回のエッジ発生までには、位置センサＳ１，Ｓ２を合わせたパルス信号のエッジが４回発生するようになっている。
【００３６】
これら電気角センサＤ１〜Ｄ３及び位置センサＳ１，Ｓ２によって出力されたパルス信号はマイクロコンピュータ７０に取り込まれる。このマイクロコンピュータ７０は、プログラムによって数値計算や情報処理等を行う中央演算処理装置（ＣＰＵ）７１、各種の制御に必要なプログラムやデータを記憶する不揮発性メモリ（ＲＯＭ）７２ａ、入力データや演算結果を一時的に記憶する揮発性メモリ（ＤＲＡＭ）７２ｂ、学習制御により得られた初期値等を記憶する書き換え可能な不揮発性メモリ（ＥＥＰＲＯＭ）７２ｃを備えている。なお、周知のように、マイクロコンピュータ７０がデータをＤＲＡＭ７２ｂのアドレスに記憶するとき、そのアドレスに対応する各メモリセルに対して充電・放電を行うことにより、各メモリセルに対応するビットのビットデータの値が「１」又は「０」になる。すなわち、電荷が蓄積されているメモリセルに対応するビットのビットデータの値が「１」になる一方、電荷が蓄積されていないメモリセルに対応するビットのビットデータの値が「０」になる。
【００３７】
また、マイクロコンピュータ７０には、車両のアクセルペダルの開度を検出するアクセルセンサ７３や、内燃機関のクランクシャフトの回転位相を検出するクランク角センサ７４等、機関の運転状態を検出するセンサが接続されている。マイクロコンピュータ７０は、機関の運転状態に基づき吸気バルブ２０の最大リフト量の制御目標値を設定するとともに、上述した電気角センサＤ１〜Ｄ３及び位置センサＳ１，Ｓ２によって出力されたパルス信号に基づいてブラシレスモータ６０の回転位相、換言すれば吸気バルブ２０の最大リフト量の実際値を検出するようにしている。以下、吸気バルブ２０の最大リフト量の実際値を検出する手順について、図５及び図６を参照して詳細に説明する。
【００３８】
ここで、図５（ａ）〜（ｅ）は、上述したようにブラシレスモータ６０の出力軸６０ａの回転時に電気角センサＤ１〜Ｄ３、及び位置センサＳ１，Ｓ２から出力するパルス信号の波形を示している。そして図５（ｆ）〜（ｈ）は、ブラシレスモータ６０の回転時における回転角の変化に対し、それぞれ電気角カウンタ値Ｅ、位置カウンタ値Ｐ、及びストロークカウンタ値Ｓが推移するパターンを示している。また、図６（ａ）は、電気角センサＤ１〜Ｄ３の出力信号のパターンと電気角カウンタ値Ｅとの対応関係を示すとともに、図６（ｂ）は、位置センサＳ１，Ｓ２の出力信号のエッジが発生するときに位置カウンタ値Ｐが増減する態様を示している。
【００３９】
まず、各カウンタ値について説明する。
［電気角カウンタ値Ｅ］
電気角カウンタ値Ｅは、電気角センサＤ１〜Ｄ３のパルス信号に基づいて設定され、ブラシレスモータ６０の回転位相を表す。具体的には、図６（ａ）に示されるように、各電気角センサＤ１〜Ｄ３から各々論理ハイレベル信号「Ｈ」と論理ローレベル信号「Ｌ」とのいずれが出力されているかに応じて、電気角カウンタ値Ｅに「０」〜「５」範囲内の連続した整数値のうちのいずれかに設定されてＤＲＡＭ７２ｂに記憶される。マイクロコンピュータ７０は、ＤＲＡＭ７２ｂに記憶された電気角カウンタ値Ｅに基づきブラシレスモータ６０の回転位相を検出し、同ブラシレスモータ６０の通電相を切り替えてブラシレスモータ６０を正・逆回転する。ここで、ブラシレスモータ６０の正回転時には、電気角カウンタ値Ｅは「０」→「１」→「２」→「３」→「４」→「５」→「０」といった順序で順方向に変化する。一方、ブラシレスモータ６０の逆回転時には、電気角カウンタ値Ｅ「５」→「４」→「３」→「２」→「１」→「０」→「５」といった順序で逆方向に変化する。
【００４０】
［位置カウンタ値Ｐ］
位置カウンタ値Ｐは、内燃機関が始動した後に、その機関始動時の初期回転角に対して出力軸６０ａの回転角が変化した量、換言すれば吸気バルブ２０の最大リフト量について機関始動時における初期値からの変更履歴を表す。具体的には、位置センサＳ１，Ｓ２のうち、一方のセンサからパルス信号の立ち上がりエッジ及びと立下りエッジのいずれが生じているか、及び他方のセンサから論理ハイレベル信号「Ｈ」と論理ローレベル信号「Ｌ」とのいずれが出力されているかに応じて、位置カウンタ値Ｐに対し「＋１」と「−１」とのいずれかが加算される（図６（ｂ）参照）。なお、同図６（ｂ）において、「↑」はパルス信号の立ち上がりエッジを表し、「↓」はパルス信号の立下りエッジを表している。こうした処理を実行して得られる位置カウンタ値Ｐは、各位置センサＳ１，Ｓ２からのパルス信号のエッジを計数した値になる。
【００４１】
ここで、ブラシレスモータ６０の正回転中であれば、位置カウンタ値Ｐは、図５（ｄ）及び（ｅ）に示される位置センサＳ１，Ｓ２からのパルス信号のエッジ毎に「１」ずつ加算され、図５（ｇ）に示されるパターンに沿って右方向に推移するようになる。一方、ブラシレスモータ６０の逆回転中であれば、位置カウンタ値Ｐは、上記パルス信号のエッジ毎に「１」ずつ減算され、図５（ｇ）に示されるパターンに沿って左方向に推移するようになる。なお、この位置カウンタ値Ｐは、内燃機関の運転が停止すると、「０」にリセットされる。したがって、位置カウンタ値Ｐは、ブラシレスモータ６０の出力軸６０ａの回転位置が機関始動時の初期位置に対してどれだけ変化したか、換言すれば機関運転の吸気バルブ２０の最大リフト量が機関始動時の初期値に対してどれだけ変化したかを表す。また、位置カウンタ値Ｐは、吸気動弁装置１００の駆動に基づいて迅速に加減算する必要があるため、ＤＲＡＭ７２ｂに記憶される。
【００４２】
［ストロークカウンタ値Ｓ］
ストロークカウンタ値Ｓは、コントロールシャフト５４をＨｉ端に変位させたときの出力軸６０ａの回転角を基準値（０度）とした同ブラシレスモータ６０の回転角を表す。すなわち、ストロークカウンタ値Ｓの初期設定として、コントロールシャフト５４をＨｉ端に変位させたとき、マイクロコンピュータ７０はストロークカウンタ値Ｓを「０」に設定する。マイクロコンピュータ７０は、位置カウンタ値Ｐをストロークカウンタ値Ｓに加算し、ストロークカウンタ値Ｓをこの加算された値に更新される。なお、機関停止が完了し、吸気動弁装置１００の駆動が停止されたときのストロークカウンタ値Ｓの最終値が次回機関運転の開始時の初期値Ｓｇとして学習されてＥＥＰＲＯＭ７２ｃに記憶される。
【００４３】
したがって、マイクロコンピュータ７０は、ＥＥＰＲＯＭ７２ｃに記憶された初期値ＳｇとＤＲＡＭ７２ｂに記憶された位置カウンタ値Ｐとに基づきストロークカウンタ値Ｓ、換言すればコントロールシャフト５４をＨｉ端に変位させたときの出力軸６０ａの回転角を基準値（０度）とした同ブラシレスモータ６０の回転角を算出する。そして、マイクロコンピュータ７０は、このストロークカウンタ値Ｓに基づいて吸気バルブ２０の最大リフト量の実際値を算出するとともに、この実際値と機関運転状態に基づいて設定された制御目標値との乖離が小さくなるようにブラシレスモータ６０を制御する。これにより、吸気バルブ２０の最大リフト量を機関運転状態に適した値に変更し、内燃機関の燃費や出力の向上を図ることができるようになる。
【００４４】
ところで、位置カウンタ値Ｐは、常にブラシレスモータ６０の実際の回転角に対応しているとは限らず、その実際の回転角からずれることがある。例えば、位置センサＳ１，Ｓ２から出力される信号にノイズが重畳すると、マイクロコンピュータ７０はそのノイズのエッジと位置センサＳ１，Ｓ２からのパルス信号のエッジとを峻別することができない。このため、このノイズのエッジがパルス信号のエッジと誤検出され、位置カウンタ値Ｐ、ひいてにストロークカウンタ値Ｓがブラシレスモータ６０の実際の回転角と対応しなくなる。その結果、ストロークカウンタ値Ｓに基づき検出される吸気バルブ２０の最大リフト量の検出値はその実際値との間にずれが生じることとなる。
【００４５】
以下、こうした不具合発生の詳細について、モータ正・逆回転中にノイズが発生した場合を例に、図７，８を参照して説明する。なお、図７はブラシレスモータ６０の正・逆回転中にノイズが発生した場合における位置センサＳ１，Ｓ２の出力波形及び電気角カウンタ値Ｅ、位置カウンタ値Ｐの推移を示す図であり、図８はノイズによる位置カウンタ値Ｐの加減算態様を示す図である。
【００４６】
ブラシレスモータ６０の正回転中、例えば図７（ａ）に示されるように、位置センサＳ１からの信号にノイズが重畳し、そのノイズによって位置センサＳ１の出力信号が論理ハイレベル信号「Ｈ」になっているときに位置センサＳ２からのパルス信号の立ち下がりエッジが検出されると、上記ノイズの発生しているタイミングａ，ｂ，ｃでの位置センサＳ１，Ｓ２からの信号の出力パターンは、図８（ａ）に示されるようなパターンとなる。その結果、タイミングａ，ｂ，ｃでそれぞれ位置カウンタ値Ｐに「−１」が加算され、図７（ｄ）のタイミングａ，ｂ，ｃでは当該カウンタ値が一点鎖線で示されるように「１」ずつ減少するようになる。一方、仮に上記ノイズが発生していないとすれば、タイミングａ，ｂ，ｃではタイミングｂで位置カウンタ値Ｐに「１」が加算されるだけとなるはずである。このため、上記ノイズが発生したときの位置カウンタ値Ｐは、タイミングｃ以降、ブラシレスモータ６０の実際の回転角に対応する値（実線）に対し、二点鎖線で示されるように「４」だけ小さくなる。
【００４７】
一方、ブラシレスモータ６０の逆回転中、例えば図７（ａ）に示されるノイズが発生し、そのノイズによって位置センサＳ１の出力信号が論理ハイレベル信号「Ｈ」になっているときに位置センサＳ２からのパルス信号の立ち上がりエッジが検出された場合にも、位置カウンタ値Ｐがブラシレスモータ６０の実際の回転角に対応する値からずれることになる。この場合には、時間の経過とともに図７の各パターンに沿って左側に推移することとなる。すなわち、上記ノイズの発生しているタイミングｃ，ｂ，ａでの位置センサＳ１，Ｓ２からの信号の出力パターンが図８（ｂ）に示されるようなパターンとなり、タイミングｃ，ｂ，ａでそれぞれ位置カウンタ値Ｐに「１」が加算され、図７（ｅ）のタイミングｃ，ｂ，ａでは当該カウンタ値が一点鎖線で示されるように「１」ずつ増加するようになる。一方、仮に上記ノイズが発生していないとすれば、タイミングｃ，ｂ，ａではタイミングｂで位置カウンタ値Ｐに「−１」が加算されるだけとなるはずである。このため、上記ノイズが発生したときの位置カウンタ値Ｐは、タイミングａ以降、ブラシレスモータ６０の実際の回転角に対応する値（実線）に対し、二点鎖線で示されるように「４」だけ大きくなる。
【００４８】
以上のように、位置センサＳ１，Ｓ２によって出力されるパルス信号にノイズが重畳すると、位置カウンタ値Ｐ、換言すれば吸気バルブ２０の最大リフト量の変更履歴に誤差が生じる。こうした誤差が生じると、上述したフィードバック制御に用いられる最大リフト量の値と実際の値との間にずれが発生し、制御の精度が低下することとなる。
【００４９】
もっとも、こうした誤差が発生した場合であっても、位置カウンタ値Ｐの推移と電気角カウンタ値Ｅの推移とを比較することによりその誤差を検出し、フィードバック制御に用いられる最大リフト量の値が実際の値と一致するようにこれを補正することはできる。但し、機関運転中にこの誤差に対する補正を行うと、その補正タイミングにおいて吸気バルブ２０の最大リフト量が不連続的に変化することとなり、機関運転状態が急激に変化するおそれがある。このため、こうした補正は機関運転が停止した後に行うことが望ましい。
【００５０】
以下、マイクロコンピュータ７０により実行される位置カウンタ値Ｐの誤差検出処理及びその誤差に基づいて位置カウンタ値Ｐを補正する処理について説明する。
この処理ではまず、各電気角センサＤ１〜Ｄ３から出力されるパルス信号のエッジ発生毎に、今回のエッジ発生時における位置カウンタ値Ｐｎと前回のエッジ発生時における位置カウンタ値Ｐｎ-1とのカウント差（Ｐｎ−Ｐｎ-1）を算出する。
【００５１】
電気角カウンタ値Ｅの変化に基づきブラシレスモータ６０の回転状態が正回転中、逆回転中、及び正逆回転反転中のうちのいずれであるかを判断する。より詳しくは、各電気角センサＤ１〜Ｄ３からのパルス信号の前回のエッジ発生時と今回のエッジ発生時とにおける各々の電気角カウンタ値Ｅの変化方向に基づき、ブラシレスモータ６０が正回転中、逆回転中、及び正逆回転反転中のいずれであるかを判断する。すなわち、前回のエッジ発生時と今回のエッジ発生時との電気角カウンタ値Ｅの変化方向が共に増加方向であればモータ正回転中である旨の判断を行い、それらが共に減少方向であればモータ逆回転中である旨の判断を行う。また、前回のエッジ発生時と今回のエッジ発生時との電気角カウンタ値Ｅの変化方向が増加方向と減少方向とで異なっていれば、モータ正逆回転反転中である旨の判断を行う。
【００５２】
そして、ブラシレスモータ６０の回転状態に応じてカウント差（Ｐｎ−Ｐｎ-1）の正常時の値である正常値Ｊを設定する。正常値Ｊの設定では、電気角センサＤ１〜Ｄ３からのパルス信号のエッジ間における位置センサＳ１，Ｓ２から出力されるパルス信号のエッジ数の適正値ｍ（本実施形態では「４」）に対応し、正常値Ｊがブラシレスモータ６０正回転中であれば値「ｍ」とされ、モータ逆回転中であれば値「−ｍ」とされ、モータ正逆回転反転中であれば「０」とされる。
【００５３】
正常値Ｊに対するカウント差（Ｐｎ−Ｐｎ-1）のずれ量、すなわち位置カウンタ値Ｐの誤差ΔＰを下記の演算式（１）に基づいて算出する。
ΔＰ  ←  Ｊ−（Ｐｎ−Ｐｎ-1）  ・・・（１）
そして、ＤＲＡＭ７２ｂに記憶される累積誤差ＰＧを下記の演算式（２）に基づいて更新する。
【００５４】
ＰＧ  ←  ＰＧ＋ΔＰ  ・・・（２）
内燃機関の運転が停止したときに、ストロークカウンタ値Ｓの最終値Ｓｅを下記の演算式（３）に基づいて補正し、次回機関始動時における初期値Ｓｇとして学習してＥＥＰＲＯＭ７２ｃに記憶する。
【００５５】
Ｓｇ  ←  Ｓｅ−ＰＧ  ・・・（３）
このように、機関運転が停止した後にストロークカウンタ値Ｓの最終値Ｓｅ、換言すればブラシレスモータ６０の最終的な作動位置の補正を行うことにより、機関運転状態の急激な変化を回避しつつも、位置センサＳ１，Ｓ２の出力信号にノイズが重畳することに起因する吸気バルブ２０の最大リフト量の制御精度低下を抑制することができる。
【００５６】
ところで、車体や内燃機関の振動により、マイクロコンピュータ７０の給電回路において接触不良が生じ、ＤＲＡＭ７２ｂに対する給電の一時的な停止、いわゆる瞬断が生じることがある。こうした瞬断が発生する前後において、ＤＲＡＭ７２ｂに対する給電の状態が不安定な状態であるため、充電されたメモリセルに蓄積されている電荷が放電したり、突入電流等の影響により放電されたメモリセルに電荷が充電されたりすることがある。そのため、給電が瞬断から復帰した後、ＤＲＡＭ７２ｂに記憶された位置カウンタ値Ｐや累積誤差ＰＧ等、吸気バルブ２０の最大リフト量の制御に必要となる状態量の変更履歴のデータの内容が変化し、最大リフト量の制御を正確に実行できなくなることが懸念される。
【００５７】
もっともこの場合には、前述したように、以下の処理を実行することによりこうした瞬断による悪影響を最小限に抑えることができる。すなわち、通常制御時に例えば位置カウンタ値ＰのデータをＤＲＡＭ７２ｂの所定のアドレスに記憶するとともに、そのデータと所定の対応関係を有するように設定された対照データを他のアドレスに記憶し、給電が瞬断から復帰した後に、２つのアドレスに残存した残存データについてその所定の対応関係が維持されている否かを判断する。
【００５８】
そして、所定の対応関係が維持されている旨判断した場合には、残存データの内容が瞬断直前に記憶された内容である旨判断し、その時点の位置カウンタ値Ｐを残存データに示す値に設定する。これにより、ＤＲＡＭ７２ｂに対する給電の瞬断が発生した場合であっても、給電復帰後、速やかに最大リフト量の制御を再開することができるようになる。
【００５９】
一方、それら残存データについて所定の対応関係が維持されていない旨判断した場合には、それらアドレスの少なくとも１つに記憶されたデータの内容が瞬断により変化した旨判断する。この場合には、コントロールシャフト５４をＨｉ端又はＬｏ端に駆動して、最大リフト量の基準値の学習（Ｈｉ端学習又はＬｏ端学習）を実行することにより、その最大リフト量の実際値を再設定することができる。
【００６０】
ただし、ＤＲＡＭ７２ｂに対する給電の瞬断の前後、位置カウンタ値Ｐのデータとその対照データとにおいて互いに対応するビットのビットデータの双方が共に変化し、位置カウンタ値Ｐのデータとその対照データとが所定の対応関係を維持したまま他のデータに変化するような状況となることも否定できない。したがって、給電が瞬断から復帰した後、それらのデータの内容が変化したにもかかわらず、位置カウンタ値Ｐのデータとその対照データとが所定の対応関係を維持していることにより、ＤＲＡＭ７２ｂに残存した残存データの内容が瞬断直前に記憶された内容である旨の判断がなされてしまうおそれがある。そして、このような誤判断が発生すると、その時点の位置カウンタ値Ｐが残存データに示す値に誤って設定され、最大リフト量の制御を正確に再開できなくなることが懸念される。
【００６１】
そこで、本実施形態にかかる内燃機関の制御システムでは、以下に説明する処理を通じてこうした誤判断を回避するようにしている。以下、図９のフローチャートを参照してＤＲＡＭ７２ｂに対する給電の瞬断に対応する処理の手順について説明する。
【００６２】
図９に示される一連の処理は、マイクロコンピュータ７０により所定の制御周期をもって繰り返し実行される。この処理ではまず、今回の制御周期がＤＲＡＭ７２ｂに対する給電が開始した後の最初の制御周期であるか否かを判断する（ステップＳ１０）。
【００６３】
ここで、今回の制御周期が給電開始後の最初の制御周期でない場合には（ステップＳ１０：ＮＯ）、給電の停止が発生していない旨を判断して位置センサＳ１，Ｓ２によって出力されるパルス信号に基づいて位置カウンタ値Ｐを更新し、この更新された位置カウンタ値ＰのデータをＤＲＡＭ７２ｂの２つのアドレスＡＤＰ１，ＡＤＰ２に記憶する（ステップＳ１１）。換言すれば、位置カウンタ値Ｐの履歴データをアドレスＡＤＰ１に記憶するとともに、履歴データと同一の値に設定された対照データをＡＤＰ２に記憶する。
【００６４】
また、上記の演算式（２）に基づいて累積誤差ＰＧを更新し、この更新された累積誤差ＰＧを位置カウンタ値Ｐの参照量としてＤＲＡＭ７２ｂに記憶する。具体的には、累積誤差ＰＧの履歴データ、すなわち参照量の参照量データをアドレスＡＤＧ１に記憶するとともに、この履歴データと同一の値に設定された対照データをＡＤＧ２に記憶する（ステップＳ１２）。
【００６５】
そして、更新された位置カウンタ値Ｐ及びＥＥＰＲＯＭ７２ｃに記憶された機関運転の開始時の初期値Ｓｇに基づき吸気バルブ２０の最大リフト量の実際値を算出する。この実際値と機関運転状態に基づいて設定された制御目標値との乖離が小さくなるようにブラシレスモータ６０をフィードバック制御し（ステップＳ１３）、この一連の処理を一旦終了する。
【００６６】
一方、今回の制御周期が給電開始後の最初の制御周期である場合には（ステップＳ１０：ＹＥＳ）、給電の停止が発生した旨を判断し、機関運転の開始・停止状態を表す運転フラグＦｋが「オン」であるか否かを判断する（ステップＳ２０）。ここで、この運転フラグＦｋは、ＣＰＵ７１によって内燃機関のイグニッションスイッチの操作に基づいて設定されてＥＥＰＲＯＭ７２ｃに記憶される。具体的には、ＣＰＵ７１は、内燃機関のイグニッションスイッチのオン操作が行われるときに、運転フラグＦｋを「オン」に設定する。一方、イグニッションスイッチのオフ操作が行われるときに、その運転フラグＦｋを「オフ」に設定した後、リレーを遮断することによりマイクロコンピュータ７０に対する給電を停止するようにしている。したがって、マイクロコンピュータ７０に対する給電が瞬断状態から復帰した直後の制御周期には、運転フラグＦｋが「オン」に設定されたままの状態となる。
【００６７】
ここで、運転フラグＦｋが「オフ」である場合には（ステップＳ２０：ＮＯ）、今回の制御周期が機関始動後の最初の運転周期である旨を判断し、通常の最大リフト量のフィードバック制御（ステップＳ１１〜ステップＳ１３）を実行してこの一連の処理を一旦終了する。
【００６８】
一方、運転フラグＦｋが「オン」である場合には（ステップＳ２０：ＹＥＳ）、今回の制御周期が機関始動後の最初の制御周期でなく、マイクロコンピュータ７０に対する給電が瞬断状態から復帰した直後の制御周期である旨判断する。この場合には、アドレスＡＤＰ１，ＡＤＰ２に残存した残存データが一致するか否か、換言すればアドレスＡＤＰ１，ＡＤＰ２に残存した残存データが瞬断直前の対応関係を維持しているか否かを判断する（ステップＳ３０）。
【００６９】
アドレスＡＤＰ１，ＡＤＰ２に残存した残存データが一致していない場合には（ステップＳ３０：ＮＯ）、アドレスＡＤＰ１及びアドレスＡＤＰ２の少なくとも一方のデータがＤＲＡＭ７２ｂに対する給電の停止により変化した旨判断する。この場合には、コントロールシャフト５４をＨｉ端又はＬｏ端に駆動して前述した最大リフト量の基準値学習を実行し、アドレスＡＤＰ１，ＡＤＰ２のデータを更新する（ステップＳ３１）。
【００７０】
このように最大リフト量の基準値学習を実行すると、位置カウンタ値Ｐの誤差が「０」になるため、アドレスＡＤＧ１，ＡＤＧ２のデータをクリアするとともに、累積誤差ＰＧを「０」にリセットして（ステップＳ３２）この一連の処理を一旦終了する。
【００７１】
一方、アドレスＡＤＰ１，ＡＤＰ２の残存データが一致する場合には（ステップＳ３０：ＹＥＳ）、更にアドレスＡＤＧ１，ＡＤＧ２に残存した残存データが一致するか否か、換言すればアドレスＡＤＧ１，ＡＤＧ２に残存した残存データが瞬断直前の対応関係を維持しているか否かを判断する（ステップＳ４０）。アドレスＡＤＧ１，ＡＤＧ２の残存データが一致していない場合には（ステップＳ４０：ＮＯ）、アドレスＡＤＧ１及びアドレスＡＤＧ２の少なくとも一方のデータがＤＲＡＭ７２ｂに対する給電の停止により変化した旨判断する。
【００７２】
この場合には、ＤＲＡＭ７２ｂに対する給電が瞬断から復帰した後、アドレスＡＤＰ１，ＡＤＰ２の残存データが一致するが、給電の瞬断により、それらアドレスＡＤＰ１，ＡＤＰ２のデータが一致する関係を維持したまま他のデータに変化した可能性が高いと判断し、最大リフト量の基準値学習を実行するとともに、累積誤差ＰＧをリセットした後（ステップＳ３１，ステップＳ３２）、この一連の処理を一旦終了する。
【００７３】
一方、アドレスＡＤＧ１，ＡＤＧ２の残存データが一致する場合には（ステップＳ４０：ＹＥＳ）、それらアドレスＡＤＰ１，ＡＤＰ２，ＡＤＧ１，ＡＤＧ２の残存データが瞬断の直前の制御周期にＤＲＡＭ７２ｂに記憶されたデータである、すなわちいずれのデータについても瞬断による影響は受けていない旨判断し、その時点の位置カウンタ値Ｐ及び累積誤差ＰＧをそれらアドレスＡＤＰ１，ＡＤＧ１の残存データによって示される値にそれぞれ設定する（ステップＳ５０）。そして、その時点の位置カウンタ値Ｐ及びＥＥＰＲＯＭ７２ｃに記憶された機関運転の開始時の初期値Ｓｇに基づき吸気バルブ２０の最大リフト量の実際値を算出して吸気バルブ２０の最大リフト量のフィードバック制御を実行し（ステップＳ６０）、この一連の処理を一旦終了する。
【００７４】
以下、図１０を参照して、上述給電の瞬断に対応する処理についてその一具体例を説明する。
図１０に示されるように、例えばＤＲＡＭ７２ｂに対する給電が停止される直前の制御周期に更新された位置カウンタ値Ｐが「１３」であり、累積誤差ＰＧが「５」であるとき、「１３」に対応するデータ「１１０１」をアドレスＡＤＰ１，ＡＤＰ２の第０〜３ビットに記憶するとともに（ステップＳ１１）、「５」に対応するデータ「０１０１」をアドレスＡＤＧ１，ＡＤＧ２の第０〜３ビットに記憶する（ステップＳ１２）。
【００７５】
そして、その給電が瞬断から復帰した直後の制御周期に、アドレスＡＤＰ１，ＡＤＰ２の残存データが同じ「１１０１」であり（ステップＳ３０：ＹＥＳ）、且つ、アドレスＡＤＧ１，ＡＤＧ２の残存データが同じ「０１０１」である場合には（ステップＳ４０：ＹＥＳ）、これら残存データが瞬断の直前の制御周期にアドレスＡＤＰ１，ＡＤＰ２，ＡＤＧ１，ＡＤＧ２に記憶された正しいデータである旨を判断する。この場合、その時点の位置カウンタ値Ｐを残存データ「１１０１」に示される値、すなわち「１３」に設定するとともに、電気角カウンタ値Ｅを残存データ「０１０１」に示される値、すなわち「５」に設定する（ステップＳ５０）。
【００７６】
一方、その給電が瞬断状態から復帰した直後の制御周期に、例えば図１０の一点鎖線に示されるように、アドレスＡＤＰ２の第３ビットに対応するメモリセルの電荷が放電することにより、アドレスＡＤＰ２に残存したデータが「０１０１」になった場合には（ステップＳ３０：ＮＯ）、アドレスＡＤＰ１，ＡＤＰ２の少なくとも一方のデータがＤＲＡＭ７２ｂに対する給電の停止により変化した旨判断する。この場合、前述したように最大リフト量の基準値学習を実行するとともに、累積誤差ＰＧをリセットする（ステップＳ３１，ステップＳ３２）。
【００７７】
また、その給電が瞬断状態から復帰した直後の制御周期に、図１０の破線に示されるように、アドレスＡＤＰ１，ＡＤＰ２の第２ビットに対応するメモリセルの電荷が同様に放電することによりそれらアドレスＡＤＰ１，ＡＤＰ２のデータが同一のデータ「１００１」になった場合であっても（ステップＳ３０：ＹＥＳ）、アドレスＡＤＧ２の第０ビットに対応するメモリセルの電荷が放電することにより、アドレスＡＤＧ２のデータ「０１００」がアドレスＡＤＧ１のデータ「０１０１」と一致しなくなったときに（ステップＳ４０：ＮＯ）、それらアドレスＡＤＰ１，ＡＤＰ２のデータが一致する関係を維持したまま他のデータに変化した可能性が高いと判断することができる。この場合には、最大リフト量の基準値学習を実行するとともに、累積誤差ＰＧをリセットする（ステップＳ３１，ステップＳ３２）。
【００７８】
以上説明した第１の実施形態によれば、以下の効果が得られるようになる。
（１）ＤＲＡＭ７２ｂに対する給電が瞬断から復帰した後に、位置カウンタ値Ｐの履歴データと対照データとが一致し且つ累積誤差ＰＧの履歴データと対照データとも一致していることを条件にそれらアドレスの残存データが瞬断直前の制御周期に記憶されたデータである旨判断することとした。そのため、例えば位置カウンタ値Ｐを記憶するアドレスＡＤＰ１，ＡＤＰ２のデータの一致関係のみを監視する場合と比較して、ＤＲＡＭ７２ｂに残存した各データが瞬断直前の制御周期にＤＲＡＭ７２ｂに記憶されたデータであるか否かを高い信頼性をもって判断することができる。したがって、ＤＲＡＭ７２ｂに対する給電が瞬断から復帰した後に、ＤＲＡＭ７２ｂに記憶されたデータの変化に起因して位置カウンタ値Ｐが誤った値に設定されることを抑制することができる。
【００７９】
（２）位置カウンタ値Ｐの参照量として、最大リフト量の制御に必要となる累積誤差ＰＧを採用することとした。これにより、位置カウンタ値Ｐの信頼性を確認するためだけに他のパラメータを別途にＤＲＡＭ７２ｂに記憶する場合と比較して、ＤＲＡＭ７２ｂに記憶するデータの数が増加することを抑制し、ＤＲＡＭ７２ｂの使用量を低減することができる。
【００８０】
（３）位置カウンタ値Ｐの履歴データとその対照データとの対応関係、累積誤差ＰＧの履歴データとその対照データとの対応関係が同一の対応関係であることとした。そのため、それらの対応関係を監視するための制御ロジックについてその簡素化を図ることができる。
（第２の実施形態）
以下、本発明にかかる内燃機関の制御システムの第２の実施形態について、上述した第１の実施形態との相違点を中心に説明する。
【００８１】
上記第１の実施形態では、位置カウンタ値Ｐ及び累積誤差ＰＧの履歴データの対照データとして、それらと同一のデータをＤＲＡＭ７２ｂに記憶するようにした。これに対して、本実施形態では、位置カウンタ値Ｐ及び累積誤差ＰＧの履歴データの対照データとしてそれらの論理レベルをビット毎に反転したデータをＤＲＡＭ７２ｂに記憶するようにしている。
【００８２】
以下、これについて図１１のフローチャートを併せ参照して説明する。
図１１に示される一連の処理ではまず、今回の制御周期がＤＲＡＭ７２ｂに対する給電が開始した後の最初の制御周期であるか否かを判断する（ステップＳ１１０）。
【００８３】
ここで、今回の制御周期が給電開始後の最初の制御周期でない場合には（ステップＳ１１０：ＮＯ）、給電の停止が発生していない旨を判断し、位置センサＳ１，Ｓ２によって出力されるパルス信号に基づいて位置カウンタ値Ｐを更新する。そして、この更新された位置カウンタ値Ｐの履歴データをＤＲＡＭ７２ｂのアドレスＡＤＰ３に記憶するとともに、そのデータの論理レベルをビット毎に反転したミラーデータを対照データとしてＤＲＡＭ７２ｂのアドレスＡＤＰ４に記憶する（ステップＳ１１１）。
【００８４】
また、上記の演算式（２）に基づいて累積誤差ＰＧを更新し、この更新された累積誤差ＰＧを位置カウンタ値Ｐの参照量としてＤＲＡＭ７２ｂに記憶する。具体的には、更新された累積誤差ＰＧの履歴データをＤＲＡＭ７２ｂのアドレスＡＤＧ３に記憶するとともに、そのデータのミラーデータを対照データとしてＤＲＡＭ７２ｂのアドレスＡＤＧ４に記憶する（ステップＳ１１２）。
【００８５】
そして、更新された位置カウンタ値Ｐ及びＥＥＰＲＯＭ７２ｃに記憶された機関運転の開始時の初期値Ｓｇに基づき吸気バルブ２０の最大リフト量の実際値を算出する。この実際値と機関運転状態に基づいて設定された制御目標値との乖離が小さくなるようにブラシレスモータ６０をフィードバック制御し（ステップＳ１１３）、この一連の処理を一旦終了する。
【００８６】
一方、今回の制御周期が給電開始後の最初の制御周期である場合には（ステップＳ１１０：ＹＥＳ）、給電の停止が発生した旨を判断し、機関運転の開始・停止状態を表す運転フラグＦｋが「オン」であるか否かを判断する（ステップＳ１２０）。運転フラグＦｋが「オフ」である場合には（ステップＳ１２０：ＮＯ）、今回の制御周期が機関始動後の最初の運転周期である旨を判断し、通常の最大リフト量のフィードバック制御（ステップＳ１１１〜ステップＳ１１３）を実行してこの一連の処理を一旦終了する。
【００８７】
一方、運転フラグＦｋが「オン」である場合には（ステップＳ１２０：ＹＥＳ）、今回の制御周期が機関始動後の最初の制御周期でなく、マイクロコンピュータ７０に対する給電が瞬断状態から復帰した直後の制御周期である旨判断する。この場合には、アドレスＡＤＰ３，ＡＤＰ４に残存した残存データにおいて互いに対応するビットの排他的論理和が全て「１」であるか、換言すればアドレスＡＤＧ３，ＡＤＧ４に残存した残存データが瞬断直前の対応関係を維持しているか否かを判断する（ステップＳ１３０）。
【００８８】
アドレスＡＤＰ３，ＡＤＰ４に残存した残存データにおいて互いに対応するビットのビットデータの排他的論理和のうち、少なくとも１つが「０」である場合には（ステップＳ１３０：ＮＯ）、アドレスＡＤＰ３，ＡＤＰ４の少なくとも一方のデータがＤＲＡＭ７２ｂに対する給電の停止により変化した旨判断する。この場合には、コントロールシャフト５４をＨｉ端又はＬｏ端に駆動し、前述した最大リフト量の基準値学習を実行し、アドレスＡＤＰ３，ＡＤＰ４のデータを更新する（ステップＳ１３１）。
【００８９】
このように最大リフト量の基準値学習を実行すると、位置カウンタ値Ｐの誤差が「０」になるため、アドレスＡＤＧ３，ＡＤＧ４のデータをクリアするとともに、累積誤差ＰＧを「０」にリセットして（ステップＳ１３２）この一連の処理を一旦終了する。
【００９０】
一方、アドレスＡＤＰ３，ＡＤＰ４に残存した残存データにおいて互いに対応するビットのビットデータの排他的論理和が全て「１」である場合には（ステップＳ１３０：ＹＥＳ）、更にアドレスＡＤＧ３，ＡＤＧ４に残存した残存データにおいて互いに対応するビットの排他的論理和が全て「１」であるか否か、換言すればアドレスＡＤＧ３，ＡＤＧ４に残存した残存データが瞬断直前の対応関係を維持しているか否かを判断する（ステップＳ１４０）。
【００９１】
アドレスＡＤＧ３，ＡＤＧ４に残存した残存データにおいて互いに対応するビットのビットデータの排他的論理和のうち、少なくとも１つが「０」である場合には（ステップＳ１４０：ＮＯ）、アドレスＡＤＧ３及びアドレスＡＤＧ４の少なくとも一方のデータがＤＲＡＭ７２ｂに対する給電の停止により変化した旨判断する。
【００９２】
この場合には、ＤＲＡＭ７２ｂに対する給電が瞬断から復帰した後、アドレスＡＤＰ３，ＡＤＰ４の残存データが論理レベルを反転した関係を有するが、給電の瞬断により、それらアドレスＡＤＰ３，ＡＤＰ４のデータが同関係を維持したまま他のデータに変化した可能性が高いと判断し、最大リフト量の基準値学習を実行するとともに、累積誤差ＰＧをリセットした後（ステップＳ１３１，ステップＳ１３２）、この一連の処理を一旦終了する。
【００９３】
一方、アドレスＡＤＧ３，ＡＤＧ４に残存した残存データにおいて互いに対応するビットのビットデータの排他的論理和が全て「１」である場合には（ステップＳ１４０：ＹＥＳ）、それらアドレスＡＤＰ３，ＡＤＰ４，ＡＤＧ３，ＡＤＧ４の残存データが瞬断の直前の制御周期にＤＲＡＭ７２ｂに記憶されたデータである、すなわちいずれのデータについても瞬断による影響は受けていない旨を判断し、その時点の位置カウンタ値Ｐ及び累積誤差ＰＧをそれらアドレスＡＤＰ３，ＡＤＧ３の残存データによって示される値にそれぞれ設定する（ステップＳ１５０）。そして、その時点の位置カウンタ値Ｐ及びＥＥＰＲＯＭ７２ｃに記憶された機関運転の開始時の初期値Ｓｇに基づき吸気バルブ２０の最大リフト量の実際値を算出して吸気バルブ２０の最大リフト量のフィードバック制御を実行し（ステップＳ１６０）、この一連の処理を一旦終了する。
【００９４】
以下、図１２を参照して、上述給電の瞬断に対応する処理についてその一具体例を説明する。
図１２に示されるように、例えばＤＲＡＭ７２ｂに対する給電が停止される直前の制御周期に更新された位置カウンタ値Ｐが「１３」であり、累積誤差ＰＧが「５」であるとき、「１３」に対応する履歴データ「１１０１」をアドレスＡＤＰ３に記憶するとともに、そのデータの論理レベルをビット毎に反転した対照データ「００１０」をアドレスＡＤＰ４に記憶する（ステップＳ１１１）。また、「５」に対応する履歴データ「０１０１」をアドレスＡＤＧ３に記憶するとともに、そのデータの論理レベルレベルをビット毎に反転した対照データ「１０１０」をアドレスＡＤＧ４に記憶する（ステップＳ１１２）。
【００９５】
そして、その給電が瞬断から復帰した直後の制御周期に、アドレスＡＤＰ３，ＡＤＰ４の残存データにおいて互いに対応するビットのビットデータの排他的論理和が全て「１」であり（ステップＳ１３０：ＹＥＳ）、且つ、アドレスＡＤＧ３，ＡＤＧ４の残存データにおいて互いに対応するビットのビットデータの排他的論理和が全て「１」である場合（ステップ１４０：ＹＥＳ）には、これら残存データが瞬断の直前の制御周期にアドレスＡＤＰ３，ＡＤＰ４，ＡＤＧ３，ＡＤＧ４に記憶された正しいデータである旨を判断する。この場合、その時点の位置カウンタ値Ｐを残存データ「１１０１」に示される値、すなわち「１３」に設定するとともに、累積誤差ＰＧを残存データ「０１０１」に示される値、すなわち「５」に設定する（ステップＳ１５０）。
【００９６】
一方、その給電が瞬断状態から復帰した直後の制御周期に、例えば図１２の一点鎖線に示されるように、アドレスＡＤＰ４の第３ビットに対応するメモリセルに電荷が充電されることにより、アドレスＡＤＰ４に残存したデータが「１０１０」になった場合には（ステップＳ１３０：ＮＯ）、アドレスＡＤＰ３，ＡＤＰ４の少なくとも一方のデータがＤＲＡＭ７２ｂに対する給電の停止により変化した旨判断する。この場合、前述したように最大リフト量の基準値学習を実行するとともに、累積誤差ＰＧをリセットする（ステップＳ１３１，ステップＳ１３２）。
【００９７】
また、その給電が瞬断状態から復帰した直後の制御周期に、図１２の破線に示されるように、アドレスＡＤＰ３の第２ビットに対応するメモリセルの電荷が放電するとともにアドレスＡＤＰ４の第２ビットに対応するメモリセルに電荷が充電されることにより、アドレスＡＤＰ３，ＡＤＰ４の残存データが論理レベルを反転した関係を有するデータになった場合であっても（ステップＳ１３０：ＹＥＳ）、アドレスＡＤＧ４の第０ビットに対応するメモリセルに電荷が充電されることにより、アドレスＡＤＧ３，ＡＤＧ４の残存データが論理レベルを反転した関係を有していないときには（ステップＳ１４０：ＮＯ）、それらアドレスＡＤＰ３，ＡＤＰ４のデータが論理レベルを反転した関係を維持したまま他のデータに変化した可能性が高いと判断することができる。この場合には、最大リフト量の基準値学習を実行するとともに、累積誤差ＰＧをリセットする（ステップＳ１３１，ステップＳ１３２）。
【００９８】
以上説明した第２の実施形態によれば、第１の実施形態の効果（２），（３）に加え、更に以下の効果が得られるようになる。
（４）ＤＲＡＭ７２ｂに対する給電が瞬断から復帰した後に、位置カウンタ値Ｐの履歴データ、対照データが論理レベルを反転した関係を維持し、且つ累積誤差ＰＧの履歴データ、対照データについても同関係が維持されていることを条件にそれらアドレスの残存データが瞬断直前の制御周期に記憶されたデータである旨判断することとした。そのため、例えば位置カウンタ値Ｐを記憶するアドレスＡＤＰ３，ＡＤＰ４のデータについてのみ、論理レベルを反転した関係が維持されていることを監視する場合と比較して、ＤＲＡＭ７２ｂに残存した各データが瞬断直前の制御周期にＤＲＡＭ７２ｂに記憶されたデータであるか否かを高い信頼性をもって判断することができる。したがって、ＤＲＡＭ７２ｂに対する給電が瞬断から復帰した後に、ＤＲＡＭ７２ｂに記憶されたデータの変化に起因して位置カウンタ値Ｐが誤った値に設定されることを抑制することができる。
【００９９】
（５）位置カウンタ値Ｐ及び累積誤差ＰＧの履歴データの対照データとしてそれら履歴データの論理レベルをビット毎に反転したデータをＤＲＡＭ７２ｂに記憶することとした。これにより、位置カウンタ値Ｐ及び累積誤差ＰＧの履歴データとそれらの対照データとにおいて互いに対応するメモリセルの充電・放電状態が異なる状態となる。そのため、例えば履歴データと同じデータを対照データとして記憶する場合と比較し、ＤＲＡＭ７２ｂに対する給電の瞬断が発生するときに、履歴データとその対照データとにおいて互いに対応するメモリセルの充電・放電状態が同じように変化することに起因して、履歴データとその対照データが同一のデータに変化することを抑制することができ、ＤＲＡＭ７２ｂに対する給電が瞬断から復帰した後に、位置カウンタ値Ｐ又は累積誤差ＰＧが誤った値に設定されることを抑制することのできるようになる。
（第３の実施形態）
以下、本発明にかかる内燃機関の制御システムの第３の実施形態について、上述した第１の実施形態との相違点を中心に説明する。本実施形態では、位置カウンタ値Ｐ及び累積誤差ＰＧの履歴データの対照データとしてそれら履歴データにおいて値が「１」であるビットデータの数の偶奇性を示す冗長データをＤＲＡＭ７２ｂに記憶するようにしている。
【０１００】
以下、これについて図１３のフローチャートを併せ参照して説明する。
図１３に示される一連の処理ではまず、今回の制御周期がＤＲＡＭ７２ｂに対する給電が開始した後の最初の制御周期であるか否かを判断する（ステップＳ２１０）。
【０１０１】
ここで、今回の制御周期が給電開始後の最初の制御周期でない場合には（ステップＳ２１０：ＮＯ）、給電の停止が発生していない旨を判断し、位置センサＳ１，Ｓ２によって出力されるパルス信号に基づいて位置カウンタ値Ｐを更新する。そして、この更新されたカウンタ値の履歴データをＤＲＡＭ７２ｂのアドレスＡＤＰ５に記憶するとともに、そのデータにおいて値が「１」であるビットデータの数の偶奇性を示す判定値ＨＰを対照データとして同データに付加する（ステップＳ２１１）。
【０１０２】
また、上記の演算式（２）に基づいて累積誤差ＰＧを更新し、この更新された累積誤差ＰＧを位置カウンタ値Ｐの参照量としてＤＲＡＭ７２ｂに記憶する。具体的には、更新された累積誤差ＰＧの履歴データをＤＲＡＭ７２ｂのアドレスＡＤＧ５に記憶するとともに、そのデータにおいて値が「１」であるビットデータの数の偶奇性を示す判定値ＨＧを対照データとして同データに付加する（ステップＳ２１２）。
【０１０３】
そして、更新された位置カウンタ値Ｐ及びＥＥＰＲＯＭ７２ｃに記憶された機関運転の開始時の初期値Ｓｇに基づき吸気バルブ２０の最大リフト量の実際値を算出する。この実際値と機関運転状態に基づいて設定された制御目標値との乖離が小さくなるようにブラシレスモータ６０をフィードバック制御し（ステップＳ２１３）、この一連の処理を一旦終了する。
【０１０４】
一方、今回の制御周期が給電開始後の最初の制御周期である場合には（ステップＳ２１０：ＹＥＳ）、給電の停止が発生した旨を判断し、機関運転の開始・停止状態を表す運転フラグＦｋが「オン」であるか否かを判断する（ステップＳ２２０）。運転フラグＦｋが「オフ」である場合には（ステップＳ２２０：ＮＯ）、今回の制御周期が機関始動後の最初の運転周期である旨を判断し、通常の最大リフト量のフィードバック制御（ステップＳ２１１〜ステップＳ２１３）を実行してこの一連の処理を一旦終了する。
【０１０５】
一方、運転フラグＦｋが「オン」である場合には（ステップＳ２２０：ＹＥＳ）、今回の制御周期が機関始動後の最初の制御周期でなく、マイクロコンピュータ７０に対する給電が瞬断状態から復帰した直後の制御周期である旨判断する。この場合には、アドレスＡＤＰ５に残存した残存データにおいて値が「１」であるビットデータの数の偶奇性がその残存データの冗長データ、すなわち判定値ＨＰに示す偶奇性と一致するか否かを判断する（ステップＳ２３０）。
【０１０６】
アドレスＡＤＰ５に残存した残存データにおいて値が「１」であるビットデータの数の偶奇性が判定値ＨＰに示す偶奇性と一致していない場合には（ステップＳ２３０：ＮＯ）、アドレスＡＤＰ５のデータがＤＲＡＭ７２ｂに対する給電の停止により変化した旨判断する。この場合には、コントロールシャフト５４をＨｉ端又はＬｏ端に駆動し、前述した最大リフト量の基準値学習を実行し、アドレスＡＤＰ３，ＡＤＰ４のデータを更新する（ステップＳ２３１）。
【０１０７】
このように最大リフト量の基準値学習を実行すると、位置カウンタ値Ｐの誤差が「０」になるため、アドレスＡＤＧ５のデータをクリアするとともに、累積誤差ＰＧを「０」にリセットした後（ステップＳ２３２）、この一連の処理を一旦終了する。
【０１０８】
一方、アドレスＡＤＰ５に残存した残存データにおいて値が「１」であるビットデータの数の偶奇性が判定値ＨＰに示す偶奇性と一致する場合には（ステップＳ２３０：ＹＥＳ）、更にアドレスＡＤＧ５に残存した残存データにおいて値が「１」であるビットデータの数の偶奇性がその残存データの冗長データ、すなわち判定値ＨＧに示す偶奇性と一致するか否かを判断する（ステップＳ２４０）。
【０１０９】
アドレスＡＤＧ５に残存した残存データにおいて値が「１」であるビットデータの数の偶奇性が判定値ＨＧに示す偶奇性と一致していない場合には（ステップＳ２４０：ＮＯ）、アドレスＡＤＧ５のデータがＤＲＡＭ７２ｂに対する給電の停止により変化した旨判断する。
【０１１０】
この場合には、ＤＲＡＭ７２ｂに対する給電が瞬断から復帰した後、アドレスＡＤＰ５の残存データにおいて値が「１」であるビットデータの数の偶奇性が判定値ＨＰに示す偶奇性と一致しているが、給電の瞬断により、アドレスＡＤＰ５の残存データにおいて値が「１」であるビットデータの数の偶奇性と判定値ＨＰに示す偶奇性とが一致した関係を維持したまま他のデータに変化した可能性が高いと判断し、最大リフト量の基準値学習を実行するとともに、累積誤差ＰＧをリセットして（ステップＳ２３１，ステップＳ２３２）この一連の処理を一旦終了する。
【０１１１】
一方、アドレスＡＤＧ５に残存した残存データにおいて値が「１」であるビットデータの数の偶奇性が判定値ＨＧに示す偶奇性と一致する場合には（ステップＳ２４０：ＹＥＳ）、それらアドレスＡＤＰ５，ＡＤＧ５の残存データが瞬断の直前の制御周期にＤＲＡＭ７２ｂに記憶されたデータ、すなわちいずれのデータについても瞬断による影響は受けていないである旨を判断し、その時点の位置カウンタ値Ｐ及び累積誤差ＰＧをそれらアドレスＡＤＰ５，ＡＤＧ５の残存データによって示される値にそれぞれ設定する（ステップＳ２５０）。そして、その時点の位置カウンタ値Ｐ及びＥＥＰＲＯＭ７２ｃに記憶された機関運転の開始時の初期値Ｓｇに基づき吸気バルブ２０の最大リフト量の実際値を算出して吸気バルブ２０の最大リフト量のフィードバック制御を実行し（ステップＳ２６０）、この一連の処理を一旦終了する。
【０１１２】
以下、図１４を参照して、上述給電の瞬断に対応する処理についてその一具体例を説明する。
図１４に示されるように、例えばＤＲＡＭ７２ｂに対する給電が停止される直前の制御周期に更新された位置カウンタ値Ｐが「１３」であり、累積誤差ＰＧが「５」であるとき、「１３」に対応する履歴データ「１１０１」をアドレスＡＤＰ５の第０〜３ビットに記憶するとともに、その履歴データにおいて値が「１」であるビットデータの数の偶奇性を示す判定値ＨＰのデータ「１」を冗長データとして第４ビットに記憶する（ステップＳ２１１）。また、「５」に対応する履歴データ「０１０１」をアドレスＡＤＧ５の第０〜３ビットに記憶するとともに、その履歴データにおいて値が「１」であるビットデータの数の偶奇性を示す判定値ＨＧのデータ「０」を冗長データとして第４ビットに記憶する（ステップＳ２１２）。
【０１１３】
そして、給電が瞬断から復帰した直後の制御周期に、アドレスＡＤＰ５に残存した残存データにおいて値が「１」であるビットデータの数の偶奇性が判定値ＨＰに示す偶奇性と一致し（ステップＳ２３０：ＹＥＳ）、且つ、アドレスＡＤＧ５に残存した残存データにおいて値が「１」であるビットデータの数の偶奇性がその残存データの冗長データ、すなわち判定値ＨＧに示す偶奇性と一致する場合には（ステップＳ２４０：ＹＥＳ）、これら残存データが瞬断の直前の制御周期にアドレスＡＤＰ５，ＡＤＧ５に記憶された正しいデータである旨を判断する。この場合、その時点の位置カウンタ値Ｐを残存データ「１１０１」に示される値、すなわち「１３」に設定するとともに、累積誤差ＰＧを残存データ「０１０１」に示される値、すなわち「５」に設定する（ステップＳ２１２，Ｓ２１３）。
【０１１４】
一方、その給電が瞬断状態から復帰した直後の制御周期に、例えば図１４の一点鎖線に示されるように、アドレスＡＤＰ５の第３ビットに対応するメモリセルの電荷が放電することにより、アドレスＡＤＰ５に残存したデータが「０１０１」になると、アドレスＡＤＰ５に残存した残存データにおいて値が「１」であるビットデータの数が偶数（２つ）になる。このようにアドレスＡＤＰ５の残存データにおいて値が「１」であるビットデータの数の偶奇性が判定値ＨＰに示す偶奇性と一致しない場合には（ステップＳ２３０：ＮＯ）、アドレスＡＤＰ５のデータがＤＲＡＭ７２ｂに対する給電の停止により変化した旨判断する。この場合、前述したように最大リフト量の基準値学習を実行するとともに、累積誤差ＰＧをリセットする（ステップＳ２３１，ステップＳ２３２）。
【０１１５】
また、その給電が瞬断状態から復帰した直後の制御周期に、図１４の破線に示されるように、アドレスＡＤＰ５の第０ビット及び第４ビットに対応するメモリセルの電荷が放電することにより、アドレスＡＤＰ５の残存データにおいて値が「１」であるビットデータの数の偶奇性が判定値ＨＰに示す偶奇性と一致する場合であっても（ステップＳ２３０：ＹＥＳ）、アドレスＡＤＧ５の第２ビットに対応するメモリセルの電荷が放電することにより、アドレスＡＤＧ５の残存データにおいて値が「１」であるビットデータの数の偶奇性が判定値ＨＧに示す偶奇性と一致していないときに（ステップＳ２４０：ＮＯ）、ビットデータの数の偶奇性と判定値ＨＰに示す偶奇性とが一致する関係を維持したままアドレスＡＤＰ５のデータが他のデータに変化した可能性が高いと判断することができる。この場合には、最大リフト量の基準値学習を実行するとともに、累積誤差ＰＧをリセットする（ステップＳ２３１，ステップＳ２３２）。
【０１１６】
以上説明した第３の実施形態によれば、第１の実施形態の効果（２），（３）に加え、更に以下の効果が得られるようになる。
（６）ＤＲＡＭ７２ｂに対する給電が瞬断から復帰した後に、位置カウンタ値Ｐの履歴データ、対照データの偶奇性関係及び累積誤差ＰＧの履歴データ、対照データの偶奇性関係のいずれも維持されていることを条件にそれらアドレスの残存データが瞬断直前の制御周期に記憶されたデータである旨判断することとした。そのため、例えば位置カウンタ値Ｐを記憶するアドレスＡＤＰ５のデータにおいて値が「１」であるビットデータの数の偶奇性と判定値ＨＰに示す偶奇性とのみを監視する場合と比較して、ＤＲＡＭ７２ｂに残存した各データが瞬断直前の制御周期にＤＲＡＭ７２ｂに記憶されたデータであるか否かを高い信頼性をもって判断することができる。したがって、ＤＲＡＭ７２ｂに対する給電が瞬断から復帰した後に、ＤＲＡＭ７２ｂに記憶されたデータの変化に起因して位置カウンタ値Ｐが誤った値に設定されることを抑制することができる。
【０１１７】
なお、上記実施形態は、これを適宜変更した以下の形態にて実施することもできる。
・上記各実施形態では、位置カウンタ値Ｐの履歴データとその対照データとの対応関係の他、１つの参照量、すなわち累積誤差ＰＧの履歴データとその対照データとの対応関係を監視するようにしているが、これに限らず、２つ以上参照量の履歴データとその対照データとの対応関係を監視する構成を採用することもできる。ここで、参照量の数が多いほど、ＤＲＡＭ７２ｂに対する給電が瞬断から復帰した後、ＤＲＡＭ７２ｂに残存した各データが瞬断前にＤＲＡＭ７２ｂに記憶された正しいデータであるか否かをより高い信頼性をもって判断することができる。
【０１１８】
・上記各実施形態では、位置カウンタ値Ｐの参照量として、位置カウンタ値Ｐの誤差の変更履歴を示す累積誤差ＰＧを採用するようにしているが、これに限らず、例えば電気角カウンタ値Ｅ等、機関状態量にかかる変更履歴を示すもの以外のパラメータを採用することもできる。また、最大リフト量の制御に関連するパラメータに限らず、位置カウンタ値Ｐの信頼性を確認するための専用のパラメータを参照量としてもよい。
【０１１９】
・上記各実施形態では、累積誤差ＰＧの履歴データとその対照データとの対応関係が位置カウンタ値Ｐの履歴データとその対照データとの対応関係と一致する構成を採用するようにしている。これに限らず、例えば位置カウンタ値Ｐの履歴データの対照データをその履歴データと同一のデータとする一方、累積誤差ＰＧの履歴データの対照データについてはこれをその履歴データのミラーデータとするなど、それらの対応関係が異なる対応関係とした構成を採用することもできる。
【０１２０】
・上記各実施形態では、位置カウンタ値Ｐ及び累積誤差ＰＧの履歴データとそれらの対照データとが同一のＤＲＡＭ７２ｂにおいて異なるアドレスに記憶するようにしているが、例えば２つのＤＲＡＭを有するマイクロコンピュータを用いる場合には、それらの履歴データと対照データとを２つのＤＲＡＭに各別に記憶してもよい。
【０１２１】
・第３の実施形態では、位置カウンタ値Ｐ及び累積誤差ＰＧのデータにおいて値が「１」であるビットデータの数が奇数であるときに判定値Ｈを「１」に設定する一方、「１」であるビットデータの数が偶数であるときに判定値Ｈを「０」に設定するようにしている。これに対して、値が「１」であるビットデータの数が奇数であるときに判定値Ｈを「０」に設定する一方、「１」であるビットデータの数が偶数であるときに判定値Ｈを「１」に設定してもよい。また、第３の実施形態では、判定値ＨＰ，ＨＧのデータを冗長データとして位置カウンタ値Ｐ，累積誤差ＰＧのデータに付加してアドレスＡＤＰ５，ＡＤＧ５にそれぞれ記憶するようにしているが、これに限らずそれら判定値ＨＰ，ＨＧのデータをアドレスＡＤＰ５，ＡＤＧ５とは別のアドレスに記憶する構成を採用することもできる。
【０１２２】
・上記実施形態では、位置カウンタ値Ｐ等の入力データや演算結果を一時的に記憶する揮発性メモリとしてＤＲＡＭを採用するようにしているが、例えばＳＲＡＭ等、他種の揮発性メモリを採用することもできる。また、上記実施形態では、初期値Ｓｇを記憶する不揮発性メモリとしてＥＥＰＲＯＭ７２ｃを採用するようにしているが、これに限らず、他の書き換え可能な不揮発性メモリを採用することもできる。
【０１２３】
・上記実施形態では、機関バルブの最大リフト量の変更量と初期値とに基づいてその実際値を算出する内燃機関の制御システムに本発明を適用する場合について例示した。これに限らず、例えばクランクシャフトの回転角を検出する制御システム等、機関状態量の変更量とその初期値とに基づいてその状態量の実際値を算出する他の内燃機関の制御システムにおいても、基本的に同様の態様をもって本発明を適用することができる。
【図面の簡単な説明】
【０１２４】
【図１】この発明の第１の実施形態にかかる内燃機関の動弁装置についてその一部断面構造を示す断面図。
【図２】同実施形態にかかる内燃機関の動弁装置についてその配設態様を示す平面図。
【図３】同実施形態の仲介駆動機構についてその内部構造を示す破断斜視図。
【図４】同実施形態のコントロールシャフト、モータ及びマイクロコンピュータを主に示すブロック図。
【図５】（ａ）〜（ｈ）同実施形態の各センサの出力波形及び各カウンタのカウンタ値が推移するパターン変化を示すタイミングチャート。
【図６】（ａ），（ｂ）同実施形態の各センサの出力信号と電気角カウンタ及び位置カウンタとの関係を示す表。
【図７】（ａ）〜（ｅ）ブラシレスモータの正・逆回転中にノイズが発生した場合における位置センサの出力波形及び電気角カウンタ値、位置カウンタ値の推移を示すタイミングチャート。
【図８】（ａ），（ｂ）ブラシレスモータの正・逆回転中にノイズが発生したときにノイズによる位置カウンタ値Ｐの加減算態様を示す図。
【図９】同実施形態の制御システムによるＤＲＡＭの給電瞬断に対応する処理についてその処理手順を示すフローチャート。
【図１０】同実施形態の制御システムによるＤＲＡＭの給電瞬断に対応する処理についてその一具体例を説明するブロック図。
【図１１】第２の実施形態の制御システムによるＤＲＡＭの給電瞬断に対応する処理についてその処理手順を示すフローチャート。
【図１２】同実施形態の制御システムによるＤＲＡＭの給電瞬断に対応する処理についてその一具体例を説明するブロック図。
【図１３】第３の実施形態の制御システムによるＤＲＡＭの給電瞬断に対応する処理についてその処理手順を示すフローチャート。
【図１４】同実施形態の制御システムによるＤＲＡＭの給電瞬断に対応する処理についてその一具体例を説明するブロック図。
【符号の説明】
【０１２５】
Ｓ１，Ｓ２…位置センサ、Ｄ１〜Ｄ３…電気角センサ、２…シリンダヘッド、３…シリンダヘッドカバー、３ａ，３ｂ…ストッパ、１０…排気バルブ、１１…バルブスプリング、１２…ラッシュアジャスタ、１３…ロッカーアーム、１３ａ…ローラ、１４…排気カムシャフト、１５…カム、１６…リテーナ、２０…吸気バルブ、２１…バルブスプリング、２２…ラッシュアジャスタ、２３…ロッカーアーム、２３ａ…ローラ、２４…吸気カムシャフト、２５…カム、２６…リテーナ、５０…仲介駆動機構、５１…入力部、５１ａ…ローラ、５１ｈ…ヘリカルスプライン、５２…出力部、５２ｈ…ヘリカルスプライン、５３…支持パイプ、５３ａ…長孔、５４…コントロールシャフト、５４ａ…係止部、５５…スライダギア、５５ａ…ヘリカルスプライン、５５ｂ…ヘリカルスプライン、５５ｃ…溝、５６…ブッシュ、５６ａ…貫通孔、５７…係止ピン、６０…ブラシレスモータ、６０ａ…出力軸、６１…変換機構、７０…マイクロコンピュータ、７１…中央演算処理装置（ＣＰＵ）、７２ａ…不揮発性メモリ（ＲＯＭ）、７２ｂ…揮発性メモリ（ＤＲＡＭ）、７２ｃ…不揮発性メモリ（ＥＥＰＲＯＭ）、７３…アクセルセンサ、７４…クランク角センサ、９０…排気動弁装置、１００…吸気動弁装置。
【図１】
2008232063.tif 000003
【図２】
2008232063.tif 000004
【図３】
2008232063.tif 000005
【図４】
2008232063.tif 000006
【図５】
2008232063.tif 000007
【図６】
2008232063.tif 000008
【図７】
2008232063.tif 000009
【図８】
2008232063.tif 000010
【図９】
2008232063.tif 000011
【図１０】
2008232063.tif 000012
【図１１】
2008232063.tif 000013
【図１２】
2008232063.tif 000014
【図１３】
2008232063.tif 000015
【図１４】
2008232063.tif 000016