NSSM – Nelineární stavový model
Symbol blokuPotřebná licence: MODEL
Popis funkce
Blok poskytuje řešení stavové a výstupní rovnice nelineárního dynamického
systému popsaného soustavou diferenciálních rovnic
pro spojitý čas nebo
pro diskrétní systém. Spojitá rovnice je interně diskretizována do tvaru
kde je perioda vzorkování NSSM bloku.
Metoda diskretizace a numerického řešení stavové rovnice závisí na volbě uživatelského parametru solver. K dispozici jsou metody jednokrokové (Runge-Kutta, Euler), vícekrokové (Adams-Bashforth) a implicitní (Adams-Moulton). U některých metod lze volit řád pro nalezení vhodného kompromisu mezi přesností a rychlostí výpočtu modelu.
Blok nepodporuje algoritmy řešení s variabilním krokem. Velikost časového kroku je vždy shodná s periodou spouštění funkčního bloku.
Nelineární vektorové funkce musí být implementovány v REXLANG bloku, který je připojen k bloku NSSM specifickým způsobem. Vstup funcRef bloku NSSM musí být připojen na výstup y0 spolupracujícího REXLANG bloku a výstup y0 nesmí být použit interně v kódu bloku REXLANG. Výstupy x, f a df bloku NSSM musí být připojeny na vstupy bloku REXLANG. Tyto vstupy musí být zpracovány v bloku REXLANG jako vstupní pole. Hlavní main funkce bloku REXLANG musí nastavovat hodnotu vektorové funkce do vektoru f (tj. do vstupního pole, kam je f připojeno), matice se ukládá do matice af.
Blok NSSM volá funkci main bloku REXLANG pokud je potřeba vyhodnotit pravou stranu rovnice pro numerickou integraci (například Runge-Kutta metoda provádí 4 volání v každé periodě spuštění bloku s různými hodnotami argumentu x). Blok REXLANG musí být ve schématu zakázán, aby se zabránilo jeho automatické spuštění systémem REXYGEN. Pokud je potřeba spouštění bloku REXLANG (například pro výpočet nelineární výstupní rovnice ), je doporučeno zapojit výstup cmd bloku NSSM na vstup bloku REXLANG pro rozlišení mezi voláním z NSSM bloku pro numerickou integraci stavové rovnice () a voláním ze systému REXYGEN system ().
Poznámky:
- výpočet Jakobiánu je nutný jen pro implicitní metody.
- velikost pole x (a tím také f, df) je definováno dimenzí pole x0. Změna velikosti je dovolena pouze při aktivaci vstupu reset (RST).
- solver=1: discrete signalizuje diskrétní stavovou rovnici s funkcí f označující pravou stranu příslušné diferenční rovnice. Tento režim nevyžaduje numerickou integraci a algoritmus se redukuje na prosté vyhodnocení pravé strany definované rekurzí; tento režim v principu nevyžaduje použití NSSM bloku (lze řešit přímo pomocí REXLANG); tento režim je zachován zejména z důvodu kompatibility s příbuzným blokem EKF.
- pro blok NSSM je nutné připojení výstupu cmd, protože cmd>0 indikuje počet měření, které musí vracet blok REXLANG při vyhodnocení , .
Tento blok nepropaguje kvalitu signálu. Více informací je uvedeno v sekci 1.4.
Vstup
funcRef | Odkaz na spolupracující blok REXLANG | Reference |
u | Vektor vstupů modelu | Reference |
RST | Reset bloku | Bool |
HLD | Pozastavení | Bool |
x0 | Vektor počáteční hodnoty stavu modelu | Reference |
Parametr
nmax | Rezervovaná paměť pro výstupní matici (celkový počet prvků) 5 10000 20 | Long (I32) |
solver | Metoda numerické integrace 2 | Long (I32) |
|
|
|
Výstup
x | Vektor stavu modelu | Reference |
y | Výstupní vektor modelu | Reference |
cmd | Číslo příkazu navázaného bloku REXLANG | Long (I32) |
f | Odkaz na vektor nastavovaný navázaným blokem REXLANG | Reference |
df | Odkaz na matici nastavovanou navázaným blokem REXLANG | Reference |
err | Kód chyby (0 bez chyby, jinak popis v system logu) | Long (I32) |
[Předchozí] [Na začátek] [Výše] [Další]
2024 © REX Controls s.r.o., www.rexygen.com