informe proyecto control digital

26
PROYECTO FINAL DE CONTROL DIGITAL CONTROLADOR PI DE LA PLANTA DE NIVEL NATALIA ORDÓÑEZ ANDRADE 2008172195 JUAN FRANCISCO PAREDES 2006133946 LEONARDO SALAZAR NARVÁEZ 2007165365 PRESENTADO A: Ing. Diego Sendoya

Upload: natalia-ordonez-andrade

Post on 10-Aug-2015

336 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Informe Proyecto Control Digital

PROYECTO FINAL DE CONTROL DIGITALCONTROLADOR PI DE LA PLANTA DE NIVEL

NATALIA ORDÓÑEZ ANDRADE 2008172195JUAN FRANCISCO PAREDES 2006133946

LEONARDO SALAZAR NARVÁEZ 2007165365

PRESENTADO A:Ing. Diego Sendoya

UNIVERSIDAD SURCOLOMBIANAFACULTAD DE INGENIERÍA

PROGRAMA DE INGENIERÍA ELECTRÓNICANEIVA2013

Page 2: Informe Proyecto Control Digital

INTRODUCCIÓN

Gracias a la aparición de los computadores digitales se ha podido desarrollar el control automático en los controladores. Hasta el surgimiento de los sistemas digitales el único elemento de cálculo con que contaba la Ingeniería de Control eran los computadores analógicos electrónicos. Lo mismo ocurría con la implementación de los reguladores. Estos se construían con elementos analógicos mecánicos, neumáticos o electrónicos.

Pero el desarrollo de la electrónica y de los computadores digitales llevó a cambiar rápidamente la concepción. Los primeros computadores digitales fueron usados en sistemas de control de procesos extremadamente complejos. Con la reducción constante de los precios y tamaño, hoy se implementan reguladores digitales individuales por lazo de control.

En un sistema discreto se inserta en el lazo de control a fin de reemplazar el regulador pero el proceso físico continúa siendo continuo, en la mayoría de los casos de interés. La señal de salida se muestrea cada cierto tiempo (llamado período de muestreo) y se discretizada mediante un conversor analógico digital. Esta información es procesada y convertida nuevamente a analógica mediante un conversor digital analógico. Por lo tanto internamente, el computador se independiza del tipo de señal con que está trabajando y ve todas las magnitudes como una serie de valores discretos (de precisión finita). Por esto resulta cómodo trabajar con ecuaciones en diferencia en lugar de ecuaciones diferenciales como se hacía con los métodos analógicos.

En nuestro caso, se requiere realizar el controlador digital de una planta de nivel de agua, de orden 1. La planta posee su ecuación de función de transferencia propia, realizando la tarea de llenado de un tanque de agua hasta cierto nivel, donde al llegar hasta cierto punto el agua se desborda. Se requiere realizar un controlador digital que regule el flujo de agua hacia el tanque, en el que mediante una entrada (valor del nivel de llenado del tanque de agua) dada por usuario (set point), la planta responda manteniendo el nivel de agua en ese valor. Para dicha tarea se realizan los cálculos respectivos, y se monta la electrónica asociada.

Page 3: Informe Proyecto Control Digital

OBJETIVOS

GENERAL Realizar un controlador digital PI para la planta de nivel.

ESPECÍFICOS Diseñar e implementar un controlador digital PI para la planta de nivel con un tiempo

de establecimiento menor a 20 segundos y con un sobreimpulso menor o igual al 2%. Elaborar mediante el uso de microcontrolador dicho controlador digital. Realizar el proyecto final de la materia Control Digital.

Page 4: Informe Proyecto Control Digital

MARCO TEÓRICO

Los controladores digitales son pequeñas instalaciones inteligentes que se componen de una entrada de un sensor, un indicador digital y una salida de regulación. Existen controladores digitales para diferentes trabajos de medición y regulación. Los controladores digitales se configuran a través de las teclas del propio controlador. Existe la posibilidad de establecer valores nominales para definir así el proceso de regulación. Varios controladores digitales disponen, además de la salida de regulación, salidas para señales normalizadas, a las que puede conectar un sistema de visualización para controlar el proceso de regulación.

El esquema básico del control digital es semejante al del control analógico salvo por el hecho de que el conjunto comparador-regulador se encuentra dentro de un computador, en nuestro caso, un microcontrolador. Dicho conjunto comparador-regulador forma parte de un programa dentro del microcontrolador. El comparador no es más que una resta entre dos variables y el regulador es una serie de productos y sumas. Para unir este ámbito de númerosdentro de un programa al ámbito físico del sistema a controlar se necesita una interfaz. Esa es la labor que realizan precisamente los dos elementos nuevos que aparecen en el esquema del control digital respecto al del control analógico: el conversor digital/analógico (D/A) y el conversor analógico digital (A/D). El conversor D/A sirve para convertir el valor de la acción de control calculado dentro del programa en una señal física (eléctrica) que actúa sobre el proceso. A su vez el conversor A/D sirve para convertir la señal que proporciona el sensor (eléctrica) en un número dentro del programa.

Fig1. Esquema de un controlador analógico

Page 5: Informe Proyecto Control Digital

Fig 2 Esquema de un controlador digital

En un sistema continuo (analógico) las señales vienen representadas por funciones continuas. En un sistema discreto (digital) sin embargo, se representan como secuencias discretas. En el caso que nos ocupa, esas secuencias discretas son una serie de números que provienen de tomar los valores instantáneos de señales analógicas en instantes de tiempo concretos. Es lo que se denomina muestreo. Esos instantes suelen estar equiespaciados por un tiempo T que se denomina periodo de muestreo. A cada uno de los valores se les denomina muestras y se identifican por su número de muestra k. La elección del periodo de muestreo es muy importante puesto que un valor demasiado grande hace que se pierda información cuando se muestrean señales rápidas, que en el caso de tratarse de un problema de control provendrán de sistemas rápidos.

Acción de control Proporcional – Integral, PI La acción de control proporcional – integral, PI, se define mediante la ecuación

O la función de transferencia del controlador es

Siendo Kc la ganancia proporcional y I τ el denominado tiempo integral. Tanto Kc como τI aon ajustables.

Page 6: Informe Proyecto Control Digital

Significado del tiempo integral

El tiempo integral ajusta la acción de control integral, mientras que un cambio en el valor de Kc afecta las partes integral y proporcional de la acción de control. El inverso del tiempo integral se denomina velocidad de reajuste. La velocidad de reajuste es la cantidad de veces por minuto que se duplica la parte proporcional de la acción de control. La velocidad de reajuste se mide en términos de las repeticiones por minuto.

Implementación software de un regulador discreto

La implementación de un regulador discreto consiste en repetir cada T segundos el siguiente algoritmo:1. El conversor A/D toma el valor de la salida del sistema a regular en el periodo actual k, es decir, el valor de yk.

2. Se calcula el error para el periodo actual k, es decir ek, como diferencia de la referencia rk y la salida del sistema yk: ek = rk – yk.

3. Se calcula la acción de control para el periodo actual k, es decir u k, como resultado de la ecuación uk = b0ek + b1ek-1 + b2ek-2 + uk-1, donde se observa que se usa el error que hubo en los dos periodos de muestreo anteriores al actual, ek-1 y ek-2, y la acción de control del periodo de muestreo anterior, uk-1, todos los cuales debemos haber almacenado previamente.

4. El conversor D/A da como salida de tensión el valor dado por la acción de control uk.

5. Se incrementa k.

Page 7: Informe Proyecto Control Digital

PROCEDIMIENTO Y ANÁLISIS DE DATOS

Los datos arrojados por la planta son leídos por el programa Boris, el cual nos muestra la siguiente respuesta del sistema:

Fig. 3 Gráfica obtenida del software BORIS. Línea superior= setpoint, línea inferior= comportamiento de la planta

Con los datos obtenidos con el programa Boris, obtuvimos la función de transferencia de la planta, con la ayuda del comando ident en MATLAB.

Gc ( s)= 0.4655521+27.881 s

Gc ( z )=0.0016402z−0.9648

Page 8: Informe Proyecto Control Digital

Fig. 4 Gráfica obtenida mediante MATLAB

Pantallazo ident MATLAB

Page 9: Informe Proyecto Control Digital

Pantallazo IDENT de MATLAB

Page 10: Informe Proyecto Control Digital

Las especificaciones para el diseño del controlador son un sobreimpulso menor o igual al 2% (MP≤2%), y un tiempo de muestreo de 0.1s (T=0.1s).

Hallamos ξ y Wn

ξ=√ (LnMP)2

π 2+(LnMP)2=√ ( ln 0.0001)2

π2+( ln 0.0001)2=0.9746

Wn= 4ξ ts

= 4(0.9743)(20)

=0.2052 rad

Hallamos magnitud y ángulo de Z, para obtener el polo dominante

|z|=e−ƺWnT=e−(0.9746)(0.2052)(0.1)=0.9801

Wd=Wn√1−ƺ2=0.2052√1−0.97462=0.0682 rad

˂z=WdT=(0.0682 ) (0.1 ) . 0.00682 radsg

=0.3807 °

Con esto tenemos que:

z0=0.9802+0.00651i→Polo Dominante

Hallamos Gla(z) y cancelación de polos

Gla ( z )=G ( z )∗Gc(z ) Gc ( z )=Kz−αz−1

Gla ( z )=0.0016402z−0.9648

∗Kz−αz−1

Empleamos la condición de ángulo ubicando los polos y ceros y el polo dominante

Page 11: Informe Proyecto Control Digital

Hallamos el valor de α

θ1=tan−1( 0.006510.9802−0.9648 )

θ1=22.91°

θ2=180 °−tan−1( 0.006511−0.9802 )

θ1=161.79 °

Entonces con la ecuación principal comprobamos que se cumpla el criterio del ángulo

¿angulos de ceros−¿angulos de polos=−180 °

Hallamos el valor del ángulo de α que hace cumplir la condición del ángulo y de esta manera hallar su valor

¿angulos de ceros−(22.91 °+161.79° )=−180 °

φ−184.71 °=−180 °

φ=4.71 °

tanφ=( 0.006510.9802°−α )

α=0.973

Alfa esta situado a la izquierda del polo dominante en 0.973

Page 12: Informe Proyecto Control Digital

Entonces tenemos que:

Gla ( z )=0.0016402z−0.9648

∗Kz−0.973z−1

Ahora por condición de magnitud hallamos K

|Gla (z)|=1

|Gla (z)|=|0.0016402z−0.9648 ( z−0.973z−1 )K|=1 ; z=0.9802+0.00651 i

Por Matlab:

%para condición de magnitud y así hallar kclear allclcnum=0.0016461*[1 -0.973]; %Numerador de Glazden= conv([1 -1],[1 -0.9648]); %Denominador de Glaz z= 0.9802 + 0.00651i; %polo dominantek = abs(polyval(den,z)./polyval(num,z))

k=24.8097

Luego hallamos los valores de Kp y Ki, teniendo en cuenta que T=0.01, k=24.8097 y α=0.973

k=k p+k iT2

α=−k iT−2k p

k iT+2k p

[ki kp]=solve('(kp+(ki*0.01)/2)= 24.8097','-(((ki*0.01)-2*kp)/((ki*0.01)+2*kp))=0.973')

ki=66.98619kp=24.47476905

Finalmente reemplazamos los valores en el modelo del controlador PI y tenemos:

Page 13: Informe Proyecto Control Digital

Gc ( z )=Kz−αz−1

Gc ( z )=24.8097 ( z−0.973z−1 )ki=66.98619

kp=24.47476905Ahora vemos el comportamiento a un Step de la planta con el controlador:

y ( z )=24.8097( z−0.973z−1 )x (z )y ( z )=24.8097( 1−0.973Z−1

1−Z−1 ) x (z)y ( z )(1−Z−1)=24.8097 (1−0.973 Z−1 )x (z )y ( z )= y ( z) Z−1+24.81x ( z)−24.14 x (z)Z−1

