Programmierung Profiling von SPS-Applikationen

CODESYS GmbH

TTT Anzeige einzelner Profiling-Ergebnisse in unterschiedlichen Darstellungen.

Bild: 3S-Smart Software Solutions
07.09.2015

Programme nach dem IEC 61131-3-Code in Industriesteuerungen müssen innerhalb einer vorgegeben Zykluszeit abgearbeitet werden. Es ist deshalb bei SPS-Applikationen sinnvoll, die Abarbeitungszeit regelmäßig mit einem Softwaretool zu prüfen. Ein Profiler für Codesys macht dies nun methodisch möglich.

Sponsored Content

SPS-Programme auf Maschinen oder Anlagen benötigen eine bestimmte Zeit, bis sie abgearbeitet sind. Stimmt diese Zeit mit dem dafür vorgesehenen Zyklus nicht überein, können Abarbeitungsfehler auftreten, die im schlimmsten Fall zu Produktionsausfall oder Schäden führen. Die Abarbeitungszeit zu messen, hilft solche Zeitüberschreitungen frühzeitig zu erkennen. Auch können bei bekannter Abarbeitungszeit die Applikationscodes so angepasst werden, dass die Zykluszeit nicht mehr überschritten wird. Im Gegensatz zu manuell durchgeführten Messungen kann mit einem geeigneten Werkzeug die Zeit auch methodisch geprüft werden. Solche Tools stehen nun auch Automatisierern zur Verfügung.

Auf Leistungsreserven abstimmen

Automatisierer können zwar sicherstellen, dass ein SPS-Programm in der eingestellten Zykluszeit abgearbeitet wird, in dem sie von vornherein Steuerungen mit überreichlicher Rechenleistung verwenden. Viel sinnvoller ist es jedoch, die Steuerung so zu dimensionieren, dass deren Leistungsreserven auf die Applikation abgestimmt sind. SPS-Programmiersysteme wie das IEC 61131-3-Tool Codesys bieten bereits standardmäßig Auswertungen für die erstellten Steuerungstasks an, so dass die minimale, maximale, durchschnittliche und letzte Ausführungszeit der verwendeten Tasks sowie deren Jitter ersichtlich sind. Stellt der SPS-Programmierer fest, dass sein Code die Grenze für die maximale Ausführungsdauer der Zykluszeit erreicht beziehungsweise überschreitet, benötigt er genauere Informationen, um diesen Zustand zu beheben. Letztlich wird er versuchen, sein SPS-Programm zu verbessern, um die Zykluszeit sicher einzuhalten. Aber welcher Programmbaustein benötigt am meisten Rechenzeit? Gibt es Funktionen, die für sich zwar relativ kurz sind, die aber so häufig aufgerufen werden, dass bereits kleine Veränderungen einen großen Effekt bringen? In welchem Zustand der Applikation wird die maximale Ausführungszeit erreicht? Wie hat sich die Abarbeitungszeit einzelner Bausteine während des Entwicklungsprozesses verändert? Wie genau verhält sich ein einzelner Programmbaustein in verschiedenen Zuständen? Die Antworten auf diese Fragen geben dem Applikationsentwickler wertvolle Hinweise, um seinen Code zu verbessern.

Laufzeitverhalten messen

Bisher blieb einem Entwickler keine andere Wahl, als sich mit Bordmitteln der SPS diese Informationen zu beschaffen. So konnte er zur Laufzeitmessung beziehungsweise -analyse der SPS-Applikation direkt im Quellcode einzelne oder mehrere Steuerungsausgänge beschalten und deren Zeitdifferenz mit einem geeigneten externen Messgerät ermitteln. In modernen Steuerungen ermöglichen integrierte Echtzeituhren mit hochgenauen Tick-Zählern eine interne Messung: So liefert zum Beispiel die Funktion LTIME() der aktuellen Codesys-Version dem Anwendungsprogrammierer einen Zeitstempel in einer Mikrosekunden-Auflösung. Misst er an mehreren Stellen, so kann er die Abarbeitung des Codes zwischen diesen Messpunkten sehr genau ermitteln. Dieses Verfahren ist insbesondere dann zielführend, wenn er bereits absehen kann, welche Bausteine die größte Relevanz für die Abarbeitungszeit haben.

