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.

Rozpočet propustnosti: nikdy to není užitečný obsah

„Vždyť je to jenom osm bajtů“ není odpověď na otázku, jestli se to vejde. Na drát totiž neodchází osm bajtů, ale rámec — a u malých zpráv je režie ta větší půlka.

8 B dat47 b111 bitů na drátě — režie je 42 %70 %1 Mb/s67 %6 kloubů × 1000 Hz × poloha = 666 kb/sz toho užitečných 384 kb/s — zbytek je režie
  1. užitečné = 8 B = 64 b

    Osm bajtů na kloub: poloha a rychlost. To je celý užitečný obsah jedné zprávy.

  2. režie = 44 + 3 = 47 b

    Standardní rámec CAN bez dat má 44 bitů a po něm musí projít tři bity mezery. Ta režie odejde s každou zprávou znovu.

  3. rámec = 64 + 47 = 111 b

    Sto jedenáct bitů na osm bajtů dat. Režie je čtyřicet dva procent — u osmi bajtů, tedy u největšího rámce, jaký klasický CAN umí.

  4. zatížení = 67 %

    Šest kloubů po kilohertzu se vejde — zabere dvě třetiny sběrnice. Přidej proud a nevejde se.

Od osmi bajtů k zatížení sběrnice. Přepni „i proud“ a dívej se, co to udělá.

Šest kloubů se vejde. Sedmý stream ne.

Tohle je hlavní číslo celé kapitoly a je jiné, než se čeká. Šest kloubů, které posílají polohu po kilohertzu, zabere 666 kb/s, tedy 67 % megabitové sběrnice CAN — vejde se to, a dokonce s rezervou. Sběrnice není problém.

Problém přijde ve chvíli, kdy někdo řekne „a přidáme ještě proud“. Proud jsou čtyři bajty, tedy polovina toho, co poloha. Jenže:

4 B → 32 + 47 = 79 b · 8 B → 64 + 47 = 111 b · 79 / 111 = 0,71polovina dat, ale 71 % drátu

Druhý stream stojí 71 % prvního, přestože nese poloviční data — protože si s sebou znovu bere celých 47 bitů režie. Šest kloubů se dvěma streamy je 1 140 kb/s, tedy 114 %. Sběrnice, která měla třetinovou rezervu, přeteče.

Proč se to nedá zabalit

Dvanáct bajtů v jednom rámci by se vešlo — 12 B na kloub je 143 bitů, šest kloubů 858 kb/s, tedy 86 %. Jenže klasický CAN nemá dvanáctibajtový rámec: maximum je osm. Není to aritmetický problém, ale problém návrhu, a řeší se buď CAN FD, nebo tím, že proud nepoletí po kilohertzu.

Kde se to číslo bere

Čtyřicet čtyři bitů prázdného rámce nepočítá tahle labka — počítá je LinkLab, bit po bitu, včetně tří řídicích bitů, o které se dá snadno splést. Tady se k nim přidávají tři bity mezery, protože ta ke zprávě nepatří, ale k zatížení sběrnice ano. Testy hlídají, že se ta dvě čísla nerozejdou.

Past: režie se počítá na zprávu, ne na bajt. Zdvojnásobit frekvenci malého streamu bolí víc než zdvojnásobit jeho velikost.

Vzorce v této kapitole

bitů — rámec CAN na drátě, i s mezerou
bity = 8·B + 47 [b] ISO 11898
zatížení — zatížení sběrnice
zatížení = Σ (8·B_i + 47)·f_i / R [—] ISO 11898