RoboLinkLab spoj dělá smyčku nepředvídatelnou

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.

Rozptyl, ne zpoždění

Smyčka snese pomalý spoj mnohem líp než spoj překvapivý. Konstantní zpoždění se dá kompenzovat — regulátor s modelem soustavy s ním umí počítat, a i obyčejné PID se dá naladit na známé mrtvé pásmo. Rozptyl kompenzovat nejde, protože není známý dopředu.

100 %10 %1 %10⁻³10⁻⁴10⁻⁵10⁻⁶3,004,516,027,539,0410,5512,0613,57jak často které zpoždění (log)počet opakovánímedián3,0 ms10,8°95. percentil4,5 ms16,2°99. percentil4,5 ms16,2°nejhorší případ13,5 ms48,6°rozptyl (99. percentil − medián): 1,5 ms = 5,4°Regulátor se musí navrhnout na ten pravý konec, ne na medián. Průměrné zpoždění nikdo nezažije.Zelené sloupce jsou to obvyklé, červené to, co smyčku shodí — a jsou vidět jen na logaritmu.
Rozdělení zpoždění pro daný počet opakování — všimni si logaritmické osy, bez ní by ten ocas nebyl vidět. Vpravo je, co který percentil stojí ve stupních fáze.

Odkud se rozptyl bere

Ze tří zdrojů, a všechny tři jsou z předchozích labek:

  1. Přístup k médiu. CSMA/CA čeká náhodně dlouho — to je celá WiFiLabova kapitola o odpočítávání. Náhodné je to úmyslně, aby se stanice nesrazily.
  2. Opakování. Rámec, který se ztratí, se pošle znovu. Kolikrát, to je geometrické rozdělení, a to má dlouhý tenký ocas.
  3. Fronty. Ve stacku, v ovladači, v přepínači. Když se sejdou dva rámce, druhý čeká — a to je nejhůř předvídatelný ze všech tří zdrojů.

Proč se počítá s percentilem, a ne s průměrem

Průměrné zpoždění nikdo nezažije. Rozdělení má typicky ostrý vrchol u minima a řídký ocas napravo, takže průměr leží mezi dvěma hodnotami, které nastávají. Regulátor přitom neztratí stabilitu při průměrném zpoždění — ztratí ji při tom nejhorším, které nastane.

veličinak čemu je
medián (p50)jak to vypadá v dobrý den; k návrhu nepoužitelné
p95běžná měřítková hodnota pro telemetrii
p99 – p99,9na tohle se navrhuje regulátor
maximumna tohle se nastavuje watchdog

Co se s rozptylem dá dělat

  • Časová značka u každého vzorku. Když regulátor ví, jak starý vzorek dostal, může to zohlednit — a zahodit ten, který přišel po novějším. Bez značky je proměnlivé zpoždění neviditelné a nedá se s ním nic dělat.
  • Vyrovnávací buffer. Záměrně počkat do pevného okamžiku a tím proměnlivé zpoždění proměnit na konstantní. Platí se za to tím, že je delší — ale konstantní zpoždění je poctivý obchod.
  • Omezit počet opakování. Rámec s povelem, který dorazí o padesát milisekund později, není užitečný — je škodlivý. Lepší ho zahodit a poslat čerstvý.

Nejčastější chyba v návrhu bezdrátové smyčky: nastavit maximální počet opakování na výchozích sedm. U přenosu souboru je to správně, protože tam je opožděný bajt pořád ten správný bajt. U řízení je opožděný povel horší než žádný — protože reaguje na stav, který už neplatí.