← Neueste Arbeiten
⚡ electrical engineering

ESBMC-Arduino: Closing the Deployment Gap for Formal Verification of Open-Hardware PLCs

Dieses Paper führt ESBMC-Arduino ein, ein hardwaretreues Verifizierungs-Framework, das die Implementierungslücke für Open-Hardware-SPS durch die Integration einer deklarativen Hardware-Abstraktionsschicht und einer fundierten Eingangsbereichsmodellierung überbrückt, um Fehlalarme durch idealisierte Ganzzahlannahmen zu eliminieren und gleichzeitig echte breitenabhängige Defekte in IEC 61131-3-Programmen zu erkennen, die auf ressourcenbeschränkten Mikrocontrollern laufen.

Ursprüngliche Autoren: Pierre Dantas, Lucas Cordeiro, Waldir Junior

Veröffentlicht 2026-07-10
📖 5 Min. Lesezeit🧠 Tiefgang

Ursprüngliche Autoren: Pierre Dantas, Lucas Cordeiro, Waldir Junior

Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen

Stellen Sie sich vor, Sie bauen einen Roboter, der einen Wassertank verwaltet. Sie schreiben die Anweisungen in einer speziellen Sprache namens IEC 61131-3, die wie ein universelles Rezeptbuch für industrielle Maschinen ist. Jahrelang haben Ingenieure „Super-Roboter“-Simulatoren verwendet, um zu prüfen, ob diese Rezepte sicher sind. Diese Simulatoren sind wie Zauberer, die mit unendlichen Zahlen denken können; sie nehmen an, dass der Roboter jede beliebige Zahl in seinem Kopf halten kann, von negativer Unendlichkeit bis positive Unendlicher. Zudem gehen sie davon aus, dass Sensoren jeden vorstellbaren Wert melden können.

Aber hier kommt der Clou: Der eigentliche Roboter, den Sie bauen, ist kein Zauberer. Es ist ein winziger, billiger Mikrocontroller (wie ein Arduino), der in der realen Welt lebt. Dieser kleine Chip hat ein sehr spezifisches, begrenztes Gehirn. Er kann nur Zahlen bis zu 32.767 halten. Wenn eine Berechnung darüber hinausgeht, wird die Zahl nicht einfach größer; sie bricht, springt zurück an den Anfang und wird zu einer negativen Zahl. Es ist wie bei einem Kilometerzähler eines Autos, der von 999.999 zurück auf 000.000 springt.

Die große Kluft
Das Papier nennt dies die „Deployment Gap“ (Bereitstellungslücke). Es ist der Unterschied zwischen der Traumwelt des Zauberers und der beengten Realität des Roboters.

Die Autoren fanden heraus, dass, wenn Ingenieure die alten „Zauberer“-Simulatoren verwendeten, um ihren Code auf Sicherheit zu prüfen, sie eine enorme Menge an Fehlalarmen erhielten. Von 123 echten Programmen, die sie testeten, schrien die alten Simulatoren 54 Mal „GEFAHR!“ (eine Fehlalarmrate von 44 %). Doch als die Ingenieure genauer hinschauten, stellten sie fest, dass diese „Gefahren“ unmöglich waren. Die Simulatoren stellten sich Sensorwerte wie -32.764 vor. In der realen Welt kann ein Sensor, der mit diesem Roboter verbunden ist, nur Zahlen zwischen 0 und 1.023 lesen (da es ein 10-Bit-Sensor ist). Ein Wert von -32.764 ist wie ein Thermometer, das „minus 32.764 Grad“ anzeigt – das kann schlichtweg nicht passieren.

Das Papier argumenttiert, dass es sich beim Vertrauen auf diese alten Simulatoren so verhält, als würde ein Sicherheitsmann „Einbrecher!“ rufen, weil er einen Geist gesehen hat. Der Wachmann ist technisch gesehen „korrekt“ bezüglich des Geistes, aber nutzlos, weil Geister nicht existieren. Die Autoren schließen explizit die Idee aus, dass man lediglich mathematische Fehler prüfen kann, ohne auch zu prüfen, was die Sensoren tatsächlich sehen können. Sie zeigen, dass dies die Verifizierung in der Praxis „unsound“ (unzuverlässig) macht.

