Programmierung von EtherCAT-I/O mit FPGA-Intelligenz

Inhalt

Echtzeitfähige Zielsysteme von NI lassen sich mit EtherCAT-basierten I/O erweitern und entwickeln, die über frei programmierbare Field-Programmable Gate Arrays (FGPAs) verfügen. Das modulare Slave-Chassis NI 9144 bietet eine intelligente I/O-Erweiterung für NI CompactRIO und andere Programmable Automation Controllers (PACs), die EtherCAT unterstützen. So können Slave-Chassis des Typs NI 9144 mit dem NI LabVIEW FPGA Module programmiert werden, so dass dem Anwender rekonfigurierbare verteilte Systeme zur Verfügung stehen, die sich auch für anwenderdefiniertes Timing und Inline-Verarbeitung eignen.

Wozu deterministische verteilte I/O?

Verteilte I/O-Erweiterungen werden oft notwendig, wenn ein Echtzeitsystem mit hoher Kanalanzahl oder über größere Distanzen hinweg entwickelt wird. Sie ermöglichen es dem Anwender, dezentrale Messungen zu ergänzen oder die Originalanwendung zu erweitern. Allerdings ist es sehr aufwändig und kompliziert, eine eigene Synchronisationsarchitektur für die Wahrung des Determinismus eines solchen Steuer- und Regelsystems zu entwickeln. Moderne echtzeitfähige Kommunikationsprotokolle auf EtherNet-Basis wie EtherNet/IP, EtherCAT und PROFINET können diese Anwendungen vereinfachen. Diese sogenannten Industrial-Ethernet-Protokolle erlauben dem Anwender, die echtzeitfähige Controller-Einheit über ein deterministisches Netzwerk mit den dezentralen I/O zu verbinden.

Slave-Chassis NI 9144 für EtherCAT

Das Erweiterungschassis NI 9144 fügt NI-CompactRIO-, PXI- oder Systemen mit industriellen Controllern I/O auf EtherCAT-Basis hinzu. Dieses robuste Chassis mit acht Steckplätzen für Module der C-Serie überträgt Daten deterministisch über das offene Echtzeit-Ethernet-Protokoll EtherCAT. Vom EtherCAT-Master-Controller aus können mehrere NI-9144-Slave-Chassis hintereinander in Reihe geschaltet werden, um die zeitkritische Anwendung zu erweitern. Die Softwarekonfiguration und die einfache Programmierung über NI LabVIEW sorgen zudem für ein einfaches Hinzufügen echtzeitfähiger EtherCAT-basierter I/O.

 

Abb. 1: Typisches EtherCAT-System mit NI-Master-Controllern und verteilten Slaves

Wozu intelligente FPGA-Funktionen?

Das Slave-Chassis NI 9144 kann sowohl mit dem LabVIEW Real-Time Module als auch mit dem LabVIEW FPGA Module programmiert werden. Die Programmierung im NI Scan Mode mit LabVIEW Real-Time ermöglicht eine zügige und einfache Inbetriebnahme der I/O-Erweiterung. Der NI Scan Mode verleiht dem Anwender direkten Zugang zu den physikalischen I/O-Werten auf den EtherCAT-Slaves über einfache Drag-and-drop-Variablen sowie auf Live-Prüfpanel für die Überwachung der Systemleistung und erweiterte Fehlerbehebung. Wozu sollten also I/O-Erweiterungen auf EtherCAT-Basis überhaupt um intelligente FPGA-Funktionen ergänzt werden?

Die Programmierung des NI-9144-Slaves im FPGA-Modus bereitet den Weg für eine neue Ebene der Benutzerdefinierbarkeit und Flexibilität Ihrer Anwendungen. Werden Funktionen zur Entscheidungsfindung unmittelbar in das Slave-Chassis eingebettet, reduziert sich die Antwortzeit, da ohne Eingreifen des Hosts schnell auf die Umgebung reagiert werden kann. Das intelligente System kann ferner die Verarbeitungslast des Masters reduzieren und selbst Inline-Analysen, anwenderdefinierte Triggerung und Signalmanipulation am Knoten durchführen. Außerdem ermöglicht LabVIEW FPGA Fachexperten die schnelle Prototypenerstellung und Implementierung ihrer Ideen auch ohne Kenntnisse der VHDL-Programmierung.

Die Programmier-API von LabVIEW FPGA

Anwender, die mit der Programmierung von CompactRIO und anderen rekonfigurierbaren I/O-Plattformen von NI vertraut sind, werden Unterschiede zwischen der Programmierung des lokalen FPGA und der I/O-Erweiterung feststellen. Mit LabVIEW 2009 führte NI die anwenderdefinierten I/O-Variablen ein, um die FPGA-Daten des Slaves mit der Echtzeitverarbeitung des Masters zu synchronisieren. Die anwenderdefinierten I/O-Variablen sind auch die einzige Möglichkeit, Daten zwischen dem Echtzeitprogramm des Controllers und dem FPGA-Programm des Erweiterungschassis zu übertragen.

Tabelle 1: Lokale FPGA-Übertragungsmethoden im Vergleich zum Erweiterungschassis

