← Nieuwste papers
💬 NLP

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

Dit artikel introduceert ESBMC-GraphPLC, een formeel verificatie-instrument dat de kloof in de verwerking van grafische PLCopen XML Ladder Diagrammen overbrugt door een op DFS gebaseerde resolver te implementeren om grafische rung-logica om te zetten naar een geldige GOTO intermediaire representatie voor SMT-gebaseerde model checking, waardoor een correcte verificatie van programma's uit editors zoals CONTROLLINO en OpenPLC Editor mogelijk wordt zonder de bestaande ondersteuning voor tekstuele formaten aan te tasten.

Oorspronkelijke auteurs: Pierre Dantas, Lucas Cordeiro, Waldir Junior

Gepubliceerd 2026-06-19
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Pierre Dantas, Lucas Cordeiro, Waldir Junior

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Stel je een Programmable Logic Controller (PLC) voor als het brein van een machine in een fabriek, zoals een waterpomp of een verkeerslicht. Om dit brein te vertellen wat het moet doen, tekenen ingenieurs Ladder Diagrammen. Deze zien eruit als elektrische ladders met sporten, waarbij elke sport een regel is: "Als de watertank vol is, zet de pomp uit."

Een lange tijd waren er twee manieren om deze laddertekeningen op een computer op te slaan:

  1. De Tekstlijst: Een eenvoudige, stapsgewijze lijst met instructies (zoals een recept).
  2. De Grafische Kaart: Een visuele kaart waar onderdelen door middel van onzichtbare draden met elkaar zijn verbonden, geïdentificeerd door ID-nummers (zoals een metrokaart waarbij stations door lijnen worden verbonden).

Het Probleem: Het "Geest"-programma

De onderzoekers hadden een krachtige tool genaamd ESBMC-PLC die deze programma's kon controleren op veiligheidsfouten. Het werkte perfect op het Tekstlijst-formaat.

Echter, wanneer ze het Grafische Kaart-formaat invoerden (wat moderne software zoals CONTROLLINO en OpenPLC daadwerkelijk gebruikt), raakte de tool in de war. De tool keek naar de kaart, zag de ID-nummers en draden, maar begreep niet hoe deze met elkaar verbonden waren.

  • Het resultaat: De tool zei: "Alles is veilig!"
  • De adder onder het gras: Het was een leugen. Het was niet veilig omdat de logica ontbrak; het was "veilig" omdat de tool naar een lege kamer keek. Dit wordt vacuous verification (leegstaande verificatie) genoemd — het is alsof je zegt dat een vergrendelde deur beveiligd is omdat je bent vergeten te controleren of er een raam openstaat.

De Oplossing: ESBMC-GraphPLC

De auteurs bouwden een nieuwe module genaamd ESBMC-GraphPLC om dit op te lossen. Denk aan het inhuren van een detective die door de grafische kaart loopt en deze terugvertaalt naar een taal die de veiligheidscontrole begrijpt.

Hier is hoe hun "detective" werkt, met behulp van eenvoudige analogieën:

1. De Detective met een Zaklamp (DFS Algoritme)
De tool gebruikt een methode genaamd Depth-First Search (DFS). Stel je een detective voor die door een doolhof van draden loopt. Ze beginnen aan de linkerkant van de ladder (de stroombron) en volgen elk mogelijk pad naar de rechterkant.

  • Ze traceren elke draadverbinding.
  • Ze schrijven elke schakelaar (contact) op die ze passeren.
  • Ze stoppen wanneer ze het apparaat (de spoel/pomp) bereiken.
  • Door dit te doen, reconstrueren ze de exacte logica van de ladder-sport en veranderen ze de visuele kaart terug in een duidelijke "Als-Dan" regel.

2. De Verkeersregelaar (Volgorde is belangrijk)
In deze diagrammen heb je soms een "Set"-schakelaar (aan zetten) en een "Reset"-schakelaar (uit zetten) voor hetzelfde apparaat. De volgorde is cruciaf!

  • Als de "Reset" plaatsvindt na de "Set" in precies hetzelfde fractie van een seconde, blijft het apparaat uit.
  • Als de "Set" plaatsvindt na de "Reset", blijft het apparaat aan.
    De nieuwe tool kijelt naar een specifieke lijst in het bestand (de rightPowerRail sequentie) om te zien welke schakelaar eerst komt, optredend als een verkeersregelaar die ervoor zorgt dat de "Set"-auto vóór de "Reset"-auto gaat. Dit zorgt ervoor dat de logica overeenkomt met hoe echte machines zich daadwerkelijk gedragen.

3. Het Raadspelletje (I/O Inferentie)
Soms zegt de kaart niet welke draden "Inputs" (sensoren) en welke "Outputs" (motoren) zijn. De tool gebruikt een driestappen-raadspel:

  • Stap 1: Zoek naar officiële adreslabels (zoals %IX voor inputs). Als deze gevonden worden, is het exact.
  • Stap 2: Als er geen labels zijn, kijk dan naar het gedrag. Als een draad alleen als schakelaar wordt gebruikt, is het waarschijnlijk een input. Als het alleen wordt gebruikt om iets aan te zetten, is het waarschijnlijk een output.
  • Stap 3: Als er nog steeds onduidelijkheid is, behandel het dan als een "mysterieus variabele" die alles kan zijn. Dit is een veilige keuze, omdat het alle mogelijkheden controleert, zodat er niets gemist wordt.

De Resultaten

Het team heeft deze nieuwe detective getest op drie real-world programma's (waterpompen, trapleuken en dimbare lichten).

  • Vóór: De tool zag een lege kamer en zei "Veilig" (onjuist).
  • Nadat: De tool zag de volledige logica, controleerde elke mogelijke combinatie van sensor-inputs en bevestigde dat de programma's daadwerkelijk veilig waren.
  • Snelheid: Dit deed het in minder dan 70 milliseconden (sneller dan een menselijke knipoog).
  • Veiligheid: Het heeft de oude tool niet kapot gemaakt. De 11 programma's die al werkten met tekstlijsten, werkten nog steeds perfect.

Wat het nog niet kan (De Beperkingen)

Het paper is eerlijk over waar de detective nog mee worstelt:

  • Complexe Timers: Als een sport een timer bevat (bijv. "Wacht 5 seconden, zet dan aan"), negeert de tool momenteel het "wacht"-gedeelte en behandelt het als een willekeurige gok. Het is veilig, maar het begrijpt de timing niet.
  • Geneste Kaarten: Sommige complexe diagrammen verbergen kleinere kaarten binnen andere secties (zoals acties binnen een stap). De detective mist deze verborgen kamers soms.

Samenvatting

Kortom, de auteurs hebben een vertaler gebouwd die ervoor zorgt dat veiligheidscontrole-software eindelijk de visuele ladderdiagrammen kan "lezen" die door moderne industriële software worden gebruikt. Ze hebben een tool die blindelings "Alles is in orde" riep, veranderd in een tool die de logica daadwerkelijk begrijpt en kan bewijzen dat de machine niet zal breken of mensen zal verwonden.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →