Rozpočet taktů regulační smyčky
Smyčka na 1 kHz má na 168MHz čipu 168 000 taktů na jednu otočku. To je celý rozpočet a nedá se z něj ukrojit — všechno, co se má stihnout, se do něj musí vejít.
Co v takové smyčce doopravdy je
| úloha | typicky taktů | proč tolik |
|---|---|---|
| čtení ADC + filtr | 300–1500 | několik kanálů, klouzavý průměr |
| PID na osu | 150–600 | pár násobení, saturace, anti-windup |
| přímá kinematika | 2000–8000 | goniometrie — a to je ten sčítanec, co překvapí |
| komunikace | 500–2000 | sestavení rámce, CRC |
Goniometrie je drahá a nikdo to nečeká. Jeden
sinf() je na Cortex-M4 s plovoucí čárkou kolem sta taktů, bez jednotky pro plovoucí
čárku klidně tisíc. Kinematika šestiosého ramene jich potřebuje desítky — proto stojí čtyři tisíce
taktů, a proto se ve vnitřní smyčce nepočítá. Patří do vnější, pomalejší.
Dvě smyčky místo jedné
Standardní odpověď, a je vidět v číslech: rychlá smyčka (proud, 10–20 kHz) dělá jen to, co musí — čtení, PID, PWM, dohromady pár set taktů. Pomalá smyčka (poloha a kinematika, 1 kHz) dostane dvacetkrát víc času na dvacetkrát dražší práci. Je to táž dělba, jakou ControlLab popisuje kaskádou regulátorů — jen viděná v taktech místo ve frekvenčních charakteristikách.
Kde končí „prostě to zoptimalizuju“
Nejrychlejší možná smyčka je fclk dělené skutečnou prací. Když z toho vyjde míň, než je potřeba, existují jen tři cesty: rychlejší čip, míň práce (tabulka místo výpočtu, pevná řádová čárka místo plovoucí), nebo práci rozdělit na víc period. Čtvrtá neexistuje.