clc
echo on
%zadani systemu
sys=tf(9,[1 6 9 0])
%zobrazeni logaritmicke frekvencni charakteristiky
bode (sys)

pause %zmackni libobovolnou klavesu pro pokracovani

%zobrazeni a vypocet kritickych hodnot zesileni a faze
margin(sys)

pause %zmackni libobovolnou klavesu pro pokracovani

% vypocet kriticke rezervy v zesileni a ve fazi
%  a jim odpovidajici hodnoty frekvenci
% Kr - rezerva v zesileni - kriticka hodnota zesileni
% Fk - rezerva ve fazi
% wk - kriticka frekvence pro Kr
% wf - kriticka frekvence pro Fk
[Kr,Fk,wk,wf]=margin(sys)

pause %zmackni libobovolnou klavesu pro pokracovani

Tk=2*pi/wk % vypocet kriticke periody z kriticke frekvence
K=0.6*Kr   % vypocet zesileni PID regulatoru
Ti=0.5*Tk  % vypocet integracni casove konstanty
Td=0.12*Tk % vypocet derivacni casove konstanty

reg = tf([K*Ti*Td K*Ti K],[Ti 0]) % prenos PID regulatoru

pause %zmackni libobovolnou klavesu pro pokracovani

Go=sys*reg         %prenos otevreneho regulacniho obvodu
Gro=feedback(Go,1) %prenos uzavreneho regulacniho obvodu

pause %zmackni libobovolnou klavesu pro pokracovani

step(sys,Gro)