Individual cylinder knock test - initial results
It uses one coil for two cylinders. Therefore, to kill spark to one cylinder, you'd also kill it for the other.
I don't think I can intelligently comment on the subtle change in the running quality of the engine (which is all you get when you drop the timing on one cylinder) when it is running on three though!
I guess if it was easy enough to be able to code to not trigger the spark event for one cylinder you could pull the plug on the other cylinder if running 3 is easy enough on the engine. Banging on 2 only would probably be a more dramatic change from 3
Thats what I was thinking but I had a brain fart. Physically speaking when the coil fires it fires both cylinders. However you can still figure out the 1-4 cylinders and 2-3 by turning that coil off. And/or you can make them run 10 degrees off of eachother and figure out which pair is which with the timing light.
Would it be too much to assume in the code that the injectors share the same cylinders as the spark?
Would it be too much to assume in the code that the injectors share the same cylinders as the spark?
mrfred, each cylinder event the knock interrupt calculates the increase in knock sum which is added on to the knock sum. I have taken this increase in knock sum and add it to a new set of four variables - one for each cylinder.
Yesterday I fitted an FQ360 high flow cat (previously decat) with 3" flanges and also went back to my usual 99 RON. I now have knock sums up to 7 under full load at 5000+ RPM (often less, have to drive it hard to do that), and the cylinder distribution is rather different to the previous random/noise knock sums I had before. I will selectively retard each cylinder to see which is which.
dan l I haven't looked much further at the coil and injector code, need to do so.
Yesterday I fitted an FQ360 high flow cat (previously decat) with 3" flanges and also went back to my usual 99 RON. I now have knock sums up to 7 under full load at 5000+ RPM (often less, have to drive it hard to do that), and the cylinder distribution is rather different to the previous random/noise knock sums I had before. I will selectively retard each cylinder to see which is which.
dan l I haven't looked much further at the coil and injector code, need to do so.
Yeah, I mean I'm grasping at straws with the injector. However we can do an injector disable per cylinder and its easy to identify which cylinder isn't getting fuel. If you can match that up with the spark then I'd ***-u-me that they share the same numbering scheme.
It doesn't do it as standard, but can be persuaded to. At the end of the knock sum routine there is a variable stored which is "increase in knock sum". I made it run a bit of code:
This code adds the increase in knock sum for that cylinder event to a running total for that cylinder. I store the values at FFFF6600,1,2,3 and then logged then with MUT 2,3,4,5 along with knocksum and other data.
You can see the asymmetry between the cylinders. Each time you see an increase in knock sum (blue) you can see which cylinder it was on, and I don't decay it like the knock sum. If it gets to 255 it will wrap around to zero. When the key is turned off for more than 10 seconds, the counters reset to zero as I put them in an area of RAM that gets cleared in this situation.
I filled with V-power rather than usual Tesco 99 (knocks slightly more on the same map), and it is a warm day and I had the A/C on. The single knock sum of 4 was a lift off, the other 0-3 range is satisfactory, or in the sweet spot IMHO. If I could just retard the cylinder marked as knock3 I think I could get better symmetry, more power and/or more safety. One cylinder shows no knock sum at all.
I believe that knock0 occurs when cyl1 is near TDC (5 deg BTDC), knock1 when cyl3 is near TDC, knock2 when cyl4 is near TDC, knock3 when cyl2 is near TDC. However, the knock sum is calculated from the noise above threshold on the previous cylinder, and knock sum I think is triggered off the rising edge of CAS, but the cylinder index I think is triggered off the falling edge of CAS.
So the bad cylinder MAY be Cylinder #3 or #4, and at present it is difficult to be sure. However, the asymmetry between cylinders suggests that further work would be beneficial. I think I have a way to selectively retard cylinders, so we'd soon see whether we'd matched the right cylinder when we repeat the log.
Code:
mov.l (cylindexbyte),r0 mov.b @r0,r0 extu.b r0,r0 and #3,r0 mov.l (storeadr),r1 add r1,r0 mov.l (knocksumincreasebyte),r1 mov.b @r1,r1 mov.b @r0,r2 add r1,r2 mov.b r2,@r0 mov.l (return),r0 jmp @r0 nop cylindexbyte: .long 0xffff70cf knocksumincreasebyte: .long 0xffff7b51 storeadr: .long 0xffff6600 return: .long 0x0000b8a6
You can see the asymmetry between the cylinders. Each time you see an increase in knock sum (blue) you can see which cylinder it was on, and I don't decay it like the knock sum. If it gets to 255 it will wrap around to zero. When the key is turned off for more than 10 seconds, the counters reset to zero as I put them in an area of RAM that gets cleared in this situation.
I filled with V-power rather than usual Tesco 99 (knocks slightly more on the same map), and it is a warm day and I had the A/C on. The single knock sum of 4 was a lift off, the other 0-3 range is satisfactory, or in the sweet spot IMHO. If I could just retard the cylinder marked as knock3 I think I could get better symmetry, more power and/or more safety. One cylinder shows no knock sum at all.
I believe that knock0 occurs when cyl1 is near TDC (5 deg BTDC), knock1 when cyl3 is near TDC, knock2 when cyl4 is near TDC, knock3 when cyl2 is near TDC. However, the knock sum is calculated from the noise above threshold on the previous cylinder, and knock sum I think is triggered off the rising edge of CAS, but the cylinder index I think is triggered off the falling edge of CAS.
So the bad cylinder MAY be Cylinder #3 or #4, and at present it is difficult to be sure. However, the asymmetry between cylinders suggests that further work would be beneficial. I think I have a way to selectively retard cylinders, so we'd soon see whether we'd matched the right cylinder when we repeat the log.
I wanted to look into if there were any improvements with ECUFlash out of curiosity. You said the bad Cylinder may be 3 or 4. I wanted to post a link to a thread I made a long time ago.
individual-cylinder-question
DTM stated this:
"Actually its the A/F ratio that is of greatest concern.
When doing testing on a bone stock bottom end with individual EGT and WB outputs (1 year ago) We found a difference of over 1(+) in cylinder number three. This comparison was done with stock and hks cams, stock turbo and 3" TB. By using the AEM cylinder trim features we were able to dial all cylinders into a + or - of .2.
Power was up over 13 hp without timing increase. Just a thought.
Keep in mind MANY MANY things can effect the outcome of power as you already know. This is just one case that each cylinder should be treated as such, independently for maximum reliability and power output. "
And also this:
"Without getting into too much, the AFR differences were greater in low load and low rpm. At one point the AFR had a differential of .8 to 1.7. Cylinder number three consistently became the culprit with the highest cylinder temperature.
We probed all four runners 1 1/2 inches from the port on the bottom side of the runner with EGT and 2 1/2 inches away were the individual WB outputs.
After adjusting individual cylinder fuel percentages in a linear fashion, we were able to come within .2 of a point on average during full throttle pulls. Under specified load (mustang dyno constant speed) the AFR became a bit more erratic between cylinders as we encountered slight rich misfires. Once we upgraded to an HKS DLI, even under constant load the AFR remained pretty consistent. Averaging now in the .3 range. At this point, please don't take it the wrong way, I will only give certain information about our findings. 1/2 a point of AFR differential betwwen cylinders can be ok, but you are talking about a forced induction (4cyl) application that generates a lot of heat and friction. Ask almost anyone here on EVOM to do a compression test on their STOCK blocks. You will find that 9.5 out of ten people have a 20psi drop in cylinder number three. It is inherent to the design of the engine and its associated components. We merely wanted to find out what it is actually processing during its cycle."
And also consider this:
"Quote:
Originally Posted by Second Chance
Tephra I believe its more of the intake manifold design than a difference in the injectors. #2 is the leanest cylinder as that is what most people run there EGT's and the cylinder that most have damage on in a failure.
The order in which we concluded was the leanest to the richest:
2
4
1
3
So your post is extremely accurate.
__________________________________________________ _______________
I wanted to help out anyway I could, I thought posting this up would assist in your tuning. Any information you may find can help others as well. I still have not learned how to tune with ECUflash, I am still wondering if an individual cylinder tune with ECU flash is still possible. I think taking A/F ratios into consideration along with knock as a tool at least DTM had a great starting point and was willing to share it.
let me see if I understand this,
cylinder three flows the least amount of air. it is at its worst before forced induction.
being too rich it was also found to be the hottest, this I assume was indicated by exhaust temps and may indicate exhaust temps from a cylinder that is not to hot but that is exhausting unburnt fuel into the manifold.
The point being, #3 becomes less likely to be the knocking cylinder (regardless of fault) while cylinder # 2 & 4 look like they, while being held lean by the ecu trying to balance afr, are overly lean and inclined to wildfire. Though the poor afr incurred at low load the heat may extend up into the pull.
This also brings up the recurring complaint of evo tuner nubes like myself who see off wot knock and have had a hard time tuning it out. Hard to say as the wonderful tests posted above do not say at what load the third cylinder cleaned up. How much of the condition happens during closed loop? That answer determines the bandaid fix.
very appreciative of the testing!
cylinder three flows the least amount of air. it is at its worst before forced induction.
being too rich it was also found to be the hottest, this I assume was indicated by exhaust temps and may indicate exhaust temps from a cylinder that is not to hot but that is exhausting unburnt fuel into the manifold.
The point being, #3 becomes less likely to be the knocking cylinder (regardless of fault) while cylinder # 2 & 4 look like they, while being held lean by the ecu trying to balance afr, are overly lean and inclined to wildfire. Though the poor afr incurred at low load the heat may extend up into the pull.
This also brings up the recurring complaint of evo tuner nubes like myself who see off wot knock and have had a hard time tuning it out. Hard to say as the wonderful tests posted above do not say at what load the third cylinder cleaned up. How much of the condition happens during closed loop? That answer determines the bandaid fix.
very appreciative of the testing!
Last edited by nothere; Sep 19, 2009 at 01:37 PM. Reason: injection / induction, mis wording
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
To add individual cylinder trim needs only 2 nops and a change of a pointer.
Code:
ROM:000257C0 loc_257C0: ; CODE XREF: sub_256B0+52j ROM:000257C0 ; sub_256B0+F2j ROM:000257C0 ; sub_256B0+F8j ROM:000257C0 ; sub_256B0+10Aj ROM:000257C0 mov.l @(h'29C,pc), r0 ; [00025A60] = accelflag? ROM:000257C2 mov.w @r0, r0 ROM:000257C4 tst #8, r0 ; 0 when not running, 17 at idle/overrun, 1 on throttle ROM:000257C6 nop ; nop ROM:000257C8 mov.l @(h'290,pc), r0 ; [00025A5C] = casflag4? ROM:000257CA mov.w @r0, r0 ROM:000257CC tst #1, r0 ; set when running, clear when not ROM:000257CE bt loc_257F8 ROM:000257D0 mov.l @(h'28C,pc), r0 ; [00025A60] = accelflag? ROM:000257D2 mov.w @r0, r0 ROM:000257D4 tst #h'20, r0 ; set if over 7000 RPM ROM:000257D6 nop ; nop ROM:000257D8 mov.l @(h'290,pc), r0 ; [00025A6C] = CASINDEX ROM:000257DA mov.w @r0, r0 ROM:000257DC extu.w r0, r0 ROM:000257DE mov.l @(h'284,pc), r10 ; [00025A64] = unk_FFFF8CD0 ; change to FFFF8cd0 ROM:000257E0 mov.b @(r0,r10), r11 ROM:000257E2 extu.b r11, r11 ROM:000257E4 add r11, r2 ROM:000257E6 bra loc_257F8 ROM:000257E8 nop
I wanted to also note something above because I had a question concerning timing... above they tested out with an HKS DLI, I just read a post about some "spooling" company that offers COP. That got me thinking, could you use COP to tune this timing thing better? Would that help at all or make a difference? I know that on page 2 or so of this thread it was mentioned about pulling off a plug or some jazz but that doesn't make sense. If you did a mechanical mod, COP, would that get you your individual timing? Also, I think the theory of individual tuning based on A/F is basically, rely on timing to be erratic so it can maintain a smooth combustion process. If you tune on knock, that just means you're working harder to achieve the same results, but won't get the same results... just a thought. If you messured A/F while you are adjusting the timing etc, then at least you have a tool to messure your other results to.
Last edited by Dorikun; Sep 16, 2009 at 11:34 PM.