Nachdem das FPGA-Zielsystem im LabVIEW-Projektfenster dem Slave NI 9144 hinzugefügt wurde, kann durch einen Klick mit der rechten Maustaste auf das NI 9144 und der Auswahl von Hinzufügen»Anwenderdefinierte Variable eine solche Variable erstellt werden. Hier können Namen der Variable, Datentyp und Datenrichtung (vom Host zum FPGA oder umgekehrt) im Fenster Eigenschaften eingestellt werden. Man sollte allerdings wissen, dass im FPGA-Modus des Slaves nur eine begrenzte Anzahl anwenderdefinierter I/O-Variablen erstellt werden können. NI 9144 stellt jeweils 512 Bytes für Eingangs- und 512 Bytes für Ausgangsdaten beider I/O-Variablen im Scan Mode sowie für anwenderdefinierte I/O-Variablen im FPGA Mode bereit. Werden beispielsweise vier 32-kanalige Module im Scan Mode genutzt und jeder Kanal benötigt 32 bit an Daten, dann beanspruchen die I/O-Variablen des Scan Mode insgesamt 256 Bytes an Eingangsdaten. Mit den verbleibenden 256 Bytes Eingangsdaten können bis zu 64 anwenderdefinierte Eingangs-I/O-Variablen (ebenfalls zu je 32 bit) im FGPA Mode erstellt werden.

 

Abb. 2: Erstellung anwenderdefinierter I/O-Variablen zur Kommunikation zwischen dem Echtzeitcode des Masters und dem FPGA-Code des Slaves

Besondere Funktionen und Anwendungsfälle von FPGAs

Diese anwenderdefinierten I/O-Variablen übertragen bei jedem Scan-Zyklus Einzelpunktdaten vom und zum Master-Controller, so dass sie am besten für die Übertragung von verarbeiteten Daten vom FPGA des NI 9144 eingesetzt werden. So wurden etwa bei der Keynote zur NIWeek 2009 mit sechs intelligenten Slave-Chassis mehrere Glocken angesteuert, die zusammen eine Melodie spielten. Der Echtzeitcode des Masters steuerte das Timing, bestimmte also, wann welche Glocke geläutet werden sollte. Der FGPA am Slave-Chassis zeichnete die Audiosignale über ein Mikrofon auf und führte eine Fast-Fourier-Transformation durch, um die Klangintensität für eine bestimmte Glockenfrequenz zu bestimmen. Der Slave-FPGA bedient sich anschließend der Pulsweitenmodulation (PWM), um die Helligkeit einer Reihe von LEDs zu steuern, die der Lautstärke der Glocken entspricht. Auch wenn das Echtzeitprogramm des Masters gestoppt ist, würden diese LEDs aufgrund der FPGA-Logik auf dem NI 9144 auch auf andere Geräusche im entsprechenden Frequenzbereich reagieren.

 

Abb. 3: Dieser NI-9144-FPGA-Code kam in einer Demo während der NIWeek 2009 zum Einsatz und steuerte mehrere Glocken an, die zusammen eine Melodie spielen.

Neben der Verwendung der LabVIEW-FPGA-Algorithmusfunktionen bietet das Slave-Chassis mehrere Chassis-I/O-Signale, um Anwender bei der Anpassung und Synchronisation des Codes zu unterstützen. Mit der Eigenschaft EtherCAT State kann z. B. bestimmte FPGA-Logik während einem der sieben EtherCAT-Zustände ausgeführt werden. Wenn etwa die Kommunikation mit dem Master-Controller abbricht, begibt sich deshalb das NI-9144-Chassis in den sicheren Betriebszustand "Safe-Operational" und der FPGA-Code kann das zu diesem Zustand passende Verhalten spezifizieren. Weitere nützliche Signale sind der virtuelle Punkt für die Ausgabe der Werte (Output Virtual Point) und der virtuelle Punkt für die Erfassung (Input Virtual Point). Diese beiden Timing-Signale geben genau an, wann jeder Slave seine Ausgangs- und Eingangswerte während jeder Scan-Periode aktualisiert. So können die steigenden Flanken für die chassisübergreifende Synchronisation der FPGA-Codes mehrerer NI 9144 genutzt werden. LabVIEW-Beispiele sind im Treiber NI-Industrial Communications for EtherCAT enthalten. Sie zeigen mehrere anspruchsvolle FPGA-Funktionen, wie etwa die Synchronisation der NI Scan Engine, spezielle digitale Signale sowie asynchrones Oversampling.

 

Abb. 4: FPGA-Code für EtherCAT-I/O können mit Timing-Signalen für virtuelle Punkte synchronisiert werden.

 

Fazit

Deterministische verteilte I/O wie das EtherCAT-Chassis NI 9144 sorgen für exaktes Timing und die nahtlose Synchronisation, die für Echtzeitanwendungen gebraucht werden. Außerdem ermöglicht die Ergänzung der EtherCAT-Slaves um anwenderdefinierten FPGA-Code auf Hardwareebene die Auslagerung der Signalverarbeitungsleistung vom Controller auf das dezentrale System. Reaktionszeiten werden damit verkürzt, da intelligente Entscheidungsfindung direkt am Knoten stattfindet.

Weiterführende Link:
NI Real-Time Distributed Control System