← Derniers articles
💬 NLP

ESBMC-GraphPLC: Formal Verification of Graphical PLCopen XML Ladder Diagram Programs Using SMT-Based Model Checking

Cet article présente ESBMC-GraphPLC, un outil de vérification formelle qui comble la lacune dans la gestion des diagrammes à échelons (Ladder Diagrams) au format XML PLCopen en implémentant un résolveur basé sur une recherche en profondeur (DFS) pour convertir la logique de barreaux sous forme de graphe en une représentation intermédiaire GOTO valide pour la vérification de modèles basée sur le SMT, permettant ainsi la vérification correcte de programmes provenant d'éditeurs tels que CONTROLLINO et OpenPLC Editor sans affecter le support existant du format textuel.

Auteurs originaux : Pierre Dantas, Lucas Cordeiro, Waldir Junior

Publié 2026-06-19
📖 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, comme une pompe à eau ou un feu de signalisation. Pour dire à ce cerveau quoi faire, les ingénieurs dessinent des Diagrammes en échelle. Ils ressemblent à des échelles électriques avec des échelons, où chaque échelon est une règle : « Si le réservoir d'eau est plein, éteignez la pompe. »

Pendant longtemps, il y avait deux façons d'enregistrer ces dessins en échelle sur un ordinateur :

  1. La Liste de Texte : Une liste simple et étape par étape d'instructions (comme une recette).
  2. La Carte Graphique : Une carte visuelle où des pièces sont connectées par des fils invisibles, identifiées par des numéros d'ID (comme une carte de métro où les stations sont reliées par des lignes).

Le Problème : Le Programme « Fantôme »

Les chercheurs possédaient un outil puissant appelé ESBMC-PLC qui pouvait vérifier la sécurité de ces programmes. Il fonctionnait parfaitement sur le format de la Liste de Texte.

Cependant, lorsqu'ils ont soumis le format de la Carte Graphique (qui est ce que les logiciels modernes comme CONTROLLINO et OpenPLC utilisent réellement), l'outil a été confus. Il regardait la carte, voyait les numéros d'ID et les fils, mais ne comprenait pas comment ils se connectaient.

  • Le Résultat : L'outil disait : « Tout est sûr ! »
  • Le Piège : Il mentait. Ce n'était pas sûr parce que la logique était absente ; c'était « sûr » parce que l'outil regardait une pièce vide. C'est ce qu'on appelle la vérification vacante — c'est comme dire qu'une porte verrouillée est sécurisée parce que vous avez oublié de vérifier si une fenêtre est ouverte.

La Solution : ESBMC-GraphPLC

Les auteurs ont construit un nouveau module appelé ESBMC-GraphPLC pour corriger cela. Considérez cela comme l'embauche d'un détective pour parcourir la carte graphique et la traduire dans un langage que le vérificateur de sécurité peut comprendre.

Voici comment leur « détectif » fonctionne, en utilisant des analogies simples :

1. Le Détective avec une Lampe de Poche (Algorithme DFS)
L'outil utilise une méthode appelée Recherche en Profondeur (DFS - Depth-First Search). Imaginez un détective parcourant un labyrinthe de fils. Il commence du côté gauche de l'échelle (la source d'alimentation) et suit chaque chemin possible vers le côté droit.

  • Il trace chaque connexion de fil.
  • Il note chaque interrupteur (contact) qu'il rencontre.
  • Il s'arrête lorsqu'il atteint le dispositif (la bobine/pompe).
  • Ce faisant, il reconstruit la logique exacte de l'échelon de l'échelle, transformant la carte visuelle en une règle claire de type « Si-Alors ».

2. Le Agent de Circulation (L'ordre compte)
Dans ces diagrammes, vous avez parfois un interrupteur « Set » (allumer) et un interrupque « Reset » (éteindre) pour le même dispositif. L'ordre est important !

  • Si le « Reset » se produit après le « Set » dans la même fraction de seconde, le dispositif reste éteint.
  • Si le « Set » se produit après le « Reset », le dispositif reste allumé.
    Le nouvel outil examine une liste spécifique dans le fichier (la séquence rightPowerRail) pour voir quel interrupteur vient en premier, agissant comme un agent de circulation s'assurant que la voiture « Set » passe avant la voiture « Reset ». Cela garantit que la logique correspond au comportement réel des machines.

3. Le Jeu de Devinettes (Inférence d'E/S)
Parfois, la carte ne précise pas quels fils sont des « Entrées » (capteurs) et lesquels sont des « Sorties » (moteurs). L'outil utilise un jeu de devinettes en trois étapes :

  • Étape 1 : Chercher des étiquettes d'adresses officielles (comme %IX pour les entrées). Si elles sont trouvées, c'est précis.
  • Étape 2 : Si aucune étiquette n'est présente, observer le comportement. Si un fil est uniquement utilisé comme interrupteur, c'est probablement une entrée. S'il est uniquement utilisé pour allumer quelque chose, c'est probablement une sortie.
  • Étape 3 : Si l'incertitude persiste, traiter le fil comme une « variable mystère » qui pourrait être n'importe quoi. C'est un pari sûr car cela vérifie toutes les possibilités, garantissant que rien n'est oublié.

Les Résultats

L'équipe a testé ce nouveau détective sur trois programmes réels (pompes à eau, lumières d'escalier et variateurs de lumière).

  • Avant : L'outil voyait une pièce vide et disait « Sûr » (incorrectement).
  • Après : L'outil a vu toute la logique, a vérifié toutes les combinaisons possibles d'entrées de capteurs et a confirmé que les programmes étaient réellement sûrs.
  • Vitesse : Il a fait cela en moins de 70 millisecondes (plus vite qu'un clin d'œil humain).
  • Sécurité : Il n'a pas cassé l'ancien outil. Les 11 programmes qui fonctionnaient déjà avec les listes de texte fonctionnaient toujours parfaitement.

Ce qu'il ne peut pas encore faire (Les Limites)

L'article est honnête sur les difficultés persistantes du détective :

  • Temporisateurs Complexes : Si un échelon implique un temporisateur (ex: « Attendre 5 secondes, puis allumer »), l'outil ignore actuellement la partie « attente » et la traite comme une supposition aléatoire. C'est sûr, mais il ne comprend pas la gestion du temps.
  • Cartes Imbriquées : Certains diagrammes complexes cachent de plus petites cartes à l'intérieur d'autres sections (comme des actions à l'intérieur d'une étape). Le détective manque parfois ces pièces cachées.

Résumé

En résumé, les auteurs ont construit un traducteur qui permet aux logiciels de vérification de sécurité de enfin « lire » les diagrammes en échelle visuels utilisés par les logiciels industriels modernes. Ils ont transformé un outil qui disait aveuglément « Tout va bien » en un outil qui comprend réellement la logique et peut prouver que la machine ne cassera pas ou ne blessera personne.

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 →