evolutionm.net - Home of the Lancer Evolution
Home Features Community Marketplace Registry Garage

Go Back   evolutionm.net > Lancer Evolution 1-9 Forums > Evo Engine Management / Tuning Forums > EcuFlash
New! Use your Facebook, Google, AIM & Yahoo accounts to securely log into this site, click logo to login  

Welcome to EvolutionM.net!
Welcome to EvolutionM.net.

You are currently viewing our forum as a guest, which gives you limited access to view most discussions and access our other features. By joining our community, at no cost, you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is free, fast and simple, so please join our community today!


Reply
 
Thread Tools
Old Oct 21, 2009, 12:21 PM   #1
EvoM Guru
Personal Sales Rating: (33)
 
mrfred's Avatar
 
Join Date: Mar 2006
Location: Tri-Cities, WA
Posts: 4,795

Drives: Evo IX MR

Advanced fuel control options

Advanced fuel control options

This summarizes my efforts to flush out all the remaining key tables associated with fuel control. My original intent was simply to work out the tables that affect IPW during startup, but it turned out that I had to work out everything to understand the startup IPW stuff. So as usual, this effort morphed from a few day effort into a month long effort. Some of this has already been covered by jcsbanks, Bez, and Mattjin. I've put it all in one place, added detail, and made some corrections to what appear to be a few inaccuracies in the interpretation of the code.

Before going into the gory detail, I'll briefly describe the four different fuel pulse widths (FPWs) that are generated in the ROM code.

1) Cranking primer pulse - This is a single async pulse that is generated when the starter is engaged.
2) Cranking fuel pulse width - This is fuel pulse width that controls sync IPW while the starter is cranking
3) Main sync fuel pulse width - It is made up of four components. The two important ones are the base sync fuel pulse width contribution previously described by jcsbanks and a sync accel fuel pulse with contribution. The sync accel contribution keys off of an increasing load.
4) Async accel fuel pulse width - This is the async accel fuel pulse width previously described by Bez. It is a tip-in enrichment that keys off of a change in TPS.

I intend to write a patch that allows each of these contributions to be logged. This will allow a much better understanding of how all these contributions affect the final calculated IPW. In the mean time, each of the fuel pulse widths are described below. I have also included the tables for all these items for the 88590015 ROM. As usual, I hope people can help in getting these translated to other ROMs. (Note that some of these tables are listed in other threads and may or may not be accurately represented in the other threads.) Eventually, I will see to it that these tables get incorporated into a future version of ECUFlash.

Lastly, there are a few aspects of the fuel control routines that I want to study further that may result in the interpretation of a few of these tables changing a bit. It should be nothing drastic though.


1) Cranking primer pulse

This is a single pulse that is generated when the starter is engaged. The value is calculated from a 2D table vs coolant temperature and is the "Startup Enrichment IPW Adder" that I posted on EvoM a while ago. The value from this table is added to the injector latency and then sent to the injectors. For completeness, I'll list the table and scaling here, but with an updated name:

Code:
<scaling name="TimeInjCranking" units="ms" toexpr="x*0.008" frexpr="x/0.008" format="%.1f" min="0" max="500" inc="1" storagetype="uint16" endian="big"/>
<table name="Cranking Primer Initial Pulse" category="Fuel" type="2D" level="2" scaling="TimeInjCranking" address="52b2">
  <table name="Coolant Temperature" type="Y Axis" elements="9" scaling="Temp" address="6ff8"/>
</table>

2) Cranking fuel pulse width

Two different cranking FPWs are calculated. One is used while the starter is engaged, and the other appears to be momentarily used just after the starter is disengaged. I will only cover the value that is used while the starter is engaged. The formula for the cranking FPW while the starter is engaged is:

CFPW = constant*(TCOMP/128)*(CRANKINGTIMECOMP/128)*(UCOMP/128)*Baro + InjectorLatency

TCOMP = 2D compensation table vs coolant temp
CRANKINGTIMECOMP = 2D compensation table vs the length of time that the starter has been engaged
UCOMP = 2D compensation vs an unknown time interval. A measure of the number of times a specific subroutine has been called. Probably shouldn't be adjusted, so I am not including a definition for this table.
Baro = barometric pressure.

The coolant temp compensation and cranking time compensation for the 88590015 ROM are:

Code:
<scaling name="TimeTCOMPCrankingHack" units="Approximate ms" toexpr="x*0.9" frexpr="x/0.9" format="%.1f" min="0" max="500" inc="1" storagetype="uint8" endian="big"/>
<table name="Initial Cranking IPW vs Coolant Temp" category="Fuel" address="6040" type="2D" level="2" scaling="TimeTCOMPCrankingHack">
  <table name="Engine Temp" address="7014" type="Y Axis" elements="11" scaling="Temp"/>
</table>

<scaling name="Percent (128)" units="Percent (%)" toexpr="x/1.28" frexpr="x*1.28" format="%.0f" min="0" max="100" inc="1" storagetype="uint8" endian="big"/>
<table name="Cranking IPW Compensation vs Time" category="Fuel" type="2D" level="2" scaling="Percent (128)" address="323E">
  <table name="Time Since Engaging Starter (sec)" type="Static Y Axis" elements="20">
    <data>0.000</data>
    <data>0.022</data>
    <data>0.044</data>
    <data>0.066</data>
    <data>0.088</data>
    <data>0.110</data>
    <data>0.132</data>
    <data>0.154</data>
    <data>0.176</data>
    <data>0.198</data>
    <data>0.220</data>
    <data>0.242</data>
    <data>0.264</data>
    <data>0.286</data>
    <data>0.308</data>
    <data>0.330</data>
    <data>0.352</data>
    <data>0.374</data>
    <data>0.396</data>
    <data>0.418</data>
  </table>
</table>

3) Main synchronous fuel pulse width

This is the main fuel pulse. There are four contributions to this FPW (plus injector latency). The main fuel pulse is calculated from:

MFPW = BFPW + SyncLoadAccel - SyncLoadDecel + SyncLoadChangeIdle + InjectorLatency

Each of the four contributions are calculated from a base value that I call "injector flow per Hz". This is given by:

IFPHz = MAFScale*MAFComp*AirDensTweak*InjScale*InjMult

MAFScale = the 2D MAF scaling table that everyone knows.
MAFComp = the 2D MAF compensation table that everyone knows. Its just another multiplier based on MAF Hz (like the MAF scaling table).
AirDensTweak = 3D table vs MAF Hz and relative air volume. Mislabeled in early versions of ECUFlash. It appears to be there to handle potential MAF misbehavior at low airflow rates.
InjScale = the 1D injector scaling table that everyone knows
InjMult = a 1D table that Mitsubishi probably intended to be used to compensate for fuels that have different AFR requirements (e.g. gasoline vs E85). The built-in map switching code can select between an array of different values.

The tables associated with this base value are all listed in ECUFlash for the 88590015 ROM, but for completeness, I'll include them here again:

Code:
<table name="Airflow/Hz Raw Scaling" category="Fuel" type="2D" level="2" scaling="uint8" address="2d06">
  <table name="MAF Hz" type="Y Axis" elements="21" scaling="MAFHz" address="6da4"/>
</table>

<table name="Airflow/Hz Offset Raw" category="Fuel" type="1D" level="2" scaling="uint16" address="1112"/>

<table name="MAF Compensation" category="Fuel" type="2D" level="2" scaling="uint8" address="2d22">
  <table name="MAF Hz" type="Y Axis" elements="21" scaling="MAFHz" address="6da4"/>
</table>

<scaling name="AirTempBaroFactor" units="Fraction" toexpr="x/48" frexpr="x*48" format="%.2f" min="0" max="2" inc="0.02" storagetype="uint16" endian="big"/>
<scaling name="AirTempBaroCorrection" units="Fraction" toexpr="x/128" frexpr="x*128" format="%.2f" min="0" max="2" inc="0.02" storagetype="uint8" endian="big"/>

<table name="Airflow/Hz Baro and Air Temp Compensation" category="Fuel" type="3D" level="2" swapxy="true" scaling="AirTempBaroCorrection" address="2d51">
<table name="Rel Air Volume (20C, 1 bar)" type="X Axis" elements="4" scaling="AirTempBaroFactor" address="6d92"/>
  <table name="MAF Hz" type="Y Axis" elements="9" scaling="MAFHz" address="6dd8"/>
</table>

<table name="Injector Size Scaling" category="Fuel" type="1D" scaling="InjectorScaling" address="1106"/>
The four contributions

A) Base fuel pulse - This is the contribution that jcsbanks has described. It takes over after the starter has been disengaged. The equation for this contribution is given by:

BFPW = constant*[(STFT/256 + X + Y + 128)/512]*(MAFCompW/128)*
[(MasterLoad {+/- K*DeltaMasterLoad})/2048]*(AFRMAP/128)*(CAM/128)*
[(FFFF6F32+384)/512]*[(2*Startup_Mult+128)/128]*
(Z/128)*Baro*AirDensityFactor*(BFPW_Mult/128)*IFPHz

STFT = STFT, 0 during open loop driving
X = to be worked out, related to LTFT low, may be non-zero during open loop driving
Y = to be worked out, 0 during open loop driving
AFRMAP = AFRMAP from fuel table lookup routine
MAFCompW = MAF signal compensation vs coolant temp, 128 at normal operating temperature.
MasterLoad = master load variable, calculated from MAF signal
DeltaMasterLoad = absolute value of the change in master load, only used when load < 70, +/- based on accel/decel.
K is either 2 or 3 depending on a flag.
CAM = some factor related to camshaft timing, probably 128 during normal conditions, needs to be worked out.
FFFF6F32 = Have yet to work it out. Logging shows it to mostly be 128, but can vary between ~100 and ~150.
Startup_Mult = an average of two BFPW startup enrichment tables. These add a bit of enrichment for the first few moments after the engine has fired up. Decays to zero over a period of a few seconds after starter is disengaged.
Z = to be worked out, always 128.
Baro = barometric pressure
AirDensityFactor = 2D relative air density vs IAT table
BFPW_Mult = 128 under normal conditions, details to be worked out
IFPHz = see equation above

The additional tables for the BFPW contribution for the 88590015 ROM are:

Code:
<scaling name="Percent64(8-bit)" units="%" toexpr="100*x/64" frexpr="64*x/100" format="%.0f" min="0" max="400" inc="1" storagetype="uint8" endian="big"/>  

<table name="BFPW Startup Comp vs Coolant Temp #1" category="Fuel" address="3146" type="2D" level="2" scaling="Percent64(8-bit)">
  <table name="Coolant Temp" address="6ff8" type="Y Axis" elements="9" scaling="Temp"/>
</table>

<table name="BFPW Startup Comp vs Coolant Temp #2" category="Fuel" address="3156" type="2D" level="2" scaling="Percent64(8-bit)">
  <table name="Coolant Temp" address="6ff8" type="Y Axis" elements="9" scaling="Temp"/>
</table>

<table name="MAF Comp vs Coolant Temp #1" category="Fuel" address="3136" type="2D" level="1" scaling="uint8">
  <table name="Coolant Temp" address="6ff8" type="Y Axis" elements="9" scaling="Temp"/>
</table>

<table name="MAF Comp vs Coolant Temp #2" category="Fuel" address="3126" type="2D" level="1" scaling="uint8">
  <table name="Coolant Temp" address="6ff8" type="Y Axis" elements="9" scaling="Temp"/>
</table>

<scaling name="AirDensComp" units="Air Density Correction" toexpr="x/129" frexpr="x/129" format="%.3f" min="0" max="2" inc="0.01" storagetype="uint8" endian="big"/>

<table name="Air Density Compensation for Load And IPW" category="Misc" type="2D" level="2" scaling="AirDensComp" address="30fe">
  <table name="MAF Air Temp" type="Y Axis" elements="8" scaling="Temp" address="714a"/>
</table>
B) Sync Load Accel - This is a synchronous acceleration enrichment adder that is driven by an increasing load. The contribution is designed to rapidly decay out after load is no longer increasing. The equation for this contribution is:

SyncLoadAccel = constant*(DeltaMasterLoadPos/2048)*(TCOMP/128)*(RPMCOMP/128)*Baro*IFPHz

DeltaMasterLoadPos = increase in master load, zero when load is steady
TCOMP = 2D table vs coolant temp, scaling is x/128. There are two tables. Factors that control when each table is used have not been determined.
RPMCOMP = 2D table vs RPM, scaling is x/128
Baro = barometric pressure
IFPHz = see description above

