Während einer einzelnen Scan-Schleife oder eines Zyklus muss die Übertragung des EtherCAT-Pakets oder der I/O-Scan zwischen dem Master-Controller und dem NI 9144 Slave-Chassis synchronisiert werden. Während des I/O-Scans sendet der Master ein Paket mit neuen Ausgängen und Anweisungen für die Slaves aus, und die Slaves senden das Paket mit neuen Eingangswerten für den Master zurück. Mit den aktualisierten Daten aus dem EtherCAT-Paket startet der Master den Programmscan und die NI 9144 Chassis beginnen mit der Aktualisierung der Slaves. Der Programmscan beschreibt die Zeit, die der Master benötigt, um Daten zu verarbeiten und das LabVIEW-Programm auszuführen. Die Slave-Aktualisierung ist die Zeit, die der Slave für DMA-Übertragungen, Datenverarbeitung und I/O-Aktualisierung verwendet. Daher wird die minimale Schleifenrate entweder durch den Programm-Scan oder die Slave-Aktualisierung begrenzt, je nach dem welche von beiden mehr Zeit benötigt.
Abbildung 4: Scan-Timing-Diagramm
Die Programmabfragezeit steigt mit der Anzahl der Slaves und I/O im Netzwerk, da der Master-Controller mehr Daten zu verarbeiten hat. Die Aktualisierungszeit der Slaves erhöht sich jedoch nicht, da die Slaves ihre I/Os gleichzeitig und parallel aktualisieren. Je mehr Slave I/O im Netzwerk vorhanden sind, desto wahrscheinlicher ist es, dass die Programmabfrage des Masters zum Nadelöhr wird. Wenn Ihre Anwendung eine hohe Anzahl von I/O-Kanälen erfordert, sollten Sie einen Hochleistungscontroller wie PXI für den Master verwenden.
Abbildung 5: CompactRIO- und PXI-Systeme mit NI 9144-Chassis
Benchmarks des Master-Controllers
Der standardmäßige LabVIEW-Programmiermodus für den Master-Controller besteht darin, die NI Scan Engine auszuführen. Dabei handelt es sich um eine Komponente von LabVIEW Real-Time, die Einzelpunkt-I/O-Werte mit einer vom Benutzer festgelegten Rate in den Speicher scannt. Für die Zwecke der Master-Controller-Benchmarks wird die für das Ausführen des Programmcodes des Benutzers benötigte Zeit nicht berechnet. Die verbleibende Master-Benchmark-Komponente ist daher die Treibergeschwindigkeit, welche die Zeit beinhaltet, die der Controller benötigt, um Daten zwischen der NI Scan Engine Memory Map und der I/O-Variablen zu übertragen. I/O-Variablen werden verwendet, um auf Daten aus der NI Scan Engine Memory Map zuzugreifen. Jede Instanz eines I/O-Variablenknotens in einem LabVIEW VI benötigt Zeit für die Ausführung. Die durchschnittliche Ausführungszeit jedes I/O-Variablenknotens bleibt in der Regel konstant, auch wenn die Knotenanzahl im Blockdiagramm steigt. Das Diagramm in Abbildung 6 zeigt diese Ausführungszeit für bestimmte Master-Controller. Basierend auf diesen Daten beträgt die durchschnittliche Ausführungszeit pro I/O-Variablenknoten ca. 8 µs für das integrierte System NI cRIO-9074, 3,5 µs für den Embedded-Real-Time-Controller NI cRIO-9022 und 0,3 µs für den Dual-Core-Embedded-Controller NI PXI-8106.
Abbildung 6: Durchschnittliche Ausführungszeit je I/O-Variablenknoten
Hinweis: Dies ist keine umfassende Liste aller kompatiblen NI-Controller. Weitere Informationen erhalten Sie in der Auswahlhilfe für deterministische Ethernet-Produkte. Im Allgemeinen gilt: Je leistungsfähiger der Prozessor, desto schneller die Ausführung der I/O-Variablen.
Benchmarks für Slave-Geräte
Kunden fragen oft nach der maximalen Anzahl von NI 9144 Chassis, die sie vom Master-Controller aus in einer Daisy Chain aneinanderreihen können. Theoretisch sieht das EtherCAT-Protokoll vor, dass die maximale Anzahl von Slaves in einem Netzwerk 65.535 Geräte beträgt. Wenn jedoch so viele Geräte von einem Master-Controller gesteuert werden, verlangsamt sich die Scan-Rate beträchtlich, und es ist wahrscheinlich am besten, stattdessen mehrere Master zu verwenden. In Wirklichkeit hat die Anzahl der I/O-Kanäle, nicht die Anzahl der Slave-Geräte, mehr Einfluss auf die Systemabtastrate von Seiten des Masters. Wie in Abbildung 4 zu sehen ist, erhöht sich die Programmabfrage des Masters, wenn mehr Daten über das EtherCAT-Netzwerk übertragen werden, und überlagert in der Regel die Aktualisierungszeit des Slaves. Daher haben 300 I/O-Kanäle, die auf zwei oder 20 NI 9144 Chassis verteilt sind, trotz des zusätzlichen Aufwands für jedes Slave-Gerät ungefähr die gleiche Systemschleifenrate.
Kombinierte Systemschleifenrate
In Tabelle 1 sind die Benchmarks für den Master-Controller und den NI 9144 zusammengefasst, um die minimale Zykluszeit bzw. die Systemschleifenrate zu ermitteln.
Mindestzykluszeit = Treiber + EtherCAT-Netzwerk + I/O-Updates
Beachten Sie, dass diese Benchmarks nicht die Zeit berücksichtigen, die der Programmcode des Benutzers zum Ausführen benötigt. Fügen Sie also die entsprechende Zeit für den Programmcode hinzu und lesen Sie die zugehörigen Links unten um weitere Informationen zu erhalten.
Tabelle 1: Systemschleifenraten
Auf der Grundlage der Tests für diese beiden Controller und vier verschiedene I/O-Module ist am Ende dieses Whitepapers eine Tabelle zum Benchmarking mit der Bezeichnung system_loop_rate_chart2.xls angehängt, mit deren Hilfe Sie die Systemschleifenrate für Ihre Konfiguration näherungsweise bestimmen können. Geben Sie einfach die Anzahl der von Ihnen verwendeten analogen und digitalen I/O-Kanäle sowie die ungefähre Zeit für das Ausführen des LabVIEW Programmcodes zur Berechnung der Systemschleifenrate ein. Beachten Sie, dass diese Formeln auf einer bestimmten Hardwarekonfiguration beruhen und die Ergebnisse bei Verwendung anderer I/O-Module abweichen können.