Command Cheat Sheet
Matlab
Tento přehled obsahuje klíčové příkazy pro Control System Toolbox a Symbolic Math Toolbox, zaměřené na analýzu systémů, přenosové funkce, stavový prostor a návrh regulátorů.
1. Reprezentace systémů (Modely a diskretizace)
Před prací se systémy je nutné je v MATLABu nadefinovat. Lze použít přenosové funkce, stavový prostor, nebo nuly a póly.
| Příkaz | Popis |
|---|---|
tf(num, den) |
Vytvoří spojitou přenosovou funkci z vektorů koeficientů čitatele a jmenovatele. |
zpk(z, p, k) |
Vytvoří model z nul, pólů a zesílení. |
ss(A, B, C, D) |
Vytvoří model ve stavovém prostoru ze stavových matic. |
tf(Gss) |
Převede stavový model Gss na přenosovou funkci. |
zpk(Gss) |
Převede systém na tvar rozložený na kořeny (nuly/póly). |
c2d(G, Ts, 'zoh') |
Převede spojitý systém na diskrétní s periodou vzorkování Ts (Zero-Order Hold). |
d2c(G_disc) |
Zpětný převod z diskrétního do spojitého času. |
Příklad v kódu:
% --- Stavový prostor ---
A = [1 2; 3 4]; B = [1; 0]; C = [1 1]; D = 0;
Gss = ss(A, B, C, D);
% --- Přenosová funkce ---
s = tf('s'); % Založení Laplaceovy proměnné jako objektu
G = 1 / (s^2 + 2*s + 1); % Rychlý zápis přenosu
% --- Převod na diskrétní ---
Gd = c2d(G, 0.1, 'zoh'); % Vzorkovací perioda 0.1s
2. Analýza systémů a charakteristiky
Klíčové příkazy pro zjištění vlastností systému a jeho chování (v čase i frekvenci).
| Příkaz | Popis |
|---|---|
pole(G) |
Vrátí póly systému (vlastní čísla matice A - určují stabilitu). |
zero(G) |
Vrátí nuly systému. |
dcgain(G) |
Zesílení v ustáleném stavu (DC gain). Hodí se pro výpočet trvalé regulační odchylky. |
pzmap(G) |
Vykreslí mapu nul a pólů do komplexní roviny. |
step(G) |
Vykreslí přechodovou charakteristiku (odezva na jednotkový skok). |
stepinfo(G) |
Vypíše detaily odezvy: překmit (Overshoot), dobu náběhu (RiseTime) a ustálení (SettlingTime). |
impulse(G) |
Vykreslí impulzní charakteristiku (Dirackův impuls). |
lsim(G, u, t) |
Odezva na libovolný vstupní signál u v čase t. |
bode(G) |
Vykreslí Bodeho frekvenční charakteristiku (amplituda a fáze). |
nyquist(G) |
Vykreslí Nyquistovu křivku. |
margin(G) |
Vykreslí Bodeho graf a ukáže zásobu stability (Amplitudová a fázová bezpečnost). |
rlocus(G) |
Geometrické místo kořenů (Root Locus) pro návrh regulátoru podle zesílení. |
3. Algebra blokových schémat (Propojování)
Funkce pro redukci složitých schémat na jeden výsledný přenos.
G1 = tf(1, [1 1]);
G2 = tf(2, [1 3]);
G_ser = series(G1, G2); % Sériové zapojení (G1 * G2)
G_par = parallel(G1, G2); % Paralelní zapojení (G1 + G2)
G_fb = feedback(G1, G2); % Zpětnovazební smyčka (G1 v přímé, G2 ve zpětné větvi)
G_fb_jednotkova = feedback(G1, 1); % Jednotková záporná zpětná vazba (častý případ)
4. Stavový prostor – Vlastnosti a Řízení (Pole Placement & LQR)
Testy matic stavového prostoru a metody pro výpočet matice zpětné vazby $K$ (kde řízení $u = -Kx$).
| Příkaz | Popis |
|---|---|
Co = ctrb(A, B) |
Matice řiditelnosti (Controllability matrix). |
Ob = obsv(A, C) |
Matice pozorovatelnosti (Observability matrix). |
rank(Co) |
Určí hodnost matice. Pokud rank(Co) == délka(A), systém je plně řiditelný. |
eig(A) |
Vlastní čísla matice A (odpovídá pólům systému). |
K = acker(A, B, p) |
Metoda umístění pólů (pro SISO systémy). Vypočte matici $K$ tak, aby uzavřený systém měl póly p. |
K = place(A, B, p) |
Robustnější metoda umístění pólů (i pro MIMO systémy). |
K = lqr(A, B, Q, R) |
Lineární kvadratický regulátor. Najde optimální $K$ na základě penalizačních matic Q (stavy) a R (akční zásah). |
5. Návrh PID regulátorů
Příkazy pro rychlou definici a automatické ladění PID regulátorů.
% Definice vlastního PID regulátoru
Kp = 1; Ki = 0.5; Kd = 0.1;
C_pid = pid(Kp, Ki, Kd);
% Automatické ladění na základě přenosu soustavy G
C_tuned = pidtune(G, 'PID'); % Navrhne optimální PID
C_pi = pidtune(G, 'PI'); % Navrhne pouze PI regulátor
% Připojení regulátoru k soustavě (zpětná vazba)
T_uzavrena_smycka = feedback(C_tuned * G, 1);
step(T_uzavrena_smycka); % Otestování výsledné odezvy
6. Symbolic Math Toolbox a Linearizace
Skvělé pro analytické řešení diferenciálních rovnic, výpočty přechodových matic a linearizaci nelineárních modelů.
Analytické řešení a stavová přechodová matice:
syms s t % Založení symbolických proměnných
A = [1 2; 0 3];
x0 = [1; 0]; % Počáteční podmínky
% Matice přechodu pomocí exponenciály:
Phi_t = expm(A*t); % !!! expm() je maticová exponenciála, NEPLÉST s exp() !!!
pretty(Phi_t); % Graficky hezčí výpis v příkazové řádce
% Řešení přes Laplaceovu transformaci:
I = eye(2); % Jednotková matice 2x2
X_s = inv(s * I - A) * x0; % (sI - A)^-1 * x0
x_t = ilaplace(X_s); % Inverzní Laplace - návrat do časové oblasti
Linearizace pomocí Jacobiho matice:
syms x1 x2 u
% Nelineární diferenciální rovnice: dx/dt = f(x,u)
f1 = -x1^2 + x2 + u;
f2 = x1 - x2*u;
% Linearizace (nalezení matic A, B)
A_sym = jacobian([f1; f2], [x1, x2]); % Derivace podle stavů (A)
B_sym = jacobian([f1; f2], u); % Derivace podle vstupů (B)
% Pro zjištění číselné matice dosaď pracovní bod (např. x1=0, x2=0, u=1):
A_prac_bod = subs(A_sym, [x1, x2, u], [0, 0, 1]);
B_prac_bod = subs(B_sym, [x1, x2, u], [0, 0, 1]);
No comments to display
No comments to display