(57)【要約】      （修正有）【課題】ノッキングの発生頻度を過剰に大きくすることなく、燃料消費率を低減することができる内燃機関の制御装置を提供する【解決手段】ノッキング強度に相関する第１相関値を取得し、第１相関値が閾値以上である場合、点火時期遅角量を増大させ、第１相関値が閾値よりも小さい場合、点火時期遅角量を減少させる。本制御装置は、基準点火時期を点火時期遅角量だけ遅角させた値を目標点火時期として設定する。更に、本制御装置は、ノッキング発生頻度に相関する第２相関値を取得し、点火時期遅角量が所定値よりも大きい場合、第２相関値が第１許容値以下であるときに上記閾値を増大させ、点火時期遅角量が所定値以下である場合、第２相関値が第２許容値以下であっても上記閾値の増大を行わずその閾値の値を保持する。【選択図】図９
2017020378.tif 000002
【特許請求の範囲】
【請求項１】
燃焼室と、同燃焼室内の燃料に点火するための点火栓を含む点火装置と、前記燃焼室におけるノッキングの発生に伴って変化する物理量を検出して同物理量に相関する出力値を出力する検出装置と、を備えた内燃機関に適用され、
前記点火装置の作動を制御する制御部を具備し、
前記制御部は、
前記内燃機関の運転状態に基づいて前記点火装置による点火時期を基準点火時期として取得すると共に、前記検出装置からの出力値に基づいてノッキングの強度に相関する値を第１相関値として取得し、
前記第１相関値が所定の閾値以上である場合、前記基準点火時期を遅角させるための補正量である点火時期遅角量を増大させ、前記第１相関値が前記閾値よりも小さい場合、前記点火時期遅角量を減少させ、
前記基準点火時期を前記点火時期遅角量だけ遅角させた値を目標点火時期として設定し、同設定した目標点火時期にて前記点火装置を作動させる、ように構成された、
内燃機関の制御装置において、
前記制御部は、
前記検出装置からの出力値に基づいてノッキングの発生頻度に相関する値を第２相関値として取得し、
前記点火時期遅角量が所定値よりも大きい場合、前記第２相関値が所定の第１許容値以下であるときに前記閾値を増大させ、
前記点火時期遅角量が前記所定値以下である場合、前記第２相関値が所定の第２許容値以下であっても前記閾値の増大を行わずに該閾値の値を保持する、
制御装置。
【請求項２】
請求項１に記載の内燃機関の制御装置において、
前記制御部は、
前記点火時期遅角量が前記所定値よりも大きい場合、前記第２相関値が前記第１許容値よりも大きいときに前記閾値を減少させ、
前記点火時期遅角量が前記所定値以下である場合においても、前記第２相関値が前記第２許容値よりも大きいときに前記閾値を減少させる、
制御装置。
【請求項３】
請求項１又は請求項２に記載の内燃機関の制御装置において、
前記検出装置は、前記物理量として前記内燃機関の振動を検出して同振動に相関する出力値を出力するノックセンサ、及び、前記物理量として前記燃焼室内の圧力を検出して同圧力に相関する出力値を出力する筒内圧センサを含み、
前記制御部は、前記ノックセンサから出力される出力値に基づいて前記第１相関値を取得すると共に、前記筒内圧センサから出力される出力値に基づいて前記第２相関値を取得する、
制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、点火時期をノッキングが発生しない点火時期に制御する内燃機関の制御装置に関する。
【背景技術】
【０００２】
燃焼室においてノッキングが発生した場合、点火時期をノッキングが発生しない点火時期に制御する内燃機関の制御装置が特許文献１に記載されている。この制御装置は、内燃機関に配設されたノックセンサから出力される出力値のピーク（以下、「ピーク出力値」と称呼する。）が閾値以上になった場合、点火時期を遅角させる。これにより、ノッキングの発生を防止するようにしている。一方、この制御装置は、ノックセンサのピーク出力値が閾値よりも小さい場合、点火時期を進角させるようにしている。これにより、燃料消費率を低減するようにしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭５９−１２１６４号公報
【発明の概要】
【０００４】
ところで、内燃機関の運転状態（機関運転状態）が「ノッキングが発生し難い運転状態」にある場合、閾値を増大させて点火時期が遅角され難くしておいたとしても、そもそも、ノッキングが発生し難いのであるから、ノッキングの発生頻度が過剰に大きくなる可能性は小さい。その一方で、閾値が増大されれば、点火時期が遅角され難いので、燃料消費率を低減することができる。
【０００５】
しかしながら、閾値が増大された状態にあるときに、機関運転状態が「ノッキングが発生し易い運転状態」に移行すると、ノッキングが発生したとしても、ノックセンサのピーク出力値が閾値以上にならず、その結果、点火時期が遅角されない状況が生じる可能性がある。この場合、ノッキングの発生頻度が過剰に大きくなってしまう可能性がある。
【０００６】
本発明は、かかる課題に対処するためになされたものである。即ち、本発明の目的の１つは、ノッキングの発生頻度を過剰に大きくすることなく、燃料消費率を低減することができる内燃機関の制御装置を提供することにある。
【０００７】
本発明に係る制御装置（以下、「本発明装置」と称呼する。）は、燃焼室（２５）と、同燃焼室内の燃料に点火するための点火栓（３７）を含む点火装置（３５）と、前記燃焼室におけるノッキングの発生に伴って変化する物理量を検出して同物理量に相関する出力値を出力する検出装置（７６、７７）と、を備えた内燃機関（１０）に適用される。
【０００８】
前記検出装置は、例えば、前記物理量として前記内燃機関の振動を検出して同振動に相関する出力値を出力するノックセンサ（７６）、及び、前記物理量として前記燃焼室内の圧力（筒内圧）を検出して同圧力に相関する出力値を出力する筒内圧センサ（７７）を含む。
【０００９】
この場合、前記制御部は、前記ノックセンサから出力される出力値に基づいて前記第１相関値を取得すると共に、前記筒内圧センサから出力される出力値に基づいて前記第２相関値を取得する。
【００１０】
本発明装置は、前記点火装置の作動を制御する制御部（８０）を具備する。この制御部は、前記内燃機関の運転状態に基づいて前記点火装置による点火時期を基準点火時期（ＩＧＮbase）として取得すると共に、前記検出装置からの出力値に基づいてノッキングの強度に相関する値を第１相関値（Ｓpeak）として取得する。
【００１１】
更に、前記制御部は、前記第１相関値が所定の閾値（ＳＴＨ）以上である場合、前記基準点火時期を遅角させるための補正量である点火時期遅角量（ＤＬＹ）を増大させる。一方、前記制御部は、前記第１相関値が前記閾値よりも小さい場合、前記点火時期遅角量を減少させる。加えて、前記制御部は、前記基準点火時期を前記点火時期遅角量だけ遅角した値を目標点火時期（ＩＮＧtgt）として設定し、同設定した目標点火時期にて前記点火装置を作動させる。
【００１２】
これによれば、第１相関値が閾値以上であり、従って、比較的大きな強度のノッキングが発生している場合、点火時期遅角量が増大されるので、目標点火時期が遅角される。これにより、ノッキングの発生の解消が図られる。
【００１３】
一方、第１相関値が閾値よりも小さく、従って、ノッキングが発生していないか、或いは、比較的小さい強度のノッキングしか発生していない場合、点火時期遅角量が減少されるので、目標点火時期が進角される。その結果、燃料消費率が低減される。
【００１４】
更に、前記制御部は、前記検出装置からの出力値に基づいてノッキングの発生頻度に相関する値を第２相関値（ＩＤＸ）として取得する。そして、前記制御部は、前記点火時期遅角量が所定値よりも大きい場合、前記第２相関値が所定の第１許容値（ＩＤＸ１）以下であるときに前記閾値を増大させる。
【００１５】
このように閾値が増大されると、第１相関値が閾値以上になり難くなるので、点火時期遅角量が増大され難くなる。その結果、目標点火時期が遅角され難くなる。即ち、目標点火時期がより進角側の時期に設定される。従って、燃料消費率が低減される。
【００１６】
尚、本発明装置においては、「ノッキングの発生頻度に相関する第２相関値」が第１許容値以下であり、従って、ノッキングの発生頻度が小さい場合に、閾値が増大されるので、目標点火時期が遅角され難いとしても、ノッキングの発生頻度が過剰に大きくなる可能性は小さい。
【００１７】
一方、前記制御部は、前記点火時期遅角量が前記所定値以下である場合、前記第２相関値が所定の第２許容値（ＩＤＸ２）以下であっても前記閾値の増大を行わずに該閾値の値を保持する。
【００１８】
このように閾値の増大が行われないと、以下に述べる理由から、ノッキング発生頻度の過剰な増大が防止される。即ち、「ノッキングの強度に相関する第１相関値」が閾値以上である場合に点火時期遅角量が増大されるのであるから、点火時期遅角量が比較的小さく、その点火時期遅角量が所定値以下であるときには、ノッキングが発生していないか、或いは、比較的小さな強度のノッキングしか発生していない。即ち、内燃機関の運転状態が「ノッキングが発生し難い運転状態」にある。従って、「ノッキングの発生頻度に相関する第２相関値」は、第２許容値以下となる頻度が大きい。
【００１９】
このため、点火時期遅角量が所定値以下であり且つ第２相関値が第２許容値以下であるときに閾値を増大するようになっていると、閾値が増大され続け、非常に大きな値になる可能性がある。閾値が非常に大きな値になっている状態で、内燃機関の運転状態が「ノッキングが発生し易い運転状態」に移行した場合、比較的大きな強度のノッキングが発生したとしても、閾値が非常に大きな値になっているので、第１相関値が閾値以上にならない可能性がある。このため、比較的大きな強度のノッキングが発生しているにもかかわらず、目標点火時期が遅角されず、その結果、ノッキングの発生頻度が過剰に増大する可能性がある。
【００２０】
一方、本発明装置によれば、点火時期遅角量が所定値以下である場合、第２相関値が第２許容値以下であるときであっても、閾値の増大は行われない。従って、閾値が非常に大きな値になる可能性が小さく、その結果、ノッキングの発生頻度の過剰な増大が防止される。
【００２１】
更に、前記制御部は、前記点火時期遅角量が前記所定値よりも大きい場合、前記第２相関値が前記第１許容値よりも大きいときに前記閾値を減少させるようになっていると好ましい。加えて、前記制御部は、前記点火時期遅角量が前記所定値以下である場合においても、前記第２相関値が前記第２許容値よりも大きいときに前記閾値を減少させるようになっていると好ましい。
【００２２】
これによれば、「ノッキングの発生頻度に相関する第２相関値」が第１許容値よりも大きく、従って、ノッキングの発生頻度が大きいとき、並びに、第２相関値が第２許容値よりも大きく、従って、ノッキングの発生頻度が大きいときに、閾値が減少される。その結果、「ノッキングの強度に相関する第１相関値」が閾値以上になり易くなる。このため、点火時期遅角量が増大され易くなるので、目標点火時期が遅角され易くなる。これにより、ノッキングの発生が防止される。
【００２３】
上記説明においては、発明の理解を助けるために、実施形態に対応する発明の構成に対して、実施形態で用いた符号を括弧書きで添えているが、発明の各構成要素は、前記符号によって規定される実施形態に限定されるものではない。本発明の他の目的、他の特徴及び付随する利点は、以下の図面を参照しつつ記述される本発明の実施形態についての説明から容易に理解されるであろう。
【図面の簡単な説明】
【００２４】
【図１】図１は、本発明の実施形態に係る制御装置が適用される内燃機関の全体図である。
【図２】図２は、図１に示したＣＰＵが実行するルーチンを示したフローチャートである。
【図３】図３は、図１に示したＣＰＵが実行するルーチンを示したフローチャートである。
【図４】図４の（Ａ）は、ノッキングが発生していないときの筒内圧の波形を示した図であり、（Ｂ）は、ノッキングが発生したときの筒内圧の波形を示した図であり、（Ｃ）は、ノック指標値を説明するための図である。
【図５】図５は、ノッキングの発生頻度とノック指標値との関係を示した図である。
【図６】図６は、充填効率と点火時期との関係を示した図である。
【図７】図７は、図１に示したＣＰＵが実行するルーチンを示したフローチャートである。
【図８】図８は、図１に示したＣＰＵが実行する第１制御ルーチンを示したフローチャートである。
【図９】図９は、図１に示したＣＰＵが実行する第２制御ルーチンを示したフローチャートである。
【発明を実施するための形態】
【００２５】
以下、図面を参照しながら本発明の実施形態に係る内燃機関の制御装置（以下、「本制御装置」と称呼する。）について説明する。
【００２６】
＜構成＞
本制御装置は、図１に示した内燃機関（機関）１０に適用される。機関１０は、多気筒（本例では直列４気筒）・４サイクル・ピストン往復動型・火花点火式ガソリン機関である。図１は、１つの気筒のみを示しているが、他の気筒も同様な構成を備えている。
【００２７】
内燃機関１０は、シリンダブロック、シリンダブロックロワーケース及びオイルパン等を含むシリンダブロック部２０、シリンダブロック部２０の上に固定されるシリンダヘッド部３０、シリンダブロック部２０に燃料と空気とからなる混合気を供給するための吸気システム４０、及び、シリンダブロック部２０からの排ガスを外部に放出するための排気システム５０、を備えている。
【００２８】
シリンダブロック部２０は、シリンダ２１、ピストン２２、コンロッド２３、及び、クランクシャフト２４を備えている。ピストン２２は、シリンダ２１内を往復動する。ピストン２２の往復動は、コンロッド２３を介してクランクシャフト２４に伝達され、これにより、クランクシャフト２４が回転するようになっている。シリンダ２１、ピストン２２及びシリンダヘッド部３０は、燃焼室（気筒）２５を形成している。
【００２９】
シリンダヘッド部３０は、燃焼室２５に連通した吸気ポート３１、吸気ポート３１を開閉する吸気弁３２、燃焼室２５に連通した排気ポート３３、排気ポート３３を開閉する排気弁３４、点火装置３５、及び、燃料噴射弁３９を備えている。
【００３０】
燃料噴射弁３９は、後述するエンジンＥＣＵ（電子制御ユニット）８０の指示に応答して開弁し、吸気ポート３１に燃料を噴射するようになっている。
【００３１】
点火装置３５は、点火栓３７、及び、点火栓３７に与える高電圧を発生するイグニッションコイルを含むイグナイタ３８を含む。イグナイタ３８は、後述するＥＣＵ８０の指示に応答してイグニッションコイルによって高電圧を発生するようになっている。この高電圧は点火栓３７に与えられ、点火栓３７によって火花が生成される。これにより、燃焼室２５内の燃料が点火される。
【００３２】
吸気システム４０は、吸気ポート３１に連通したインテークマニホールド４１、インテークマニホールド４１に連通したサージタンク４２、及び、サージタンク４２に一端が接続された吸気管４３を備えている。吸気ポート３１、インテークマニホールド４１、サージタンク４２及び吸気管４３は、吸気通路を構成している。
【００３３】
更に、吸気システム４０は、吸気管４３の他端から下流（サージタンク４２）に向けて順に、吸気管４３に配設されたエアフィルタ４４、スロットル弁４５及びスロットル弁アクチュエータ４５ａを備えている。
【００３４】
スロットル弁４５は、吸気管４３に回転可能に支持され、スロットル弁アクチュエータ４５ａによって駆動されることにより開度が調整されるようになっている。これにより、スロットル弁４５は、吸気管４３の通路断面積を可変とするようになっている。スロットル弁アクチュエータ４５ａは、ＤＣモータからなり、ＥＣＵ８０の指示に応答してスロットル弁４５を駆動するようになっている。
【００３５】
排気システム５０は、排気ポート３３に連通するエキゾーストマニホールド５１、及び、エキゾーストマニホールド５１に接続された排気管５２を備えている。排気ポート３３、エキゾーストマニホールド５１及び排気管５２は、排気通路を構成している。
【００３６】
ＥＣＵ８０は、周知のマイクロコンピュータを含む電子回路であり、ＣＰＵ、ＲＯＭ、ＲＡＭ、バックアップＲＡＭ及びインターフェース等を含む。ＥＣＵ８０は、以下に述べるセンサ類と接続されていて、これらのセンサからの信号（出力値）を受信するようになっている。更に、ＥＣＵ８０は、各種アクチュエータ（スロットル弁アクチュエータ４５ａ、燃料噴射弁３９及び点火装置３５等）に指示信号（駆動信号）を送出するようになっている。
【００３７】
ＥＣＵ８０は、エアフローメータ７１、スロットルポジションセンサ７２、水温センサ７３、クランク角度センサ７４、アクセル操作量センサ７５、ノックセンサ（検出装置）７６及び筒内圧センサ（検出装置）７７と接続されている。
【００３８】
エアフローメータ７１は、吸気管４３に配設されている。エアフローメータ７１は、そこを通過して燃焼室２５に吸入される空気の質量流量（吸気量）を測定し、その吸気量Ｇａを表す信号を出力するようになっている。
【００３９】
スロットルポジションセンサ７２は、スロットル弁４５に近接して吸気管４３に配設されている。スロットルポジションセンサ７２は、スロットル弁４５の開度（スロットル弁開度）を検出し、そのスロットル弁開度ＴＡを表す信号を出力するようになっている。
【００４０】
水温センサ７３は、シリンダブロック部２０に配設されている。水温センサ７３は、機関１０を冷却する冷却水の温度（冷却水温）を測定し、その冷却水温ＴＨＡを表す信号を出力するようになっている。
【００４１】
クランク角度センサ７４は、シリンダブロック部２０に配設されている。クランク角度センサ７４は、クランクシャフト２４の回転位置（即ち、クランク角度）に応じた信号を出力するようになっている。ＥＣＵ８０は、クランク角度センサ７４及び図示しないカムポジションセンサからの信号に基づいて、所定の気筒の圧縮上死点を基準とした機関１０のクランク角度（絶対クランク角度）ＣＡを取得する。更に、ＥＣＵ８０は、クランク角度センサ７４からの信号に基づいて、機関回転速度ＮＥを取得する。
【００４２】
アクセル操作量センサ７５は、アクセルペダル９１の操作量（アクセル操作量）を検出し、そのアクセル操作量Ａccpを表す信号を出力するようになっている。ＥＣＵ８０は、この信号に基づいてアクセル操作量Ａccpを取得する。
【００４３】
ノックセンサ７６は、シリンダブロック部２０のシリンダブロックに配設されている。ノックセンサ７６は、シリンダブロック（機関１０）の振動（物理量）を検出し、その振動に応じた出力値（信号）を出力するようになっている。ノックセンサ７６は、検出した振動の大きさが大きいほど大きい出力値を出力する。
【００４４】
筒内圧センサ７７は、燃焼室２５内の圧力を検出可能なようにシリンダブロック部２０のシリンダブロックに配設されている。筒内圧センサ７７は、燃焼室２５内の圧力（筒内圧、物理量）を測定し、その筒内圧Ｐｃを表す出力値（信号）を出力するようになっている。ＥＣＵ８０は、この信号に基づいて筒内圧Ｐｃを取得する。
【００４５】
＜目標点火時期の制御の概要＞
次に、本制御装置による目標点火時期の制御（設定）の概要を説明する。本例においては、「燃料消費率が最も小さくなる点火時期（最適点火時期）ＩＧＮmbt」が機関回転速度ＮＥ及びアクセル操作量Ａccp毎に実験等によって求められ、これら最適点火時期ＩＧＮmbtが基準点火時期ＩＧＮbaseとして機関回転速度ＮＥ及びアクセル操作量Ａccpを引数としたルックアップテーブルMapIGNbase(NE,Accp)の形でＥＣＵ８０のＲＯＭに予め格納されている。
【００４６】
本制御装置は、機関回転速度ＮＥ及びアクセル操作量Ａccpを前記テーブルMapIGNbase(NE,Accp)に適用することにより、基準点火時期ＩＧＮbaseを取得する。
【００４７】
更に、本制御装置は、各気筒の１機関サイクル（吸気行程、圧縮行程、膨張行程及び排気行程の４つの行程からなるサイクル）においてノックセンサ７６から出力された出力値のうち、最も大きい出力値（以下、「ピーク出力値」と称呼する。）Ｓpeakを取得する。
【００４８】
本制御装置は、取得したピーク出力値（第１相関値）Ｓpeakが所定の閾値ＳＴＨ以上である場合、ノッキングが発生しており且つそのノッキングの強度の大きさ（以下、単に「ノッキング強度」と称呼する。）が許容値よりも大きいと判断する。そこで、この場合、本制御装置は、前記取得した基準点火時期ＩＧＮbaseを遅角させるための補正量（以下、「点火時期遅角量」又は単に「遅角量」と称呼する。）ＤＬＹを増大させる。
【００４９】
本制御装置は、その増大させた遅角量ＤＬＹを前記取得した基準点火時期ＩＧＮbaseに加えることにより得られる点火時期を目標点火時期ＩＧＮtgtとして設定する。即ち、本制御装置は、前記取得した基準点火時期ＩＧＮbaseを前記増大させた遅角量ＤＬＹだけ遅角した時期を目標点火時期ＩＧＮtgtとして設定する。これにより、目標点火時期ＩＧＮtgtが遅角される。この目標点火時期ＩＧＮtgtの遅角により、許容値よりも大きい強度のノッキングの発生の解消が図られる。
【００５０】
一方、本制御装置は、前記取得したピーク出力値Ｓpeakが所定の閾値ＳＴＨよりも小さい場合、ノッキングが発生していないか或いは許容値以下の強度のノッキングしか発生していないと判断する。更に、このとき、本制御装置は、目標点火時期ＩＧＮtgtを進角させたとしてもノッキングが発生しないか或いは許容値以下の強度のノッキングしか発生しない可能性があると判断する。そこで、この場合、本制御装置は、遅角量ＤＬＹを減少させる。
【００５１】
本制御装置は、その減少させた遅角量ＤＬＹを前記取得した基準点火時期ＩＧＮbaseに加えることにより得られる点火時期を目標点火時期ＩＧＮtgtとして設定する。即ち、本制御装置は、前記取得した基準点火時期ＩＧＮbaseを前記減少させた遅角量ＤＬＹだけ遅角した時期を目標点火時期ＩＧＮtgtとして設定する。これにより、目標点火時期ＩＧＮtgtが進角される。この目標点火時期ＩＧＮtgtの進角により、燃料消費率が低減される。
【００５２】
以上が目標点火時期の制御の概要である。これにより、許容値よりも大きい強度のノッキングの発生を防止しつつ、燃料消費率を低減させることができる。
【００５３】
＜目標点火時期等の具体的な制御＞
本制御装置による目標点火時期等の具体的な制御（設定）について説明する。本制御装置のＥＣＵ８０のＣＰＵ（以下、単に「ＣＰＵ」と称呼する。）は、所定のタイミング毎に図２にフローチャートにより示したルーチンを実行するようになっている。従って、ＣＰＵは、所定のタイミングになると、図２のステップ２００から処理を開始し、以下に述べるステップ２０５乃至ステップ２２５の処理を順に行う。その後、ＣＰＵは、ステップ２９５に進み、本ルーチンを一旦終了する。
【００５４】
ステップ２０５：ＣＰＵは、機関回転速度ＮＥ及びアクセル操作量Ａccpを取得する。
ステップ２１０：ＣＰＵは、ステップ２０５にて取得した機関回転速度ＮＥ及び充填効率（機関負荷）ＫＬの代用値であるアクセル操作量ＡccpをルックアップテーブルMapQfuel(NE,Accp)に適用することにより、燃料噴射弁から噴射すべき燃料噴射量Ｑfuelを取得する。テーブルMapQfuel(NE,Accp)によれば、燃料噴射量Ｑfuelは、機関回転速度ＮＥが大きいほど小さい値として取得され、アクセル操作量Ａccpが大きいほど大きい値として取得される。
【００５５】
更に、ＣＰＵは、取得した燃料噴射量Ｑfuelとステップ２０５にて取得した機関回転速度ＮＥとに基づいて、燃料噴射量Ｑfuelの燃料を燃料噴射弁３９から噴射するために燃料噴射弁３９を開弁させておく時間（燃料噴射時間）Ｔfuelを取得する。
【００５６】
更に、ＣＰＵは、ステップ２０５にて取得した機関回転速度ＮＥ及びアクセル操作量ＡccpをルックアップテーブルMapSfuel(NE,Accp)に適用することにより、燃料噴射弁３９からの燃料噴射の開始時期（燃料噴射開始時期）Ｓfuelを取得する。
【００５７】
ステップ２１５：ＣＰＵは、ステップ２０５にて取得した機関回転速度ＮＥ及びアクセル操作量ＡccpをルックアップテーブルMapIGNbase(NE,Accp)に適用することにより、基準点火時期ＩＧＮbaseを取得する。更に、ＣＰＵは、後述するように取得されてＥＣＵ８０のＲＡＭに格納されている点火時期遅角量ＤＬＹnowを取得する。
【００５８】
ステップ２２０：ＣＰＵは、ステップ２１５にて取得した基準点火時期ＩＧＮbaseにステップ２１５にて取得した遅角量ＤＬＹnowを加えることにより、目標点火時期ＩＧＮtgtを取得する（ＩＧＮtgt＝ＩＧＮbase＋ＤＬＹnow）。即ち、ＣＰＵは、ステップ２１５にて取得した基準点火時期ＩＧＮbaseをステップ２１５にて取得した遅角量ＤＬＹnowだけ遅角した点火時期を目標点火時期ＩＧＮtgtとして取得する。遅角量ＤＬＹnowは、正の値であり、遅角量ＤＬＹnowが大きいほど、目標点火時期ＩＧＮtgtは、遅い時期（遅角された時期）として取得される。
【００５９】
ステップ２２５：ＣＰＵは、上記取得（設定、決定）された燃料噴射開始時期Ｓfuelにおいて燃料噴射弁３９の駆動を開始し、上記取得（設定、決定）された燃料噴射時間Ｔfuelだけ燃料噴射弁３９の駆動を継続するための処理を行うと共に、上記取得（設定、決定）された目標点火時期ＩＧＮtgtにおいて点火装置３５を駆動する処理を行う。
【００６０】
これにより、燃料噴射開始時期Ｓfuelにおいて燃料噴射弁３９の駆動が開始され、その駆動が燃料噴射時間Ｔfuelだけ継続され、燃料噴射弁３９の駆動が終了した後、目標点火時期ＩＧＮtgtにおいて点火装置３５が駆動される。
【００６１】
＜遅角量の具体的な制御＞
更に、ＣＰＵは、図３にフローチャートにより示したルーチンを各気筒の膨張下死点のタイミングで実行するようになっている。従って、ＣＰＵは、各気筒の膨張下死点のタイミングになると、図３のステップ３００から処理を開始してステップ３０５に進み、ピーク出力値Ｓpeak、閾値ＳＴＨnow及び遅角量ＤＬＹnowをＥＣＵ８０のＲＡＭから取得する。
【００６２】
ピーク出力値Ｓpeakは、ＣＰＵが別途実行するルーチンによってノックセンサ７６からの出力値に基づいて取得されてＥＣＵ８０のＲＡＭに格納されている。閾値ＳＴＨnowは、後に述べる図８又は図９のルーチン（図８のステップ８４５及び図９のステップ９３５を参照。）によってＥＣＵ８０のＲＡＭに格納される。遅角量ＤＬＹnowは、前回の図３のルーチンの実行時にステップ３３０にてＥＣＵ８０のＲＡＭに格納されている。
【００６３】
次いで、ＣＰＵは、ステップ３１０に進み、ステップ３０５にて取得したピーク出力値Ｓpeakがステップ３０５にて取得した閾値ＳＴＨnow以上であるか否かを判定する。ピーク出力値Ｓpeakが閾値ＳＴＨnow以上である場合（即ち、許容値よりも大きい強度のノッキングが発生していると判断される場合）、ＣＰＵはステップ３１０にて「Ｙｅｓ」と判定し、以下に述べるステップ３１５の処理を行う。
【００６４】
ステップ３１５：ＣＰＵは、ステップ３０５にて取得した遅角量ＤＬＹnowに所定値ΔＤＬＹｄを加えることにより、遅角量ＤＬＹを新たに取得する（ＤＬＹ＝ＤＬＹnow＋ΔＤＬＹｄ）。この場合、遅角量ＤＬＹは増大される。
【００６５】
次いで、ＣＰＵは、ステップ３２０に進み、ステップ３１５にて取得した遅角量ＤＬＹがその上限値ＤＬＹmaxよりも大きいか否かを判定する。遅角量ＤＬＹが上限値ＤＬＹmaxよりも大きい場合、ＣＰＵはステップ３２０にて「Ｙｅｓ」と判定し、以下に述べるステップ３２５及びステップ３３０の処理を順に行う。その後、ＣＰＵは、ステップ３９５に進み、本ルーチンを一旦終了する。
【００６６】
ステップ３２５：ＣＰＵは、遅角量ＤＬＹを上限値ＤＬＹmaxに設定する。
ステップ３３０：ＣＰＵは、ステップ３２５にて設定した遅角量ＤＬＹを遅角量ＤＬＹnowとしてＥＣＵ８０のＲＡＭに格納する（遅角量ＤＬＹnowを更新する。）。
【００６７】
一方、ＣＰＵがステップ３２０の処理を実行する時点において遅角量ＤＬＹが上限値ＤＬＹmax以下である場合、ＣＰＵはそのステップ３２０にて「Ｎｏ」と判定し、ステップ３３０に直接進む。ＣＰＵは、ステップ３３０に進むと、ステップ３１５にて取得した遅角量ＤＬＹを遅角量ＤＬＹnowとしてＥＣＵ８０のＲＡＭに格納する。その後、ＣＰＵは、ステップ３９５に進み、本ルーチンを一旦終了する。
【００６８】
一方、ＣＰＵがステップ３１０の処理を実行する時点においてピーク出力値Ｓpeakが閾値ＳＴＨnowよりも小さい場合（即ち、許容値以下の強度のノッキングしか発生していないと判断される場合）、ＣＰＵはそのステップ３１０にて「Ｎｏ」と判定し、以下に述べるステップ３３５の処理を行う。
【００６９】
ステップ３３５：ＣＰＵは、ステップ３０５にて取得した遅角量ＤＬＹnowから所定値ΔＤＬＹａを減ずることにより、遅角量ＤＬＹを新たに取得する（ＤＬＹ＝ＤＬＹnow−ΔＤＬＹａ）。この場合、遅角量ＤＬＹは減少される。本例において、所定値ΔＤＬＹａは、所定値ΔＤＬＹｄよりも小さく、例えば、所定値ΔＤＬＹｄの十分の一の値に設定される。
【００７０】
次いで、ＣＰＵは、ステップ３４０に進み、ステップ３３５にて取得した遅角量ＤＬＹが「０」よりも小さいか否かを判定する。遅角量ＤＬＹが「０」よりも小さい場合、ＣＰＵはステップ３４０にて「Ｙｅｓ」と判定してステップ３４５に進み、遅角量ＤＬＹを「０」に設定する。次いで、ＣＰＵは、ステップ３３０に進み、ステップ３４５にて設定された遅角量ＤＬＹを遅角量ＤＬＹnowとしてＥＣＵ８０のＲＡＭに格納する。その後、ＣＰＵは、ステップ３９５に進み、本ルーチンを一旦終了する。
【００７１】
これに対し、ステップ３３５にて取得された遅角量ＤＬＹが「０」以上である場合、ＣＰＵはステップ３４０にて「Ｎｏ」と判定してステップ３３０に直接進み、ステップ３３５にて取得した遅角量ＤＬＹを遅角量ＤＬＹnowとしてＥＣＵ８０のＲＡＭに格納する。その後、ＣＰＵは、ステップ３９５に進み、本ルーチンを一旦終了する。
【００７２】
以上が本制御装置による目標点火時期等の具体的な制御である。これにより、許容値よりも大きい強度のノッキングが発生していると判断される場合、遅角量ＤＬＹnowが増大され、その結果、目標点火時期が遅角される。一方、許容値以下の強度のノッキングしか発生していないと判断される場合、遅角量ＤＬＹnowが減少され、その結果、目標点火時期が進角される。
【００７３】
＜閾値の制御の概要＞
次に、本制御装置による閾値ＳＴＨnowの制御（設定）の概要について説明する。本制御装置は、前記遅角量ＤＬＹnowが「０」よりも大きい場合、燃料消費率の低減を目的として、前記閾値ＳＴＨnowを以下のように制御（設定）する第１制御を行う。
【００７４】
＜第１制御＞
第１制御においては、本制御装置は、所定回数の機関サイクル中におけるノッキングの発生頻度に相関する値（以下、「ノック指標値」と称呼する。）ＩＤＸを以下のようにして取得する。
【００７５】
即ち、ノッキングが発生していない場合、燃焼室２５内の圧力（筒内圧）Ｐｃは、図４の（Ａ）に示した波形Ｗnormalとなる。本制御装置は、この波形Ｗnormalのデータを基準波形ＷnormalとしてＥＣＵ８０のＲＯＭに予め記憶している。
【００７６】
更に、本制御装置は、各燃焼室２５の各機関サイクルにおいて筒内圧Ｐｃを取得し、この取得した筒内圧Ｐｃに基づいて実際の筒内圧Ｐｃの波形（以下、「実波形」と称呼する。）Ｗactualを取得する。加えて、本制御装置は、この取得した実波形actualと前記基準波形Ｗnormalとの間の面積（以下、「波形間面積」と称呼する。）ＳＡを以下のようにして取得する。
【００７７】
即ち、図４の（Ｂ）に示したように、ノッキングが発生すると、筒内圧Ｐｃの波形は、波形Ｗknockのようになる。従って、ノッキングが図４の（Ｂ）に示したように発生した場合、本制御装置が取得する波形間面積ＳＡは、図４の（Ｃ）に示したように、実波形Ｗactual（波形Ｗnormal）と基準波形Ｗnormalとの間に形成される面積ＳＡ１乃至ＳＡ９の合計面積ＳＡtotalとして取得される。
【００７８】
更に、本制御装置は、所定回数の機関サイクルにおいて取得した波形間面積ＳＡ（＝合計面積ＳＡtotal）の合計をノック指標値（第２相関値）ＩＤＸとして取得する。
【００７９】
そして、本例においては、図５に示したように、ノッキング発生頻度が「遅角量ＤＬＹが「０」よりも大きくなる機関運転状態における許容頻度Ｎknock」である場合に取得されるべきノック指標値ＩＤＸが「所定の許容値（第１許容値）ＩＤＸ１」として設定されている。
【００８０】
本制御装置は、前記取得したノック指標値ＩＤＸが前記許容値ＩＤＸ１以下である場合、閾値ＳＴＨnowを所定値ΔＳａ１だけ増大させる。別の言い方をすると、本制御装置は、ノッキング発生頻度が許容頻度以下である場合、閾値ＳＴＨnowを所定値ΔＳａ１だけ増大させる。
【００８１】
このように閾値ＳＴＨnowが増大されることにより、以下に述べる理由から、燃料消費率を低減することができる。即ち、上述したように、本制御装置は、ピーク出力値Ｓpeakが閾値ＳＴＨnow以上である場合、遅角量ＤＬＹを増大させることにより目標点火時期ＩＧＮtgtを遅角する（図３のステップ３１５及び図２のステップ２１５並びにステップ２２０を参照。）。従って、閾値ＳＴＨnowが増大されると、ピーク出力値Ｓpeakが閾値ＳＴＨnow以上になり難くなる。このため、遅角量ＤＬＹが増大され難くなり、その結果、目標点火時期ＩＧＮtgtが遅角され難くなる。これにより、目標点火時期ＩＧＮtgtがより進角側の時期に設定されるので、燃料消費率を低減することができる。
【００８２】
尚、本制御装置は、前記取得したノック指標値ＩＤＸが許容値ＩＤＸ１よりも大きい場合、閾値ＳＴＨnowを所定値ΔＳｄ１だけ減少させる。このように閾値ＳＴＨnowが減少されると、ピーク出力値Ｓpeakが閾値ＳＴＨよりも大きくなり易くなる。このため、遅角量ＤＬＹが増大され易くなり、その結果、目標点火時期ＩＧＮtgtが遅角され易くなる。これにより、目標点火時期ＩＧＮtgtがより遅角側の時期に設定されるので、ノッキング発生頻度を許容頻度以下に維持することができる。
【００８３】
＜第２制御＞
一方、本制御装置は、前記遅角量ＤＬＹが「０」である場合、ノッキング発生頻度の過剰な増大の防止を目的として、前記閾値ＳＴＨnowを以下のように制御（設定）する第２制御を行う。
【００８４】
第２制御において、本制御装置は、第１制御と同様に、ノック指標値ＩＤＸを取得する。更に、本例においては、前記許容値ＩＤＸ１と同様に、ノッキング発生頻度が「遅角量ＤＬＹが「０」である機関運転状態における許容頻度Ｎknock」である場合に取得されるべきノック指標値ＩＤＸが「所定の許容値（第２許容値）ＩＤＸ２」として設定されている。
【００８５】
本制御装置は、前記取得したノック指標値ＩＤＸが所定の許容値ＩＤＸ２よりも大きい場合、第１制御と同様に、閾値ＳＴＨnowを所定値ΔＳｄ２だけ減少させる。このように閾値ＳＴＨnowが減少されると、第１制御に関連して説明した理由と同じ理由から、ノッキング発生頻度を許容頻度以下に維持することができる。尚、所定値ΔＳｄ２は、前記所定値ΔＳｄ１と異なる値であってもよいし、同じ値であってもよい。
【００８６】
一方、本制御装置は、前記取得したノック指標値ＩＤＸが許容値ＩＤＸ２以下である場合、第１制御とは異なり、閾値ＳＴＨnowを増大させず、現在の閾値ＳＴＨnowを維持する。
【００８７】
このように現在の閾値ＳＴＨnowを維持することにより、以下に述べる理由から、ノッキング発生頻度の過剰な増大を防止することができる。即ち、図６にラインＬmbtで示したように、充填効率ＫＬが増大すると、燃料消費率が最も小さくなる点火時期（最適点火時期）ＩＧＮmbtは遅角側に移行する。同様に、図６にラインＬknockで示したように、充填効率ＫＬが増大すると、ノッキングの発生を防止することができる最も進角側の点火時期（以下、「ノック点火時期」と称呼する。）ＩＧＮknockも遅角側に移行する。
【００８８】
しかしながら、ラインＬmbtとラインＬknockとの傾きが異なることから、これらラインＬmbt及びＬknockは、或る充填効率（以下、「境界充填効率」と称呼する。）ＫＬｂにおいて交差する。
【００８９】
いま、充填効率ＫＬが境界充填効率ＫＬｂよりも大きいと仮定すると、最適点火時期ＩＧＮmbtは、ノック点火時期ＩＧＮknockよりも進角側にある。従って、上述したように取得される基準点火時期ＩＧＮbaseは、ノック点火時期ＩＧＮknockよりも進角側にある。このため、目標点火時期ＩＧＮtgtが基準点火時期ＩＧＮbaseに設定された場合、ノッキングが発生するので、上述した本制御装置による遅角量ＤＬＹの制御により、遅角量ＤＬＹが「０」から増大される。更に、この遅角量ＤＬＹの増大は、目標点火時期ＩＧＮtgtがノック点火時期ＩＧＮknockよりも進角側にある間、続く。
【００９０】
一方、充填効率ＫＬが境界充填効率ＫＬｂ以下である場合、最適点火時期ＩＧＮmbtは、ノック点火時期ＩＧＮknockよりも遅角側にある。従って、目標点火時期ＩＧＮtgtが基準点火時期ＩＧＮbaseに設定されたとしても、ノッキングは発生しないので、上述した本制御装置による遅角量ＤＬＹの制御によれば、遅角量ＤＬＹは「０」である。
【００９１】
つまり、遅角量ＤＬＹが「０」である場合、目標点火時期ＩＧＮtgtが基準点火時期ＩＧＮbaseに設定されたとしても、ノッキングは発生しない。従って、このときに取得されるノック指標値ＩＤＸは、極めて小さく、常に許容値ＩＤＸ２以下となる。
【００９２】
このため、第２制御において、第１制御と同様に、ノック指標値ＩＤＸが許容値ＩＤＸ２以下であるときに閾値ＳＴＨnowを増大させるようになっていると、充填効率ＫＬが境界充填効率ＫＬｂ以下である間、閾値ＳＴＨnowが増大され続ける。その結果、閾値ＳＴＨnowが非常に大きな値になる可能性がある。
【００９３】
ここで、充填効率ＫＬが境界充填効率ＫＬｂよりも大きくなると、ノッキングが発生し易くなる。このとき、閾値ＳＴＨnowが非常に大きな値になっていると、ピーク出力値Ｓpeakが閾値ＳＴＨnow以上にならず、従って、遅角量ＤＬＹが増大されず、その結果、目標点火時期ＩＧＮtgtが遅角されない。このため、大きな強度のノッキングが発生する。
【００９４】
勿論、大きな強度のノッキングが発生すれば、ノック指標値ＩＤＸが許容値ＩＤＸ２よりも大きくなり、その結果、第２制御によって閾値ＳＴＨnowが減少され、やがては、ピーク出力値Ｓpeakが閾値ＳＴＨnow以上になる。これにより、目標点火時期ＩＧＮtgtが遅角されるので、ノッキングが発生しなくなる。しかしながら、「目標点火時期ＩＧＮtgtの遅角が行われるのに十分な値」まで閾値ＳＴＨnowが減少されるまでの間、大きな強度のノッキングが発生し続けると共に、ノッキングの発生頻度が過剰に増大した状態が継続してしまう。
【００９５】
これに対し、ノック指標値ＩＤＸが許容値ＩＤＸ２以下である場合であっても、閾値ＳＴＨnowを増大させず、現在の閾値ＳＴＨnowを維持すれば、閾値ＳＴＨnowが非常に大きな値になることが防止される。このため、充填効率ＫＬが境界充填効率ＫＬｂよりも大きくなったときに、大きな強度のノッキングが発生し続けることが防止されると共に、ノッキングの発生頻度の過剰な状態が防止される。
【００９６】
こうした理由から、第２制御によれば、ノッキング発生頻度の過剰な増大を防止することができる。
【００９７】
＜閾値の具体的な制御＞
次に、本制御装置による閾値ＳＴＨnowの具体的な制御（設定）について説明する。ＣＰＵは、図７にフローチャートにより示したルーチンを図３のルーチンの終了に続いて実行するようになっている。従って、ＣＰＵは、所定のタイミングになると、図７のステップ７００から処理を開始し、以下に述べるステップ７０２及びステップ７０５の処理を順に行う。
【００９８】
ステップ７０２：ＣＰＵは、機関サイクルカウンタＮcylの値を「１」だけカウントアップする。機関サイクルカウンタＮcylは、同機関サイクルカウンタＮcylがクリアされてから（後述する図８のステップ８５０及び図９のステップ９４０を参照。）行われた機関サイクルの回数を表すカウンタである。別の言い方をすると、機関サイクルカウンタＮcylは、前回、後述する第１制御又は第２制御が行われた後に行われた機関サイクルの回数を表すカウンタである。
【００９９】
ステップ７０５：ＣＰＵは、遅角量ＤＬＹnow及びノック指標値ＩＤＸをＥＣＵ８０のＲＡＭから取得する。遅角量ＤＬＹnowは、図３のステップ３３０にてＥＣＵ８０のＲＡＭに格納されている。ノック指標値ＩＤＸは、ＣＰＵが別途実行するルーチンによって筒内圧センサ７７からの出力値に基づいて取得されてＥＣＵ８０のＲＡＭに格納されている。
【０１００】
次いで、ＣＰＵは、ステップ７１０に進み、ステップ７０５にて取得した遅角量ＤＬＹnowが「０」よりも大きいか否かを判定する。遅角量ＤＬＹnowが「０」よりも大きい場合、ＣＰＵはステップ７１０にて「Ｙｅｓ」と判定してステップ７１２に進み、ステップ７０２にてカウントアップした機関サイクルカウンタＮcylの値が所定値Ｎ１以上であるか否かを判定する。
【０１０１】
ＣＰＵがステップ７１２の処理を実行する時点において機関サイクルカウンタＮcylの値が所定値Ｎ１以上である場合、ＣＰＵはそのステップ７１２にて「Ｙｅｓ」と判定してステップ７１５に進み、図８にフローチャートにより示した第１制御ルーチンを行う。その後、ＣＰＵは、ステップ７９５に進み、本ルーチンを一旦終了する。
【０１０２】
ＣＰＵはステップ７１５に進むと、図８のステップ８００から処理を開始してステップ８１０に進み、図７のステップ７０５にて取得したノック指標値ＩＤＸが許容値ＩＤＸ１以下であるか否かを判定する。ノック指標値ＩＤＸが許容値ＩＤＸ１以下である場合、ＣＰＵはステップ８１０にて「Ｙｅｓ」と判定し、以下に述べるステップ８１５乃至ステップ８５０の処理を順に行う。その後、ＣＰＵは、ステップ８９５を経由して図７のステップ７９５に進む。
【０１０３】
ステップ８１５：ＣＰＵは、閾値ＳＴＨnowをＥＣＵ８０のＲＡＭから取得する。閾値ＳＴＨnowは、後に述べるステップ８４５又は図９のステップ９３５にてＥＣＵ８０のＲＡＭに格納されている。
ステップ８２０：ＣＰＵは、ステップ８１５にて取得した閾値ＳＴＨnowに所定値ΔＳａ１を加えることにより、閾値ＳＴＨを新たに取得する（ＳＴＨ＝ＳＴＨnow＋ΔＳａ１）。所定値ΔＳａ１は、適切な正の値に設定されている。
【０１０４】
ステップ８４５：ＣＰＵは、ステップ８２０にて取得した閾値ＳＴＨを閾値ＳＴＨnowとしてＥＣＵ８０のＲＡＭに格納する（閾値ＳＴＨnowを更新する）。
ステップ８５０：ＣＰＵは、機関サイクルカウンタＮcylの値を「０」に設定する。
【０１０５】
一方、ＣＰＵがステップ８１０の処理を実行する時点においてノック指標値ＩＤＸが許容値ＩＤＸ１よりも大きい場合、ＣＰＵはそのステップ８１０にて「Ｎｏ」と判定し、以下に述べるステップ８２５及びステップ８３０の処理を順に行う。
【０１０６】
ステップ８２５：ＣＰＵは、閾値ＳＴＨnowをＥＣＵ８０のＲＡＭから取得する。
ステップ８３０：ＣＰＵは、ステップ８２５にて取得した閾値ＳＴＨnowから所定値ΔＳｄ１を減ずることにより、閾値ＳＴＨを新たに取得する（ＳＴＨ＝ＳＴＨnow−ΔＳｄ１）。所定値ΔＳｄ１は、適切な正の値に設定されており、前記所定値ΔＳａ１（ステップ８２０を参照。）とは異なる値であっても、同じ値であってもよい。
【０１０７】
次いで、ＣＰＵは、ステップ８３５に進み、ステップ８３０にて取得した閾値ＳＴＨが「０」よりも小さいか否かを判定する。閾値ＳＴＨが「０」よりも小さい場合、ＣＰＵはステップ８３５にて「Ｙｅｓ」と判定してステップ８４０に進み、閾値ＳＴＨを「０」に設定する。
【０１０８】
次いで、ＣＰＵは、ステップ８４５に進み、ステップ８４０にて設定した閾値ＳＴＨを閾値ＳＴＨnowとしてＥＣＵ８０のＲＡＭに格納する（閾値ＳＴＨnowを更新する）。次いで、ＣＰＵは、ステップ８５０に進み、機関サイクルカウンタＮcylの値を「０」に設定する。その後、ＣＰＵは、ステップ８９５を経由して図７のステップ７９５に進む。
【０１０９】
一方、ステップ８３０にて取得された閾値ＳＴＨが「０」以上である場合、ＣＰＵはステップ８３５にて「Ｎｏ」と判定してステップ８４５に直接進み、ステップ８３０にて取得した閾値ＳＴＨを閾値ＳＴＨnowとしてＥＣＵ８０のＲＡＭに格納する（閾値ＳＴＨnowを更新する）。次いで、ＣＰＵは、ステップ８５０に進み、機関サイクルカウンタＮcylの値を「０」に設定する。その後、ＣＰＵは、ステップ８９５を経由して図７のステップ７９５に進む。
【０１１０】
尚、ＣＰＵが図７のステップ７１２の処理を実行する時点において機関サイクルカウンタＮcylの値が所定値Ｎ１よりも小さい場合、ＣＰＵはそのステップ７１２にて「Ｎｏ」と判定してステップ７９５に直接進み、本ルーチンを一旦終了する。この場合、第１制御は行われない。
【０１１１】
一方、ＣＰＵが図７のステップ７１０の処理を実行する時点において遅角量ＤＬＹnowが「０」である場合、ＣＰＵはそのステップ７１０にて「Ｎｏ」と判定してステップ７１７に進み、ステップ７０２にてカウントアップした機関サイクルカウンタＮcylの値が所定値Ｎ２以上であるか否かを判定する。所定値Ｎ２は、前記所定値Ｎ１（ステップ７１２を参照。）とは異なる値であってもよいし、同じ値であってもよい。
【０１１２】
ＣＰＵがステップ７１７の処理を実行する時点において機関サイクルカウンタＮcylの値が所定値Ｎ２以上である場合、ＣＰＵはそのステップ７１７にて「Ｙｅｓ」と判定してステップ７２０に進み、図９にフローチャートにより示した第２制御を行う。その後、ＣＰＵは、ステップ７９５に進み、本ルーチンを一旦終了する。
【０１１３】
ＣＰＵは、ステップ７２０に進むと、図９のステップ９００から処理を開始してステップ９１０に進み、図７のステップ７０５にて取得したノック指標値ＩＤＸが許容値ＩＤＸ２以下であるか否かを判定する。ノック指標値ＩＤＸが許容値ＩＤＸ２よりも大きい場合、ＣＰＵはステップ９１０にて「Ｎｏ」と判定し、以下に述べるステップ９１５及びステップ９２０の処理を順に行う。
【０１１４】
ステップ９１５：ＣＰＵは、閾値ＳＴＨnowをＥＣＵ８０のＲＡＭから取得する。
ステップ９２０：ＣＰＵは、ステップ９１５にて取得した閾値ＳＴＨnowから所定値ΔＳｄ２を減ずることにより、閾値ＳＴＨを新たに取得する（ＳＴＨ＝ＳＴＨnow−ΔＳｄ２）。所定値ΔＳｄ２は、適切な正の値に設定されており、前記所定値ΔＳｄ１（図８のステップ８３０を参照。）よりも小さい値に設定されている。
【０１１５】
次いで、ＣＰＵは、ステップ９２５に進み、ステップ９２０にて取得した閾値ＳＴＨが「０」よりも小さいか否かを判定する。閾値ＳＴＨが「０」よりも小さい場合、ＣＰＵはステップ９２５にて「Ｙｅｓ」と判定し、以下に述べるステップ９３０乃至ステップ９４０の処理を順に行う。その後、ＣＰＵは、ステップ９９５を経由して図７のステップ７９５に進む。
【０１１６】
ステップ９３０：ＣＰＵは、閾値ＳＴＨを「０」に設定する。
ステップ９３５：ＣＰＵは、ステップ９３０にて設定した閾値ＳＴＨを閾値ＳＴＨnowとしてＥＣＵ８０のＲＡＭに格納する（閾値ＳＴＨnowを更新する）。
ステップ９４０：ＣＰＵは、機関サイクルカウンタＮcylの値を「０」に設定する。
【０１１７】
一方、ステップ９２０にて取得された閾値ＳＴＨが「０」以上である場合、ＣＰＵはステップ９２５にて「Ｎｏ」と判定し、ステップ９３５に直接進み、ステップ９２０にて取得した閾値ＳＴＨを閾値ＳＴＨnowとしてＥＣＵ８０のＲＡＭに格納する（閾値ＳＴＨnowを更新する）。次いで、ＣＰＵは、ステップ９４０に進み、機関サイクルカウンタＮcylの値を「０」に設定する。その後、ＣＰＵは、ステップ９９５を経由して図７のステップ７９５に進む。
【０１１８】
一方、ＣＰＵがステップ９１０の処理を実行する時点においてノック指標値ＩＤＸが許容値ＩＤＸ２以下である場合、ＣＰＵはそのステップ９１０にて「Ｙｅｓ」と判定してステップ９４０に直接進み、機関サイクルカウンタＮcylの値を「０」に設定する。その後、ＣＰＵは、ステップ９９５を経由して図７のステップ７９５に進む。この場合、閾値ＳＴＨnowは更新（増大）されず、そのときの値に保持される。
【０１１９】
尚、ＣＰＵが図７のステップ７１７の処理を実行する時点において機関サイクルカウンタＮcylの値が所定値Ｎ２よりも小さい場合、ＣＰＵはそのステップ７１７にて「Ｎｏ」と判定してステップ７９５に直接進み、本ルーチンを一旦終了する。この場合、第２制御は行われない。
【０１２０】
以上本発明に係る実施形態について説明したが、本発明は、前記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。
【０１２１】
例えば、前記実施形態においては、「遅角量ＤＬＹnowが「０」よりも大きく且つ機関サイクルカウンタＮcylが所定値Ｎ１以上であるという条件」が成立した場合（図７のステップ７１０及びステップ７１２にて共に「Ｙｅｓ」と判定された場合）に、第１制御が行われる（図７のステップ７１５）。しかしながら、「遅角量ＤＬＹnowが「０」よりも大きいという条件」が成立した場合、機関サイクルカウンタＮcylの値とは無関係に、第１制御が行われるようになっていてもよい。更に、この場合、遅角量ＤＬＹnowが「０」よりも大きいという条件の代わりに、「遅角量ＤＬＹnowが所定値（＞０）よりも大きいという条件」が成立した場合に、第１制御が行われるようになっていてもよい。
【０１２２】
加えて、前記実施形態においては、「遅角量ＤＬＹnowが「０」であり且つ機関サイクルカウンタＮcylが所定値Ｎ２以上であるという条件」が成立した場合（図７のステップ７１０にて「Ｎｏ」と判定され、ステップ７１７にて「Ｙｅｓ」と判定された場合）に第２制御が行われる（図７のステップ７２０）。しかしながら、「遅角量ＤＬＹnowが「０」であるという条件」が成立した場合、機関サイクルカウンタＮcylの値とは無関係に、第２制御が行われるようになっていてもよい。更に、この場合、遅角量ＤＬＹnowが「０」であるという条件の代わりに、「遅角量ＤＬＹnowが所定値（＞０）以下であるという条件」が成立した場合に、第２制御が行われるようになっていてもよい。
【符号の説明】
【０１２３】
１０…内燃機関、２５…燃焼室、３５…点火装置、３７…点火栓、７６…ノックセンサ、７７…筒内圧センサ、８０…電子制御ユニット（ＥＣＵ）、ＩＤＸ…ノック指標値、ＩＤＸ２…許容値、ΔＳｄ２…所定値
【図１】
2017020378.tif 000003
【図２】
2017020378.tif 000004
【図３】
2017020378.tif 000005
【図４】
2017020378.tif 000006
【図５】
2017020378.tif 000007
【図６】
2017020378.tif 000008
【図７】
2017020378.tif 000009
【図８】
2017020378.tif 000010
【図９】
2017020378.tif 000011