FSoE (Fail Safe over EtherCAT) spojení je řízeno malým, deterministickým stavovým automatem. Master i Slave provozují vlastní kopii automatu a obě kopie postupují ve vzájemném kroku výměnou správné FSoE komandy v každé Safety PDU. Po zapnutí napájení nebo při detekci chyby komunikace se spojení vrátí do stavu Reset a začne znovu.
Následující diagram zobrazuje všechny stavy a všechny přechody v jednom svislém pohledu. Každý stav odpovídá jedné z FSoE komand a tři popisky přechodů — OK, STAY a NOT_OK — popisují, jak přijatá komanda souvisí se stavem, který automat aktuálně očekává.
Jak číst diagram
Tři typy přechodů se vyhodnocují na základě komandy přijaté v Safety PDU protistrany:
| Přechod | Význam | Výsledek |
|---|---|---|
| OK | Přijatá komanda je další očekávaný stav. | Posun o jeden stupeň dolů (nebo setrvání v Data, jakmile je dosaženo). |
| STAY | Přijatá komanda je shodná s aktuálním stavem. | Setrvání v aktuálním stavu a čekání. |
| NOT_OK | Přijatá komanda je neočekávaná nebo došlo k chybě CRC/watchdog. | Okamžitý návrat do Reset. |
Každý stav navíc odesílá vlastní komandu v odchozí PDU, takže obě strany postupují společně. Například zatímco je Master ve stavu Session, odesílá komandu Session a očekává, že Slave odpoví komandou Connection (OK) pro posun dále, Session (STAY) pro čekání nebo čímkoli jiným (NOT_OK) pro návrat do Reset.
Pět stavů
1. Reset
Toto je vstupní stav po zapnutí napájení, po restartu („reset connection") nebo při detekci jakékoliv chyby komunikace FSoE. V Reset se nevyměňují žádná uživatelská bezpečnostní data; PDU nese komandu Reset a na straně, která chybu způsobila, jedno bajtový chybový kód. Po vstupu se číslo sekvence i zděděné CRC vymažou. Viz FSoE Reset State PDU: Master and Slave Structure pro přesné rozložení bajtů a tabulku chybových kódů.
2. Session
Master opouští Reset jako první odesláním komandy Session. Slave jej následuje, jakmile přijme platnou PDU Session. V tomto stavu si obě strany vyměňují connection ID a ověřují, že adresa FSoE Slave je správná. Komanda Connection od protistrany je signálem OK, který posune automat do dalšího stavu.
3. Connection
Ve stavu Connection si strany nastavují základní parametry komunikace: délku bezpečnostních dat, časování watchdog a Conn_Id. Přechod OK je vyvolán přijetím komandy Parameter. Dokud jsou obě strany stále v Connection, nadále odesílají Connection a automat setrvává (STAY).
4. Parameter
Zde komanda Parameter nese data SafeParameter, která konfigurují bezpečnostní aplikaci (např. sadu parametrů specifickou pro aplikaci). Přijetí komandy Data je signálem OK ke vstupu do konečného provozního stavu. Pokud výměna parametrů selže nebo trvá příliš dlouho, spojení se přes NOT_OK vrátí do Reset.
5. Data
Toto je normální provozní stav. Uživatelská bezpečnostní data se vyměňují v každé Safety PDU a obě strany odesílají komandu Data. Samosmyčka OK znamená, že spojení setrvává v Data, dokud je komunikace v pořádku. Samosmyčka STAY se v Data běžně nevyskytuje (neexistuje vyšší stav, na který by se čekalo), ale stavový automat přesto opakovanou komandu Data vyhodnotí jako „setrvat v Data". Jakákoliv neočekávaná komanda nebo chyba CRC/watchdog vrátí automat do Reset.
Shrnutí
Stavový automat FSoE je lineární žebřík pěti stavů: Reset → Session → Connection → Parameter → Data. Zelený přechod OK posune automat o jeden stupeň dolů, šedý přechod STAY jej ponechá na místě a červený přechod NOT_OK jej vrátí až do Reset. Protože Master i Slave implementují stejný automat, celé spojení se bezpečně restartuje, jakmile kterákoliv strana zjistí cokoliv nesprávného.
Reference
- ETG.5100 S (D) V1.2.0, specifikace FSoE, která definuje tyto stavy a přechody.
Související příspěvky
Přehled a základy
- What does the FSoE abbreviation actually mean? — co znamená zkratka FSoE
- FSoE frame structure explained by examples — obecné rozložení Safety PDU
- FSoE: Safety PDU command table — úplný seznam FSoE komand
Struktury PDU podle stavů
- FSoE Reset State PDU: Master and Slave Structure — rozložení PDU a chybové kódy pro stav Reset
- FSoE Session PDU: Master and Slave Structure — rozložení PDU pro stav Session
- FSoE Connection PDU: Master and Slave Structure — rozložení PDU pro stav Connection
- FSoE Parameter PDU: Master and Slave Structure — rozložení PDU pro stav Parameter
- FSoE Data PDU: Master and Slave Structure — rozložení PDU pro stav Data
- FSoE Reset PDU: Master and Slave Structure — rozložení bajtů pro všechny délky bezpečnostních dat
CRC
- FSoE CRC: Which polynomial does it use? — 17bitový polynom za FSoE CRC
- How are the FSoE CRC tables constructed? — jak se generují vyhledávací tabulky CRC
- FSoE: How does CRC inheritance work? — jak řetězec CRC propojuje po sobě jdoucí PDU
- How to compute the CRC checksum for FSoE PDUs? — algoritmus výpočtu CRC bajt po bajtu
Chybové kódy a formát dat
- FSoE: List of all communication error codes — všechny chybové kódy komunikace FSoE
- FSoE: Is data transmitted little-endian or big-endian? — pořadí bajtů vícebajtových polí