Laboratorio de Control por Computador 4º Curso. Ingeniería de Telecomunicación Libro de Prácticas y Exámenes Manuel López Martínez Mercedes Pérez de la Parte Francisco Gordillo Álvarez Ing. Sistemas y Automática © 2001-2005 Índice ENUNCIADOS DE PRÁCTICAS Práctica 1: Introducción a Labview. Configuración de una tarjeta de adquisición de datos..................... 7 Práctica 2: Análisis de un sistema y diseño de Controladores PID ............................................ 13 Práctica 3: Microcontroladores programables......................17 Práctica 4: Implementación digital de un PID......................23 Práctica 5: Regulador lineal óptimo cuadrático (LQR)..........25 Práctica 6: Control predictivo generalizado (GPC)................27 Práctica 7: Introducción al Scada WinCC............................29 Manual de referencia rápida...............................31 Práctica 8: Identificación y control adaptativo.....................57 Práctica 9: Bibliotecas de funciones de enlace dinámico (DLL)...................................................59 EXÁMENES DE PRÁCTICAS Examen 01.........................................................................67 Examen 02.........................................................................69 Examen 03.........................................................................71 Examen 04.........................................................................73 Enunciados de Prácticas LABORATORIO DE CONTROL POR COMPUTADOR PRÁCTICA 1 Introducción a LabView.Configuración de una tarjeta de adquisición de datos © Manuel López Martínez 1 Objetivos El objetivo fundamental de esta práctica es enfrentar al alumno con los problemas que aparecen a la hora de trabajar por primera vez con una tarjeta de entradas y salidas tanto analógicas como digitales(Tarjeta de Adquisición de Datos y Control). Para ello emplearemos un software especı́fico para el control de instrumentación. Este software se denomina LabView y se caracteriza por ser un lenguaje de programación gráfica. Se pretende desarrollar un programa con este software que permita configurar, leer y escribir en la tarjeta. De igual modo se realizará un interfaz gráfico para poder visualizar los datos leı́dos y escritos. 2 Equipo Necesario Cada puesto de trabajo estará formado por: • Un PC equipado con una tarjeta de adquisición de datos • Una fuente de tensión. • Un generador de onda. • Un osciloscopio. 3 Introducción a LabView LabView es un entorno de desarrollo de programas basado en un lenguaje de programación gráfico (G) que genera los programas en forma de diagramas de bloques. LabView dispone de bibliotecas para adquisición de datos, análisis, presentación y almacenamiento de datos. Además dispone de herramientas convencionales de desarrollo de programas y depuración de errores, tales como puntos de ruptura, ejecución paso a paso y animación del flujo del programa. Los programas en LabView se denominan instrumentos virtuales (extensión *.vi). Un VI consiste en una interfaz de usuario interactiva denominada Panel y un diagrama de flujo de datos. Cada VI podrá tener acceso a otros VIs, bien para hacer nuevas pantallas o bien para que trabajen como subprogramas, esto se hará a través de la generación del icono del VI y de sus entradas y salidas. Se comenzará programando el VI de mayor nivel definiendo las entradas y salidas para la aplicación deseada. 7 3.1 Conceptos básicos del lenguaje G 1. VIs 2. Panel Frontal: Controles e Indicadores (a) Controles: Dispositivo a través del cual el usuario introduce datos para su procesamiento. (b) Indicador: Dispositivo a través del cual el usuario lee los resultados que da el programa. Figura 1: Panel 3. Diagrama de Programación: Funciones (a) Terminales: Cada Control e indicador del panel frontal tendrá asociado un terminal de conexión en el diagrama de programación. A través de este terminal fluirán los datos hacia otros terminales de conexión o hacia funciones. (b) Cableado: Camino para los datos desde un terminal a otro. Su color indica el tipo de datos que circula por él. Azul=enteros, verde=booleanos, naranja=flotantes, rosa=cadenas de caracteres, Marrón=Clusters. Arrays: Conjunto de elementos del mismo tipo Cluster: Conjunto de elementos de distinto tipo 8 Figura 2: Diagrama Librerı́as Tarjeta Estructuras Figura 3: Estructuras • While:Terminal de iteración(i) y terminal condicional. Shift Register: Registros de desplazamiento. Variables locales que permiten transferir los valores del final de una iteración al principio de la siguiente. Tiempo de Espera: Cuando es necesario ejecutar un bucle while cada cierto tiempo, se añade un tiempo de espera. Con esto podremos definir el Tiempo de Muestreo. 9 Figura 4: Espera un tiempo (en ms) • For: Hay dos terminales asociados. Terminal contador(N) y el terminal de iteración(i). Hay también registros de desplazamiento. • Estructura Case: Selector del caso(?).Identificador del caso. • Estructura Secuence 3.2 Ejemplo: Función Seno En el siguiente ejemplo se muestra un vi en el que se aplica un filtro a una señal senoidal. El filtro es yk = uk + a ∗ yk−1 , donde uk es una señal senoidal de frecuencia w. En este ejemplo se hace notar la importancia del uso del registro de desplazamiento(shift register) ya que nos permitirá tener acceso a las variables de iteraciones anteriores. Figura 5: Panel y Diagrama Función Seno 10 4 Desarrollo Haciendo uso de la biblioteca de funciones para la tarjeta de entrada salida, y de los drivers para LabView, se tendrá que realizar un VI, tanto el panel frontal como el diagrama de bloques de programación para conseguir realizar: • Inicialización de la Tarjeta. • Lectura de los canales de la Tarjeta. • Escritura en los canales de la Tarjeta. Para comprobar el correcto funcionamiento del VI, se utilizará un generador se señal, y un osciloscopio. 4.1 Funciones de la Biblioteca Figura 6: Funciones para Inicialización Figura 7: Funciones para Lectura Figura 8: Funciones para Escritura 11 INGENIERO DE TELECOMUNICACIÓN LABORATORIO DE CONTROL POR COMPUTADOR Departamento de Ingenierı́a de Sistemas y Automática Práctica 2 Análisis de un sistema y diseño de controladores PID 1. Análisis del sistema Se pretende aquı́ observar el comportamiento del motor ante cambios en el voltaje de entrada a la excitación del mismo. Usaremos el ordenador como monitor para dicha observación en bucle abierto con una aplicación en Labview. El conexionado se muestra en el anexo de este documento. Una vez hecho el conexionado y utilizando la aplicación de Labview disponible, se realizarán varios experimentos usando distinta magnitud de escalón. Los resultados se guardarán en archivos de disco flexible (se procurará apuntar el contenido de cada archivo para evitar confusiones en su estudio posterior). 1.1. Experimentos Para distintos valores de u (tensión de excitación), se medirán la evolución de y (tensión proporcional a la posición) y de yv (tensión proporcional a la velocidad). Los valores de u serán tı́picamente bajo, medio y alto. Se observará la existencia de zona muerta y de saturación en la señal de mando y se tomará nota de los resultados. IMPORTANTE: Para los experimentos no se debe variar la posición del mando del atenuador ni del amplificador. Los ficheros obtenidos se utilizarán en el punto siguiente. 1.2. Cálculo de parámetros La salida de la planta yv (velocidad) ante una entrada en escalón se asemeja a la de un sistema de primer orden. Tales sistemas quedan caracterizados por una ganancia estática y una constante de tiempo. Aunque nuestro sistema no es de primer orden, podemos hacer tal aproximación. 1 13 La posición angular del eje y resulta de integrar la velocidad multiplicada por cierta constante (debido a la conversión de grados a voltios). La dinámica de la planta completa se aproxima, por tanto, a: u→ k1 yv k 2 −→ →y 1 + τs s donde las variables son: u: Señal de mando en voltios. yv : Velocidad de giro, expresada en voltios de la señal medida. y: Posición angular, expresada en voltios de la señal medida. Se obtendrán los parámetros del sistema k1 , τ y k2 haciendo uso de los datos obtenidos en los experimentos (por ejemplo de forma gráfica). Los valores serán diferentes en las zonas baja, media y alta de u, por lo que se hará una media. 2. Diseño de un regulador PI para el control de velocidad Con los parámetros k1 , y τ obtenidos anteriormente se pueden diseñar reguladores para el control de la velocidad (no confundir con el control de la posición) en bucle cerrado. Para el programa MATLAB es de gran ayuda. 2.1. Especificaciones Se podrá usar la transformada en s (aunque es una aproximación ya que se va a trabajar en tiempo discreto) para obtener un PI que cumpla: El cero del PI cancelará el polo del sistema. La constante de tiempo será la mitad de la del sistema sin compensar. 2 14 2.2. Experimentos Se probará la eficacia del controlador diseñado mediante una serie de experimentos en los cuales la referencia del sistema en bucle cerrado sufrirá escalones en distintas zonas. Los resultados se archivarán en ficheros. Se moverán los parámetros del PI de su punto de diseño, y se verá como afecta a la respuesta del bucle cerrado. 3. Diseño de un regulador PID para el control de posición Nótese que en este caso se desea controlar la posición. Se diseñará el PID de forma empı́rica: en primer lugar se observará el efecto de cada uno de los términos del PID (proporcional, integral y derivativo) sobre el comportamiento del bucle cerrado modificando los parámetros Kp , Ti y Td . Se efectuarán diversos experimentos correspondientes a distintos valores de los parámetros. Un procedimiento para sintonizar el PID es el siguiente: 1. Elegir (a base de prueba y error) un valor de Kp que haga que no haya mucha sobreoscilación ni tampoco oscilaciones. Los efectos integral y derivativo serán aquı́ nulos (piense los valores que hay que asignarles a Ti y Td para que esto ocurra). 2. Bajar algo Kp y añadir término integral para anular el error en régimen permanente (producido por la zona muerta). 3. Añadir ahora término derivativo con objeto de suavizar la sobreoscilación que puede haber aparecido en el punto 2. Se tomará nota de los valores de los parámetros en cada prueba. 4. Memoria Se detallará en la memoria aquellos puntos que se indicaron más arriba como importantes para la observación. Asimismo se incluirá en la memoria todo trabajo desarrollado por el alumno, como: programa de control, ecuaciones, análisis, etc. y todo fichero de resultados (en forma gráfica si se puede). Se puntuará una explicación de los efectos observados en el ajuste del PID. 3 15 ANEXO Conexiones de los servomotores 1. Motores modulares Feedback 150 1111111111111 0000000000000 0000000000000 1111111111111 0000000000000 1111111111111 0000000000000 1111111111111 SA 150D PS 150E Actuación: AO1 +15 0 -15 3 1 +15 4 AU 150B 0 -15 PA 150C 1 2 Velocidad: AI1 GND MT 150F Posición: AI0 Divisor de tensiones OP 150K 2. Motores compactos Feedback A estos motores simplemente hay que conectarles la alimentación (IMPORTANTE: hay que asegurarse de que se hace correctamente) y las entradas y salidas a través del conector de cable plano: Cable plano 11111111111111111 00000000000000000 00000000000000000 11111111111111111 00000000000000000 11111111111111111 00000000000000000 11111111111111111 00000000000000000 11111111111111111 ALIMENTACIÓN Fuente 15 V 15 V 1 - - + +15 +5 + 0V GND 2 3 4 5 6 5V 1: GND 2: Posición: AI0 3: Referencia 4: Actuación: AO1 5: Velocidad: AI1 6: N/A -15 16 Práctica 3: Microcontroladores programables. Objetivos 1) Conocer y conectar un nuevo equipo comercial para controlar sistemas mediante un microprocesador y una memoria autónomos. 2) Programar con las herramientas de programación ofrecidas y nuestro PC, el microcontrolador para un control PID. 3) Conectar el microcontrolador al servomotor empleado en prácticas anteriores, controlar y comentar los resultados prácticos obtenidos. 1) Conocimientos básicos del microcontrolador PK2100 de Z-World Utilidad. Los controladores industriales basados en circuitos electrónicos son de gran utilidad en la actualidad dado su bajo coste, su confiabilidad y la gran cantidad de herramientas informáticas y de desarrollo que proporcionan una fácil implementación de algoritmos de control. Los circuitos microcontroladores cada día son más rápidos, pequeños y con más potencia de cálculo. Presentación. El microcontrolador industrial de propósito general de la firma Z-World que emplearemos en la práctica es el modelo PK2100. Está basado en el microprocesador Z180 de Zilog de 8 bits. Descripción técnica. - Toda la aritmética flotante debe realizarse haciendo uso de funciones programadas porque el hardware es de 8 bits sólo. Por tanto, operaciones como multiplicaciones de flotantes en 32 bits son operaciones muy costosas en cuanto a tiempo de ejecución. - La frecuencia de reloj es de 6,144 MHz. La memoria EPROM o FLASH puede ser desde 32K hasta 128K. La capacidad de memoria RAM, de 32K hasta 512K. Se alimenta con una fuente de 24 voltios y consume aproximadamente 5,5 W. - La tarjeta que reúne todos los circuitos que componen el microcontrolador se muestra en la figura 1. - Interfaces: • 6 entradas universales que pueden ser usadas como entradas digitales, o entradas analógicas. El rango de tensión entrada es desde 0 a 10 V con 10 bits de resolución y una protección contra sobretensiones de +-48 voltios. • Una entrada analógica diferencial con rango de 0 a 10 V con 10 bits de resolución. • 7 entradas digitales. 3 de ellas pueden funcionar como contadores. • 2 canales para usar como entrada a contadores. • 2 salidas a relés con intensidad de 3 A a 48 V. • 10 salidas de corriente para dirigir relés o solenoides. • 1 salida analógica que puede ser en tensión (0 a 10 V) o en corriente (0 a 20 mA). • Un puerto RS485/RS422 y un puerto RS232. • Un bus de expansión para dispositivos PCL-BUS de ZILOG. Laboratorio de Control por Computador Automática 1 17 Dpto Ingeniería de Sistemas y Figura 1. Placa del microcontrolador industrial PK2100. Aplicabilidad. Los microcontroladores se emplean con sistemas en entornos industriales y domésticos. Este microcontrolador se puede emplear para controlar maquinaria de empaquetado o sistemas de procesado de material, para detectar contactos, contar pulsos, medir valores analógicos como temperatura, presión o posición (caso de nuestra práctica). Se conecta directamente a muchos sensores y dispositivos periféricos. Conexión del controlador PK2100 al PC. Para llevar a cabo la conexión del controlador PK2100 al PC donde se ejecuta el software de desarrollo Dynamic-C se deben realizar las siguientes tareas: • • • • Conectar el cable rojo (o negro(-) y blanco(+)) de la fuente de alimentación de 24 Vdc al conector atornillable marcado con las letras +24. Conectar el otro cable de la fuente al conector atornillable marcado con las letras GND dos posiciones por debajo del primero. Todas los conectores atornillables marcados con GND están unidos eléctricamente. Comprobar que el controlador no tiene tensión ( fuente no conectada a toma de red). Conectar el controlador al puerto serie del PC (COM) mediante al cable serie y el adaptador RJ-DB9 que se proporcionan. Conectar la fuente de alimentación a una toma de red y arrncar en el PC el software de desarrollo Dynamic-C. Comprobar que el puerto configurado en la aplicación Dynamic-C (Serial en el menú), tiene la misma velocidad que la indicada en la configuración del PC. En este momento el controlador está listo para ser programado. La comunicación entre el PC y el microcontrolador comienza cuando se arranca en el PC el programa Dynamic-C ( el PC intenta comunicarse con el controlador cada vez que se comienza a ejecutar el software). Si el controlador no está presente o no se le ha dado tensión se mostrará un mensaje de error por pantalla: Target not responding. Laboratorio de Control por Computador Automática 2 18 Dpto Ingeniería de Sistemas y Situación de los conectores atornillables. En la figura 2 puede verse la situación en la tarjeta del controlador de cada uno de los conectores atornillables. Aparecen los correspondientes a las entradas universales y a la salida analógica así como los conectores para la entrada y salida adicionales (A/D+ y UEXP respectivamente). Todos los conectores marcados con GND están unidos eléctricamente y es en ellos donde deben conectarse los polos comunes de cada entrada y de la salida. Para nuestra práctica se utilizarán la salida analógica (DAC Ouput), la entrada universal U1 para la medida de posición y la entrada universal U2 para la entrada de la señal de referencia. Conectar también los conectores con las letras GND. Figura 2. Situación de los conectores atornillables y las entradas y salidas. Tarjetas de adaptación de señal para nuestro sistema particular. La tarjeta de entrada al controlador se alimenta con +-15 V. Se utilizará el terminal marcado como OUT1 para unirlo a U1. INI1 irá conectado a la medida de posición en el sistema. La tarjeta de salida del controlador es la de tamaño más pequeño. También se alimenta con +-15 V. Se une la salida DAC del microcontrolador al terminal marcado como IN en la tarjeta. El terminal OUT se une a la entrada de control del sistema. La tarjeta de salida deberá ser ajustada en offset y en ganancia. Para ello se ajustarán los potenciómetros 1 (ajuste de offset) y 2 (ajuste de ganancia) mostrado en la figura 3. ALIMENTACIÓN ENTRADA 5V ALIMENTACIÓN ENTRADA SALIDA SALIDA POTENCIOMETRO DE AJUSTE DE GANANCIA -10 V 0V 0V POTENCIÓMETRO DE AJUSTE DE OFFSET Figura 3. Ajuste de la tarjeta de conversión de tensiones de salida del controlador. Laboratorio de Control por Computador Automática 3 19 Dpto Ingeniería de Sistemas y Situación de los puentes de configuración (Jumpers y Headers) en el controlador. Para la práctica sólo hay que comprobar el jumper J1. Si el microprocesador lleva una memoria EPROM, conectar los pines 4-5 y 8-9. Si el microcontrolador lleva una memoria FLASH, conectar los pines 7-8 y 12-13. 2) Programación del PK2100 Introducción. El PK2100 se programa a través del puerto serie RS232 que debe conectarse al puerto serie de un IBM PC o compatible en el que se tenga instalada la aplicación Dynamic-C 5.25 de Z-world que se utiliza para desarrollar los programas. Se emplearán las librerías que proporciona este software de desarrollo para el manejo de las entradas/salidas. La programación es en lenguaje C ya que éste genera un código compacto y eficiente de alto nivel que permite también utilizar el código máquina. Las funciones principales de Dynamic C son la Edición, Compilación, Lincado, Carga y Depuración del código que genera el usuario. Los programas se compilan, lincan y descargan en la memoria del microcontrolador en un solo paso. También se permite compilar generando un fichero ejecutable sin necesidad de tener conectado el microcontrolador. Diferencias entre Dynamic-C y lenguaje C. • • • • • • • Las variables que al ser declaradas son inicializadas se consideran constantes almacenándose en memoria ROM y por tanto se considera un error el intentar cambiar su valor. El modo de almacenamiento por defecto es static y no auto como en el estandar. No existe la directiva #include sino #use. Dynamic-C no soporta el tipo enumerado. Las palabras reservadas extern y register tienen un significado diferente. Se permite incluir instrucciones en ensamblador intercaladas en el código. Dynamic-C permite la simulación de tareas ejecutándose “en paralelo” en un mismo programa usando una estructura denominada costatement. Las tareas programadas así son multiplexadas en el tiempo de ejecución. Esto se denomina Procesamiento Concurrente Procesamiento Concurrente. Esto puede ser interesante en el caso de controladores conectados a varios dispositivos externos. El hecho de usar programación multitarea para controlar un sistema de estas características permite la posibilidad de pensar en el control de cada dispositivo por separado haciendo más fácil el proceso de desarrollo. Dynamic C proporciona dos tipos de programación multitarea para desarrollar aplicaciones: cooperativa (costatements) y por prioridad (preemtive). • • Cooperativa (costatements): en un entorno de programación multitarea cooperativa cada tarea abandona voluntariamente el control para que otra tarea entre a ejecutarse. En este caso no es necesario tener un “kernel” o núcleo para controlar el proceso puesto que las tareas colaboran entre sí. Esta filosofía presenta las ventajas de que es más fácil la comunicación entre las tareas, es más fácil predecir la interacción entre las tareas y su programación es muy simple. Por prioridad (preemtive): en este caso las tareas son interrumpidas. Una tarea deja el control a favor de otra que entra a ejecutarse. Una tarea es sustituida por otra que puede tener más prioridad. Las tareas no tienen control del momento en que serán sustituidas. En esta filosofía se necesita un núcleo o kernel que para y da entrada a las tareas. Normalmente se usa un timer para generar el periodo durante el que está activa una tarea. Por el hecho de que las tareas no controlan el momento en que son interrumpidas se debe tener cuidado al usar variables compartidas. La comunicación entre tareas es el mayor problema. Laboratorio de Control por Computador Automática 4 20 Dpto Ingeniería de Sistemas y Costatements. El recurso de la estructura “costatement” proporciona la posibilidad de generar código que se ejecuta hasta que encuentra un punto donde es necesario esperar a la ocurrencia de un evento o esperar simplemente un determinado intervalo de tiempo. El hecho de esperar conlleva el acto de conmutar de tarea para pasar a ejecutar otra. La conmutación entre tareas se puede llevar a cabo mediante las siguientes funciones y comandos que proporciona el software: • Waitfor( ) : a la espera de un evento o cuando es necesario detener la ejecución de la tarea durante un determinado intervalo de tiempo. Sólo se continua ejecutando la tarea cuando la condición que se da como parámetro se ha cumplido. Sólo puede usarse dentro de una estructura costatement. • Yield : provoca la conmutación inmediata de tarea. • Abort : finalización de la tarea. Cuando tenemos más de una tarea, una forma más práctica de resolver este tipo de problemas es usar una estructura de bucle más amplia donde cada tarea puede ceder el control a otra tarea cuando deba esperar. Se consigue así aprovechar de forma más eficiente la capacidad de proceso. El resultado es que cada tarea se ejecuta en los tiempos de espera de las demás tareas. Con la función waitfor( ) se comprueba si se cumple la condición que se da como parámetro y, si no es así, se conmuta a otra tarea. Cuando la tarea es retomada se vuelve por el punto en el código donde se quedó ejecutando cuando se conmutó y se vuelve a comprobar la condición y si es el caso se continúa ejecutando. Driver virtual. El driver virtual que proporciona Dynamic-C consta de un conjunto de funciones que proporcionan una serie de servicios. Entre ellos están la inicialización global del sistema y las interrupciones periódicas de los timer. Una llamada a la función VdInit debe ser hecha al comienzo de la ejecución. De esta forma se inicializan todos los recursos del sistema así como las estructuras de datos necesarias (Codata) correspondientes a la costatement definidas si las hay. Librerías que incluir. Para poder invocar a las funciones del driver virtual debe incluirse en código la librería vdriver.lib, la librería pk21xx.lib del micro PK2100 y la librería drivers.lib. Tiempo de muestreo. Se ha de tener en cuenta el valor mínimo del tiempo de muestreo (Pmin) que se calcula como el tiempo máximo que tarda en ejecutarse el bucle del PID programado. Una forma sencilla de calcularlo es con una estimación ejecutando el bucle durante por ejemplo 10 s y contabilizar el número veces que se ejecuta el bucle PID. Dividiendo obtenemos una estimación de Pmin. Aplicación. Desde la pantalla principal del entorno de desarrollo se abre el menú File y se selecciona New. En pantalla aparece una ventana de edición de texto donde escribir el código del programa. A continuación compilamos el programa pulsando F3 o seleccionando Compile to Target dentro del menú Compile. Dynamic-C compila el programa y lo descarga automáticamente en la RAM del controlador. Ahora se puede ejecutar el programa pulsando F9 o seleccionando Run del menú Run. Durante la ejecución del programa se puede pulsar Ctrl+Z para detener la ejecución. Pulsando de nuevo F9 se continúa la ejecución. También se puede resetear el controlador pulsando Ctrl+Y o seleccionando Reset Target dentro del menú Run. Para volver a modificar un programa ya compilado y cargado en el microcontrolador, seleccionamos en el menú Edit Mode. Si no tenemos el micro conectado, se puede generar el ejecutable en el PC con Compile to File. Una vez desarrollados, los programas pueden residir en tres soportes distintos: • RAM con soporte de batería. Laboratorio de Control por Computador Automática 5 21 Dpto Ingeniería de Sistemas y • ROM, programada aparte y que sustituya a la ROM estándar de Z-world. • Memoria FLASH que puede ser reprogramada sin necesidad de ser extraída de la tarjeta. Durante la ejecución de los algoritmos el microcontrolador permanece conectado físicamente al PC. 3) Diagrama del sistema en bucle cerrado Consignas CPU Z180 A/D Actuador D/A Sistema Controlador PK2100 Sensores Tarjetas de adaptación de señal Línea RS232 Laboratorio de Control por Computador Automática 6 22 Dpto Ingeniería de Sistemas y Práctica 4 LABORATORIO DE CONTROL POR COMPUTADOR IMPLEMENTACIÓN DIGITAL DE UN PID: ASPECTOS PRÁCTICOS © Manuel López Martínez 1. Objetivos En la implementación digital de un controlador PID hay que tener en cuenta diversos aspectos como: Conmutación control manual/automático Saturación del actuador. En esta práctica se pretende que el alumno controle un motor de cc usando un control pid digital teniendo en cuenta estos aspectos. La programación se llevará a cabo usando LabVIEW. 2. Equipo Necesario Apuntes de clase Cada puesto de trabajo estará formado por: Un PC equipado con una tarjeta de adquisición de datos Un motor de cc. 3. Desarrollo Se pretende realizar un control en velocidad del motor de cc haciendo uso de un PID digital. En la práctica se analizarán los siguientes aspectos en la implementación del PID digital. 1. Fenómeno Wind-Up 2. Conmutación Manual/Automático. 23 3.1. Anti-wind up Con el PID básico implementado hay que realizar el siguiente experimento. Experimento: Introducir una referencia de velocidad inalcanzable (el motor satura) Usar el freno magnético para introducir una perturbación. Llevar la referencia hasta un valor normal de funcionamiento. Tras realizar este experimento se observa un fenómeno de ”wind up”. Se pretende implementar un PID (PI) que tenga en cuenta la aparición del fenómeno de wind up como consecuencia de la saturación del motor y de la existencia de un término integral en el controlador. El controlador diseñado ha de ser capaz de evitar el fenómeno de wind-up. Usar los métodos descritos en clase y describir el funcionamiento del conjunto. 3.2. Conmutación Manual/Automático En esta parte de la práctica, se pide realizar el siguiente experimento Experimento: En primer lugar el motor será controlado de forma manual con una señal de control distinta de cero. En un instante determinado se realizará una conmutación de manual a automático. Se pide modificar el PID de forma que la conmutación manual/automático no se realice de forma abrupta. El controlador ha de ser capaz de realizar una conmutación suave. Usar los métodos descritos en clase y describir el funcionamiento del conjunto. NOTA: Para la realización de la práctica son necesarios los apuntes de clase 24 Práctica 5 - Regulador Lineal Óptimo Cuadrático (LQR) 1) Identificar el sistema - - En Modo MANUAL de control y CONTROL EN VELOCIDAD. Encontrar la zona muerta y la zona de saturación Æ rango efectivo de operación Dividir el rango efectivo de operación de entrada en tres escalones, e identificar el sistema, en los tres escalones de entrada, la respuesta de primer orden (ganancia K1 y constante de tiempo TAO al 63%) : K11, K12, K13, τ1, τ2, τ3. Encontrar K1 y τ como la media de los tres cálculos en cada caso. Utilizar el botón GUARDAR del panel de PRACTICA.VI para generar un fichero para disponer de los datos generados en la ejecución. CONTROL EN POSICIÓN. Encontrar K21, K22, K23 midiendo la pendiente de la posición para tres velocidades constantes de entrada. Hacer la media para hallar K2. t p (t ) = ∫ K 2Vdt = K 2Vt 0 U(S) K1 TAOs + 1 V(S) K2 s P(S) Ejemplo: K1=0.6, K2=6.5, τ=0.8 2) Regulación. Considerando los estados x1 = posición y x2 = velocidad, obtener la representación interna discreta del sistema con mantenedor de orden cero y tiempo de muestreo de al menos un décimo de la constante de tiempo efectiva del sistema. Obtener los parámetros del vector de realimentación de estados para Q = I*{0.1,1,10,30} y R = {0.1, 1, 10, 30}. Simular con Simulink con referencia nula y condiciones iniciales no nulas y comentar el efecto de la elección de R sobre el desempeño del controlador. 3) Modificar Práctica.vi a un nuevo practica5.vi, de forma que se sustituya el bloque de control PID por un bloque de control LQR con parámetros de entrada K1 y K2, componentes del vector de ganancias de realimentación del vector de estados. Comparar los resultados obtenidos por simulación con los obtenidos con el control real. 4) Seguimiento. Añadir a la ley LQR un término de realimentación de la referencia tal que uk = N*SP – K*Xk donde SP es la referencia o Set Point. Utilizar la siguiente función, cuyos parámetros de entrada son las matrices de la dinámica discreta del sistema Ad y Bd, y el vector K de realimentación de estados obtenido en el apartado 2), para encontrar el valor de N compensador function salida = rscale_discreto(F,G,K) S=solve('F(1,1)+F(1,2)*y+G(1)*N=1+G(1)*(K(1)+K(2)*y)',... 'F(2,1)+F(2,2)*y+G(2)*N=y+G(2)*(K(1)+K(2)*y)','N,y'); salida=eval(S.N); 5) Modificar practica5.vi para realizar el seguimiento de una referencia distinta de cero. Comparar los resultados obtenidos por simulación con los obtenidos con el control real. Laboratorio de Control por Computador 1 25 Dpto Ingeniería de Sistemas y Automática Práctica 6 Control Predictivo Generalizado. 1) Identificar el sistema - - En Modo MANUAL de control y CONTROL EN VELOCIDAD. Encontrar la zona muerta y la zona de saturación Æ rango efectivo de operación Dividir el rango efectivo de operación de entrada en tres escalones, e identificar el sistema, en los tres escalones de entrada, la respuesta de primer orden (ganancia K1 y constante de tiempo TAO al 63%) : K11, K12, K13, TAO1, TAO2, TAO3. Encontrar K1 y TAO como la media de los tres cálculos en cada caso. Utilizar el botón GUARDAR del panel de PRACTICA.VI para generar un fichero para disponer de los datos generados en la ejecución. CONTROL EN POSICIÓN. Encontrar K21, K22, K23 midiendo la pendiente de la posición para tres velocidades constantes de entrada. Hacer la media para hallar K2. t p(t ) = ∫ K 2Vdt = K 2Vt 0 U(S) V(S) K1 TAOs + 1 K2 s P(S) Ejemplo: K1=0.6, K2=6.5, TAO=0.8 2) Discretizar con un tiempo de muestreo de al menos un décimo de la constante de tiempo efectiva del sistema Ejemplo: G( s) = 4 (0.8s + 1) s Æ G( z) = 0.015z −1 + 0.0149 z −2 1 − 1.9 z −1 + 0.9048z −2 3) Programar en Matlab el cálculo de los parámetros del GPC y la simulación del bucle cerrado utilizando el modelo discreto del proceso para generar las y(t). Realizar varias simulaciones con varios parámetros N=[3 50] y λ=[0.05 5] y comentar los efectos de aumentar o disminuir los parámetros. Seleccionar una buena sintonización del controlador en cuanto a rapidez y sobreoscilación. Para estos parámetros, obtener los correspondientes Ky, Ku y Kr de la expresión explícita de la ley de control para realizar el apartado siguiente. ∆u(t) = K u1 (u(t-1)-u(t-2)) + K u2 (u(t-2)-u(t-3)) + K r1ref(t)+K y1y p (t) + K y2 y p (t-1) + K y3 y p (t-2) 4) Modificar Practica.vi a un nuevo practica6.vi, de forma que se sustituya el bloque de control PID por un bloque de control GPC con parámetros de entrada Ky, Ku y Kr. Comparar los resultados obtenidos por simulación con los obtenidos con el control real. Laboratorio de Control por Computador 1 27 Dpto Ingeniería de Sistemas y Automática Práctica 7 LABORATORIO DE CONTROL POR COMPUTADOR 4º CURSO DE INGENIERO DE TELECOMUNICACIÓN Introducción a un SCADA: WinCC Objetivo Conocer un sistema comercial de supervisión, adquisición y tratamiento de datos. Se utilizará el Windows Command Center (WinCC) de Siemens. Desarrollo Programar un SCADA mediante WinCC para supervisar una aplicación domótica. Primera parte. Gestión de alarma, de iluminación y de movimiento. En esta primera aplicación, la entrada del exterior se produce mediante un sensor de movimiento en una habitación. Cuando el SCADA recibe una entrada que indica movimiento, indica en la pantalla al operario que se está detectando movimiento, y acto seguido enciende la luz de dicha habitación. El operario debe poder supervisar a través del interfaz gráfico si la luz de la habitación está encendida o apagada. El operario debe tener además a su disposición un pulsador para activar una alarma y otro pulsador para desactivarla, o bien un conmutador que pueda tomar los valores “encendido” y “apagado”. Este conmutador activa o desactiva una alarma. El estado de la alarma debe estar visible en todo momento para el operario. Cuando el SCADA detecte movimiento en la habitación y además la alarma se encuentre encendida, encenderá un altavoz. El estado de este altavoz (sonando o en silencio) debe estar también visible en todo momento. La pantalla debe constar de los siguientes elementos: 9 Dos pulsadores o bien un conmutador para activar/desactivar la alarma. 9 Un indicador de alarma activada/desactivada. 9 Un indicador de movimiento detectado/no detectado. 9 Un indicador de altavoz de alarma sonando/no sonando. 9 Un indicador de luz en la habitación encendida/apagada. 29 Segunda parte. Gestión de temperatura en la habitación. En esta segunda aplicación, la entrada del exterior se produce mediante un sensor de temperatura en una habitación. La pantalla debe mostrar en todo momento la temperatura a la que se encuentra la habitación. Además, el operario debe tener a su disposición un pulsador para activar un climatizador y otro pulsador para desactivarlo, o bien un conmutador que pueda tomar los valores “encendido” y “apagado”. Este conmutador activa o desactiva el climatizador. Cuando el climatizador está encendido, se muestra éste en la pantalla. Cuando se encuentra apagado, éste no debe mostrarse en pantalla. El climatizador consta de una barra de desplazamiento asociada a un indicador de dígitos. El operario, cuando el climatizador se encuentre encendido, podrá modificar el número reflejado en el indicador de dígitos a través de la barra de desplazamiento. El climatizador debe además modificar la temperatura de la habitación a la requerida por el operario pero de forma gradual, es decir, que cada ciclo de 500 milisegundos que transcurra se modificará en un grado la temperatura de la habitación para acercarse a la temperatura deseada. La pantalla debe mostrar los siguientes elementos: 9 Dos pulsadores o bien un conmutador para activar/desactivar el climatizador. 9 Una barra deslizante con indicador de dígitos para modificar la temperatura deseada. 9 Un indicador que muestre la temperatura actual de la habitación. Primera y segunda parte. En ambos apartados de la práctica se deben mostrar dos botones. Uno que haga que la pantalla cambie a la otra parte de la práctica, es decir, que si se encuentra en la primera parte, haga que aparezca la pantalla de la segunda parte y viceversa. El otro botón debe servir para salir de la aplicación. 30 Manual de referencia rápida: SCADA WINCC 1 LABORATORIO DE CONTROL POR COMPUTADOR 4º Curso de Ingenieros de Telecomunicación INTRODUCCIÓN AL SCADA WinCC Un sistema SCADA es un programa que nos va a permitir la supervisión, adquisición y tratamientos de datos que provienen de un proceso. 1. Creación de un proyecto nuevo Para la creación de un nuevo proyecto seguiremos los siguientes pasos: 1. Abrir el SCADA desde el menú “Inicio”. 2. A continuación desplegamos el menú “File” y seleccionamos “New”, de manera que aparecerá una pantalla donde le daremos nombre al proyecto y pulsaremos el botón “Create”. 3. Una vez hecho esto aparecerá el proyecto creado con la siguiente estructura: Veamos cada elemento del árbol jeráquico: Computer: Seleccionaremos que aplicaciones o tareas que queremos arranquen cuando nuestro proyecto se active. Para ello haremos lo siguiente: 31 que Manual de referencia rápida: SCADA WINCC 2 1. Seleccionamos “Computer” y con el botón izquierdo del ratón hacemos doble clic sobre el icono que aparece en la ventana derecha. 2. A continuación elegimos el tabulador “Startup” y habilitamos las aplicaciones que queremos que arranquen con nuestro proyecto. Pulsaremos el botón “Aceptar” una vez seleccionado lo deseado. Tag Management: En este elemento se definirán las variables internas del SCADA, las variables externas y los drivers de comunicación y conexión con el autómata. Data Types: Cuando se expande aparecerá todos los posibles tipos de datos de manera que cuando seleccionemos uno, en la ventana derecha aparecerán las variables del proyecto cuyo formato es el seleccionado. Editor: Cuando se expande aparecerá los distintos tipos de editores disponibles. Para abrir alguno de los editores bastará seleccionarlo con el botón derecho del ratón y elegir “Open”. 2. Creación de una variable interna. Son variables localizadas en memoria del SCADA. Para su creación haremos lo siguiente: · Expandimos la rama “Tag Management” y seleccionamos “Internal tags” con el botón derecho del ratón. 32 Manual de referencia rápida: SCADA WINCC · Seleccionamos “New” de configuraremos la variable. manera que aparecerá una ventana 3 donde Por último pulsaremos el botón “Aceptar” para salvar la configuración. 3. Creación de una variable externa. Una variable externa es aquella que está directamente relacionada con el proceso. Antes de crear las variables externas es necesario configurar los drivers de comunicación entre el autómata y el SCADA. · Seleccionar “Tag Management” con el botón derecho del ratón y elegir “Add New Driver”. Aparecerán los drivers disponibles y seleccionaremos el deseado. DRIVER ELEGIDO A continuación pulsaremos el botón “Abrir”, de manera que el driver aparecerá en el árbol jerárquico. · A continuación expandimos el driver que aparece en el árbol y seleccionamos el tipo de conexión, en 33 Manual de referencia rápida: SCADA WINCC 4 nuestro caso MPI, con el botón derecho del ratón y elegimos “New Driver Connection”. · Por último introduciremos el nombre de la conexión (PLC1) y los parámetros. Para crear una variable externa: · Seleccionar la conexión PLC1 con el botón derecho del ratón y elegir “New tag”. Aparecerá una ventana donde elegiremos el nombre y el tipo de dato, pulsando por último “Aceptar”. · A continuación seleccionamos con el botón derecho del ratón la variable creada que aparece en la ventana derecha y elegimos el comando “Addresing” (Fig.1). En la ventana que aparece elegiremos el tipo de dato y la dirección que corresponde en el autómata.(Fig.2) 34 Manual de referencia rápida: SCADA WINCC 5 Por último pulsaremos el botón “Aceptar”. 4. Creacion de imágenes. Para la creación de imágenes haremos uso del editor gráfico, Graphic Designer”, donde definiremos nuestras animaciones las cuales estarán controladas por variables internas y externas del SCADA. Para crear una imagen se hará lo siguiente: · Con el botón derecho del ratón pulsaremos el editor “Graphic Designer” y seleccionaremos “New Picture”. · En la ventana derecha aparecerá “NewPdl0.Pdl” de manera que lo seleccionaremos con el botón derecho del ratón y elegiremos el comando “Rename” para darle el nombre que deseemos. · Para abrir la imagen haremos doble clic sobre ella apareciendo lo siguiente: INDICAMOS SI EL OBJETO ESTÁ EN PRIMER O SEGUNDO PLANO LIBRERÍA DE OBJETOS 5. Tipos de animaciones. Pasamos a definir una serie de animaciones básicas: 5.1 Configuración de un campo de entrada/salida. Dicho campo de entrada/salida se puede utilizar para representar el valor de alguna variable. Para ello haremos lo siguiente: 35 Manual de referencia rápida: SCADA WINCC 6 · En el editor gráfico seleccionamos el campo “I/O field” del grupo “Smart Object” y a continuación lo arrastramos a la posición deseada donde haremos clic con el ratón, apareciendo una ventana donde configuraremos dicho campo. VARIABLE REPRESENTADA TIEMPO DEACTUALIZACIÓN DEL VALOR Por último pulsaremos el botón “OK”. · Una vez hecho esto seleccionamos el objeto con el botón derecho del ratón y elegimos “Properties”. Seleccionamos la propiedad “Output/Input” y en la ventana derecha seleccionamos el atributo “Data Format” para elegir el formato de representación de la variable. 5.2 Cambio de una pantalla a otra mediante pulsador. 36 Manual de referencia rápida: SCADA WINCC 7 · En el editor gráfico seleccionamos el campo “Button” del grupo “Windows Object” y lo arrastramos hasta la posición deseada. Una vez allí hacemos clic con el ratón apareciendo una ventana como la mostrada a continuación donde configuraremos el botón. NOMBRE DEL BOTÓN A continuación pulsamos el botón (1) de manera que aparecerá una ventana donde elegiremos la pantalla a la que saltaremos. Por último pulsaremos el botón “OK” para validar la configuración. 1 5.3 Configuración de un botón para salir de la aplicación. · En el editor gráfico seleccionamos el campo “Button” del grupo “Windows Object” y lo arrastramos hasta la posición deseada. Una vez hecho esto lo seleccionamos con el botón izquierdo del ratón. ·A continuación hacemos doble clic sobre la función “Exit WinCC Runtime” que aparece en la ventana “Dynamic Wizard”. Aparecerá un asistente de manera que en la primera pantalla pulsamos “Siguiente”, en la segunda elegimos “Left mouse key” y pulsamos “Siguiente” y en la última pulsamos “Finalizar”. De esta manera cuando pulsemos el botón con el botón izquierdo del ratón, saldremos de la aplicación. 5.4 Forzado del valor de una variable mediante pulsadores. · En el editor gráfico seleccionamos el campo “Slider Object” del grupo “Windows Object”. A continuación colocamos el cursor en la posición deseada y pulsamos el botón izquierdo del ratón, apareciendo una ventana donde configuraremos el objeto.(Fig.1) 37 Manual de referencia rápida: SCADA WINCC · Por 8 último pulsaremos el botón “OK” para validar la configuración. 1 2 Fig.1 En la figura 2 se muestra el elemento configurado. Fig.2 1:Variable cuyo valor forzaremos. 2: Tiempo de actualización. 5.5 Animación de una variable en forma de barra gráfica. · En el editor gráfico seleccionamos el campo “Bar” del grupo “Smart Object”. A continuación colocamos el cursor en la posición deseada y pulsamos el botón izquierdo del ratón, apareciendo una ventana donde configuraremos el elemento. VARIABLE REPRESENTADA 38 Manual de referencia rápida: SCADA WINCC Fig.1 9 Fig.2 · Una vez configurado el elemento, pulsaremos el botón “OK” obteniéndose el elemento como se muestra en la figura 2. 5.6 Hacer visible o no un objeto dependiendo del valor de una variable tipo bool · Seleccionamos el objeto con el botón derecho del ratón y elegimos el comando “Properties”. A continuación seleccionamos la propiedad “Miscellaneous” y elegimos con el botón derecho del ratón la columna “Dynamic” del atributo “Display”. A continuación seleccionamos el comando “Dynamic Dialog” para configurar el elemento. · Aparecerá una ventana como la mostrada a continuación donde configuraremos el elemento. PULSAMOS EL BOTÓN PARA ELEGIR LA VARIABLE ELEGIMOS EL TIPO DE DATO CON EL BOTÓN DERECHO DEL RATÓN ELEGIMOS EL RANGO DE FUNCIONAMIENTO 39 Manual de referencia rápida: SCADA WINCC 10 para configurar el trigger. Aparecerá · A continuación pulsaremos el botón una ventana como la mostrada a continuación donde lo configuraremos. El ciclo de disparo será elegido seleccionando la columna “Standard cycle” con el botón derecho del ratón. Una vez configurado pulsaremos el botón “Aceptar”, de esta manera volveremos a la ventana anterior y pulsaremos el botón “Apply”. 5.7 Cambios de color de un objeto. En esta animación veremos como un objeto cambia de color dependiendo del valor de una variable tipo bool. · Seleccionamos el objeto con el botón derecho del ratón y elegimos el comando “Properties”. A continuación seleccionamos la propiedad “Colors” y elegimos con el botón derecho del ratón la columna “Dynamic” del atributo “Background Color”. A continuación elegiremos el comando “Dynamic Dialog” de manera que aparecerá una ventana donde configuraremos el elemento. 40 Manual de referencia rápida: SCADA WINCC 11 De la misma manera que en la animación anterior seleccionaremos la variable, el tipo de dato y el rango de funcionamiento. Para ello elegiremos la columna “Valid range” con el botón derecho del ratón y seleccionaremos el rango. De la misma manera elegiremos la columna “Background Color” y elegiremos los colores deseados. · Para terminar configuraremos el trigger tal y como se describió en la animación anterior y por último pulsaremos el botón “Apply” para validar la configuración. 5.8 Cambios de tamaño de un objeto. En esta animación se mostrará como podremos cambiar la altura y la anchura de un objeto. Veremos el caso de la variación de altura ya que la variación de anchura se hará de forma idéntica. · Seleccionamos el objeto con el botón derecho del ratón, elegimos el comando “Properties” y seleccionamos la propiedad “Geometry”. · A continuación seleccionamos con el botón derecho del ratón la columna “Dynamic” del atributo “Height”, apareciendo una ventana como en los casos anteriores donde realizaremos la configuración. En este caso cuando seleccionemos el tipo de dato elegiremos “Direct” de manera que el atributo seleccionado tomará el valor de la variable asociada la cual irá modificando su valor dentro de una “Acción” programada por nosotros. En apartados posteriores veremos como se programan estas “Acciones” en el editor “Global Script”. · Por ultimo configuraremos el trigger de la misma forma que en los casos anteriores y pulsaremos el botón “Apply” para guardar la configuración. Manual de referencia rápida: SCADA WINCC 12 5.9 Movimientos de objetos. En este apartado dotaremos a un objeto de movimiento según la dirección X, sabiendo que de la misma manera podremos dotarlo de movimiento según Y. · Seleccionamos al objeto con el botón derecho del ratón, elegimos el comando “Properties” y seleccionamos la propiedad “Geometry”. · A continuación seleccionamos la columna “Dynamic” del atributo “Position X” y elegimos el comando “Dynamic Dialog”, de manera que aparecerá una ventana donde configuraremos el objeto. En esta ventana elegiremos la variable asociada al atributo y el tipo de dato que al igual que en el caso anterior elegiremos un tipo de dato “Direct” de manera que dicho atributo variará conforme lo vaya haciendo el valor de la variable dentro de la “Acción” que nosotros hayamos programado en el editor “Global Script”. (Apartados posteriores) VARIABLE ASOCIADA AL ATRIBUTO · Por último configuraremos el trigger como se describió en el punto 5.7 y pulsaremos el botón “Apply” para validar la configuración. 5.10 Evolución del nivel de un depósito. · Seleccionamos el depósito de la librería disponible en el editor gráfico. Para ello pulsamos el botón de la barra de herramientas y expandimos la carpeta “SMART Object” donde seleccionamos la carpeta “Tank”, eligiendo el depósito deseado, siendo arrastrado con el ratón hasta la posición deseada. · A continuación seleccionamos el depósito con el botón derecho del ratón, elegimos el comando “Properties” y seleccionamos la propiedad “Tag Assigment”. · Luego seleccionamos la columna “Dynamic” del atributo “Fill level” con el botón derecho del ratón, elegimos “Dynamic Dialog” y aparecerá una ventana, como en los casos anteriores, donde configuraremos el objeto. Al igual que en el caso anterior elegiremos el tipo de dato “Direct” de manera que la variable 42 Manual de referencia rápida: SCADA WINCC 13 asociada al nivel del depósito evolucionará dentro de una “Acción” programada en el editor “Global Script”. La ventana de configuración queda: 1 A continuación pulsaremos el botón 1 para configurar el trigger. Por último pulsaremos el botón “Apply” para validar la configuración. Nota: Es posible realizar animaciones de objetos los cuales están constituidos por agrupación de varios objetos. Para agrupar varios objetos haremos lo siguiente: · Con el botón izquierdo del ratón pulsado encerramos los objetos en un recinto y a continuación pulsamos el botón derecho del ratón. · A continuación seleccionamos el comando “Group”. Manual de referencia rápida: SCADA WINCC 14 6. Programación de una “Acción”. Una “Acción” es una función en C que únicamente podremos utilizar en el proyecto donde ha sido creada y será ejecutada según un trigger que hayamos programado. Para programar una “Acción” haremos lo siguiente: · Con el botón derecho del ratón seleccionamos el editor “Global Script” y lo abrimos. · A continuación expandimos “Actions” y seleccionamos con el botón derecho del ratón “Actions- New- Action”. En la parte derecha se abrirá una ventana donde programaremos nuestra “Acción”. En la “Acción” que creemos podremos utilizar funciones ya creadas, “Standard function” e “Internal function”, e incluso podremos programar nuestras propias funciones seleccionando “Project function”. Las funciones más utilizadas son las funciones internas “Get” y “Set”. Con la función “Get” le asignaremos a una variable de la “Acción” el valor de una variable del SCADA y con la función “Set” le asignaremos a una variable del SCADA el valor de una variable de la “Acción”. Para introducirla en la “Acción” bastará con hacer doble clic sobre ellas en la ventana izquierda y a continuación asignarle los parámetros adecuados. 44 Manual de referencia rápida: SCADA WINCC 15 ·A continuación pasaremos a compilar la “Acción” creada pulsando el botón que aparece en la barra de herramientas. · Ahora configuraremos el trigger de la “Acción”. Para ello pulsaremos el botón que aparece en la barra de herramientas y seleccionamos el tabulador trigger. A continuación seleccionamos “Cyclic” y pulsamos el botón “Add”, de manera que aparecerá una ventana en la que seleccionaremos el trigger y una vez configurado pulsaremos el botón “Aceptar” Ventana 1 · Una vez configurado el trigger, volveremos a la ventana 1 donde pulsaremos el botón “Aceptar” para validar la configuración. · Por último seleccionamos “Save” en el menú “File” y a continuación saldremos del editor “Global Script”. Manual de referencia rápida: SCADA WINCC 16 7. Creación de gráficas y tablas. En este apartado nos encargaremos de adquirir datos del proceso y representarlos en tablas y gráficas. Lo primero que haremos es abrir el editor “Tag Logging” : 7.1 Creación de un archivo de datos. Para la creación de este archivo haremos uso del asistente “Archive Wizard”: 1. Seleccionamos “Archives” con el botón derecho del ratón y elegimos “Archive Wizard”: 1ª pantalla: Pulsamos “Next”. 2ª pantalla: Introducimos el nombre del archivo de datos, p.e “NIVEL_DEP”, y el tipo de archivo, p.e “Process Value Archive”, y pulsamos “Next”. 3ª pantalla: Pulsamos “Select” y elegimos la variable del proceso que vamos a representar y pulsamos “Finish”. VARIABLE DEL PROCESO 2. A continuación seleccionamos la variable del proceso en la ventana inferior con el botón derecho del ratón y elegimos “Properties”. Aparecerá una ventana en la que introduciremos “NIVEL_ARCH” como nombre de la variable 46 Manual de referencia rápida: SCADA WINCC 17 archivada. Luego seleccionamos el tabulador “Parameter” e introduciremos las propiedades del ciclo: Acquisition: 500 ms. Archiving: 1*500 ms Pulsamos el botón “OK”. Con esto conseguimos que la variable del proceso “NIVEL” sea adquirida cada 500 ms y archivada como una variable llamada “NIVEL_ARCH”. VARIABLE ARCHIVADA 3. Por último desplegamos el menú “File” y seleccionamos “Save” para salvar la configuración. 7.2 Creación de una gráfica. Para la representación de la gráfica utilizaremos valores de la variable archivada. · Seleccionamos con el botón derecho del ratón “Trend window templates” y elegimos “New”, apareciendo una ventana como la mostrada: · Seleccionamos el botón “Template” e introducimos “EVOL_NIVEL” como el nombre de la plantilla y pulsamos “OK”. 47 Manual de referencia rápida: SCADA WINCC 18 · En el tabulador “General Information” introducimos “NIVEL_DEP” como el nombre de la tendencia (Name of the trend) que vamos a representar. · En el tabulador “Tag” haremos doble clic sobre el nombre del archivo “NIVEL_DEP” y seleccionaremos la variable archivada que vamos a representar. VARIABLE ARCHIVADA · En el tabulador “X Axis” introduciremos el nombre del eje X , “Tiempo”, y habilitaremos el casillero “Autorange” introduciendo 200 como el valor a escalar. · En el tabulador “Y Axis” introduciremos el nombre del eje Y, “Nivel”, habilitaremos el casillero “Coarse grid” con un valor de 20, deshabilitaremos el casillero “Autorange” e introduciremos “0” como valor inicial y “100” como valor final y por último seleccionaremos “Connect dots linearly” en el casillero “Trend Display”. 48 Manual de referencia rápida: SCADA WINCC · Por 19 último pulsaremos el botón “OK” para salvar la configuración. 7.3 Insertar una gráfica en una imagen. · En primer lugar abrimos el editor gráfico y a continuación la imagen donde queremos insertar la gráfica. · Seleccionamos el objeto “Application Window” del grupo “Smart Object” que se encuentra en la ventana “Object Palette”. · Una vez seleccionado movemos el cursor hasta la posición deseada de la imagen y pulsamos el botón izquierdo del ratón apareciendo una ventana llamada “Windows Contents” de la cual seleccionamos “Tag Logging”, pulsando a continuación “OK”. · Aparecerá una ventana llamada “Template” de la que seleccionaremos la plantilla “EVOL_NIVEL” que vamos a representar, y pulsaremos “OK”. · Por último le daremos a la ventana, la cual aparece con el nombre que le hemos dado a la plantilla, el tamaño deseado y salvaremos la configuración. 7.4 Creación de una tabla de valores. En este apartado crearemos una tabla de valores de una variable del proceso. · Seleccionamos con el botón derecho del ratón “Table window templates” en el editor “Tag Logging” y elegimos “New”, apareciendo una ventana como la mostrada: 49 Manual de referencia rápida: SCADA WINCC 20 · Seleccionamos el botón “Template” e introducimos “VALOR_NIVEL” como el nombre de la plantilla, pulsando a continuación “OK”. · En el tabulador “General Information” introduciremos “NIVEL” como el encabezado de la tabla. · En el tabulador “Tag” haremos doble clic sobre el nombre del archivo, “NIVEL_DEP” y seleccionaremos la variable “NIVEL_ARCH”. A continuación pulsaremos el botón “OK”. · Por último desplegamos el menú “File” y seleccionamos “Save” para salvar la configuración. 7.5 Insertar una tabla en una imagen. · En primer lugar abrimos el editor gráfico y a continuación la imagen donde queremos insertar la tabla. · Seleccionamos el objeto “Application Window” del grupo “Smart Object” que se encuentra en la ventana “Object Palette”. · Una vez seleccionado movemos el cursor hasta la posición deseada de la imagen y pulsamos el botón izquierdo del ratón apareciendo una ventana llamada “Windows Contents” de la cual seleccionamos “Tag Logging”, pulsando a continuación “OK”. · Aparecerá una ventana llamada “Template” de la que seleccionaremos la plantilla “VALOR_NIVEL” que vamos a representar, y pulsaremos “OK”. · Por último le daremos a la ventana, la cual aparece con el nombre que le hemos dado a la plantilla, el tamaño deseado y salvaremos la configuración. 8. Configuración de mensajes. En este apartado se pretende mostrar como se configuran mensajes y los textos asociados a los mismos. · En primer lugar abrimos el editor de mensajes llamado “Alarm Logging” apareciendo una pantalla como la mostrada: 50 Manual de referencia rápida: SCADA WINCC 21 ·A continuación arrancaremos el asistente de mensajes desplegando el menú “File” y seleccionando el comando “Start Message Wizard”: 1ª pantalla: Pulsamos “Next”. 2ª pantalla: Seleccionamos Date, Time, Number en bloques del sistema y Msg, Error Location en los bloques de texto de usuario y pulsamos “Next”. 3ª pantalla: Pulsamos “Next” dejando el casillero preseleccionado. 4ª pantalla: Seleccionamos “Without Bars” y pulsamos “Next”. 5ª pantalla: Pulsamos “Next” dejando el casillero preseleccionado. 6ª pantalla: Seleccionamos “Short- Term Archive for 250 Message” y pulsamos “Next”. 7ª pantalla: Pulsamos “Next”. 8ª pantalla: Pulsamos “Finish”. · Si queremos añadir otros bloques a nuestro mensaje que no han sido añadidos por el asistente, haremos lo siguiente: 1. Seleccionamos la linea “Message line format” en la ventana izquierda del editor. 2. Con el botón derecho del ratón seleccionamos “Message Line Example” que aparece en la ventana derecha del editor y seleccionamos “Properties”. 3. Aparece una ventana en la cual podremos añadir los bloques “Message Text” y “Point of Error” a nuestra línea de mensaje. Una vez hecho esto, pulsaremos el botón “OK”. · Si queremos modificar el número de caracteres asociados al bloque “Message text”, haremos lo siguiente: 1. Expandimos la línea “Message Blocks” y seleccionamos la línea “User Text Block”. A continuación seleccionamos con el botón derecho del ratón “Message text” en la ventana derecha del editor. Manual de referencia rápida: SCADA WINCC 22 2. Seleccionamos el comando “Properties” de manera que aparecerá una ventana donde podremos introducir 30 como el número de caracteres asociados al bloque y pulsaremos “OK”. Decir que de la misma manera podremos cambiar el número de caracteres asociados al bloque “Point of Error”. · Si queremos modificar la ventana de mensajes haremos lo siguiente: 1. Seleccionamos la línea “Message window templates” y a continuación con el botón derecho del ratón seleccionamos “Message Window Example” en la ventana derecha del editor. 2. Seleccionamos el comando “Properties” de manera que se abrirá una ventana con varios tabuladores: - General Information: Introduciremos el nombre de la ventana, el título de la ventana y elegiremos “Short- Term Archive Window” como tipo de ventana. - Parameters: Habilitaremos los casilleros “Line Title” y “Column Title”. - Status Bar: Habilitaremos los casilleros “Mostrar barra de estado”, “Fecha”, “Hora” y elegiremos “Bottom” como alineación. - Toolbar: Habilitaremos todas las funciones de teclado excepto “City Call”, habilitaremos “Mostrar barra de herramientas” y elegiremos “Top” como alineación. 3. Por último pulsaremos el botón “OK”. · Para configurar el texto de un mensaje haremos lo siguiente: 1. Seleccionamos con el botón derecho del ratón la columna “Number” de la ventana inferior y elegimos “Append a New Line”. De esta manera añadiremos una nueva fila y así tantas filas como mensajes tengamos. 52 Manual de referencia rápida: SCADA WINCC 23 2. En la fila 1 configuraremos el primer mensaje. Haciendo doble clic sobre la la columna “Event tag” seleccionaremos la variable que me va a provocar el mensaje. Si dicha variable es una variable de 16 bits y el bit tercero es el bit que cuando pase de 0 a 1 me va a producir el mensaje, en la columna “Event bit” colocaremos un 2.(16..................2 1 0). Si dicha variable es de tipo bit, en la columna “Event bit” no se pondría nada. 3. A continuación introduciremos en la columna “Messsage text” el mensaje que queremos que aparezca, por ejemplo “Depósito vacío”. De igual manera podremos introducir mensajes en la columna “Point of Error”. ·A continuación dotaremos a nuestros mensajes de un color dependiendo si es un mensaje vigente, de otro color si el mensaje ha dejado de estar vigente y de otro color si es un mensaje reconocido. Para ello haremos lo siguiente: 1. Expandimos “Message Classes” y seleccionamos la línea “Error”. 2. A continuación seleccionamos con el botón derecho del ratón el icono “Alarm” que aparece en la ventana derecha y elegimos “Properties”. 3. Aparecerá una ventana en la que configuraremos el color del texto y el color de fondo sin más que seleccionando el carácter del mensaje y pulsando los botones “Text Color” y “Background Color” para elegir los colores. Por último pulsaremos el botón “OK” para validar la configuración. 53 Manual de referencia rápida: SCADA WINCC 24 · Una vez hecho todo esto, desplegaremos el menú “File” y seleccionaremos “Save” para salvar la configuración. 8.1 Insertar una ventana de mensajes en una imagen. · En primer lugar abrimos el editor gráfico y a continuación la imagen donde queremos insertar la ventana de mensajes. · Seleccionamos el objeto “Application Window” del grupo “Smart Object” que se encuentra en la ventana “Object Palette”. · Una vez seleccionado movemos el cursor hasta la posición deseada de la imagen y pulsamos el botón izquierdo del ratón apareciendo una ventana llamada “Windows Contents” de la cual seleccionamos “Alarm Logging”, pulsando a continuación “OK”. · Aparecerá una ventana llamada “Template” de la que seleccionaremos la plantilla “NIVEL_DEPOSITO” que vamos a representar, y pulsaremos “OK”. · Por último le daremos a la ventana, la cual aparece con el nombre que le hemos dado a la plantilla, el tamaño deseado y salvaremos la configuración. 9. Arranque de una aplicación. Para arrancar la aplicación y ver como va evolucionando el proceso tenemos dos posibilidades: 1. Actuar desde el “Control Center” activando o desactivando los iconos situados en la barra de herramientas. 2. Actuar desde el “Graphic Designer” activando el icono localizado en la barra de herramientas. 10. Uso del simulador del SCADA. WINCC está provisto de un simulador llamado WinCC Simulator con el cual podremos comprobar si nuestra aplicación funciona correctamente sin necesidad de tener un autómata físico que nos genere señales externas. En este caso no trabajaremos con variables externas sino con variables internas a las cuales les asociaremos una determinada evolución de manera que simule un comportamiento real. Veamos los pasos que tenemos que seguir para realizar una simulación: 1. abrimos como figura: En primer lugar el simulador se muestra en la Manual de referencia rápida: SCADA WINCC 25 Hay que decir que la imagen que vamos animar debe estar activada antes de configurar el simulador. 2. Una vez abierto el simulador pasaremos a definir las variables que queremos simular. Para ello seleccionamos “Edit” de la barra de menú y elegimos “New Tag”. 3. En el tabulador “Properties” introducimos el nombre de la tag deseada y a continuación elegimos la forma de evolución de la variable. Vemos que podemos elegir entre distintos tipos de evolución las cuales tendremos que parametrizar: - Senoidal: En este tipo de evolución especificaremos los parámetros de una función senoidal como son la amplitud, donde se especificará el rango de valores, el periodo de la función y el offset. - Evolución oscilatoria: Introduciremos el parámetro “Setpoint” donde indicaremos el valor que tomará después del fenómeno transitorio, el parámetro “Overshoot” donde indicaremos cuanto se pueden alejar los valores del setpoint, el periodo de oscilación y el parámetro “Damping”. - Evolución aleatoria: Aquí especificaremos el rango de valores que nuestra variable. - Evolución lineal creciente: Especificaremos el valor de comienzo y el valor final. - Evolución lineal decreciente: De la misma manera especificaremos los valores de comienzo y final. - Evolución con un slider: Especificaremos el valor de comienzo y final. Elegiremos una evolución lineal decreciente para la variable NIVEL_DEP1 y una evolución lineal creciente para la variable NIVEL_DEP2. 4. A continuación habilitaremos el casillero “active”. (Fig.1) 55 Manual de referencia rápida: SCADA WINCC 26 5. Una vez hecho todo esto, nos iremos al tabulador “List of Tags” y veremos como las variables que hemos seleccionado para la simulación van variando sus valores. (Fig.2) Fig.1 Fig.2 56 Práctica 8 Laboratorio de Control de Procesos por Computador Simulación del control adaptativo Se desea realizar un programa en MATLAB que simule la identificación de un sistema y modificarlo para simular el comportamiento de un controlador auto-ajustable. Para ello: 1. Se simulará el comportamiento de un sistema con función de transferencia G(z) = 0.2 . La entrada será del tipo PRBS de amplitud 1 (una señal que toma solamente z−0.8 los valores 1 ó -1, conmutando entre ellos con una probabilidad dada, por ejemplo 0.2). Esta entrada se puede programar en MATLAB inicializando u=1 y dando la orden: if rand<0.2 u=-u;end;. 2. Programar un identificador por mı́nimos cuadrados recursivo con factor de olvido para este sistema. Comparar la evolución de los parámetros estimados con los reales. 3. Repetir la identificación añadiendo un ruido al sistema con distribución uniforme entre -0.025 y 0.025 (rand*0.05-0.025). Este ruido es una primera aproximación a los problemas que aparecen en un caso real. Se debe observar un empeoramiento en la convergencia del identificador. 4. Repetir la identificación haciendo que los parámetros a1 y b1 varı́en de forma lineal desde [−0.8 0.2] en k = 50 hasta [−0.5 0.1] en k = 75. Realizar las simulaciones con varios valores del factor de olvido (0.95 ≤ γ ≤ 1). sin ruido y con ruido. 5. Simular un controlador autoajustable. Se elegirá un PI que cancele el polo del sistema y multiplique por 0.8 la constante de tiempo del sistema en bucle abierto. Introducir una referencia que cambie entre -1 y 1 cada 50 periodos de muestreo (if (rem(k,50)==0) r=-r;). Comparar los resultados con los de un controlador PI fijo sintonizado para el sistema inicial. Sugerencia para trabajo con carácter voluntario: 6. En lugar del sistema anterior simular uno de orden 2 e identificarlo con un modelo de orden 1 (es decir, el identificador serı́a igual al del punto 2). Se podrán observar los problemas del control adaptativo cuando no se estima correctamente el orden del sistema. Nota: Ecuaciones del identificador recursivo por mı́nimos cuadrados para el sistema y(k) = m(k)θ θ(k + 1) = θ(k) + K(k)(y(k + 1) − m(k + 1)θ(k)) P (k)mT (k + 1) K(k) = γ + m(k + 1)P (k)mT (k + 1) 1 P (k + 1) = (I − K(k)m(k + 1))P (k) γ 57 Práctica 9 LABORATORIO DE CONTROL POR COMPUTADOR LABVIEW-Bibliotecas de funciones de enlace dinámico(DLL) © Manuel López Martínez 1. Objetivos Esta práctica tiene como objetivo aprender a crear DLL’s, y a hacer uso de ellas en LabView. Las DLL’s son bibliotecas de funciones de enlace dinámico. 2. Creación de una DLL La DLL es una biblioteca de funciones de enlace dinámico. Crearemos una dll usando lenguaje C. Serán necesarios los siguientes archivos: cpcdll.def: En él se definen las funciones que va a exportar la dll para que puedan ser usadas por los programas que la carguen. cpcdll.h: En él se incluirán los prototipos de las funciones que componen la biblioteca. En el prototipo de las funciones incluiremos la palabra WINAPI para indicar al compilador el método de llamada a las funciones llevado a cabo. cpcdll.cpp: Se definen las funciones que han sido declaradas en cpcdll.h. 3. Ejemplo de DLL A continuación se van a mostrar los tres ficheros correspondientes a una dll que contiene las funciones suma y resta de dos parámetros. Tanto para la suma como para la resta se han creado dos funciones. En una el paso de parámetros es por valor, y en la otra el paso de parámetros es por referencia, por lo que se hará uso de punteros. A continuación se muestra el contenido del archivo cpcdll.def ;-------------------------------------; ; Nombre del Fichero:cpcdll.DEF ; ;-------------------------------------LIBRARY CPCDLL DESCRIPTION ’Ejemplo de Creacion de una DLL’ EXPORTS Sumar Restar Sumar_Ref Restar_Ref @1 @2 @3 @4 59 A continuación se muestra el contenido del archivo cpcdll.h /* Nombre del fichero:cpcdll.h*/ /* Funciones prototipo */ #ifdef __cplusplus /* si los ficheros fuente son .cpp*/ extern "C" { #endif double WINAPI Sumar(double Param1, double Param2); double WINAPI Restar(double Param1, double Param2); void WINAPI Sumar_Ref(double *Param1,double *Param2, double *Suma); void WINAPI Restar_Ref(double *Param1,double *Param2, double *Resta); #ifdef __cplusplus /*si el compilador es C++ */ } #endif Y por último el archivo cpcdll.cpp //-------------------------------------------------------------// Nombre del fichero: CPCDLL.CPP // //-------------------------------------------------------------#include <windows.h> #include "cpcdll.h" /* Funcion DllMain es llamada por Windows no por el usuario*/ BOOL WINAPI DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved) { switch(dwReason) { case DLL_PROCESS_ATTACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; case DLL_PROCESS_DETACH: break; } return TRUE; //DLL_PROCESS_ATTACH satisfactorio } /*Funcion Sumar con paso de parametros por Valor*/ double WINAPI Sumar(double Param1,double Param2) { return(Param1+Param2); } /*Funcion Restar con paso de parametros por Valor */ double WINAPI Restar(double Param1,double Param2) { return(Param1-Param2); } /*Funcion Sumar con paso de parametros por Referencia*/ void WINAPI Sumar_Ref(double *Param1,double *Param2, double *Suma) { *Suma=(*Param1)+(*Param2); } /*Funcion Restar con paso de parametros por Referencia*/ 60 void WINAPI Restar_Ref(double *Param1,double *Param2, double*Resta) { *Resta=(*Param1)-(*Param2); } 4. Uso de la DLL en LabVIEW En el siguiente modelo de labVIEW hemos incluido 2 controles y 2 indicadores numéricos. Si se observa el diagrama de conexiones, se verá que se conectan a un bloque que es el que realiza la llamada a las dll’s. Figura 1: Interfaz y Diagrama Si pulsamos 2 veces sobre dicho bloque aparecerá un menú para configurar qué dll se va a cargar, ası́ como qué función se va exportar y cuál es su prototipo (ver figuras 2 y 3). Para ello habrá que declarar los tipos de los distintos parámetros de entrada y de salida de la función, ası́ como si el paso de los mismos se hace por valor o por referencia. 5. Desarrollo de la práctica Se pide: 1. Añadir a la biblioteca de funciones proporcionada una función que contenga un controlador PI, al cual se le han de pasar los valores Kp, Ki, el valor del error y ha de devolver la señal de control. 2. Sustituir el PID del archivo practica.vi por el bloque de llamada a la dll. Configurar dicho bloque para llame a la función PI y se comporte como el bloque de control. 3. Añadir a la biblioteca de funciones una función que estime los parámetros del motor haciendo uso del algoritmo de mı́nimos cuadrados recursivo. Para simplificar el pro61 Figura 2: Menú de configuración. Paso de parámetros por valor Figura 3: Paso de parámetros por referencia 62 ceso de identificación, obtendremos el valor del retardo d de forma experimental, y lo introduciremos en el modelo de primer orden a identificar. y(k) = −a1 ·y(k − 1) + b1 ·u(k − d − 1) (1) Nota: Ecuaciones del identificador recursivo por mı́nimos cuadrados para el sistema y(k) = m(k)θ θ(k + 1) = θ(k) + K(k)(y(k + 1) − m(k + 1)θ(k)) P (k)mT (k + 1) K(k) = γ + m(k + 1)P (k)mT (k + 1) 1 P (k + 1) = P (k)(I − K(k)m(k + 1)) γ 63 Enunciados de Exámenes EXAMEN DEL LABORATORIO DE CONTROL DE PROCESOS POR COMPUTADOR 21 de junio de 2001 1. Explicar el procedimiento que se empleó para verificar el funcionamiento de las funciones en C de manejo de la tarjeta A/D-D/A realizadas en la práctica 1. 2. Explicar el experimento que se realizó para poner de manifiesto el efecto del wind-up en el PID. 3. Comentar los efectos del parámetro R observados en la práctica de LQR. 4. Dibujar un esquema en Labview que calcule la ley predictiva u (k ) = K u * u (k − 1) + K r * r (k ) + K y1 * yp(k ) + K y 2 * yp(k − 1) 5. ¿Qué valores iniciales para la matriz de covarianzas P y para el vector de parámetros θ se utilizaron en la práctica de simulación del control adaptativo? 6. Explicar para qué se utiliza la función waitfor( ) en el programa de control PID implementado con el microcontrolador PK2100 de Z-World. 67 Examen del Laboratorio de Control por Computador 4◦ Curso Ingenieros Telecomunicación. Plan 98 (6 de junio de 2002) Tiempo: 45 minutos. 1. Explique brevemente cómo se implementa en Labview la señal yk−1 a partir de la señal yk . 2. La biblioteca de funciones 8316.dll es usada en LabView para poder trabajar con la tarjeta de adquisición de datos usada en las prácticas. Explique de forma general para qué sirven las funciones que se utilizaron en la primera práctica. 3. Explique brevemente un experimento con el motor de continua de las prácticas en el que se pueda observar el efecto integral wind-up. 4. Dibuje un diagrama de bloques genérico que represente un control PI autoajustable, que controle en bucle cerrado la velocidad de un motor de continua. 5. ¿Qué es una DLL? Explique brevemente el método visto en clase para crear una DLL, extensiones de los archivos usados y utilidad de cada uno de los archivos. 6. Explique qué procedimiento (funciones de Matlab y/o bloques de Simulink) empleó para realizar las simulaciones del control LQR discreto del sistema P (s) 1 K2 = τK . U (s) s+1 s 7. Dibuje el diagrama de bloques en bucle cerrado del sistema controlado con el microcontrolador PK2100 (apartado final del enunciado de la práctica), indicando además los niveles de tensión que adaptan las tarjetas adicionales que se utilizaron en la práctica. 69 Examen del Laboratorio de Control por Computador 4º Curso Ingenieros Telecomunicación 4 de junio de 2003 Tiempo: 1 hora 1. ¿Cómo se puede acceder desde Labview a la tarjeta de conversión A/D-D/A? 2. Indique brevemente cómo se calcularon analíticamente los parámetros del PI de la práctica de control del motor. 3. En la práctica en la que se analizó el problema del wind-up, ¿cuál fue la solución que programó su grupo? 4. Explique cómo se simulaba el sistema en la práctica de simulación de control adaptativo. 5. Comente brevemente cómo se programa en el WinCC un elemento que cambie de color en función del valor de una variable lógica. Responda a las siguientes cuestiones rodeando con un círculo la respuesta correcta (sólo una por cuestión): 6. En la práctica del microprocesador PK2100 a. b. c. d. las tarjetas de adaptación de salida del micro proporcionan un rango de 0 a 10 v. los programas sólo pueden residir en RAM con soporte de batería. la función VdInit es fundamental al inicio de un programa para activar los jumpers. Se pueden emplear 3 entradas digitales como contadores. 7. En la programación multitarea por prioridad en Dynamic C a. b. c. d. la prioridad de cada tarea la establece cada “costatement”. una tarea finaliza cuando se produce un evento determinado. se utiliza un “timer” para establecer el tiempo de actividad de una tarea. una tarea cede la prioridad a otra hasta que se produce un evento determinado. 8. En la práctica de LQR observamos que a. b. c. d. si se utiliza el modelo continuo hay que incluir un mantenedor en el gráfico de simulink. al aumentar R el comportamiento en bucle cerrado es más brusco. la matriz C de un modelo del sistema es siempre la matriz unidad. los parámetros calculados mediante simulink en tiempo continuo son los que hay que emplear en el control con LabView. 9. En la práctica de GPC a. b. c. d. el parámetro ganancia del modelo influye en el error en régimen permanente. el rango de variación del parámetro de control N propuesto no influye al resultado. el rango de variación del parámetro de control λ propuesto no influye al resultado. la ley de control propuesta no depende del orden del sistema a controlar. 10. Las DLL a. son bibliotecas de funciones de paso por referencia de parámetros. b. pueden contener funciones para identificar los parámetros de la planta en línea. c. siempre llevan la palabra WINAPI en la declaración y definición de funciones para indicar el método de llamada de éstas. d. se componen de 4 archivos escritos en C. 71 Examen del Laboratorio de Control por Computador 4◦ Curso Ingenieros Telecomunicación 12 de junio de 2004 Tiempo: 45 minutos. 1. Indique (no es necesario dar valores númericos) la estructura de la función de transferencia que se utiliza para modelar el motor de corriente continua. 2. Indique cómo se identifica la constante que relaciona la velocidad con la posición en el motor de corriente continua. 3. Describa un experimento con el motor de las prácticas que ponga de manifiesto el efecto del wind-up y a continuación explique brevemente un método por el que se pueda resolver dicho problema. 4. El control GPC está gobernado por dos parámetros básicos, el horizonte de control N y la penalización del esfuerzo de control λ. Describa cualitativamente cómo afecta al comportamiento del sistema en bucle cerrado (caracterı́sticas de la señal de control y respuesta del sistema) el valor de λ. 5. Trabajando con el SCADA WinCC, explique cómo implementarı́a: (a) Una barra de desplazamiento que modificase el valor de un número mostrado en un indicador de dı́gitos. (b) Un botón que haga visible/invisible alternativamente, cada vez que se pulse, la barra de desplazamiento además del indicador de dı́gitos. (c) Un botón para incrementar en una unidad el valor del número mostrado en el indicador de dı́gitos. 6. Indique brevemente la estructura del programa utilizado para la simulación de un controlador PI autoajustable para un sistema simulado de primer orden. 73