%***********************************************************************
%   IPS - CALCUL D'UN PI 
%   kerhoas@enib.fr
%***********************************************************************
% Pour octave, installer le package 'control' et lancer la commande :
% pkg load control

i=0; % index Figures
%-----------------------------------------------------------------------
%    Définition du Gain et de la Constante de Temps en Boucle Ouverte
%    du système à asservir G/(1+to*s)
%-----------------------------------------------------------------------

G=2.5
to=50e-3

%-----------------------------------------------------------------------
%              Fonction de Transfert en Boucle Ouverte + Tracé
%-----------------------------------------------------------------------

FTBO = tf([G],[to,1])

i=i+1;
figure(i)
t=0:0.0001:1
step(FTBO,t)
grid
title('FTBO - REPONSE A UN ECHELON')

i=i+1;
figure(i)
subplot(1,2,1)
nyquist(FTBO)
grid
title('FTBO - NYQUIST')
subplot(1,2,2)
bode(FTBO)
grid
title('FTBO - BODE')

%-----------------------------------------------------------------------
%              Définition du Correcteur PI + Tracé
%-----------------------------------------------------------------------

ti = 0.1*to
Kpi = 1

CORR = tf(Kpi*[ti , 1],[ti, 0])

i=i+1;
figure(i)
bode(CORR)
grid
title('CORRECTEUR PI - BODE')
%hold on 
%bode(FTBO)

%-----------------------------------------------------------------------
%     Fonction de Transfert EN BO du Système Corrigé + Tracé
%-----------------------------------------------------------------------

FTBO_CORR=CORR*FTBO
[Gm,Pm,Wg,Wp] = margin(FTBO_CORR) % Pm Marge de Phase

i=i+1;
figure(i)
bode(FTBO_CORR)
margin(FTBO_CORR)
grid
title('FTBO CORRIGE - BODE - MARGE DE PHASE')

%-----------------------------------------------------------------------
%     Fonction de Transfert EN BF du Système Corrigé + Tracé
%-----------------------------------------------------------------------

FTBF= (CORR*FTBO)/(1+CORR*FTBO)

i=i+1;
figure(i)
bode(FTBF)
title('FTBF CORRIGE - BODE')
grid
i=i+1;
figure(i)
t=0:0.0001:1
step(FTBF,t)
grid
title('FTBF CORRIGE - REPONSE TEMPORELLE A UN ECHELON')

