How are Engine Knocks Reported by the Fiero ALDL Data Stream (Page 1/2)
Romsk JUL 23, 08:32 AM
A few years ago I made my own Fiero ALDL display/record/playback tool. It took a lot of research but I think I am properly parsing the 25 bytes per frame that the ECM spits out at 160 baud. It displays every byte converted to units that make sense, for example, the MAT sensor is shown as degrees F (not just it's raw value). I even parse out all the bits for MW2, MWAF1, MCU1IO, MCU2IO, MALF1, MALF2, and MALF3. I have a brief description of each bit, but I don't know how all the values and bits interplay - especially for Knocks and Block Learn Mode. As you know, the Fiero ALDL is limited, it does not accept commands (just 4 modes selection based on a resistor value), it essentially just spits out a sync word (9 bits) and 25 data bytes (as 9 bits each) every 1.5 seconds or so.

My Fiero ALDL is posted on my website, but it is Rev 5 and it misses frames. I am working on Rev 6 that uses a dual buffer scheme to fix that and since I am doing that I want to at least add the Knock Counter and Block Learn Mode features.

So, does anybody know how those to features are determined from the ALDL data stream?

My website is paul.romsky.com if you want to see what my Fiero ALDL Tool looks like. But don't download it until I post version 6.

------------------
Paul Romsky

jdv JUL 23, 09:52 AM
Nice work. With the exception of the 85 fiero I didn't know the fiero's ecm used a knock sensor.
Raydar JUL 23, 10:06 AM
No Fiero (as shipped) uses a knock sensor. Even the 85s. Although the 85 V6 ECM is designed to support one.
All of the V6 definition files have an "on off" switch function (i believe) for the knock sensor, but I understand that the 86-88s don't have the pieces installed on the ECM board to support it.
Romsk JUL 23, 12:25 PM
Jdv and radar,

Thanks, so knock can only be detected using a knock sensor...Ok. I know Fieros don't have a knock sensor that I have seen. If it did, would that be on the engine or in the ECM?
Is it hardware, software, or both?

I am thinking I might be able to 'detect' a knock if the spark advance suddenly changes at any given RPM, that along with some other parameters I may be able to get close to detecting a knock indirectly.

What do you know about Block Learn Mode (BLM)?

All I know about it is it a mode where info is learned in blocks [smile].

------------------
Paul Romsky

Raydar JUL 23, 01:48 PM
The knock sensor itself would be on the engine someplace. Probably on the side of the block or the side of the head.
LS engines have two knock sensors - both in the valley. The 4.3 V6 has the knock sensor mounted on the back of the block, right next to the distributor, just above where the trans bolts up.
So it's kind of a crap shoot.
Lots of ECMs have a separate "knock module" that is part of the chip carrier. (Actually called a MEMCAL in later ECMs.)
They are kind of different for different engines. It looks for certain frequencies. Different engine configurations will likely transmit "knock frequencies" differently. (This is all from stuff that I've read and studied. If someone can explain it better, I hope they'll jump in.)

Also... Retarded timing is an effect from the knock sensor sensing knock(s). Since there is no knock sensor on the Fiero, the timing (sorry) "is what it is". It just behaves based upon the parameters programmed into the EPROM, regarding RPM, MAP, engine load, and throttle opening, and whatever else. But NOT knock. It has no way of detecting it. GM made a lot of educated guesswork when they did their programming, and the general consensus is that they pretty much got it right.
BUT... the way I set my timing is by ear. I advance the distributor a couple of degrees at a time until I hear a ping, and then I back it off until the ping goes away. You can't do that with a knock sensor.

BLM... I always understood BLM = Block Learn Multiplier. (Again... bring on the corrections.) If I remember correctly, it's a display of long term fuel trim. "Nominal" value is 128.
Short term fuel trim is "Integrator". It should also hover around 128, but will likely be more "jumpy".
I have no idea where to look for it in the datastream. You're waaaaay ahead of me, on this.
sanderson231 JUL 23, 02:09 PM
Here is the equation for setting the pulse width on the fuel injectors:

BPW = BPC * MAP * T * A/F * VE * BVC * BLM * DFCO * DE * CLT * TBM

Where

BPW - Base Pulse Width
BPC - Base Pulse Constant
MAP - Manifold Absolute Pressure
T - Temperature
A/F - Air Fuel Ratio
VE - Volumetric Efficiency
BVC - Battery Voltage Correction
BLM - Block Learn
DFCO - Decel Fuel Cutoff
DE - Decel Enleanment
CLT - Closed Loop
TBM - Turbo Boost Multiplier

BLM is the long term fuel trim. The value is picked from a 2 X 2 table depending on driving conditions (probably RPM and MAP). IIRC there are 16 different blocks. BLM is the starting point for determining fuel injector flow (pulse width). This is so the fuel injector pulses are approximately correct when transitioning to another block or when an engine is restarted. If the integrator is bouncing around 128, the values in the BLM block should be close to 128. An engine operating normally should have both BLM and CLT close to 128. Let's say something is wrong such as a partially plugged fuel injevctor. That cylinder will not be burning up a normal amount of oxygen and the O2 sensor will see a lean condition. The integrator will remove fuel trying to get back on ratio and the BLM values will be adjusted to something less than 128. The integrator adjusting the BLM values is the "learn" process. When power is removed from the PCM (such as disconnecting the battery) all the BLM values are set to 128 and the learn process starts over.


------------------
formerly known as sanderson
1984 Quad 4
1886 SE 2.8L
1988 4.9L Cadillac
1988 3800 Supercharged

Romsk JUL 23, 08:28 PM
Thanks, some of those parameters must be constants inside the ECM. It looks like it might be a type of PID control.
fierofool JUL 23, 08:31 PM
One of our former club members had a knock sensor on his 2.8 that was converted to a 7730 ECM. He initially removed a bolt in the side of the block, I believe on the trunk side. He eventually had to remove it and install it in the socket where the stock Cold Start Injector Switch is located at the right front of the lower intake manifold. He said the reason was that the 2.8's were so noisy that it had ultra high knock counts, causing the ECM to keep the spark timing retarded when there was no need. This was on an 85GT.

GM Tuners told me that the knock sensor should be from the same vehicle that the ECM comes from. In my case, it's a 93 Beretta and that's the sensor I'm using. No knock counts recorded. So, with an 85GT ECM, you would need to find a sensor that was used on a car of that era and engne. Olds, Buick, Pontiac, and Chevy fuel injected engines of the 80's might be a source. They all used a 2.8 in certain models.
Romsk JUL 23, 08:49 PM
Radar, Firefox, Sanderson231,

I am going to try to mount a piezo transducer and monitor its output with an Ardunio DUE. Good idea setting timing by ear (I used to do it that way on my VW Beatle) - I can twist the distributor to inject slight knocking and then put it back to normal. That will give me a baseline, then I can run the signal through an FFT and look for frequency spikes and pulse durations versus RPM. If a Knock is detected, I will light a lamp on my dash. I will also add that wire to my ALDL connector so my ALDL can monitor that signal too and display the results on my GUI. I am thinking about routing the SES signal to my ALDL as well (there is a spot for it). My adapter has 4 positions for the DM modes: Open: Normal, Short: Read Error Codes, and the two other modes that are selected by certain resistances to ground. My GUI will monitor and measure the SES pulses and display the Error Codes and what they mean.

So I will show Error Codes, Knock Detector/Counter, and the Block Learn Multipler matrix in my GUI, along with the 25 ALDL values.
I am thinking about adding a graph where you can watch each parameter overtime.

Thanks!
And thanks too all!

------------------
Paul Romsky

[This message has been edited by Romsk (edited 07-23-2022).]

Raydar JUL 23, 10:02 PM

quote
Originally posted by fierofool:
... He said the reason was that the 2.8's were so noisy that it had ultra high knock counts, causing the ECM to keep the spark timing retarded when there was no need. This was on an 85GT.




It occurs to me that knock sensors didn't really seem to become common until roller lifters did. Maybe flat tappets make too much noise.
(The first car I ever owned that had a knock sensor was an 88 Firebird. Which also, coincidentally, had roller tappets.)

Somebody who used to post here had a 3800 that was picking up noises from the 4T65E trans, that it thought were knocks.
Sounds like there's a bit of guesswork and wizardry involved.