EtherCAT: rámec, který se čte za jízdy
Nejchytřejší nápad v téhle labce, a dá se popsat jednou větou: místo aby každý uzel dostal vlastní rámec, projede všemi jeden jediný a každý si z něj za jízdy vezme svoje bajty a zapíše svou odpověď — aniž by ho zastavil.
Proč to funguje
Uzel EtherCATu není přepínač. Je to posuvný registr na cestě: rámec do něj vteče jednou stranou a druhou vytéká o pár set nanosekund později, a mezitím obvod přepíše ta místa v rámci, která patří jemu. Nic se neukládá, nic se nečeká, nic nemá frontu.
| rámec na uzel | EtherCAT | |
|---|---|---|
| rámců na cyklus | N | 1 |
| režie | N × 38 B | 38 B |
| zdržení na uzel | celá doba rámce | ~0,5 µs |
| využití drátu (8 B/uzel) | ~10 % | přes 80 % |
A co za to
Není to zadarmo a stojí za to říct, co se dává:
- Speciální hardware v každém uzlu. Ten obvod musí přepsat rámec, který jím teče, v reálném čase — běžný ethernetový adaptér to neumí. Řídicí strana naopak stačí obyčejná.
- Topologie je řetěz nebo kruh, ne hvězda. Přerušený kabel uprostřed odpojí všechno za sebou — pokud se to nezapojí do kruhu, pak to přežije jedno přerušení.
- Není to IP síť. Nedá se na to připojit notebook a otevřít stránku. Je to sběrnice, která používá ethernetový hardware jako drát.
To poslední je ta pointa a stojí za zopakování: EtherCAT nevyřešil problém rychlosti Ethernetu. Vyřešil ho tím, že přestal používat Ethernet jako síť a začal ho používat jako fyzickou vrstvu, na které si postavil vlastní pravidla — zhruba tak, jako Modbus RTU používá RS-485 z LinkLabu. Vrstvy z kapitoly 1 se daly rozebrat a poskládat jinak.
Distribuované hodiny
Druhá polovina toho, proč se EtherCAT používá v pohybové regulaci: všechny uzly mají hodiny srovnané na společný čas s odchylkou pod mikrosekundu. Nejde tedy jen o to, že data dorazí včas — všechny osy můžou sepnout ve stejný okamžik, a to je u vícero souběžně se pohybujících os to podstatné. Jitter mezi osami je horší než jitter jedné osy.