Libro de Prácticas y Exámenes 2001-05

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