Discussion: EGR OFF sur EDC16C34
Afficher un message
Vieux 20/05/2022, 22h58  
Kennfeld
Membre accro
 
Avatar de Kennfeld
 
Date d'inscription: septembre 2013
Localisation: itinérant picardie nord marne +
Messages: 1 560
Thanks: 244
Thanked 922 Times in 604 Posts
Pouvoir de réputation: 25
Kennfeld has much to be proud ofKennfeld has much to be proud ofKennfeld has much to be proud ofKennfeld has much to be proud ofKennfeld has much to be proud ofKennfeld has much to be proud ofKennfeld has much to be proud ofKennfeld has much to be proud ofKennfeld has much to be proud of
Par défaut

déterrage !!!!


Citation:
Envoyé par Jean_Luc Voir le message
Hello,

Donc j'ai testé cette technique et ça a l'air de bien marcher.
Malheureusement, ma vanne (ou le faisceau) est morte et j'ai des valeurs invalides sur RCO et recopie. Je peux donc pas checker sur le graphique.
J'essayerai de le faire avec un autre ECU.

J'ai mis un plaque devant la vanne, j'avais des défaut de débit d'air et de recirculation de gaz insuffisante. J'ai patché la valeur avec 0x17 0x70 (6000 tours) et plus de défaut de débit d'air. La voiture semble mieux se comporter également.

Ce bout de code trouve l’adresse de AirCtl_nMin_C sur l'ensemble de ma collection de dump (edc16c34 1.6 hdi 90cv et 110cv).

Code:
    private void findEGRLimit() {

      // Try to find address of AirCtl_nMin_C (Engine speed threshold for EGR shut-off, in rpm)
      // Search for address of AirCtl_nMaxHi_C/AirCtl_nMaxLo_C (We assume that the difference
      // between this 2 values is 200RPM or 250RPM)
      // Immediately follow AirCtl_nMin_C
      // Standard values for AirCtl_nMin_C are 650 or 700 RPM

      boolean eos = false;
      int start = 2600;
      int diff = 200;
      while(!eos) {

        int hMaxHi = (start+diff) >> 8;
        int lMaxHi = (start+diff) & 0xFF;
        int hMaxLo = start >> 8;
        int lMaxLo = start & 0xFF;

        egrLimitAdd = search(0x1C0000,toByte(new int[]{hMaxHi,lMaxHi,hMaxLo,lMaxLo}));

        if(egrLimitAdd!=-1) {

          egrLimitAdd += 4;
          egrLimit = ((((int) memory[egrLimitAdd]) & 0xff) << 8) + (((int) memory[egrLimitAdd + 1]) & 0xff);
          eos = egrLimit == 700 || egrLimit == 650;

          if( !eos ) {
            // Try a second match
            egrLimitAdd = search(egrLimitAdd,toByte(new int[]{hMaxHi,lMaxHi,hMaxLo,lMaxLo}));

            if(egrLimitAdd!=-1) {
              egrLimitAdd += 4;
              egrLimit = ((((int) memory[egrLimitAdd]) & 0xff) << 8) + (((int) memory[egrLimitAdd + 1]) & 0xff);
              eos = egrLimit == 700 || egrLimit == 650;
            }
          }

        }

        if(!eos) {
          start += 50;
          if(start>=3600) {
            diff += 50;
            if(diff>250) {
              // Fail !
              eos = true;
            } else {
              start = 3000;
            }
          }
        }

      }

    }



  }
__________________
Winols BSL BDM IOT Officiel OLS505 disponible > 01/04/2021 en monoposte moins cher !
Kennfeld est déconnecté   Réponse avec citation