FSoE Data PDU: Master- und Slave-Struktur

Der Data-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 Data-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 Data-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 Data-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 Data-Zustand betreten und verlassen?

Der Data-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 Data-Zustand, verbleibt die Verbindung dort auf unbestimmte Zeit:

RichtungBedingung
Master bleibt in DataEr sendet zyklisch ProcessData- oder FailSafeData-PDUs, bis ein Kommunikationsfehler auftritt oder er lokal angehalten wird.
Slave bleibt in DataEr quittiert jede Master-PDU und sendet ProcessData oder FailSafeData zurück, bis ein Kommunikationsfehler auftritt oder er lokal angehalten wird.

Beide Knoten verlassen den Data-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.

CommandSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_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 Data-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.

CommandSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_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 Data-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.

CommandSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_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.

CommandSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_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 Data-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 Data-Zustand

Der Data-Zustand ist ein kontinuierlicher zyklischer Austausch:

  1. Master → Slave: Safety Master PDU mit Command = ProcessData (trägt SafeOutputs) oder Command = FailSafeData (alle SafeData = 0).
  2. Slave → Master: Safety Slave PDU mit Command = ProcessData (trägt SafeInputs) oder Command = 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 Data-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 Data-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 Data-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 Data state, Tabellen 23–26.

Verwandte Beiträge

Überblick & Grundlagen

PDU-Strukturen nach Zustand

CRC

Fehlercodes & Datenformat


Ähnliche Beiträge nach Kategorie: FSoE EtherCAT Safety