SysLab kdo s kým mluví, a po čem

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

Volba sběrnice: co která utne

Užitečná otázka není „která sběrnice je nejlepší“, ale kterou podmínku který kandidát neprojde. To je totiž jediná informace, ze které jde poznat, proč byla ta zřejmá volba špatně — a jestli se dá zadání změnit tak, aby se vešla.

rychlostdosahlatenceúčastníciizolaceI²CSPIUARTRS-485CANEthernetEtherCATzadání: 500 kb/s · 3,0 m · 1000 µs · 4 účastníkůnejjednodušší, co vyhoví: RS-485 — kilometr po kroucené dvoulince, ale protokol si napíšeš sám
Pět podmínek a sedm kandidátů. Táhni délkou a dívej se, co zhasne dřív než rychlost.

Délka utne dřív než rychlost

Nejčastější překvapení: dvacet metrů k rameni vyřadí všechno nesymetrické — I²C, SPI i UART — a udělá to při pěti stech kilobitech, tedy v rychlosti, kterou zvládne kdeco. Zbydou jen symetrické sběrnice, a to není náhoda: každá sběrnice v tabulce, která umí víc než pár metrů, je symetrická, protože jinak nemá jak odečíst rozdíl potenciálů mezi dvěma konci kabelu.

dosah > 5 m ⟹ symetrickáplatí pro všech sedm položek v tabulce

Latence není rychlost

Druhé překvapení: CAN má na 1 Mb/s dost propustnosti pro šest kloubů (příští kapitola to spočítá), a přesto se do rychlé smyčky nehodí. Ta dvě stě mikrosekund není doba přenosu — je to arbitráž a zásobník, a zvýšení bitové rychlosti s nimi nehne. Proto EtherCAT: čte rámec za jízdy a nečeká, až dojede celý.

Nejjednodušší, ne nejrychlejší

Když vyhoví víc kandidátů, nástroj vybere ten s nejmenším počtem vodičů a pak ten s největší rezervou na nejtěsnější podmínce. Není to estetika: každý vodič navíc je konektor, kus svazku a jeden způsob, jak to zapojit špatně.

Kde ta čtyři čísla nestačí

Nastav si tři metry dlouhý spoj na sedm set kilobitů k osmi uzlům — tedy přesně šestiosý robot ve skříni. Nástroj vybere RS-485, ne CAN, a má pravdu: CAN má strop 1 Mb/s, takže mu na sedmi stech kilobitech zbývá 1,4×, kdežto RS-485 má rezervu desetinásobnou. Podle čtyř čísel to není ani těsné rozhodnutí.

A přesto se staví CAN. Důvod není v žádném z těch čtyř čísel: CAN má arbitráž bez kolize a prioritu zabudovanou ve zprávě, kdežto u RS-485 je linka jen linka a všechno ostatní — kdo kdy smí vysílat, co se stane při kolizi, jak se pozná chyba — si musí návrhář napsat sám. To je práce na měsíce a je to práce, ve které se dělají chyby.

Tenhle nástroj to nepočítá, protože se to spočítat nedá; poznámka u každé sběrnice to aspoň říká slovy. Užitek z toho výběru je jinde: říká, které kandidáty nemá smysl ani zvažovat, a to je většina tabulky.

Past: spoj s jedním procentem rezervy není vyřešený spoj. Nástroj proto počítá rezervu na každé podmínce zvlášť a řadí podle té nejtěsnější.