Die magische Lösung: Der HAL-Deskriptor
Um dies zu beheben, haben die Autoren ein neues Werkzeug namens ESBMC-Arduino entwickelt. Betrachten Sie dieses Werkzeug als einen „Realitätscheck“-Filter.

Bevor der Zauberer-Simulator den Code betrachtet, hängt dieses neue Werkzeug jedem Sensor eine winzige, automatische Notiz an. Dort steht: „Hey, denk daran, dieser Sensor kann nur Zahlen zwischen 0 und 1.023 liefern.“ Es erinnert den Simulator auch: „Und denk daran, das Gehirn des Roboters kann nur Zahlen bis zu 32.767 halten.“

Wenn der Simulator mit diesen Regeln läuft, geschieht die Magie:

  1. Die 54 Fehlalarme verschwinden sofort. Der Geist von -32.764 ist weg, weil der Simulator nun weiß, dass diese Zahl unmöglich ist.
  2. Die 32 Programme, die bereits als sicher bewiesen waren, bleiben sicher.
  3. Vor allem aber: Das Werkzeug hat keine echten Bugs übersehen. Es fand heraus, dass die alten Simulatoren eine spezifische Art von realer Gefahr verbargen: Wenn ein Sensorwert mit einer großen Zahl multipliziert wird (beispielsweise um einen rohen Sensorwert in einen Prozentsatz umzuwandeln), kann die Mathematik das winzige Gehirn des Roboters überfordern (Overflow).

Die reale Gefahr (und wie selten sie ist)
Das Papier stellte fest, dass die „Geister-Alarme“ zwar häufig waren, die echten Bugs, die durch diese Kluft verursacht wurden, in dem getesteten öffentlichen Code jedoch recht selten waren. Sie fanden echte Defekte nur in spezifischen Szenarien, in denen ein Sensorwert mit einer großen Konstanten (wie 100) multipliziert wurde, auf einem 16-Bit-Board.

Wenn zum Beispiel ein Sensor den Wert 898 liest (ein normaler, realer Wert) und der Code diesen mit 100 multipliziert, ist das Ergebnis 89.800. Das ist zu groß für das 16-Bit-Gehirn des Roboters (Maximum 32.767). Die Zahl springt um, wird zu einer negativen Zahl, und der Roboter denkt, der Wassertank sei leer, obwohl er in Wirklichkeit überläuft. Das neue Werkzeug hat genau dieses Szenario erfasst und den Ingenieuren ein echtes, physisches Beispiel für den Sensorwert geliefert, der zum Absturz führen würde.

Was das Papier nicht behauptet
Die Autoren sind sehr ehrlich darüber, was sie nicht getan haben. Sie haben nicht bewiesen, dass nun jedes Programm sicher ist. Von den 123 Programmen endeten 91 mit dem Urteil „unbekannt“. Das liegt nicht daran, dass das Werkzeug defekt ist, sondern daran, dass die Mathematik, um diese spezifischen Programme sicher zu beweisen, für die aktuelle Engine zu schwierig ist. Das Werkzeug hat erfolgreich das Rauschen (die Fehlalarme) entfernt und das Signal (die echten Beweise) beibehalten, konnte aber die schwierigsten Rätsel noch nicht lösen.

Zudem haben sie dies nicht mit Gleitkommazahlen (Dezimalzahlen wie 3,14) oder komplexen Physiksimulationen getestet. Sie konzentrierten sich strikt auf ganze Zahlen (Integer) und die Boolesche Logik (An/Aus-Schalter).

Das Fazreit (Fazit)
Das Papier demonstriert, dass man zur Verifizierung von Open-Hardware-PLCs (wie sie in Schulen und kleinen Fabriken verwendet werden) nicht nur die Mathematik prüfen darf; man muss auch die Grenzen der Hardware prüfen. Indem sie automatisch einen „Realitätscheck“ hinzufügten, der dem Simulator sagt, was die Sensoren tatsächlich leisten können, haben sie ein verrauschtes, unzuverlässiges Werkzeug in ein vertrauenswürdiges verwandelt. Sie haben nicht eine Million neuer Bugs gefunden, aber sie haben verhindert, dass das Werkzeug ständig „Wolf!“ schreit, was es Ingenieuren ermöglicht, den Sicherheitsprüfungen wieder zu vertrauen.

Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?

Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.

Digest testen →