-> Hier kostenlos registrieren
Hallo Leute,
ich bin kürzlich mal zufällig auf das Thema Formale Verifikation von Programmen gestoßen und mir kommt das Konzept - grade im Bereich Automatisierungstechnik - extrem hilfreich vor und es ist mir ein Rätsel, warum ich davon jetzt zum ersten mal höre. Nachdem ich aber selbst in meiner Berufslaufbahn bisher vergleichsweise selten zum tatsächlichen SPS-Programmieren gekommen bin, wollte ich hier ein wenig "Marktforschung" betreiben bei den Leuten, die drin sind in der Materie.
Zunächst für alle die's nicht wissen: Was ist Model Checking?
Ein großes Problem beim Programmieren ist ja die Fehlersuche. Normalerweise mache ich dabei im Prinzip folgendes:
Normaler Testablauf:
Problematisch ist der erste Schritt, denn durch Überlegung kommt man kaum auf alle abstrusen Fehler, die sich so in ein Programm einschleichen. Jeder der mal irgendwas programmiert hat kennt das Problem.
Bei der Modellprüfung funktioniert der Ablauf deshalb so:
In der Hardwareentwicklung ist diese Methodik der Formalen Verifikation recht verbreitet, z.B. um die korrekte Funktionsweise von Prozessoren zu beweisen. In der Softwareentwicklung habe zumindest ich noch nie etwas davon mitbekommen. Und bei SPS erst recht nicht.
Eine Recherche ergab dann auch nicht arg viel. Ein Programm namens ArcadePLC hab ich gefunden:
http://arcade.embedded.rwth-aachen.de/doku.php?id=arcade.plc
Ist mir aber beim Datei laden abgestürzt, drum kann ich nichts dazu sagen. Bis auf eine kostenpflichtige Publikation des Entwicklers habe ich auch bei google keinerlei Dokumentation oder Diskussion dazu gefunden.
Das Tool UPPAAL scheint relativ verbreitet zu sein, ist aber nicht speziell für SPSen gedacht : http://www.uppaal.com/index.php?sida=186&rubrik=93
Ich habe nichts gefunden, wo ich einfach mein Programm/Projekt laden konnte, Bedingungen eingebe und dann ein Ergebnis erhalte.
Jetzt zu meinem eigentlichen Anliegen:
Schonmal danke für die Antworten!
ich bin kürzlich mal zufällig auf das Thema Formale Verifikation von Programmen gestoßen und mir kommt das Konzept - grade im Bereich Automatisierungstechnik - extrem hilfreich vor und es ist mir ein Rätsel, warum ich davon jetzt zum ersten mal höre. Nachdem ich aber selbst in meiner Berufslaufbahn bisher vergleichsweise selten zum tatsächlichen SPS-Programmieren gekommen bin, wollte ich hier ein wenig "Marktforschung" betreiben bei den Leuten, die drin sind in der Materie.
Zunächst für alle die's nicht wissen: Was ist Model Checking?
Ein großes Problem beim Programmieren ist ja die Fehlersuche. Normalerweise mache ich dabei im Prinzip folgendes:
Normaler Testablauf:
- Ich überlege mir, welche Betriebsfälle eintreten können. Insbesondere welche einen Fehler hervorrufen könnten.
- Ich teste die Fälle und prüfe, ob das eintretende Verhalten das gewünschte ist.
- Wenn ja -> gut, wenn nein -> Fehler beheben.
Problematisch ist der erste Schritt, denn durch Überlegung kommt man kaum auf alle abstrusen Fehler, die sich so in ein Programm einschleichen. Jeder der mal irgendwas programmiert hat kennt das Problem.
Bei der Modellprüfung funktioniert der Ablauf deshalb so:
- Ich lege eine Reihe von Bedingungen fest, die IMMER vom Programm eingehalten werden. z.B. "Niemals NOT-Aus und Motor an", "Niemals A0.1 für länger als 10 Sekunden", "Wenn sqrt(EW5 * EW6 > 10) dann irgendwann A0.5 = 1 binnen 8s". Alle Bedingungen zusammen ergeben das sog. Modell.
- Der Model Checker prüft JEDEN MÖGLICHEN BETRIEBSFALL des Programms auf die Wahrheit des Modells.
- Wenn kein Fall existiert, in dem das Modell nicht eingehalten wird -> gut, ansonsten -> fehlerhaftes Gegenbeispiel anzeigen -> Fehler beheben.
In der Hardwareentwicklung ist diese Methodik der Formalen Verifikation recht verbreitet, z.B. um die korrekte Funktionsweise von Prozessoren zu beweisen. In der Softwareentwicklung habe zumindest ich noch nie etwas davon mitbekommen. Und bei SPS erst recht nicht.
Eine Recherche ergab dann auch nicht arg viel. Ein Programm namens ArcadePLC hab ich gefunden:
http://arcade.embedded.rwth-aachen.de/doku.php?id=arcade.plc
Ist mir aber beim Datei laden abgestürzt, drum kann ich nichts dazu sagen. Bis auf eine kostenpflichtige Publikation des Entwicklers habe ich auch bei google keinerlei Dokumentation oder Diskussion dazu gefunden.
Das Tool UPPAAL scheint relativ verbreitet zu sein, ist aber nicht speziell für SPSen gedacht : http://www.uppaal.com/index.php?sida=186&rubrik=93
Ich habe nichts gefunden, wo ich einfach mein Programm/Projekt laden konnte, Bedingungen eingebe und dann ein Ergebnis erhalte.
Jetzt zu meinem eigentlichen Anliegen:
- Wem war das Prinzip schon vorher geläufig? Setzt ihr es ein?
- Wenn ja: Welche Tools verwendet ihr dafür?
- Wenn nein: Warum nicht?
- Wer das Prinzip vorher nicht kannte: Was meint ihr dazu? Würdet ihr es einsetzen, wenn es eine gute Software dafür gäbe?
- usw.
Schonmal danke für die Antworten!