Egal ob die Zeit extern per SPS-Ausgang oder intern über den Zeitstempel gemessen wird, beide Methoden haben den Nachteil, dass der Anwender manuell zusätzlichen Code nur für die Messung in das IEC 61131-3-Projekt instrumentieren, also in den eigentlichen Applikationscode einfügen muss. Führt er in einem Projekt Messungen an mehreren Stellen durch, dann hat er redundanten Zusatzcode an verschiedenen Stellen seiner SPS-Programmierung. Zum Entfernen dieses Zusatzcodes muss er alle relevanten Programmstellen wieder anfassen. Zwar bietet Codesys die Möglichkeit, bereits während der Instrumentierung solche Code-Stellen mit Pragmas zu markieren. Dennoch bleibt das Risiko, dass bei der Bereinigung neuerliche Fehler in die Applikation kommen. Durch gezielte Messung an ausgewählten Code-Stellen ist darüber hinaus nicht gewährleistet, dass die Anpassung wirklich an den effektivsten Stellen durchgeführt wurde.

Methodische Laufzeitanalyse

Die methodische Unterstützung des Engineering durch so genannte Profiler ist heute Stand der Technik bei der Entwicklung von IT-Software. Solche Zusatztools analysieren die Gesamtapplikation, indem sie alle Programmbausteine nach Kriterien wie Abarbeitungszeit und Aufrufhäufigkeit untersuchen. Im Gegensatz zu den oben erwähnten Messmethoden wird für das Profiling der Messcodes automatisch instrumentiert. Die Vorteile liegen auf der Hand:

  • Der zusätzliche Code zum Messen der Zeit wird nur während einer aktivierten Laufzeitanalyse im eigentlichen SPS-Programm ausgeführt.

  • Der Anwender aktiviert beziehungsweise deaktiviert die Messung lediglich – der Zusatzcode ist für ihn nicht sichtbar und er muss sich auch nicht um das Löschen kümmern.

  • Beim Profiling werden sämtliche Bausteine des SPS-Programms gemessen. Der Anwender erfasst sofort, welche Funktionen und Programmbausteine aufgrund der Aufrufhäufigkeit ein Verbesserungspotenzial aufweisen.

  • Der Profiler kann die unterschiedlichen Abarbeitungszeiten einzelner Bausteine zur Analyse der Abarbeitungszeit für verschiedene Betriebszustände aufzeichnen.

  • Messungen und deren Änderungen können über eine längere Entwicklungsphase verfolgt werden.

Profiling in Codesys

Bislang waren keine Profiler für den IEC 61131-3-Code verfügbar – der Codesys-Profiler schließt diese Lücke. Als Zusatztool im Codesys-Store angeboten, lässt sich dieser direkt von der Entwicklungsumgebung aus laden und installieren. Die gesamte Bedienung erfolgt über zwei zusätzliche Buttons in der Menüleiste: In einem einfachen Konfigurationsdialog kann der Anwender Parameter wie die zu messende SPS-Task, die Zeitbasis oder die Puffergröße für die Messung vorgeben. Ist das Profiling aktiviert, so lädt Codesys beim Einloggen auf die Steuerung den instrumentierten Messcode implizit zusammen mit der Applikation auf die Steuerung und führt ihn dort aus. Per Mausklick werden die Messergebnisse des längsten Zyklus seit der Ausführung beziehungsweise seit der letzten Messung aufbereitet und angezeigt. Die verschiedenen Darstellungen der Ergebnisse zeigen dem Anwender, welche Bausteine eine besonders lange Rechenzeit erfordern. Durch eine farbliche Kennung sieht er sofort, welche Bausteine genauer untersucht werden sollten. Mit diesem Hilfsmittel kann er bei Überschreitungen der Zykluszeit schnell die richtigen Informationen bekommen, um die Ursachen dafür herauszufinden.

Bildergalerie

  • Konfiguration des Codesys-Profiler zur Messung der maximalen Zykluszeit der SPS-Task

    Konfiguration des Codesys-Profiler zur Messung der maximalen Zykluszeit der SPS-Task

    Bild: 3S-Smart Software Solutions

  • 
  		Anzeige einzelner Profiling-Ergebnisse in unterschiedlichen Darstellungen

    Anzeige einzelner Profiling-Ergebnisse in unterschiedlichen Darstellungen

    Bild: 3S-Smart Software Solutions

Firmen zu diesem Artikel
Verwandte Artikel