← Derniers articles
💻 computer science

ESBMC-PLC+: A Unified IEC~61131-3 Formal Verification Framework as a PLCverif Successor

Cet article présente ESBMC-PLC+, un cadre unifié en code source ouvert qui étend le backend ESBMC pour prendre en charge tous les principaux langages IEC 61131-3 (incluant le diagramme à contacts et le texte structuré) ainsi que la vérification non bornée, surmontant ainsi les limitations de format d'entrée et les contraintes de preuve bornée de son prédécesseur PLCverif tout en surpassant significativement nuXmv dans la vérification de programmes riches en temporisateurs.

Auteurs originaux : Pierre Dantas, Lucas Cordeiro, Waldir Junior

Publié 2026-06-24
📖 5 min de lecture🧠 Analyse approfondie

Auteurs originaux : Pierre Dantas, Lucas Cordeiro, Waldir Junior

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez un Automate Programmable Industriel (API) comme le cerveau d'une machine d'usine. C'est un ordinateur industriel robuste qui ordonne aux robots, aux vannes et aux voyants de bouger, de s'arrêter ou de changer de couleur. Ces machines fonctionnent sur une boucle répétitive stricte appelée « cycle de balayage » (scan cycle), vérifiant les capteurs et prenant des décisions des milliers de fois par seconde. Comme ces machines contrôlent des choses telles que des centrales nucléaires ou des signaux ferroviaires, une seule erreur dans le code peut être catastrophique.

La vérification formelle est comme un correcteur mathématique super intelligent qui vérifie chaque scénario possible auquel la machine pourrait être confrontée pour garantir qu'elle ne plante jamais ou n'agit pas de manière dangereuse.

Pendant des années, le meilleur outil open-source pour ce travail s'appelait PLCverif. Considérez PLCverif comme un mécanicien hautement qualifié, excellent pour réparer des voitures (du code textuel), mais qui refuse de regarder sous le capot des motos (diagrammes à contacts/ladder) ou qui n'a pas les bons outils pour prouver que le moteur fonctionnera indéfiniment sans surchauffer (preuves non bornées).

Ce document présente ESBMC-PLC+, un nouveau « super-mécanicien » mis à jour, conçu pour remplacer et améliorer PLCverif. Voici ce qu'il fait, expliqué simplement :

1. Parler toutes les langues (Le cadre unifié)

Les programmeurs d'API parlent trois langages principaux :

  • Diagramme à contacts (Ladder Diagram - LD) : Ressemble à un schéma de circuit électrique avec des échelons et des rails. C'est le langage le plus populaire dans les usines (comme l'« anglais » de l'industrie).
  • Texte Structuré (Structured Text - ST) : Ressemble au code informatique standard (similaire à Pascal ou C).
  • LD Graphique : La version visuelle des diagrammes à contacts.

Le Problème : L'ancien outil (PLCverif) ne pouvait lire que le langage « Texte Structuré ». Si un ingénieur avait un diagramme à contacts, il devait le réécrire manuellement en texte, ce qui est lent et sujet aux erreurs. De plus, si le diagramme à contacts contenait des « blocs de fonctions » complexes (comme des temporisateurs ou des compteurs), l'ancien outil ne pouvait pas du tout les gérer.

La Solution : ESBMC-PLC+ est un traducteur universel. Il peut lire nativement les trois langages.

  • Pour le Texte Structuré, il utilise un compilateur open-source de confiance (MATIEC) pour traduire le code dans un format que le moteur de vérification comprend.
  • Pour les Diagrammes à Contacts, il possède un nouveau « décodeur » qui peut désormais comprendre les temporisateurs et les compteurs complexes qui étaient auparavant ignorés.

2. La garantie du « Toujours » (Preuves non bornées)

Imaginez que vous testez un pont.

  • Vérification bornée (L'ancienne méthode) : Vous faites passer un camion sur le pont 100 fois. Si le pont tient, vous dites : « C'est probablement sûr ». Mais vous ne savez pas ce qui se passera au 101ème passage, ou si le pont s'effondrera après 1 000 ans. C'est ce que faisait le moteur principal de l'ancien outil (CBMC).
  • Preuves non bornées (La nouvelle méthode) : ESBMC-PLC+ utilise une technique appelée k-induction. Au lieu de simplement vérifier 100 fois, il utilise les mathématiques pour prouver que si le pont tient pendant les premières secondes, il tiendra pour l'éternité. Il garantit que la machine ne faillira jamais, peu importe la durée de son fonctionnement.

3. Le champion de la vitesse (SMT vs BDD)

Le document compare ESBMC-PLC+ au moteur « non borné » de l'ancien outil (nuXmv), qui utilise une méthode appelée BDD (Binary Decision Diagrams).

  • L'analogie : Imaginez que vous avez une immense bibliothèque de livres (tous les états possibles de la machine).
    • L'ancien outil (BDD) essaie de lire chaque livre un par un. Si la bibliothèque est immense (parce que la machine possède de nombreux temporisateurs ou compteurs), il est submergé et s'arrête de fonctionner (time out).
    • ESBMC-PLC+ (SMT) utilise un index magique. Au lieu de lire chaque livre, il demande à un bibliothécaire super intelligent (un solveur SMT) de vérifier la logique de toute la bibliothèque d'un coup.
  • Le Résultat : Sur des programmes avec des temporisateurs, ESBMC-PLC+ était 400 à 2 000 fois plus rapide que l'ancien outil. Dans certains cas, l'ancien outil abandonnait après 2 minutes, tandis qu'ESBMC-PLC+ terminait la preuve en moins d'une seconde.

4. Ce qu'il a réellement réparé

Le document met en évidence deux « lacunes » spécifiques qu'il a comblées :

  1. Le texte manquant : Il a ajouté le support pour les programmes en Texte Structuré (ST), que l'ancien outil gérait mal ou pas du tout pour le code IEC standard.
  2. Les temporisateurs « fantômes » : Dans les diagrammes à contacts visuels, il y avait des « blocs de fonctions » (comme des temporisateurs qui attendent 5 secondes avant d'allumer une lumière). L'ancien outil ignorait ces blocs, faisant comme s'ils n'existaient pas. Cela menait à des résultats « vacants » — où l'outil disait « Sûr ! » simplement parce qu'il ne regardait pas les parties dangereuses. ESBEC-PLC+ modélise désormais ces temporisateurs correctement, garantissant que la vérification de sécurité est réelle, et non un faux-semblant.

Résumé

ESBEC-PLC+ est un nouvel outil open-source qui agit comme un traducteur universel pour le code des machines industrielles. Il parle tous les langages majeurs utilisés par les ingénieurs, gère les diagrammes visuels complexes avec des temporisateurs et des compteurs, et utilise un moteur mathématique plus rapide et plus intelligent pour prouver que les machines seront sûres pour toujours, et non pas seulement pour un court test. Il est conçu pour être le successeur direct et supérieur de l'ancien standard de l'industrie, PLCverif.

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →