% 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 modal con acción integral. Asignación de polos
% por realimentación del vector de estados con 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);

% Matrices principales ampliadas del sistema linealizado.
Aa = [A zeros(2,2); -C zeros(2,2)]; 
Ba = [B;-D]; 
Ca = [C zeros(2,2)]; 
Da = D; 

% Matriz de controlabilidad del sistema.
M_c = [Ba Aa*Ba Aa^2*Ba Aa^3*Ba];

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

% Polos deseados del sistema en lazo cerrado.
Polos_deseados = [-2000 + 100i, -2000 - 100i, -1000 + 200i, -1000 - 200i];

% Verificacion de los polos deseados del sistema en lazo cerrado.
format shortg
disp('Polos deseados del sistema en lazo cerrado:');
disp(Polos_deseados);
format

% Cálculo de la matriz de realimentación de estados Kca_place.
Kca_place = place(Aa, Ba, Polos_deseados);

Kc = Kca_place(:, 1:2); % Acción proporcional.
Ki = -Kca_place(:, 3:4); % Acción integral.

format long e

% Verificacion del controlador.
disp('Matriz de ganancias Kc:');
disp(Kc);

% Verificacion del controlador.
disp('Matriz de ganancias Ki:');
disp(Ki);

% Polos del sistema en lazo cerrado.
Polos_modal = eig(Aa-Ba*Kca_place);

% Verificacion de los polos del sistema en lazo cerrado.
format long e
disp('Polos del sistema en lazo cerrado:');
disp(Polos_modal);
format

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


% 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).


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

% Ruido en la medida de los sensores.
% Ruido sensores corrientes.
D_R_i = 5e-3;                 % Desviación tipica ruido i.
V_R_i = D_R_i^2;              % Varianza ruido i.

% Perturbacion interna.
% Desviacion respecto al valor nominal.
I_Delta_v_1 = 0.1;    % Instante de la desviación.
Delta_v_d_1 = 8;      % Porcentaje de desviación.
Delta_v_q_1 = 1;      % Desviación.

% Perturbacion externa.
% Matriz W
W = [1,  0;
     0, 1];

% Parámetros constantes
I_p_1 = 0.15;         % Instante tiempo perturbación externa.
p_11 = 5;             % Magnitud perturbacion 11.
p_12 = -2;            % Magnitud perturbacion 12.


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