Page 14: Informe Proyecto Control Digital

y (k )= y ( k−1 )+24.81 x (k )−24.14 x (k−1)

CÓDIGOS DE IMPLEMENTACIÓN

Código en MATLAB para discretización, e implementación del sistema

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear allclc%MODELO DE LA PLANTAk=0.016402; % numerador correspondiente al valor de Kpolo=[0.9648 1]; % denominador con un polo 1 + TdSGp=tf(k,polo); % función transferencia de los valores anterioresGpz=c2d(Gp,0.1,'zoh') % planta discretizada con T = 0.1 segGpz=zpk(Gpz);step(Gpz)Gz=c2d(Gp,0.1,'zoh') %POLO DOMINANTEpd=0.9802+0.0651i; %CONTROLADORk=24.8097;numc=[k*1 k*-0.973];denc=[1 -1];Gcz=tf(numc,denc,0.1)Gcz=zpk(Gcz)hold onsys=Gcz*Gpz;sys2=feedback(sys,1);step(sys2)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Page 15: Informe Proyecto Control Digital

Código del microcontrolador:

#INCLUDE <16F877A.h>#DEVICE ADC=10#FUSES NOWDT,XT,NOPROTECT,NODEBUG,NOLVP#USE DELAY(CLOCK=4000000)

#INCLUDE <stdlib.h>#include <math.h>

// define los pines del puerto b para el lcd//***************************************************************#define LCD_RS_PIN PIN_B1 #define LCD_RW_PIN PIN_B2 #define LCD_ENABLE_PIN PIN_B3 #define LCD_DATA4 PIN_B4 #define LCD_DATA5 PIN_B5 #define LCD_DATA6 PIN_B6 #define LCD_DATA7 PIN_B7#INCLUDE<LCD.C>

//*****************************************************************

// parametros del teclado

//****************************************************************** char d,*p;

int16 t=250; // Antirebote y retardo de teclado. int puerto=0x08; // puerto usado para el teclado (puerto D) int16 nivel = 0; float step; // step en voltios float Ek; // entrada de error float Uk; // salida del controlador float Uk1 = 0; // salida anterior del controlador uk-1 float Ek1 = 0; // entrada de error anterior ek-1 float Yk; // salida del sistema int sal_binaria = 0;// salida del controlador en binario float sal_float; int16 adc; float mnivel; //-----------------------------------------------------------------

// FUNCION PARA TECLADO

Page 16: Informe Proyecto Control Digital

//--------------------------------------------------------char teclado (int16 R,t) // R corresponde a la direccion del registro del puerto usado para { // el teclado, por ejemplo para el puerto D es 0x08 o 8 en decimal char teclas[4][4]={{'1','2','3','/'}, // valores correspondientes al teclado matricial {'4','5','6','*'}, {'7','8','9','-'}, {'C','0','=','+'}};

