Sei sulla pagina 1di 15

IDENTIFICACIÓN Y CONTROL ADAPTATIVO

Integrantes: Cristian Pérez


Jonathan García
Daniel Sani
Tema: Identificación de Sistemas de Orden Superior, Método Strejc.
Tutor: Coronel Pablo Regazzoni.
Fecha: 15-10-2019.

Enunciado:

a. Aplicar el siguiente Script de Matlab para obtener la función de transferencia de


una respuesta dada y comentar el script:
MATLAB: Comentado
%****** Método de Strejc sin considerar retardo ******************
clc
clear
U=1;%Amplitud
K=1;%Ganancia

%Función de Transferencia para la simulación


t =[0:0.1:150];
num = [U*K];
c1 = conv([3 1],[4 1]);
c2 = conv(c1,[7 1]);
c3 = conv(c2,[13 1]);
den = conv(c3,[14 1]);
'Función de Transferencia para la simulación'
G = tf(num,den)
y = step(G,t);
plot(t,y,'r');
h=plot(t,y,'r');
grid on
xlabel('Tiempo');
ylabel('Amplitud');
legend (h,'Sistema')
hold on
' Presionar la barra espaciadora para continuar'
pause
yp = y';

%**********TABLAS PARA EL MÉTODO DE STREJC************************


Ta_Tb = [0 0.104 0.218 0.319 0.410 0.493 0.570 0.642 0.709 0.773];
Te_Tb = [1 0.736 0.667 0.647 0.629 0.616 0.606 0.599 0.593 0.587];
Ta_tau = [0 0.218 0.805 1.425 2.1 2.811 3.549 4.307 5.081 5.869];
Tb_tau = [1 2.718 3.695 4.463 5.119 5.699 6.226 6.711 7.164 7.59];
Td_tau = [0 1 2 3 4 5 6 7 8 9];
Te_tau = [1 2 2.5 2.888 3.219 3.51 3.775 4.018 4.245 4.458];
%****************************************************************
% Ajuste de datos a polinomio de 5to. orden
P = polyfit(t,yp,6);
%Encontrando el punto de inflexion (q) a partir de las raices de la
% segunda derivada del polinomio de mejor ajuste
P1 = polyder(P); % 1 er derivada
P2 = polyder(P1); % 2da derivada
R = roots(P2); % raices de la segunda derivada
% Eliminando las raices negativas y las imaginarias
iR = imag(R);
cni = find(iR);
R(cni) = [];
cnn = find(R<0);
R(cnn) = [];

%Determinando la raíz correspondiente al punto de inflexión (q)


t_inf = min(R); % x del punto de inflexion

y_inf = polyval(P,t_inf); % y del punto de inflexion


%es el valor de la funcion evaluada...
%en el cero de la segunda derivada.

inflex=[t_inf, y_inf]
m_inf = polyval(P1,t_inf) %pendiente de la recta tangente.

b = y_inf - m_inf * t_inf; %ordenada al origen


rtang = m_inf * t + b;
plot(t,rtang); %grafico la tangente ne el punto de inflexión.
' Presionar la barra espaciadora para continuar'
pause
%Cálculo de Ta evaluando la ecuación de la tangente haciendo rtang=0
Ta = -b/m_inf
%Cálculo de Tc evaluando la ecuación de la tangente haciendo rtang=1
Tc = (U-b)/m_inf
%Cálculo de Td, Tb y Te
Td = t_inf
Tb = Tc-Ta
Te = Tc-Td;
%Relaciones para ingresar en las tablas y buscar n
ta_tb = Ta/Tb;
te_tb = Te/Tb;
%Determinación del orden n
i = find(Ta_Tb > Ta/Tb);
% Obtención de (n) como el minímo de los ordenes en-contrados
n = min(i)
%Obtención de relaciones para calcular tau
ta_tau = Ta_tau(n);
tb_tau = Tb_tau(n);
td_tau = Td_tau(n);
te_tau = Te_tau(n);
%Cálculo de tau
tau1 = Ta/ta_tau
tau2 = Tb/tb_tau
tau3 = Td/td_tau
tau4 = Te/te_tau
tauprom= (tau1+tau2+tau3+tau4)/4;
%Función de transferencia para tau1
denT=1;den1=1;den2=1;den3=1;den4=1;
numerador = [U*K];
for i=1:1:n
den_prom =[tauprom 1];
denT= conv ([denT],[den_prom]);
denom1=[tau1 1];
den1 = conv ([den1],[denom1]);
denom2=[tau2 1];
den2 = conv ([den2],[denom2]);
denom3=[tau3 1];
den3 = conv ([den3],[denom3]);
denom4=[tau4 1];
den4 = conv ([den4],[denom4]);
end
Gprom=tf(numerador,denT)
step(Gprom,'g',t)
Gprom=tf(numerador,denT)
step(Gprom,'g',t)
G1=tf(numerador,den1)
step(G1,'m',t)
G2=tf(numerador,den2)
step(G2,'m',t)
G3=tf(numerador,den3)
step(G3,'m',t)
G4=tf(numerador,den4)
step(G4,'m',t)
grid on
hold off

1. Corremos el Script anterior y obtenemos la función de transferencia solicitada.


a. Ecuación de transferencia.

1
𝐺=
(3𝑠 + 1)(4𝑠 + 1)(7𝑠 + 1)(14𝑠 + 1)(13𝑠 + 1)

Gráfica:
b. Obtenemos el punto de inflexión.

c. Respuesta de la señal del Script original.


d. Señal con la función de transferencia promedio.

• Comparar los resultados del Script anterior con los obtenidos aplicando el método
de resolución de la tangente resuelto en clase:

• Probar con:

1.5
𝐺1 =
(2𝑠 + 1)(1.5𝑠 + 1)(4𝑠 + 1)(2𝑠 + 1)
1. Función de transferencia ingresada.
a. Punto de Inflexión

b. Punto de inflexión en la gráfica y ubicación de los puntos Ta y Tc.


Tabla 1. Lista de parámetros con los valores obtenidos.

Parámetro Valor
Ta 3.0358
Tb 10.9903
Tc 14.0261
Td 6.7884
Te 3.5743
K 1.5
𝑛 4

Se procede a realizar el modelo del sistema con cada uno de los 𝜏 encontrados y obtener
su respuesta para posteriormente proceder a compararlas y analizar cuál es el modelo que
más se acerca al sistema real.
Los valores de 𝜏 utilizados fueron los siguientes:
𝝉 Valor
𝜏1 2.1304
𝜏2 2.4625
𝜏3 2.2628
𝜏4 2.5061
𝜏𝑝𝑟𝑜𝑚 2.3405
Procedemos a graficar con los 𝝉 obtenidos.
Con 𝜏1 = 2.1304

Con 𝜏2 = 2.4625
Con 𝜏3 = 2.2628

Con 𝜏4 = 2.5061

Con 𝜏𝑝𝑟𝑜𝑚 = 2.3405


Obteniendo así la grafica completa nos queda como se muestra a continuación:

El método de Strejc nos permite obtener una función de transferencia de la forma


𝐾
𝐺𝑠 =
(𝜏𝑠 + 1)𝑛
Como dentro de los datos obtenidos n=4 y el modelo que se pudo acerca a la función de
transferencia fue GProm es decir que la función de transferencia del sistema que mejor
se apega a la realidad es con 𝜏𝑝𝑟𝑜𝑚 = 2.305:
1.5
𝐺𝑠 =
(2.3405𝑠 + 1)4

MATLAB MODIFICADO PARA EL PROBLEMA PLANTEADO


%****** Método de Strejc sin considerar retardo ************************
clc
clear
U=1;%Amplitud
K=1.5;%Ganancia
%Función de Transferencia para la simulación
t =[0:0.1:150];
num = [U*K];
c1 = conv([2 1],[4 1]);
c2 = conv(c1,[1.5 1]);
den = conv(c2,[2 1]);
'Función de Transferencia para la simulación'
G = tf(num,den)
y = step(G,t);
plot(t,y,'r');
h=plot(t,y,'r');
grid on
xlabel('Tiempo');
ylabel('Amplitud');
legend (h,'Sistema')
hold on
yp = y';
%**********TABLAS PARA EL MÉTODO DE STREJC************************
Ta_Tb = [0 0.104 0.218 0.319 0.410 0.493 0.570 0.642 0.709 0.773];
Te_Tb = [1 0.736 0.667 0.647 0.629 0.616 0.606 0.599 0.593 0.587];

Ta_tau = [0 0.218 0.805 1.425 2.1 2.811 3.549 4.307 5.081 5.869];
Tb_tau = [1 2.718 3.695 4.463 5.119 5.699 6.226 6.711 7.164 7.59];
Td_tau = [0 1 2 3 4 5 6 7 8 9];
Te_tau = [1 2 2.5 2.888 3.219 3.51 3.775 4.018 4.245 4.458];
%****************************************************************
% Ajuste de datos a polinomio de 9no. orden
P = polyfit(t,yp,18);
%Encontrando el punto de inflexion (q) a partir de las raices de la
% segunda derivada del polinomio de mejor ajuste
P1 = polyder(P); % 1 er derivada
P2 = polyder(P1); % 2da derivada
R = roots(P2); % raices de la segunda derivada
% Eliminando las raices negativas y las imaginarias
iR = imag(R);
cni = find(iR);
R(cni) = [];
cnn = find(R<0);
R(cnn) = [];
%Determinando la raíz correspondiente al punto de inflexión (q)
t_inf = min(R); % x del punto de inflexion
y_inf = polyval(P,t_inf); % y del punto de inflexion
%es el valor de la funcion evaluada...
%en el cero de la segunda derivada.
inflex=[t_inf, y_inf]
m_inf = polyval(P1,t_inf) %pendiente de la recta tangente.
b = y_inf - m_inf * t_inf; %ordenada al origen
rtang = m_inf * t + b;
plot(t,rtang); %grafico la tangente ne el punto de inflexion.
' Presionar la barra espaciadora para continuar'
pause
%Cálculo de Ta evaluando la ecuación de la tangente haciendo rtang=0
Ta = -b/m_inf
%Cálculo de Tc evaluando la ecuación de la tangente haciendo rtang=1
Tc = (K-b)/m_inf
%Cálculo de Td, Tb y Te
Td = t_inf
Tb = Tc-Ta
Te = Tc-Td;
%Relaciones para ingresar en las tablas y buscar n
ta_tb = Ta/Tb;
te_tb = Te/Tb;
%Determinación del orden n
i = find(Ta_Tb > Ta/Tb);
% Obtención de (n) como el minímo de los ordenes en-contrados
n= min(i)
%Obtención de relaciones para calcular tau
ta_tau = Ta_tau(n);
tb_tau = Tb_tau(n);
td_tau = Td_tau(n);
te_tau = Te_tau(n);
%Cálculo de tau
tau1 = Ta/ta_tau
tau2 = Tb/tb_tau
tau3 = Td/td_tau
tau4 = Te/te_tau
tauprom= (tau1+tau2+tau3+tau4)/4
%Función de transferencia para tau1
denT=1;den1=1;den2=1;den3=1;den4=1;
numerador =num;
for i=1:1:n
den_prom =[tauprom 1];
denT= conv ([denT],[den_prom]);
denom1=[tau1 1];
den1 = conv ([den1],[denom1]);
denom2=[tau2 1];
den2 = conv ([den2],[denom2]);
denom3=[tau3 1];
den3 = conv ([den3],[denom3]);
denom4=[tau4 1];
den4 = conv ([den4],[denom4]);
end
Gprom=tf(numerador,denT)
step(Gprom,'g',t)
G1=tf(numerador,den1)
step(G1,'m',t)
G2=tf(numerador,den2)
step(G2,'m',t)
G3=tf(numerador,den3)
step(G3,'m',t)
G4=tf(numerador,den4)
step(G4,'m',t)
grid on
hold off
Conclusiones
o El método de Strejc ayuda en la solución de ecuaciones de orden superior,
tomando en cuenta la ganancia y con el ajuste de datos del polinomio poden
se obtiene la tangente a la señal y el punto de inflexión para luego obtener los
parámetros en Ta, Tb, Tc, Td, Te y n, mismos que ayudan en la obtención de
los τ.
o La obtención de los τ por medio del método de Strejc ayudan en la obtención
de las gráficas con el valor más próximo hacia nuestra recta, la más cercana se
considera la nueva función.
o En el presente trabajo se pudo analizar el método, el primero sin ganancia y el
segundo con una ganancia de un valor “a” mismos que se verificó ambos
modelos en MATLAB en donde en un caso se obtuvo un sistema de 6to orden
y en el otro caso se obtuvo un orden superior obteniendo resultados
satisfactorios, con el modelo que mejor se ajustara a la curva de respuesta.

Recomendaciones
o Se recomienda analizar el Script anterior y entender línea por línea el proceso,
para en posteriores ejemplos saber como aplicar y de existir alguna variación
ir directamente a la parte del Script que se necesita medicar para obtener la
ecuación de orden superior.
o Se recomienda en MATLAB obtener las graficas paso a paso para una mejor
apreciación y para su análisis.
o Se recomienda que las funciones de Strejc primero se analicen
matemáticamente antes de usar el código.
Bibliografía
o Identificación de sistemas.

Potrebbero piacerti anche