JPH0650100B2 - Ignition timing control method for internal combustion engine - Google Patents

Ignition timing control method for internal combustion engine

Info

Publication number
JPH0650100B2
JPH0650100B2 JP59280554A JP28055484A JPH0650100B2 JP H0650100 B2 JPH0650100 B2 JP H0650100B2 JP 59280554 A JP59280554 A JP 59280554A JP 28055484 A JP28055484 A JP 28055484A JP H0650100 B2 JPH0650100 B2 JP H0650100B2
Authority
JP
Japan
Prior art keywords
ignition timing
correction value
correction
timing correction
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP59280554A
Other languages
Japanese (ja)
Other versions
JPS61157761A (en
Inventor
正明 長井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Subaru Corp
Original Assignee
Fuji Jukogyo KK
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Jukogyo KK filed Critical Fuji Jukogyo KK
Priority to JP59280554A priority Critical patent/JPH0650100B2/en
Publication of JPS61157761A publication Critical patent/JPS61157761A/en
Publication of JPH0650100B2 publication Critical patent/JPH0650100B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02PIGNITION, OTHER THAN COMPRESSION IGNITION, FOR INTERNAL-COMBUSTION ENGINES; TESTING OF IGNITION TIMING IN COMPRESSION-IGNITION ENGINES
    • F02P5/00Advancing or retarding ignition; Control therefor
    • F02P5/04Advancing or retarding ignition; Control therefor automatically, as a function of the working conditions of the engine or vehicle or of the atmospheric conditions
    • F02P5/145Advancing or retarding ignition; Control therefor automatically, as a function of the working conditions of the engine or vehicle or of the atmospheric conditions using electrical means
    • F02P5/15Digital data processing
    • F02P5/1502Digital data processing using one central computing unit
    • F02P5/151Digital data processing using one central computing unit with means for compensating the variation of the characteristics of the engine or of a sensor, e.g. by ageing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02TCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
    • Y02T10/00Road transport of goods or passengers
    • Y02T10/10Internal combustion engine [ICE] based vehicles
    • Y02T10/40Engine management systems

Description

【発明の詳細な説明】Detailed Description of the Invention 【産業上の利用分野】[Industrial applications]

本発明は、ノック発生の有無に応じて点火時期を学習制
御する内燃機関の点火時期制御方法に関する。
The present invention relates to an ignition timing control method for an internal combustion engine, in which the ignition timing is learned and controlled according to whether knock has occurred.

【従来の技術】[Prior art]

近年、特開昭58−217775号公報に示されるよう
に、内燃機関のいかなる運転条件のもとでも、常に最大
トルクでの運転ができるように、ノッキングを許容範囲
内に抑えることができる最大進角での点火時期制御を実
現するため、ノック発生の有無に応じて点火時期補正値
を学習する内燃機関の点火時期制御方法が提供されてい
る。 しかし、上記先行例では、1つの点火時期補正値で全て
の領域をまかなっており、制御精度が悪いという課題が
ある。 これに対処するため、特開昭58−107875号公報
に示されるように、点火時期補正値を運転領域毎に設定
し、運転領域毎に学習するようにしている。
In recent years, as disclosed in Japanese Patent Laid-Open No. 58-217775, the maximum advancement that can suppress knocking within an allowable range so that the internal combustion engine can always be operated at the maximum torque under any operating condition. In order to realize the ignition timing control at the corner, there is provided an ignition timing control method for an internal combustion engine that learns an ignition timing correction value depending on whether knock occurs. However, in the above-mentioned prior art example, one ignition timing correction value covers all the regions, and there is a problem that the control accuracy is poor. In order to deal with this, as shown in Japanese Patent Laid-Open No. 58-107875, the ignition timing correction value is set for each operating region and learned for each operating region.

【発明が解決しようとする課題】[Problems to be Solved by the Invention]

しかしながら、運転領域毎の個々の点火時期補正値を学
習するようにしているため、点角時期制御全体について
学習が行われ、各領域において最適点火時期の値を得る
まで相当の時間を要し、この間、ノッッキングの発生率
が増大し、運転フィーリングが悪いという課題を有す
る。 本発明は上記事情に鑑みてなされたもので、各領域の点
火時期を最適点火時期に早期に収束させて、ノッキング
の発生率を低下させ、運転フィーリングを向上すること
が可能な内燃機関の点火時期制御方法を提供することを
目的とする。
However, since each ignition timing correction value for each operating region is learned, learning is performed for the entire point angle timing control, and it takes a considerable time to obtain the optimum ignition timing value in each region, During this time, there is a problem that the occurrence rate of knocking increases and the driving feeling is bad. The present invention has been made in view of the above circumstances, and an internal combustion engine capable of converging the ignition timing of each region to the optimum ignition timing at an early stage to reduce the occurrence rate of knocking and improve the driving feeling. An object is to provide an ignition timing control method.

【課題を解決するための手段】[Means for Solving the Problems]

上記目的を達成するため、本発明による内燃機関の点火
時期制御方法は、エンジン負荷およびエンジン回転数に
基づいて基本点火時期を設定し、ノッキング検出により
エンジン負荷およびエンジン回転数をパラメータとして
点火時期補正値マップにストアされた点火時期補正値を
学習し、上記基本点火時期を点火時期補正値により補正
して点火時期を設定する内燃機関の点火時期制御方法に
おいて、上記点火時期補正値マップにおける同一領域で
所定の補正回数に達し学習条件が満足したかを判別する
手順と、上記学習条件成立時、該当領域の点火時期補正
値を周辺領域の点火時期補正値を含めて平均化処理し、
この平均値で上記点火時期補正値マップの全領域の点火
時期補正値を更新する手順と、上記全領域の点火時期補
正値の更新後、各領域毎の点火時期補正値をノッキング
の有無に応じ学習する手順とを備えることを特徴とす
る。
In order to achieve the above object, an internal combustion engine ignition timing control method according to the present invention sets a basic ignition timing based on an engine load and an engine speed, and corrects the ignition timing by knocking detection using the engine load and the engine speed as parameters. In the ignition timing control method for an internal combustion engine, wherein the ignition timing correction value stored in the value map is learned, and the basic ignition timing is corrected by the ignition timing correction value to set the ignition timing. In the procedure for determining whether the learning condition is satisfied by reaching a predetermined number of corrections with, and when the learning condition is satisfied, the ignition timing correction value of the corresponding region is averaged including the ignition timing correction value of the peripheral region,
The procedure of updating the ignition timing correction values of all the regions of the ignition timing correction value map with this average value, and after updating the ignition timing correction values of all the regions, determine the ignition timing correction value of each region depending on the presence or absence of knocking. And a procedure for learning.

【作用】[Action]

本発明では、点火時期補正値マップの同一領域で所定の
補正回数に達して学習条件が満足したとき、該当領域の
点火時期補正値を、周辺領域の点火時期補正値を含め平
均化処理し、この平均値にて点火時期補正値マップの全
領域の点火時期補正値を更新し、その後、各領域毎の点
火時期補正値を学習する。
In the present invention, when the predetermined number of corrections is reached in the same region of the ignition timing correction value map and the learning condition is satisfied, the ignition timing correction value of the corresponding region is averaged including the ignition timing correction value of the peripheral region, The ignition timing correction values for all the regions of the ignition timing correction value map are updated with this average value, and then the ignition timing correction values for each region are learned.

【実施例】【Example】

以下、本発明の一実施例を図面を参照して具体的に説明
する。 第1図において、符号1はエンジン負荷の一例として吸
入管圧力(あるいは吸入空気量)を検出するセンサであ
り、そのセンサ出力は、バッファ2を介してA/D変換
器3に入力され、デジタル信号に変換されてマイクロプ
ロセッサ18に入力される。また符号4は、クランク角
センサなどのエンジン回転数を検出するセンサであり、
そのセンサ出力は、バッファ5を介して割込み処理回路
6に入力される。そして上記センサ出力は、マイクロプ
ロセッサ18に入力される。 一方、ノッキングの発生時には、ノックセンサ7からノ
ック信号が出力し、マイクロプロセッサ18に入力され
るが、フィルタ8によってエンジン駆動中の動弁系の振
動などの定常の振動によるノイズをノック信号からカッ
ト・オフする。また、ノッキング発生時のエンジン回転
数の相違などで、ノック信号レベルが変化し、ノイズレ
ベルも変化するので、フィルタ8の出力を分割して、一
方は増幅器9に入力し、他方は整流・積分回路10を介
して平均化し、これを増幅器11で増幅してレベル調整
し、比較器12で減算してノック信号を判別、抽出する
のである。 上記マイクロプロセッサ18の内部構成は、公知のよう
に入力ポート13、出力ポート14、CPU15、一部
を不揮発性メモリとして構成するRAM16、ROM1
7をバスラインで接続したもので、入力ポート13に
は、上記マイクロプロセッサ18で受入れられる整合化
がなされたセンサ信号が入力され、また出力ポート14
からは、出力回路19に制御信号が出力され、上記出力
回路19からは点火装置21に駆動信号が出力される。 上記ROM17には、制御プログラム、及びデータマッ
プ、データテーブルなどの各種制御用固定データが記憶
されており、また、上記RAM16には、データ処理し
た後の各センサ類の出力信号及び上記CPU15で演算
処理したデータが格納されると共に、RAM16の不揮
発性部分には後述する全体補正終了フラグFTCMP、
補正回数保持マップ、点火時期補正値マップ、および加
速補正マップがストアされている。 上記CPU15では、上記ROM17に記憶されている
制御プログラムに従って点火時期を演算し、制御信号を
出力回路19に出力すると共に、点火時期補正値SPK
prt を学習する。 以下、この点火時期制御および学習制御手順について説
明する。 所定時間毎に実行される第5図の割込みルーチンにて点
火時期が設定される。この点火時期設定ルーチンでは、
まず、ステップS61でエンジン回転数センサ4、吸入
管圧力センサ1からの出力信号に基づき、それぞれエン
ジン回転数、吸入管圧力を求め、ステップS62でエン
ジン回転数に基づき加速判定値テーブルを参照して加速
判定値ΔBST(mmHG)を設定する。 この加速判定値テーブルは、第3図(a)に示すように
エンジン回転数をパラメータとして各アドレスに加速判
定値がストアされており、データテーブルとしてROM
17に格納されている。 次いで、ステップS63へ進み、上記加速判定値ΔBS
Tと設定時間当りの吸入管圧力変化量BSTR とを比較
し、 BSTR >ΔBST の場合、加速と判断してステップS64で、吸入管圧力
およびエンジン回転数に基づき、それぞれ基本点火時期
マップ、点火時期補正量マップを参照して基本点火時期
SPKtot および点火時期補正値SPKprt を設定する
と共に、エンジン回転数に基づき加速補正マップを参照
して加速補正量(リタード)SPKacc を設定し、次式
に基づいて点火時期SPKrealを設定してルーチンを抜
ける。 SPKreal ←SPKtot ±SPKprt −SPKacc 一方、上記ステップS63において、 BST≦ΔBST の場合には、定常状態と判断してステップS65へ進
み、吸入管圧力およびエンジン回転数に基づいてそれぞ
れ基本点火時期マップ、点火時期補正値マップを参照し
て基本点火時期SPKtot および点火時期補正値SPK
prt を設定し、次式に基づき点火時期SPKrealを設定
してルーチンを抜ける。 SPKreal←SPKtot ±SPKprt 上記基本点火時期マップは、第2図(a)に示すよう
に、レギュラーガソリンなどの低オクタン価の燃料を使
用した際に、ノッキングを許容範囲内に抑えることので
きるノック限界の最大進角の点火時期を、エンジン回転
数および吸入管圧力をパラメータとして予め実験などに
より求めてROM17にストアされているものである。 また、上記点火時期補正値マップは、RAM16の不揮
発性メモリ部分にストアされており、第2図(a)に示
す基本点火時期マップの領域Aに対応して第2図(b)
に示すように、エンジン回転数および吸入管圧力をパラ
メータとして特定される各領域毎に点火時期補正値SP
Kprt がストアされており、後述する学習手順によって
運転領域毎に学習され、点火時期補正値SPKprt の値
が更新される。 さらに、上記加速補正マップも、RAM16の不揮発性
メモリ部分にストアされており、第3図(b)に示すよ
うに、エンジン回転数をパラメータとして特定される各
領域毎に加速補正量SPKacc がストアされており、そ
の値が後述する学習手順によって学習され、更新され
る。 なお、本実施例では、加速判定に吸入管圧力変化を用い
ているが、加速を判定できるものであれば良く、その
他、例えばスロットル開度変化速度などを用いてもよ
い。 次に、上記点火時期補正値SPKprt および加速補正量
SPKacc の学習手順について第6図に基づき説明す
る。 第6図は学習手順のメインルーチンであり、点火毎に実
行される。 まず、ステップS71で、エンジン回転数に基づき上記
加速判定値テーブルを参照して設定した加速判定値ΔB
STと、設定時間当りの吸入管圧力変化量BSTR とを
比較し、 BSTR >ΔBST の場合、加速と判断してステップS72へ進み、加速補
正実行サブルーチンを呼び出して加速補正量SPKacc
を学習し、ルーチンを終了する。 一方、上記ステップS71で、 BSTR ≦ΔBST すなわち定常状態の場合にはステップS73へ進み、R
AM16の不揮発性メモリ部分の所定のアドレスから全
体補正終了フラグFTCMPの値を読出し、全体補正が
終了したか否かを判別する。そして FTCMP=0 すなわち全体補正が終了していないときには、ステップ
S74へ進んで、全体補正実行サブルーチンを呼び出し
て点火時期補正値SPKprt を全体補正学習し、ルーチ
ンを終了する。なお、上記全体補正終了フラグFTCM
Pのイニシャルセット値は0である。 また、上記ステップS73で、 FTCMP=1 すなわち全体補正が終了しているときには、ステップS
75へ進み、部分補正実行サブルーチンを呼び出してエ
ンジン回転数および吸入管圧力により特定される領域毎
の点火時期補正値SPKprt を学習し、ステップS76
でこの部分補正により学習した点火時期補正値SPKpr
t が制限値を越えるたか否か、すなわち大きなノッキン
グの発生、あるいは進角または遅角の同一方向の補正が
継続しており、最適点火時期から大きく外れているかが
判断され、制限値を越えていない場合にはルーチンを終
了し、越えている場合には最適点火時期から大きく外れ
ていると判断してステップS77へ進み、次回のルーチ
ン実行時に全体補正に移行させるべく全体補正終了フラ
グFTCMPをクリアし(0→FTCMP)、ルーチン
を終了する。 上述の学習制御メインルーチンのステップS72、S7
4、S75における加速補正実行サブルーチン、全体補
正実行サブルーチン、および部分補正実行サブルーチン
は、それぞれ第7図、第8図および第9図に示される。 第7図の加速補正実行サブルーチンでは、ステップS8
1でノッキング発生の有無を判別して、ノッキング発生
有りのときはステップS82へ進み、ノッキング発生無
しのときはステップS85へ分岐する。 まず、ノッキング発生有りの場合について説明すると、
ステップS82でノックセンサ出力に基づきノック強度
KNSTRGを求め、ステップS83へ進んでノック強
度KNSTRGに基づき遅角量RETacc を設定する。
この遅角量RETacc は、第3図(c)に示すようにノ
ック強度KNSTRGが増大するほど大きな値に設定さ
れるものであり、関数式RETacc =f(KNSTR
G)あるいはノック強度KNSTRGをパラメータとし
たマップから求める。そしてエンジン回転数によって特
定される加速補正マップの該当アドレスから加速補正量
SPKacc を読出して上記遅角量RETacc を加算し、
加速補正量SPKacc を再設定してステップS89へ進
んで、この値で加速補正マップの該当アドレスにストア
されている加速補正量SPKacc を更新してルーチンを
抜ける。 一方、上記ステップS81で、ノッキング発生無しの場
合には、ステップS85でエンジン回転数により特定さ
れる運転領域において設定回数ノッキングが発生したか
が判断され、設定回数ノッキングが発生していない場合
にはルーチンを抜け、設定回数ノッキングが生じている
場合にはステップS86へ進む。ステップS86では、
エンジン回転数により特定される加速補正マップの該当
アドレスから加速補正値SPKacc を読出し、予め設定
された遅角量ADVacc を減算して加速補正量SPKac
c を再設定し、ステップS87へ進んでこの加速補正値
SPKacc が負の値かが判断され、 SPKacc ≧0 の場合、リタード値であるため、ステップ89へジャン
プし、再設定した加速補正量SPKacc にて加速補正マ
ップの該当アドレスにストアされている加速補正量SP
Kacc を更新してルーチンを抜ける。また SPKacc <0 の場合には、再設定した加速補正量SPKacc がアドバ
ンス値となったことを示し、これを制限するために、ス
テップS88へ進み、加速補正量SPKacc を0とし、
ステップS89へ進み、加速補正マップの該当アドレス
にストアされている加速補正量SPKacc を更新してル
ーチンを抜ける。 また第8図に示す全体補正実行サブルーチンでは、ステ
ップS91で、現時点でのエンジン回転数および吸入管
圧力が、基本点火時期マップ(第2図(a)参照)の領
域A内にあるか否か、即ち点火時期補正値マップの領域
内にあるか否かを判別し、領域内にないときにはルーチ
ンを抜け、領域内にあるとき、ステップS92へ進む。
ステップS92では、エンジン回転数および吸入管圧力
によって特定される点火時期補正値マップの領域(格子
状に分割されたアドレス領域の一つ、例えば第2図
(b)の格子点(5)が特定される。)における補正回
数を、エンジン回転数および吸入管圧力に基づいて補正
回数保持マップの該当領域(アドレス)から読出し、補
正回数が設定回数に達したかが判断される。 上記補正回数保持マップは、RAM16の不揮発性メモ
リ部分にストアされており、点火時期補正値マップと同
様にエンジン回転数および吸入管圧力をパラメータとし
て特定される領域毎に補正回数がストアされ、点火時期
補正値マップのあるアドレスの点火時期補正値SPKpr
t が学習により更新されると、これに対応する補正回数
保持マップのアドレスにストアされている補正回数がカ
ウントアップされる。 上記ステップS92において、補正回数が設定回数に達
していないときにはルーチンを抜け、設定回数に達して
いればステップS93へ進む。 そして点火時期補正値マップの該当アドレス、例えば第
2図(b)の格子点(5)の点火時期補正値SPKprt
5を読出すと共に、その周辺の指定領域(本実施例では
8領域)のアドレス(1)〜(4)、(6)〜(9)に
ストアされている点火時期補正値SPKprt 1〜4、6
〜9を読出し、次式により平均値(加重平均)Aveを算
出する。 Ave←{(SPKprt1+SPKprt2 +SPKprt3+SPKprt4 +SPKprt6+SPKprt7 +SPKprt8+SPKprt9 /8+SPKprt5}/2 そしてステップS94で、この加重平均Aveにて点火時
期補正値マップの全体に対して、すなわち全領域(全ア
ドレス)の点火時期補正値SPKprt を更新し、補正回
数保持マップの全アドレスの補正回数をリセットしてス
テップS95へ進み、全体補正終了により部分補正に移
行すべく全体補正終了フラグFTCMPをセットし(F
TCMP←1)、ルーチンを抜ける。 このようにして、全制御領域のうち、最初に補正回数が
設定回数に達した領域の点火時期補正値SPKprt を中
心に演算して、これを全制御領域の点火時期補正値とし
て全体補正を予測、設定するものである。 なお、周辺域の点火時期補正値の確度を向上させるた
め、何番目かに、補正回数が設定回数に達した領域の点
火時期補正値を中心に演算するようにしても良い。 上述のメインルーチンにおいて部分補正実行後、点火時
期補正値SPKprt が制限値を越え、最適点火時期から
大きく外れた場合、全体補正終了フラグFTCMPをク
リアして(ステップS77参照)、直ちに全体補正に移
行させ、上述の全体補正実行サブルーチンにより、補正
確率(補正回数)の高い点火時期補正値をその周辺領域
の点火時期補正値を含めて演算(平均化処理)にかけて
妥当な点火時期補正値を求め、これを制御域全体の補正
値に適用したうえで、後述する部分補正を実行させるよ
うにしているので、各領域の点火時期を最適点火時期に
早期に収束させることができるのである。 また、第9図の部分補正実行サブルーチンでは、ステッ
プS101でエンジン回転数および吸入管圧力を計算
し、ステップS102で現在のエンジン回転数および吸
入管圧力が点火時期補正値マップの制御領域内にあるか
を判別し、領域内にないときにはルーチンを抜け、領域
内のときには、ステップS103へ進む。 ステップS103では、上記エンジン回転数および吸入
管圧力に基づいて特定される点火時期補正値マップ、補
正回数保持マップの該当アドレスからそれぞれ点火時期
補正値SPKprt 、補正回数を読出してステップS10
4で、上記補正回数に基づき補正係数テーブル、ノック
発生間隔判定値テーブルを参照して補正係数LN、ノッ
ク発生間隔判定値(進角判定時間)ADJを設定し、ス
テップS105へ進む。 上記補正係数テーブルおよびノック発生間隔判定値テー
ブルはROM17にデータテーブルとしてストアされて
おり、第4図(a)に示すように補正係数テーブルには
補正回数の減少に伴い補正係数LNが増大した値として
ストアされており、また、ノック発生間隔判定値テーブ
ルには補正回数の減少に伴いノック発生間隔判定値(進
角判定時間)ADJが短い値としてストアされている。 ステップS105では、ノッキング発生の有無を判断
し、ノッキング有りの場合には遅角制御を行うべくステ
ップS106へ進む。 ステップS106では、ノック強度、ノック発生間隔を
演算し、ノック強度およびノック発生間隔に基づきマッ
プを参照して遅角量KNKを設定する。上記マップは、
データマップとしてROM17にストアされており、ノ
ック強度が大きく、かつ、ノック発生間隔が短いほど大
きな値の遅角量KNKがストアされている。その後、ス
テップS107で上記遅角量KNKに上記ステップS1
04にて設定した補正係数LNを乗算して実遅角量RE
Trealを演算し(KNK・LN→RETreal)、ステッ
プS108へ進んで、上記ステップS103にて読出し
た点火時期補正値SPKprt から上記実遅角量RETre
alを減算して、エンジン回転数および吸入管圧力にて特
定される点火時期補正値マップの該当アドレスにストア
されている点火時期補正値SPKprt を更新する。 一方、上記ステップS105において、ノッキング無し
の場合には、進角制御を実行すべくステップS109へ
進み、進角判定時間ADJ内にノッキングが有ったかを
判断し、ノッキング有りの場合にはルーチンを抜け、ノ
ッキング無しの場合ステップS110へ進む。ステップ
S110では、上記ステップS103にて読出した点火
時期補正値SPKprt に予め設定した進角量ADVを加
算して今回の点火時期補正値SPKprt を計算し、ステ
ップS111で、今回計算した点火時期補正値SPKpr
t と、現在のエンジン回転数およびエンジン負荷に基づ
いて求めた最大トルクを得ることのできる点火時期MB
Tから現在の基本点火時期SPKtot を減算した制限値
(MBT−SPKtot )とを比較し、 SPKprt ≦MBT−SPKtot の場合には、ステップS113へジャンプして、ステッ
プS110で計算した今回の点火時期補正値SPKprt
で、エンジン回転数および吸入管圧力にて特定される点
火時期補正値マップの該当アドレスにストアされている
点火時期補正値SPKprt を更新し、ルーチンを抜け
る。 また、上記ステップS111で SPKprt >MBT−SPKtot の場合には、MBTを越えて過度に進角されるため、ス
テップS112へ進み、上記制限値(MBT−SPKto
t )を点火時期補正値SPKprt とし、ステップS11
3で点火時期補正値マップの該当アドレスにストアされ
ている点火時期補正値SPKprt を更新し、ルーチンを
抜ける。 なお、本実施例では、エンジン負荷として吸入管圧力を
用いているが、エンジン負荷を表すものであればよく、
これに限定されない。 さらに本実施例では、全体補正については、同一運転領
域につき所定の補正回数を満足したとき(最初に所定の
補正回数に達した運転領域につき)、そのときの点火時
期補正値の演算で、点火時期補正値マップの全領域(ア
ドレス)の点火時期補正値SPKprt を更新している
が、学習条件としては、補正回数でなく、遅角値への補
正と、進角値への補正とが切換わる方向変化回数として
もよい。
An embodiment of the present invention will be specifically described below with reference to the drawings. In FIG. 1, reference numeral 1 is a sensor that detects an intake pipe pressure (or an intake air amount) as an example of an engine load, and the sensor output is input to an A / D converter 3 via a buffer 2 and a digital signal. It is converted into a signal and input to the microprocessor 18. Reference numeral 4 is a sensor such as a crank angle sensor for detecting the engine speed,
The sensor output is input to the interrupt processing circuit 6 via the buffer 5. Then, the sensor output is input to the microprocessor 18. On the other hand, when knocking occurs, a knock signal is output from the knock sensor 7 and input to the microprocessor 18. The filter 8 cuts noise due to steady vibration such as vibration of the valve train during engine drive from the knock signal.・ Turn off. Further, since the knock signal level changes and the noise level also changes due to the difference in engine speed when knocking occurs, the output of the filter 8 is divided, one is input to the amplifier 9, and the other is rectified / integrated. The averaging is performed through the circuit 10, the level is adjusted by the amplifier 11 to adjust the level, and the level is subtracted by the comparator 12 to determine and extract the knock signal. The internal structure of the microprocessor 18 is, as is well known, an input port 13, an output port 14, a CPU 15, and a RAM 16 and a ROM 1 which partially constitute a non-volatile memory.
7 is connected by a bus line, and the matched sensor signal received by the microprocessor 18 is input to the input port 13 and the output port 14
Outputs a control signal to the output circuit 19, and the output circuit 19 outputs a drive signal to the ignition device 21. The ROM 17 stores a control program and fixed data for various controls such as a data map and a data table, and the RAM 16 outputs the output signals of the sensors after data processing and the CPU 15 calculates the data. The processed data is stored, and a non-volatile portion of the RAM 16 has an overall correction end flag FTCMP, which will be described later.
A correction number holding map, an ignition timing correction value map, and an acceleration correction map are stored. The CPU 15 calculates the ignition timing according to the control program stored in the ROM 17, outputs a control signal to the output circuit 19, and outputs the ignition timing correction value SPK.
Learn prt. Hereinafter, the ignition timing control and learning control procedures will be described. The ignition timing is set in the interrupt routine of FIG. 5 which is executed every predetermined time. In this ignition timing setting routine,
First, in step S61, the engine speed and the intake pipe pressure are obtained based on the output signals from the engine speed sensor 4 and the intake pipe pressure sensor 1, respectively, and in step S62, the acceleration determination value table is referred to based on the engine speed. The acceleration judgment value ΔBST (mmHG) is set. As shown in FIG. 3A, this acceleration determination value table stores the acceleration determination value at each address using the engine speed as a parameter, and is a ROM as a data table.
It is stored in 17. Next, in step S63, the acceleration determination value ΔBS
T is compared with the intake pipe pressure change amount BST R per set time, and if BST R > ΔBST, it is determined that acceleration and the basic ignition timing map, based on the intake pipe pressure and engine speed, in step S64. The basic ignition timing SPKtot and the ignition timing correction value SPKprt are set by referring to the ignition timing correction amount map, and the acceleration correction amount (retard) SPKacc is set by referring to the acceleration correction map based on the engine speed. Based on this, the ignition timing SPKreal is set and the routine exits. SPKreal ← SPKtot ± SPKprt −SPKacc On the other hand, if BST ≦ ΔBST in step S63, it is determined that the steady state is reached, and the process proceeds to step S65, in which the basic ignition timing map and ignition are respectively calculated based on the intake pipe pressure and the engine speed. Referring to the timing correction value map, the basic ignition timing SPKtot and the ignition timing correction value SPK
Set prt, set ignition timing SPKreal based on the following equation, and exit the routine. SPKreal ← SPKtot ± SPKprt As shown in Fig. 2 (a), the above basic ignition timing map shows that the knock limit of knocking can be suppressed within an allowable range when low octane fuel such as regular gasoline is used. The ignition timing with the maximum advance angle is obtained in advance by experiments or the like using the engine speed and the suction pipe pressure as parameters and stored in the ROM 17. The ignition timing correction value map is stored in the non-volatile memory portion of the RAM 16 and corresponds to the area A of the basic ignition timing map shown in FIG. 2 (a) and is shown in FIG. 2 (b).
As shown in, the ignition timing correction value SP for each region specified with the engine speed and the suction pipe pressure as parameters.
Kprt is stored and learned for each operation region by the learning procedure described later, and the value of the ignition timing correction value SPKprt is updated. Further, the acceleration correction map is also stored in the non-volatile memory portion of the RAM 16, and as shown in FIG. 3B, the acceleration correction amount SPKacc is stored for each region specified by the engine speed as a parameter. The value is learned and updated by a learning procedure described later. In the present embodiment, the suction pipe pressure change is used for the acceleration determination, but it may be any as long as the acceleration can be determined, and for example, the throttle opening change speed or the like may be used. Next, a procedure for learning the ignition timing correction value SPKprt and the acceleration correction amount SPKacc will be described with reference to FIG. FIG. 6 is a main routine of the learning procedure, which is executed every ignition. First, in step S71, the acceleration determination value ΔB set by referring to the acceleration determination value table based on the engine speed.
ST is compared with the suction pipe pressure change amount BST R per set time. If BST R > ΔBST, it is determined that the acceleration has occurred, the process proceeds to step S72, and the acceleration correction amount subroutine SPKacc is called by calling the acceleration correction execution subroutine.
To finish the routine. On the other hand, in step S71, if BST R ≤ ΔBST, that is, if the steady state, the process proceeds to step S73, where R
The value of the overall correction end flag FTCMP is read from a predetermined address of the non-volatile memory portion of the AM 16 and it is determined whether or not the overall correction is completed. If FTCMP = 0, that is, if the overall correction is not completed, the process proceeds to step S74 to call the overall correction execution subroutine to learn the entire correction of the ignition timing correction value SPKprt, and the routine is ended. In addition, the whole correction end flag FTCM
The initial set value of P is 0. In step S73, when FTCMP = 1, that is, when the entire correction is completed, step S73
75, the partial correction execution subroutine is called to learn the ignition timing correction value SPKprt for each region specified by the engine speed and the intake pipe pressure, and step S76
Then, the ignition timing correction value SPKpr learned by this partial correction
It is judged whether or not t exceeds the limit value, that is, whether large knocking occurs or correction of advance angle or retard angle in the same direction continues, and whether it greatly deviates from the optimum ignition timing. If not, the routine is ended, and if it is exceeded, it is determined that the ignition timing is largely deviated from the optimum ignition timing, the process proceeds to step S77, and the overall correction end flag FTCMP is cleared to shift to the overall correction when the next routine is executed. (0 → FTCMP), and the routine ends. Steps S72 and S7 of the learning control main routine described above
4, the acceleration correction execution subroutine, the whole correction execution subroutine, and the partial correction execution subroutine in S75 are shown in FIGS. 7, 8 and 9, respectively. In the acceleration correction execution subroutine of FIG. 7, step S8
Whether or not knocking has occurred is determined in 1, and if knocking has occurred, the process proceeds to step S82, and if no knocking has occurred, the process branches to step S85. First, when the case where knocking occurs is explained,
In step S82, the knock intensity KNSTRG is obtained based on the knock sensor output, and the process proceeds to step S83 to set the retard amount RETacc based on the knock intensity KNSTRG.
This retard amount RETacc is set to a larger value as the knock intensity KNSTRG increases as shown in FIG. 3 (c), and the functional expression RETacc = f (KNSTR
G) or knock strength KNSTRG as a parameter. Then, the acceleration correction amount SPKacc is read from the corresponding address of the acceleration correction map specified by the engine speed and the retard angle amount RETacc is added,
The acceleration correction amount SPKacc is reset and the process proceeds to step S89, the acceleration correction amount SPKacc stored in the corresponding address of the acceleration correction map is updated with this value, and the routine exits. On the other hand, if knocking does not occur in step S81, it is determined in step S85 whether knocking has occurred the set number of times in the operating region specified by the engine speed, and if knocking has not occurred the set number of times, The routine is exited, and if knocking occurs for the set number of times, the process proceeds to step S86. In step S86,
The acceleration correction value SPKacc is read from the corresponding address of the acceleration correction map specified by the engine speed, and the preset retard angle amount ADVacc is subtracted to obtain the acceleration correction amount SPKac.
c is reset, and the routine proceeds to step S87, where it is judged if this acceleration correction value SPKacc is a negative value. If SPKacc ≧ 0, it is the retard value, so jump to step 89 and reset the acceleration correction amount SPKacc. Acceleration correction amount SP stored at the corresponding address in the acceleration correction map at
Update Kacc and exit the routine. If SPKacc <0, it means that the reset acceleration correction amount SPKacc has become the advance value. To limit this, the process proceeds to step S88, where the acceleration correction amount SPKacc is set to 0,
In step S89, the acceleration correction amount SPKacc stored in the corresponding address of the acceleration correction map is updated, and the routine exits. Further, in the overall correction execution subroutine shown in FIG. 8, it is determined in step S91 whether the engine speed and the intake pipe pressure at present are within the region A of the basic ignition timing map (see FIG. 2 (a)). That is, it is determined whether or not it is within the region of the ignition timing correction value map. If it is not within the region, the routine is exited. If it is within the region, the routine proceeds to step S92.
In step S92, the ignition timing correction value map area specified by the engine speed and the intake pipe pressure (one of the address areas divided into a grid, for example, the grid point (5) in FIG. 2B is specified). Is read from the corresponding region (address) of the correction number holding map based on the engine speed and the suction pipe pressure, and it is determined whether the correction number has reached the set number. The correction number holding map is stored in the non-volatile memory part of the RAM 16, and the correction number is stored for each region specified by the engine speed and the intake pipe pressure as parameters, as in the ignition timing correction value map. Ignition timing correction value SPKpr of address with timing correction value map
When t is updated by learning, the number of corrections stored in the address of the corresponding correction number holding map is incremented. If the number of corrections has not reached the set number in step S92, the routine is exited, and if it has reached the set number, the process proceeds to step S93. Then, the corresponding address of the ignition timing correction value map, for example, the ignition timing correction value SPKprt of the grid point (5) in FIG. 2 (b).
5 is read out, and the ignition timing correction values SPKprt 1 to 4 stored in the addresses (1) to (4) and (6) to (9) of the designated area (8 areas in the present embodiment) around it are read. 6
9 to 9 are read out, and the average value (weighted average) Ave is calculated by the following equation. Ave ← {(SPKprt1 + SPKprt2 + SPKprt3 + SPKprt4 + SPKprt6 + SPKprt7 + SPKprt8 + SPKprt9 / 8 + SPKprt5} / 2 Then, at step S94, all the values of the ignition timing correction value map, ie, the entire area of the ignition timing correction value map, ie, all the ignition timing correction values SP, all areas of the ignition timing correction value map are corrected. Then, the correction counts of all the addresses in the correction count holding map are reset, and the process proceeds to step S95 to set the whole correction end flag FTCMP to shift to the partial correction when the whole correction is completed (F
TCMP ← 1), exit the routine. In this way, the ignition timing correction value SPKprt of the area where the number of corrections reaches the set number of times in the entire control area is calculated, and this is used as the ignition timing correction value of the entire control area to predict the overall correction. , To set. In order to improve the accuracy of the ignition timing correction value in the peripheral area, the ignition timing correction value in the area where the number of corrections reaches the set number may be the center of the calculation. When the ignition timing correction value SPKprt exceeds the limit value and greatly deviates from the optimum ignition timing after the partial correction is executed in the main routine described above, the overall correction end flag FTCMP is cleared (see step S77), and the entire correction is immediately performed. Then, by the above-mentioned overall correction execution subroutine, an ignition timing correction value having a high correction probability (the number of corrections) is calculated including the ignition timing correction value in the peripheral region (averaging process) to obtain a proper ignition timing correction value, Since this is applied to the correction value of the entire control region and the partial correction described later is executed, the ignition timing of each region can be converged to the optimum ignition timing at an early stage. In the partial correction execution subroutine of FIG. 9, the engine speed and the intake pipe pressure are calculated in step S101, and the current engine speed and intake pipe pressure are within the control region of the ignition timing correction value map in step S102. If it is not in the area, the routine is exited. If it is in the area, the process proceeds to step S103. In step S103, the ignition timing correction value SPKprt and the correction number are read from the corresponding addresses of the ignition timing correction value map and the correction number holding map, which are specified based on the engine speed and the suction pipe pressure, respectively, and the step S10 is performed.
In step 4, the correction coefficient LN and the knock generation interval determination value (advance determination time) ADJ are set by referring to the correction coefficient table and the knock generation interval determination value table based on the number of corrections, and the process proceeds to step S105. The correction coefficient table and the knock occurrence interval determination value table are stored in the ROM 17 as a data table, and as shown in FIG. 4A, the correction coefficient table has a value in which the correction coefficient LN increases as the number of corrections decreases. Further, the knock occurrence interval determination value table stores a knock occurrence interval determination value (advance angle determination time) ADJ as a short value as the number of corrections decreases. In step S105, it is determined whether or not knocking has occurred, and if knocking has occurred, the process proceeds to step S106 to perform retard control. In step S106, the knock intensity and the knock occurrence interval are calculated, and the retard amount KNK is set by referring to the map based on the knock intensity and the knock occurrence interval. The map above is
It is stored in the ROM 17 as a data map, and the larger the knock intensity and the shorter the knock occurrence interval, the larger the retard amount KNK is stored. Then, in step S107, the retard amount KNK is set to the step S1.
The actual retard amount RE is multiplied by the correction coefficient LN set in 04.
Treal is calculated (KNK · LN → RETreal), the process proceeds to step S108, and the actual retard angle amount RETre is calculated from the ignition timing correction value SPKprt read in step S103.
By subtracting al, the ignition timing correction value SPKprt stored in the corresponding address of the ignition timing correction value map specified by the engine speed and the intake pipe pressure is updated. On the other hand, in the above step S105, if there is no knocking, the process proceeds to step S109 to execute the advance angle control, and it is determined whether there is knocking within the advance angle determining time ADJ. If there is knocking, the routine is executed. If there is no knocking and there is no knocking, the process proceeds to step S110. In step S110, the advance amount ADV set in advance is added to the ignition timing correction value SPKprt read in step S103 to calculate the current ignition timing correction value SPKprt, and in step S111, the ignition timing correction value calculated this time. SPKpr
t and the ignition timing MB at which the maximum torque obtained based on the current engine speed and engine load can be obtained.
A comparison is made with a limit value (MBT-SPKtot) obtained by subtracting the current basic ignition timing SPKtot from T, and if SPKprt ≤ MBT-SPKtot, the routine jumps to step S113, and the ignition timing correction of this time calculated in step S110. Value SPKprt
Then, the ignition timing correction value SPKprt stored in the corresponding address of the ignition timing correction value map specified by the engine speed and the intake pipe pressure is updated, and the routine is exited. If SPKprt> MBT-SPKtot in step S111, the angle is excessively advanced beyond MBT, so the process proceeds to step S112, and the limit value (MBT-SPKto
t) as the ignition timing correction value SPKprt, and step S11
In step 3, the ignition timing correction value SPKprt stored in the corresponding address of the ignition timing correction value map is updated, and the routine exits. Although the intake pipe pressure is used as the engine load in the present embodiment, it may be any value that represents the engine load.
It is not limited to this. Further, in the present embodiment, for the overall correction, when a predetermined number of corrections is satisfied for the same operating region (for an operating region that first reaches the predetermined number of corrections), the ignition timing correction value at that time is calculated to perform ignition. The ignition timing correction value SPKprt for all areas (addresses) of the timing correction value map is updated, but the learning condition is not the number of corrections but the correction to the retard value and the correction to the advance value. The number of times of changing directions may be changed.

【発明の効果】【The invention's effect】

以上説明したように本発明によれば、点火時期が最適点
火時期から大きく外れた場合、補正確率の高い領域の点
火時期補正値をその周辺領域の点火時期補正値を含めて
演算にかけて妥当な点火時期補正値を求め、これを制御
域全体の点火時期補正値として適用したうえで、部分補
正を実行することで、各領域の点火時期を最適点火時期
に早期に収束させることができ、これにより、ノッキン
グ発生率を低下させ、運転フィーリングを向上できるな
ど優れた効果が得られる。
As described above, according to the present invention, when the ignition timing is largely deviated from the optimum ignition timing, the ignition timing correction value in the region having a high correction probability is calculated by including the ignition timing correction value in the peripheral region and a proper ignition is performed. By obtaining the timing correction value, applying it as the ignition timing correction value for the entire control range, and then executing the partial correction, the ignition timing of each region can be converged to the optimum ignition timing at an early stage. Further, it is possible to obtain an excellent effect such that the knocking occurrence rate is reduced and the driving feeling is improved.

【図面の簡単な説明】[Brief description of drawings]

第1図は本発明の一実施例を示す制御系の回路構成図、 第2図(a)は基本点火時期マプの説明図、 第2図(b)は点火時期補正値マップの説明図、 第3図(a)は加速判定値マップの説明図、 第3図(b)は加速補正マップの説明図、 第3図(c)はノック強度と遅角量との関係を示す説明
図、 第4図(a)は補正係数テーブルの説明図、 第4図(b)はノック発生間隔判定値テーブルの説明
図、 第5図は点火時期設定手順を示すフローチャート、 第6図は点火時期補正値および加速補正量学習のメイン
ルーチンを示すフローチャート、 第7図は加速補正量学習のサブルーチンを示すフローチ
ャート、 第8図は点火時期補正値学習の全体補正実行サブルーチ
ンを示すフローチャート、 第9図は点火時期補正値学習の部分補正実行サブルーチ
ンを示すフローチャートである。 1……吸入管圧力センサ、 4……エンジン回転数センサ、 7……ノックセンサ、 18……マイクロプロセッサ、 21……点火装置、 SPKtot ……基本点火時期、 SPKprt ……点火時期補正量、 SPKreal……点火時期、
FIG. 1 is a circuit configuration diagram of a control system showing an embodiment of the present invention, FIG. 2 (a) is an explanatory diagram of a basic ignition timing map, and FIG. 2 (b) is an explanatory diagram of an ignition timing correction value map, 3 (a) is an explanatory diagram of an acceleration determination value map, FIG. 3 (b) is an explanatory diagram of an acceleration correction map, and FIG. 3 (c) is an explanatory diagram showing the relationship between knock intensity and retard amount. FIG. 4 (a) is an explanatory diagram of a correction coefficient table, FIG. 4 (b) is an explanatory diagram of a knock occurrence interval determination value table, FIG. 5 is a flowchart showing an ignition timing setting procedure, and FIG. 6 is an ignition timing correction. FIG. 7 is a flowchart showing a main routine for learning the value and acceleration correction amount, FIG. 7 is a flowchart showing a subroutine for learning the acceleration correction amount, FIG. 8 is a flowchart showing a whole correction execution subroutine for learning the ignition timing correction value, and FIG. Time correction value learning partial correction execution support It is a flowchart illustrating a routine. 1 ... Suction pipe pressure sensor, 4 ... Engine speed sensor, 7 ... Knock sensor, 18 ... Microprocessor, 21 ... Ignition device, SPKtot ... Basic ignition timing, SPKprt ... Ignition timing correction amount, SPKreal ...... Ignition timing,

Claims (1)

【特許請求の範囲】[Claims] 【請求項1】エンジン負荷およびエンジン回転数に基づ
いて基本点火時期を設定し、ノッキング検出によりエン
ジン負荷およびエンジン回転数をパラメータとして点火
時期補正値マップにストアされた点火時期補正値を学習
し、上記基本点火時期を点火時期補正値により補正して
点火時期を設定する内燃機関の点火時期制御方法におい
て、 上記点火時期補正値マップにおける同一領域で所定の補
正回数に達し学習条件が満足したかを判別する手順と、 上記学習条件成立時、該当領域の点火時期補正値を周辺
領域の点火時期補正値を含め平均化処理し、この平均値
で上記点火時期補正値マップの全領域の点火時期補正値
を更新する手順と、 上記全領域の点火時期補正値の更新後、各領域毎の点火
時期補正値をノッキングの有無に応じ学習する手順とを
備えることを特徴とする内燃機関の点火時期制御方法。
1. A basic ignition timing is set based on an engine load and an engine speed, and an ignition timing correction value stored in an ignition timing correction value map is learned by knocking detection using the engine load and the engine speed as parameters. In an ignition timing control method for an internal combustion engine in which the basic ignition timing is corrected by an ignition timing correction value to set the ignition timing, it is determined whether a predetermined number of corrections has been reached in the same region in the ignition timing correction value map and a learning condition is satisfied. When the learning condition is satisfied, the ignition timing correction value of the corresponding area is averaged including the ignition timing correction value of the peripheral area, and the ignition timing correction of all the areas of the ignition timing correction value map is performed with this average value. After updating the value and the ignition timing correction value for all the regions, the ignition timing correction value for each region is learned according to the presence or absence of knocking. Ignition timing control method for an internal combustion engine, characterized in that it comprises a sequence.
JP59280554A 1984-12-28 1984-12-28 Ignition timing control method for internal combustion engine Expired - Lifetime JPH0650100B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP59280554A JPH0650100B2 (en) 1984-12-28 1984-12-28 Ignition timing control method for internal combustion engine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP59280554A JPH0650100B2 (en) 1984-12-28 1984-12-28 Ignition timing control method for internal combustion engine

Publications (2)

Publication Number Publication Date
JPS61157761A JPS61157761A (en) 1986-07-17
JPH0650100B2 true JPH0650100B2 (en) 1994-06-29

Family

ID=17626661

Family Applications (1)

Application Number Title Priority Date Filing Date
JP59280554A Expired - Lifetime JPH0650100B2 (en) 1984-12-28 1984-12-28 Ignition timing control method for internal combustion engine

Country Status (1)

Country Link
JP (1) JPH0650100B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2950848B2 (en) * 1989-05-18 1999-09-20 富士重工業株式会社 Ignition timing learning control method

Also Published As

Publication number Publication date
JPS61157761A (en) 1986-07-17

Similar Documents

Publication Publication Date Title
US4640249A (en) System for controlling an ignition timing in an internal combustion engine and method therefor
US4766545A (en) System for controlling the ignition timing of an internal combustion engine
US4715342A (en) System for controlling the ignition timing of an internal combustion engine
JPH0650102B2 (en) Ignition timing control method for internal combustion engine
JP2731905B2 (en) Ignition timing control method for internal combustion engine
EP0096869B1 (en) Method and apparatus of ignition timing control
JPH0650099B2 (en) Ignition timing control method for internal combustion engine
US4541382A (en) Method and apparatus for ignition timing control of internal combustion engine
JP2687390B2 (en) Engine knock detection device
US4691678A (en) System for controlling the ignition timing of an internal combustion engine
JPH0650100B2 (en) Ignition timing control method for internal combustion engine
JPS61237884A (en) Knocking controller for internal-combustion engine
JPH0650101B2 (en) Ignition timing control method for internal combustion engine
GB2169958A (en) System for controlling the ignition timing of an internal combustion engine
JP4390939B2 (en) Knock control device for internal combustion engine
JPS60114734A (en) Crank angle position detector/corrector for internal combustion engine
JP3153394B2 (en) Knock detection method for internal combustion engine
JPH07116956B2 (en) Internal combustion engine compression ratio control device
JPS63306282A (en) Ignition timing control method for internal combustion engine
JP2541970B2 (en) Engine controller
JPS61157764A (en) Ignition timing control system for internal-combustion engine
JPH0444851Y2 (en)
JPH0751933B2 (en) Ignition timing control device for internal combustion engine
JPS6282273A (en) Ignition timing control device for internal combustion engine
JP3104526B2 (en) Apparatus and method for controlling ignition timing of internal combustion engine