PROGRAMACIÓN Y SIMULACIÓN Maestría en Eléctrica - II Semestre – Área: Instrumentación Catedrático: Dr. Enrique Cuan D. – Alumno: Annuar López
Índice Introducción ......................................................................................................................................................... 2 Controlador PID .................................................................................................................................................. 3 Simulación en Proteus ...................................................................................................................................... 5 Simulación LabVIEW – MATLAB .................................................................................................................... 9 Conclusión ......................................................................................................................................................... 12 Apéndice 1 .......................................................................................................................................................... 13
1
Introducción El presente documento tiene como objetivo poner en práctica los conocimientos de programación adquiridos a lo largo del curso a través del software de programación y simulación MATLAB ™. El proyecto que se desarrolló en simulación fue un control de temperatura de un horno industrial; el control automático del horno tiene retroalimentación (lazo cerrado) ya que se implementó en él un controlador PID el cuál es ejecutado por un microcontrolador PIC16F877A, dicho dispositivo fue programado en lenguaje C y posteriormente simulado en el programa ISIS Proteus versión 7.9; para posteriormente a través de la emulación de un puerto COM dentro de la misma computadora, enlazar el software antes mencionado para transmitir sus datos a LabVIEW™ de National Instruments versión 2012 en donde el
comportamiento del aumento o disminución de la temperatura es monitorizado junto con la ejecución de un Mathscritp de MATLAB™ dentro del mismo entorno de programación de LabVIEW™.
2
Controlador PID Uno de los controladores más comunes que se utilizan en la industria es el controlador PID (Controlador Proporcional-Integral-Derivativo). Sin entrar en teoría de control, se puede indicar que un controlador PID responde a la siguiente ecuación:
() = () + ∫ () + () Donde e(t) es el error de la señal y u(t) es la entrada de control del proceso. K p es la ganancia proporcional, T i es la constante de tiempo integral y T d es la constante de tiempo derivativa. Por lo tanto en el dominio de s, la ecuación del controlador PID se puede escribir de la siguiente manera:
() = ⌈1+ 1 +⌉() Un controlador PID tiene tres parámetros (K p,Ti,Td) los cuales interactúan uno con el otro hasta obtener la respuesta de salida deseada.
La respuesta de un controlador PID con una entrada escalón, se muestra en la siguiente figura:
Figura 1.1 Respuesta a una Entrada Escalón 3
Los parámetros se pueden obtener de esta respuesta:
= γ = = −− Según Ziggler y Nichols, las relaciones de estos coeficientes con los parámetros del controlador son:
= .
= 2 = 0.5
Si cambiamos el controlador PID por un controlador PID discreto, empleamos la transformada z, de tal manera que la ecuación se re-escribe como:
También:
Donde:
− 1 () = () [1+ (1−) + ] () = + − +(1−) () 1
= = = La figura que se muestra a continuación, describe el proceso a bloques del controlador PID discreto.
Figura 1.2 Diagrama a bloques del Controlador PID discreto. 4
Simulación en Proteus
Para obtener los valores de las ganancias del controlador PID discreto, primero se probó el comportamiento del sistema con una entrada escalón al 20% de su capacidad, para posteriormente analizar la curva característica de operación.
El software implementado es ISIS PROTEUS 7.9, y los elementos necesarios fueron los siguientes que se muestran en la ilustración. Componentes utilizados: CELL, SWITCH,OVEN, GROUND.
Figura 1.3 Curva característica de operación del Horno.
5
Posteriormente se realizó la simulación del microcontrolador PIC16F877A dentro del mismo software de Proteus para verificar la correcta operación del control discreto con el PID; el cuál se encargará de generar un pulso PWM para controlar el calentamiento del Horno conmutando un MOSFET de Potencia con una realimentación análoga en el sistema para leer la temperatura del horno. Componentes utilizados: CELL, PIC16F877A, OVEN, GROUND, RES, IRL1004, POWER TERMINAL.
Figura 1.4 Simulación del Control PID en ISIS Proteus.
6
Una vez probado el sistema, se procede a enlazar la simulación del software de ISIS PROTEUS 7.9 con LabVIEW 2012 y MatLAB™. Para hacer esto se hizo uso de la comunicación serial del microcontrolador PIC16F877A para conectar los pines TX y RX del dispositivo a un puerto COM configurado en ISIS PROTEUS (COM1) y monitoreado dentro del mismo a través de una terminal serial virtual, posteriormente se dio de alta en la computadora dos COM en modo de puente para poder hacer el enlace con LabVIEW de National Instruments (COM2). El dispositivo COM (o puerto serial) dado de alta dentro de la computadora, se emulo con el software HDD Virtual Serial Ports el cual se encarga de crear un dispositvo serial virtual dentro de la computadora y reconocido como un dispositivo de entrada y salida al configurarlo como tipo puente.
Figura 1.5 Emulación de los Puertos COM en modo Puente (Bridge).
7
Al agregar los componetes necesarios, así como un potenciómetro (POT HG) para poder ajustar el SETPOINT de control PID, nuestro diagrama de simulación en ISIS PROTEUS 7.9 nos queda como se muestra en la figura inferior del párrafo. Componentes utilizados: CELL, PIC16F877A, OVEN, GROUND, RES, IRL1004, POWER TERMINAL, VIRTUAL TERMINAL, COMPIM, POT HG.
Figura 1.6 Simulación completa en ISIS PROTEUS del Controlador PID con enlace a LabVIEW 2012 de National Instruments.
8
Simulación LabVIEW – MATLAB
El software de LabVIEW de National Instruments es un lenguaje de programación visual. Cuenta con dos ventanas de desarrollo, la primera que permite el Diseño de la Interfaz Gráfica (Front Panel) que es donde estaremos monitoreando nuestro proceso y una segunda ventana en la cual se hace la programación a bloques (Block Diagrama) así como el monitoreo de la ejecución del código paso a paso; esto en caso de tener un error identificarlo a la brevedad o bien para optimizar el código programado.
Figura 1.7 Código a Bloques del Programa en LabVIEW (Block Diagram).
Figura 1.8 Interfaz Gráfica del Programa en LabVIEW (Front Panel). 9
Por último en el diagrama de bloques de LabVIEW se encuentra un MathSript, una herramienta que permite ejecutar instrucciones en lenguaje de MATLAB dentro del entorno de desarrollo de LabVIEW de National Instruments.
En la siguiente figura se muestra el comportamiento del controlador PID implementando las siguientes ganancias del sistema: a=0.1243; b=0.00621; c=.621514; T= 100 milisegundos (En el
microcontrolador representa un retardo delay_ms (100); ) “
”
Figura 1.9 Comportamiento del Controlador PID con Sobre Impulso.
10
Para amortiguar el sobre impulso se utilizaron las siguientes ganancias con un tiempo de 1 ms. a=0.1243; b=0.000062; c=62.1514; T= 1 milisegundos (En el
microcontrolador representa un retardo delay_ms (1); ) “
11
”
Conclusión
Los Softwares de Programación y Simulación Virtual son una herramienta poderosa a lo hora de diseñar y desarrollar proyectos ya que permiten prevenir y/ corregir fallas inclusive antes de llegar a la etapa de construcción de un prototipo ya sea de algún proceso de control y automatización, monitoreo etc.
Con las herramientas ofrecidas por ISIS PROTEUS, LabVIEW y MATLAB, se pudo desarrollar un proyecto integral tanto de la parte de instumentación simulada en ISIS PROTEUS como el monitoreo en LabVIEW, aunado a la parte matemática implementada con un MathScript de MATLAB para la conversión del valor numérico recibido a un valor en grados Centígrados de tal manera que se pudiera visualizar la temperatura sensada.
12
Apéndice 1 // Configuración Inicial del Microcontrolador PIC de Microchip™ #INCLUDE <16F877A.h> #DEVICE adc=8 #USE delay(clock=4000000) #USE RS232(baud=9600,xmit=PIN_C6,rcv=PIN_C7) #fuses XT, NOWDT #BYTE TRISC= 0X87
// Declaración de Variables en la función principal o void main void main(){
int set_Point; int16 valor; int16 control; float a,b,c; float temp_limit; float rT,eT,iT,dT,yT,uT,iT0,eT0; float max,min; min=0.0; max=1500.0; a=0.1243; b=0.000062; c=62.1514; temp_limit=0.0; TRISC=0; setup_timer_2(t2_div_by_4,249,1); setup_ccp1(ccp_pwm); SETUP_ADC_PORTS(ALL_ANALOG); SETUP_ADC(ADC_CLOCK_INTERNAL); //Ciclo a repetir (aquí se a loja el programa del PID discreto) for(;;){
13
set_adc_channel(1); delay_us(20); set_Point=read_adc(); temp_limit=set_Point*19.53125; set_adc_channel(0); delay_us(20); valor=read_adc(); PUTC(valor); yT=valor*20000.0/1024.0; rT=temp_limit; eT=rT-yT; iT=b*eT+iT0; dT=c*(eT-eT0); //Respuesta PID uT=iT+a*eT+dT;
//Condiciones de Control en caso de sob repasar positivamente o negativamente el rango de operación. if(uT>max){ uT=max; } else{ if(uT
14