# Benchmark für SPS



## KT82 (14 Mai 2009)

Hallo,

ich bin neu hier im Forum und hoffe, ihr könnt mir weiterhelfen.

Ich soll ein Benchmark-Programm schreiben, was die Geschwindigkeit der SPS testen soll. Mir fehlt nur bisher leider der Ansatz, wie ich das anstellen könnte. Was würdet ihr von einem Benchmark-Programm erwarten?

Ich habe mir auch schon das Benchmark-Beispiel von LibNoDave angeschaut. Dass da irgendwas ausgelesen wird und dabei die Zeit gemessen wird, dass habe ich schon verstanden. Aber könnte mir eventuell jemand erläutern, was da genau ausgelesen wird? Vermutlich irgendwelche Datenbausteine. Da ich mich mit den ganzen Mechanismen der SPS noch nicht so gut auskenne, begreife ich nicht so richtig, was da genau abläuft.

Ich hoffe, ihr könnt mir weiterhelfen und ein paar nützliche Tipps geben, wie ich an die Sache herangehen kann. Über ein paar Links würde ich mich auch freuen.

Vielen Dank schon mal im voraus.


Gruß KT82


----------



## Rainer Hönle (14 Mai 2009)

Was soll denn "gebenchmarkt" werden? DIe SPS? Die Zykluszeit der SPS? Die Bitverarbeitung? Die Wortverarbeitung? Die Arithmetik? Die Kommunikationsleistung?


----------



## KT82 (14 Mai 2009)

Vorerst die Kommunikationsleistung. Aber mein Programm soll später noch etwas erweitert werden.


----------



## Rainer Hönle (14 Mai 2009)

KT82 schrieb:


> Vorerst die Kommunikationsleistung. Aber mein Programm soll später noch etwas erweitert werden.


Die "Erweiterungen" sind aber eher innerlich zu testen, d.h. über das SPS-Programm. Von außen wird das nicht funktionieren.
Zum Thema Kommunikationsbenchmark: Wir liefern zu unserer Kommunikationsbibliothek ACCON-AGLink auch ein entsprechendes Beispiel mit. Diese macht folgendes: Es verbindet sich mit der SPS, prüft welche Datenbausteine alles vorhanden sind, sucht sich den längsten Datenbaustein aus und liest aus diesem in aufsteigenden Blockgrößen die Daten. Dabei werden mehrere Durchläufe pro Blockgröße durchgeführt und der Mittelwert gebildet. Dieses Beispiel wird im C-Quelltext mit ausgeliefert.
Damit können einfach verschieden Kommunikationswege, SPSen, Firmwarestände, Zykluszeiten und was sonst noch alles Einfluss auf den Datendurchsatz hat getestet werden.


----------



## KT82 (14 Mai 2009)

Danke für die schnelle Antwort. Jetzt weiß ich zumindest, was so ein Test beinhalten könnte.

Ich hätte allerdings noch ne Frage zu deinem Beipsiel. Ich müsste dann also immer irgendein AWL-Programm in der SPS am laufen haben? Oder anders gefragt, mit einer SPS, bei der nur die Hardware konfiguriert ist, würde das ganze nicht funktionieren bzw. das Testprogramm würde keine Datenbausteine finden.
Hoffentlich ist die Frage jetzt nicht all zu trivial.


----------



## Rainer Hönle (14 Mai 2009)

Es genügt das Vorhandensein von DBs, ein Programm muss nicht ablaufen. Allerdings ändert sich die Kommunikationsleistung bei manchen SPSen mit der Zykluszeit. Dieser Einfluss sollte bei einem Benchmark natürlich auch untersucht werden. Weitere EInflussmöglichkeiten stehen ja schon in meinem früheren Beitrag. Viel Spaß bei der fünfdimensionalen Tabelle


----------



## KT82 (14 Mai 2009)

Den Spaß werde ich haben. Danke nochmal für die Tipps.


----------



## RobiHerb (14 Mai 2009)

*Ziemlich fragwürdig*

Ich verstehe nicht, was das aussagen soll? Einige SPS antworten auf Datenanfragen genau einmal im Zyklus, die Hardware kann variieren von RS232 bis zum Giga Ethernet.

