La structure d'une cartographie : points d'appui et interpolation bilinéaire
La fiche lire une cartographie pose le principe : un tableau consulté en continu. Cette fiche-ci descend d'un cran, sur la mécanique interne de cette consultation, parce que c'est elle qui explique pourquoi une valeur lue dans une cellule n'est presque jamais la valeur que le moteur utilise.
Deux objets, pas un seul
Une cartographie n'est pas un bloc unique. Elle est faite de deux choses distinctes en mémoire :
- Les axes, ou points d'appui — les breakpoints. Une liste de valeurs croissantes qui bornent chaque entrée : par exemple un axe de régime à 800, 1200, 1600, 2000, 2500, 3000, 4000 tr/min.
- Le bloc de données, la grille de valeurs de sortie, rangée dans un ordre convenu.
Un troisième élément les relie : le plan de rangement, qui dit combien d'octets fait chaque valeur, dans quel sens elle se lit, et où commencent les données. C'est ce que décrit le fichier de définition — voir DAMOS, A2L et mappack. Sans lui, on a des octets ; avec lui, on a une carte nommée et graduée.
Les dimensions
Toutes les données de calibration ne sont pas des tableaux à deux entrées :
- un scalaire : une valeur unique, sans axe — un plafond, un seuil, un coefficient ;
- une courbe : une seule entrée, un seul axe — la consigne de rampe en fonction du régime, par exemple ;
- une carte : deux entrées, deux axes — le cas le plus courant, régime et charge ;
- plus rarement une carte à trois entrées.
Ce vocabulaire compte parce que l'effort d'analyse et le risque ne sont pas les mêmes selon la forme — voir reconnaître les familles de cartographies.
Les axes partagés, le piège discret
Un point mal connu : plusieurs cartes peuvent pointer vers le même axe. Un constructeur ne recopie pas dix fois l'axe des régimes ; il le range une fois et le fait référencer par toutes les tables qui en ont besoin. Certains axes sont dits fixes — figés à la compilation — d'autres sont communs, partagés et éditables, d'autres encore sont normalisés, c'est-à-dire calculés à partir d'un autre paramètre.
La conséquence est directe : déplacer un point d'appui partagé décale toutes les cartes qui s'y raccrochent, pas seulement celle qu'on regarde. C'est une des raisons pour lesquelles le motoriste travaille avec la définition exacte du logiciel, et pas à l'aveugle.
La recherche de position
À chaque instant, le programme doit situer l'entrée réelle — disons 1800 tr/min — dans l'axe. Il ne prend pas la case la plus proche : il cherche l'intervalle qui encadre la valeur, par une recherche dichotomique le long des points d'appui, puis calcule une position fractionnaire entre les deux bornes. À 1800 tr/min, entre 1600 et 2000, la fraction vaut 0,5 : pile au milieu.
Si l'entrée tombe exactement sur un point d'appui, il n'y a pas d'interpolation : la cellule est renvoyée telle quelle. Même chose aux coins et aux bords du domaine.
L'interpolation bilinéaire
Sur une carte à deux entrées, l'opération se fait dans les deux dimensions à la fois. Le calculateur charge les quatre cellules voisines qui entourent le point de fonctionnement, interpole d'abord le long d'un axe pour les deux bords, puis entre ces deux résultats le long de l'autre axe. Deux interpolations à une dimension enchaînées : c'est cela, l'interpolation bilinéaire.
Deux conséquences pratiques en découlent, et ce sont elles qui intéressent l'atelier :
- La valeur d'une cellule n'est pas ce que voit le moteur. Sauf à tomber pile sur deux points d'appui, le moteur travaille sur un mélange pondéré de quatre cellules. Lire un seul nombre dans un éditeur, c'est lire un sommet, pas la surface.
- Modifier une cellule déforme le voisinage. Par le jeu de la pondération, une case relevée tire vers le haut toutes les valeurs interpolées autour d'elle. C'est pourquoi une modification propre respecte la continuité de la surface et ne crée pas de pic isolé — un point déjà souligné dans la fiche de base.
Le bornage aux extrémités : pas d'extrapolation
Que se passe-t-il au-delà du dernier point d'appui, si le moteur sort de la plage prévue ? Le calculateur n'extrapole pas : il retient la valeur de bord et la maintient. La sortie sature à la dernière cellule.
C'est une notion décisive pour l'analyse. Un phénomène qui déborde de l'axe se voit servir une valeur figée, celle du bord, quelle que soit son ampleur réelle. Une carte « manque » alors non parce qu'elle est fausse, mais parce que le point de fonctionnement est sorti de son domaine. En datalog, cela se lit comme une grandeur qui plafonne à une valeur ronde et n'en bouge plus — voir lire la forme d'une courbe. C'est aussi pourquoi la résolution et l'étendue des axes conditionnent la finesse d'un réglage : un axe bien pensé resserre ses points là où le comportement doit être fin, et couvre toute la plage réellement rencontrée.
Ce qui est du ressort du reprogrammateur
Rien de ce qui précède n'est une manipulation. C'est une grille de lecture. Elle sert à trois choses : comprendre pourquoi une valeur lue ne correspond pas au comportement mesuré ; savoir qu'un axe partagé ne se déplace pas sans conséquence ; et reconnaître, dans un log, la signature d'une carte qui sature au bord de son domaine. L'édition, elle, appartient au motoriste, qui dispose de la définition exacte et connaît les marges de la mécanique. Le reste — situer la zone de calibration dans le binaire — est traité dans repérer les zones de calibration et repose sur la même logique de rangement que le calcul de la charge.
Voir aussi lire une cartographie, facteur d'échelle et offset et DAMOS, A2L et mappack.
Sur ANP Engineering — file service de reprogrammation moteur pour professionnels : file service ECU, correction de checksum, calculateurs pris en charge, tarifs.
