NSSM – Nelineární stavový model

Symbol blokuPotřebná licence: MODEL
PIC

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 dxdt = f(x,u),y = h(x,u) pro spojitý čas nebo x(k + 1) = f(x(k),u(k)),y(k) = h(x(k),u(k)) pro diskrétní systém. Spojitá rovnice je interně diskretizována do tvaru x(t) = F(x(t T),u(t)), kde T 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 f(x,u),h(x,u) 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 f(x,u) do vektoru f (tj. do vstupního pole, kam je f připojeno), matice df(x,u)dx 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 y = h(x,u) ), 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 (cmd = 0) a voláním ze systému REXYGEN system (cmd = 1).

Poznámky:

  • výpočet Jakobiánu df(x,u)dx 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 aktivacu 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í f = h(x,u), df = dh(x,u)dx.

Vstupy

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

Parametry

nmax

Rezervovaná paměť pro výstupní matici (celkový počet prvků)   5  10000 20

Long (I32)

solver

Metoda numerické integrace  2

Long (I32)

1 ....

diskrétní model

2 ....

Eulerova metoda (1. řád)

3 ....

metoda Adams-Bashforth 2. řádu

4 ....

metoda Adams-Bashforth 3. řádu

5 ....

metoda Adams-Bashforth 4. řádu

6 ....

metoda Adams-Bashforth 5. řádu

7 ....

Runge-Kutta 4. řádu

8 ....

implicitní Euler

9 ....

implicitní Euler (více iterací)

10 ...

implicitní Adams-Moulton 2. řádu

11 ...

implicitní Adams-Moulton 2. řádu (více iterací)

12 ...

implicitní Adams-Moulton 3. řádu

13 ...

implicitní Adams-Moulton 3. řádu (více iterací)

14 ...

implicitní RadauIIA 2. řádu

15 ...

implicitní RadauIIA 2. řádu (více iterací)

16 ...

implicitní RadauIIA 3. řádu

17 ...

implicitní RadauIIA 3. řádu (více iterací)

Výstupy

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)

2023 © REX Controls s.r.o., www.rexygen.com