trabajo2015.pdf

Anuncio
UNIVERSIDAD DE OVIEDO
Departamento de Ingeniería Eléctrica,
Electrónica, de Computadores y Sistemas
Informática Industrial y Comunicaciones
TRABAJO CURSO 2015/2016
1. Introducción
Realizar un programa para el control de posición y velocidad de un motor DC.
El programa será realizado en modo consola, utilizando Microsoft Visual Studio 2008 bajo Sistema
Operativo Windows XP/Windows 7. Se utilizará como sistema a controlar el simulador de sistema
mecatrónico disponible en la página web de la asignatura (última versión descargable desde
http://isa.uniovi.es/~ialvarez/Curso/infindycom/practicas/SimuladorMotorConESDigital.rar ).
2. Especificaciones
El trabajo consistirá en desarrollar el software necesario para controlar en lazo cerrado la posición
de un motor de corriente continua, según el esquema indicado en la figura.
El funcionamiento es el siguiente:

Mediante los interruptores de entrada digital, el usuario podrá establecer en cualquier
momento las siguientes condiciones de funcionamiento:
Bit peso
0
Selección
Arrancar y parar el control del motor
Estado 1
Arrancar
1
Gestión del problema de paso por 180°
Gestionar
2
Realizar el desplazamiento por el camino más Gestionar
corto
Selección del modo de control
Todo/nada
3

Estado 0
Parar
(uk=0)
No
gestionar
No
gestionar
R(z)
Mediante salidas digitales hacia indicadores luminosos se indicará:
o Bit de peso 6: motor girando a derecha.
o Bit de peso 7: motor girando a izquierda.
o Bit de peso 5 (parpadeo cada 1 seg): diferencia entre referencia y posición actual
mayor que un límite prefijado.
1
UNIVERSIDAD DE OVIEDO
Departamento de Ingeniería Eléctrica,
Electrónica, de Computadores y Sistemas



Mediante teclado, el usuario podrá introducir en cualquier momento los siguientes
comandos, que deben producir el efecto indicado:
o POS=valor_en_grados
 cambia la posición objetivo a la deseada.
o POS=POT
 la posición objetivo es fijada por
potenciómetro.
o TENSION=valor_en_volt
 tensión a utilizar en el control todo/nada
(sólo se usa si modo de control = todo/nada).
o RZ=[b0 b1 … bm] / [a0 a1 … an]  cambia el regulador del lazo de control (sólo
se usa si modo de control = R(z) ).
o LIM DIF=valor_en_grados
 cambia el valor límite para la activación del bit
de peso 5.
Los nombres de comando se introducirán siempre en mayúscula.
El programa debe admitir que el usuario introduzca uno o varios espacios en blanco entre
las palabras.
Periódicamente (Tm=200 ms) se ejecutará un paso de un lazo de control, con los siguientes
pasos:
o Detección del modo de funcionamiento deseado según el estado de las entradas
digitales.
o Obtención de la referencia (de comando de usuario o de potenciómetro en el
simulador).
o Lectura de la posición actual del motor en grados.
o Desplazamiento de tablas temporales: ek y uk.
o Cálculo del error actual e introducción en tabla ek.
o Cálculo de salida actual uk (en voltios) a través de un algoritmo todo/nada o la
implementación de la ecuación en diferencias correspondiente a:
b0  b1 .z 1  ...  bm .z  m
R( z ) 
1  a1 .z 1  ...  a n .z n
(valores por defecto indicados en anexo ).
o Cálculo y generación de señal PWM para cambiar la entrada del motor a partir del
valor uk actual.
o Escritura en display LCD de los valores de consigna (1ª línea) y posición actual (2ª
línea).
o Activación de los indicadores luminosos correspondientes.
Los valores iniciales de los diferentes parámetros (modo posición, tensión para control todo
nada, R(z), valor límite activación bit 5), se leerán al principio del programa de un archivo
de texto de nombre “init.txt”, que contendrá líneas con el mismo formato que las
introducidas desde teclado.
3. Requerimientos de programación





Dar nombres adecuados a variables, constantes y funciones, que reflejen claramente su
cometido en el programa.
Realizar funciones para las partes del programa que puedan ser reutilizables.
Utilizar interrupciones para la temporización de control.
Incluir en la cabecera de cada función comentario que informe sobre su tarea, sus
parámetros, valor devuelto, y otras consideraciones (asignación dinámica de memoria que
debe liberar el llamador, modificación de variables apuntadas por puntero, uso de variables
globales).
Utilizar #define para las constantes no triviales que sean necesarias.
2
UNIVERSIDAD DE OVIEDO
Departamento de Ingeniería Eléctrica,
Electrónica, de Computadores y Sistemas


Realizar el programa en al menos 3 módulos de código fuente (con sus correspondientes
archivos de encabezado):
o principal.c (sólo main).
o rutinacontrol.c (función de servicio de la temporización del lazo de control, y
funciones necesarias únicamente para ella).
o funciones_auxiliares.c (resto de funciones a utilizar).
Utilizar asignación dinámica de memoria para las tablas cuyo tamaño no se conozca en
tiempo de compilación.
4. Calificación
La calificación del trabajo se realizará del modo siguiente:
Contenido del trabajo
El trabajo cumple las especificaciones del apartado 2 funcionando
correctamente y con una programación adecuada (uso de funciones,
asignación dinámica de memoria, etc.) según lo indicado en el apartado 3.
El trabajo cumple las especificaciones del apartado 2 pero tiene algunos
problemas leves de funcionamiento o de programación inadecuada.
Faltan algunos contenidos, o algunos problemas de funcionamiento o
programación inadecuada son más graves.
El trabajo no cumple las especificaciones del apartado 2, o tiene graves fallos
de funcionamiento o de concepto, o partes sustanciales han sido copiadas.
Las siguientes adiciones sumarán calificación hasta 10:
Contenido adicional


Calificación
6 ptos
5 ptos
4 ptos
(compensable)
0…3 ptos
(repetir)
Calificación
Añadir comandos de teclado:
+ 2 pto
MEDIR=POS/VEL
o Si se selecciona MEDIR=POS (valor por defecto), se utiliza el
potenciómetro para la medida de posición.
o Si se selecciona MEDIR=VEL, se lleva inicialmente el motor a la
posición 0°, y una vez allí, se pasa a medir la posición mediante la
integración de la señal de velocidad (utilizar integración
trapezoidal).
SLEEP=Tiempo_en_ms
o El programa deja de atender comandos durante el tiempo
indicado.
COMMENT=”texto”
o Se escribe el texto indicado en la 1ª línea del LCD, en lugar del
valor de consigna de posición.
EJECUTAR="archivo.txt"
o El programa debe leer líneas del archivo indicado, y ejecutar los
comandos indicados en ellas (POS=, RZ=, …). Se probará su
funcionamiento con el archivo de entrada del siguiente enlace:
http://isa.uniovi.es/~ialvarez/Curso/infindycom/practicas/cmd.txt
Utilizar la librería curses (descargar y ver documentación en + 2 pto
http://isa.uniovi.es/~ialvarez/Curso/infindycom/trabajos.shtml)
para
gestionar la entrada/salida por pantalla, dividiendo la misma en al menos
dos ventanas: una para gestión de comandos, otra para visualización de
estado:
o Modos de funcionamiento (potenciómetro/referencia fija, control
activo, paso de 180º, etc.)
o Valores de referencia y salida
3
UNIVERSIDAD DE OVIEDO
Departamento de Ingeniería Eléctrica,
Electrónica, de Computadores y Sistemas
Cuando se incluya alguna de las adiciones anteriores, se indicará en el programa activando
el bit del mismo peso de las salidas digitales.
4.1.
Control de copia
El trabajo es individual, y por tanto el contenido entregado debe ser original de cada alumno,
reflejando su desarrollo a lo largo de las prácticas de la asignatura.
Existen métodos para determinar con un alto grado de certeza si el trabajo es original o ha sido
copiado/modificado a partir del trabajo de un compañero.
5. Entrega
Comprimir los archivos de código fuente y encabezados (.c y .h) en un archivo (.zip ó .rar) con el
nombre y apellidos del alumno.
Enviar el archivo comprimido por e-mail a la dirección: [email protected] , con solicitud de
confirmación de recepción.
Fechas límite de entrega:
Las
indicadas
en
la
página
http://isa.uniovi.es/~ialvarez/Curso/infindycom/trabajos.shtml
de
la
asignatura
4
UNIVERSIDAD DE OVIEDO
Departamento de Ingeniería Eléctrica,
Electrónica, de Computadores y Sistemas
Anexo: reguladores
FUNCION DE TRANSFERENCIA DEL MOTOR, POSICION/TENSION:
( s)
K'
G(s) 

U ( s) s.1  τ.s 
Valor
K’
τ
Simulador
72 º/V.s
2.5 s
Valor
Tm
m
b0
b1
n
a1
Simulador
200 ms
1
0.13 V/º
-0.11 V/º
1
-0.42
REGULADOR EN MODO POSICION:
U(z) b 0  b1.z 1  ...  b m .z  m
R(z) 

E(z)
1  a 1 .z 1  ...  a n .z n
u k  b0 .e k  b1.e k 1  ...  bm .e k  m 
 (a1.u k 1  ...  a n .u k  n )
Resultados esperados ante escalón de
referencia 90º
FUNCION DE TRANSFERENCIA DEL MOTOR, VELOCIDAD/TENSION:
( s)
K
G(s) 

U ( s) 1  τ.s
Valor
K
τ
Simulador
12 rpm/V
2.5 s
Valor
Tm
m
b0
b1
b2
n
a1
a2
Simulador
200 ms
2
0.44 V/rpm
-0.79 V/rpm
0.36 V/rpm
2
-1.98
0.98
REGULADOR EN MODO VELOCIDAD:
U(z) b0  b1.z 1  ...  b m .z  m
R(z) 

E(z)
1  a1.z 1  ...  a n .z n
u k  b0 .e k  b1.e k 1  ...  bm .e k  m 
 (a1.u k 1  ...  a n .u k  n )
Resultados esperados ante escalón de
referencia 60 rpm
5
Descargar