Postup s vytvořenými skripty ze cvičení:

Simulační model

Popisuji matematický model inverzního kyvadla, odvozený metodou Lagrangeových rovnic II. druhu na cvičení. V souboru main.m upravíme část se vstupními parametry aby zahrnovaly všechny potřebné pro Vaši úlohu:
% parametry systemu
L = 0.02; % L [m]
parametry{1} = 0.1; % m [kg]
parametry{2} = 0.3; % M [kg]
parametry{3} = L; % L [m]
parametry{4} = 9.81; % g [m/s^2]
parametry{5} = 3; % b [N.s/m]
parametry{6} = 1e-3; % Is [kg.m^2]
Dále upravíme funkci DynSystem.m tak, že načteme parametry, sestavím matici M a vektor pravých stran Q a sestavíme derivaci stavů. Upravovaná část kódu:
m = parametry{1};
M = parametry{2};
L = parametry{3};
g = parametry{4};
b = parametry{5};
Is = parametry{6};

x = z(1);
phi = z(2);
dx = zt(1);
dphi = zt(2);

MaticeM = [M+m          m*L*cos(phi)
           m*L*cos(phi) m*L^2+Is];
VektorQ = [m*L*sin(phi)*dphi^2-b*dx + Vstupy(1)
           m*g*L*sin(phi)];

ztt = MaticeM\VektorQ;
dStavy = [dx;ztt(1);dphi;ztt(2)];
Poté nastavíme v main.m počáteční podmínky simulace (nejlépe ne rovnovážné, protože nejprve použijeme nulový vstup):
% pocatecni poloha
X0=[0;0;pi/8;0]; % [x,dx,phi,dphi]
A můžeme spustit simulaci, kód v souboru main.m:
% simulace
[t,x]=ode45(@(t,x) DynSystem(t,x,0,parametry),0:1e-5:10,X0);
Další část souboru main.m ukazuje vykreslení stavů a animaci pohybu.

Linearizovaný model

Linearizuji soustavu pomocí Taylorova rozvoje a dosadím rovnovážný bod, můžu použít postup v DynSystem2lin.m, kde nejprve vytvořím symbolické proměnné všech stavů a použitých parametrů, pro případ kyvadla na vozíčku to vypadá takto:
% zavedeni symbolickych promennych vsech parametru a stavu vcetne vstupu
syms F m M L g b x phi dx dphi real
Is = 0;
přiřadím vstupní proměnnou:
% prirazeni vstupu
Vstupy = F;
zkopíruju z DynSystem.m model soustavy s vyjádřenými zrychleními stavů a pro stavy a vstupy provedu linearizaci:
% samotný výpočet derivací pro matice A,B:
JakobiA = jacobian(dStavy,[x dx phi dphi]);
JakobiB = jacobian(dStavy,F);
nadefinuju si rovnovážný bod soustavy
% rovnovazny bod
X0 = [0;0;0;0];
F0 = 0;
a dosadím do symbolických matic za stavy a vstupy:
% dosazeni rovnovazneho bodu do matic:
A=subs(JakobiA,[x; dx; phi; dphi; F],[X0;F0]);
B=subs(JakobiB,[x; dx; phi; dphi; F],[X0;F0]);
takto vytvořené matice A a B vložím do souboru LinSystem.m, ve kterém rovněž upravím část se vstupními parametry:
A = [0      1       0               0
     0      -b/M    -m*g/M          0
     0      0       0               1
     0      b/L/M   (m+M)*g/L/M     0];

 B = [0
    1/M
    0
    -1/L/M];
Dále zvolím výstup systému Y a vztah zase linearizuji a dosadím rovnovážný bod:
C = [1 0 L 0];
D = [0];
V poslední části dojde k výpočtu matice řiditelnosti, pozorovatelnosti a výpočtu vlastních čísel:
% riditelnost
R = ctrb(A,B);
% pozorovatelnost
O = obsv(A,C);
% stabilita
lambda = eig(A);

Vyhodnocení linearizovaného modelu

V další části souboru main.m je provedeno vyhodnocení modelu, jeho řiditelnost, pozorovatelnost a stabilita.

Vytvoření modelu v prostředí Matlab-Simulink vhodného k řízení

Úpravou prvního řádku souboru DynSystem.m je vytvořen soubor DynSystemSimulink.m, jehož první tři řádky jsou modifikovány pro použití v simulinkovské m-funkci (je nutno znát počet stavů, v našem příkladě 4):
function dStavy = DynSystemSimulink(VstupySimulink,parametry)
Stavy = VstupySimulink(1:4);
Vstupy = VstupySimulink(5);
Nyní vytvoříme model v Simulinku, prázdný model vyvoláme příkazem >>simulink v okně matlabu. Modifikujeme hlavně buňku simulinkovského modelu označenou Fcn, která obsahuje funkci výstupní proměnné:
podklady pro ŘMS1
Model v simulinku je uložen jako MainSimulink.slx pro Matlab 2013a, pro starší verze jsou MainSimulink.mdl a MainSimulink2006.mdl. V souboru main.m je ukázáno, jak lze tento model spustit ze skriptu matlabu a vykreslení časové simulace linearizovaného a původního modelu:
sim('MainSimulink',0:1e-5:1);

figure;
plot(simout(:,1),simout(:,2));
figure;
plot(simout(:,1),simout(:,3));