Der Datum-Zustand ist der finale Zustand des FSoE-Verbindungsaufbaus und derjenige, in dem die Verbindung den Rest ihrer Lebensdauer verbringt. Er folgt auf den Parameter-Zustand. Anders als die vorherigen Zustände, in denen die Anzahl der FSoE-Zyklen durch das Protokoll festgelegt war, läuft der Datum-Zustand kontinuierlich — FSoE-Zyklen werden übertragen, bis entweder ein Kommunikationsfehler auftritt oder ein FSoE-Knoten lokal angehalten wird. In jedem Zyklus sendet der FSoE-Master SafeOutputs an den FSoE-Slave, und der FSoE-Slave quittiert, indem er SafeInputs an den Master zurücksendet.
Der Datum-Zustand verwendet zwei Befehle:
- ProcessData — verwendet, wenn die Sicherheitsdaten gültig sind.
- FailSafeData — verwendet, wenn ein Knoten lokal erkennt, dass seine Sicherheitsdaten nicht gültig sind oder in den sicheren Zustand geschaltet werden sollen.
Dieser Artikel behandelt alle vier im Datum-Zustand definierten PDUs aus ETG.5100 S (D) V1.2.0, §8.2.2.6, anhand des kanonischen Beispiels der Spezifikation mit 4 Oktetts Sicherheitsdaten.
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.
Wann wird der Datum-Zustand betreten und verlassen?
Der Datum-Zustand wird betreten, wenn der Master den Parameter-Zustand verlässt, indem er eine Safety Master PDU mit dem ProcessData- (oder FailSafeData-) Befehl sendet. Einmal im Datum-Zustand, verbleibt die Verbindung dort auf unbestimmte Zeit:
| Richtung | Bedingung |
|---|---|
| Master bleibt in Datum | Er sendet zyklisch ProcessData- oder FailSafeData-PDUs, bis ein Kommunikationsfehler auftritt oder er lokal angehalten wird. |
| Slave bleibt in Datum | Er quittiert jede Master-PDU und sendet ProcessData oder FailSafeData zurück, bis ein Kommunikationsfehler auftritt oder er lokal angehalten wird. |
Beide Knoten verlassen den Datum-Zustand sofort, wenn sie einen FSoE-Kommunikationsfehler erkennen — in diesem Fall fallen sie in den Reset-Zustand zurück.
ProcessData-Befehl (gültige Daten)
Safety Master PDU (FSoE Master → Slave)
Der Master sendet diese PDU, um SafeOutputs an den Slave zu übertragen. Dies ist Tabelle 23 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 | |||
|---|---|---|---|---|---|---|---|---|---|---|
| ProcessData Octet 0 | SafeOutputs, byte 1 Octet 1 | SafeOutputs, byte 2 Octet 2 | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | SafeOutputs, byte 3 Octet 5 | SafeOutputs, byte 4 Octet 6 | CRC_1_Lo Octet 7 | CRC_1_Hi Octet 8 | Connection Id, lo Octet 9 | Connection Id, hi Octet 10 |
Wichtige Punkte:
- Command (Oktett 0) ist
ProcessData. - SafeData[0..3] tragen die SafeOutputs — die tatsächlichen sicherheitsbezogenen Ausgangsdaten vom Master zum Slave. Die Bytes werden der Reihe nach platziert: SafeData[0] ist das 1. Oktett, SafeData[1] das 2. und so weiter.
- Conn_Id (Oktetts 9 und 10) trägt die Connection ID, wie in den Connection- und Parameter-Zuständen.
- CRC_0 und CRC_1 werden als 16-Bit-Little-Endian-Werte übertragen. Die CRC-Vererbung ist über alle Datum-Zustands-Zyklen aktiv und verkettet jede PDU mit der vorherigen.
Safety Slave PDU (FSoE Slave → Master)
Der Slave quittiert die ProcessData-PDU des Masters und sendet SafeInputs an den Master zurück. Dies ist Tabelle 24 von ETG.5100 S (D) V1.2.0.
| Command | SafeData[0] | SafeData[1] | CRC_0 | SafeData[2] | SafeData[3] | CRC_1 | Conn_Id | |||
|---|---|---|---|---|---|---|---|---|---|---|
| ProcessData Octet 0 | SafeInputs, byte 1 Octet 1 | SafeInputs, byte 2 Octet 2 | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | SafeInputs, byte 3 Octet 5 | SafeInputs, byte 4 Octet 6 | CRC_1_Lo Octet 7 | CRC_1_Hi Octet 8 | Connection Id, lo Octet 9 | Connection Id, hi Octet 10 |
Beachten Sie die Asymmetrie zu den früheren Zuständen: Im Datum-Zustand spiegelt der Slave die Sicherheitsdaten des Masters nicht zurück. Stattdessen sendet er seine eigenen SafeInputs — die sicherheitsbezogenen Eingangsdaten vom Slave zum Master. Der Master sendet SafeOutputs, der Slave antwortet mit SafeInputs; jede Richtung trägt ihre eigene unabhängige Nutzlast.
FailSafeData-Befehl (sicherer Zustand)
Erkennt der FSoE-Master lokal, dass die SafeOutputs nicht gültig sind oder in den sicheren Zustand geschaltet werden sollen, sendet er den FailSafeData-Befehl statt ProcessData. Gleiches gilt für den FSoE-Slave: Erkennt er lokal, dass die SafeInputs nicht gültig sind oder in den sicheren Zustand geschaltet werden sollen, sendet er FailSafeData statt ProcessData.
Safety Master PDU mit FailSafeData (FSoE Master → Slave)
Dies ist Tabelle 25 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 | |||
|---|---|---|---|---|---|---|---|---|---|---|
| FailSafeData Octet 0 | 0 Octet 1 — fail-safe data | 0 Octet 2 — fail-safe data | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | 0 Octet 5 — fail-safe data | 0 Octet 6 — fail-safe data | CRC_1_Lo Octet 7 | CRC_1_Hi Octet 8 | Connection Id, lo Octet 9 | Connection Id, hi Octet 10 |
Wichtige Punkte:
- Command (Oktett 0) ist
FailSafeData. - Alle SafeData-Oktetts sind auf 0 gesetzt — die Fail-Safe-Daten tragen keine nützliche Nutzlast; sie signalisieren, dass der Sender seine Ausgänge in den sicheren Zustand geschaltet hat.
- Conn_Id- und CRC-Felder verhalten sich genau wie in der ProcessData-PDU. Der CRC wird weiterhin berechnet und muss weiterhin verifiziert werden — der Fail-Safe-Zustand ist ein definierter Betriebszustand, kein Kommunikationsfehler.
Safety Slave PDU mit FailSafeData (FSoE Slave → Master)
Dies ist Tabelle 26 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 | |||
|---|---|---|---|---|---|---|---|---|---|---|
| FailSafeData Octet 0 | 0 Octet 1 — fail-safe data | 0 Octet 2 — fail-safe data | CRC_0_Lo Octet 3 | CRC_0_Hi Octet 4 | 0 Octet 5 — fail-safe data | 0 Octet 6 — fail-safe data | CRC_1_Lo Octet 7 | CRC_1_Hi Octet 8 | Connection Id, lo Octet 9 | Connection Id, hi Octet 10 |
ProcessData und FailSafeData werden unabhängig gewählt
Eine wesentliche Eigenschaft des Datum-Zustands ist, dass die Wahl zwischen ProcessData und FailSafeData in jeder Richtung unabhängig ist — sie hängt nur von lokalen Gegebenheiten ab, nicht vom empfangenen Befehl der Gegenseite:
- Der Master sendet ProcessData, wenn seine SafeOutputs gültig sind, oder FailSafeData, wenn sie es nicht sind.
- Der Slave sendet ProcessData, wenn seine SafeInputs gültig sind, oder FailSafeData, wenn sie es nicht sind.
Das bedeutet, es ist völlig normal, wenn in einem Zyklus eine Richtung ProcessData und die andere FailSafeData trägt. Wenn beispielsweise die SafeOutputs des Masters gültig sind, die SafeInputs des Slaves aber nicht, sendet der Master ProcessData und der Slave antwortet mit FailSafeData. Keiner der Knoten muss auf den anderen warten, um den Befehl zu wechseln; die Entscheidung ist rein lokal.
Zusammenspiel: der Austausch im Datum-Zustand
Der Datum-Zustand ist ein kontinuierlicher zyklischer Austausch:
- Master → Slave: Safety Master PDU mit
Command = ProcessData(trägt SafeOutputs) oderCommand = FailSafeData(alle SafeData = 0). - Slave → Master: Safety Slave PDU mit
Command = ProcessData(trägt SafeInputs) oderCommand = FailSafeData(alle SafeData = 0).
Dieser Zyklus wiederholt sich unbegrenzt. Der Befehl in jeder Richtung wird unabhängig basierend auf der lokalen Gültigkeit der Sicherheitsdaten gewählt. Erkennt ein Knoten einen FSoE-Kommunikationsfehler (siehe FSoE: Liste aller Kommunikationsfehlercodes), fallen beide Knoten in den Reset-Zustand zurück, und der Verbindungsaufbau beginnt von vorn.
Zusammenfassung
Im Datum-Zustand trägt die FSoE Safety PDU endlich Nutz-Sicherheitsdaten: Der Master sendet SafeOutputs und der Slave antwortet mit SafeInputs, jeweils mit dem ProcessData-Befehl. Wenn die Sicherheitsdaten eines Knotens nicht gültig sind oder in den sicheren Zustand geschaltet werden sollen, sendet er stattdessen den FailSafeData-Befehl, wobei alle SafeData-Oktetts auf 0 gesetzt sind. Die Wahl zwischen den beiden Befehlen ist in jeder Richtung unabhängig und hängt nur von lokalen Gegebenheiten ab. Der Datum-Zustand läuft kontinuierlich, bis ein Kommunikationsfehler auftritt (was einen Rückfall auf Reset auslöst) oder ein Knoten lokal angehalten wird. Die CRC-Vererbung verkettet während des gesamten Datum-Zustands jede PDU mit der vorherigen, sodass jede Beschädigung, jeder Verlust oder jede Neuordnung sofort erkannt wird.
Referenzen
- ETG.5100 S (D) V1.2.0, §8.2.2.6 Datum state, Tabellen 23–26.
Verwandte Beiträge
Überblick & Grundlagen
- Was bedeutet die FSoE-Abkürzung tatsächlich? — was die Abkürzung FSoE bedeutet
- FSoE: Rahmenstruktur anhand von Beispielen erklärt — allgemeiner Safety-PDU-Aufbau
- FSoE: Alle Zustände der Zustandsmaschine — die fünf FSoE-Zustände und deren Übergänge
- FSoE: Safety-PDU-Befehlstabelle — die vollständige Liste der FSoE-Befehle
PDU-Strukturen nach Zustand
- FSoE Reset State PDU: Master- und Slave-Struktur — PDU-Aufbau und Fehlercodes für den Reset-Zustand
- FSoE Session PDU: Master- und Slave-Struktur — PDU-Aufbau für den Session-Zustand
- FSoE Connection PDU: Master- und Slave-Struktur — PDU-Aufbau für den Connection-Zustand
- FSoE Parameter PDU: Master- und Slave-Struktur — PDU-Aufbau für den Parameter-Zustand
- FSoE Reset PDU: Master- und Slave-Struktur — Byte-Aufbauten für alle Safety-Datenlängen
CRC
- FSoE: Welches CRC-Polynom wird verwendet? — das 17-Bit-Polynom des FSoE-CRC
- FSoE: Wie werden die CRC-Tabellen konstruiert? — wie die CRC-Lookup-Tabellen erzeugt werden
Fehlercodes & Datenformat
- FSoE: Liste aller Kommunikationsfehlercodes — alle FSoE-Kommunikationsfehlercodes
- FSoE: Little-Endian oder Big-Endian? — Byte-Reihenfolge mehrbyteiger Felder