%% Simulation / Asservissement d'un système % Module : Ingénierie Electronique % pour le Traitement de l'Information %-------------------------------------------------------------- % TD_11 : Asservissement / Comparaison % Premier ordre / Deuxième ordre %-------------------------------------------------------------- % Auteur : Julien VILLEMEJANE % Date : 12/12/2020 %-------------------------------------------------------------- clear all; close all; f = logspace(0,5,1001); w = 2*pi.*f; t = linspace(0,2e-2,1001); %% Système du premier ordre G0 = 0.5; tau = 2e-3; num_1 = [G0]; den_1 = [tau 1]; % Boucle ouverte FTBO = tf(num_1, den_1); [mag_FTBO, phase_FTBO, w_FTBO] = bode(FTBO, w); mag_FTBO = squeeze(mag_FTBO); [y_FTBO, t_FTBO] = step(FTBO, t); % Boucle fermée sans correction - retour B = 1 FTBF = feedback(FTBO, 1); [mag_FTBF, phase_FTBF, w_FTBF] = bode(FTBF, w); mag_FTBF = squeeze(mag_FTBF); [y_FTBF, t_FTBF] = step(FTBF, t); % Boucle fermée avec correction proportionnelle G=10 - retour B = 1 G = 10; FTBF_P = feedback(G*FTBO, 1); [mag_FTBF_P, phase_FTBF_P, w_FTBF_P] = bode(FTBF_P, w); mag_FTBF_P = squeeze(mag_FTBF_P); [y_FTBF_P, t_FTBF_P] = step(FTBF_P, t); % Boucle fermée avec correction proportionnelle G=10 et intégrale tau=3e-5 - retour B = 1 taui = 3e-5; Cpi = tf([1],[taui 0]); FTBF_PI = feedback((G+Cpi)*FTBO, 1); [mag_FTBF_PI, phase_FTBF_PI, w_FTBF_PI] = bode(FTBF_PI, w); mag_FTBF_PI = squeeze(mag_FTBF_PI); [y_FTBF_PI, t_FTBF_PI] = step(FTBF_PI, t); figure; semilogx(f, 20*log10(mag_FTBO), f, 20*log10(mag_FTBF_P), f, 20*log10(mag_FTBF_PI), f, 20*log10(mag_FTBF)); ylabel('Gain (dB)'); xlabel('Frequence (Hz)'); title('Diagramme de Bode / Gain'); grid on; legend('Syst1', 'Syst2', 'Syst3','Syst4'); figure; plot(t, y_FTBF_P, t, y_FTBF, t, y_FTBO, t, y_FTBF_PI); ylabel('Signal'); xlabel('Temps (s)'); title('Reponse echelon'); grid on; legend('Syst1', 'Syst2', 'Syst3','Syst4'); % Lieu de Nyquist figure; nyquist(FTBO); hold on; nyquist(FTBF); hold on; nyquist(FTBF_P); hold on; nyquist(FTBF_PI); grid on; legend('FTBO','FTBF','FTBF_P','FTBF_PI'); % [re_FTBO,im_FTBO,w_FTBO] = nyquist(FTBO); re_FTBO = squeeze(re_FTBO); im_FTBO = squeeze(im_FTBO); [re_FTBF,im_FTBF,w_FTBF] = nyquist(FTBF);