FSoE: Struktura Data PDU pro Master a Slave

Stav Data je konečným stavem navazování FSoE spojení a stavem, ve kterém spojení stráví zbytek své životnosti. Následuje po stavu Parameter. Na rozdíl od předchozích stavů, kde byl počet FSoE cyklů pevně dán protokolem, běží stav Data kontinuálně — FSoE cykly se přenášejí, dokud nedojde k chybě komunikace nebo dokud není FSoE uzel lokálně zastaven. V každém cyklu odesílá FSoE Master SafeOutputs do FSoE Slave a FSoE Slave potvrzuje odesláním SafeInputs zpět Masteru.

Stav Data používá dvě komandy:

  • ProcessData — používá se, když jsou bezpečnostní data platná.
  • FailSafeData — používá se, když uzel lokálně detekuje, že jeho bezpečnostní data nejsou platná nebo mají být přepnuta do bezpečného stavu.

Tento článek projde všemi čtyřmi PDU stavu Data definovanými v ETG.5100 S (D) V1.2.0, §8.2.2.6, a to na kanonickém příkladu specifikace se 4 oktety bezpečnostních dat.

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.

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

Do stavu Data se vstupuje, když Master opustí stav Parameter odesláním Safety Master PDU s komandou ProcessData (nebo FailSafeData). Jakmile je ve stavu Data, spojení v něm setrvává neurčitě dlouho:

SměrPodmínka
Master setrvává v DataOdesílá PDU ProcessData nebo FailSafeData cyklicky, dokud nedojde k chybě komunikace nebo není lokálně zastaven.
Slave setrvává v DataPotvrzuje každou PDU Master a odesílá ProcessData nebo FailSafeData zpět, dokud nedojde k chybě komunikace nebo není lokálně zastaven.

Oba uzly okamžitě opustí stav Data, pokud detekují chybu komunikace FSoE — v takovém případě se vrátí do stavu Reset.

Komanda ProcessData (platná data)

Safety Master PDU (FSoE Master → Slave)

Master odesílá tuto PDU k přenosu SafeOutputs do Slave. Jedná se o Tabulku 23 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
ProcessData
Oktet 0
SafeOutputs, bajt 1
Oktet 1
SafeOutputs, bajt 2
Oktet 2
CRC_0_Lo
Oktet 3
CRC_0_Hi
Oktet 4
SafeOutputs, bajt 3
Oktet 5
SafeOutputs, bajt 4
Oktet 6
CRC_1_Lo
Oktet 7
CRC_1_Hi
Oktet 8
Connection Id, lo
Oktet 9
Connection Id, hi
Oktet 10

Klíčové body:

  • Komanda (oktet 0) je ProcessData.
  • SafeData[0..3] nese SafeOutputs — skutečná bezpečnostní výstupní data z Masteru do Slave. Bajty jsou umístěny v pořadí: SafeData[0] je 1. oktet, SafeData[1] je 2. atd.
  • Conn_Id (oktety 9 a 10) nese Connection ID, jako ve stavech Connection a Parameter.
  • CRC_0 a CRC_1 se přenášejí jako 16bitové little-endian hodnoty. Dědičnost CRC je aktivní napříč všemi cykly stavu Data a řetězí každou PDU s předchozí.

Safety Slave PDU (FSoE Slave → Master)

Slave potvrzuje PDU ProcessData Master a odesílá SafeInputs zpět Masteru. Jedná se o Tabulku 24 ETG.5100 S (D) V1.2.0.

KomandaSafeData[0]SafeData[1]CRC_0SafeData[2]SafeData[3]CRC_1Conn_Id
ProcessData
Oktet 0
SafeInputs, bajt 1
Oktet 1
SafeInputs, bajt 2
Oktet 2
CRC_0_Lo
Oktet 3
CRC_0_Hi
Oktet 4
SafeInputs, bajt 3
Oktet 5
SafeInputs, bajt 4
Oktet 6
CRC_1_Lo
Oktet 7
CRC_1_Hi
Oktet 8
Connection Id, lo
Oktet 9
Connection Id, hi
Oktet 10

Všimněte si asymetrie s předchozími stavy: ve stavu Slave neodesílá zpět bezpečnostní data Masteru. Místo toho odesílá vlastní SafeInputs — bezpečnostní vstupní data ze Slave do Masteru. Master odesílá SafeOutputs, Slave odpovídá SafeInputs; každý směr nese vlastní nezávislý payload.

Komanda FailSafeData (bezpečný stav)

