Académique Documents
Professionnel Documents
Culture Documents
System Identification
Practica V
Semestre 2018-2019/II
Laboratorio de Control
3 de mayo de 2019
1. Introducción UASLP-CIEP
Existen varios elementos para el desarrollo en el área de control sumamente importantes, tales como el
control, el sensado, el modelo, etc. Una de las más importantes es la planta, la cual se puede generar
mediante ecuaciones diferenciales o parciales, de los elementos fı́sicos conocidos, se tienen desventajas como
incertidumbres, pero puede llegar a ser muy exacto. Otra forma es mediante identificación de la planta
experimentalmente, esta practica se basa en un método de identificación (PRBS), el cual es comparado
mediante su modelo generado por ecuaciones diferenciales.
2. Objetivos
Generar experimentalmente el modelo mediante mı́nimos cuadrados de un circuito filtro pasa bajas RC de
3er orden. Mediante la excitación al sistema con el uso de PRBS.
3. Desarrollo
3.1. Cálculos
El objetivo de la practica es generar una función de transferencia discreta 2 mediante mı́nimos cuadrados.
3 DESARROLLO 1
UASLP-CIEP
El objetivo es encontrar θLS , que sea la mejor estimada de θ mediante minimos cuadrados. Mediante una
entrada u[k] y la mediación de la salida y[k], representada por la k th muestra.
Se supone que Np muestra para cada u y y son colectadas por una matriz 3.1. Entonces se puede resolver
por:
donde Y=[y[n]..y[Np ]]T es un vector columna que contiene Np -n+1 muestras de salida. Una condición
necesaria es que X T ∗ X sea no singular.
3.2. Simulación
Como se menciono anteriormente, para que las ecuaciones desarrolladas se asemejen a los resultados experi-
mentales, se debe de hacer uso de amplificadores operacionales en forma de seguidores de voltaje, para tener
un alta impedancia de entrada.
La primer etapa en el proceso de identificación, generar la señal de entrada. La cual como se mencionó
anteriormente viene dada por una señal de ON-OFF aleatoria. En el área de simulación viene dada por2,
que es una secuencia de 13 delays con condiciones iniciales. Para nuestro caso se utiliza una señal aleatoria,
con un OFF de 0 en palabra digital y un 125 que representa en voltaje aproximadamente 2.5 V , se muestra
en la Fig. 3.
El montaje de el análisis se hizo mediante Arduino, en este se genera una interfaz que contiene el periodo
de muestro del algoritmo mediante Timmers de 500 milisegundos, además de que el usuario puede agregar
cantidad de datos y el tamaño del PBRS. Como se menciono anteriormente es de 125 en palabra digital. Los
resultados son mostrados en las figuras 4 y 5 respectivamente
3 DESARROLLO 2
UASLP-CIEP
3 DESARROLLO 3
UASLP-CIEP
Figura 5: Adquisición de datos a lazo abierto del filtro de 3er orden con entrada de la Fig. 4
Recordando, que con mı́nimos cuadrados se obtiene la mejor θ estimada, para con esto obtener los mejores
coeficientes para la función de transferencia en el plano Z, de ahi se realiza una transformación bilineal para
obtener una función de transferencia en S y se obtiene:
grama de BODE Fig. 6 y el diagrama de BODE de la función de transferencia eq. 5 esta dado por la Fig. 7.
Como se puede apreciar, se tiene una gran aproximación hasta 1 Hz.
Ahora bien, se prueban las funciones de transferencia, a una entrada escalón de 1 de amplitud durante
un periodo de 10 segundos, cuyos resultados satisfactorios están mostrados en la Fig. 8, donde la señal de
arriba es de la planta mediante ecuaciones diferenciales y la de abajo es la función de transferencia generada
experimentalmente. Además para evaluar la cantidad de error, se obtiene el valor absoluto de las dos la
salida de las dos funciones de transferencia en la Fig. 9.
//El codigo toma dos valores, datasize 500 y step 500 (divide sobre 4)
#include <MsTimer2.h>
3 DESARROLLO 4
UASLP-CIEP
3 DESARROLLO 5
UASLP-CIEP
Figura 8: Respuesta a escalón unitario de periodo de 10 segundos de las dos funciones de transferencia.
3 DESARROLLO 6
UASLP-CIEP
const int VO = A2; // output of RC network
int i = 0; // index
String rcvdstring; // string received from serial
String cmdstring; // command part of received string
String parmstring; // parameter part of received string
int parmvalint; // parameter value
// variable definition
float PRBSVal = 2; // volts
int feedin;
byte bvec[13]={0,1,1,0,0,0,1,1,0,0,1,0,1}; // unit delay output
int bj; // index for bvec
int u0;
void setup() {
pinMode(PWMOut, OUTPUT);
Serial.begin(9600);
MsTimer2::set(500, RCCircuit); //Periodo de 500 milisegundos
MsTimer2::start();
void loop() {
3 DESARROLLO 7
UASLP-CIEP
// find index of separator (blank character)
sepIndex = rcvdstring.indexOf(’ ’);
// extract command and parameter
cmdstring = rcvdstring.substring(0, sepIndex);
parmstring = rcvdstring.substring(sepIndex+1);
parmvalint = parmstring.toInt(); // convert parameter to value
feedin = bvec[0]^(bvec[2]^(bvec[3]^bvec[12]));
for (bj = 12;bj>=1;bj--) {
bvec[bj]=bvec[bj-1];
}
bvec[0] = feedin;
if (bvec[12]==0) u0 = pwmout;
else u0 = 0; //Se~
nal mandada al PWM
3 DESARROLLO 8
UASLP-CIEP
i++;
if (i== datasize) {
stepcmdchange = 0; // reset the command change flag
i = 0; // reset index
Serial.println("];");
}
}
}
z=poly(0,’z’);
//morder = 5;
//Np = 450;
morder = 3;
Np = 500;
//np 400 ts .5
ts = .5; // sampling period
X_lsid = [];
for i = 1:(Np-morder),
ys = []; // y section
us = []; // u section
for j = 1:morder,
ys = [-y_lsid(i+j-1) ys];
us = [u_lsid(i+j-1) us];
end
X_lsid = [X_lsid; ys us];
end
Y_lsid = y_lsid(morder+1:Np);
numd = 0;
3 DESARROLLO 9
UASLP-CIEP
dend = z^morder;
for i=1:morder
numd = numd + bn(i)*z^(morder-i);
dend = dend + an(i)*z^(morder-i);
end
Pd_lsid = syslin(ts,numd,dend); // discrete-time plant
// convert to continuous-time plant using bilinear transform
s=poly(0,’s’);
fz = -(s*ts+2);
gz = (s*ts-2);
nums = 0;
dens = fz^(morder);
for i=1:morder,
nums = nums + bn(i)*(fz^(morder-i))*(gz^i);
dens = dens + an(i)*(fz^(morder-i))*(gz^i);
end
P_lsid = syslin(’c’,nums,dens); // confinuous-time plant
// plot bode
figure(1);
clf();
bode(P_lsid, 0.01, 100);
/*
subplot(211),gainplot(P_lsid,0.00001,100);
title(’Bode plot of LSID plant’);
subplot(212),phaseplot(P_lsid,0.00001,100);
*/
figure(2)
s = poly(0, ’s’);
h = syslin(’c’, 1/(s+1)^3);
clf(); bode(h, 0.01, 100);
nu=P_lsid.num
pu=P_lsid.den
4. Diagrama de flujo
5. Conclusiones
Se torna la identificación experimental mediante PRBS, una herramienta de gran utilidad para la identifica-
ción de plantas.
Se comparan los resultados obtenidos respecto al modelado mediante ecuaciones diferenciales y el obtenido
mediante mı́nimos cuadrados. Y se dan resultados satisfactorios, dentro de esto hay que aclarar que se
compara respecto al modelo perfecto mediante simulación respecto al modelo generado experimentalmente.
Se observa que las funciones de transferencia son aproximaciones dentro de un rango de frecuencia que
dependen tanto del periodo del algoritmo, en este caso 500 milisegundos.
5 CONCLUSIONES 10
UASLP-CIEP
5 CONCLUSIONES 11
UASLP-CIEP
5 CONCLUSIONES 12