Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 23

Thread: IBPW {B4005} {B3701} correlation

  1. #11
    Lifetime Member 5.7ute's Avatar
    Join Date
    Oct 2006
    Posts
    1,840

    Default

    One thing to note is
    if IPW = {B9021}(minimum transient pulsewidth)
    IBPW = {B9021} + {B3701}(voltage,manvac offset)
    Small pulse adjust at this time doesnt appear to be added to {B9021} when it is active. More testing to be done.
    The Tremor at AIR

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

    Default

    Quote Originally Posted by 5.7ute View Post
    One thing to note is
    if IPW = {B9021}(minimum transient pulsewidth)
    IBPW = {B9021} + {B3701}(voltage,manvac offset)
    Small pulse adjust at this time doesnt appear to be added to {B9021} when it is active.
    More testing to be done.
    When which is active...? (I'm trying to be precise so I can write a line of pseudo-code for it)

    So would this fit in here (is this the right place):

    Code:
    IFR = lookup(B4001)(injector flow rate);
    
    IPW = airmass / AFR / IFR * 1000; 
    
    if IPW <= B9021(minimum transient pulsewidth) then 
        IPW = B9021;
    else
        if IPW < B4003(minimum pulsewidth) then  
            IPW = B4004(default pulsewidth);
    
        if IPW < B4006(small pulse threshold) then  
            IPW = IPW + B4005(small pulse adder);
    end
    
    IPW = IPW + B3701(voltage/manvac offset) + TF(transient fueling modifiers);
    
    IBPW = IPW;
    Is there another if that I need to put in front of it...?

    (Note how I separated out the last step, this makes it easier to edit later when other details are discovered)

    Very interesting algorithm... GM obviously went to great length to get the injectors modelled correctly, we're learning from this.
    Last edited by joecar; August 11th, 2010 at 05:51 PM.

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

    Default


    BTW: just wrap the pseudo-code in [code] [/code] tags to get the indents preserved.

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

    Default

    So are both the if's involving B9021 in the correct places...?

  5. #15
    Lifetime Member 5.7ute's Avatar
    Join Date
    Oct 2006
    Posts
    1,840

    Default

    I have trouble following code like that. That is what is making it all confusing.lol.
    All I can tell you is that if the calculated fuelling portion of the pulsewidth or IPW is equal to or lesser than B9021, then the value of B9021 + the offsets is the final or IBPW. If the B9021 limit is not hit, then all the min, default pulsewidth, SPA tables etc come into play. Small pulse adjust didnt appear to be active in my tests of B9021 earlier this year.
    The Tremor at AIR

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

    Default

    Ok, I want to make less confusing...

    How about this:

    Code:
    IFR = lookup(B4001)(injector flow rate);
    
    IPW = airmass / AFR / IFR * 1000; 
    
    if IPW <= B9021(minimum transient pulsewidth) then 
        IPW = B9021;
    else
        if IPW < B4003(minimum pulsewidth) then  
            IPW = B4004(default pulsewidth);
    
        if IPW < B4006(small pulse threshold) then  
            IPW = IPW + B4005(small pulse adder);
    end
    
    IPW = IPW + B3701(voltage/manvac offset) + TF(transient fueling modifiers);
    
    IBPW = IPW;
    The block between else and end happens when IPW > B9021.


    Ok, I get it... is this how it works:

    if IPW is less than or equal to B9021, then the final value is B9021+B3701+TF;
    otherwise B9021 is not used, and instead, B4004 and/or B4005 may be applied, and then B3701+TF are applied.

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

    Default

    I'm wondering if it should read like this:

    Code:
    IFR = lookup(B4001)(injector flow rate);
    IPW = airmass / AFR / IFR * 1000; 
    
    if IPW <= B9021(minimum transient pulsewidth) then 
        IPW = B9021;
    else if IPW < B4003(minimum pulsewidth) then  
        IPW = B4004(default pulsewidth);
    else if IPW < B4006(small pulse threshold) then  
        IPW = IPW + B4005(small pulse adder);
    end
    
    IPW = IPW + B3701(voltage/manvac offset) 
    IPW = IPW + TF(transient fueling modifiers);
    
    IBPW = IPW;
    The if ... else if sequence selects only one statement to do and then jumps to end.

    This is much simpler.

    Are the < correct, should any of those be <= instead...?

  8. #18
    Lifetime Member 5.7ute's Avatar
    Join Date
    Oct 2006
    Posts
    1,840

    Default

    Quote Originally Posted by joecar View Post
    I'm wondering if it should read like this:

    Code:
    IFR = lookup(B4001)(injector flow rate);
    IPW = airmass / AFR / IFR * 1000; 
    
    if IPW + TF<= B9021(minimum transient pulsewidth) then 
        IPW = B9021;
    else if IPW < B4003(minimum pulsewidth) then  
        IPW = B4004(default pulsewidth);
    else if IPW < B4006(small pulse threshold) then  
        IPW = IPW + B4005(small pulse adder);
    end
    
    IPW = IPW + B3701(voltage/manvac offset) 
    IPW = IPW + TF(transient fueling modifiers);
    
    IBPW = IPW;
    The if ... else if sequence selects only one statement to do and then jumps to end.

    This is much simpler.

    Are the < correct, should any of those be <= instead...?
    Now your splitting hairs. lol.
    Another question that needs answering is when TF or the transient fuelling modifiers are actually added to the equation. Are they added to the initial IPW calculation, so minimum pulsewidth or small pulse adder are in effect afterwards like I added in blue?
    The Tremor at AIR

  9. #19
    Lifetime Member 5.7ute's Avatar
    Join Date
    Oct 2006
    Posts
    1,840

    Default

    I can see a lot more testing & calculating may need to be done to put this to bed.
    Good work on the pseudo code Joe, That looks a lot easier to follow now.
    The Tremor at AIR

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

    Default

    So the question is whether TF is applied first:

    Code:
    IFR = lookup(B4001)(injector flow rate);
    
    IPW = airmass / AFR / IFR * 1000;
    
    IPW = IPW + TF(transient fueling modifiers);
    
    if IPW <= B9021(minimum transient pulsewidth) then 
        IPW = B9021;
    else if IPW <= B4003(minimum pulsewidth) then  
        IPW = B4004(default pulsewidth);
    else if IPW < B4006(small pulse threshold) then  
        IPW = IPW + B4005(small pulse adder);
    end
    
    IPW = IPW + B3701(voltage/manvac offset) 
    
    IBPW = IPW;
    Last edited by joecar; August 11th, 2010 at 05:50 PM.

Page 2 of 3 FirstFirst 123 LastLast

Similar Threads

  1. small pulse adjust {B4005}
    By acric5 in forum Gen III V8 Specific
    Replies: 8
    Last Post: October 22nd, 2009, 12:48 PM
  2. (B3701) Injector Pulse Width values for SVO 42# Injectors
    By DrkPhx in forum General (Petrol, Gas, Ethanol)
    Replies: 0
    Last Post: September 13th, 2009, 01:56 AM
  3. crankshaft correlation
    By pullincrazy88 in forum Vortec V6/V8 Specific
    Replies: 1
    Last Post: May 16th, 2009, 02:04 AM
  4. MAP/TP Correlation
    By DrX in forum General (Petrol, Gas, Ethanol)
    Replies: 8
    Last Post: February 10th, 2009, 05:13 PM
  5. B4005 Small Pulse Adjust How does GM create this table?
    By onfire in forum Custom Operating Systems
    Replies: 44
    Last Post: December 2nd, 2008, 12:39 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
  •