Page 1 of 2 12 LastLast
Results 1 to 10 of 14

Thread: Histogram Plot

  1. #1
    Guess who's back!!!! Black02SS's Avatar
    Join Date
    Jan 2004
    Posts
    1,355

    Default Histogram Plot

    I have a question and maybe someone can help me on it. I have used another scanner and switched back to live. With the other program I was using, the histogram plots cells different then how live does. Example. If I idle at 850, the other program plots the data in the histogram in the 800 block, where as live does it in the 1200 block... One does the average for 800 by taking 600-1000 while live does the averages for 800 from 800-1200.

    Why the difference between the two programs and what is the reasoning? Just curious.

  2. #2
    EFILive Developer Site Admin Blacky's Avatar
    Join Date
    Mar 2003
    Posts
    9,490

    Default

    Using the label columns as the breakpoints (as EFILive does) means EFILive's Scan Tool tables match column for column and row for row with the map data from the PCM.

    Example (fictional) table, lookup temp based on RPM
    Code:
    Index   0    1    2    3    4    5    6
    RPM   400  800 1200 1600 2000 2400 2800
    DegC   10   20   30   40   50   60   70
    Say the rpm was 1100, the PCM will return the "looked up and interpolated" DegC value as follows:

    Index = Trunc((1100-400)/400) = 1.0
    Interp = Frac((1100-400)/400) = 0.75
    Temp = DegC[Index]+((DegC[Index+1]-DegC[Index])*Interp) = 20+((30-20)*0.75) = 27.5

    Because the interpolation always occurs based on Index and Index+1 it makes sense to log data in the maps the way EFILive does. EFILive is basically doing a reverse interpolation.

    For the "average" approach to be correct, the PCM would need to use a more complicated interpolation function. One that could figure out the average value between the column breaks. The PCM does not do that, so plotting maps (or histograms) that way is not as accurate.

    Regards
    Paul

    P.S. It is the interpolation performed by the Motorola CPU that allows the PCM to store lookup data as discrete data points, yet still calculate accurate values in between the calibrated data points. It also explains why EFILive's 2-bar solution can be implemented accurately without extending the VE table.

  3. #3
    Lifetime Member GMPX's Avatar
    Join Date
    Apr 2003
    Posts
    13,148

    Default

    Quote Originally Posted by Blacky
    P.S. It is the interpolation performed by the Motorola CPU that allows the PCM to store lookup data as discrete data points, yet still calculate accurate values in between the calibrated data points. It also explains why EFILive's 2-bar solution can be implemented accurately without extending the VE table.
    From a Motorola data book -
    Table lookup and Interpolate commands -
    The table lookup instruction requires that only a sample of data points be stored, reducing memory requirements. The TBL (Table Lookup) instruction recovers intermediate values using linear interpolation.

    Oh, there is 6 pages of a mathematical nightmare to go along with this, but I'll spare you that.......I'm still on page 3 :lol:

    Cheers,
    Ross

  4. #4
    Guess who's back!!!! Black02SS's Avatar
    Join Date
    Jan 2004
    Posts
    1,355

    Default

    Thanks for the reply and explanation, I wasnt doubting the program I just wanted to know what the differences were.

  5. #5
    Joe (Moderator) joecar's Avatar
    Join Date
    Apr 2003
    Posts
    28,403

    Default

    Quote Originally Posted by GMPX
    ...Oh, there is 6 pages of a mathematical nightmare to go along with this, but I'll spare you that.......I'm still on page 3 :lol:
    Cheers,
    Ross
    Ross,
    What, do you have trouble falling asleep at night...? :lol:
    Is this documentation online somewhere....?
    If so, is there are link to it...?
    (I too have trouble sleeping at night )
    Thanks,
    Joe
    8)

  6. #6
    Lifetime Member
    Join Date
    Oct 2003
    Posts
    505

    Default

    Example (fictional) table, lookup temp based on RPM
    Code:

    Index 0 1 2 3 4 5 6
    RPM 400 800 1200 1600 2000 2400 2800
    DegC 10 20 30 40 50 60 70


    Say the rpm was 1100, the PCM will return the "looked up and interpolated" DegC value as follows:

    Index = Trunc((1100-400)/400) = 1.0
    Interp = Frac((1100-400)/400) = 0.75
    Temp = DegC[Index]+((DegC[Index+1]-DegC[Index])*Interp) = 20+((30-20)*0.75) = 27.5

    Because the interpolation always occurs based on Index and Index+1 it makes sense to log data in the maps the way EFILive does. EFILive is basically doing a reverse interpolation.

    For the "average" approach to be correct, the PCM would need to use a more complicated interpolation function. One that could figure out the average value between the column breaks. The PCM does not do that, so plotting maps (or histograms) that way is not as accurate.

    Regards
    Paul
    Thanks. For us non-techies/non-IT types it's nice to see how this stuff actually works!! Big Thumbs Up!

    Cheers,
    joel

  7. #7
    EFILive Developer Site Admin Blacky's Avatar
    Join Date
    Mar 2003
    Posts
    9,490

    Default

    Ok, time to eat humble pie. :oops: :oops:

    I've been bashed over the head for a few days by Delco and GMPX. And I can finally see the light. I was wrong, it is better to log using the average column label approach. (Yes the other program you had been using was right Hey I can admit when I'm wrong)

    So the next release of EFILive will have the maps set up to use the column/row labels as the center point of the data plotted in that col/row.

    Reagrds
    Paul

  8. #8
    Joe (Moderator) joecar's Avatar
    Join Date
    Apr 2003
    Posts
    28,403

    Default

    Paul,

    You may have to include some explantion of this in the help PDF.

    Joe

  9. #9
    EFILive Developer Site Admin Blacky's Avatar
    Join Date
    Mar 2003
    Posts
    9,490

    Default

    Quote Originally Posted by joecar
    Paul,

    You may have to include some explantion of this in the help PDF.

    Joe
    Yes I will, but for now:

    This is how it currently works, with say MAP labels like this:
    15,20,25,30,35,40,...,105

    column 1, with the label 15kPa would log all values from 0 to 15.
    column 2, with the label 20kPa would log all values from 15.1 to 20.
    column 3, with the label 25kPa would log all values from 21.1 to 25.
    etc

    It will work like this in V7.2.3:
    column 1, with the label 15kPa would log all values from 0 to 17.5.
    column 2, with the label 20kPa would log all values from 17.6 to 22.5.
    column 3, with the label 25kPa would log all values from 22.6 to 27.5.
    etc

    It's a subtle difference, yet one that was causing some "tail chasing" as Delco put it, when trying to nail down some tunes.

    Regards
    Paul

  10. #10
    Guess who's back!!!! Black02SS's Avatar
    Join Date
    Jan 2004
    Posts
    1,355

    Default

    Would this work the same for RPM?

    It will work like this in V7.2.3:
    row 1, with the label 400rpms would log all values from 0 to 600.
    row 2, with the label 800rpms would log all values from 601 to 1000.
    row 3, with the label 1200rpms would log all values from 1001-1400.
    etc

Page 1 of 2 12 LastLast

Similar Threads

  1. How to plot a VE table
    By GMPX in forum E37, E38 & E67 PFI ECM's
    Replies: 13
    Last Post: June 22nd, 2007, 11:54 AM
  2. avg ltft and a/f plot
    By ahall1 in forum Tutorials
    Replies: 1
    Last Post: June 6th, 2005, 08:58 AM
  3. Replies: 3
    Last Post: May 11th, 2005, 01:17 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •