FSoE: Struktura Reset State PDU pro Master a Slave

Stav Reset je vstupním bodem každého FSoE (Fail Safe over EtherCAT) spojení. Spojení do něj vstupuje po zapnutí napájení, po restartu (reset connection) nebo kdykoliv je detekována chyba komunikace FSoE. Zatímco je spojení v tomto stavu, nevyměňují se žádná uživatelská bezpečnostní data — Safety PDU jsou repurposovány k přenosu komandy Reset společně s jedno bajtovým chybovým kódem, který protistraně říká, proč bylo spojení resetováno.

Tento článek projde třemi PDU stavu Reset definovanými v ETG.5100 S (D) V1.2.0, §8.2.2.2, a to na kanonickém příkladu specifikace se 4 oktety bezpečnostních dat. Pro úplná rozložení 2/4/6/8 oktetů viz FSoE Reset PDU: Master and Slave Structure.

Poznámka — počet bajtů bezpečnostních dat je pevně dán pro každý směr. Každé FSoE spojení má pevnou délku bezpečnostních dat (master→slave a slave→master), konfigurovanou shodně na obou uzlech. Povolené délky jsou 1, 2, 4, 6 nebo 8 oktetů. Skutečná délka pro dané spojení závisí na FSoE Slave zařízení a musí být převzata z dokumentace Slave nebo souboru popisu zařízení (ESI/EEPROM). Níže uvedené příklady používají 4 oktety jako specifikace; rozložení bajtů pro ostatní délky je uvedeno v FSoE Reset PDU: Master and Slave Structure.

Poznámka — jediným relevantním datovým bajtem je chybový kód. V každé PDU stavu Reset je SafeData[0] (oktet 1) jediným bajtem bezpečnostních dat, který nese nějaký význam:

  • 0x00 — záměrný reset (zapnutí napájení, restart / reset connection) nebo potvrzení Reset od Slave.
  • Nenulová hodnota — chybový kód komunikace FSoE, který reset vyvolal (viz Tabulka 28 níže).

Všechny ostatní oktety SafeData jsou nevyužity a musí být nastaveny na 0. Pole Conn_Id je rovněž nevyužito (nastaveno na 0) — ověřuje se až po navázání spojení. Pole CRC jsou stále přenášena a stále se musí ověřit, ale počítají se z počátečního stavu reset, protože číslo sekvence i zděděné CRC se při vstupu do Reset vymažou (viz FSoE: How does CRC inheritance work? a How to compute the CRC checksum for FSoE PDUs?).

Kdy se vstupuje do stavu Reset a kdy se z něj vystupuje?

Stav Reset reinicializuje FSoE spojení po zapnutí napájení nebo po chybě komunikace. Při vstupu se resetují dvě věci:

  • číslo sekvence a
  • CRC posledního telegramu, které bylo použito ve výpočtu CRC (tj. řetězec dědičnosti CRC je přerušen).

Přechody stavů jsou asymetrické, což zrcadlí role master/slave:

SměrPodmínka
Master opouští ResetOdesílá Safety Master PDU s komandou Session do Slave.
Slave opouští ResetPřijímá platnou Safety Master PDU s komandou Session.

Jinými slovy, Master opouští Reset vydáním komandy Session a Slave opouští Reset, jakmile přijme tuto PDU Session. Zatímco jsou obě strany stále v Reset, vyměňují Safety PDU nesoucí komandu Reset, jak je uvedeno níže.

Master Reset PDU (FSoE Master → Slave)

Master odesílá tuto PDU po restartu nebo po detekci chyby komunikace FSoE. Následující příklad je Tabulka 10 ETG.5100 S (D) V1.2.0 pro 4 oktety bezpečnostních dat.

KomandaSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
Reset
Oktet 0
chybový kód
Oktet 1 — 0 pro restart
0
Oktet 2 — nevyužito
CRC_0_Lo
Oktet 3
CRC_0_Hi
Oktet 4
0
Oktet 5 — nevyužito
0
Oktet 6 — nevyužito
CRC_1_Lo
Oktet 7
CRC_1_Hi
Oktet 8
0
Oktet 9 — nevyužito
0
Oktet 10 — nevyužito

Klíčové body:

  • Komanda (oktet 0) je Reset.
  • SafeData[0] (oktet 1) nese chybový kód (bity 0–7). Hodnota 0x00 znamená prostý restart / reset connection; jakákoliv nenulová hodnota identifikuje chybu komunikace, která reset vyvolala (viz tabulka níže).
  • Všechny ostatní oktety SafeData jsou nevyužity a nastaveny na 0.
  • CRC_0 a CRC_1 se stále přenášejí jako 16bitové little-endian hodnoty, ale protože číslo sekvence i zděděné CRC byly při vstupu resetovány, počítají se z počátečního stavu reset — nikoliv řetězené z předchozího rámce.
  • Conn_Id je ve stavu Reset nevyužito a nastaveno na 0. Connection ID se ověřuje až po navázání spojení.

Slave Reset PDU — potvrzení Reset Master (FSoE Slave → Master)

