Page 68 of 72 FirstFirst ... 185863646566676869707172 LastLast
Results 1,006 to 1,020 of 1070

Thread: new $EE tuning thing!

  1. #1006
    Fuel Injected!
    Join Date
    Mar 2013
    Posts
    1,470
    Quote Originally Posted by spfautsch View Post
    Thanks - I haven't compared to what I did yet but I probably skipped the step of saving the bin before trying to apply the patches.

    I really need to rip the wound back open and delve into some of the machine code. I'd really like to have a better understanding of what you did here b/c there are a half dozen similar hacks I can think of that might take some of the guesswork out of tuning for headers in closed loop.
    The hardest part was to handle the spi communication between t and e side. Since most of the interesting engine stuff is on e-side and the mode 4 message is recieved by t-side you have to transfer some data between them. Luckily I found two unused bytes and didn`t sacrafice other functionality. The slots are full now and controlling anything else on eside will wipe something else.
    Good news is most of the closed loop controls are on tside.

    The strategy for controlling 1d table is to copy the table to ram. Change the values at ram and use a switch byte to alternate between rom and ram table. If you want to change a calculated value you can add delta change adder to final value or make it an absolute value by switches.

    What do you mean by other parameters. T-side is limited by resources and we need to get creative.
    I found that the biggest problem is to get a stable closed loop idle. I have a very stable afr readings in open loop idle and when switching to closed loop either in maf or SD mode I got false rich conditions and PCM substract fuel almost to 17 AFR and the engine wants to die.

    What are the most important parameters controlling this behaviour that needs to be tuned.

  2. #1007
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Location
    Montgomery City, MO
    Age
    52
    Posts
    883
    Quote Originally Posted by kur4o View Post
    I found that the biggest problem is to get a stable closed loop idle. I have a very stable afr readings in open loop idle and when switching to closed loop either in maf or SD mode I got false rich conditions and PCM substract fuel almost to 17 AFR and the engine wants to die.
    I don't think you're alone in having experienced that phenomenon.

    Quote Originally Posted by kur4o View Post
    What are the most important parameters controlling this behaviour that needs to be tuned.
    All due respect, you're certain to have a better grasp of it than I do. Integrator delay jumps to top of mind. I haven't thought about closed loop PID tuning for a couple weeks now so it's sort of fuzzy for me, but it seems like it would be easier to fine-tune without having to reflash the ECU in between changes. O2 switching threshold may be another good candidate. Long story short, tuning a PID control loop such as this is a complex subject requiring a good bit of knowledge to master.

    Don't take this to mean I'm asking you to go off on an adventure trying to code things for my whimsy, I respect your time and I'm absolutely not asking that. Think of it more like I'm thinking out loud about what I perceive as the most difficult things to tune.

    I'm relatively sure that a stable closed loop idle with headers and a moderate cam (more than 30 degrees overlap) is going to be more or less un-obtainable. I thought I was relatively close with my setup, but I've yet to get a wideband so have no other benchmark to go by other than the seat-of-pants dyno telling me it's relatively smooth at idle with the a/c on.

    I think the biggest challenge is closed-loop operation between idle and your cam's lowest advertised torque spec (i.e. use with xxxx rpm stall convertor). For me that's about 2200 rpm, which is basically the entire cruise range for my particular engine / chassis. It's my theory that integrator oscillation in this range is my biggest source of false (and / or not so false) knock events.

  3. #1008
    Fuel Injected! Terminal_Crazy's Avatar
    Join Date
    Oct 2015
    Location
    Lancashire England
    Posts
    410
    Quote Originally Posted by spfautsch View Post
    I don't think you're alone in having experienced that phenomenon.
    Evening guys,
    Nope, you are definately not alone.

    My biggest problem problem is deciding whether any changes are better or worse.
    This thing will idle at 10.5:1 and 18:1
    Timing between 20 & 40 degrees
    It'll idle down to about 500 rpm when the IAC zeros out.

    Everytime i change something, it just sounds different

    The off throttle surge is still there.

    Ran it last week with the stock tune (and O2 settings) and it was noticably better but still there
    I've just pulled all the timing down to mid 20's and it's still there.
    IAC vs mph tables were earlier maxed at 6. so just been out with them raised from stock 20 to 22 and it was horrible so next i.m trying 3's to see if that makes any diffrence.


    All due respect, you're certain to have a better grasp of it than I do. Integrator delay jumps to top of mind. I haven't thought about closed loop PID tuning for a couple weeks now so it's sort of fuzzy for me, but it seems like it would be easier to fine-tune without having to reflash the ECU in between changes. O2 switching threshold may be another good candidate. Long story short, tuning a PID control loop such as this is a complex subject requiring a good bit of knowledge to master.

    Don't take this to mean I'm asking you to go off on an adventure trying to code things for my whimsy, I respect your time and I'm absolutely not asking that. Think of it more like I'm thinking out loud about what I perceive as the most difficult things to tune.

    I'm relatively sure that a stable closed loop idle with headers and a moderate cam (more than 30 degrees overlap) is going to be more or less un-obtainable. I thought I was relatively close with my setup, but I've yet to get a wideband so have no other benchmark to go by other than the seat-of-pants dyno telling me it's relatively smooth at idle with the a/c on.

    I think the biggest challenge is closed-loop operation between idle and your cam's lowest advertised torque spec (i.e. use with xxxx rpm stall convertor). For me that's about 2200 rpm, which is basically the entire cruise range for my particular engine / chassis. It's my theory that integrator oscillation in this range is my biggest source of false (and / or not so false) knock events.
    My O2's read rich, my Wideband says lean.
    I just forced 14.7 AFR in EEHack tonight and the difference in the AFR graph was huge.
    The motor didn't sound much different though.

    It does like fuel and timing though... mmm that rings an alarm... perhaps I try the OL tune again.

    Can you repost a link to the newer version so I can have a play.

    Cheers
    Mitch
    '95 Z28 M6 -Just the odd mod.
    '80 350 A3 C3 Corvette - recent addition.

  4. #1009
    Fuel Injected!
    Join Date
    Sep 2012
    Location
    washington indiana
    Age
    69
    Posts
    884
    if you run open loop, will it still get closed loop timming?

  5. #1010
    Fuel Injected! Terminal_Crazy's Avatar
    Join Date
    Oct 2015
    Location
    Lancashire England
    Posts
    410
    How do you mean?

    The timing stays the same, it’s the fueling that changes.
    OL fueling is just calculated off tables
    CL fueling uses the O2’s feedback to average 14.7.

    Mitch
    '95 Z28 M6 -Just the odd mod.
    '80 350 A3 C3 Corvette - recent addition.

  6. #1011
    LT1 specialist steveo's Avatar
    Join Date
    Aug 2013
    Posts
    4,007
    Quote Originally Posted by ony View Post
    if you run open loop, will it still get closed loop timming?
    if you have stored long term trims and switch to open loop, in some conditions they're used

  7. #1012
    Fuel Injected!
    Join Date
    Sep 2012
    Location
    washington indiana
    Age
    69
    Posts
    884
    I haven't got the newer ecm or pcm but the 288 has a table for when it restarts in open loop for added or subtracted timming

  8. #1013
    Fuel Injected!
    Join Date
    Mar 2013
    Posts
    1,470
    I went through the disassembly to clear some of the closed loop configuration stuff.

    Here is what I found out so far.

    There is a switch that enables the usage of the first cell of the following tables 26F1,26F6,26FB,2700,2705,270C.
    It is used at low TPS<8 low MPH<18.
    The thresholds are located at 26e6=tps, 26e7=mph.
    So at low speed low tps,and low mph conditions and at idle the first cell of the tables is used for closed loop configuration.

    Here is short descriptions of the tables
    26f1,26f6= Left, right 02 swing voltage
    26fb=Integral Delay
    270c=Corrcl adder to INT
    2700,2705= 02 smooth out table LR.[It smooths out rapid changing values of 02s. Example if value change from 300 to 600 this table
    smooth the change from 300->350->400->450->500->600. Higher value of the table leads to slower transition.]
    and two more tables these are multipliers.
    2711=Corrcl adder multiplier vs how far from swing voltage, 02s are
    271d=Int delay multiplier vs how far from swing voltage, 02s are.

    And here is some more
    CORRCL left calculations

    270c - =byte_191 vs airflow
    2711 - =byte_192 vs byte_199*2 [byte_199 = 17f/smoothed 02s/ - 18d/swing voltage/]
    byte_186=CORRCL add or sub to int
    byte_186=[byte_192*byte_191] result a [stock =1 or 2 ]

    INT L calculations

    26fb -=byte_194 INT delay vs airflow
    271d -=byte_195 vs byte_199*2[199=17f/smoothed o2s/ - 18d/swing voltage/]
    byte_198=[195*194] result a stock[$20 to $3f] cpu cycles . When timer expires INT is updated by 1.

    So what is the best strategy to tune this out.
    Why mixture is always leaned and never enriched?

    Utmost importance will be individual cylinder trims and the smooth out 02s table
    Last edited by kur4o; 06-29-2018 at 01:52 AM.

  9. #1014
    Fuel Injected!
    Join Date
    Mar 2013
    Posts
    1,470
    I am thinking to add support for real time tuning of most of the closed loop parameters.

    mode 4 message slots are 99% full so I will need to come up with something like extending the mode 4 message.

    Steveo,
    will it be possible instead of 12 bytes eehack to send 14 or 16 bytes message. How hard will be to achieve that.

  10. #1015
    LT1 specialist steveo's Avatar
    Join Date
    Aug 2013
    Posts
    4,007
    Quote Originally Posted by kur4o View Post
    I am thinking to add support for real time tuning of most of the closed loop parameters.

    mode 4 message slots are 99% full so I will need to come up with something like extending the mode 4 message.

    Steveo,
    will it be possible instead of 12 bytes eehack to send 14 or 16 bytes message. How hard will be to achieve that.
    not too hard. i should have made a #define for the mode 4 message length, but i never thought it would change. lets make it a define.

    in config.h, add a line:

    Code:
    #define M4_LENGTH 12
    in datastream.h:

    Code:
    byte construct_mode4[M4_LENGTH + 4]; // mode4 buffer
    then in mode4.cpp:

    Code:
    void datastream_control::m4_comm_init() {
    ...
    for(x=3;x<M4_LENGTH + 4;x++) construct_mode4[x] = 0x00;
    Code:
    QString datastream_control::m4_getpkt() {
    ...
    t.setRawData((char *)construct_mode4 +3,M4_LENGTH);
    Code:
    bool datastream_control::m4_get_request(byte *buf) {
    ...
    for(int x=0;x<M4_LENGTH + 4;x++) buf[x] = construct_mode4[x];
    Code:
    void datastream_control::m4_get_raw(byte *buf) {
    ...
    for(int x=0;x<M4_LENGTH + 4;x++) buf[x] = construct_mode4[x];
    Code:
    void datastream_control::m4_set_raw(byte *buf) {
    ...
    for(int x=0;x<M4_LENGTH + 4;x++) construct_mode4[x] = buf[x];
    then in datastream.cpp:

    Code:
    bool datastream::m4_send_if_requested() {
      if(control->m4_get_request(buf_out) == true) {
        return aldl_request_reply_length(M4_LENGTH + 4,4);
      } else {
        return true;
      }
    }
    
    bool datastream::m4_send_force() {
      control->m4_get_raw(buf_out);
      return aldl_request_reply_length(M4_LENGTH + 4,4,100);
    }
    i'm pretty sure that covers it, now you can change M4_LENGTH in config.h and recompile for a different length of mode 4 message

    if i missed something i'm sure it'll crash and you'll figure it out ...

    (edit: fixed bug)

  11. #1016
    LT1 specialist steveo's Avatar
    Join Date
    Aug 2013
    Posts
    4,007
    oh there is a UI field for displaying the mode 4 raw string too, but i doubt it'll cause trouble.

    of course after you test all this, you could carefully make length changes at runtime if you used a variable everywhere that we just used that #define, based on presence of your patch, if you care

  12. #1017
    Fuel Injected!
    Join Date
    Mar 2013
    Posts
    1,470
    Great I will test it in a couple of days.

    How about keeping the 12 byte message and extend it only if needed. For example, when the new CL parameters are commanded on in M4 window.

    The pcm don`t care how long the message is. So we can use variable lenght message and make a switch to load the extra bytes when needed.

    I have to delay some of the patch development due to lack of time and pcm to test. Hope I can get the PCM soon and do some testing.

  13. #1018
    LT1 specialist steveo's Avatar
    Join Date
    Aug 2013
    Posts
    4,007
    if the ecm doesn't care how long it is, might be easiest to just make it longer and leave it like that?

    i could figure a way to make it dynamic too if you really want

  14. #1019
    Fuel Injected!
    Join Date
    Mar 2013
    Posts
    1,470
    My concern is that longer message might put some unnecessary load on the bus. 2-4 extra bytes might be ok, but if I go too far with some table loading It can get really long. What is the refresh rate of m4 now? Something like each 2 seconds or shorter.

    You can think about it like future expansion. Something like if there is need for some bytes beyond the 12 bytes message, expand the message till the needed bytes and fill the gap with zeroes if there is one.

    I will try to expand the message with 6 bytes at the first place. 1-2 switch bytes and 4-5 value bytes.

  15. #1020
    Fuel Injected!
    Join Date
    Mar 2013
    Posts
    1,470
    Tested it and it runs fine on the first try. Now we have 16 bytes message.

    It will be great if we can make it variable lenght. You can think about it.

    With that much m4 parameters it get really hard to monitor what changes work best without playback capability. Do you think we can add m4 message to log file and make it playable.

    I tried the memo and it didn`t show up. Could it be because it needs a car connection or i broke something. I remember it was working correctly the last time I check it.

Similar Threads

  1. 1badcell and thats not the only thing
    By 1badcell in forum Introductions
    Replies: 2
    Last Post: 12-31-2013, 02:25 AM
  2. Replies: 6
    Last Post: 11-27-2012, 09:03 PM
  3. Replies: 2
    Last Post: 11-07-2012, 05:26 PM
  4. Minor thing.
    By historystamp in forum GearHead EFI Forum Support
    Replies: 7
    Last Post: 01-22-2012, 12:00 AM

Bookmarks

Posting Permissions

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