Die Seite des 2.Teilnehmers ist ebenfalls sehr Varianten reich, Power PC Chip im embedded System, Intel Atom mit Linux, Quad Core unter XP an der Grenze getacktet, eigener Controller zu Kommunikation ...

Wie will man bei so einem breiten Feld eine Aussage treffen 

Mal wieder eine theoretische Studienarbeit?


----------



## thomasrohner (18 Mai 2009)

Benchmark für SPS gibt es vorallem für die Verarbeitungszeit von zB 1000 Instruktionen. Ich würde mir eher mal ein "Standardprogramm" wünschen, welches zB mit einem Timer während 1s die Anzahl Durchläufe (Zyklen) zählt und wenn möglich auch die durchschnittliche Verarbeitungszeit dieser Task.

Mit einem normierten Testprogramm wäre es dann möglich die verschiedenen Hardwaren gegeneinander zu vergleichen. Die meisten Anwender wollen für die Applikation die Zykluszeiten wissen. Denn was interessiert mich eine Verarbeitungszeit im Microsekunden-Bereich, wenn ich nur alle 10ms ein Prozessabbild kriege?


----------



## KT82 (20 Mai 2009)

Hallo,

ich bin euch für jede Anregung dankbar. Zum letzten Vorschlag muss ich aber mal ganz doof nachfragen. Die Zykluszeit bzw. Anzahl der Zyklen kann ich nicht von "außen" feststellen, oder? So wie ich Rainer Hönle verstanden habe, muss ich das über ein SPS-Programm machen. Oder gibt es eine Möglichkeit das auch von meinem PC-Programm auszulesen. Habe ja gerade festgestellt, dass man über ne SZL doch einiges auslesen kann. Aber bei der Anzahl der Durchläufe wäre ich doch etwas skeptisch.

Gruß KT82


----------



## RobiHerb (20 Mai 2009)

*Zykluszeit*

Bei den CoDeSys Systemen kann man sehr detailliert auf die Zykluszeiten zugreifen, sogar der Jitter und die min und max Werte sind auslesbar.

Auch viele andere SPS kann man ohne weiteres auslesen, hier ein Screen Shot zur InterControl Digsy+ SPS in der Anlage.


----------



## KT82 (20 Mai 2009)

Oh, Danke für die Antwort. Da habe ich ja jetzt eine Sache mehr über die ich grübeln kann.


----------



## thomasrohner (20 Mai 2009)

KT82 schrieb:


> Hallo,
> 
> ich bin euch für jede Anregung dankbar. Zum letzten Vorschlag muss ich aber mal ganz doof nachfragen. Die Zykluszeit bzw. Anzahl der Zyklen kann ich nicht von "außen" feststellen, oder? So wie ich Rainer Hönle verstanden habe, muss ich das über ein SPS-Programm machen. Oder gibt es eine Möglichkeit das auch von meinem PC-Programm auszulesen. Habe ja gerade festgestellt, dass man über ne SZL doch einiges auslesen kann. Aber bei der Anzahl der Durchläufe wäre ich doch etwas skeptisch.
> 
> Gruß KT82


tja, ohne SPS-Programm kann man den Zyklus nicht feststellen. CoDeSys V2.3 stellt zB eine grafische Auswertung zur Verfügung, mit Ist, Min, Max und Jitter zum Sollwert, das funktioniert aber nur mit SPS-Programm im RUN. Ich verstehe aber die Abkürzung SZL leider nicht.


----------



## KT82 (20 Mai 2009)

Das Wort SZL kannte ich bis vor 2 Wochen auch noch nicht. Es bedeutet Systemzustandsliste. Das ist nach meinem Verständnis eine recht umfangreiche Liste, die in der SPS abgelegt ist. Über bestimmte SZL-IDs kann man dann entsprechende Daten abfragen. Mehr findest du im Siemens-Handbuch "*Systemsoftware für S7-300/400 System- und Standardfunktionen*" oder in "*Operationsliste S7-300  CPU 31xC, CPU 31x,  ..." *.

Ich hoffe als Newbie auch mal was richtig gewusst zu haben .


----------

