2-bar / 3-bar hacking
Posted: Mon Mar 25, 2019 4:31 pm
Just thinking out loud about what it would take to make an open-source 2-bar or 3-bar OS for P01 and/or P59 PCMs...
Before looking up the value in the timing table (or any other table that uses the same load axis) the OS does some math to rescale the raw load value into something that can be used for the table lookup. The simplest way to create a 3-bar version of my OS would be to change that scaling. Then the load axis for every table that uses the same input would range from 0.8-to-3.6 rather than the current 0.8-to-1.2. After that, the contents of all tables that use the modified load axis would of course need to be rescaled. There are a bunch...
All of these table names came from the XDF that cmaje (from pcmhacking.net) created for 12593358, and all non-alphabetic characters in the table names got converted to underscores by a script that I created to label the tables in IDA:
SurfaceTable_25x29_Spark_Advance_Vs__Load_Vs__RPM_ _Open_Throt__Low_Oct
SurfaceTable_25x29_Spark_Advance_Vs__Load_Vs__RPM_ _Open_Throt__High_Oct
SurfaceTable_37x29_Cool_Comp_Spark_Advance_Vs__Loa d_Vs__Coolant_Temp
SurfaceTable_21x29_IAT_Spark_Advance_Correction_Vs __IAT_Vs__Load
SurfaceTable_17x29_Cat_Lightoff_Spark_Correction_V s__Engine_Run_Time_Vs__Load
SurfaceTable_25x29_Spark_Advance_Vs__Load_Vs__RPM_ _Open_Throt__High_Oct
SurfaceTable_25x29_Spark_Advance_Vs__Load_Vs__RPM_ _Open_Throt__Low_Oct
And probably also these:
SurfaceTable_13x29_Base_Spark_Adv__Vs__Load_Vs__RP M__Closed_Throt__In_P_N
SurfaceTable_13x29_Base_Spark_Adv__Vs__Load_Vs__RP M__Closed_Throt__In_Drive
SurfaceTable_13x29_EGR_Spark_Advance_Correction_Vs __Load_Vs__RPM
And another 13x29 RPM-and-Load table that I'm not sure what it's for, but all the cells are zero anyway.
Also, I found this in the HPT forum:
"If you are over 2.32 g/cyl you will get a 1514 no matter what you do to the 1514 table. "
So that would need to be fixed as well, and it's probably a hint that there are other details that will get in the way.
That might be sufficient, but I definitely haven't thought this all the way through.
Before looking up the value in the timing table (or any other table that uses the same load axis) the OS does some math to rescale the raw load value into something that can be used for the table lookup. The simplest way to create a 3-bar version of my OS would be to change that scaling. Then the load axis for every table that uses the same input would range from 0.8-to-3.6 rather than the current 0.8-to-1.2. After that, the contents of all tables that use the modified load axis would of course need to be rescaled. There are a bunch...
All of these table names came from the XDF that cmaje (from pcmhacking.net) created for 12593358, and all non-alphabetic characters in the table names got converted to underscores by a script that I created to label the tables in IDA:
SurfaceTable_25x29_Spark_Advance_Vs__Load_Vs__RPM_ _Open_Throt__Low_Oct
SurfaceTable_25x29_Spark_Advance_Vs__Load_Vs__RPM_ _Open_Throt__High_Oct
SurfaceTable_37x29_Cool_Comp_Spark_Advance_Vs__Loa d_Vs__Coolant_Temp
SurfaceTable_21x29_IAT_Spark_Advance_Correction_Vs __IAT_Vs__Load
SurfaceTable_17x29_Cat_Lightoff_Spark_Correction_V s__Engine_Run_Time_Vs__Load
SurfaceTable_25x29_Spark_Advance_Vs__Load_Vs__RPM_ _Open_Throt__High_Oct
SurfaceTable_25x29_Spark_Advance_Vs__Load_Vs__RPM_ _Open_Throt__Low_Oct
And probably also these:
SurfaceTable_13x29_Base_Spark_Adv__Vs__Load_Vs__RP M__Closed_Throt__In_P_N
SurfaceTable_13x29_Base_Spark_Adv__Vs__Load_Vs__RP M__Closed_Throt__In_Drive
SurfaceTable_13x29_EGR_Spark_Advance_Correction_Vs __Load_Vs__RPM
And another 13x29 RPM-and-Load table that I'm not sure what it's for, but all the cells are zero anyway.
Also, I found this in the HPT forum:
"If you are over 2.32 g/cyl you will get a 1514 no matter what you do to the 1514 table. "
So that would need to be fixed as well, and it's probably a hint that there are other details that will get in the way.
That might be sufficient, but I definitely haven't thought this all the way through.