ReprogAutoLive guide des définitions

Trouver, vérifier et utiliser une définition de calibration

Ce guide explique pourquoi une définition (A2L, XDF, CSV) rend la conversion E85 fiable sur les calculateurs modernes, où la chercher, comment s'assurer qu'elle correspond à la version logicielle de votre fichier, et donne une fiche par famille de calculateur (Bosch, Siemens/Continental, Marelli, Sagem, Delphi, Denso…).

  1. 1. Pourquoi une définition ?
  2. 2. Lire les identifiants de votre fichier
  3. 3. Formats acceptés et conversions
  4. 4. Où chercher une définition
  5. 5. Vérifier la correspondance (version logicielle)
  6. 6. Créer soi-même une définition minimale (CSV)
  7. 7. Fiches par famille de calculateur
  8. 8. Embarquer des définitions dans l'application
  9. 9. Aspects légaux
  10. 10. Dépannage
  11. 11. Calculateurs anciens : cartes fragmentées, rôles E85, déduplication, export
  12. 12. Marge injecteur (duty-cycle théorique) et scores séparés
  13. 13. Politique de checksum : GarageDVS, outil de flash ou inconnu

1. Pourquoi une définition ?

Un fichier de calculateur (« dump » de la flash) contient du code et des milliers de données de calibration, sans aucun nom. L'analyse statistique de ReprogAutoLive retrouve seule les cartographies (tables avec axes) : sur les calculateurs anciens à tables de temps d'injection (Motronic M, Marelli IAW, Sagem, Sirius, Multec…), cela suffit à générer une version E85 en multipliant les bonnes cartes.

Sur les calculateurs à injection calculée (Bosch ME7, ME9/MED9, MED17, MG1, Siemens SIMOS, MSx BMW, Delphi MT, Denso…), le temps d'injection n'est pas dans une table : il est calculé à partir de la charge et d'une constante injecteur (KRKTE chez Bosch), puis corrigé par la régulation lambda dans des limites d'adaptation (FRAMNN/FRAMXN…). Ces scalaires (une ou deux valeurs de 16 bits) sont indétectables statistiquement : sans définition, l'outil ne peut ni les localiser ni les modifier, et le score est plafonné à 45.

Une définition associe des noms, adresses, dimensions et échelles à ces données. Avec elle, l'outil :

Sans définition, l'assistant de l'étape « Profil » permet de saisir manuellement les offsets de la constante injecteur et des limites, en affichant la valeur lue et sa vraisemblance ; l'affinage IA peut vous guider. Une définition de la bonne version logicielle reste la voie la plus sûre.

2. Lire les identifiants de votre fichier

Tout part des identifiants inscrits dans le binaire. Déposez ici votre fichier (il ne quitte pas votre navigateur) : l'outil affiche la famille reconnue, les références trouvées, la fiche correspondante et des requêtes de recherche prêtes à l'emploi. Vous pouvez aussi déposer une définition pour voir ses empreintes et son score de correspondance avec le fichier.

Fichier

Aucun fichier chargé.

Définition

Aucune définition chargée.

Identifiants reconnus automatiquement

Les mêmes motifs sont appliqués au binaire, au contenu des définitions et à leur nom de fichier, ce qui permet la correspondance automatique de la bibliothèque :

Le numéro logiciel Bosch (10 chiffres commençant par 103…) et l'EPK (chaîne « xx/1/ME7.5/… ») sont les indices les plus fiables : ils identifient une version logicielle précise. Une référence pièce (06A906032HN, 96xxxxxx80…) identifie un calculateur mais peut couvrir plusieurs versions.

3. Formats acceptés et conversions

