Voir la version complète : EGR OFF sur EDC16C34
Jean_Luc
03/11/2017, 10h11
Bonjour,
Je voudrais faire un EGR OFF sur mon EDC16C34 (1.6HDI 110) simplement en mettant la valeur du AirCtl_nMin_C "Engine speed threshold for EGR shut-off" genre à 6000 rpm (par défaut à 700rpm). Le registre est dans le bloc [1C0000-1CFFFF] donc accessible par l'ODB mais j'ai quand même un doute sur le calcul des checksum. Est-ce que j'ai besoin d'un full dump pour que le flasheur puisse calculer un checksum correct et flasher par ODB ?
Ma vanne est OK et je la garderai OK pour éventuellement pouvoir revenir en arrière donc pas de plaque et son contrôle est OK.
Quel appareil me conseillez vous Galetto ou MPPS ?
Et où acheter un bon produit ?
Merci :)
Bonjour,
Un galetto est polyvalent, il te permettra de faire une sauvegarde complete en BDM de ton calculateur c'est un plus en cas de plantage par la prise ....
Suivant le budget que tu veux lui accorder tu trouveras ton bonheur chez car-prog (qui fait des clones qualité europe), la boutique du forum, ali et pleins de sites ! Un membre a peut être un lien fiable
bon courage !
Jean_Luc
03/11/2017, 11h44
Merci pour ta réponse ;)
Sait-tu si il est possible de flasher via ODB (sans ouvrir le calculo donc) le block [1C0.000 1FF.FFF] et sans avoir de full dump fait en BDM ?
J'aimerais éviter d'ouvrir le calculo si possible.
Kennfeld
03/11/2017, 11h58
Merci pour ta réponse ;)
Sait-tu si il est possible de flasher via ODB (sans ouvrir le calculo donc) le block [1C0.000 1FF.FFF] et sans avoir de full dump fait en BDM ?
J'aimerais éviter d'ouvrir le calculo si possible.
ou bien sur mais le top c'est d'avoir l'outil qui gère le checksum ainsi tu pourra mod dans un simple navigateur web ...
Jean_Luc
03/11/2017, 12h14
D'acc merci.
Mais les galetto ou les mpps ne sont pas livrés avec un flasheur qui calcule le checksum ? Et pour calculer ce checksum si on a juste le bloc des cartos 1C0.000 ça suffit ?
D'acc merci.
Mais les galetto ou les mpps ne sont pas livrés avec un flasheur qui calcule le checksum ? Et pour calculer ce checksum si on a juste le bloc des cartos 1C0.000 ça suffit ?
Prend toi un MPPS, suis les instructions ça passe tout seul.
Et pour faire un EGR close c'est 2 hystérésis, si tu sais pas faire, tu trouveras tout ici, et peut-être même un gars qui te le fait.
Kennfeld
04/11/2017, 00h06
Prend toi un MPPS, suis les instructions ça passe tout seul.
Et pour faire un EGR close c'est 2 hystérésis, si tu sais pas faire, tu trouveras tout ici, et peut-être même un gars qui te le fait.
dans le premier post il à une méthode bien plus malin que les 2 hystérésis nul besoin de close il sait faire un off .
Jean_Luc
20/05/2022, 18h23
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).
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;
}
}
}
}
}
}
Kennfeld
20/05/2022, 22h58
déterrage !!!!
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).
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;
}
}
}
}
}
}
Jean_Luc
21/05/2022, 07h17
Salut,
Oui, après 5 ans et au moins 100.000km de plus, la vanne et mon FAP ont décidé de me laché. Donc ce coup là, j'ai mis une plaque sur la vanne, vider le FAP, virer le ressort de la vanne PCV et reprog avec un MPPS v18 qui me calcule correctement le checksum et qui marche super :)
vBulletin® v.3.8.11, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org