RomRaider Logo

RomRaider

Open Source ECU Tools
 FAQ •  Register •  Login 

RomRaider

Documentation

Community

Developers

It is currently Thu Dec 25, 2025 7:10 pm

All times are UTC - 5 hours [ DST ]





Post new topic Reply to topic  [ 22 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: Ignition Timing - how it really works
PostPosted: Thu Sep 06, 2018 8:51 am 
Offline
Experienced

Joined: Sat Jun 24, 2017 2:23 pm
Posts: 315
Alas! The answers to the age-old question can be found within! For years people have wondered what’s up with the “burn time” table? Or is it a “Time for cylinder max pressure” table? Why can’t we understand what Nissan is doing with ignition timing?! What sort of witchcraft is this?!

Well, a quick look at the A2L dispels all the myths; the “timing maps” are actually “advance trimming maps” and the conversion for them is X-64 in (hold your breath…) degrees.

I know right? Now, there’s plenty more to the timing calcs than just the trimming maps, but as far as tuning is concerned, the trimming tables have a direct correlation on the amount of advance.

So, how does it all work?

First, the ECU calculates MBT angle. I haven’t dissected this function entirely, the ECU estimates the mass of the contents in the cylinder, determines a flame speed, accounts for RPM, calculates a time and converts it to a mean best torque advance angle, vMBTCAL "MBT operation value"

The "Trimming-map compensation value", vLADVTRM has the knock flag (128) removed and is stored as vADVTRMAP, "Trimming-map reference value". wvHTARTDR "High intake air temperature retard value (after the change width limiter)" is subtracted from the reference value and the result is saved as vADVTRM "Trimming-map compensation value". This result is added to vMBTCAL.

Then a few more parameters are accounted for; vCATDAN "Catalyst heating compensation value" and vADVJAR "Jar sound compensation value" are subtracted, vVTCADV "VTC ignition timing compensation value" is added. Finally -64 is applied to result in vTADVMnm "At the time of usual, a basic ignition timing"

This isn’t the end though! More to come…


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Thu Sep 06, 2018 8:51 am 
Offline
Experienced

Joined: Sat Jun 24, 2017 2:23 pm
Posts: 315
Now things start to get a bit more complicated. Most folks (myself included) aren’t going to be modifying this part of the ROM, but I was on a quest to find out how knock was compensated for in the calcs, so I carried on. I’ve skipped over details like idle, start, and how some of the functions feeding into the timing routines work, the focus here is just to gather a broad understanding.

In the above post, all that the ECU figured out was a value for best torque. Great! But what about knock compensation? Cruise conditions? Acceleration? Deceleration? It’s all in here, the "Calculation of torque correction volume at ignition timing" routine, KF7-320A.1[6].

Now the ECU checks a couple of flags to determine if the engine is operating in the knock control region. If it is, it grabs bvBETA "Knock control value" and keeps it handy. It then recalls vTQRET "The amount of retard control" which is calculated by a separate torque request routine. The ECU checks which one is greater and stores it as vADVHOS "The amount of ADV compensation".

Then it recalls vDLTADV "At the time of the acceleration, the amount of ADV phase control" and adds it to vADVHOS. It also recalls avSCKRET "The amount of re-acceleration shock retard" and compares the sum of vDLTADV and vADVHOS with avSCKRET and chooses the larger of the values. The larger of the values is added to vTADVM "A basic ignition timing" (same as vTADVMnm for our intents and purposes) and the result is stored as vADVBL "In front of the limiter, ignition timing"

As you would expect, the ECU runs some checks on these calcs and ensures that the results are within an acceptable range and aren’t changing too much too fast. This is also where vADVADJ "ADV adjustment value" which is programmable by CONSULT tool is incorporated. This is the popular “2 degree advance” mod that was done back when there were no tuning options. The advance side limiter in my ROM is 50 deg and -7 retard. Once it goes through these details the result is stored as vADV "Ignition timing".

Just about finished, the ECU then runs a few more checks and calculates the value you see with your OBD reader vFADV "A final ignition timing"! This is where the flywheel tooth position mCRSET "A Ref signal rising is located" (often 110 degrees) is taken into account.

That’s all for now. I’m inclined to investigate vDLTADV "At the time of the acceleration, the amount of ADV phase control" and vTQRET "The amount of retard control" a bit more to see how their routines work and if there are benefits to manipulating ignition timing this way.


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Thu Sep 06, 2018 8:20 pm 
Offline
Experienced
User avatar

Joined: Wed Jan 08, 2014 11:07 pm
Posts: 652
Awesome post - one of the best I've seen in a while, with the A2L release itself.
When you're done with the write-up, I might steal it for the wiki (or you can add it yourself if you were so inclined).

Thanks for documenting this !

_________________
If you like nisprog + npkern, you can support me via https://liberapay.com/fenugrec/
For sending me encrypted/secure messages, use PGP key 0xBAC61AEB3A3E6531 available from pool.sks-keyservers.net


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Sat Sep 08, 2018 2:51 am 
Offline
Newbie

Joined: Wed Feb 15, 2017 5:06 am
Posts: 19
This is an awesome discovery.

Things make a lot more sense. I was wondering why it never looked like a traditional rpm-load timing map.
Everything is around 64 in the 350z/g35 vq35de timing maps.
I note: Nissan adds a little extra "timing" when the intake cam timing is at it's most advanced.

+ Thanks.


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Sun Sep 09, 2018 6:40 pm 
Offline
Newbie

Joined: Fri Dec 16, 2016 6:01 pm
Posts: 10
Image

Great job! Thanks!


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Mon Nov 12, 2018 8:19 pm 
Offline
Experienced

Joined: Tue May 24, 2016 1:45 am
Posts: 216
Great post!


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Mon Nov 19, 2018 9:23 am 
Offline
RomRaider Donator

Joined: Wed Feb 08, 2017 8:10 pm
Posts: 60
You have won the internet for 2018


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Wed Feb 20, 2019 6:19 pm 
Offline
Newbie

Joined: Thu Apr 12, 2018 3:56 pm
Posts: 1
The knock flag in the timing correction map is in fact "high knock sensitivity" bit that is clearly visible in red in this 350Z CD700 file. Most common modification in the tuner scene is to defeat (subtract 128) this bit and use the map with low knock sensitivity instead.


You do not have the required permissions to view the files attached to this post.


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Sat May 25, 2019 9:35 am 
Offline
Newbie

Joined: Sun May 19, 2019 7:33 pm
Posts: 13
Hello everyone,
I am starting to understand these types of timing maps but still have some grey areas. All my life I have been used to regular degrees of timing, so please bear with me.
So far what I have is - Remove 128 from the knock flagged area on the High DET and Low DET maps and edit. When done, reinput the 128 to the Knock area.

I get confused with the numbers I have on the map. Since they are not in degrees, I don't understand them. If I am reading your degrees conversion math X-64 correctly, then at idle where the map shows 40 => 40-64 = -19. Negative timing=super confused

I attached a Screenshot so everyone sees what I am seeing.

I have my SpecV High Compression build in the works, and need to figure ignition timing out lol. I aiming for completion for sept. Its an 02 and I don't want the Uprev upgrade to eat into the budget. :mrgreen:

Thank you


You do not have the required permissions to view the files attached to this post.


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Sat May 25, 2019 11:43 am 
Offline
Experienced

Joined: Sat Jun 24, 2017 2:23 pm
Posts: 315
Use the most recent definitions, https://github.com/a33b/NissanDefs/tree/working and then re-read this thread. Unfortunately, we can't toggle the knock window on/off in RR so I find it easier to make adjustments in a spreadsheet where I can see everything in degrees and then add the knock window back in.


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Wed May 29, 2019 9:17 pm 
Offline
Newbie

Joined: Sun May 19, 2019 7:33 pm
Posts: 13
Hi a33b,
Thanks for the response. Your defs changed all displayed data, very awesome work!

I ve been spending the last couple of days re reading the post as directed and cant put the puzzle together.

Where do you get all the other data inputs for the calculation to import to excel and perform the minus 64?

How do you export data to excel, copy and paste?

Thank you for all the help.


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Wed May 29, 2019 11:31 pm 
Offline
Newbie

Joined: Sun May 19, 2019 7:33 pm
Posts: 13
Hey guys,
Really random but i used a hours/minutes/seconds to degrees converter and I got ~14 degrees at low end and 50 degrees,inputting the highest 200 value. Is this valid for coverting,burn time? 15 degrees at idle and,50 degrees high end,WOT

Calculator below.

http://www.kylesconverter.com/angle/min ... to-degrees


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Thu May 30, 2019 2:22 pm 
Offline
Experienced

Joined: Sat Jun 24, 2017 2:23 pm
Posts: 315
There is no "burn time". That's what the first post says, and why the definitions have been updated. Look at the table and you can see that the units for the trimming table are in degrees. These are not absolute degrees, they are a delta that is applied to the MBT calculated advance.
a33b wrote:
the “timing maps” are actually “advance trimming maps” and the conversion for them is X-64 in (hold your breath…) degrees.

as far as tuning is concerned, the trimming tables have a direct correlation on the amount of advance.


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Tue Jun 11, 2019 5:49 pm 
Offline
Newbie

Joined: Sun Jan 01, 2017 6:17 pm
Posts: 22
Just to clarify, you aren't subtracting 128 for "knock sensitivity". The code preserves the most significant bit as a table blending flag (i.e. if the MSB is set, it will blend between table A and table B). This is done using a 0x7F bitmask


Top
 Profile  
 
 Post subject: Re: Ignition Timing - how it really works
PostPosted: Thu Jun 13, 2019 12:23 am 
Offline
Experienced

Joined: Sat Jun 24, 2017 2:23 pm
Posts: 315
You're right that it does blend the tables at times. However it also uses the MSB as a flag for the knock learning region which usually coincides with the KLMRT (knock retard limiting map) at its greatest allowed retard. I posted an excerpt of annotated disassembly, note the evaluation at 0x4ced0


You do not have the required permissions to view the files attached to this post.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 22 posts ]  Go to page 1, 2  Next

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