EtherCAT-Slave-Stack auf Raspberry Pi 4 mit EasyCAT HAT
Einführung
Das Raspberry Pi 4 kann als EtherCAT-Slave-Gerät verwendet werden, wenn er mit der EasyCAT HAT-Zusatzkarte kombiniert wird. Der folgende Leitfaden bietet einen umfassenden Durchgang durch den Implementierungsprozess.
Hardware Beschreibung
In diesem Leitfaden werden die folgenden Hardwarekomponenten verwendet:
Das Compute Module wird an den dafür vorgesehenen Platz auf dem IO-Board gesteckt. Als nächstes wird der EasyCAT HAT in die Stiftleiste des IO-Boards gesteckt, wobei die RJ45-Ports über den HDMI-Ports des IO-Boards positioniert werden. Der "IN"-RJ45-Port des EasyCAT HAT wird über ein Ethernet-Kabel mit dem Entwicklungs-PC verbunden (gelb dargestellt). Der Ethernet-Port des IO-Boards wird für die SSH-Verbindung mit einem Ethernet-Kabel (grau dargestellt) an das lokale Netzwerk angeschlossen.
EasyCAT HAT Konfiguration
Zuerst muss die Geräteemulation auf dem EasyCAT HAT ausgeschaltet werden. Dies muss in das EEPROM des EasyCAT HAT geschrieben werden. Setzen Sie Bit 0 des ESC-Konfigurationsregisters oder Bit 8 des PDI-Steuerregisters auf 0. Beide Bits funktionieren, da sie sich auf das gleiche Bit beziehen. Weitere Informationen zu diesem Schritt finden Sie im Datenblatt für den LAN9252.
In dieser Anleitung wird das acontis EtherCAT Netzwerk-Konfigurationswerkzeug, bekannt als EC-Engineer, verwendet, um Daten in das EEPROM des EasyCAT HAT zu schreiben. Öffnen Sie EC-Engineer und verbinden Sie sich mit dem Slave-Gerät. Es erscheint eine Fehlermeldung, dass keine ESI gefunden wurde. Ignorieren Sie diese Fehlermeldung und gehen Sie in den Diagnosemodus. Wählen Sie den Slave im Gerätebaum aus und wählen Sie dann die Registerkarte EEPROM im Geräte-Editor-Fenster. Suchen Sie das Register mit dem Namen "PDI Control" und ändern Sie den Wert so, dass Bit 8 eine 0 ist. In unserem Fall ist der neue Wert 0x0280h (0010 1000 0000b).
Slave Stack Code Tool
Laden Sie das Slave Stack Code (SSC) Tool herunter und installieren Sie es. Dieses Tool ermöglicht die Generierung des Quellcodes und der EtherCAT-Slave-Informationsdateien (ESI) für EtherCAT-Slave-Geräte. Das Tool hilft, den Entwicklungsprozess zu vereinfachen, indem es automatisch den erforderlichen Code und die Konfigurationsdateien auf der Grundlage der Benutzereingaben und spezifischen Einstellungen generiert. Um diesen Prozess zu vereinfachen, hat acontis eine SSC-Konfigurationsdatei mit dem Namen EasyCAT_HAT_config vorbereitet, die es uns ermöglicht, diese Konfiguration einfach zu laden, ohne viel in den Einstellungen zu bearbeiten.
Erzeugen des Quellcodes und der ESI-Datei
Beginnen Sie mit der Erstellung eines neuen Projekts. Der Assistent für neue Projekte wird angezeigt. Wenn Sie dazu aufgefordert werden, wählen Sie "Benutzerdefiniert" für den Konfigurationstyp, importieren Sie die EasyCAT_HAT_config und wählen Sie EasyCAT HAT.
Je nachdem, von wo aus das Programm gestartet wird, kann es sein, dass es nach einer Datei namens 9252_HW.c fragt; wählen Sie einfach die enthaltene Datei mit demselben Namen aus. Alle anderen notwendigen Dateien sollten nun automatisch geladen werden. Um dies zu überprüfen, suchen Sie nach Dateien mit den Namen 9252_HW.c, 9252_HW.h, SPIDriver.c, SPIDriver.h und GenericTypeDefs.h als Teil der Liste im SSC Tool.
Als nächstes importieren Sie die PDO-Zuordnung (Process Data Object) unseres Slaves. Wenn Sie bereits eine Konfigurationsdatei haben, gehen Sie zu Werkzeug -> Anwendung -> Importieren und wählen Sie die gewünschte Konfigurationsdatei aus. Wenn Sie keine Konfigurationsdatei haben und eine erstellen müssen, gehen Sie zu Werkzeug -> Anwendung -> Neu erstellen.
Wenn Sie "Neu erstellen" gewählt haben, öffnet sich ein Tabellenkalkulationsprogramm mit einer PDO-Mapping-Vorlage. Hier können wir unser Mapping definieren. Für diese Demonstration werden wir einfach zwei UDINTs definieren, einen als Input und einen als Output.
Speichern Sie die Datei und schließen Sie das Tabellenblatt. Das SSC-Tool importiert nun automatisch die neu erstellte Konfiguration. Im nächsten Dialogfeld werden Sie nach einem Namen für die neue Anwendung gefragt.
Stellen Sie als Nächstes sicher, dass MAX_PD_INPUT_SIZE und MAX_PD_OUTPUT_SIZE ausreichend groß für die angegebenen Ein- und Ausgänge sind und dass die Hersteller-ID mit der des EasyCAT HATs übereinstimmt.
Um die ESI-Datei und den Quellcode zu generieren, gehen Sie zu Projekt -> Neue Slave-Dateien erstellen.
Schreiben der Anwendung
Im Ordner Src, der vom SSC-Tool erstellt wurde, sollte sich eine .c-Datei mit dem Namen der Anwendung befinden, die im vorherigen Abschnitt zugewiesen wurde. Dort können Sie einen eigenen Anwendungscode hinzufügen, der auf dem Raspberry Pi ausgeführt werden soll. In diesem Beispiel wird eine einfache Anwendung verwendet, die eine einzelne Ausgabe liest und sie in eine einzelne Eingabe schreibt. Zu diesem Zweck müssen drei Funktionen geändert werden.
- In APPL_InputMapping kopieren Sie die Eingangsvariable an die entsprechende Stelle im RAM:
void APPL_InputMapping(UINT16* pData)
{
MEMCPY(pData, &EXAMPLE_INPUT0x6001, SIZEOF(EXAMPLE_INPUT0x6001));
} - Kopieren Sie in APPL_OutputMapping die Ausgabe von der entsprechenden Stelle im RAM in die Ausgabevariable:
void APPL_OutputMapping(UINT16* pData)
{
MEMCPY(&EXAMPLE_OUTPUT0x7010, pData, SIZEOF(EXAMPLE_OUTPUT0x7010));
} - Weisen Sie in APPL_Application der Eingangsvariablen den Wert unserer Ausgangsvariablen zu:
void APPL_Application(void)
{
EXAMPLE_INPUT0x6001 = EXAMPLE_OUTPUT0x7010;
}
Kompilieren
Der Ordner Src kann nun auf das Raspberry Pi übertragen werden. Navigieren Sie zu dem kopierten Src-Ordner auf dem Raspberry Pi und führen Sie den folgenden Befehl aus, um den Quellcode zu kompilieren.
gcc -w -O3 -o EasyCAT_HAT *.c -I ./
SPI aktivieren
Serial Peripheral Interface (SPI) muss auf dem Raspberry Pi aktiviert sein, da dies den Kommunikationskanal mit dem EasyCAT HAT herstellt. Um zu überprüfen, ob SPI bereits aktiviert ist, suchen Sie im Verzeichnis /dev nach einem Gerät namens spidev0.0. Wenn dieses Gerät dort nicht gefunden wird, muss SPI manuell aktiviert werden. Es ist wichtig zu beachten, dass die Methode, mit der SPI aktiviert wird, von der Konfiguration des Raspberry Pi abhängt. Die Verwendung des raspi-config-Tools ist in der Regel die einfachste Methode, wenn Sie den Standard-Gerätebaum verwenden. Bei einem benutzerdefinierten Gerätebaum kann die Verwendung von raspi-config jedoch zu einer Übersteuerung führen. In solchen Fällen müssen Sie entweder das SPI-Gerät in den Gerätebaum einbinden oder ein Overlay erstellen.
Ausführen der Anwendung
Führen Sie die folgende ausführbare Datei aus dem Kompilierungsordner aus:
./EasyCAT_HAT
Der Raspberry Pi funktioniert nun als voll funktionsfähiger EtherCAT-Slave. Um den Betrieb zu überprüfen, öffnen Sie den EC-Engineer, fügen Sie die generierte ESI-Datei hinzu und forcen Sie den Beispielausgang. Beobachten Sie, ob sich der Beispieleingang entsprechend ändert, um die ordnungsgemäße Funktion sicherzustellen.