Der Reset-Zustand ist der Eintrittspunkt jeder FSoE-Verbindung (Fail Safe over EtherCAT). Die Verbindung tritt nach dem Power-on, nach einem Neustart (Reset Connection) oder sobald ein FSoE-Kommunikationsfehler erkannt wurde in ihn ein. Solange sich die Verbindung in diesem Zustand befindet, werden keine Nutz-Sicherheitsdaten ausgetauscht — die Safety PDUs werden dafür verwendet, den Reset-Befehl zusammen mit einem einstelligen Fehlercode zu übertragen, der der Gegenseite mitteilt, warum die Verbindung zurückgesetzt wurde.
Dieser Artikel behandelt die drei im Reset-Zustand definierten PDUs aus ETG.5100 S (D) V1.2.0, §8.2.2.2, anhand des kanonischen Beispiels der Spezifikation mit 4 Oktetts Sicherheitsdaten. Für die vollständigen 2/4/6/8-Oktett-Layouts siehe FSoE Reset PDU: Master- und Slave-Struktur.
Hinweis — die Anzahl der Sicherheitsdaten-Bytes ist pro Richtung festgelegt. Jede FSoE-Verbindung hat eine feste Sicherheitsdatenlänge (Master→Slave und Slave→Master), die auf beiden Knoten identisch konfiguriert ist. Die zulässigen Längen sind 1, 2, 4, 6 oder 8 Oktetts. Die tatsächliche Länge für eine bestimmte Verbindung hängt vom FSoE-Slave-Gerät ab und muss der Dokumentation oder der Gerätebeschreibungsdatei (ESI/EEPROM) des Slaves entnommen werden. Die folgenden Beispiele verwenden wie die Spezifikation 4 Oktetts; das Byte-Layout für andere Längen ist in FSoE Reset PDU: Master- und Slave-Struktur dargestellt.
Hinweis — das einzige relevante Datenbyte ist der Fehlercode. In jeder PDU des Reset-Zustands ist
SafeData[0](Oktett 1) das einzige Sicherheitsdaten-Byte, das eine Bedeutung trägt:
0x00— beabsichtigter Reset (Power-on, Neustart / Reset Connection) oder die Quittierung eines Master-Resets durch den Slave.- Ungleich null — der FSoE-Kommunikationsfehlercode, der den Reset ausgelöst hat (siehe Tabelle 28 unten).
Alle anderen SafeData-Oktetts sind ungenutzt und müssen auf 0 gesetzt werden. Das Conn_Id-Feld ist ebenfalls ungenutzt (auf 0 gesetzt) — es wird erst geprüft, sobald die Verbindung aufgebaut ist. Die CRC-Felder werden weiterhin übertragen und müssen weiterhin verifiziert werden, sie werden jedoch aus dem Reset-Anfangszustand berechnet, da Sequenznummer und geerbter CRC beim Eintritt in Reset zurückgesetzt werden (siehe FSoE: Wie funktioniert die CRC-Vererbung? und Wie berechnet man die CRC-Prüfsumme für FSoE-PDUs?).
Wann wird der Reset-Zustand betreten und verlassen?
Der Reset-Zustand reinitialisiert die FSoE-Verbindung nach dem Power-on oder nach einem Kommunikationsfehler. Beim Eintritt werden zwei Dinge zurückgesetzt:
- die Sequenznummer und
- der CRC des letzten Telegramms, der in der CRC-Berechnung verwendet wurde (d. h. die CRC-Vererbungskette wird unterbrochen).
Die Zustandsübergänge sind asymmetrisch und spiegeln die Master-/Slave-Rollen wider:
| Richtung | Bedingung |
|---|---|
| Master verlässt Reset | Er sendet eine Safety Master PDU mit dem Session-Befehl an den Slave. |
| Slave verlässt Reset | Er empfängt eine gültige Safety Master PDU mit dem Session-Befehl. |
Mit anderen Worten: Der Master verlässt Reset durch Aussenden des Session-Befehls, und der Slave verlässt Reset, sobald er diese Session-PDU akzeptiert. Solange sich beide Seiten noch in Reset befinden, tauschen sie Safety PDUs mit dem Reset-Befehl aus, wie unten gezeigt.
Master Reset PDU (FSoE Master → Slave)
Der Master sendet diese PDU nach einem Neustart oder nach Erkennen eines FSoE-Kommunikationsfehlers. Das folgende Beispiel ist Tabelle 10 von ETG.5100 S (D) V1.2.0 für 4 Oktetts Sicherheitsdaten.
| Command | SafeData[0] | SafeData[1] | CRC_0 | SafeData[2] | SafeData[3] | CRC_1 | Conn_Id | |||
|---|---|---|---|---|---|---|---|---|---|---|
| Reset Octet 0 | error code Octet 1 — 0 for restart | 0 Octet 2 — unused | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | 0 Octet 5 — unused | 0 Octet 6 — unused | CRC_1_Lo Octet 7 | CRC_1_Hi Octet 8 | 0 Octet 9 — unused | 0 Octet 10 — unused |
Wichtige Punkte:
- Command (Oktett 0) ist
Reset. - SafeData[0] (Oktett 1) trägt den Fehlercode (Bits 0–7). Ein Wert von
0x00bedeutet einen einfachen Neustart / Reset Connection; jeder Wert ungleich null identifiziert den Kommunikationsfehler, der den Reset ausgelöst hat (siehe die Tabelle unten). - Alle anderen SafeData-Oktetts sind ungenutzt und auf 0 gesetzt.
- CRC_0 und CRC_1 werden weiterhin als 16-Bit-Little-Endian-Werte übertragen, da aber Sequenznummer und geerbter CRC beim Eintritt zurückgesetzt wurden, werden sie aus dem Reset-Anfangszustand berechnet — nicht vom vorherigen Frame verkettet.
- Conn_Id ist im Reset-Zustand ungenutzt und auf 0 gesetzt. Die Connection ID wird erst geprüft, sobald die Verbindung aufgebaut ist.
Slave Reset PDU — Quittierung eines Master-Resets (FSoE Slave → Master)
Wenn der Slave einen gültigen Reset-Befehl vom Master empfängt, quittiert er ihn durch Senden einer Safety Slave PDU mit dem Reset-Befehl und allen SafeData-Oktetts auf 0 — einschließlich der Fehlercode-Position. Dies ist Tabelle 11 von ETG.5100 S (D) V1.2.0.
| Command | SafeData[0] | SafeData[1] | CRC_0 | SafeData[2] | SafeData[3] | CRC_1 | Conn_Id | |||
|---|---|---|---|---|---|---|---|---|---|---|
| Reset Octet 0 | 0 Octet 1 — acknowledgement | 0 Octet 2 | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | 0 Octet 5 | 0 Octet 6 | CRC_1_Lo Octet 7 | CRC_1_Hi Octet 8 | 0 Octet 9 — unused | 0 Octet 10 — unused |
Der einzige Unterschied zur Master-Reset-PDU ist, dass SafeData[0] immer 0 ist — der Slave spiegelt beim Quittieren keinen Fehlercode zurück. Ein Fehlercode von null an dieser Position ist genau das, woran der Master die Quittierung erkennt.
Slave Reset PDU — Slave-initiierter Reset (FSoE Slave → Master)
Der Slave kann selbst einen Reset initiieren, entweder während eines Neustarts (Reset Connection) oder im Falle eines Fehlers, den er lokal erkannt hat. In diesem Fall sendet er eine Safety Slave PDU, die strukturell identisch mit der Master-Reset-PDU ist: Der Reset-Befehl ist gesetzt, und SafeData[0] trägt den eigenen Fehlercode des Slaves (0x00 für einen einfachen Neustart). Dies ist Tabelle 12 von ETG.5100 S (D) V1.2.0.
| Command | SafeData[0] | SafeData[1] | CRC_0 | SafeData[2] | SafeData[3] | CRC_1 | Conn_Id | |||
|---|---|---|---|---|---|---|---|---|---|---|
| Reset Octet 0 | error code Octet 1 — 0 for restart | 0 Octet 2 — unused | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | 0 Octet 5 — unused | 0 Octet 6 — unused | CRC_1_Lo Octet 7 | CRC_1_Hi Octet 8 | 0 Octet 9 — unused | 0 Octet 10 — unused |
Der Master quittiert diesen Slave-initiierten Reset nicht durch Senden einer weiteren Reset-PDU, sondern durch Verlassen des Reset-Zustands: Er sendet eine Safety Master PDU mit dem Session-Befehl, was für beide Seiten das Signal ist, den Reset-Zustand zu verlassen.
Zusammenspiel: der Austausch im Reset-Zustand
Die drei obenstehenden PDUs bilden ein kleines Handshake, das davon abhängt, wer den Reset initiiert hat:
- Master-initiierter Reset: Master sendet Reset (mit Fehlercode) → Slave quittiert mit Reset (SafeData = 0) → Master sendet Session, um Reset zu verlassen.
- Slave-initiierter Reset: Slave sendet Reset (mit Fehlercode) → Master sendet Session, um Reset zu verlassen (dies ist die Quittierung des Masters).
In beiden Fällen verlässt die Verbindung den Reset-Zustand erst, wenn der Master den Session-Befehl aussendet; bis dahin trägt jede PDU auf der Leitung den Reset-Befehl, das Conn_Id-Feld ist 0, und die einzige Nutzlast von Bedeutung ist das einzelne Fehlercode-Byte in SafeData[0].
FSoE-Kommunikationsfehlercodes (Tabelle 28)
Der Fehlercode, der in SafeData[0] einer Reset-PDU getragen wird, stammt aus der folgenden Tabelle. Ein Wert von 0x00 bedeutet „kein Fehler" — d. h. ein lokaler Reset oder die Quittierung eines Reset-Befehls. Die Codes 1–11 sind durch den Standard definiert; 0x80–0xFF sind für gerätespezifische SafePara-Fehler reserviert.
| Fehlercode | Beschreibung |
|---|---|
| 0 | Lokaler Reset oder Quittierung eines RESET-Befehls |
| 1 | Unerwarteter Befehl (INVALID_CMD) |
| 2 | Unbekannter Befehl (UNKNOWN_CMD) |
| 3 | Ungültige Connection ID (INVALID_CONNID) |
| 4 | CRC-Fehler (INVALID_CRC) |
| 5 | Watchdog abgelaufen (WD_EXPIRED) |
| 6 | Ungültige FSoE-Slave-Adresse (INVALID_ADDRESS) |
| 7 | Ungültige Sicherheitsdaten (INVALID_DATA) |
| 8 | Ungültige Kommunikationsparameterlänge (INVALID_COMMPARALEN) |
| 9 | Ungültige Kommunikationsparameterdaten (INVALID_COMPARA) |
| 10 | Ungültige Applikationsparameterlänge (INVALID_USERPARALEN) |
| 11 | Ungültige Applikationsparameterdaten (INVALID_USERPARA) |
| 0x80–0xFF | Ungültiger SafePara (gerätespezifisch) |
Zusammenfassung
Im Reset-Zustand ist die FSoE Safety PDU effektiv ein einstelliger Diagnose-Umschlag: Das Command-Feld ist Reset, SafeData[0] trägt den Fehlercode (oder 0 beim Quittieren), jedes andere SafeData-Oktett und das Conn_Id-Feld sind 0, und die CRCs werden aus dem Reset-Anfangszustand neu berechnet, da sowohl Sequenznummer als auch geerbter CRC beim Eintritt zurückgesetzt wurden. Die Verbindung verlässt Reset nur, wenn der Master den Session-Befehl sendet — der Slave sendet niemals Session, er quittiert Reset nur durch Nullen seiner SafeData.
Referenzen
- ETG.5100 S (D) V1.2.0, §8.2.2.2 Reset state, Tabellen 10–12 und Tabelle 28.
Verwandte Beiträge
Überblick & Grundlagen
- What does the FSoE abbreviation actually mean? — wofür das FSoE-Akronym steht
- FSoE frame structure explained by examples — allgemeiner Aufbau der Safety PDU
- All the states of the FSoE state machine — die fünf FSoE-Zustände und ihre Übergänge
- FSoE: Safety PDU command table — die vollständige Liste der FSoE-Befehle
PDU-Strukturen nach Zustand
- FSoE Session PDU: Master and Slave Structure — PDU-Layout für den Session-Zustand
- FSoE Connection PDU: Master and Slave Structure — PDU-Layout für den Connection-Zustand
- FSoE Parameter PDU: Master and Slave Structure — PDU-Layout für den Parameter-Zustand
- FSoE Data PDU: Master and Slave Structure — PDU-Layout für den Data-Zustand
- FSoE Reset PDU: Master and Slave Structure — Byte-Layouts für alle Sicherheitsdatenlängen
CRC
- FSoE CRC: Which polynomial does it use? — das 17-Bit-Polynom hinter dem FSoE-CRC
- How are the FSoE CRC tables constructed? — wie die CRC-Lookup-Tabellen erzeugt werden
- FSoE: How does CRC inheritance work? — wie die CRC-Kette aufeinanderfolgende PDUs verknüpft
- How to compute the CRC checksum for FSoE PDUs? — Byte-für-Byte-CRC-Berechnungsalgorithmus
Fehlercodes & Datenformat
- FSoE: List of all communication error codes — alle FSoE-Kommunikationsfehlercodes
- FSoE: Is data transmitted little-endian or big-endian? — Byte-Reihenfolge mehrstelliger Felder