FormatOrigineLecture par l'outilRemarques
A2L (ASAP2, .a2l)Fichier de calibration d'usine (INCA, CANape) ou reconstruit par la communautéDirecte : caractéristiques (VALUE, CURVE, MAP), dispositions (RECORD_LAYOUT), conversions (COMPU_METHOD linéaires), EPK, segments mémoireLe plus complet. Les adresses sont des adresses ECU (0x800000, 0x80000000…) : la base est détectée automatiquement. Fichiers volumineux (5 à 60 Mo) : le navigateur les lit, mais le dépôt côté serveur dépend des limites PHP.
XDF (TunerPro, .xdf)Définitions communautaires (tunerpro.net, forums)Directe : tables, courbes, constantes, adresses, taille d'élément, signe, ordre des octets, équations linéairesLes équations non linéaires sont ignorées (valeur brute conservée). Base d'adressage prise dans l'XDF ou détectée.
CSV (format ReprogAutoLive)Créé à la main, exporté d'un tableur ou d'un autre outilDirecte : une ligne par paramètre (nom, offset dans le fichier, taille, dimensions, échelle, description)Idéal pour quelques paramètres clés recopiés d'un forum ou d'un outil commercial. Voir section 6.
DAMOS (.dam)Format binaire Bosch ancien (Motronic M, ME7)Non lueCherchez l'A2L équivalent (souvent distribué avec), ou importez le DAMOS dans un outil qui le lit (WinOLS, TunerPro avec le module adéquat) et recopiez les paramètres clés dans un CSV.
XML RomRaider / EcuFlashSubaru, Mazda, MitsubishiNon lueChaque table indique une adresse (storageaddress), un type et une échelle : recopiez les tables carburant dans un CSV.
Packs WinOLS (.ols, .kp), drivers ECM Titanium, projets commerciauxOutils professionnelsNon lue (formats propriétaires)Exportez la liste des cartes en texte depuis l'outil (nom, adresse, dimensions, facteur) puis convertissez-la en CSV. Respectez la licence du pack.
Hondata / Crome / NISTune / Binary Editor…Communautés Honda, Nissan, FordNon lueMême démarche : recopie des offsets des tables carburant dans un CSV, ou recherche d'un XDF équivalent.

