RomRaider Logo

RomRaider

Open Source ECU Tools
 FAQ •  Register •  Login 

RomRaider

Documentation

Community

Developers

It is currently Tue Dec 23, 2025 5:17 pm

All times are UTC - 5 hours [ DST ]




Post new topic Reply to topic  [ 1 post ] 
Author Message
 Post subject: Knock Control when there's no IAM
PostPosted: Fri Mar 04, 2022 1:13 am 
Offline
Experienced

Joined: Fri Aug 21, 2020 6:05 am
Posts: 315
It turns out the knock control strategy in my car has no IAM, so I've gone through the logic. It has some similarities, and differences, to knock control when there is an IAM (described here: https://romraider.com/forum/viewtopic.php?f=40&t=1840). Numbers below in brackets are the values in my ROM, but can be changed via a flash as required.

Knock Correction Advance (KCA)
Knock Correction Advance is normally the sum of Feedback Knock Correction, Fine Learning Knock Correction and what I have called User Defined Knock Correction.
KCA = FBKC + FLKC + UDKC

FBKC, FLKC and UDKC can be active at the same time.

Feedback Knock Correction (FBKC)
Similar to other ROMs, FBKC is not 'learned' but is simply applied based on what is occurring at the time. FBKC is only updated when all of the following apply:
- no fault detected in the Knock Sensor
- no fault detected in the Throttle Actuator
- Engine Load > 0.6
- the AF Learning system is off
- the car is not cranking
- full torque is not being requested OR full torque was requested less than 250 ECU cycles ago

FBKC starts at 0.0 and is reset to 0.0 anytime the above conditions are not met. FBKC can only be negative.

When FBKC is active and each ECU cycle that Knock is detected, FBKC is reduced by the FBKC Retard Value (1.05). If knock is not detected for a certain number of consecutive cycles (FBKC Advance Delay Counter = 32), then FBKC is increased by the FBKC Advance Value (0.35).

If Engine Speed is between 1100 rpm and 5600 rpm, then FBKC is capped so that the sum of FBKC, FLKC and UDKC can not be more than a Retard Limit (7.0). If Engine Speed is outside this range, then FBKC can only be reduced by a maximum of 3.0 relative to the last FBKC value recorded when Engine Speed was in the range.

Fine Learning Knock Correction (FLKC)
Similar to other ROMs, FLKC is 'learned' in certain Engine Speed ranges (3) and Engine Load Ranges (3) to create a 3 x 3 table of learned values. Based on Engine Speed and Engine Load, the ECU determines which cell of this table to apply. As Engine Speed or Engine Load are dropping, a tolerance of 100rpm on Engine Speed range and 0.1 on Engine Load will be allowed before the ECU actually implements a change in the FLKC cell currently being applied. No tolerance is applied if Engine Speed or Engine Load are increasing.

FLKC is only active when all of the following apply:
- ECT > 70 degC
- Engine Speed > 1100 rpm and < 5700 rpm
- Change in Engine Load from prior ECU cycle is between -0.1 and +0.1
- no fault detected in the Knock Sensor
- no fault detected in the Throttle Actuator
- Engine Load > 0.6
- a particular fuelling compensation is 0 or close to 0
- AF learning system turned off more than a short time ago
- The AC was not just turned on
- no fault detected in the Exhaust Gas Recirculation
- full torque is not being requested OR full torque was requested less than 250 ECU cycles ago

The applied FLKC value starts at the learned value for the particular Engine Speed and Engine Load cell. FLKC can be positive or negative. The applied FLKC (but not the stored value) is reset to 0.0 any time the above conditions are not met.

When FLKC is active and each ECU cycle that Knock is detected, FLKC is reduced by the FLKC Retard Value (0.35) down to the FLKC Retard Limit (-5.98). If knock is not detected for a certain number of consecutive cycles (FLKC Advance Delay Counter = 32), then FLKC is increased by the Advance Value (0.35) up to the FLKC Advance Limit (5.98). The updated value is immediately stored in the relevant cell of the FLKC table.

User Defined Knock Correction (UDKC)
There is a third type of Knock Correction in the ECU logic, but it is all set to zero, so it appears to be a remnant from testing. Given it's not really used, I won't go into much detail. It has two modes. In the first mode, retarding/advancing is similar to FLKC, but remains between the bounds of 0 and a positive value set in ROM (so only positive UDKC is possible). In the second mode, retarding/advancing is similar to FLKC, but remains between the bounds of 0 and a value specified by the user (so positive or negative UDKC is possible). The ECU logic switches between modes depending on various parameters.

Knock Correction Advance (KCA)
A switch in the ROM will switch off all KCA calcs and set KCA to 0.0 (see another post on this 'configuration byte' https://www.romraider.com/forum/viewtopic.php?f=40&t=19280).

Assuming this switch doesn't apply, there are other overrides that may apply to the KCA calculation:
- if there is a knock sensor fault or a throttle actuator fault, KCA is set to -4.5
- if Engine Load < 0.6 or the AF learning system is on, KCA is set to 0.0

Assuming none of these overrides apply, then KCA is calculated as follows. KCA has its own RPM limits which just happen to be the same as the FLKC limits of 1100 rpm and 5700 rpm. KCA also has its own ECT threshold which just happens to be the same as the FLKC threshold of 70 degC. If Engine Speed is outside these limits or ECT is below this threshold then KCA is calculated as FBKC + UDKC - 1.5, and is kept between the bounds of a Retard Limit (-7.0) and a maximum called KCA_Max (see below). If Engine Speed is within these limits and ECT is above the threshold, then KCA is calcuated to be FBKC + FLKC + UDKC (ie: the normal calculation). Again, it is kept between the bounds of a Retard Limit (-7.0) and KCA_Max.

If the AF Learning system is operating, KCA_Max is set to 0.0 (ie: only retarding is allowed). If the AF Learning system is not operating, KCA_Max is looked up based on Engine Load and Engine Speed and ranges between 0 and 14.0625.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Style based on FI Subsilver by phpBBservice.nl