The tables for the SyncLoadAccel adder for the 88590015 ROM are:

Code:
<scaling name="Mult128" units="Factor" toexpr="x/128" frexpr="x/128" format="%.2f" min="0" max="5" inc="0.02" storagetype="uint8" endian="big"/>

<table name="Sync Load Accel Compensation vs RPM" category="Fuel" type="2D" scaling="Mult128" level="2" address="3278">
  <table name="RPM" type="Y Axis" elements="15" scaling="RPM" address="6c26"/>
</table>

<table name="Sync Load Accel Compensation vs Coolant Temp Table #1" category="Fuel" type="2D" level="2" scaling="Mult128" address="6566">
  <table name="Coolant Temp" type="Y Axis" elements="8" scaling="Temp" address="6fde"/>
</table>

<table name="Sync Load Accel Compensation vs Coolant Temp Table #2" category="Fuel" type="2D" level="2" scaling="Mult128" address="326a">
  <table name="Coolant Temp" type="Y Axis" elements="8" scaling="Temp" address="6fde"/>
</table>
C) Sync Load Decel Subtractor - Subtracts fuel during rapid load reduction. I believe that its purpose is to transition to a fuel cut mode. The equation for this contribution is:

SyncLoadDecel = constant*DeltaMasterLoadNeg/2048)*LCOMP*TCOMP*(RPMCOMP/128)*Baro*IFPHz

DeltaLoadMasterNeg = decrease in master load, zero when load is steady
LCOMP = 2D table vs load
TCOMP = 2D table vs coolant temp
RPMCOMP = 2D table vs RPM,
Baro = barometric pressure
IFPHz = see description above

The tables for the SyncLoadDecel subtractor for the 88590015 ROM are:

Code:
<table name="Decel IPW Subtraction Comp vs RPM" category="Fuel" address="3350" type="2D" level="2" scaling="Mult128">
  <table name="RPM" address="6b7a" type="Y Axis" elements="10" scaling="RPM"/>
</table>

<table name="Decel IPW Subtraction Comp vs Load" category="Fuel" address="3360" type="2D" level="2" scaling="Mult128">
  <table name="Load" address="6cba" type="Y Axis" elements="14" scaling="Load"/>
</table>

<table name="Decel IPW Subtraction Comp vs Coolant Temp" category="Fuel" address="3342" type="2D" level="2" scaling="Mult128">
  <table name="Coolant Temp" address="6fde" type="Y Axis" elements="8" scaling="Temp"/>
</table>
D) Sync Load Change Idle - It appears that the purpose of this contribution is to transition from a fuel cut mode to the target IPW when rpms drop below 1000 rpm. Increasing and decreasing load can affect the contribution and after a set period of time, the contribution goes away regardless of whether load is changing. The contribution appears to be very small and is definitely not important for performance tuning. The equation for it is:

SyncLoadChangeIdle = constant*(DeltaMasterLoad/2048)*UCOMP*TCOMP*IFPHz

DeltaMasterLoad = Different than other DeltaLoad variables. Don't fully understand this yet
UCOMP = 2D table vs a RAM variable that I do not yet understand
TCOMP = 2D table vs coolant temp, scaling is x/128
IFPHz = see description above

The tables for these items in the 88590015 ROM are:

Code:
<table name="Sync Load Change Idle Compensation vs Time Below 1000 rpm" category="Fuel" type="2D" level="2" scaling="Mult128" address="6b3e">
  <table name="Unknown" type="Y Axis" elements="21" scaling="uint16" address="8246"/>
</table>

<table name="Sync Load Change Idle Compensation vs Coolant Temp" category="Fuel" type="2D" level="2" scaling="Mult128" address="6b30">
  <table name="Coolant Temp" type="Y Axis" elements="8" scaling="Temp" address="6fde"/>
</table>

4) Async TPS accel enrichment

This is the async accel that Bez and jcsbanks have mentioned many times, and as most people know, it is an async throttle tip-in enrichment adder to the fuel contribution. After finding a few inaccuracies in what Bez had posted, I decided to also work out some scalings. The equation for the async accel contribution is:

AsyncAccel = constant*TPSDeltaMULT*(AAStartupMult*TCOMP + RPMCOMP) + InjectorLatency

TPSDeltaMULT = 2D table vs TPSDelta
TCOMP = 2D table vs coolant temp compensation. There are two tables.
RPMCOMP = 2D table vs RPM compensation.

The definitions for these tables plus the other items that control async accel for the 88590015 ROM are listed below.

Code:
<table name="Async Accel Pause Period" category="Fuel" address="1254" type="1D" level="2" scaling="uint16"/>

<table name="Async Accel Min TPS Delta" category="Fuel" address="1256" type="1D" level="2" scaling="ThrottlePercentage"/>

<scaling name="AsyncAccelMaxFPW" units="ms" toexpr="x*32*0.008" frexpr="x/(32*0.008)" format="%.2f" min="0" max="20" inc="0.02" storagetype="uint16" endian="big"/>
<table name="Async Accel Max Pulsewidth" category="Fuel" address="1258" type="1D" level="2" scaling="AsyncAccelMaxFPW"/>

<scaling name="Mult128-16" units="Multiplication Factor" toexpr="x/128" frexpr="x/128" format="%.2f" min="0" max="5" inc="0.02" storagetype="uint16" endian="big"/>
<table name="Async Accel Max Total Contribution During Accel Period" category="Fuel" address="125A" type="1D" level="2" scaling="Mult128-16"/>

<table name="Async Accel Mult to Coolant Temp Adder During 5 Sec After Startup" category="Fuel" address="125c" type="1D" level="2" scaling="Mult128-16"/>

<table name="Async Accel Above TPS Enrichment Cutoff vs RPM" category="Fuel" address="32c6" type="2D" level="2" scaling="ThrottlePercentage8">
<table name="X" address="6c26" type="Y Axis" elements="10" scaling="RPM"/>
</table>

<table name="Async Accel Multiplier vs TPS Delta" category="Fuel" address="32b6" type="2D" level="2" scaling="Mult128">
<table name="TPS Delta" type="Static Y Axis" elements="9">
<data>0.0%</data>
<data>1.6%</data>
<data>3.1%</data>
<data>4.7%</data>
<data>6.3%</data>
<data>7.8%</data>
<data>9.4%</data>
<data>11.0%</data>
<data>12.5%</data>
</table>
</table>

<table name="Async Accel vs RPM Adder" category="Fuel" address="32e4" type="2D" level="2" scaling="uint8">
<table name="RPM" address="6c26" type="Y Axis" elements="15" scaling="RPM"/>
</table>

<table name="Async Accel vs Coolant Temp Adder (Main)" category="Fuel" address="32d6" type="2D" level="2" scaling="uint8">
<table name="Coolant Temp" address="6fde" type="Y Axis" elements="8" scaling="Temp"/>
</table>

<table name="Async Accel vs Coolant Temp Adder (Alt)" category="Fuel" address="6558" type="2D" level="2" scaling="uint8">
<table name="Coolant Temp" address="6fde" type="Y Axis" elements="8" scaling="Temp"/>
</table>
__________________
Works drop-in :: AMS LICP :: English Racing ported EM and HS :: Titek v2 O2 :: Helix v2 DP :: MIL.SPEC 100 cps cat :: RRE Stealth Stainless :: Walbro :: FIC 1050s :: E85 :: self-tuned :: 26.5 psi :: 340wtq/375whp VDR 5.71 EvoM mode, 77°F

Last edited by mrfred; Oct 28, 2009 at 10:15 AM.
Offline
 
Reply With Quote
Old Oct 21, 2009, 12:23 PM   #2
EvoM Guru
Personal Sales Rating: (33)
 
mrfred's Avatar
 
Join Date: Mar 2006
Location: Tri-Cities, WA
Posts: 4,795

Drives: Evo IX MR

Updates

Oct 31, 2009 - 1) I have fixed a mistake in the Async Accel scaling in the EvoScan definitions. 2) I have now tested the patch on my own Evo. Works fine.

Oct 28, 2009 - Revised patch and instructions for 8859XX15. Revisions are only to change the logging order of the fuel pulse contributions.

Oct 23, 2009 - Initial post with instructions for 8859XX15

Introduction

As a tool to understand and learn how to better control fueling with the stock ECU, I've created a patch that allows each of the IPW components for an 8859XX15 ROM to be logged. It s very simple patch because it turns out that all the fuel pulse width components except one already get written to a RAM address, so the patch deals with just the one component that does not get written to RAM. The patch is compatible with v5 thru v7 tephra ROMs. I'll be adding instructions for other ROMs later.

Instructions

There are three basic steps:

1) Copy some definitions to your ECUFlash 88590015.xml file. The definitions are below.
2) Launch ECUFlash and copy table data from the base ROM to your ROM. The base ROM can be downloaded here.
3) Add some entries to your EvoScan Data.xml file. The entries are below.

Entries to add to your ECUFlash "88590015.xml" file

------ (Don't copy the "-------")

Code:
    <table name="Storage of RAM Addresses in MUT" category="Base Fuel Pulse Logging" address="3f004" type="3D" level="1" scaling="Hex16">
      <table name="RAM Address" type="Static X Axis" elements="4">
        <data>High</data>
        <data>Low</data>
        <data>High</data>
        <data>Low</data>
      </table>
      <table name="MUT Channel" type="Static Y Axis" elements="8">
          <data>60-61 Primer Pulse</data>
          <data>62-63 Sync Cranking FPW</data>
          <data>64-65 Sync Base FPW</data>
          <data>66-67 Sync Load Accel FPW</data>
          <data>68-69 Sync Load Decel FPW Subtraction</data>
          <data>6A-6B Sync Load Change Idle FPW</data>
          <data>6C-6D Total Sync FPW</data>
          <data>6E-6F Async Accel FPW</data>
      </table>
    </table>

     <table name="Base Fuel Pulse Logging Patch Hook" category="Base Fuel Pulse Logging" address="2ace8" type="3D" level="1" scaling="Hex16">
       <table name="Code" type="Static X Axis" elements="1" scaling="Hex16">
         <data>Hex16</data>
       </table>
       <table name="Address" type="Static Y Axis" elements="8">
         <data>2ACE8</data>
         <data>2ACEA</data>
         <data>2ACEC</data>
         <data>2ACEE</data>
         <data>2ACF0</data>
         <data>2ACF2</data>
         <data>2ACF4</data>
         <data>2ACF6</data>
       </table>
     </table>      
       
 
     <table name="Base Fuel Pulse Logging Patch" category="Base Fuel Pulse Logging" address="47cc4" type="3D" level="1" scaling="Hex16">
       <table name="Code" type="Static X Axis" elements="1" scaling="Hex16">
         <data>Hex16</data>
       </table>
       <table name="Address" type="Static Y Axis" elements="23">
         <data>47CC4</data>
         <data>47CC6</data>
         <data>47CC8</data>
         <data>47CCA</data>
         <data>47CCC</data>
         <data>47CCE</data>
         <data>47CD0</data>
         <data>47CD2</data>
         <data>47CD4</data>
         <data>47CD6</data>
         <data>47CD8</data>
         <data>47CDA</data>
         <data>47CDC</data>
         <data>47CDE</data>
         <data>47CE0</data>
         <data>47CE2</data>
         <data>47CE4</data>
         <data>47CE6</data>
         <data>47CE8</data>
         <data>47CEA</data>
         <data>47CEC</data>
         <data>47CEE</data>
         <data>47CF0</data>
       </table>
     </table>
-------


Definitions to add to your EvoScan "Data.xml" file

Copy the definitions below into your EvoScan "Data.xml" file.

------ (Don't copy the "-------")

Code:
        <DataListItem DataLog="N" Color="" Display="Primer Pulse" LogReference="PrimerPulse" RequestID="60" RequestID2="61" Eval="x*0.008" Unit="ms" MetricEval="" MetricUnit="" ResponseBytes="1" GaugeMin="0" GaugeMax="10000" ChartMin="0" ChartMax="10000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
        <DataListItem DataLog="N" Color="" Display="Sync Cranking FPW" LogReference="CrankingFPW" RequestID="62" RequestID2="63" Eval="x*0.008" Unit="ms" MetricEval="" MetricUnit="" ResponseBytes="1" GaugeMin="0" GaugeMax="10000" ChartMin="0" ChartMax="10000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
        <DataListItem DataLog="N" Color="" Display="Sync Base FPW" LogReference="SyncBaseFPW" RequestID="64" RequestID2="65" Eval="x*0.008" Unit="ms" MetricEval="" MetricUnit="" ResponseBytes="1" GaugeMin="0" GaugeMax="10000" ChartMin="0" ChartMax="10000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
        <DataListItem DataLog="N" Color="" Display="Sync Load Accel FPW" LogReference="SyncLoadAccelFPW" RequestID="66" RequestID2="67" Eval="x*0.008" Unit="ms" MetricEval="" MetricUnit="" ResponseBytes="1" GaugeMin="0" GaugeMax="10000" ChartMin="0" ChartMax="10000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
        <DataListItem DataLog="N" Color="" Display="Sync Load Decel FPW Subtraction" LogReference="SyncLoadDecelFPW" RequestID="68" RequestID2="69" Eval="x*0.008" Unit="ms" MetricEval="" MetricUnit="" ResponseBytes="1" GaugeMin="0" GaugeMax="10000" ChartMin="0" ChartMax="10000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
        <DataListItem DataLog="N" Color="" Display="Sync Load Change Idle FPW" LogReference="SyncLoadChangeIdleFPW" RequestID="6A" RequestID2="6B" Eval="x*0.008" Unit="ms" MetricEval="" MetricUnit="" ResponseBytes="1" GaugeMin="0" GaugeMax="10000" ChartMin="0" ChartMax="10000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
        <DataListItem DataLog="N" Color="" Display="Total Sync FPW" LogReference="TotalSyncFPW" RequestID="6C" RequestID2="6D" Eval="x*0.008" Unit="ms" MetricEval="" MetricUnit="" ResponseBytes="1" GaugeMin="0" GaugeMax="10000" ChartMin="0" ChartMax="10000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
        <DataListItem DataLog="N" Color="" Display="Async Accel FPW" LogReference="AsyncAccelFPW" RequestID="6E" RequestID2="6F" Eval="x*32*0.008" Unit="ms" MetricEval="" MetricUnit="" ResponseBytes="1" GaugeMin="0" GaugeMax="10000" ChartMin="0" ChartMax="10000" ScalingFactor="1" Notes="" Priority="1" Visible="False" />
------
__________________
Works drop-in :: AMS LICP :: English Racing ported EM and HS :: Titek v2 O2 :: Helix v2 DP :: MIL.SPEC 100 cps cat :: RRE Stealth Stainless :: Walbro :: FIC 1050s :: E85 :: self-tuned :: 26.5 psi :: 340wtq/375whp VDR 5.71 EvoM mode, 77°F

Last edited by mrfred; Oct 31, 2009 at 10:15 AM.
Offline
 
Reply With Quote
Old Oct 21, 2009, 12:28 PM   #3
Evolving Member
Personal Sales Rating: (4)
1998 Mitsubishi Eclipse
 
Deepnine's Avatar
 
Join Date: Apr 2008
Location: Germany
Posts: 171

Drives: 2G DSM w. Evo7 RA ecu

Send a message via ICQ to Deepnine
Great explanation for heavy stuff.
__________________
rom: 90550001 - wiki: EVO ECU WIKI - me: www.eclipse-ig.de
Offline
 
Reply With Quote
Old Oct 21, 2009, 12:42 PM   #4
Evolved Member
Personal Sales Rating: (16)
 
Jack_of_Trades's Avatar
 
Join Date: Jun 2007
Location: W. Warwick, Rhode Island
Posts: 2,998

Drives: '03 evo VIII BBY(sold!), '95 Talon ESI-Turbo'd, '90 Mirage 4g63

Jeeze, I'll have to incorportae these in the V7 XML's
__________________
New VDR 5.71 Launched on 9/04/2009!! Now can be used for ANY vehicle, presets for all Evo 7,8,9,10 models!
CLICK HERE TO DOWNLOAD 'Virtual Dyno Room v5.71' !

'90 Mirage hatchback 4g63 and Evo8 ECU powered!
VDR 5.71 (EvoM Mode)=300whp/268wtq (thru stock 1.5" exhaust!)

'03 BBY Evo 8 (sold)
VDR 5.71 (EvoM Mode)=339whp/335wtq
Best 1/4 Mile: 12.2@113mph

'95 Eagle Talon non-turbo ATX......turbo'd
Best 1/4 Mile: 13.99@101mph
Offline
 
Reply With Quote
Old Oct 21, 2009, 12:48 PM   #5
Silver Sponsor
Personal Sales Rating: (4)
 
GST Motorsports's Avatar
 
Join Date: Sep 2007
Location: Hayward
Posts: 1,886

Drives: EVO, STI

mrfred,

you forgot to put your paypal address.

- Bryan
__________________
GST Motorsports
2439 Industrial Pkwy. West Suite A
Hayward, CA 94545
510-264-9049

The original E85 Army

http://www.gstmotorsports.com
Online
 
Reply With Quote
Old Oct 21, 2009, 01:12 PM   #6
EvoM Guru
Personal Sales Rating: (33)
 
mrfred's Avatar
 
Join Date: Mar 2006
Location: Tri-Cities, WA
Posts: 4,795

Drives: Evo IX MR

Quote:
Originally Posted by GST Motorsports View Post
mrfred,

you forgot to put your paypal address.

- Bryan
Still too dizzy from looking at code...
__________________
Works drop-in :: AMS LICP :: English Racing ported EM and HS :: Titek v2 O2 :: Helix v2 DP :: MIL.SPEC 100 cps cat :: RRE Stealth Stainless :: Walbro :: FIC 1050s :: E85 :: self-tuned :: 26.5 psi :: 340wtq/375whp VDR 5.71 EvoM mode, 77°F
Offline
 
Reply With Quote
Old Oct 21, 2009, 01:54 PM   #7
Evolved Member
Personal Sales Rating: (6)
 
tkklemann's Avatar
 
Join Date: Jul 2005
Location: Charleston, SC
Posts: 1,055

Drives: 2005 Evolution VIII

My head exploded after reading all that. Yipes..
__________________
Thomas..
2005 EVO GSR Charleston, SC
Offline
 
Reply With Quote
Old Oct 21, 2009, 02:56 PM   #8
Evolved Member
Personal Sales Rating: (7)
 
fostytou's Avatar
 
Join Date: Sep 2006
Location: Palatine, IL
Posts: 1,763

Drives: Graphite Grey IX SE (88590015), '04 FZ1, Former: 35R Powered Eclipse GST, 6/4 TSi AWD, Bandit 600s

Send a message via AIM to fostytou
Amazing, you guys are really geniuses in a very special way to all of us. I hope I can dig into these, it looks like a few of them might explain the interesting situation I have before my ECU re-learns with a hard intake pipe.

RPM falls to idle, holds idle for a split second then goes rich and rpms fall, ECU blips RPMS to ~1200 (ISCV?) and bounces up and down for no set amount of time or iterations.
After a few iterations blip up to ~1600 RPM, slowly fall to proper idle with perfect AFR.


Here is a copy of all of the tables for an easy copy paste. There are enough that a seperate #include file might be smart. (MrFred just let me know if you want me to remove this)

Code:
	 <!-- MrFred Fuel System Dissassembly tables -->

      <scaling name="Percent64(8-bit)" units="%" toexpr="100*x/64" frexpr="64*x/100" format="%.0f" min="0" max="400" inc="1" storagetype="uint8" endian="big"/>  
      <scaling name="TimeInjCranking" units="ms" toexpr="x*0.008" frexpr="x/0.008" format="%.1f" min="0" max="500" inc="1" storagetype="uint16" endian="big"/>
      <table name="Cranking Primer Initial Pulse" category="Fuel" type="2D" level="2" scaling="TimeInjCranking" address="52b2">
        <table name="Coolant Temperature" type="Y Axis" elements="9" scaling="Temp" address="6ff8"/>
      </table>
      
      <scaling name="TimeTCOMPCrankingHack" units="Approximate ms" toexpr="x*0.9" frexpr="x/0.9" format="%.1f" min="0" max="500" inc="1" storagetype="uint8" endian="big"/>
      <table name="Initial Cranking IPW vs Coolant Temp" category="Fuel" address="6040" type="2D" level="2" scaling="TimeTCOMPCrankingHack">
        <table name="Engine Temp" address="7014" type="Y Axis" elements="11" scaling="Temp"/>
      </table>
      
      <scaling name="Percent (128)" units="Percent (%)" toexpr="x/1.28" frexpr="x*1.28" format="%.0f" min="0" max="100" inc="1" storagetype="uint8" endian="big"/>
      <table name="Cranking IPW Compensation vs Time" category="Fuel" type="2D" level="2" scaling="Percent (128)" address="323E">
        <table name="Time Since Engaging Starter (sec)" type="Static Y Axis" elements="20">
          <data>0.000</data>
          <data>0.022</data>
          <data>0.044</data>
          <data>0.066</data>
          <data>0.088</data>
          <data>0.110</data>
          <data>0.132</data>
          <data>0.154</data>
          <data>0.176</data>
          <data>0.198</data>
          <data>0.220</data>
          <data>0.242</data>
          <data>0.264</data>
          <data>0.286</data>
          <data>0.308</data>
          <data>0.330</data>
          <data>0.352</data>
          <data>0.374</data>
          <data>0.396</data>
          <data>0.418</data>
        </table>
      </table>
      
      <table name="Airflow/Hz Raw Scaling" category="Fuel" type="2D" level="2" scaling="uint8" address="2d06">
        <table name="MAF Hz" type="Y Axis" elements="21" scaling="MAFHz" address="6da4"/>
      </table>
      
      <table name="Airflow/Hz Offset Raw" category="Fuel" type="1D" level="2" scaling="uint16" address="1112"/>
      
      <table name="MAF Compensation" category="Fuel" type="2D" level="2" scaling="uint8" address="2d22">
        <table name="MAF Hz" type="Y Axis" elements="21" scaling="MAFHz" address="6da4"/>
      </table>
      
      <scaling name="AirTempBaroFactor" units="Fraction" toexpr="x/48" frexpr="x*48" format="%.2f" min="0" max="2" inc="0.02" storagetype="uint16" endian="big"/>
      <scaling name="AirTempBaroCorrection" units="Fraction" toexpr="x/128" frexpr="x*128" format="%.2f" min="0" max="2" inc="0.02" storagetype="uint8" endian="big"/>
      
      <table name="Airflow/Hz Baro and Air Temp Compensation" category="Fuel" type="3D" level="2" swapxy="true" scaling="AirTempBaroCorrection" address="2d51">
      <table name="Rel Air Volume (20C, 1 bar)" type="X Axis" elements="4" scaling="AirTempBaroFactor" address="6d92"/>
        <table name="MAF Hz" type="Y Axis" elements="9" scaling="MAFHz" address="6dd8"/>
      </table>
      
      <table name="Injector Size Scaling" category="Fuel" type="1D" scaling="InjectorScaling" address="1106"/>
      
      <table name="BFPW Startup Comp vs Coolant Temp #1" category="Fuel" address="3146" type="2D" level="2" scaling="Percent64(8-bit)">
        <table name="Coolant Temp" address="6ff8" type="Y Axis" elements="9" scaling="Temp"/>
      </table>
      
      <table name="BFPW Startup Comp vs Coolant Temp #2" category="Fuel" address="3156" type="2D" level="2" scaling="Percent64(8-bit)">
        <table name="Coolant Temp" address="6ff8" type="Y Axis" elements="9" scaling="Temp"/>
      </table>
      
      <scaling name="AirDensComp" units="Air Density Correction" toexpr="x/129" frexpr="x/129" format="%.3f" min="0" max="2" inc="0.01" storagetype="uint8" endian="big"/>
      
      <table name="Air Density Compensation for Load And IPW" category="Misc" type="2D" level="2" scaling="AirDensComp" address="30fe">
        <table name="MAF Air Temp" type="Y Axis" elements="8" scaling="Temp" address="714a"/>
      </table>
      
      <scaling name="Mult128" units="Factor" toexpr="x/128" frexpr="x/128" format="%.2f" min="0" max="5" inc="0.02" storagetype="uint8" endian="big"/>
      
      <table name="Sync Load Accel Compensation vs RPM" category="Fuel" type="2D" scaling="Mult128" level="2" address="3278">
        <table name="RPM" type="Y Axis" elements="15" scaling="RPM" address="6c26"/>
      </table>
      
      <table name="Sync Load Accel Compensation vs Coolant Temp Table #1" category="Fuel" type="2D" level="2" scaling="Mult128" address="6566">
        <table name="Coolant Temp" type="Y Axis" elements="8" scaling="Temp" address="6fde"/>
      </table>
      
      <table name="Sync Load Accel Compensation vs Coolant Temp Table #2" category="Fuel" type="2D" level="2" scaling="Mult128" address="326a">
        <table name="Coolant Temp" type="Y Axis" elements="8" scaling="Temp" address="6fde"/>
      </table>
      
      <table name="Decel IPW Subtraction Comp vs RPM" category="Fuel" address="3350" type="2D" level="2" scaling="Mult128">
        <table name="RPM" address="6b7a" type="Y Axis" elements="10" scaling="RPM"/>
      </table>
      
      <table name="Decel IPW Subtraction Comp vs Load" category="Fuel" address="3360" type="2D" level="2" scaling="Mult128">
        <table name="Load" address="6cba" type="Y Axis" elements="14" scaling="Load"/>
      </table>
      
      <table name="Decel IPW Subtraction Comp vs Coolant Temp" category="Fuel" address="3342" type="2D" level="2" scaling="Mult128">
        <table name="Coolant Temp" address="6fde" type="Y Axis" elements="8" scaling="Temp"/>
      </table>
      
      
      <table name="Sync Load Change Idle Compensation vs Time Below 1000 rpm" category="Fuel" type="2D" level="2" scaling="Mult128" address="6b3e">
        <table name="Unknown" type="Y Axis" elements="21" scaling="uint16" address="8246"/>
      </table>
      
      <table name="Sync Load Change Idle Compensation vs Coolant Temp" category="Fuel" type="2D" level="2" scaling="Mult128" address="6b30">
        <table name="Coolant Temp" type="Y Axis" elements="8" scaling="Temp" address="6fde"/>
      </table>
      
      <table name="Async Accel Pause Period" category="Fuel" address="1254" type="1D" level="2" scaling="uint16"/>
      
      <table name="Async Accel Min TPS Delta" category="Fuel" address="1256" type="1D" level="2" scaling="ThrottlePercentage"/>
      
      <scaling name="AsyncAccelMaxFPW" units="ms" toexpr="x*32*0.008" frexpr="x/(32*0.008)" format="%.2f" min="0" max="20" inc="0.02" storagetype="uint16" endian="big"/>
      <table name="Async Accel Max Pulsewidth" category="Fuel" address="1258" type="1D" level="2" scaling="AsyncAccelMaxFPW"/>
      
      <scaling name="Mult128-16" units="Multiplication Factor" toexpr="x/128" frexpr="x/128" format="%.2f" min="0" max="5" inc="0.02" storagetype="uint16" endian="big"/>
      <table name="Async Accel Max Total Contribution During Accel Period" category="Fuel" address="125A" type="1D" level="2" scaling="Mult128-16"/>
      
      <table name="Async Accel Mult to Coolant Temp Adder During 5 Sec After Startup" category="Fuel" address="125c" type="1D" level="2" scaling="Mult128-16"/>
      
      <table name="Async Accel Above TPS Enrichment Cutoff vs RPM" category="Fuel" address="32c6" type="2D" level="2" scaling="ThrottlePercentage8">
        <table name="X" address="6c26" type="Y Axis" elements="10" scaling="RPM"/>
      </table>
      
      <table name="Async Accel Multiplier vs TPS Delta" category="Fuel" address="32b6" type="2D" level="2" scaling="Mult128">
        <table name="TPS Delta" type="Static Y Axis" elements="9">
          <data>0.0%</data>
          <data>1.6%</data>
          <data>3.1%</data>
          <data>4.7%</data>
          <data>6.3%</data>
          <data>7.8%</data>
          <data>9.4%</data>
          <data>11.0%</data>
          <data>12.5%</data>
        </table>
      </table>
      
      <table name="Async Accel vs RPM Adder" category="Fuel" address="32e4" type="2D" level="2" scaling="uint8">
        <table name="RPM" address="6c26" type="Y Axis" elements="15" scaling="RPM"/>
      </table>
      
      <table name="Async Accel vs Coolant Temp Adder (Main)" category="Fuel" address="32d6" type="2D" level="2" scaling="uint8">
        <table name="Coolant Temp" address="6fde" type="Y Axis" elements="8" scaling="Temp"/>
      </table>
      
      <table name="Async Accel vs Coolant Temp Adder (Alt)" category="Fuel" address="6558" type="2D" level="2" scaling="uint8">
        <table name="Coolant Temp" address="6fde" type="Y Axis" elements="8" scaling="Temp"/>
      </table>
edit:added extra scaling
__________________
Corn Fed 365hp/360tq
  • AMS FMIC, AMS LICP+UICP, AMS Front lower motor mount, Megan O2, Megan DP, Perrin HFC, Fujitsubo RM01A Cat-back, Walbro 255, RC 1200cc Injectors, GSC S1 Cams, Ghetto 3" intake +AMSoil EA Filter
  • Tephra V6, JDM MAP, Direct boost ctl w/ AEM solenoid, AMS Tuned
  • Pioneer DEH-P9790BT, 40GB iPod, 10W6V2, Alpine PDX-1.1000, Passport 8500 x50 Hardwired, AEM Tru-Boost (Guage only), Auto-dimming mirror, 35% Tint

Last edited by fostytou; Oct 25, 2009 at 11:32 AM.
Offline
 
Reply With Quote
Old Oct 21, 2009, 04:21 PM   #9
EvoM Guru
Personal Sales Rating: (3)
 
Join Date: Mar 2007
Location: Melbourne, Australia
Posts: 5,599

Drives: WW EvoX GSR

mammoth effort
__________________
AUDM Black Evo IX 07 spec - writeoff thanks to someone that doesn't understand what a STOP sign is!
AUDM Yellow Evo IX - writeoff thanks to me rolling it at the Phillip Island Grand Prix Circuit :(
AUDM White Evo X - Powered by Colby@Tactrix, Richard@Aquamist

TephraMOD V7 - ECU mods AltMap, NLTS, KnockLight, Valet, Boost Mods, BIGMAP + more
yes - I have given up emptying my Inbox
Michael Jackson - RIP!
Offline
 
Reply With Quote
Old Oct 21, 2009, 07:16 PM   #10
Evolved Member
Personal Sales Rating: (22)
 
travman's Avatar
 
Join Date: Oct 2005
Location: Pittsburgh
Posts: 1,514

Drives: eboIX

Send a message via AIM to travman
Great job mrfred

I have been messing with these new start up tables for a few days now.......and finally the puzzle makes sense (or starting too for me).

We could zero out the ipw adder table which is now found to be the first pulse table and the car would still start.

Well I zero'd out the initial IPW table and the car would not start and in the log the IPW is all zero's....so those 2 tables are def. accurate in how they function. Although the IPW first pulse table still doesn't match up on logs - I think the first pulse happens so fast the logger cant pick it up completely so your only seeing a portion of it, especially on the cold start.

BUT my cranking IPW does match fairly close to the initial IPW table + latency while the car is cranking and cranking to start....i am still working on this "warm" starting issue after the car sits anywhere from 15min-3hrs - I am one of the unlucky ones who has the starting issues and hoping with some more play with these tables and understanding how it all works I will be able to get this weird issue tuned out.

I will be working more on it tomorrow.....
__________________
06 Evolution IX
- Its a $15k dollar car with a $15k dollar powertrain
Offline
 
Reply With Quote
Old Oct 21, 2009, 07:45 PM   #11
Evolved Member
Personal Sales Rating: (0)
 
rolly1818's Avatar
 
Join Date: Nov 2007
Location: Trinidad
Posts: 1,350

Drives: 2006 JDM Evo IX

if i wasn't confused at first about all these new tables

thanks - subscribed!

i will need to reveiw this closely tomorrow!
Offline
 
Reply With Quote
Old Oct 21, 2009, 07:48 PM   #12
Evolving Member
Personal Sales Rating: (0)
 
Join Date: Jun 2008
Location: Sydney
Posts: 148

Drives: AUDM_EVO IX, R33_GTST

absolutely fabulous!

does this mean that BFPW does not have an enrichment v temp?
ie the only water temperature enrichments are:
primer,
cranking (key on)
post cranking (key off) for a short time
Offline
 
Reply With Quote
Old Oct 21, 2009, 08:52 PM   #13
Evolved Member
Personal Sales Rating: (17)
2003 Mitsubishi Lancer Evolution
 
Appauldd's Avatar
 
Join Date: Nov 2003
Location: Northern KY near Cincy
Posts: 1,246

Drives: 2003 Mitsu EVO (white)

Frosty.....I noticed the same thing....

Quote:
RPM falls to idle, holds idle for a split second then goes rich and rpms fall, ECU blips RPMS to ~1200 (ISCV?) and bounces up and down for no set amount of time or iterations.
After a few iterations blip up to ~1600 RPM, slowly fall to proper idle with perfect AFR.
I just left it as the ECU doing its thing. Could it be from the injectors rather than the hard pipes affecting the MAF....maybe both?
Offline
 
Reply With Quote
Old Oct 22, 2009, 03:57 AM   #14
EvoM Guru
Personal Sales Rating: (33)
 
mrfred's Avatar
 
Join Date: Mar 2006
Location: Tri-Cities, WA
Posts: 4,795

Drives: Evo IX MR

Quote:
Originally Posted by merlin.oz View Post
absolutely fabulous!

does this mean that BFPW does not have an enrichment v temp?
ie the only water temperature enrichments are:
primer,
cranking (key on)
post cranking (key off) for a short time
Yeah, I'm a bit surprised too. jcsbanks indicated in his analysis that mafmultiwarmup is used. The code shows that it is used, but in the denominator and only after the engine has reached full operating temperature. Strange. The CAM value can be looked up from a table versus coolant temp, but its not a smooth progression from cold to hot as you might expect, and there is a conditional on whether the value from the table is used (versus using a set value of 128).
__________________
Works drop-in :: AMS LICP :: English Racing ported EM and HS :: Titek v2 O2 :: Helix v2 DP :: MIL.SPEC 100 cps cat :: RRE Stealth Stainless :: Walbro :: FIC 1050s :: E85 :: self-tuned :: 26.5 psi :: 340wtq/375whp VDR 5.71 EvoM mode, 77°F
Offline
 
Reply With Quote
Old Oct 22, 2009, 04:19 AM   #15
Evolved Member
Personal Sales Rating: (27)
2005 Mitsubishi Lancer Evolution
 
Fast_Freddie's Avatar
 
Join Date: Jun 2007
Location: Oak Harbor, WA
Posts: 883

Drives: '05 Tarmac Black SSL VIII

Quote:
Originally Posted by fostytou View Post
RPM falls to idle, holds idle for a split second then goes rich and rpms fall, ECU blips RPMS to ~1200 (ISCV?) and bounces up and down for no set amount of time or iterations.
After a few iterations blip up to ~1600 RPM, slowly fall to proper idle with perfect AFR.
Quote:
Originally Posted by Appauldd View Post
Frosty.....I noticed the same thing....
Fosty & Applaudd... what is your O2 Feedback (STFT) doing when the car goes rich? Is is pegged at +25 or what?

As you both know I have the same scenario...
__________________
FP Red*Greddy ProfecB Spec II*HKS TT*Nesei Short Route IC Piping*Synapse BOV*COMP 272s*Injen Intercooler*AFE Power Dry Filter*R/TErnie Intake*R/TErnie FULL 3" O2 housing with V-band*R/TErnie Modified DCsports 3" Down/Test/Flexpipe with V-Band*Greddy Ti-C Exhaust*255lph*Tein S-Techs*18" Volk LE-28s*Progress 25mm Rear Sway*Project Mu pads*JDM Tails*Cusco Heat Shield*Mishimoto Radiator hoses/Cap*ARC shift knob*Injector Dynamics 1000cc...

Last edited by Fast_Freddie; Oct 22, 2009 at 04:22 AM.
Offline
 
Reply With Quote
Reply

Tags
advanced, async, control, fuel, sync, utah

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are Off

 



All times are GMT -7. The time now is 03:26 PM.


Powered by vBulletin® Version 3.7.4
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0