Métrologie · Instrumentation industrielle · Backend

Backend d'un banc d'étalonnage de débitmètres gaz

Contexte

Le banc PLAT, au Centre d’essais d’Alfortville de NaTran R&I (groupe GRTgaz), sert à l’étude, la qualification et l’étalonnage de compteurs de gaz naturel industriels. Ce backend remplace le logiciel d’exploitation existant du banc, en réimplémentant l’ensemble de la chaîne de traitement métrologique : de l’acquisition des mesures jusqu’au calcul des débits étalon et compteur d’un point d’essai.

Le périmètre couvre trois volets : l’étalonnage de compteurs de gaz naturel (campagnes d’essai, dépouillement, certificats d’étalonnage de tuyères), les calculs thermophysiques et de débits (propriétés du gaz via les équations d’état AGA8 et REFPROP, débits de référence par tuyères en régime sonique selon ISO 9300, coefficients de décharge d’organes déprimogènes selon ISO 5167-2, corrections et conversions d’unités), et l’acquisition temps réel multi-protocoles (OPC-UA, Modbus TCP et d’autres), chacune avec surveillance de connexion et reprise automatique après coupure.

Le développement backend a été mené par une équipe de quatre développeurs, dont j’assurais la direction technique (lead dev) : répartition du périmètre, revue des choix d’architecture et de la couverture de tests, arbitrages sur le cœur de calcul métrologique.

Démarche

Le cœur de calcul métrologique est le point le plus sensible du projet : il réimplémente des formules de métrologie légale (AGA8 Detail et GERG-2008 de l’American Gas Association, REFPROP du NIST, NF EN ISO 5167-2:2022, ISO 9300) où une dérive d’arrondi n’est pas acceptable. Deux décisions en découlent directement :

  • Decimal systématique dans le cœur de calcul, plutôt que des flottants, pour éviter toute dérive d’arrondi sur les formules métrologiques.
  • Validation contre un référentiel indépendant : chaque calcul est vérifié par comparaison automatisée à un référentiel métier historique, avec tolérances documentées et suivi explicite des écarts, plutôt qu’une confiance a priori dans la réimplémentation.

Chaque fonction du cœur de calcul est couverte par des cas nominal / limite / erreur, avec des docstrings qui associent explicitement le numéro de formule du référentiel métier au code et au test correspondant — la traçabilité entre la norme et l’implémentation est documentée à la fonction, pas seulement au module.

Côté acquisition, chaque protocole (OPC-UA, Modbus TCP, et les autres pris en charge) implémente une détection de coupure active et une reprise de connexion automatique, testée en conditions réelles de coupure/reprise — un banc d’essai ne peut pas se permettre de perdre silencieusement des mesures pendant une campagne.

Enfin, toute évolution du schéma de base de données passe par une migration Alembic versionnée, testée à l’upgrade et au downgrade, pour garder la base traçable sur la durée de vie du banc.

Solution

Le backend expose une trentaine de routeurs API métier, plus une API de calcul dédiée, au-dessus de 24 modèles de données et 13 migrations Alembic. Il gère la gestion de campagnes d’essai, le dépouillement, la génération de certificats d’étalonnage de tuyères, le calcul des propriétés thermophysiques du gaz et des débits de référence, ainsi que l’acquisition temps réel multi-protocoles avec reprise automatique après coupure.

Résultat

Le projet représente environ 50 000 lignes de code applicatif et 30 000 lignes de tests, avec plus de 1 250 tests automatisés. Les calculs métrologiques sont validés par comparaison automatisée à un référentiel métier historique, avec tolérances documentées et écarts suivis explicitement plutôt que supposés nuls.

Python 3.14 · FastAPI · SQLModel · Alembic · PostgreSQL · asyncua (OPC-UA) · pymodbus · NumPy / SciPy · pytest

Un besoin similaire ?

Parlons de votre projet