% Trabajo de Fin de Grado.
% Grado en Ingeniería Electrónica Industrial.
% Título: Diseño y control de un convertidor Back-to-Back: Análisis teórico
% y validación mediante simulación.
% Autor: José Antonio Ramírez Jurado.
% Tutor: Dr. Manuel Jesús López Sánchez.
% Cádiz, junio 2024.

%--------------------------------------------------------------------------

% Subtítulo: Diseño control optimo LQR sin acción integral.

% Parámetros constantes del sistema.
L_1 = 4.1e-3;           % Inductancia (henrios).
R_1 = 284e-3;           % Resistencia (ohmios).
m_t1 = 5;               % Amplitud portadora triangular (voltios).
C_DC = 6.8e-3;          % Capacitancia condensador (Faradios).
omega_1 = 377;          % Frecuencia (radianes/segundo).


% Valores de operación del sistema.
V_DC0 = 500;            % Tensión DC (voltios).



% Matrices principales del sistema lineal.
% Matriz A
A = [-R_1/L_1,  omega_1;
     -omega_1, -R_1/L_1];

% Matriz B
B = [-V_DC0/(2*L_1*m_t1),  0;
      0, -V_DC0/(2*L_1*m_t1)];

% Matriz C 
C = eye(2);

% Matriz D 
D = zeros(2);


% Matriz de controlabilidad del sistema.
M_c = [B A*B];

% Verificación de la controlabilidad del sistema.
rank(M_c)

% Matrices de ponderación.
Q = diag([1, 1]);
R_c = 1;

% Cálculo de la matriz de realimentación de estados Kc, solución de la 
% ecuación algebraica de Riccati asociada y polos del sistema en lazo
% cerrado.
[Kc, Riccati_LQR, Polos_LQR] = lqr(A, B, Q, R_c);

format long e

% Verificación del controlador.
disp('Matriz de ganancias Kc:');
disp(Kc);

% Verificación de la solución de la ecuación algebraica de Riccati 
% asociada.
disp('Solucion de la ecuacion algebraica de Riccati asociada:');
disp(Riccati_LQR);

% Verificación de los polos del sistema en lazo cerrado.
disp('Polos del sistema en lazo cerrado:');
disp(Polos_LQR);

format

% Diseño del filtro al set-point.
te = 1e-2; % Tiempo estacionario.
tau = te/5; % Constante de tiempo del filtro en segundos.

                                                                % Prueba 1
%--------------------------------------------------------------------------

% Diseno del precompensador.
Ayr = A - B*Kc;
Cyr = C - D*Kc;

Prec = inv(Cyr * inv(-Ayr) * B + D);

                                                                % Prueba 2
%--------------------------------------------------------------------------

% Diseno del precompensador.
Ayr = A - B*Kc;
Cyr = C - D*Kc;

Prec = inv(Cyr * inv(-Ayr) * B + D);

                                                                % Prueba 3
%--------------------------------------------------------------------------

% Perturbacion interna.
% Matriz E
E = [1/L_1,  0;
     0, 1/L_1];

% Parámetros constantes
v_d_1 = 100*sqrt(2);   % Tension pico AC VSC1 (Voltios).
v_q_1 = 0;             % V_pico = V_rms * sqrt(2).