int i,k; while(1) { for(i=0;i<4;i++) { output_high(R*8+4+i); for(k=0;k<4;k++) { delay_us(1000); // retardo para no recargar al proteus if(input(R*8+k)) { while(input(R*8+k)==1); output_low(R*8+4+i); delay_ms(t); return teclas[k][i]; } } output_low(R*8+4+i); } }}

void pide_nivel(){ printf(lcd_putc, "\f CONTROL DIGITAL \n DE NIVEL PI"); delay_ms(1500); printf(lcd_putc, "\fINGRESE VALOR \nNIVEL 0 A 150mm"); delay_ms(10); p = &d; // puntero a d int i = 0; int16 dato[]= {0,0,0};

while(true) {

d = teclado(puerto,t); // llama al teclado y se recoge la tecla en d

// si la tecla pulsada es un numero, entonces se convierte a entero debido a que está en ASCII

Page 17: Informe Proyecto Control Digital

if((i!=3)&&((d=='0')||(d=='1')||(d=='2')||(d=='3')||(d=='4')||(d=='5')||(d=='6')||(d=='7')||(d=='8')||(d=='9'))){ dato[i] = atoi(p); if(i==0){nivel = dato[0];} if(i==1){nivel = dato[0]*10 + dato[1];} if(i==2){nivel = dato[0]*100 + dato[1]*10 + dato[2];} if(i==3){nivel = dato[0]*1000 + dato[1]*100 + dato[2]*10 + dato[3];}

lcd_putc('\f'); lcd_gotoxy(1,1); printf(lcd_putc,"Valor Nivel: "); lcd_gotoxy(13,1); printf(lcd_putc,"%Lu",nivel); i++; } if((d=='C')&&(i!=0)){ return; }

}}

//*******************************************************************void proceso() {

Ek = 0; // entrada de error Uk = 0; // salida del controlador Uk1 = 0; // salida anterior del controlador Ek1 = 0; // entrada de error anterior Yk = 0; // salida del sistema int i =0;

while(true){ set_adc_channel(0); // seleccionamos el canal por donde se recibe la señal adc =read_adc(); delay_us(30); Yk = adc*5.0/1024.0;

Ek = step - Yk; Uk = 24,81*Ek - 24.14*Ek1 + Uk1; // ECUACION EN DIFERENCIAS DEL CONTROLADOR

if(step>4.5){

Page 18: Informe Proyecto Control Digital

while(1){}} //En caso de sobrepasar el limite de voltate if(Uk > step) { Uk = step;} if(Uk < 0 ) { Uk = 0; }

Ek1 = Ek; Uk1 = Uk;

sal_float = Uk*772.85; //72.85 Convierte el voltaje de salida para los puertos de DAC binarios if(sal_float > 255 && (Ek > 0.051)) { sal_float = 255; } if((Ek < 0.051) ) { sal_float = Uk*72.85; } sal_binaria = sal_float; output_c(sal_binaria); //Salida hacia el DAC output_high(PIN_D4); if(input(PIN_D3)==1){ output_c(0); return; } i++;

if(i==50) {

mnivel = 42.613*Yk -10; lcd_putc('\f'); lcd_gotoxy(1,1); printf(lcd_putc,"Salida: %f",mnivel); lcd_gotoxy(1,2); printf(lcd_putc,"Setpoint: %Lu",nivel); i = 0;

} }}//*******************************************************************

void nada(){ return;}

void main(){

output_c(0);

Page 19: Informe Proyecto Control Digital

lcd_init(); setup_adc_ports(AN0); // configuramos AN0 como entrada analógica setup_adc(ADC_CLOCK_INTERNAL); // Escogemos el reloj interno RC para el conteo

while(true){ lcd_putc('\f'); lcd_gotoxy(1,1); printf(lcd_putc,"Valor NIVEL mm: ");

pide_nivel(); step = nivel*0.026466; proceso(); } }

Page 20: Informe Proyecto Control Digital

CIRCUITO PROPUESTO

Page 21: Informe Proyecto Control Digital

CONCLUSIONES

La identificación de la planta y la función de transferencia se obtuvo mediante el comando IDENT de MATLAB, lo que resulto una gran herramienta para la elaboración del controlador.

Se realizó el controlador digital PI para la planta de nivel, pero éste presentó un error proporcional significativo.

El tiempo de establecimiento propuesto para el controlador se redujo, cumpliendo con el objetivo propuesto.

Debido al comportamiento no lineal de la planta (que se analizó como una planta lineal), el controlador presenta pequeñas oscilaciones en el estado estacionario.

Se propusieron distintos diseños de controlador y fue elegido aquel que presentó mejor comportamiento.

Page 22: Informe Proyecto Control Digital

BIBLIOGRAFÍA

OGATA, Katsuhiko; SISTEMAS DE CONTROL EN TIEMPO DISCRETO; 2da Edición, Editorial Prentice Hall.

NISE, Norman S; CONTROL SYSTEMS ENGINEERING; 6ta Edición, Editorial Wiley. CHEN Chi-tsong; ANALOG AND DIGITAL CONTROL SYSTEM DESIGN; Publicación de

Saunders College.