Guía 9

Anuncio
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
Descargar