Control Digital. Guía 9 1 Facultad: Ingeniería. Escuela: Electrónica. Asignatura: Control Digital. Lugar de ejecución: Instrumentación y Control (Edificio 3, 2da planta) Implementación de controlador por realimentación de estados con el PIC Objetivos específicos • • • • • Utilizar MATLAB para el diseño del controlador por realimentación de estados Utilizar un controlador PIC 18F4550 como controlador por realimentación de estados. Programar el PIC con una aplicación utilizando el MPLAB X IDE, el compilador XC8 y el PICkit 2. Conectar un sistema térmico para comprobar su funcionalidad. Cambiar la consigna dentro del programa y comprobar la respuesta del sistema. Materiales y equipo • • • • • • • • • • • • • • • 1 Computadora con los siguientes software instalados: MATLAB R2008a con Controlsystem toolbox, MPLAB X IDE v1.85 y XC8 1 Fuente externa de 5V 1 Fuente de alimentación 15 VCD [SO3538-8D] 1 Elemento PT1 (Delay Line) [SO3536-6C] 1 Módulo 3 Controladores proporcionales [SO3536-5T]. 1 Multímetro 1 Microcontrolador PIC 18F4550 1 Programador USB PICkit 2 19 Puentes 1 Switch 4 Cables de Conexión 9 Alambres de telefonía 1 Pinza 1 Cortadora Introducción Teórica Control en el espacio de estados: método de ubicación de polos. En esta guía, se realizará el diseño e implementación de un controlador para un sistema que cuenta con una entrada y dos funciones de transferencia de 2 Control Digital. Guía 9 primer orden en cascada y dos salidas, mediante el método de ubicación de polos. Este método consiste en realimentar todas las variables de estado para mover los polos del sistema, en lazo cerrado, a una posición deseada. Figura 9.1 Sistema de control con realimentación de estados. Con la ubicación de polos, se modificará la dinámica de todas las variables de estado. Dada la siguiente configuración, para un sistema regulador mediante la técnica de ubicación de polos, de elegir una localización de los polos estable para el sistema, se logrará que todas las variables tiendan a 0 cuando el tiempo tiende a infinito. El Sistema a controlar son dos plantas de primer orden en cascada con las siguientes ganancias y tiempos de retardo (ajustar con otros valores y calcular g1 y g2 si es necesario). K1=0.8 ajustando el potenciómetroα. k2=1 td1=2.5 Ajustar este tiempo en el módulo. td2=1 Ajustar este tiempo en el módulo. Teniendo ya las matrices G y H que describen el sistema en el espacio de estados, se deben analizar las condiciones de observabilidad y controlabilidad. Si el sistema es de estado completamente controlable, se cumple que se pueden transferir los polos del sistema a cualquier posición deseada y si el sistema es observable se podrán reconstruir variables de estado no medibles a partir de variables de estado que sí lo son. El sistema regulador mediante realimentación de estado sigue el diagrama de la Figura 10.1, donde la señal de control u(kT) es: u k T=−K x k T Ec 9.1 Entonces, para resolver el sistema se debe encontrar la matriz de ganancia de realimentación de estado K, para unos polos del sistema deseados. Una técnica para elegir los polos de la planta, es considerar dos de ellos dominantes y alejar los demás lo suficiente para que no afecten demasiado. Si se alejan mucho, la matriz de ganancia de realimentación podría tomar valores Control Digital. Guía 9 3 demasiado grandes (posible saturación), conviene simular los valores y ensayar en la planta hasta encontrar unos idóneos. Procedimiento PARTE I. Diseño del controlador por realimentación de estados para el sistema térmico. 1. Abra el programa MATLAB y obtenga las ecuaciones de estado del sistema. >> k1=0.8; >> k2=1; >> td1=2.5; >> td2=1; >> [a1 b1 c1 d1]=tf2ss([k1],[td1 1]); >> [a2 b2 c2 d2]=tf2ss([k2],[td2 1]); >> sis1=ss(a1,b1,c1,d1); >> sis2=ss(a2,b2,c2,d2); >> sis=series(sis1,sis2); >> sisd=c2d(sis,0.1); >> sis2 a = x1 x1 -1 b = u1 x1 c = 1 x1 y1 1 d = u1 y1 0 Continuous-time model. >> sis2 a = x1 x1 -1 b = u1 x1 1 c = x1 y1 1 d = u1 y1 0 Continuous-time model. >> sis1 a = x1 x1 -0.4 b = u1 x1 1 c = x1 y1 0.32 d = u1 y1 0 Continuous-time model. >> sisd2=ss([sisd.a [0 0]';[-1 0 1]],[sisd.b;0],[sisd.c 0],sisd.d,0.1) a = x1 x2 x3 x1 0.9048 0.02984 0 x2 0 0.9608 0 x3 -1 0 1 b = u1 x1 0.001527 x2 0.09803 x3 0 c = x1 x2 x3 y1 1 0 0 d = u1 y1 0 Sampling time: 0.1 Discrete-time model. >> kd=place(sisd2.a,sisd2.b,[0.92 0.92+i*0.2 0.92-i*0.2]) Control Digital. Guía 9 4 kd = 15.3244 0.8388 >> kd(2)/0.32 -1.2435 ans = 2.6211 2. Ejecute Simulink y simule cuál será el comportamiento realimentación de los estados basándose en la siguiente figura. de la Figura 9.2 Simulación del sistema a armar. Los Valores de Kd son las constantes que se deben usar en el algoritmo del programa en el PIC. Datos para el PIC. Se necesitan dos entradas analógicas para cada salida de los módulos de primer orden (dividir entre dos cada salida) Dentro del programa se deben tener estas variables: Valor1 datos del módulo de primer orden de salida, a capturar con el ADC Valor2 datos del módulo de primer orden de entrada, a capturar con el ADC Setpoint valor de consigna por cien, constante ng1 elemento de la matriz de estado que viene del módulo de primer orden de salida modificado. ng1=g1*2/0.32, constante. Para el ejemplo de arriba ng1=4.78*2/0.32=29.9 Control Digital. Guía 9 5 ng2 elemento de la matriz de estado que viene del módulo de primer orden de entrada modificado. ng2=g2*2/1, constante. Para el ejemplo de arriba ng2=0.45*2/1=0.9 uT resultado de la acción de control uT=setpoint-ng1*valor1-ng2*valor2 restringir uT entre -500 y +500 controlsignal salida para pwm controlsignal=(ut*128/100+600)*0.1 la salida del pwm se filtra como siempre y se multiplica por 2 con un control proporcional. PARTE II. Implementación del controlador por realimentación de estados para el sistema térmico con PIC. 3. Abra el programa MPLAB IDE, cree un nuevo proyecto para programar el microcontrolador PIC18F4550 en lenguaje C con el código de un controlador por realimentación de estados que se muestra a continuación, cambie los valores de K1, K2 y K3 por los que obtuvo en el paso 1. /* * File: mainss23.c * Author: electronica * * Created on 8 de marzo de 2016, 01:47 PM */ #include <p18f4550.h> //Cabecera de Nucleo #include <xc.h> #include <plib/adc.h> #include <plib/pwm.h> //Directivas para activar los bits de configuracion #pragma config FOSC = INTOSCIO_EC /*Oscilador Interno, Puerto A RA6 activo*/ #pragma config WDT = OFF //Watchdog timer apagado #pragma config PBADEN = OFF //Parte baja del puerto B digitales #pragma config MCLRE = ON //MCLRE Disponible #pragma config DEBUG = ON //Modo de depuración disponible #pragma config LVP = OFF //Fuente de ISCP apagada #pragma interrupt_level1 //Definición de variables globales int valor1=0; int valor2=0; int t_cont=3; int muestra=0; unsigned char controlsignal=60; float ng1=15.3; // float ng2=2.6;// float ng3=-1.24;// 6 Control Digital. Guía 9 float float float float float float float float float float SETPOINT=500.0; X2=0.0; // X1=0.0;//salida actual eT=0.0;// VARIABLE DE ERROR eT0=0.0;//error anterior X3=0.0;// salida del integrador X3a=0.0;// salida anterior del integrador uT=0.0;// max=480.0; min=-400.0;; //Programa principal void main() { // Declaración de variables locales // unsigned char controlsignal; // Modificación de la preescala del clock principal a 1Mhz IRCF2=1; IRCF1=0; IRCF0=0; //Configurar el puerto C Bit 2 como salida del PWM TRISC=0x00; TRISB=0xF0; // Configurar el ADC para trabajar con AN0 y AN1 ADCON1=0x0D; //AN0 y AN1 entradas análogas ADCON2=0x80; //voltaje de referencia 0 y 5 //Configurar los parámetros del PWM //_,T2OUTPS3,T2OUTPS2,T2OUTPS1,T2OUTPS0,TMR2ON,T2CKPS1,T2CKPS0 //0 0 0 0 0 1 0 1 PR2=0x7C;//Configurar periodo para 500Hz de PWM TMR2=0; //Limpiar el Timer2 T2CON=0x05; //Preescala de 4 y activación del T2 //Configurar el registro CCP1CON, seleccion de modo PWM //_,_,DCxB1,DCxB0,CCPxM3,CCPxM2,CCPxM1,CCPxM0 //0 0 0 0 1 1 0 0 CCP1CON=0x0C;//Bits 4 y 5 de CCP1CON en 0 TMR0IE=1; T0CON=0xC4; INTCON=0XA0; ei(); while (1) { CCPR1L=controlsignal; muestra=0; continue;//Lazo principal escritura en PWM } } void interrupt low_priority tc_int() { Control Digital. Guía 9 7 di(); if (TMR0IE&&TMR0IF) { --t_cont; if(t_cont==0) { t_cont=3; muestra=1; RB0=RB0^1; ADCON0=0x01; /*selección del canal 0 del ADC (salida intermedia)*/ ConvertADC(); while (BusyADC()){} valor2=ReadADC(); ADCON0=0x05; /*selección del canal 1 del ADC (salida final)*/ ConvertADC(); while (BusyADC()){} valor1 = ReadADC(); //leer el Canal analógico AN1 //Escala para obtener la entrada de 0 a 1000 X1 = 1000.0*valor1/1024.0; X2 = 1000.0*valor2/1024.0; // variable de error eT=(SETPOINT-X1); // integracion X3=eT0+X3a; //cálculo de la señal de respuesta del controlador uT = -ng1*X1-ng2*X2-ng3*X3; if(uT>=440.0){ uT = 440.0; /*Estableciendo límite superior de la respuesta*/ } else { if(uT<=-400.0){ uT =-400.0; /*Si está la respuesta abajo de cero se ubica al mínimo*/ } } controlsignal=(uT*128/100+640)*0.1; } eT0=eT; X3a=X3; TMR0IF=0; ei(); } } Listado 1. Programa para controlador de adelanto de fase. 8 Control Digital. Guía 9 4. Guarde el programa y proceda a su compilación. 5. Conecte al PIC 18F4550 con el PICKit 2 como se muestra en la siguiente figura: Figura 9.3. Conexiones PICKit 2 con PIC 18F4550. 6. Conecte el sistema Delay Line quadratic factor al sistema con PIC como lo indica la siguiente figura: Figura 9.4. Conexión del PIC como Controlador de estados. 7. Ajuste los siguientes valores en los módulos: Control Digital. Guía 9 • • • 9 Elemento PT2: α = 0.8, τ1 = 2.5 Escala: X1, τ2 = 10 Escala: X0.1 Control Proporcional ubicado después del elemento PT1 Ganancia: 2 (Linea 2 Escala x1) Controles Proporcionales ubicados después del elemento PT2: Ganancia 0.5 (Linea 5 Escala x0.1). 8. Conecte el PICKit 2 a un puerto USB de la computadora, descargue y corra el programa en el microcontrolador. 9. Observe al medidor y compare si su valor obtenido es similar al de referencia ¿Debe haber un error de cero en estado estacionario?, explique: 10. Apague la fuente de alimentación de +/-15V y modifique el valor de SETPOINT poniendo un valor de 600.0 (recuerde que la escala va de 0 a 1000 en el SETPOINT). 11. Re-compile el programa, descárguelo y córralo nuevamente. Encienda la fuente y Observe, ¿llega el sistema a estabilizarse en el valor deseado?. Análisis de Resultados • Presente los datos y las respuestas a las preguntas realizadas a lo largo del procedimiento Bibliografía • Kuo, B. Sistemas de Control Digital. Compañía Editorial Continental, 1997. • Cabello, J. Implementación Hardware de un Sistema de Control Digital para un Sistema de Péndulo Invertido. Disponible en: http://deeea.urv.cat/public/PROPOSTES/pub/pdf/484pub.pdf 10 Control Digital. Guía 9 Hoja de cotejo: 9 Guía 9: Implementación de controlador por realimentación de estados con el PIC. Alumno: Puesto No: Docente: GL: Fecha: EVALUACION % CONOCIMIENTO 25 APLICACIÓN DEL CONOCIMIENTO 70 ACTITUD TOTAL 1-4 5-7 8-10 Conocimiento deficiente de los fundamentos teóricos Conocimiento y explicación incompleta de los fundamentos teóricos Conocimiento completo y explicación clara de los fundamentos teóricos 2.5 Es un observador pasivo. Participa ocasionalmente o lo hace constantemente pero sin coordinarse con su compañero. Participa propositiva e integralmente en toda la práctica. 2.5 Es ordenado; pero no hace un uso adecuado de los recursos Hace un uso adecuado de los recursos, respeta las pautas de seguridad; pero es desordenado. Hace un manejo responsable y adecuado de los recursos conforme a pautas de seguridad e higiene. 100 Nota