Steuerungen
Der Benchmark-Test der PLCopen
Die PLCopen hat mit ihren Mitgliedern vor geraumer Zeit eine Taskforce für Benchmarking gestartet. Ziel ist, eine standardisierte Methode zu entwickeln, die auf der Grundlage definierter Test-Szenarios auf objektive Weise realistische, nachvollziehbare und damit vergleichbare Leistungswerte für die unterschiedlichen Steuerungsplattformen liefert. Jetzt liegen erste verwertbare Ergebnisse vor.
Für SPS- und Steuerungssysteme existiert bis dato noch kein Standard-Benchmark. Der momentan genutzte kleinste gemeinsame Nenner für die Messung der Prozessorleistung ist die Geschwindigkeitsmessung von 1000 (Boolean) Operationen. Leider ist das Resultat dieses Benchmarks nicht aussagekräftig, weil es keiner tatsächlich eingesetzten Operation auch nur ansatzweise nahe kommt. Weder lässt sich daraus die tatsächliche Leistung der SPS in einem realen Applikationsbeispiel ableiten, noch ist dieser Test selbst irgendwie standardisiert. Die Nutzung eines solchen „Benchmarks“ zum Vergleich von Systemen ist nicht nur fraglich, sondern höchst unangemessen.
Grundsätzlich gibt es zwei Hauptziele, wofür ein Benchmarking von Steuerungen sinnvoll sein kann:
1.Um die Leistungsfähigkeit beziehungsweise Eignung einer SPS für eine bestimmte Applikation einschätzen zu können sowie
2.um die Leistung einer SPS mit einer anderen SPS vergleichen zu können und die spezifischen Stärken und Schwächen der verglichenen Systeme zu identifizieren (Systemauswahl).
Der Startschuss für das Benchmark-Projekt fiel bereits im Jahr 2005 mit der Erarbeitung einer technischen Spezifikation zur Umsetzung dieser Ziele. Ende 2007 wurde klar, dass die bis dahin entwickelten Test-Skripte zu spezifisch waren, als dass sich damit unterschiedlichste Entwicklungsumgebungen einfach unterstützen ließen. Dies resultierte schließlich in der Entscheidung, auf der Basis eines Testskript-Generators universell verwendbare Testskript-Fragmente zu entwickeln, diese auf unterschiedliche Systeme zu adaptieren und schließlich zu testen. Seit März dieses Jahres liegt nun eine neue Version der Benchmark-Spezifikation vor. Der PLCopen-Benchmark setzt direkt auf der Steuerung (SPS) auf und nutzt nur das Prozessabbild ohne tatsächliche Einbeziehung von I/O. In realen Applikationen werden selbstverständlich Sensoren und Aktoren eingebunden. Die Messung der Sensor- und Aktor-Zugriffsgeschwindigkeit ist jedoch nicht Ziel des Projektes. Vielmehr ist das Benchmarking von klassischen Feldbussen, ethernetbasierten Kommunikationssystemen oder direkter I/O-Anschaltung nicht zuletzt aufgrund der hohen Freiheitsgrade der Parameter aus Sicht der PLCopen-Benchmark-Arbeitsgruppe bei den Nutzerorganisationen der einzelnen Kommunikationssysteme angesiedelt.
Nutznießer des PLCopen-Benchmarks sind letztlich Hersteller und Anwender gleichermaßen.
SPS-und Software-Hersteller können damit hausinterne Tests zur Kategorisierung der Leistung ihrer unterschiedlichen Controller beziehungsweise hinsichtlich der Performance und Qualität unterschiedlicher Code-Generatoren durchführen. Zudem können sie auf dieser Basis Tests für ihre Kunden zur standardisierten Vergleichbarkeit mit Mitbewerbsprodukten generieren. Den Maschinenherstellern ermöglicht der Benchmark das Ermitteln vergleichbarer und geeigneter Systeme für eine Anwendung, um die Endanwenderwünsche nach Systemunabhängigkeit erfüllen zu können. Zudem erleichtert das Ermitteln der nötigen SPS-Leistung für eine spezielle Applikation die anschließende Systemauswahl.
Die zwei Benchmark-Typen
Der PLCopen-Benchmarks misst die Performance der Programmausführung im Prozessabbild ohne Anbindung von E/A-Geräten.
© PLCopenUm die genannten Ziele umzusetzen, hat der PLCopen-Arbeitskreis zwei unterschiedliche Test-Typen definiert: zum einen Benchmarks für einzelne Sprachelemente der IEC 61131-3, zum anderen realitätsnahe Anwendungs-Benchmarks. Erstere messen die Performance der Ausführung der einzelnen Sprachelemente der IEC 61131-3 getrennt. Die zu testenden IEC-Elemente sind:
■ Bool-Operationen
■ Word-Operationen
■ Int-Operationen
■ Real-Operationen
■ String-Operationen
■ Verwendung benutzerdefinierter Datentypen (Array-Zugriffe, Verwendung von Strukturen)
■ Variablen-Zugriff (getrennte Messungen für VAR, VAR_Global, VAR_IN_OUT, AT, VAR_Config)
■ Control-Statements (If, For, Case, While)
■ POU-Call (Functions and Function Blocks)
■ SFC (Init Step, Transaction, Actions, Branches)
■ Standard-Library (Timer, Trigger, Counter)
■ Mathematical-Library (SIN, EXP etc.)
Diese Tests sind zwar einfach durchzuführen, für den Anwender jedoch meist nicht aussagekräftig. Zudem erlauben sie keinen ganzheitlichen Vergleich zwischen Systemen unterschiedlicher Machart. Ergänzend hierzu wurden deshalb fünf unterschiedliche Applikationsgebiete identifiziert, welche typisch für die Anwendung von SPSen sind. Die meisten realen Applikationen fallen in eine dieser Anwendungsklassen oder sind eine Mischung aus mehreren dieser Klassen. Konkret handelt es sich dabei um:
■ Verarbeitung von digitalen E/As – typische Anwendung: kleine Maschinen ohne Servo-Antriebe;
■ Einsatz von SFC und Bearbeitung von digitalen I/Os in jedem Schritt – typische Anwendung: Montagesteuerung;
■ Motion-Control-Applikation – typische Anwendung: Verpackungsmaschinen und Druckmaschinen;
■ Datenverarbeitung – typische Anwendung: Material-Handling, Teile-Tracking;
■ Closed loop control – typische Anwendung: Prozess- und Verfahrenstechnik.
Die Grundidee der PLCopen-Arbeitsgruppe war, für jede dieser Anwendungen eine typische Benchmark zu definieren und die Testanwendungen dafür zu spezifizieren. In der ersten nun freigegebenen Version ist nur der erste Anwendungsfall (Verarbeitung von digitalen I/Os) vollständig und portabel umgesetzt. Die Arbeit an den weiteren Anwendungstests wird nach Freigabe der ersten Version starten.
Die Anwendungstests erlauben im Gegensatz zum Benchmarking der einzelnen Operationen eine gesamtheitliche Beurteilung der Leistung eines Systems. Die Tests der einzelnen Operationen erlauben hingegen die gezielte Identifikation von Stärken oder Schwächen eines Systems. System- und Compiler-Hersteller finden mit Hilfe dieser Tests Optimierungspotenzial. Anwender können diese Tests dafür nutzen, die Anwendungstests entsprechend der eigenen Anwendungen zu „gewichten“.
Die „Nebenschauplätze“
Aufgrund der PLCopen-Testspezifikation werden mittels eines Generators reproduzierbare und vergleichbare Testskripts für die einzelnen Steuerungen (Controller under Test, CUT) erstellt. Diese sind Grundlage für vergleichbare Testresultate.
© PLCopenNeben den primären Zielen der Benchmarks – und zwar die Bestimmbarkeit von Leistungsdaten und Vergleichbarkeit von SPSen – hat die PLCopen-Arbeitsgruppe weitere Ziele verfolgt: Portabilität der Tests (Portierbarkeit, Anpassbarkeit und Einfachheit der Implementierung), Skalierbarkeit der Tests, Verhindern gezielter Optimierungen sowie Nachvollziehbarkeit der Test-Ergebnisse.
Der Portabilität und Einfachheit in der Implementierung wurde dabei vor allem dadurch Rechnung getragen, dass als Implementierungssprache Strukturierter Text (ST) zum Einsatz kommt. Trotz der Eindeutigkeit der Sprachdefinition wurden die Testprogramme in dem Bewusstsein erstellt, dass keine zwei ST-Implementierungen unterschiedlicher Hersteller zu 100 % kompatibel sind. Um hier eine einfache Anpassung an unterschiedliche Systeme zu erlauben, sind alle Tests aus einfachen Bausteinen („Testskript-Fragmenten“) aufgebaut. Diese Bausteine werden als Input für einen Testskript-Generator verwendet, welcher aus den Testskript-Fragmenten und einer einfachen Parametrierung fertige Testskripte generiert. Durch diese Vorgehensweise reduziert sich der Aufwand für eine Anpassung/Portierung auf die Anpassung der vordefinierten Testskript-Fragmente. Die vollständigen Testskripts werden dann für das gewählte System automatisiert generiert.
Auch die Forderung nach Skalierbarkeit lässt sich durch den Einsatz eines frei parametrierbaren Testskript-Generators umsetzen. Soll eine Anpassung an eine höhere Leistungsklasse von SPSen durchgeführt werden, wird einfach der Parametersatz für den Testskript-Generator verändert und der Umfang der Testskripte steigt dadurch an. Der Testskript-Generator selbst generiert die Testskripte durch quasi zufälliges Aneinanderreihen der Testskript-Fragmente in der gewünschten „Leistungsklasse“ des Tests – also im gewünschten Ausmaß (Anzahl an Wiederholungen pro Testskript-Fragment). Ein besonderes Augenmerk legten die Entwickler des Benchmarks darauf, dass die Ergebnisse reproduzierbar sind, sprich ein mit gleichen Parametersätzen und gleicher Initialisierung versehener Testskript-Generator immer dieselben Ergebnisse liefert. Analog verhält es sich mit den für die Operationen verwendeten Operanden beziehungsweise Variablenwerten, deren Ermittlung durch denselben reproduzierbaren Zufalls(zahlen)generator erfolgt.
Das Benchmarking-Logo – die fünf Zeiger der Uhr repräsentieren die fünf Benchmarking-Applikationsgebiete und damit die fünf Werte, die es geben wird.
© PLCopenDie quasi zufällige Aneinanderreihung der Testskript-Fragmente und die ebenso zufälligen verwendeten Operanden sowie Variablen-Initialisierungen beugen gezielt auch speziellen „Optimierungen“ für die PLCopen-Benchmarking-Testsuite vor. Unterschiedliche Reihenfolgen der Operationen in den unterschiedlichen Tests machen eine speziell für den Benchmark optimierte Abarbeitung unmöglich. Optimierungen von Compilern/Interpretern werden jedoch selbstverständlich mitgetestet, da die Testskripte realen Anwendungen sehr nahe kommen.
Der Testskript-Generator selbst sowie die Testskript-Fragmente und Parametersätze stehen den Mitgliedern der PLCopen zur Verfügung, sodass damit jederzeit die für eine SPS angepasste Benchmarking-Testsuite erstellbar ist. Diese wird dann in die Programmier-Umgebung eingelesen und für die zu testende Steuerung compiliert. Der ausführbare Code wird in die Steuerung geladen und entweder mit einem Oszilloskop oder geeigneten SPS-Timern auf die Real-Laufzeit getestet.
Obwohl die Spezifikation auf der PLCopen-Website (http://www.plcopen.org/) offen zur Verfügung steht, sind die Testfragmente anfangs nur für die Mitglieder des Arbeitskreises (und damit für deren Kunden) verfügbar. In dieser Testphase von etwa einem Jahr kann jede der beteiligten Firmen intern die ersten Tests durchführen und mögliche Fehlerquellen lassen sich gemeinsam beheben. Außerdem gibt dieses Vorgehen dem Arbeitskreis Zeit, um die bis jetzt noch nicht implementierten Anwendungsfälle einzuarbeiten. Die Zusammenarbeit mit den unterschiedlichen Netzwerkorganisationen ist hierbei gewünscht, um auch den E/A-Bereich einzuschließen.
Autoren: Thomas Baier arbeitet im Bereich Strategisches Produktmanagement und Systemarchitektur bei der Firma logi.cals.
Eelco van der Wal ist Managing Director der PLCopen.













