If you want to reflash your GM vehicle using the HP Tuners software, you're going to need to understand how the PCM deals with ignition control. In this short lesson we'll have look at how the ignition timing is controlled and we'll see how to use the scanner to decide how and where to make changes to our ignition tables. For our lesson we're going to be using a 2013 HSV Club Sport R8. Fitted with a GM LS3, 6.2 liter V8. Now this is going to be applicable to a wide range of both Australian and US domestic market vehicles. So lets jump in the car and take a look. When it comes to optimizing
the ignition timing, one of the first things we need to know is where exactly the PCM is accessing in our spark advance tables
at any particular time. So essentially, where exactly the spark advanced values are coming from. If we know this accurately then this allows us to make our
changes to the advance table and the correct spots. And this is going to mean we're going to right results when we're flashing the ECU and we're going to get the right results on the dyno. For those new to the GM platform it can be a little bit confusing to figure out exactly
where we are operating in the spark advance map. And the reason for this is the load access that the PCM uses. So lets have a quick look
in our VCM editor software. And if we bring up our high
octane spark advance map. We have a map of ignition advance angles which looks relatively straight forward, particularly if anyone coming from a after market standalone
ECU tuning background this would look relatively normal. We can look at the graph
in three dimensions and again we have a
relatively sensible shape to that particular graph. Now the axis that we have here; on our x axis we have our engine RPM or our spark RPM as it's listed here. That again makes a lot of sense. The load access though we have here is the bit that can be a little
bit confusing initially. And it's listed as
spark air mass in grams. What this is, is grams per cylinder mass air flow. And this is the way the
GM PCM measures load. So we need to know where
abouts we're operating in this spark table. The RPM's relatively straight forward but we also need to look at what our mass air flow in grams per cylinder is so we can see where
exactly we are operating on that load axis. Lets have a look at our scanner and we can see how we can use that to help us. Alright we've got our engine running and we've got the scanner operating. I just wanna talk about a few of the key parameters that we're
going to be looking at here. First of all we have on our charts here we have our engine RPM. Relatively easy to explain. We've also got a couple of parameters here that we're going to be
looking at when we're running the car. First of all we have in white, our spark advance. And this is the final ignition
advance being delivered to the engine. So if we actually fitted
a timing light to the number one coil this is the time we should actually see when the engine is running. Above that we have in
red our KR parameter, which stands for knock retard. We're going to be
looking at that parameter once we actually run the engine. Now the other aspect that I've added here, the parameter that I've added here is cylinder air mass
in grams per cylinder. And you can see that
that parameter is also listed over on the left and in our channels list. So this is a parameter that I've actually added in there. It's not scanned or logged by default. So I we want to see where our, what our grams per
cylinder mass airflow is then we need to add this parameter. Lets do a run on our dyno so we've actually got some
data that we can look at and then we can talk about how
we can interpret that data. (engine noise) so that's our run complete. We ended up with 250 kilowatts at the rear wheels or 336 horsepower. What we're really interested
in looking at though is the data that we
collected during that run in our VCM scanner software. So lets have a look at that now. There's a lot of data here we're only gonna really
focus on a few key aspects. We've got our engine RPM at the top as we've already discussed and you can see our run is displayed here. We've gone from about 1500 RPM through to about 6500. If we move down and we
look at our spark advance in our knock retard, you
can see our white line showing us the ignition timing being delivered to the engine. We can actually see that we did have some knock activity
on this particular run at 5300 RPM. You can see that the PCM
was removing two degrees of ignition timing in response to a knock event. So this indicates that
the engine was suffering from knock during the run and the PCM was responding to that to safe guard the engine. At the bottom we've got our cylinder air mass and you
can see the purple line showing what our cylinder
air mass is doing at any particular point. Now we can use the parameters engine RPM and cylinder air mass to figure out where exactly we were
at any particular point in our ignition advance table. So these are the aspects we need in order to pinpoint where abouts we were operating in our ignition advance table. Lets have a look for example, if we move through to 2800 RPM. And you can see at 2800 RPM we were operating at
0.68 grams per second. Lets jump through to
our VCM editor software. And at 2800 RPM you can see that we're operating at 0.68 grams per second. Now we have a value of 25
degrees ignition timing in the table here, in our main high octane ignition table. And if we go through to
our scanner we can see that in fact we did have 25 degrees being delivered to our engine. Now even through we've pin pointed where we're operating in the table. The final advance that we
actually see in our scanner still might differ
somewhat from what we have in our main high octane advance table. We're going to talk about why
that might be in a second. First of all lets move
our histograms into view. And we'll see how we an
use our histograms to help us see where we're actually operating in our spark advance table as well. As well as logging the values, the actual final ignition advance values being delivered to the engine. So what we've got here is
our spark advance histogram. And this is the default histogram as displayed. As it is displayed right now it's not actually a lot of use to use. We can see we have engine RPM on our horizontal axis. Which is great, that matches our spark advance table. However you can see that
the load axis we have is manifold absolute pressure. Now remember we're using mass air flow in grams per cylinder so this
doesn't actually help us. You can see that the whole run that we've created there wide open throttle, while we were doing our
ramp run on the dyno, is constantly sitting between 95 an 90 KPA and this is what we'd expect
at wide open throttle. So that doesn't help
us figure out where we were operating in our spark advance table. Lets see how we can quickly
and easily manipulate this histogram to be a
little more useful to us. If we right click and we
go to the graphs layout we can alter, modify the graphs that are already available or add our own custom histograms. So you can see at the moment I've got our spark advance histogram highlighted. We've got all of the set up parameters for that particular histogram
listed on the right. You can see the parameter
that we're actually logging into this histogram is spark advance. Now what we want to do is come down here to our row axis and we want
to change the parameter that is being used as our row axis, and you can do that by
simply clicking on it. And now we've got a couple of ways we can choose the parameter
that we want to use for our load axis. One of the easiest ways is to start typing the name of the particular
parameter we want. So you can see I've
typed in cylinder here, all of the parameters
with the name cylinder in the title are now
going to be displayed. And if we simply come down we can see that we have cylinder air mass and we can click on that
and cylinder air mass parameter will now be
used as our row axis. Alternatively we can also navigate through the menu structure and find the particular parameter that
we want to use this way. So if we go through
engine, and then airflow and then cylinder we can see we have the same parameter being displayed here. Okay so we're not quite done now. Even though we have cylinder
air mass as our load axis we still, as you can see have manifold absolute pressure values
as our break points and that's not going to help us. So we need to change that. Now really easy way of doing this, if we skip back to our VCM editor software and we simply right
click some where on our high octane spark advance table and we go down to row axis and we go onto copy labels, what that's going to do is it's going to copy all of
these row axis labels here which is what we want onto the clipboard. We can now just pop back over to our scanner software. And if we highlight the current manifold absolute pressure
values and we press control V. That will now paste our cylinder air mass in grams per cylinder values in as our new row axis. So now what we have is a histogram that's set up with the correct load axis, the correct RPM axis and it's also just as importantly got the right break points. So basically this no replicates
our ignition advance table, if we look at that we've got the same RPM and we've got the same load axis. Now if we look at our histogram we can see where exactly our engine was operating during our ramp run. We can see at the start
of our run we were sitting at about 0.6 to 0.64 grams per cylinder. As the engine moves through the rev range and we move up towards peak torque we can see our air mass increase, peaks around about 0.82
grams per cyclinder and then at higher RPMs actually starts to taper away. So this makes it very easy to decide exactly where to make changes to your spark advance table. Now that we know how to use the scanner to decide exactly the PCM was accessing in the ignition advance table. We may still find that
the final ignition advance being delivered to the engine doesn't seem to match the numbers in the table. Now lets look at why that's the case. We're at a point here at about 5000 RPM and 0.82 grams per cylinder. And you can see at this particular point we've got 22 and a half degrees ignition advance being delivered to the engine. So lets pop across to the editor and have a look at that particular point. And at 5000 RPM we're actually operating between a couple of points but you can see that our
timing values appear to be more inline with about 21 degrees or perhaps 21.5 degrees. So why have we got more advance than our base table indicates? What we need to understand is that there are also a range
of correction tables that are acting on top of our main spark advance tables, to affect the final ignition advance being
delivered to the engine. And we can find these
on our spark advance tab in the VCM editor. And you can see that we
have a range of options over here, a range of tables listed under spark correction. And all of these are adding up to change or affect the spark
advances being delivered. Lets look at a couple of these now. And the first one I'm going to focus on is our AFR correction. So this is a correction
that is applied based on the current commanded air / fuel ratio. And if we open this
particular table we can see that the load access, or the
y axis I should say here, is in units of equivalence ratio. Essentially numbers larger than one are commanding a richer air / fuel ratio than stoichiometric. And we can see that as we
richen the air fuel Ratio and reach higher RPM, the correction table will start adding some
timing to our base values. As well as the base AFR correction table we also have some multipliers. For example, here we have a manifold absolute
pressure multiplier table, which shows us how much
of the additional advance will be added based on the
manifold absolute pressure at the point the engines running in. Lets move down and we'll have a look at our intake air temp or IAT spark. And this corrects the
ignition advance based on the current intake air temperature. So again we have a base table. And we an see we have our
intake air temperature on the x axis. And we have air mass on our load axis. So we can see that this particular table, particularly here in
the areas that we might end up operating at wide open throttle around about point 0.76 to
0.84 grams per cylinder. Once we get above 30
degrees intake air temp, the PCM will start pulling
timing in quite aggressively. Now this table also
works with a multiplier and we can see our
multiplier fits the amount of ignition advance being removed based on, in this case, engine RPM and intake air temperature. So depending on the
operating conditions we may not end up seeing all of the retard being displayed by this table actually being applied. We also have an engine coolant temperature modifier table as well. So all of these tables, this has just been a quick snapshot of how these operate, I'm not going to go into
detail on every single correction that could be applied. But it's important to
understand that these are working in the background and depending on your operating conditions these can end up affecting the final spark advance being
delivered to the engine. Lets pop back to the scanner
and we'll see how we can actually look at these
particular adders or corrections. In this particular data log I've actually added a couple of other parameters just to demonstrate the
corrections in action. And we can see we've
got these listed here. So we have first of
all our timing advance, so this is a standard parameter
that is logged by default, and this is the timing being
delivered to the engine. I've also logged our base advance which comes from our tables. I've also logged our IAT advance and I've logged our power enrichment or cat over temp advance. So when we look at these values you can see our base advance is sitting at 21.2 degrees. Which corresponds with what we saw in our high octane advance table. The final timing being
delivered to our engine however is 22.5 degrees. And that's as a result
of our power enrichment cat over temp advance correction. And that's really coming
from our AFR correction table that we've just looked at. As we target a richer
air / fuel ratio the PCM is advancing the timing slightly. So that's how our corrections
can affect the final ignition timing being delivered. Of course the knock control
strategy of the engine can also affect that so lets
have a look at this now. Now we notice we had some knock retard being delivered here around about 5300 RPM in response to a knock event. Now in itself that's
relatively straight forward. We can see we have two
degrees of knock retard so that's simply removed from
the final amount of ignition timing that was previously
being delivered. However another aspect
that is easy to overlook is the interaction of the high octane and the low octane advance tables. Lets go back to our editor and you can see under main spark advance that we have both a high octane and a low octane table. Generally we should expect
to see the values in the low octane table are a lot lower than the high octane table. We can see if we put these side by side that's exactly the case. In high RPM operation here
at very high mass airflow. We've got 19 degrees in
our high octane table and we've got 9 degrees
in our low octane table. So this is a safety
protection aspect that the PCM can use in response to an engine that is suffering from knock. So how the low octane and
high octane tables interact can be logged by looking at a parameter we've got here called
our 'knock learn factor'. So the knock learn factor is a value that varies between zero and one point zero. If we look a little bit earlier in our log we can see where we have no knock active our knock learn factor is sitting at zero. And when we have a value of zero as a knock learn factor, this means that the
PCM is operating solely on the values from our
high octane advance table. If we get a lot of knock activity though, this knock learn factor
will start increasing. And it can go all the
way to one point zero. And if we have a lot of knock and that knock learn factor reaches one point zero then our base advance becomes the values the values in our low octane table. So lets have a look in the area that the engine was suffering from knock. And we can see that our knock learn factor has now incremented to 0.18. So this means that the PCM is starting to bias the timing a little bit towards the low octane table. For example if we had
a value of 20 degrees in our high octane table, we had a value of 10 degrees
in our low octane table and our knock learn factor was point five. We'd be getting a base
advance value half way between the two. Which is 15 degrees. So hopefully this has given you some more insight into how the ignition control strategy works inside the GM PCM. By now you should understand
how to use the scanner to decide exactly where abouts in the ignition advance tables the PCM is operating at any point. You should also understand
how the correction tables can work to manipulate the final ignition advance being delivered. And you should understand what the knock retard function does, as well as the interaction
between the high octane and low octane ignition advance tables. If you enjoyed this lesson
and you'd like to learn more, check out the practical
reflash tuning course that's online right now. This course starts with
a general overview of the principles of reflash tuning, that are applicable to reflashing on any platform and any vehicle. Right now we have worked examples online based on the HP tuners platform and the GM LS3 we've just looked at. In this worked example you're going to learn how to optimize the fuel delivery, how to optimize the ignition timing. You're also going to
see how to re-scale the mass air flow sensor
and you're going to see how to adjust and optimize
the virtual VE tables. This is essential knowledge for anyone interested in reflashing GM vehicles on the HP tuners platform. We also offer a 60 day, no questions asked, money back guarantee. So there is absolutely no risk. If you buy this course and
you find it's not for you, we simply refund your money. You'll also get access to our regular live tuning webinars where we cover specific tuning topics and you can ask questions in real time. If you can't watch live
you can watch these in our archives were they're added along with over 80 hours of existing content. This is the best way to fast
track your tuning knowledge. If you're interested in finding out more, check out the course at
hpacademy.com/courses