Když Slave přijme platnou komandu Reset od Master, potvrzuje ji odesláním Safety Slave PDU s komandou Reset a všemi oktety SafeData nastavenými na 0 — včetně pozice chybového kódu. Jedná se o Tabulku 11 ETG.5100 S (D) V1.2.0.

KomandaSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
Reset
Oktet 0
0
Oktet 1 — potvrzení
0
Oktet 2
CRC_0_Lo
Oktet 3
CRC_0_Hi
Oktet 4
0
Oktet 5
0
Oktet 6
CRC_1_Lo
Oktet 7
CRC_1_Hi
Oktet 8
0
Oktet 9 — nevyužito
0
Oktet 10 — nevyužito

Jediný rozdíl oproti PDU Reset Master je, že SafeData[0] je vždy 0 — Slave při potvrzení neodesílá zpět chybový kód. Nulový chybový kód na této pozici je přesně to, čím Master rozpozná potvrzení.

Slave Reset PDU — reset iniciovaný Slave (FSoE Slave → Master)

Slave sám může iniciovat Reset, a to buď během restartu (reset connection), nebo v případě chyby, kterou lokálně detekoval. V takovém případě odesílá Safety Slave PDU, která je strukturálně identická s PDU Reset Master: je nastavena komanda Reset a SafeData[0] nese vlastní chybový kód Slave (0x00 pro prostý restart). Jedná se o Tabulku 12 ETG.5100 S (D) V1.2.0.

KomandaSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
Reset
Oktet 0
chybový kód
Oktet 1 — 0 pro restart
0
Oktet 2 — nevyužito
CRC_0_Lo
Oktet 3
CRC_0_Hi
Oktet 4
0
Oktet 5 — nevyužito
0
Oktet 6 — nevyužito
CRC_1_Lo
Oktet 7
CRC_1_Hi
Oktet 8
0
Oktet 9 — nevyužito
0
Oktet 10 — nevyužito

Master potvrzuje tento Reset iniciovaný Slave nikoliv odesláním další PDU Reset, ale opuštěním stavu Reset: odesílá Safety Master PDU s komandou Session, což je signál pro obě strany k přechodu ze stavu Reset.

Shrnutí: výměna ve stavu Reset

Výše uvedené tři PDU tvoří malé handshake, které závisí na tom, kdo reset inicioval:

  • Reset iniciovaný Master: Master odesílá Reset (s chybovým kódem) → Slave potvrzuje Reset (SafeData = 0) → Master odesílá Session pro opuštění Reset.
  • Reset iniciovaný Slave: Slave odesílá Reset (s chybovým kódem) → Master odesílá Session pro opuštění Reset (toto je potvrzení Master).

V obou případech spojení opustí stav Reset až tehdy, když Master vydá komandu Session; do té doby každá PDU na lince nese komandu Reset, pole Conn_Id je 0 a jediným významným payloadem je jedno bajtový chybový kód v SafeData[0].

Chybové kódy komunikace FSoE (Tabulka 28)

Chybový kód přenášený v SafeData[0] PDU Reset je převzat z následující tabulky. Hodnota 0x00 znamená „žádná chyba" — tj. lokální reset nebo potvrzení komandy Reset. Kódy 111 definuje standard; 0x800xFF jsou rezervovány pro chyby SafePara specifické pro zařízení.

Chybový kódPopis
0Lokální reset nebo potvrzení komandy RESET
1Neočekávaná komanda (INVALID_CMD)
2Neznámá komanda (UNKNOWN_CMD)
3Neplatný connection ID (INVALID_CONNID)
4Chyba CRC (INVALID_CRC)
5Vypršení watchdog (WD_EXPIRED)
6Neplatná FSoE Slave Address (INVALID_ADDRESS)
7Neplatná bezpečnostní data (INVALID_DATA)
8Neplatná délka komunikačních parametrů (INVALID_COMMPARALEN)
9Neplatná data komunikačních parametrů (INVALID_COMPARA)
10Neplatná délka aplikačních parametrů (INVALID_USERPARALEN)
11Neplatná data aplikačních parametrů (INVALID_USERPARA)
0x80–0xFFNeplatný SafePara (specifické pro zařízení)

Shrnutí

Ve stavu Reset je FSoE Safety PDU efektivně jedno bajtovová diagnostická obálka: pole Command je Reset, SafeData[0] nese chybový kód (nebo 0 při potvrzení), každý další oktet SafeData a pole Conn_Id jsou 0 a CRC se přepočítávají z počátečního stavu reset, protože číslo sekvence i zděděné CRC byly při vstupu vymazány. Spojení opouští Reset až tehdy, když Master odesílá komandu Session — Slave nikdy neodesílá Session, pouze potvrzuje Reset vynulováním svých SafeData.

Reference

  • ETG.5100 S (D) V1.2.0, §8.2.2.2 Reset state, Tabulky 10–12 a Tabulka 28.

Související příspěvky

Přehled a základy

Struktury PDU podle stavů

CRC

Chybové kódy a formát dat


Podívejte se na podobné články podle kategorie: FSoE EtherCAT Safety