Would it be possible to get some clarification on the knock control side of the firmware, more specifically the channels and how the values are calculated?
I have read the ‘Log’ help for knock control, but have a few questions? This is currently running FW 3.063. Engine is turbocharged and runs fully sequentially.
What is ‘Knock Level Peak’ - the highest value from either sensor or cylinder at that moment, or something different?
What causes the flag in the EMU default stream to be set for ‘Knock Detected’, because it appears to randomly get set whenever there is any value on ‘Knock Level Peak’, and even sometimes when that value is flat 0v (see below log). Is this flag in the default stream no longer correct?
Is transmitting the ‘Knocking Cylinders’ as a bitfield from EMU custom stream supported (as above)? The flags appear to be set whenever there is any voltage on ‘Knock Level Peak’, but even when below the ‘Knock Engine Noise’ level? (see below log for example of cylinder 2).
Why would I see an ignition retard value when the ‘Knock Level Peak’ is below the ‘Knock Engine Noise’? Is this because ‘Knock Level Peak’ isn’t actually what I think it is? and the example cylinder 2 event below is caused by a higher voltage on cylinder 2 individually?
The above isn’t just isolated to cylinder 2, I get random flag events and ignition retards under the same conditions across all 6 cylinders in the log. There is no knock present - confirmed on the dyno and the above is only low boost 3psi.
Currently I don’t log the ‘Knock Voltage Peak Cyl N’ channels, due to the CAN stream limitations in the EMU being 32x - just to log the voltage/retard and reference background noise it would be 13x channels used - when things not included in the standard stream (Fuel Pressure Corr/Err, VVT, Boost PID/DC, CAN Switches) are required instead.
The main question is regarding the ‘Knock Level Peak’ channel, but any further clarification regarding the other questions and how knock is determined in the firmware would be appreciated.
I understand that the ignition control resolution is 0.5 degrees, so knock retards below that level aren’t actually retarded.
I recall the answer being something like the ECU retards if the retard exceeds its resolution due to continuous counting or high knock voltage, and also exceeds engine noise.
Therefore, I understand that the knock count by the ECU and the actual knock need to be reconciled using a “device that can truly detect knocks.”
The V3’s knock strategy seems very delicate to me.
In the other thread, I think it was mentioned the retard value was 0.125deg resolution, but maybe that is just the packing of the value for CAN.
I am trying to get it working properly or at least have the data correct so I know what is going on. It’s one thing being right on a dyno and tuning with cans, but another when its flat out on circuit for a day and a lot more factors come in to play
I already killed an engine due to DET a few months back (from oil ingestion rather than poor tuning), but could not work out what was actually happening, or the amount of ignition retard the EMU attempted to apply, as the overall ignition field I was transmitting on CAN (Knock Ignition Retard) was replaced with a Turbolamik field and I didn’t know… I dont think any ignition was retarded (or not enough), but we’ll never know…
Also on another note, with the TPS being the basis for the knock strategy, I get a lot of sensor noise in certain situations when heel-toe rev matching on downchanges, which is generally large throttle inputs but no load. I am assuming there is no way around this?
What is ‘Knock Level Peak’ - the highest value from either sensor or cylinder at that moment, or something different?
The maximum registered knock peak (Engine noise - Knock voltage peak cyl) since the last sample in the log. A value of 0 indicates no knock, while values greater than zero indicate knock. The higher the value, the more severe the knock. This value can be from any cylinder, but it is the highest registered value.
What causes the flag in the EMU default stream to be set for ‘Knock Detected’, because it appears to randomly get set whenever there is any value on ‘Knock Level Peak’, and even sometimes when that value is flat 0v (see below log). Is this flag in the default stream no longer correct?
Knock level for given cylinder must be higher than 0
Is transmitting the ‘Knocking Cylinders’ as a bitfield from EMU custom stream supported (as above)? The flags appear to be set whenever there is any voltage on ‘Knock Level Peak’, but even when below the ‘Knock Engine Noise’ level? (see below log for example of cylinder 2).
If you send if as raw 8 bit, then it is plain bitfiled.
Why would I see an ignition retard value when the ‘Knock Level Peak’ is below the ‘Knock Engine Noise’? Is this because ‘Knock Level Peak’ isn’t actually what I think it is? and the example cylinder 2 event below is caused by a higher voltage on cylinder 2 individually?
It is not possible. Could you please provide me a log file from EMU (windows client) with such situation ?
So the ‘Knock Level Peak’ I am looking at is not the correct field to monitor the knock sensors, as it is simply the difference ABOVE the background engine noise?
I.e. If the highest value from any cylinder was 2.45v, and the background ‘Engine Noise’ was configured to be 2.02v at that point, the ‘Knock Level Peak’ should read 0.43v ?
If that is the case, that answers the latter three questions, as the gain will be too high on all cylinders - I was working from the ‘Knock Level Peak’ channel to set the background noise profile, thinking this was an overall view of the engine noise combined from all cylinders.
The gain will need reducing on all 6x cylinders and adjusting to bring each down below the background noise table, then none of the flags would occour. It is not possible to log using EMU client - I cannot have the laptop connected when the car is in use on circuit at full pace.
Will there ever be a change to the 32x limit on the custom CAN input/output number of channels, or is there a firmware reason why this cannot be done?
I appreciate the clarification on the “Knock Level Peak” value. I noticed this staying at 0 and was wondering. It would be nice to have a max knock voltage peak that shows the loudest cylinder in a cycle. Pulling up every cylinder individually in the log window isn’t my favorite.
Can you explain why there is a difference in “Knock Sensing window” and “Graph Log window” between Knock Level Peak variable?
Under Knock Sensing window: 0.98 V
Under Graph Log Window: 2.08 V
Engine Noise: 1.96 V
Which one is correct? Because if we subtract Engine Noise - Knock Voltage Peak cyl #1, we get 0.96 V (value from Knock Sensing window) but what about 2.08 V from Graph Log window?
It would be useful if there was a logging channel where the maximum engine noise is displayed in one channel, because before tuning you can drive and record the engine noise in a safe ignition zone and fill in the table and use it to guide you further. Also, there is no need to take up unnecessary space in the window with a lot of cylinder information. If detonation occurs, you can investigate in more detail, then by cylinders separately.
EDIT:
Okay, so Knock Level Peak (value from Knock Sensing window) is maximum difference between one of the cylinders and the Knock Engine Noise (2.94V - 1.96V = 0.98V). What about Knock Level Peak (which is 2.08V if we take a look into graph log) - how that value is calculated?