Le format est reconnu au contenu (pas seulement à l'extension) : un A2L renommé .txt fonctionne.

4. Où chercher une définition

Cherchez toujours avec les identifiants exacts lus dans votre fichier (section 2) : le numéro logiciel Bosch, la référence pièce, l'EPK, et les mots-clés A2L, DAMOS, XDF, definition, mappack. Par ordre de préférence :

  1. Ce que vous avez déjà. Le préparateur ou le fournisseur qui a lu le calculateur dispose souvent d'un projet WinOLS avec les cartes nommées ; demandez un export texte de la liste des cartes. Un fichier « ori » venu d'une base de données de fichiers originaux est parfois accompagné de sa définition.
  2. La bibliothèque de cette instance. L'administrateur peut avoir déposé des définitions : la liste « Bibliothèque du serveur » du convertisseur affiche les candidates avec un score ★ de correspondance calculé sur les identifiants de votre fichier.
  3. Communautés spécialisées (inscription généralement requise) :
    • nefmoto.com — référence pour les Bosch ME7 / MED9 / MED17 des groupes VAG : A2L et DAMOS classés par version logicielle (numéro 1037…), outils, documentation des fonctions (FR = Funktionsrahmen).
    • tunerpro.net — dépôt de définitions XDF par constructeur et par calculateur, éditeur TunerPro gratuit pour les consulter ou les créer.
    • ecuconnections.com, digital-kaos.co.uk — sections « definitions / damos / mappacks » multi-constructeurs (Marelli, Siemens, Sagem, Delphi, PSA, Renault…). Vérifiez la version avant de faire confiance à un fichier.
    • pcmhacking.net — GM / Delphi / Opel-Holden (Multec, MT80, E38/E67), XDF et documentation.
    • romraider.com (Subaru, Mazda), evolutionm.net et EcuFlash (Mitsubishi) — définitions XML à convertir en CSV.
    • ms4x.net — wiki BMW Siemens MS41/MS42/MS43/MSS5x avec définitions et adresses documentées.
    • Forums de marque et de préparation (VW/Audi, BMW, Fiat/Alfa, Renault Sport, PSA, Opel…) : rubriques « reprog », « cartographie », « E85 ».
  4. Ressources commerciales. Les éditeurs de WinOLS (EVC) et leurs revendeurs vendent des mappacks et des DAMOS/A2L par calculateur ; ECM Titanium et les outils similaires proposent des drivers par fichier original. Ces définitions sont sous licence : utilisables pour votre travail, non redistribuables.
  5. Documentation constructeur. Les A2L d'usine sont remis aux constructeurs sous accord de confidentialité ; ils circulent parfois avec des outils de diagnostic ou de calibration. Ne les redistribuez pas (voir section 9).
  6. L'affinage IA. À défaut de définition, l'étape « Affinage IA » du convertisseur transmet les identifiants et les structures détectées au modèle, qui peut proposer les noms et échelles usuels de la famille pour guider l'assistant. Ce n'est pas une définition : vérifiez toujours les valeurs lues.
Prudence avec les fichiers trouvés en ligne : une définition « ME7.5 » n'est pas universelle. Deux versions logicielles du même calculateur placent KRKTE à des adresses différentes. Appliquer une définition d'une autre version modifie des octets au hasard. C'est précisément ce que la vérification de compatibilité de l'outil (section 5) empêche.

5. Vérifier la correspondance avec votre version logicielle

Ce que l'outil compare

  1. Empreintes de la définition — extraites automatiquement lors du dépôt (serveur) ou de l'import (navigateur) : EPK et champs ECU/VERSION/PROJECT d'un A2L, titre d'un XDF, lignes # match: d'un CSV, identifiants présents dans le nom de fichier (ex. 1037361234_06A906032HN.a2l).
  2. Identifiants du binaire — les mêmes motifs appliqués aux chaînes du fichier analysé. Score ★ de correspondance : même SHA-256 = 100, EPK présent dans le fichier = 95, numéro logiciel Bosch = 85, correspondance saisie par l'administrateur = 80, référence VAG = 75, PSA = 70, Renault = 65, autres références = 60, simple texte de version = 30 max, même famille seulement = 15. Une seule candidate ≥ 70 est appliquée automatiquement ; plusieurs candidates sont évaluées et la plus compatible est retenue ; en dessous, l'outil vous laisse choisir.
  3. Base d'adressage — les adresses A2L/XDF sont des adresses ECU ; l'outil essaie les bases usuelles de la famille (0x800000 pour C167, 0x80000000 pour TriCore, 0 pour PowerPC…) et retient celle qui fait coïncider le plus de caractéristiques avec des structures réellement détectées.
  4. Verdict de compatibilité — compatible : l'EPK (si présent) est retrouvé à l'adresse annoncée, une large part des cartes nommées correspond à des structures détectées et les valeurs lues sont plausibles ; incertaine : indices partiels, à contrôler dans la visionneuse ; INCOMPATIBLE : EPK différent ou structures qui ne coïncident pas — les paramètres ne sont pas appliqués et le score est plafonné à 25.
  5. Vraisemblance des valeurs — chaque paramètre clé est comparé à sa plage usuelle : constante injecteur 0,03–0,16 ms/% (indirecte : 0,06–0,16), limites d'adaptation basse 0,70–0,90 et haute 1,10–1,30, enrichissements 1,0–2,5. Une valeur hors plage signale une mauvaise base, un mauvais facteur ou une mauvaise version.

Ce que vous devez vérifier vous-même

6. Créer soi-même une définition minimale (CSV)

Pour une conversion E85, quelques paramètres suffisent : la constante injecteur, les deux limites d'adaptation, éventuellement les enrichissements à froid. Un fichier texte de trois lignes fait une définition valable.

# Définition minimale — Golf IV 1.8T AGU, ME7.5
# match: 1037361234, 06A906032HN
# sha256: 4b002588e432356da92c986ecf3845e8b3e30c0d765e2fd10fbda638abb9b106
nom;offset;taille;nx;ny;facteur;decalage;unite;signe;description;role;e85_action;parent_id;confidence;protected
KRKTE;0x1A2B0;2;1;1;0.000030517578125;0;ms/%;0;Constante injecteur (rk -> te);injector_constant;fuel_factor;;0.95;0
FRAMNN;0x1A2C4;2;1;1;0.0009765625;0;-;0;Limite basse adaptation multiplicative;adaptation_min;adaptation_expand;;0.9;0
FRAMXN;0x1A2C6;2;1;1;0.0009765625;0;-;0;Limite haute adaptation multiplicative;adaptation_max;adaptation_expand;;0.9;0
KFWKA;0x1B100;1;8;6;0.0078125;0;-;0;Enrichissement réchauffage vs température / temps;warmup_enrichment;warmup_factor;;0.8;0
TVUB;0x1B200;2;8;1;0.004;0;ms;0;Temps mort injecteur;injector_deadtime;keep;;1;1

D'où sortir les offsets ?

  1. D'une autre définition de la même famille : les adresses diffèrent, mais l'assistant du convertisseur affiche la valeur lue à l'offset saisi ; une constante injecteur plausible (0,06–0,16 ms/%) entourée des autres constantes de la fonction est un bon signe. L'affinage IA peut proposer des candidats.
  2. D'un forum : les sujets « E85 » d'une motorisation précise donnent souvent l'offset de KRKTE et des limites pour un numéro logiciel donné. Vérifiez que c'est le vôtre.
  3. D'un outil commercial (WinOLS, ECM Titanium) : exportez la liste des cartes ou notez l'adresse, la taille et le facteur de chaque paramètre.

Enregistrez le fichier en .csv (UTF-8), importez-le dans le convertisseur ou déposez-le dans la bibliothèque. Le format complet est décrit dans le LISEZMOI.

7. Fiches par famille de calculateur

Connaissance embarquée dans l'outil (même catalogue que l'identification automatique). Les noms de paramètres et les échelles sont des ordres de grandeur usuels : la définition fait toujours foi.

Chargement du catalogue… (JavaScript requis)

8. Embarquer des définitions dans l'application

