Beispiel FoE – Datendurchsatz
Im Folgenden ist ein Beispiel für eine FoE-Durchsatzermittlung durch eine EL6695 gegeben. Die Werte sind als exemplarisch für diesen Aufbau und als grobe Richtwerte zu verstehen. Der in der jeweiligen Applikation real erreichbare Durchsatz ist im Bedarfsfall anwenderseitig zu ermitteln.
Das dazu verwendete TwinCAT-Programm ist nicht Bestandteil dieser Dokumentation, es basiert auf dem angegebenen FoE-Beispielprogramm.
Der Datendurchsatz wird als Quotient von Datenmenge durch den dafür benötigten Zeitbedarf definiert (Datenmenge pro Zeit). Mit den bereits beschriebenen FoE-Zugriffsbausteinen wird eine gegebene Datenmenge in die EL6695 geschrieben bzw. von ihr gelesen. Die EL6695 ist dafür ausgelegt, Kommunikation zwischen zwei unterschiedliche TwinCAT‑Systeme herzustellen. Es ist mit der Klemme aber auch möglich, eine Verbindung der Primär- und Sekundärseite innerhalb eines TwinCAT‑Systems aufzubauen indem Beispielsweise die Verbindung ihrer Sekundärseite über X1 vom Ausgang X2 des Kopplers EK1100 ausgeht. Dann liegen ebenfalls zwei unabhängige EtherCAT‑Stränge in einem TwinCAT‑System vor (vgl. hierzu Beispiel - Konfiguration).
Die Zeitmessung erfolgte indirekt über die Anzahl der benötigten Taskzyklen für jeden komplett durchgeführten Lesezugriff (d.h. Anzahl geschriebener Bytes ist gleich Anzahl gelesener Bytes) über den FB_EcFoeAccess Baustein (siehe hierzu Erläuterungen zum Programmbeispiel). Das PDO „DataBytesPending“ der zu lesenden Seite der Klemme ist >0 falls Daten anstehen und kennzeichnet den Beginn des Lesezugriffs. Das Ende des Lesezugriffs ist aus der bekannten geschriebenen Datenmenge ermittelt worden (bei zwei unabhängigen Systemen muss die Dateigröße bekannt sein).
Bei 1 ms Taskzykluszeit ergibt sich für die Berechnung des Datendurchsatzes einfach:
{Datenmenge [Bytes]} / {Anzahl Taskzyklen} = Durchsatz in [kB/s]
Ablauf der Messung
- die Testumgebung ermittelt die Anzahl der von der Klemme benötigten Taskzyklen für einen Lesezugriff. Es wurde wiederholend ein in die Klemme geschriebener Datensatz unterschiedlicher Größe mit unterschiedlichen Datenpaketgrößen komplett wieder ausgelesen. Dabei wurde jeweils die Anzahl der Taskzyklen für die einzelnen Lesezugriffe gezählt.
- Es wurde ebenfalls der FoE-Durchsatz des Testprogramms ohne die zwischengeschaltene EL6695 ermittelt. Damit ergibt sich der „virtuelle“ Zeitbedarf des Testprogramms.
- die tatsächlichen von der Klemme benötigte Anzahl Taskzyklen (und damit der Datendurchsatz) ergibt sich sodann aus der Differenz der benötigten „realen“ Taskzyklen (mit EL6695) und den virtuellen Taskzyklen.
- Der gesamte Durchsatztest umfasst mehrere 1000 Einzeltest mit unterschiedlichen Datenmengen und Datenpaketgrößen.
Konfiguration im Beispiel:
- C6015 + EK1100 + EL6695 (Primärseite) + EL9011
- EK1100 + EL6695-0002 (Sekundärseite)
Eckdaten des Beispiels:
- Taskzykluszeit 1 ms
- Der Testdurchlauf umfasste alle FoE- und Paketgrößen. Da sich der Durchsatz außerhalb festgestellter Eckbereiche nicht mehr wesentlich ändert, wurden für die komprimierte grafische Darstellung im Folgenden folgende Grenzen gewählt:
- Per FoE übertragene Datenmenge (FoE-Dateigröße): von 1167 bis 32767 Bytes in 50 Schritten zu je 632 Bytes pro Schritt
- Datenpakete (also Pakete in die die FoE-Datei aufgeteilt wird): von 30 bis 470 Bytes in 40 Schritten zu je 11 Bytes pro Schritt
Ergebnis:
Datenpaketgröße (Schrittweise inkrementiert) = X-Achse
Datenmenge (Schrittweise inkrementiert) = Y-Achse
Anzahl benötigter Taskzyklen = Z-Achse; entspricht Z(X, Y)
Hierin enthalten sind jedoch auch die systembedingten virtuellen Werte aufgrund des sequenziellen Datenzugriffs (s.o.). Werden diese entsprechend ebenfalls aufgezeichnet und für jeden Testpunkt X/Y von den einzelnen Werten der Z-Achse subtrahiert, so ergibt sich ein quasi linearer Diagrammverlauf, welcher keine Abhängigkeit von der Datenpaketgröße mehr hat:
In der linearen Näherung ergibt dieses FoE-Beispiel einen Durchsatz von rund 171 kB/s.