Pokud FSoE Master lokálně detekuje, že SafeOutputs nejsou platné nebo mají být přepnuty do bezpečného stavu, odesílá komandu FailSafeData místo ProcessData. Stejné platí pro FSoE Slave: pokud lokálně detekuje, že SafeInputs nejsou platné nebo mají být přepnuty do bezpečného stavu, odesílá FailSafeData místo ProcessData.

Safety Master PDU s FailSafeData (FSoE Master → Slave)

Jedná se o Tabulku 25 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
FailSafeData
Oktet 0
0
Oktet 1 — fail-safe data
0
Oktet 2 — fail-safe data
CRC_0_Lo
Oktet 3
CRC_0_Hi
Oktet 4
0
Oktet 5 — fail-safe data
0
Oktet 6 — fail-safe data
CRC_1_Lo
Oktet 7
CRC_1_Hi
Oktet 8
Connection Id, lo
Oktet 9
Connection Id, hi
Oktet 10

Klíčové body:

  • Komanda (oktet 0) je FailSafeData.
  • Všechny oktety SafeData jsou nastaveny na 0 — fail-safe data nenesou žádný užitečný payload; signalizují, že odesílatel přepnul své výstupy do bezpečného stavu.
  • Pole Conn_Id a CRC se chovají přesně jako v PDU ProcessData. CRC se stále počítá a musí se stále ověřit — bezpečný stav je definovaný provozní stav, nikoliv chyba komunikace.

Safety Slave PDU s FailSafeData (FSoE Slave → Master)

Jedná se o Tabulku 26 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
FailSafeData
Oktet 0
0
Oktet 1 — fail-safe data
0
Oktet 2 — fail-safe data
CRC_0_Lo
Oktet 3
CRC_0_Hi
Oktet 4
0
Oktet 5 — fail-safe data
0
Oktet 6 — fail-safe data
CRC_1_Lo
Oktet 7
CRC_1_Hi
Oktet 8
Connection Id, lo
Oktet 9
Connection Id, hi
Oktet 10

ProcessData a FailSafeData se volí nezávisle

Klíčovou vlastností stavu Data je, že volba mezi ProcessData a FailSafeData je nezávislá v každém směru — závisí pouze na lokálních okolnostech, nikoliv na komandě přijaté od protistrany:

  • Master odesílá ProcessData, pokud jsou jeho SafeOutputs platné, nebo FailSafeData, pokud nejsou.
  • Slave odesílá ProcessData, pokud jsou jeho SafeInputs platné, nebo FailSafeData, pokud nejsou.

To znamená, že je zcela normální, když jeden směr nese ProcessData, zatímco druhý nese FailSafeData ve stejném cyklu. Například pokud SafeOutputs Master jsou platné, ale SafeInputs Slave nejsou, Master odesílá ProcessData a Slave odpovídá FailSafeData. Žádný uzel nemusí čekat na druhý, aby přepnul komandu; rozhodnutí je čistě lokální.

Shrnutí: výměna ve stavu Data

Stav Data je kontinuální cyklická výměna:

  1. Master → Slave: Safety Master PDU s Command = ProcessData (nese SafeOutputs) nebo Command = FailSafeData (všechny SafeData = 0).
  2. Slave → Master: Safety Slave PDU s Command = ProcessData (nese SafeInputs) nebo Command = FailSafeData (všechny SafeData = 0).

Tento cyklus se opakuje neurčitě dlouho. Komanda v každém směru se volí nezávisle na základě lokální platnosti bezpečnostních dat. Pokud kterýkoliv uzel detekuje chybu komunikace FSoE (viz FSoE: List of all communication error codes), oba uzly se vrátí do stavu Reset a navazování spojení začíná znovu.

Shrnutí

Ve stavu Data nese FSoE Safety PDU konečně uživatelská bezpečnostní data: Master odesílá SafeOutputs a Slave odpovídá SafeInputs, přičemž každý používá komandu ProcessData. Pokud bezpečnostní data kteréhokoliv uzlu nejsou platná nebo mají být přepnuta do bezpečného stavu, odesílá místo toho komandu FailSafeData se všemi oktety SafeData nastavenými na 0. Volba mezi oběma komandami je nezávislá v každém směru a závisí pouze na lokálních okolnostech. Stav Data běží kontinuálně, dokud nedojde k chybě komunikace (což vyvolá návrat do Reset) nebo není uzel lokálně zastaven. Dědičnost CRC řetězí každou PDU s předchozí napříč celým stavem Data, takže jakákoliv korupce, ztráta nebo přehození je okamžitě detekována.

Reference

  • ETG.5100 S (D) V1.2.0, §8.2.2.6 Data state, Tabulky 23–26.

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