ST Unit-Test

godi

Level-1
Beiträge
1.460
Reaktionspunkte
185
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich bin seit Jahren wieder mal zu einer SPS (Siemens Climatix, IEC61131-2) gekommen mit welcher eine Serienmaschine gesteuert wird.
Da es sich um Serienmaschinen (>1k Stk p.a.) handelt besteht der Wunsch den Code auch automatisiert zu testen. Leider hat SAPRO (IDE von Climatix welche auf logi.CAD aufbaut) keine Möglichkeiten automatisierte Tests auszuführen. Deshalb ist meine Idee den Code in ST (Structured Text) zu exportieren und extern zu Testen.

Dazu meine Frage:
Gibt es Tools (ähnlich zu Google Test, JUnit, ...) mit welchen ST-Code automatisiert getestet werden kann und Mocks möglich sind?

Wenn nicht:
Gibt es einen Converter welcher mir ST Function-Blocks in C++ kompiliert?
Dann könnte ich nämlich Google Test verwenden, was mir sehr recht wäre.

godi
 
Ich tu mich schwer in den meisten Fällen den Sinn von Unit-Tests im SPS-Unfeld zu verstehen.
Bei Regelung ok, aber bei Maschinen?
Das Schreiben der Regeln für einen sinnvollen Test dauert doch länger als das Schreiben des eigentlichen Programs.
Macht man eine Inbetriebnahme mit einem vernünftigen Prüfplan und einer Validierung, dann habe ich reelle Ergebnisse.
Wie erkenne ich bei einem Unittest z.B. ob bei einer Störung die richtige Meldung ausgegebn wird?
Kann ja sein, dass der Programmierer bei der Störliste eine Zeile verrutscht ist?
Wie erkenne ich bei einem Unittest ob eine Schrittkette passt?

Gruß
Blockmove
 
Ist es in TwinCAT möglich, automatisiert bzw. Ordnermäßig die ST sourcen zu importieren?
Sind Mocks auch möglich? Habe ich jetzt nicht gefunden.
Automatisiert wird TwinCAT mit dem Automation Interface: https://infosys.beckhoff.com/content/1033/tc3_automationinterface/index.html
Mock-ups habe ich noch nicht für TwinCAT gesehen. Nur die, welche eigenhändig programmiert wurden.

Ich tu mich schwer in den meisten Fällen den Sinn von Unit-Tests im SPS-Unfeld zu verstehen.
Bei Regelung ok, aber bei Maschinen?
Das Schreiben der Regeln für einen sinnvollen Test dauert doch länger als das Schreiben des eigentlichen Programs.
Macht man eine Inbetriebnahme mit einem vernünftigen Prüfplan und einer Validierung, dann habe ich reelle Ergebnisse.
Wie erkenne ich bei einem Unittest z.B. ob bei einer Störung die richtige Meldung ausgegebn wird?
Kann ja sein, dass der Programmierer bei der Störliste eine Zeile verrutscht ist?
Wie erkenne ich bei einem Unittest ob eine Schrittkette passt?
Wenn man z.B. Bibliotheken entwickelt ist die Verwendung von Unit-Tests schon sehr sinnvoll.
Eine komplette Maschine würde man nicht mit Unit Tests erproben, sondern mit sogenannten System Tests und hierfür wohl auch eher einen Software-in-the-Loop oder Hardware-in-the-Loop Ansatz wählen. Da gibt es z.B. das Stichwort "virtuelle Inbetriebnahme", welches gerade bei großen Anlagen genutzt wird. Auch wenn eine Maschine wirklich in Serie (sprich über hundert gleiche Maschinen im Jahr, nicht 10 unterschiedliche Prototypen) produziert wird, sind jede Form von automatisierte Tests für jede Änderung an den Quellen m.E. sehr sinnvoll.
 
Zurück
Oben