Deux bibliothèques coexistent et sont fusionnées dans la liste « Bibliothèque du serveur » du convertisseur : la bibliothèque du serveur (dépôt par l'administrateur, stockée dans data/definitions/) et la bibliothèque statique (fichiers livrés dans assets/definitions/, fonctionne sans PHP). Dans les deux cas, l'association au fichier analysé se fait par les empreintes (section 5) et la compatibilité est revérifiée avant toute modification.

A. Bibliothèque du serveur : dépôt (en masse) par l'administration

  1. Ouvrez Administration, connectez-vous, section Bibliothèque de définitions.
  2. Dans Fichier(s), sélectionnez un ou plusieurs fichiers (.a2l, .xdf, .csv ; Ctrl ou Maj pour une sélection multiple). Nommez-les si possible avec leurs identifiants : 1037361234_06A906032HN.a2l.
  3. Champs optionnels : Nom (pris en compte pour un dépôt d'un seul fichier, sinon le nom du fichier est utilisé), Famille (ex. « Bosch ME7 » ; déduite de l'EPK si vide) et Correspondances supplémentaires (identifiants séparés par des virgules). Famille et correspondances s'appliquent à tous les fichiers du lot : déposez lot par lot si elles diffèrent.
  4. Cliquez Déposer : les fichiers sont envoyés un par un. Pour chacun, les empreintes sont extraites du contenu (EPK et champs ECU/VERSION d'un A2L, titre d'un XDF, lignes # match: d'un CSV) et du nom de fichier. Le résumé liste les empreintes trouvées ou signale « aucune empreinte extraite : ajoutez des correspondances ».
  5. Le tableau affiche les définitions avec leurs correspondances et empreintes ; Supprimer retire le fichier. Les fichiers sont stockés dans data/definitions/ derrière une garde PHP et servis uniquement par l'API.
Taille maximale par fichier : celle de PHP (upload_max_filesize et post_max_size, 8 Mo par défaut dans le .htaccess fourni ; l'API refuse au-delà de 96 Mo). Pour un gros A2L, augmentez ces limites (php.ini, .user.ini, panneau de l'hébergeur ; client_max_body_size sous nginx) ou passez par la bibliothèque statique.

B. Bibliothèque statique : livrer les définitions avec le déploiement

  1. Copiez les fichiers dans assets/definitions/ (par FTP/SFTP sur le serveur, ou dans les sources avant de construire l'archive). Aucune limite PHP ne s'applique.
  2. Déclarez-les dans assets/definitions/index.json :
    • Avec Node.js (depuis les sources) : npm run definitions:index (ou node tools/build-definitions-index.mjs [dossier]) analyse chaque fichier, extrait les empreintes, l'EPK et la famille, et régénère l'index en conservant les champs saisis à la main (name, family, match, sha256, notes).
    • Sans Node.js : écrivez l'index à la main. Une entrée minimale suffit : { "file": "1037361234_06A906032HN.a2l" }. Les identifiants présents dans le nom du fichier (et dans name) sont reconnus automatiquement ; ajoutez match, epk et family pour compléter (l'EPK d'un A2L se lit dans son en-tête, ligne EPK "…").
  3. Rechargez le convertisseur : l'entrée apparaît dans la liste avec la mention « embarquée » et, après l'analyse d'un fichier, son score ★.
[
  {
    "file": "1037361234_06A906032HN.a2l",
    "name": "ME7.5 1.8T 06A906032HN (SW 1037361234)",
    "family": "Bosch ME7",
    "match": ["1037361234", "06A906032HN"],
    "epk": "40/1/ME7.5/…",
    "sha256": null,
    "notes": "source et licence de la définition"
  },
  { "file": "clio2_sirius32_8200123456.csv", "family": "Siemens/Continental Renault (Sirius 32/34, EMS 31xx)" }
]

Champs : file (obligatoire, nom du fichier dans le dossier), id (dérivé du nom de fichier si absent), name, format (a2l | xdf | csv, déduit de l'extension), family, match, epk, sha256 (empreinte SHA-256 du fichier binaire original que décrit la définition, affichée par le convertisseur : score 100), fingerprints (générées par l'outil), notes. Les deux bibliothèques peuvent coexister ; en cas de doublon, chaque candidate est évaluée et la plus compatible est retenue.

10. Dépannage

Message ou symptômeCause probableQue faire
« Aucune définition de la bibliothèque ne correspond à ce fichier »Aucune empreinte commune entre le fichier et les définitions disponiblesNotez les identifiants lus (panneau Calculateur ou section 2), cherchez une définition avec ces identifiants, ou choisissez manuellement une définition de la même famille : la compatibilité sera vérifiée.
« INCOMPATIBLE (autre version logicielle ?) »L'EPK diffère ou les structures nommées ne coïncident pas avec les structures détectéesVérifiez le numéro logiciel ; cherchez la définition de la bonne version. N'appliquez pas la définition : ses adresses sont fausses pour votre fichier.
« compatibilité incertaine »Base d'adressage trouvée mais peu de cartes détectées coïncident, ou valeurs à la limite de la vraisemblanceOuvrez KRKTE, les limites et deux ou trois cartes nommées dans la visionneuse : si les valeurs et les allures sont cohérentes, continuez ; sinon changez de définition. Essayez aussi l'option « ordre des octets » ou la sensibilité de détection.
Constante injecteur « hors plage »Mauvais facteur (A2L : COMPU_METHOD ; CSV : colonne facteur), mauvaise taille d'élément, ou mauvaise versionSur ME7, KRKTE ≈ 0,08–0,15 ms/% avec le facteur 1/32768 sur 16 bits. Corrigez le facteur ou l'offset dans un CSV.
Le dépôt d'un A2L échoue (413, « fichier trop grand »)Limites PHP ou du serveur webAugmentez upload_max_filesize/post_max_size (php.ini, .htaccess, .user.ini) ou utilisez la bibliothèque statique. Un A2L peut aussi être allégé : ne gardez que le MODULE avec les caractéristiques carburant.
Import très lent d'un gros A2LAnalyse de dizaines de Mo dans le navigateurPatientez (la barre de progression avance) ou allégez l'A2L. Les paramètres inutiles sont ignorés après l'association.
Aucune carte nommée après l'associationLa définition ne décrit pas le même fichier, ou l'XDF utilise une base différenteContrôlez l'EPK et la version ; sur XDF, vérifiez la valeur BASEOFFSET et l'ordre des octets.
« L'application ne s'est pas chargée » (Firefox : « Échec du chargement pour le module… », Chrome : erreur d'import dans la console)Un fichier JavaScript de l'application n'a pas été chargé : bloqué par une extension (bloqueur de publicités ou anti-pistage), ancien fichier en cache après une mise à jour, ou fichier absent du serveurL'alerte indique le fichier en cause. Désactivez le bloqueur pour ce site, rechargez en forçant le cache (Ctrl+F5), puis vérifiez que le fichier existe sur le serveur (redéployez l'archive complète au besoin).
Calculateur « Non identifié »Peu de chaînes lisibles (fichier compressé, chiffré, ou dump partiel)Vérifiez que le fichier est une lecture complète de la flash (tailles usuelles : 512 Kio, 1, 2, 4 Mio). Choisissez la famille par vous-même dans la liste des définitions.

11. Calculateurs anciens : cartes fragmentées, rôles E85 explicites, déduplication, export

Sur les calculateurs à tables de temps d'injection (Magneti Marelli IAW, Sagem, Sirius, Multec…), la conversion consiste à multiplier la carte de durée d'injection. Ces calculateurs n'ont ni constante injecteur KRKTE ni limites FRAMNN/FRAMXN : l'outil ne les exige pas. En revanche, le détecteur statistique découpe souvent une carte logique en plusieurs morceaux. Exemple réel : IAW 6LP2.05 (ST10F280, PSA 1.4 16V KFU), carte d'injection 12×21 uint16 little-endian à 0x62D54 (stride 24 octets, 252 cellules, 0,01 ms/bit) détectée en fragments 12×4 @0x62D54, 12×5 @0x62DB4, 12×5 @0x62E5C…

Carte parent et fragments

Une entrée de définition MAP 12×21 @0x62D54 est associée aux structures détectées entièrement contenues dans sa plage d'octets [0x62D54, 0x62F4C), à condition qu'elles soient cohérentes : même taille d'élément, même ordre des octets, largeur compatible (12, ou un multiple / diviseur : mêmes cellules redécoupées), début et fin alignés sur une ligne, pas de chevauchement. L'union de leurs plages donne la couverture :

Carte définition MAIN_INJECTION — 12×21 — reconstruite à partir de 4 fragments — couverture 90,5 % (1 zone non détectée : 0x62E2C–0x62E5B)

Les fragments sont nommés « MAIN_INJECTION (fragment 2/4) », reclassés selon le rôle du parent, et la compatibilité de la définition n'est pas pénalisée : une fragmentation par le détecteur n'est pas une incompatibilité de version. Le panneau « Pourquoi ? » de chaque paramètre indique « structure exacte trouvée », « parent couvert par N fragments » ou « aucune structure détectée correspondante », puis la source du rôle E85 (colonne role, nom, description) et les valeurs lues.

Rôles E85 explicites (CSV)

roleAction par défautType
fuel_quantity, injection_time, injection_duration× facteur carburantcarte d'injection
injector_constant× facteur carburantconstante injecteur (vraisemblance 0,02–0,6 ms/%)
warmup_enrichment, cold_start_enrichment× facteur froidenrichissement
adaptation_min / adaptation_maxlimite abaissée / relevéeadaptation
lambda_targetinchangée (sauf réglage lambda pleine charge)cible lambda
ignitionaction séparée (+ avance en forte charge, sur demande) — jamais confondue avec le carburant ; soumise au même seuil de certitude que les autres cibles (réglage unique de l'étape Profil ; une carte d'avance retenue sous 70 % est signalée) ou incluse de forceavance
injector_deadtime, load, torque, boost, axis, reference, otheraucunereconnu, non modifié

e85_action précise l'action : fuel_factor, warmup_factor, adaptation_expand, keep, none. parent_id désigne la carte parent d'une ligne fragment (le parent l'emporte). confidence (0–1 ou 0–100) fixe la certitude. protected=1 interdit toute modification. Quand role est présent, le nom et la description ne servent plus qu'à l'affichage ; les anciens CSV sans ces colonnes utilisent les règles par nom.

Groupes parent_id : une carte décrite par ses morceaux

Quand une définition CSV décrit une carte par plusieurs lignes portant le même parent_id (par exemple INJ_R0 12×4 @0x62D54, INJ_R1 12×5 @0x62DB4, INJ_R2 12×2 @0x62E2C, INJ_R3 12×5 @0x62E5C, INJ_R4 12×5 @0x62ED4 avec parent_id=MAIN_INJECTION_12X21), l'outil les regroupe en une carte logique : plages ordonnées et réunies ([0x62D54, 0x62F4C), 252 cellules uint16), dimensions logiques déduites de la largeur commune (12×21), contrôles de cohérence (même taille d'élément, même ordre des octets, aucun chevauchement, continuité). Un enfant qu'aucune structure détectée ne confirme contribue quand même au parent : il est compté comme vérifié si le SHA-256 déclaré est celui du fichier, sinon signalé et la certitude du parent est réduite. Les lignes de même parent_id avec role=axis, role=reference ou protected=1 sont associées au parent mais jamais comptées comme enfants de données.

Si tous les enfants partagent le même rôle et la même action (fuel_quantity / fuel_factor), le parent est l'unique action modifiable : le résumé compte « 1 carte logique concernée par l'E85 (5 fragments) », les enfants restent affichés pour le diagnostic mais n'ont aucune action indépendante (ils héritent de l'action choisie sur le parent, mention « via le parent MAIN_INJECTION_12X21 », et ne sont pas modifiés si le parent est exclu). Avant génération, l'union ordonnée des plages des enfants est vérifiée : elle doit valoir exactement la carte parent (par exemple [0x62D54, 0x62F4C), 504 octets, 252 valeurs uint16, 12×21), sans chevauchement ; sinon la génération est refusée. Chaque cellule n'est modifiée qu'une seule fois, même lorsqu'un fragment est aussi reconnu par le détecteur statistique. Le bloc de synthèse affiche : nom — rôle — facteur, cellules, plage, valeurs physiques avant et après, fragments détectés, complément fourni par la définition (SHA-256) et chevauchements. Les paramètres role=reference, e85_action=keep ou protected=1 ne sont jamais comptés comme modifiables. Rôles différents, chevauchement ou tailles d'élément différentes : pas d'action au niveau du parent, chaque enfant est traité séparément et le problème est affiché. Le nombre de fragments détectés ne réduit pas la certitude du parent lorsque le SHA-256 du binaire correspond à la définition.

L'interface distingue l'origine de chaque paramètre : détecté statistiquement (structure trouvée par l'analyse), fourni par définition exacte SHA-256 (non détecté, mais la définition décrit précisément ce binaire), reconstruit (carte reconstituée à partir de fragments ou d'enfants) et non vérifié ; le badge concerné E85 marque les paramètres réellement modifiables.

Priorité de la définition sur la détection statistique

Quand une structure détectée correspond à un paramètre de la définition, la classification de définition (rôle) devient la classification fonctionnelle et la détection brute (type et certitude statistiques) n'est plus qu'informative, affichée en badge secondaire. Règles : protected=1 ⇒ aucune modification automatique ; e85_action=keep ⇒ action forcée à « aucune » ; rôle reference / axis / other ⇒ jamais une cible E85. La classification statistique ne peut jamais réactiver une action sur une telle structure, même par inclusion forcée. Exemple : une structure fusionnée par le détecteur (« Injection 60 % ») déclarée DETECTOR_MERGED_FALSE_POSITIVE_6328A;…;reference;keep;;0.9;1 affiche « Reference · protected · détection brute : Injection 60 % · Action E85 : aucune — protégé par définition ». Pour un parent parent_id, la classification et l'action sont portées par le parent, les enfants sont purement diagnostiques (« via le parent »).

Le tableau des cartes masque par défaut ces faux positifs neutralisés (case « Afficher les faux positifs neutralisés ») et ne les inclut jamais dans « Seulement les cartes utiles à l'E85 ». L'export de la détection contient les deux classifications (colonnes rawType, rawConfidence, definitionRole, definitionAction, neutralized).

Déduplication des écritures

Avant génération, toutes les modifications sont converties en plages d'octets. Une structure détectée entièrement contenue dans la plage d'un paramètre nommé ou d'un patch parent est retirée du plan (« fragment couvert par MAIN_INJECTION : modifié une seule fois via la carte parent ») : chaque cellule n'est multipliée qu'une seule fois, même si vous forcez l'inclusion des fragments. Tout autre recouvrement (deux patchs, patch et paramètre de définition, recouvrement partiel) est un conflit bloquant :

Conflit : les octets 0x62D54–0x62DB3 sont modifiés à la fois par MAIN_INJECTION et FRAGMENT_01.

Le bouton de génération est désactivé tant qu'un conflit ou une erreur subsiste. Le rapport liste chaque plage modifiée avec le nombre de cellules et les valeurs brutes min/max avant → après.

Patch parent structuré (mode expert)

Sans définition, saisissez directement la carte : 0x62D54, 2, 12, 21, 1.30, fuel_quantity, IAW6LP main injection (offset, taille d'élément, nx, ny, facteur, rôle, libellé). L'aperçu montre la plage exacte (0x062D54–0x062F4B), 252 cellules, min/max avant et après, et les structures détectées couvertes. Un dépassement de capacité (uint16 > 65535), un offset hors du fichier ou un recouvrement rejettent le patch : aucune écriture partielle.

Export de la détection

À l'étape Analyse, « Exporter la détection (JSON) » et « (CSV) » donnent, pour chaque structure : identifiant (M022…), offset, plage d'octets byteStart/byteEnd, dimensions, taille d'élément, ordre des octets, axes (offsets et valeurs si détectés), min/max/moyenne, premiers et derniers échantillons, classification et certitude, action E85 prévue ou raison d'exclusion. C'est la base la plus simple pour construire une définition CSV : repérez les fragments d'une même carte, déduisez l'offset parent, les dimensions et le stride, puis déclarez la carte avec son rôle.

12. Marge injecteur (duty-cycle théorique) et scores séparés

Multiplier une carte de durée d'injection par 1,30 n'a de sens que si l'injecteur dispose encore du temps nécessaire : à haut régime, le temps disponible par cycle se réduit et l'injecteur finit par rester ouvert en permanence (duty-cycle 100 %). Pour toute cible carburant de rôle fuel_quantity (ou injection_time / injection_duration, ou une carte de temps d'injection reconnue par son nom) dont l'unité est la milliseconde et dont un axe régime est disponible, l'outil calcule, pour chaque point de l'axe régime :

  1. le temps disponible sur un cycle moteur 4 temps (720°) : cycle720_ms = 120000 / régime (18,46 ms à 6 500 tr/min, 30 ms à 4 000 tr/min) ;
  2. l'utilisation théorique de chaque cellule : utilisation = durée_modifiée / cycle720_ms, la durée modifiée étant la valeur brute arrondie après multiplication, reconvertie en ms avec le facteur de la définition ;
  3. la bande de couleur : < 80 % vert 80–90 % orange 90–100 % rouge > 100 % rouge critique.

La durée d'injection n'est jamais plafonnée automatiquement. Un dépassement ne modifie pas le fichier généré : il produit un avertissement demandant de vérifier la capacité des injecteurs (débit, remplacement par des injecteurs plus gros), la pression carburant et l'interprétation de l'unité (un facteur erroné dans la définition transforme 1,8 ms en 18 ms). Si la carte d'origine dépasse déjà 100 %, c'est très probablement l'unité ou le facteur qui est faux, ou la table n'est pas une durée brute : le rapport le signale.

D'où vient l'axe régime ?

Les valeurs doivent être plausibles (croissantes, 0–20 000, maximum ≥ 1 500 tr/min) ; sinon l'axe est ignoré et la raison est indiquée dans les notes.

Échelle physique prouvée ou non

L'estimation suppose que « ms » est bien la milliseconde vue par le timer injecteur. Cette échelle est considérée prouvée quand la définition est un A2L constructeur dont l'identité est vérifiée (EPK retrouvé ou SHA-256 exact) ou quand la définition CSV porte # scale_verified: 1. Dans tous les autres cas, l'outil affiche explicitement : « Estimation de duty-cycle indicative — unité ms non confirmée jusqu'au timer injecteur. » Les corrections dynamiques du calculateur (temps mort injecteur, corrections lambda, enrichissements transitoires) ne sont pas incluses : l'utilisation réelle est en général un peu plus élevée que l'estimation.

Rapport avant génération

Le bloc « Marge injecteur — pire cas » de l'étape Profil indique, pour chaque carte estimée : le régime du pire cas, le temps de cycle, la cellule concernée (colonne, ligne), la valeur d'origine et la valeur modifiée, l'utilisation théorique et sa bande, l'utilisation avant modification, la source de l'axe régime et l'état de l'échelle physique, puis un tableau régime par régime (cycle 720°, maximum avant, maximum après, utilisation). Exemple sur l'IAW 6LP2.05 de la section 11 : à 6 500 tr/min (cycle 18,46 ms), la cellule colonne 12 / ligne 21 passe de 17,74 ms à 23,06 ms (×1,30), soit 125 % — rouge critique — alors que la carte d'origine était déjà à 96 %.

Quatre scores séparés, jamais fusionnés

ScoreCe qu'il mesureLecture
Compatibilité définitioncorrespondance définition ↔ fichier (SHA-256, EPK, identifiants, entrées dans le fichier, cartes retrouvées, vraisemblance)≥ 70 compatible, 40–69 incertaine, < 40 incompatible ; « non applicable » sans définition
Certitude fonctionnelleidentification du calculateur (15), cibles carburant (35), cohérence (20), ramenées sur 100 ; plafonds : diesel 10, définition incompatible utilisée 25, aucune cible carburant 30, injection calculée sans constante 45≥ 75 bon, 50–74 à vérifier, < 50 insuffisant
Intégrité checksumblocs prouvés sur l'original ; zones modifiées couvertes et recalculées ; vérification finale100 si tout est couvert, 40–99 si des zones modifiées sont hors des plages vérifiées, 0 si aucun checksum n'est reconnu ou si la vérification finale échoue
Marge injecteur100 − utilisation théorique au pire cas (borné à 0)bande vert / orange / rouge / rouge critique ; « non estimable » sans carte en ms ou sans axe régime

Un checksum inconnu n'est plus dilué dans un total ambigu (« 51/100 ») : il vaut 0 sur sa propre ligne, et le verdict global (bonne confiance / confiance moyenne / confiance faible) est déduit des quatre scores — confiance faible dès que la certitude fonctionnelle est insuffisante ou que la marge injecteur est dépassée ; confiance moyenne dès qu'un checksum manque, qu'une définition est incertaine ou qu'une marge est réduite. Le rapport JSON conserve le total historique (score.total) pour compatibilité, mais l'interface et le rapport texte n'affichent que les scores séparés. Un checksum volontairement laissé à l'outil de flash (section 13) est « hors périmètre » : il n'est compté dans aucun score et ne dégrade pas le verdict.

13. Politique de checksum : GarageDVS, outil de flash ou inconnu

Beaucoup d'outils de flash (Galletto, KESS, MPPS, Alientech, outils constructeur…) recalculent eux-mêmes les checksums au moment de l'écriture. Dans ce cas, un « checksum non reconnu » par GarageDVS n'est pas un défaut du fichier : c'est une étape volontairement confiée au flasher. La politique de checksum distingue trois états :

ÉtatSignificationAffichageEffet
internal_supportedchecksum géré par GarageDVS : blocs prouvés sur l'original et recalculés à la génération, vérification finaleChecksum géré par GarageDVSscore « Intégrité checksum » 40–100 ; déclaré mais aucun bloc reconnu : avertissement réel, score 0
external_flash_toolchecksum volontairement laissé au flasher : GarageDVS n'écrit aucun checksum, même s'il reconnaît des blocsChecksum externe confirmé — « Checksum : externe — recalcul par l'outil de flash »hors périmètre : compté dans aucun score, aucun plafond, verdict non dégradé, génération toujours disponible
unknownaucun checksum reconnu et aucune déclarationChecksum inconnuavertissement réel, score « Intégrité checksum » 0 : correction externe à vérifier avant flash

Comment déclarer la politique

Une déclaration explicite de la définition l'emporte sur la préférence : internal_supported sans bloc reconnu reste un avertissement réel. Ni la compatibilité de la définition, ni la certitude fonctionnelle, ni la possibilité de générer le fichier ne dépendent de la politique de checksum.

Ce que dit le rapport

CHECKSUMS
  Checksum : externe — recalcul par l'outil de flash (déclaré par la définition)
  Checksum du fichier généré : non recalculé par GarageDVS
  Correction attendue : outil de flash externe
  Statut : workflow utilisateur validé

Avec la politique interne, le rapport indique le nombre de blocs recalculés et le résultat de la vérification finale ; avec l'état inconnu, il rappelle que la correction n'est pas validée.