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.
Odkud se rozptyl bere
Ze tří zdrojů, a všechny tři jsou z předchozích labek:
- 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.
- Opakování. Rámec, který se ztratí, se pošle znovu. Kolikrát, to je geometrické rozdělení, a to má dlouhý tenký ocas.
- 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čina | k čemu je |
|---|---|
| medián (p50) | jak to vypadá v dobrý den; k návrhu nepoužitelné |
| p95 | běžná měřítková hodnota pro telemetrii |
| p99 – p99,9 | na tohle se navrhuje regulátor |
| maximum | na 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í.