Está en la página 1de 108

Sistemas de control de motores en Tiempo Real

mediante Matlab

Memoria Tcnica

TITULACIN: Enginyeria Automtica i Electrnica Industrial (1998)

AUTOR: Augusto Cilento


DIRECTOR: Enric Vidal
FECHA: Febrero 2007.

Tengo que agradecer mucho en el transcurso


de este largo trayecto, ya que he tenido otras
ocupaciones que me han absorbido por
completo adems del presente proyecto. Es
por ello que sera injusto no reconocer el
apoyo de aquellos que han estado conmigo,
codo con codo. Gracias a Alberto por todos
los conocimientos profesionales que has
compartido conmigo y
la amistad
demostrada. A mi tutor Enric por la
paciencia y la fe depositada en m. A mi
trainer y hermano Renato por su
disponibilidad y buenos consejos. A mi
madre Anna por su apoyo incondicional. Y a
todos aquellos que no aparecen, pero que me
han tenido que padecer, sinceramente
gracias.
La tarea de un hombre es sencilla. No debe
permitir que su existencia se convierta en un
accidente casual.
Nietzsche

ndice
1.
2.
3.

Introduccin................................................................................................................... 6
Objetivos........................................................................................................................ 6
Memoria descriptiva ...................................................................................................... 7
3.1.
Introduccin a MATLAB ...................................................................................... 7
3.2.
Entorno en tiempo real con MATLAB.................................................................. 7
3.2.1.
Real Time Windows Target ........................................................................... 7
3.2.2.
Real-Time Windows Kernel ........................................................................... 8
3.2.3.
Aplicacin Real-Time .................................................................................... 9
3.2.4.
Anlisis y adquisicin de seales .................................................................. 9
3.2.5.
Ajuste de parmetros ..................................................................................... 9
3.2.6.
Entorno del hardware.................................................................................. 10
3.2.6.1.
Compatibilidad del PC ........................................................................ 10
3.2.6.2.
Soporte del driver de entrada/salida ................................................... 10
3.2.7.
Entorno del software ................................................................................... 11
3.2.7.1.
Simulacin en tiempo no real .............................................................. 11
3.2.7.2.
Ejecucin en tiempo real ..................................................................... 11
3.2.8.
Simulink en modo externo............................................................................ 12
3.2.9.
Buffers y transferencia de datos .................................................................. 12
3.3.
Elementos fsicos de la aplicacin en Tiempo Real ............................................ 12
3.3.1.
PC ................................................................................................................ 13
3.3.1.1.
Placa de adquisicin de datos ............................................................. 14
3.3.1.1.1. Sensores y actuadores ......................................................................... 14
3.3.1.1.2. Hardware de adquisicin de datos...................................................... 14
3.3.1.1.3. Hardware de acondicionamiento de la seal ...................................... 15
3.3.1.1.4. La computadora................................................................................... 15
3.3.1.1.5. Software............................................................................................... 15
3.3.1.1.6. Hardware de la adquisicin de datos.................................................. 15
3.3.1.1.6.1. Descripcin de la placa de adquisicin de datos NI-6024-E.............. 15
3.3.1.1.6.2. Conexin Entrada/Salida .................................................................... 16
3.3.1.1.6.3. Caractersticas del bus PCI................................................................. 19
3.3.2.
Driver del Motor CC ................................................................................... 21
3.3.2.1.
Microcontrolador ................................................................................ 21
3.3.2.2.
GAL (Gate Array Logic)...................................................................... 22
3.3.2.3.
Puente en H ......................................................................................... 22
3.3.2.4.
Cuadrantes de trabajo de un motor..................................................... 22
3.3.2.5.
Pulse Width Modulation ...................................................................... 23
3.3.3.
Motor de corriente continua........................................................................ 24
3.3.3.1.
Excitacin independiente..................................................................... 25
3.3.3.2.
Determinacin de la constante K .................................................... 27
3.3.3.3.
Placa de caractersticas del motor de corriente continua .................. 27
3.3.4.
Modulo de Control ...................................................................................... 28
3.3.5.
Fuente de Alimentacin Variable ................................................................ 33
3.4.
Elementos de Software ........................................................................................ 34
3.4.1.
Herramienta GUIDE ................................................................................... 34
3.4.1.1.
Paleta de componentes ........................................................................ 37
3.4.1.2.
Iconos varios ....................................................................................... 37
3.4.2.
Estructura de los grficos en MATLAB....................................................... 37
3.4.2.1.
Jerarqua de MATLAB ........................................................................ 37
3.4.2.2.
Identificadores (handles)..................................................................... 38
3.4.2.3.
Propiedades de los objetos .................................................................. 38

ndice
4.

Memoria de clculo ..................................................................................................... 39


4.1.
Configuracin de los elementos Hardware.......................................................... 39
4.1.1.
Esquema de conexionado ............................................................................ 39
4.1.2.
Tabla de conexiones .................................................................................... 40
4.2.
Configuracin elementos de Software................................................................. 41
4.2.1.
Instalacin MATLAB ................................................................................... 41
4.2.2.
Instalacin Compilador............................................................................... 42
4.2.3.
Configuracin Compilador ......................................................................... 42
4.2.4.
Instalacin del Kernel Real-Time Windows Target .................................... 44
4.2.5.
Obtencin de informacin de estado del kernel .......................................... 44
4.3.
Modelado de la planta.......................................................................................... 45
4.3.1.
Discretizacin de la planta.......................................................................... 48
4.3.1.1.
Frecuencia de muestreo....................................................................... 48
4.3.1.2.
Efecto aliasing ..................................................................................... 49
4.3.1.3.
Funciones de transferencia discretas .................................................. 50
4.4.
Diseo de controladores ...................................................................................... 50
4.4.1.
Controlador P.............................................................................................. 52
4.4.2.
Controlador PI ............................................................................................ 57
4.4.3.
Limitaciones en la frecuencia de muestreo ................................................. 59
4.5.
Funcionamiento del interfaz grfico.................................................................... 61
4.5.1.
Eleccin del modelo de trabajo ................................................................... 62
4.5.1.1.
Modelo en lazo cerrado con controlador y carga............................... 62
4.5.1.2.
Modelo en lazo abierto ........................................................................ 63
4.5.1.3.
Modelo en lazo cerrado sin controlador y con carga ......................... 64
4.5.2.
Parmetros de entrada ................................................................................ 65
4.5.3.
Parmetros del controlador ........................................................................ 65
4.5.4.
Parmetros de ejecucin ............................................................................. 66
4.5.5.
Visualizacin de grficos ............................................................................ 66
4.5.5.1.
Opciones para la visualizacin de datos de entrada/salida................ 67
4.5.5.2.
Seleccin datos a visualizar ................................................................ 68
4.5.5.3.
Opciones de zoom y de centrado ......................................................... 68
4.5.6.
Guardar y cargar datos............................................................................... 69
4.5.7.
Casilla de dilogo........................................................................................ 70
4.5.8.
Botones para cerrar la aplicacin............................................................... 70
4.5.9.
Diagrama de flujo general .......................................................................... 70
4.6.
Cdigo fuente de la GUI...................................................................................... 72
4.6.1.
Funcin de Apertura.................................................................................... 72
4.6.2.
Parmetros de entrada ................................................................................ 76
4.6.2.1.
Consigna.............................................................................................. 76
4.6.2.2.
Rampa.................................................................................................. 77
4.6.2.3.
Inversin de giro.................................................................................. 77
4.6.2.4.
Tiempo de retardo ............................................................................... 77
4.6.3.
Parmetros del controlador ........................................................................ 77
4.6.3.1.
Constante proporcional....................................................................... 77
4.6.3.2.
Constante integral ............................................................................... 78
4.6.3.3.
Constante derivativa............................................................................ 78
4.6.3.4.
Ajuste manual por funcin de transferencia ....................................... 78
4.6.3.5.
Funcin controlador............................................................................ 78
4.6.4.
Parmetros de ejecucin ............................................................................. 79
4.6.4.1.
Tiempo inicial ...................................................................................... 79

ii

ndice
4.6.4.2.
Tiempo final......................................................................................... 79
4.6.4.3.
Tiempo discreto ................................................................................... 79
4.6.4.4.
Conexin y ejecucin de la aplicacin ................................................ 80
4.6.4.5.
Parada de la ejecucin ........................................................................ 80
4.6.4.6.
Compilacin ........................................................................................ 81
4.6.5.
Limitacin de puntos de ejecucin .............................................................. 82
4.6.6.
Visualizacin de grficos ............................................................................ 83
4.6.6.1.
Opcin de grfico AND ....................................................................... 83
4.6.6.2.
Opcin de grfico OR.......................................................................... 84
4.6.6.3.
Opcin de grfico SCOPE................................................................... 84
4.6.6.4.
Seleccin de variable a visualizar ....................................................... 85
4.6.6.5.
Borrar pantalla.................................................................................... 85
4.6.6.6.
Activacin de la cuadrcula de pantalla.............................................. 85
4.6.6.7.
Casillas de seleccin de rea de visualizacin ................................... 86
4.6.6.8.
Zoom in ................................................................................................ 86
4.6.6.9.
Zoom out .............................................................................................. 86
4.6.6.10.
Seleccin automtica de visualizacin ................................................ 87
4.6.6.11.
rea de visualizacin de grficos........................................................ 87
4.6.6.12.
Visualizacin de grficos .................................................................... 87
4.6.7.
Parmetros de guardar y cargar datos ....................................................... 90
4.6.7.1.
Nombre de la variable ......................................................................... 90
4.6.7.2.
Ruta para salvar/guardar datos .......................................................... 91
4.6.7.3.
Salvar/guardar datos........................................................................... 91
4.6.8.
Parmetros de casilla de dilogo y cerrar aplicacin ................................ 93
4.6.8.1.
Casilla de dilogo................................................................................ 93
4.6.8.2.
Salvar................................................................................................... 93
5. Conclusiones................................................................................................................ 94
6. Bibliografa.................................................................................................................. 95
7. Anexos ......................................................................................................................... 96
7.1.
Compatibilidad de bloques de Simulink y RTWT .............................................. 96
7.2.
Preguntas realizadas al servicio tcnico de Matlab ........................................... 104

iii

Memoria Tcnica

1. Introduccin
Desde que Michael Faraday descubri en el siglo XIX que mediante la generacin de
una corriente elctrica en un conductor en movimiento en el interior de un campo
magntico produca el fenmeno de la induccin, se ha evolucionado mucho respecto a
los primeros prototipos de motores elctricos. Existen una gran variedad de tipos de
motores segn su tamao, funcionamiento, tensin de alimentacin, etc. En la
actualidad, se hace un gran uso de estas mquinas tanto en el mbito industrial, como en
el domstico. Hay que decir que la electrnica de potencia y los avances tecnolgicos
han contribuido a dar mayor cabida a estos dispositivos, tanto por la reduccin del
tamao, de los consumos y de los rendimientos. Ello hace posible verlos en el interior
de un telfono mvil, de un ordenador, o en juguetes.
Pero es en la industria donde se hace ms latente el uso de estas mquinas, y es donde se
incorporan sistemas realimentados para el control de velocidad, de par o de ngulo. Ya
desde el 300 a.C. los griegos y los rabes tuvieron la necesidad de querer medir el
tiempo, conducindoles a realizar grandes aportes en la teora y prctica del control
automtico. Pero no fue hasta el siglo XVIII, a manos del movimiento ideolgico de la
Ilustracin, que se hicieron los avances ms significativos. Durante la Revolucin
Industrial, con la implementacin de mquinas ms complejas: molinos de grano
avanzados, hornos, calderas y motores a vapor; se llevaron a cabo reguladores de
flotador, temperatura, presin, y control de velocidad. Los controladores proporcionan
una mayor fiabilidad; lo que conlleva una mejora de cualquier proceso de fabricacin,
tanto en calidad como en cantidad de produccin.

2. Objetivos
El objetivo principal que se plantea es la realizacin de un entorno grfico que permita
el control ajustable de la velocidad de una mquina de corriente continua en tiempo real.
Para ello se deber conocer los siguientes entornos para desarrollar la aplicacin:




La herramienta para el desarrollo del interfaz grfico (GUIDE).


Las herramientas de programa, y en especial las de Tiempo Real
(RTWT/Simulink).
Los elementos fsicos de la aplicacin, como el driver de corriente continua
elaborado en el laboratorio, y los mdulos de la casa LEYBOLD-DIDACTIC.

Mediante el desarrollo de la aplicacin en Tiempo Real se pretende dar una visin


prctica del diseo de controladores que se imparte en las clases de teora, permitiendo
al alumno entender y visualizar grficos del controlador que el mismo haya diseado. Se
tendrn que establecer unas protecciones para acotar los valores de tensin de entrada y
salida, y as evitar desperfectos en los elementos fsicos del sistema.

Memoria Tcnica

3. Memoria descriptiva
3.1. Introduccin a MATLAB
El nombre de MATLAB proviene de la contraccin de los trminos MATrix
LABoratory y fue concebido para el fcil acceso a las libreras que son de gran
importancia en el campo de la computacin y el clculo matricial.
MATLAB es un entorno de computacin y desarrollo de aplicaciones totalmente
integrado, orientado para el desarrollo de proyectos con elevados clculos matemticos
y la visualizacin grfica de estos. MATLAB integra anlisis numrico, clculo
matricial, procesado de seal, todo ello en un entorno fcil para el usuario.
Tanto en el mundo universitario como en el industrial, MATLAB se ha convertido en
una herramienta bsica para la resolucin de complejos problemas matemticos en
diferentes reas como la computacin, el clculo numrico, prototipaje algortmico,
teora de control automtico, estadstica, etc.
MATLAB consta de diferentes aplicaciones o toolboxes especializados orientados a
ingenieros, cientficos y todo tipo de profesionales tcnicos. Entre ellos destacan:
Sistemas de Control, Adquisicin de Datos, Tiempo Real, Lgica Fuzzy, Procesamiento
de imgenes, Redes Neuronales, Optimizacin, Procesamiento de Seal, etc.

3.2. Entorno en tiempo real con MATLAB


MATLAB presenta una aplicacin para hacer simulaciones en tiempo real, la toolbox
Real Time Windows Target. Esta herramienta permite realizar aplicaciones de control y
simulaciones en tiempo real para plantas fsicas, como puede ser el caso que nos ocupa:
un motor de corriente continua.

3.2.1. Real Time Windows Target


Real Time Windows Target es una herramienta de MATLAB que permite capturar y
generar seales en tiempo real mediante diagramas de bloques generados con Simulink.
Adems, se pueden visualizar estas seales, cambiando y controlando parmetros, todo
en tiempo real. Para hacerlo posible tiene que haber un elemento fsico que interacte
entre Simulink y el elemento exterior que queremos controlar, recoger seales,... este
elemento es la placa de adquisicin de datos DAQ, que es la que permite operar con
seales de entrada y/o salidas analgicas y digitales.
La integracin entre Simulink en modo externo y Real Time Windows Target permite
utilizar el modelo de Simulink con un interfaz grfico para:


Visualizacin de seales: se puede utilizar el bloque Scope para visualizar


seales en tiempo real.

Memoria Tcnica


Ajuste de parmetros: se realiza mediante las cajas de dilogo de los bloques


en Simulink durante la ejecucin en tiempo real.

3.2.2. Real-Time Windows Kernel


Un componente clave del Real Time Windows Target es un kernel en tiempo real que
hace de interfaz con el sistema operativo Windows para asegurar que la aplicacin en
tiempo real se est ejecutando en el tiempo de muestreo seleccionado. El kernel asigna
la prioridad ms elevada de ejecucin para la aplicacin en tiempo real, y lo hace
utilizando el reloj interno del ordenador como fuente principal de tiempo.


Interrupciones de tiempo: el kernel intercepta la interrupcin del reloj del PC


antes que el sistema operativo Windows la reciba, y bloquea cualquier llamada
al sistema operativo. Entonces, el kernel utiliza la interrupcin para iniciar la
ejecucin del modelo compilado.
Para garantizar un periodo de muestreo preciso el kernel reprograma el reloj del
PC a una frecuencia mayor. Debido a que el reloj del PC es tambin la principal
fuente de tiempo para el sistema operativo, el kernel enva una interrupcin al
sistema operativo manteniendo la tasa de interrupcin inicial.

Planificador: las interrupciones hacen de base de tiempo para un sencillo


planificador que se encarga de ejecutar las aplicaciones en tiempo real. El
nmero de tareas es igual al nmero de perodos de muestreo utilizados en el
modelo, configurado en modo multitasking. En modo single-tasking slo existir
una tarea. El mximo nmero de tareas es 32, y las tareas ms rpidas tienen
ms prioridad de ejecucin que las ms lentas. Durante la ejecucin la aplicacin
en tiempo real almacena los datos en buffers, y posteriormente el contenido de
los buffers es recuperado por el bloque Scope (ya sea para guardarlas en una
variable en el Workspace o bien para imprimirlas en pantalla).

Comunicacin con el hardware: el kernel hace de interfaz y comunica con el


hardware de E/S utilizando los correspondientes drivers que comprueban que la
instalacin de la placa DAQ sea correcta. En el caso que esto no suceda, no se
nos permitir ejecutar la aplicacin en tiempo real.

Simulink en modo externo: la comunicacin entre Simulink y la aplicacin en


tiempo real se hace mediante Simulink con el modo External. Este es un mdulo
que se comunica directamente con el kernel y es utilizado para comenzar una
aplicacin en tiempo real, cambiar parmetros, recuperar datos del bloque
Scope.

Compilador de C incorporado: las aplicaciones de Real Time Windows Target


pueden ser compiladas con LCC (solo C), que es el que viene por defecto con
MATLAB.

Memoria Tcnica

3.2.3. Aplicacin Real-Time


Una aplicacin en tiempo real tiene las siguientes caractersticas:


Cdigo compilado: es el resultado de compilar el cdigo fuente. En nuestro


caso el cdigo es el modelo.

Relacin con el modelo de Simulink: el ejecutable contiene una relacin


binaria de todos los componentes del modelo, conexiones entre bloques,
dependencias de tiempo y variables.

Relacin con el kernel: el modelo tiene que ser cargado y ejecutado


directamente por el kernel del Real Time Windows Target. Esta nunca podr ser
ejecutada sin el kernel.

Checksum: el modelo y el ejecutable de Simulink contienen un valor de


Checksum. El kernel utiliza este valor para comparar el modelo y el ejecutable,
si estos son coherentes permitir realizar la ejecucin. Cuando se haga un
cambio en el modelo de Simulink el valor de Checksum no vara hasta que no se
hace un rebuild. Esto permite que cuando se cambian valores de los
parmetros durante la ejecucin, el mapeo de parmetros a memoria se haga de
manera correcta.

3.2.4. Anlisis y adquisicin de seales


Se puede adquirir, visualizar y salvaguardar seales utilizando el bloque Scope de
Simulink, trabajando en modo externo. Quiere decir que se puede observar el
comportamiento del modelo en tiempo real y guardar los datos en el Workspace.
Existen dos modalidades de captura y visualizacin de las seales:


Signal Tracing: proceso mediante el cual se puede adquirir y visualizar seales


durante la ejecucin de una aplicacin en tiempo real. Es decir, nos permitir
visualizar los datos mientras que los est capturando, sin tener que esperar a que
acabe la simulacin (slo se permite mediante el bloque Scope, no permite
exportarlos a medida que los captura).

Signal Logging: proceso mediante el cual se puede adquirir y visualizar seales


procedentes de la aplicacin en tiempo real, una vez haya acabado la ejecucin o
bien se haya parado manualmente. Hasta que no se cumpla alguna de las dos
condiciones no se permite visualizar, guardar y/o exportar las seales (es un
problema cuando se trabaja con una interfaz grfica externa a Simulink).

3.2.5. Ajuste de parmetros


Cambiar parmetros y observar los cambios que se producen durante la ejecucin en
tiempo real es posible desde Simulink o bien a travs de una interfaz grfica externa.
9

Memoria Tcnica

Modo External en Simulink: trabajar en este modo nos permite cambiar valores
de parmetros y transferirlos automticamente mientras se ejecuta la aplicacin
en tiempo real.

Durante la ejecucin en tiempo real se pueden cambiar parmetros en los siguientes


elementos:




Parmetros de bloques
Parmetros de bloques de subsistemas.
MATLAB variables

3.2.6. Entorno del hardware


El hardware est formado por un ordenador y una placa de adquisicin de datos
compatibles.
3.2.6.1. Compatibilidad del PC
Se pueden utilizar ordenadores que utilicen Windows NT 4.0, Windows 2000 o
Windows XP.
3.2.6.2. Soporte del driver de entrada/salida
El Real Time Windows Target utiliza tarjetas de adquisicin estndar y econmicas
para ordenadores compatibles tipo PC. Cuando se ejecuta un modelo en tiempo real, el
Real Time Windows Target captura los datos muestreados por medio de uno o ms
canales de entrada, inmediatamente son procesados en los bloques del modelo creados y
los datos obtenidos se envan a los canales de salida que correspondan.


Tarjetas de adquisicin: el Real Time Windows Target soporta una variedad


gama y cantidad de tarjetas (ISA, PCI y PCMCIA). El nmero de placas
soportadas est por encima de las 200. Un listado completo y las posibles
autorizaciones se pueden encontrar la siguiente direccin:
http://www.mathworks.com/products/supportedio.html?prodCode=WT.

Librera de bloques para DAQ: el Real Time Windows Target provee una
librera de bloques para Simulink que contienen los drivers universales para
todas las placas compatibles. Esta librera es la rtwinlib y contiene los
bloques: Analog Input, Analog Output, Digital Input, Digital Output, Counter
Input y Encoder Input.

10

Memoria Tcnica

3.2.7. Entorno del software


El entorno de software es un sitio para disear, construir, y testear en tiempo no real y
en tiempo real.
3.2.7.1. Simulacin en tiempo no real
Se crea un modelo con Simulink y se pone en modo normal para llevar a cabo una
simulacin en tiempo no real.
Al realizar una simulacin en tiempo no real, Simulink utiliza un vector de tiempo para
gestionar el modelo. Despus de que las salidas sean computadas por un determinado
valor de tiempo, Simulink inmediatamente repite esta operacin para el siguiente valor
del vector de tiempo y as sucesivamente. Este proceso finalizar en el momento en que
se para la simulacin o bien cuando se llegue al tiempo final.
Dado que este vector de tiempo no est asociado a ningn reloj, las salidas son
calculadas en tiempo no real, y lo hacen tan rpido como el ordenador le permita.
3.2.7.2. Ejecucin en tiempo real
Para ejecutar una aplicacin en tiempo real, se crea un modelo en Simulink y se pone en
modo External.
Para hacer una aplicacin en tiempo real intervienen Real-Time Workshop, Real Time
Windows Target y el compilador C/C++. La respuesta del compilador es un ejecutable
que el kernel puede ejecutar en tiempo real. Esta aplicacin utiliza como parmetros
iniciales los que hay en el modelo en el momento de la generacin del cdigo.
Durante la ejecucin en tiempo real, utilizando el tiempo de muestreo fijado por el
usuario, el Real Time Windows Target utiliza las interrupciones para gestionar la
aplicacin en tiempo real. En cada nueva interrupcin el ejecutable computa los valores
de salida de los bloques del modelo.
Para generar cdigo con Real-Time Workshop se utiliza el algoritmo Fixed-Step
Discrete. Este algoritmo calcula el valor del tiempo para la siguiente muestra aadiendo
un incremento de tiempo al actual. La precisin de la seal a representar y la longitud
del tiempo de simulacin resultante dependen del tiempo de muestreo escogido. Es
decir, cuanto menor sea el tiempo de muestreo escogido mayor ser la calidad de la
seal muestreada, pero menor ser el tiempo de simulacin mximo. En caso que el
usuario no seleccione un tiempo de muestreo, Simulink escoge uno por defecto
dividiendo por 50 la diferencia del tiempo final e inicial. Tambin hay que remarcar que
este algoritmo no permite simular estados continuos.

11

Memoria Tcnica

3.2.8. Simulink en modo externo


El modo externo requiere una interfaz de comunicacin para pasar parmetros externos
a Simulink, y al acabar la recepcin, el mismo protocolo de comunicacin tiene que ser
utilizado para aceptar nuevos valores e insertarlos en la correspondiente posicin de
memoria para que sean utilizados por la aplicacin en tiempo real.
En algunas tarjetas de Real-Time Workshop la interfaz de comunicacin utiliza
protocolo TCP/IP. En el caso de Real Time Windows Target, el ordenador servidor
tambin sirve como ordenador objetivo. Entonces, slo se necesita un driver virtual para
intercambiar parmetros entre MATLAB, el espacio de memoria de Simulink, y la
memoria que es accesible para la aplicacin en tiempo real.
Hay que recordar que trabajando en este modo se puede obtener y visualizar seales con
el bloque Scope, as como ajustar parmetros. Cuando se modifica algn parmetro de
un bloque de entrada, la simulacin queda pausada hasta que no se cierra la ventana de
dilogo.

3.2.9. Buffers y transferencia de datos


Para cada intervalo de muestreo de la aplicacin en tiempo real, Simulink almacena de
manera continua datos en memoria hasta que el buffer de datos se llena. Una vez el
buffer est lleno, Simulink suspende la captura de datos hasta que stos no hayan sido
transferidos a MATLAB a travs del modo externo de Simulink. Cuando esto sucede, la
aplicacin en tiempo real contina ejecutndose.
Los datos capturados dentro del buffer son continuos. Cuando el buffer ha sido
transferido a Simulink, se visualiza inmediatamente en el bloque Scope. Existe la
posibilidad de poder guardar estos datos directamente en un fichero MAT.

3.3. Elementos fsicos de la aplicacin en Tiempo Real


El conjunto del hardware que forma la aplicacin en Tiempo Real se puede desglosar
en seis bloques de elementos que interactan entre s.







PC
Entradas/Salidas
Driver del motor de corriente continua
Motor de corriente continua
Alimentacin externa
Realimentacin

12

Memoria Tcnica

Alimentacin

Rampa
Sentido de giro
Errores

Entradas/Salidas

Velocidad

Driver Motor CC

MOTOR

Realimentacin

Ilustracin 1: Representacin en bloques de los componentes del controlador.

3.3.1. PC
El ordenador personal es el encargado de capturar los datos que transmite el usuario al
driver (velocidad, rampa, etc), y los datos obtenidos del motor (errores, datos de la
realimentacin, etc), para realizar los clculos algortmicos necesarios y as actualizar
los valores del modelo en cada intervalo de tiempo. Es decir, la computadora y el
modulo de entrada/salida, o tambin placa de adquisicin de datos, establecern un
intercambio de parmetros para cada instante de tiempo.
El PC aloja en su interior la tarjeta de adquisicin de datos, los drivers de la misma, el
programa MATLAB, la aplicacin en tiempo real, y Simulink. Las caractersticas de la
computadora utilizada y su sistema operativo son:







Procesador INTEL PENTIUM 4 a 1,80 GHz


512 MB de RAM
WINDOWS 2000 (Service Pack 4)
MATLAB R2006a v7.2.0.232
SIMULINK R2006a v6.4
VISUAL C/C++ v6.0

Hay que decir que estas caractersticas contribuirn a la restriccin del tiempo de
muestreo mximo, el nmero mximo de bloques en Simulink o por ejemplo la
velocidad de compilacin de la aplicacin durante el desarrollo, entre otros.

13

Memoria Tcnica
3.3.1.1. Placa de adquisicin de datos
La tarjeta de adquisicin de datos permite capturar y/o generar seales reales e
interactuar con ellas desde la aplicacin en tiempo real. Un sistema de adquisicin de
datos esta formado por un hardware y un software que permite a un sistema digital
conectarse al mundo real. El sistema de adquisicin de datos tpico est formado por:






Sensores y actuadores
Hardware de adquisicin de datos
Hardware de acondicionamiento de seal
Computadora o procesador
Programa

Ilustracin 2: Esquema del proceso de adquisicin de datos

3.3.1.1.1. Sensores y actuadores

Los sensores y actuadores son aquellos que actan como transductores, es decir estos
elementos transforman una seal capturada de una naturaleza en otra seal de salida de
otra naturaleza. En el caso que nos ocupa, el sensor seria el tacmetro que lee las vueltas
que realiza el eje del motor y genera una seal elctrica proporcional. El actuador es el
que mediante una seal elctrica hace que el motor gire a determinada velocidad.
3.3.1.1.2. Hardware de adquisicin de datos

Es el corazn de cualquier sistema de adquisicin de datos. Su funcin es convertir


seales analgicas provenientes del mundo real a seales digitales, o bien convertir
seales digitales a analgicas

14

Memoria Tcnica
3.3.1.1.3. Hardware de acondicionamiento de la seal

Normalmente las seales de los sensores son incompatibles con el hardware de


adquisicin de datos. Para lograr esta compatibilidad habr que acondicionar la seal, es
decir que si la seal es muy pequea habr que amplificarla, de lo contrario atenuarla.
Tambin es muy comn eliminar componentes frecuenciales de las seales.
3.3.1.1.4. La computadora

La computadora proporciona un procesador, un reloj, un bus para transferir datos y


espacio de memoria o disco para almacenar datos.

3.3.1.1.5. Software

El software de adquisicin de datos permite intercambiar informacin entre la


computadora y el hardware. Por ejemplo, los programas tpicos permiten configurar la
tasa de muestreo de una tarjeta de adquisicin y adquirir un nmero concreto de
muestras.
3.3.1.1.6. Hardware de la adquisicin de datos

El hardware de la adquisicin de datos es una tarjeta de la empresa National


Instruments, modelo NI-6024-E.
3.3.1.1.6.1. Descripcin de la placa de adquisicin de datos NI-6024-E

Las caractersticas de la placa son las siguientes:











16 canales de entrada analgica (8 diferenciales)


2 canales de salida analgica
8 lneas de entrada/salida digital
conector de 86 pines
Sistema de control de tiempo propio (DAQ-STC). Consta de tres grupos para
control de entradas y salidas analgicas, y para funciones de contador para
propsitos generales. Estos grupos incluyen un total de siete contadores de 24
bits i tres de 16 bits con una resolucin mxima de tiempo de 50 ns.
Sistema especfico que permite la sincronizacin de varias funciones de medida
a un mismo disparo o evento de reloj, y lo hacen mediante los sistemas de bus de
integracin en tiempo real (Real-Time System Integration, RTSI).
Conexin a bus de PC mediante ranura PCI.

15

Memoria Tcnica

Ilustracin 3: Diagrama de bloques de la PCI-6024E

Para hacer funcionar la placa DAQ es necesario tener los drivers e instalarlos en el PC.
Para poder trabajar en el entorno de Matlab, la Toolbox Real-Time es la encargada de
detectar automticamente el dispositivo para darle funcionalidad.

3.3.1.1.6.2. Conexin Entrada/Salida

A continuacin se muestra la disposicin de pines de la placa de adquisicin de datos,


as como una breve descripcin de las entradas/salidas y sus rangos.

16

Memoria Tcnica

Ilustracin 4: Patillaje del conector de la placa de adquisicin de datos

17

Memoria Tcnica

En la Tabla 1 se muestran las seales de entrada/salida con ms relevancia.


AIGND

Analog input groundthese pins are the reference point for


single-ended measurements in RSE configuration and the bias
current return point for DIFF measurements. All three ground
referencesAIGND, AOGND, and DGNDare connected on
your device.

ACH<0..15>

AIGND

Input

Analog input channels 0 through 15you can configure each


channel pair, ACH<i, i+8> (i = 0..7), as either one DIFF input
or two single-ended inputs.

AISENSE

AIGND

Input

Analog input sensethis pin serves as the reference node for


any of channels ACH <0..15> in NRSE configuration.

DAC0OUT

AOGND

Output

Analog channel 0 outputthis pin supplies the voltage output


of analog output channel 0.

DAC1OUT

AOGND

Output

Analog channel 1 outputthis pin supplies the voltage output


of analog output channel 1.

AOGND

Analog output groundthe analog output voltages are


referenced to this node. All three ground referencesAIGND,
AOGND, and DGNDare connected together on your device.

DGND

Digital groundthis pin supplies the reference for the digital


signals at the I/O connector as well as the +5 VDC supply. All
three ground referencesAIGND, AOGND, and DGNDare
connected on your device.

DIO<0..7>

DGND

Input or
Output

Digital I/O signalsDIO6 and 7 can control the up/down


signal of general-purpose counters 0 and 1, respectively.

+5V

DGND

Output

+5 VDC Sourcethese pins are fused for up to 1 A of +5 V


supply on the PCI and PXI devices, or up to 0.75 A from a
DAQCard device. The fuse is self-resetting.

Tabla 1: Descripcin de las seales de entrada y salida

En la Tabla 2 se reflejan los rangos y caractersticas elctricas de las entradas/salidas de


la NI-6024-E.
Signal Name

Signal Type and


Direction

Impedance
Input/ Output

Protection (Volts)
On/Off

Source (mA at V)

Sink (mA
atV)

Rise
Time
(ns)

Bias

ACH<0..15>

AI

100 G in
parallel with
100 pF

42/35

200 pA

AISENSE

AI

100 G in
parallel with
100 pF

40/25

200 pA

AIGND

AO

DAC0OUT (6024E and


6025E only)

AO

0.1

Short-circuit to
ground

5 at 10

5 at-10

10
V/us

DAC1OUT (6024E and


6025E only)

AO

0.1

Short-circuit to
ground

5 at 10

5 at-10

10

V/jis

AOGND

AO

DGND

DO

VCC

DO

0.1

1A fused

DIO<0..7>

DIO

Short-circuit to
ground
Vcc +0.5

13 at (Vcc -0.4)

24 at 0.4

1,1

50kpu

AI = Analog Input AO =
Analog Output Note:
The tolerance on the 100
k

DIO = Digital Input/Output


pu = pullup DO = Digital Output 50 k pullup and
pulldown resistors is very large. Actual value can range between

17 k and

Tabla 2: Caractersticas elctricas de las entradas/salidas de la placa de adquisicin de datos

18

Memoria Tcnica

En la Ilustracin 5 se muestra el esquema de los canales 0 y 1 de las correspondientes


salidas analgicas: DAC0OUT y DAC1OUT, que darn una tensin de salida
referenciada respecto a AOGND. En la figura de la derecha hay las entradas/salidas
digitales DIO<07> que se podrn configurar individualmente como entrada o salida
segn interese. En este caso, concretamente, las DIO<03> estn configuradas como
entradas y las DIO<47> como salidas. Las entradas digitales pueden recibir seales
TTL y sensar seales de dispositivos externos, como por ejemplo el estado de un
interruptor como el de la figura. Las salidas digitales pueden enviar seales TTL y
controlar dispositivos externos como un LED.

Ilustracin 5: Esquema salidas analgicas y entradas/salidas digitales respectivamente

3.3.1.1.6.3. Caractersticas del bus PCI

Est claro que las caractersticas del bus son un factor a tener en cuenta respecto a
posibles limitaciones en el tiempo de muestreo, tamao de los datos, transformaciones
ADC y DAC, etc. Sin entrar en mucho detalle, se comentan algunas de las
caractersticas ms destacables.
En el manual del fabricante nos advierten que estas especificaciones se han determinado
a una temperatura de 25 C.

19

Memoria Tcnica

Entrada Analgica
Caractersticas de entrada
Conversin ADC por aproximaciones succesivas
Error 1,5 LSB en modo no diferencial
Resolucin de 12 bits, 1 bit 4096
Velocidad de muestreo de 200 kS/s garantizada
Board Gain (Software-Selectable)
0,5
1
10
100
Voltaje mximo de trabajo de 11 V
Poteccin contra sobretensiones
Signal
ACH<0..15>
AISENSE

Range
10 V
5 V
500 mV
50 mV

Powered
On
42
40

FIFO buffer size: 512 S


Configuration memory size: 512 words
Tabla 3: Caractersticas entrada analgica

Salida Analgica
Caractersticas de salida
2 canales
Resolucin de 12 bits
Error 1,5 LSB (solo no diferencial)
Tiempo mximo de actualizacin
DMA: 10 kHz, system dependent
Interrupts: 1 kHz, system dependent
Conversin DAC: Double buffering, multiplying
FIFO buffer size: No
Transferencia de datos: DMA, Interrupciones, E/S programadas
Voltage de salida
Rango: 10 V
Impedancia de salida: 0.1 max
Corriente de salida: 5 mA max
Proteccin contra cortocircuitos a masa
Estado de equilibrio al enceder: 200 mV
Tabla 4: Caractersticas salida analgica

20

Powered
Off
35
25

Memoria Tcnica

Entradas/Salidas Digitales
DIO<0..7>
Digital logic levels
Level
Input low voltage
Input high voltage
Input low current (Vin= 0 V)
Input high current (Vin= 5 V)
Output low voltage (IOL= 24 mA)
Output high voltage (IOH= 13 mA)

Min
0V
2V

4.35 V

Max
0.8 V
5V
320 A
10 A
0.4 V

Estado al encender: Alta impedancia en la entrada.50 k pull up to +5 VDC


Transferencia de datos: E/S programadas
Tabla 5: Caractersticas de las Entradas/Salidas Digitales

3.3.2. Driver del Motor CC


El driver del motor de corriente continua est formado por toda aquella circuiteria
electrnica que ha sido diseada para gobernar la tensin de armadura del motor, entre
otras funciones. Para poder realizar sus funciones consta de dos partes: la de control y la
de potencia. En la de control tendremos el microcontrolador y la GAL (Gate Array
Logic) que controlan al puente en H que se encarga de suministrar la potencia necesaria
segn mande el driver.

3.3.2.1. Microcontrolador
Para realizar la gestin de las consignas de velocidad y rampa se utilizar el PIC18F252.
Este elemento dispone de seis entradas analgicas y dos salidas de pwm.
Sus funciones sern:


Generar una seal de salida PWM en funcin de la consigna de velocidad, que


variar tan rpido como lo permita el valor de la rampa.

Mediante un bit externo se indicar al microcontrolador el sentido de giro del


motor. En funcin del valor se activar una diagonal u otra del puente en H, lo
que permite girar a derechas o a izquierdas. Es decir, se genera un bit para cada
transistor del puente, siendo el valor cero como el corte y uno la saturacin.

21

Memoria Tcnica
3.3.2.2. GAL (Gate Array Logic)
El dispositivo Lgico Programable GAL es el que confiere seguridad y fiabilidad a los
elementos de potencia, protegindolos de la recirculacin de sobrecorrientes, evita
cruces en las ramas de los puentes y trasmite el PWM a la seal de activacin de la parte
alta de los transistores del puente.
El modelo de GAL es el Ispv22v10 y este tipo de dispositivos destacan por la gran
rapidez - del orden de nanosegundos - , caracterstica importante para la proteccin de
sobrecorrientes.

3.3.2.3. Puente en H
La configuracin del puente en H se basa en el funcionamiento de cuatro interruptores
controlados, que gestionan en todo momento la tensin media y la recirculacin de la
corriente de armadura.
La excitacin del puente en H se realiza mediante modulacin por anchura de pulsos y
existen dos estrategias:



Mantener una diagonal bloqueada y actuar en los dos transistores opuestos superior e inferior -. Para invertir el sentido de giro habr que realizar la
situacin contraria.
Mantener una diagonal bloqueada y actuar con el PWM en el transistor superior
y dejando el inferior de la otra diagonal activado. Para invertir el sentido de giro
se intercambian los papeles de las diagonales.

Ilustracin 6: Estructura de puente en H tpica mediante transistores IGBT

3.3.2.4. Cuadrantes de trabajo de un motor


El motor de corriente continua puede trabajar en cuatro cuadrantes en funcin de la
polaridad de la tensin y del sentido de la corriente de armadura. Modificando estos dos
parmetros podremos variar velocidad o par en el eje del motor, respectivamente.
Partiendo de las analogas par-intensidad y velocidad-tensin, se puede construir la
siguiente tabla.

22

Memoria Tcnica
Cuadrante Velocidad
1
+
2
+
3
4
-

Par
+
+

Tabla 6: Tabla cuadrantes Par-Velocidad

Para entender el funcionamiento hay que pensar en un montacargas, que es el ejemplo


ms completo al respecto de los cuatro cuadrantes.
En el primer cuadrante velocidad y par son positivos, lo que se pretende es subir la
carga a velocidad mxima.
El segundo cuadrante sera cuando se est llegando al destino y hay que frenar, entonces
el par o anlogamente intensidad se invierte para continuar subiendo pero frenando.
El tercero hace bajar la carga a velocidad mxima, es la situacin inversa del primer
cuadrante, velocidad y par negativos.
El cuarto cuadrante pasa al revs que en el segundo, se est llegando al destino y se
disminuye la velocidad invirtiendo el sentido del par el motor trabaja como generador
- . Este sistema de trabajo se llama freno a contramarcha.
Con una buena gestin del motor se pueden controlar todas las situaciones que pueda
demandar una carga. Para ello es necesaria una topologa en H.

3.3.2.5. Pulse Width Modulation


La tcnica del PWM est basada en que el valor medio de una seal peridica es igual a
la integral entre cero y el periodo de la funcin de la seal respecto el tiempo, segn la
expresin ( 1 ).
T

Vmed =

(1)

f (t )
dt
T

En el caso de una seal digital y considerando el periodo constante, se puede considerar


que la funcin no es continua sino definida a trozos. Entonces, se puede decir que el
valor medio de la seal durante un periodo fijo es igual al producto del valor de la seal
en estado alto y su tiempo ms el producto del valor y tiempo en estado bajo, todo ello
divido por el periodo.
Vmed =

(2)

VH TH VL TL
+
T
T

El ancho de la parte positiva respecto el periodo T se conoce como ciclo de trabajo:

23

Memoria Tcnica

D=

(3)

Ton
T

Se modifica el valor de la velocidad mediante la utilizacin de una tensin variable de


armadura, que adems es modulada por amplitud de pulsos (PWM). Disponiendo de
una sola fuente de tensin a valor constante y con la ayuda de un interruptor controlado
se puede trocear esta tensin hasta conseguir el valor necesario en cada momento.
Si el interruptor est cerrado un 5% de su ciclo y el resto abierto, la tensin media
resultante ser un 5% de la tensin mxima de entrada. Por otra parte, si el interruptor
queda cerrado todo el ciclo, el valor medio de salida ser igual a la totalidad del valor
mximo de entrada. Se puede ver el efecto en la Ilustracin 7.

Ilustracin 7: PWM en los 4 cuadrantes

3.3.3. Motor de corriente continua


Un motor elctrico de corriente continua se entiende como el convertidor
electromecnico rotativo que mediante los fenmenos de induccin y de par
electromecnico transforma la corriente continua en energa elctrica.
Las expresiones que definen el funcionamiento de un motor de corriente continua son
relativamente sencillas. Si se considera que el flujo de excitacin o tambin flujo de
campo es constante se pueden tomar las siguientes consideraciones:

Par proporcional a la intensidad de inducido o de armadura.

Velocidad proporcional a la f.e.m interna.

Esto nos simplifica mucho el control ya que modificando la tensin de armadura


podremos regular la velocidad. Obtener una tensin continua variable es relativamente
sencillo, adems si se alimenta el motor cc con una etapa de potencia adecuada y se

24

Memoria Tcnica
escoge una tcnica de control adecuada, se consigue una muy buena respuesta dinmica
(fiable y rpida).
Existen diversos tipos de motores cc: con escobillas, sin escobillas (brushless) y los
motores pasos a paso. Nos centraremos en el de escobillas porqu es el caso que nos
ocupa.

Ilustracin 8: Estator, rotor y motor cc montado (se seala una escobilla), sucesivamente.

La funcin del colector de delgas y las escobillas es alimentar correctamente las bobinas
del devanado de armadura del rotor. El colector de delgas est unido al rotor y las
escobillas al estator.
En ciertas potencias existen diferentes configuraciones para las conexiones entre el
devanado de excitacin y armadura: excitacin independiente, paralelo o shunt, serie y
la compuesta. La que se va utilizar es la independiente por tanto nos centraremos en
solo en esta configuracin.

3.3.3.1. Excitacin independiente


En la Ilustracin 9 se puede observar el esquema elctrico equivalente de una mquina
cc con excitacin independiente, menospreciando la inductancia de armadura,
trabajando como generador.

25

Memoria Tcnica

Ilustracin 9: Esquema elctrico de una mquina cc con excitacin independiente.

La nomenclatura es la siguiente:
Va: tensin en bornes de la armadura.
Ia: intensitat de armadura.
Ea: f.e.m interna de inducido.
Ra: resistencia de inducido o armadura. Incluye la resistencia ohmica del devanado de
armadura, de las escobillas y de los devanados de compensacin.
La: inductancia del bobinado de inducido o armadura.
Vb: cada de tensin del arco elctrico a las escobillas (brush).
w : Velocidad mecnica en el eje del motor (rad/s).
n : Velocidad mecnica en el eje en r.p.m.
Ti: par interno en Nm.
Ts: par externo en Nm.
En la Ilustracin 10 se muestran las curvas caractersticas par-velocidad de un motor cc
a flujo constante y con tensiones de alimentacin de armaduras diferentes. El hecho ms
interesante de estas curvas es que tienen una caracterstica dura para un elevado margen
de tensiones. Esto quiere decir que si varia la demanda de par de la carga mecnica la
velocidad vara poco, lo que permitir regular fcilmente la velocidad de este tipo de
motor.

Ilustracin 10: Curvas caractersticas par-velocidad de un motor cc a flujo constante.

26

Memoria Tcnica

3.3.3.2. Determinacin de la constante K


En este apartado se explica el proceso practico para encontrar las constantes K.
Determinando este parmetro y con las formulas de Ea y Ti se puede saber tericamente
el valor de la tensin e intensidad que debe aplicar al motor para conseguir una
determinada velocidad o par en el eje de salida.
Para el estudio se parten de las siguientes constantes:
Ea = K w

(4)

Ti = K Ia

(5)

Va = Ia Ra + Vb + Ea

(6)

Al trabajar con rpm substituimos w por 0.1047n, quedando la expresin de Ea:


(7)

Ea = K 0.1047 n

De las ecuaciones ( 4 ) y ( 5 ) se pueden llegar a conocer el voltaje de Va, la resistencia


Ra y la intensidad Ia.
Para hallar la constante K se igualan la ( 6 ) y la ( 7 ):
K =

(8)

Va Vb Ia Ra
0.1047 n

Vb se desprecia al ser poco significativa, con lo que la ecuacin final queda:


K =

(9)

Va Ia Ra
0.1047 n

3.3.3.3. Placa de caractersticas del motor de corriente continua


El valor de la placa de caracterstiques del motor de LEYBOLD-DIDACTIC VDE 0530
Tensi nominal
Intensidad nominal
Potencia nominal

220 V Tensin excitacin


1,8 A
Intensidad nominal de excitacin
0,3 kW Velocidad nominal

Tabla 7: Valores placa de caractersticas

27

220 V
0,25 A
2000 rpm

Memoria Tcnica

3.3.4. Modulo de Control


El modulo de control se tiene que utilizar conjuntamente con la unidad de motor y
carga. El modulo es un dispositivo controlador que tiene integrado un variador de
frecuencia para suministrar la energa elctrica y poder realizar el control de mquinas
trifsicas, as como mostrar los valores medidos de velocidad y par en la pantalla de 7
segmentos. Existe la posibilidad conectarse mediante una comunicacin serie a travs
de un PC y registrar valores.
Las caractersticas tcnicas:
 Alimentacin 230V, a frecuencia de 47 a 62 Hz, 2 kW
 Control automtico de velocidad (5000 a -5000 rpm)
 Control automtico de par (9 Nm)
 Los valores se pueden modificar mediante un potencimetro externo
 Simulacin de diferentes cargas: kn2, k/n, caractersticas arbitrarias Mi ~ ni, etc
 Permite realizar un control externo inyectando una valor de continua de -10 V a
10 V
 Visualizacin de cuadrantes de trabajo
 leds de siete segmentos de 25 mm, 4 dgitos para la velocidad y 3 para el par
 Monitorizacin de la temperatura: Device Under Test (DUT) de la unidad de
motor y carga
 Medida directa de voltaje para el DUT
 Comunicacin serie para (RS232) para la transmisin de valores medidos y el
control remoto
 Comunicacin serie para la conexin de equipos adicionales
Existen 6 tipos de error que puede dar el dispositivo segn la Tabla 8.

Tipo de Error
ERR 1
ERR 2
ERR 3
ERR 4
ERR 5
ERR 6

Descripcin
Generator operation
Temperature of the DUT
Overvoltage in the link circuit of the control unit
Temperature of the D & B Unit
Temperature of the control unit
DUT is switched off via the output DUT ENABLE by
removing the coupling guard or the shaft end guard

Tabla 8: Descripcin tipos de errores en modulo de control de Leybold-Didactic

La interconexin entre el modulo y el conjunto motor-carga se realiza mediante dos


conectores: uno de 7 pines (16) y otro de 25 pines (17) segn la Ilustracin 11.

28

Memoria Tcnica

Ilustracin 11: Modulo de control de velocidad y par.

La descripcin de los puntos que se reflejan en la Ilustracin 11 se lista a continuacin.


Estos son un extracto del datasheet que se ha credo oportuno dejar constancia al lector.

29

Memoria Tcnica

of the DUT is the product of its speed/ torque


characteristic. The recording of the characteristic is
started by pressing the START button.
7.2 Run-up characteristic
The speed, which is preset using the incremental
control knob or externally, is kept constant. The load
of the DUT is the product of its speed/ torque

Description of the individual operating elements:


1 Main switch S: ON / OFF switch for the control
electronics and
supply voltages for the pendulum machine.
2 2- or 4-quadrant operation (ONLY MOTOR
OPERATION)
If this LED lights up the control unit automatically
switches off when the DUT is operating in the 2nd
or 4th quadrants (generator operation). This is a
function used to protect power sources which are not
energy recovery-proof, if the DUT is being supplied
by such a source.

characteristic. The recording of the characteristic is


started by pressing the START button.
7.3 Automatic torque control (TORQUE
CONTROL)
The torque, which is set by means of the
incremental control knob or externally, is kept
constant. The DUT operates under constant load.

After the device is switched on at switch S ,the LED


lights up (only 2-quadrant operation possible). If the
device is switched on by pressing the START button
(directly under the LED), the LED does not light up
(4-quadrant operation possible).

7.4 Load simulation M ~ k n


The D & B Unit simulates the load response of a fan
(M ~ k n2).
7.5 Load simulation M ~ k / n
The D & B Unit simulates the load response of a
winding drive (M ~ k / n).
7.6 Load simulation Mi ~ ni
The D & B Unit simulates the load response
with arbitrary characteristic edited by the user.

3 Pushbutton to start automatic recording of the


characteristics. If the operating mode load
characteristic or run-up characteristic is actice,
automatic recording of characteristics can be started
by pressing
pushbutton. In the case of
the load characteristic the speed range, starting from
the momentary speed value and automatically
proceeding up to the stop speed. For the run-up
characteristic the machine-generator set is rapidly
braked to the stop speed in order to run up again to
the speed applicable for start or recording. Before
starting the characteristic recording the momentary
speed can be changed using the incremental control
knob . At the end of the characteristic recording the
machine-generator set sheds its load and the stop
speed flashes for approx. 7 seconds.

7.7 Load simulation flywheel


The D & B Unit simulates the load response of a
flywheel.
8 RESET
If an error message is displayed or switch off has
been carried out because the torque limit has been
exceeded, the control unit can be switched on using
this button. However, this is only possible if the
corresponding error has been eliminated. In the case
of switch-off due to overheating this entails a cooling
off of the corresponding components.
9 Four-quadrant display
Display of the instantaneous load type of the DUT.
Quadrant
Load type
Rotation direction
1st quadrant
Motor operation
clockwise
2nd quadrant
Generator operation
couterclockwise
3rd quadrant
Motor operation
counterclockwise
4th quadrant
Generator operation
clockwise

4 The pushbutton M = 0 serves to interrupt any given


operating state. Any given operating state can be
interrupted by pressing the pushbutton. At the same
time the torque display shows OFF. The D & B
Unit no longer develops any torque, comes to a
standstill or is set to its no-load speed by the
machine under test. Consequently, the activation
of the pushbutton M = 0
results at all times to the load shedding of the
machine-generator set. Reactivation of the
pushbutton M = 0 results in the reactivation of the
control unit and therewith the frequency converter.
5 Operating mode switch (MODE)
Switchover to the next operating mode occurs each
time this pushbutton is pressed. The current operating
mode is displayed by an LED (7).

10 L1IN, L2IN, L3IN


Input sockets to the internal DUT's measurement
circuits for
connection of external power supply:
Input ranges for voltages:
0... 600
VAC/DC
currents:
0... 10 A
AC/DC
frequenties:
0... 120 Hz

6 Error message LED: ERROR


A multicolored LED is situated with the following
significance:
green: No error at all!
red:
An error appears and is displayed as ERR n
(n stands for 1 to 6)
Acknowledge by pressing
RESET button (8).
7 Modes of operation:
7.1 Load characteristic
The rotation speed, specified by the incremental
control knob or externally, is kept constant. The load

11 L1OUT, L2OUT, L3OUT


Output sockets for connection of different
DUT-machines (DC, AC, 3~)
12 INTERN / EXTERN-switch

30

Memoria Tcnica
INTERN: Depending on the operating mode
reference variable is set for speed, or torque
via the incremental control knob.
EXTERN: Depending on the operating
mode the reference variable is set for speed
or torque via the external input CONTROLIN
(13).

21 Incremental control knob to change the reference


variable
and the limit
The reference variable to be changed depends on the
operating mode set and thus on the control loop
currently activated. The speed setpoint is varied in
the operating modes load characteristic and run-up
characteristic
Setting range:
-5000 rpm...0
rpm...5000 rpm
In the automatic torque control mode (TORQUE
CONTROL) the setpoint value for the torque control
loop is varied.
Setting range:
-9.99 Nm...0
Nm...+9.99 Mm
In the case of external operation the incremental
control knob cannot induce a change in the setpoint.
If the stop speed or the torque limit is displayed (by
pressing or, the incremental control knob can be
used to vary the value currently being displayed.
Setting range stop speed: 0
rpm...5000 rpm Setting range
torque limit: 0 Nm...9.99 Nm
The load simulation operating modes only permit an
effective setting of the torque limit, for load
simulation of a winding drive (M ~ k/n) the
maximum adjustable torque limit is at 5 Nm (this
torque has to be overcome during start up).

13 External control input CONTROLIN


This input is active if the INTERN / EXTERN-switch
is set to EXTERN. For external operation the
setpoint value for the control loop selected by the
MODE button is supplied via this socket. Here the
following linear relationships apply to some extent:
Automatic torque control (TORQUE CONTROL):
10 V corresponds to 10 N
Automatic speed control (SPEED CONTROL):
10 V corresponds to 5000 rpm
The setpoint value is supplied to the selected
controller via a
run-up generator. This means that setpoint step
changes are
possible and lead to a slight overshoot of the
controller in
question.
14 Temperature monitoring of the DUT: TERR
This input is connected to the thermal contact of the
DUT. This connection is always established as
otherwise there would be no overload protection for
the DUT.
15 DUT ENABLE-sockets
Potential-free relay-driven output sockets in the
operation mode as a switcher used with the /INH
input of Control Unit PWM Characterisitc Method,
cat. no. 735 291, a cut-off used with power circuit
breakers e.g. cat. no. 745 561. The operation modes
dut nc (normally closed) and dut no (normally
open) can be changed by pressing the MODE key (5)
during the first seconds when control unit is switched
on. With each pressing a delay time will be started.
The default mode of DUT ENABLE is dut no.

22 Auxiliary ground sockets


23 Analog DUT's current output (I [ 1 V / A ])
The voltage is proportional to the DUT's supply
current when connected to DUT socket field (1 V
corresponds to 1 A).
24 Analog DUT's voltage output (U [ 1 V / 100 V ])
The voltage is proportional to the DUT's supply
voltage when connected to DUT socket field (1 V
corresponds to 100 V).

16 Connection socket to supply the D & B Unit.

25 Analog torque output (M [ 1 V / Nm ])


The voltage is proportional to the instantaneous
torque of the D & B Unit (1 V corresponds to 1 Nm).

17 Control connection input


Multifunction Input for the connection of the D & B
unit's build-in incremental tacho-generator, torque
measurement- and protection circuits.

26 Analog speed output (n [ 1 V / 500 rpm ])


The voltage is proportional to the momentary speed
of the machine-generator set (1 V corresponds to 500
rpm).

18 Digital speed output (TACHOOUT)


The signals of the tacho-generator are automatically
forwarded.

27 Pushbutton to display torque limit (|MMAX|)


When operated switchover occurs between the torque
limit and the momentary torque. If the torque limit is
being displayed, the display flashes. This value can
now be changed using the incremental control knob.
If the display flashes, max. limit switch off (machine
torque > set torque limit) is performed at the value now
shown in the display. The DUT sheds its load: M = 0.

19 Serial interface (SERIAL OTHER)


Available for connection of the control unit PWM
characterisitc method, cat.no. 735 291. As such the
device can be operated on the same PC interface as
the control unit.
20 Serial interface (SERIAL PC)
This interface is electrically isolated and outputs the
speed and torque of the D & B Unit. If the sockets in
the DUT sockets field are connected, also the current
consumption and the voltage supply of the DUT is
transmitted. Control of the control unit can a l s o b e
c a r r i e d o u t u s i n g t h e s o ft w a r e C B M 1 0 V 5 ,
cat. no. 728 421.

28 Pushbutton to display speed limit nSTOP


When operated switchover occurs between stop
speed and current speed. If the stop speed is
displayed, the display flashes. This value can now
be changed using the incremental control knob.

31

Memoria Tcnica
29 3-digit 7-segment display to indicate the torque

error codes. To acknowledge error see RESET (8)!

30 4-digit 7-segment display for the indication of the


speed, the condition of DUT ENABLE output and

32

Memoria Tcnica

3.3.5. Fuente de Alimentacin Variable


La fuente de alimentacin variable servir para alimentar la excitacin y el driver del
motor de corriente continua. La fuente nos da la posibilidad de dar tensin alterna o
continua, adems de poder modificarla de 0 a 250 V.
La fuente est formada por un transformador con un potencimetro, proporcionando una
relacin de transformacin variable. En la salida del transformador hay un rectificador
que elimina la parte negativa, dando en la salida una seal de potencia continua.

Ilustracin 12: Vistas de la fuente de alimentacin variable

En su interior lleva un condensador para filtrar la tensin de salida del rectificador y


conseguir una continua sin rizamiento. Para evitar los picos de intensidad de hasta 50 A
producidos por la presencia del condensador, se provoca que el condensador se cargue a
travs de una resistencia con la intencin de minimizar los efectos de la capacitancia en
la salida. Una vez se haya cargado el condensador el circuito de disparo del rel se
activar cortocircuitando la resistencia para en la salida haya el valor deseado de
tensin.

Ilustracin 13: Circuito de proteccin de sobreintensidad y fotografa de situacin en la fuente variable

33

Memoria Tcnica

3.4. Elementos de Software


3.4.1. Herramienta GUIDE
Para el desarrollo de la aplicacin en tiempo real, se trabaja con una herramienta de
MATLAB llamada GUIDE (Graphical Use Interface Development Environment). Esta
herramienta esta pensada para desarrollar GUIs (Graphical User Interfaces) fcil y
rpidamente haciendo sencillo el diseo y presentacin de los controles de la interfaz,
reduciendo la labor en el momento de seleccionar, deshacer, arrastrar y centrar
controles, as como la personalizacin de las propiedades de estos.
El proceso a seguir para el desarrollo de un programa mediante GUIDE es que una vez
se tienen todos los controles en posicin, se editan las funciones de llamada (Callback)
de cada uno de ellos, escribiendo el cdigo de MATLAB que se ejecutar cuando el
control sea utilizado. GUIDE est diseado para hacer menos tedioso el proceso de
desarrollo de la interfaz grfica, para ello cuenta con un editor de propiedades (property
editor) con el que se podr modificar en cualquier momento los nombres, valores por
defecto y las propiedades de los elementos.
Para poder acceder a la herramienta GUIDE se puede de tres maneras:
 Tecleando el comando >>guide desde el prompt de Matlab
 A travs del Launch Pad
 Pinchando en File -> New ->GUI dentro de Matlab, como se muestra a
continuacin

Ilustracin 14: Inicio de la aplicacin GUIDE mediante men

Una vez iniciemos la aplicacin aparece la siguiente interfaz, y nos pedir si queremos
realizar una aplicacin nueva o bien abrir una existente. En el caso que se cree una
nueva aplicacin se puede partir de aplicaciones prefabricadas, como por ejemplo: con
controles, con una pantalla para grficos y men, o un cuadro de dialogo.

34

Memoria Tcnica

Ilustracin 15: Men de la herramienta GUIDE

En este caso se pide que comience el GUI en blanco, siendo nosotros quienes tengamos
absoluto control y seamos quienes aadamos los controles que necesitemos. Aparecer
la ventana de la Ilustracin 16.

11

10

13

12

17

15
16

20

18

21

19

14

Ilustracin 16: Editor de la GUI en blanco y sus iconas

Las correspondencias de los botones se han ordenado en la Tabla 9 a modo de resumen


con un breve apunte de su utilizacin.

35

Memoria Tcnica

Item
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

Tag
Select
Push Button
Slider
Radio Button
Check Box
Edit Box
Static Text
Pop-up menu
List Box
Toggle Button
Axes
Panel
Button Group
Activex
Control
Align objects
Menu Editor
Tab order
Editor
M-file Editor
Property
inspector
Object
Browser
Run

Detalles
Seleccin de un objeto
Botn
Barra de desplazamiento
Botn de seleccin circular
Botn de seleccin tipo lista
Casilla de edicin
Casilla de texto fijo
Men desplegable
Men en lista
Botn con memoria
Pantalla para visualizacin de grficos
Opcin para generar un panel
Opcin para agrupar botones
Opcin para generar controles ActiveX
Opcin para alinear objetos
Editor de opciones de men
Opcin para cambiar el orden de las ventanas en el
editor
Editor de los ficheros .m
Editor propiedades de los controles
Buscador de Objetos
Botn de compilacin

Tabla 9: Explicacin de los botones de la Ilustracin 16

Cuando se crea una GUI se generan dos ficheros:




Un archivo .FIG, que es el que contiene los elementos grficos as como las
propiedades de la interfaz.
Un archivo .M que es el contiene el cdigo con las correspondencias de los
botones de control de la interfaz. Cada vez que se introduzca un elemento
grfico en el .FIG se generar unas lneas de programa automticamente
asociadas a ese tipo de control. Estas lneas de programas son vacas, es decir, es
como un contenedor que necesita que ser llenado para llevar a cabo alguna
accin durante la ejecucin del programa. Este modo de trabajo es como el de
LABWINDOWS, VISUAL BASIC, etc

Para que haya una correspondencia entre elemento grfico y el cdigo, cada vez que se
pulse un botn se genera un evento, que provoca la ejecucin de la funcin asociada a
este elemento. Esta funcin es la callback que se anunciaba con anterioridad.
A travs de la Ilustracin 16 se pueden diferenciar 2 barras: la paleta de componentes, y
la de iconos varios.

36

Memoria Tcnica

3.4.1.1. Paleta de componentes


Siguiendo la Ilustracin 16, la paleta de componentes va desde los nmero 1 hasta el 14.
Son los controles (objetos) que aparecen en la GUI.

3.4.1.2. Iconos varios


Siguiendo la Ilustracin 16, la paleta de componentes va desde los nmero 15 hasta el
21.

3.4.2. Estructura de los grficos en MATLAB


Para entender mejor el entorno de programacin se explicar las jerarquas de los
grficos, identificadores, propiedades de objetos, etc

3.4.2.1. Jerarqua de MATLAB


Los grficos en MATLAB tienen una jerarqua formada por objetos de distintos tipos.
Esta jerarqua tiene una distribucin de rbol con el aspecto como el que se muestra en
la Ilustracin 17.
Panel
Pantalla

Ventana 1
(figure)

Ejes 1 (axes)

Ejes 2 (axes)

Lneas (lines)

Ventana 2
(figure)

Controles
(uicontrol)

Superfcies
(surfaces)

Mens
(uimenu)

Texto (text)

Imagen
(image)

Polgono
(patch)

Ilustracin 17: Diagrama de bloques de la jerarqua de MATLAB

El objeto ms general es la pantalla o panel, es la raz de todos los dems y solo puede
haber un objeto pantalla. Una pantalla puede contener una o ms ventanas (figures). A
su vez cada una de las ventanas puede tener uno o ms ejes de coordenadas (axes) en los
que se puede representar objetos de ms bajo nivel. Una ventana puede tambin puede
tener tambin controles (uicontrols) como botones de seleccin o de opcin, y mens.
Finalmente, los ejes pueden contener los cinco tipos de elementos grficos que permite
37

Memoria Tcnica
MATLAB: lneas (lines), polgonos (patch), superficies (surfaces), imgenes tipo
bitmap (image) y texto (text). La jerarqua de objetos indica que en MATLAB hay
objetos padre e hijos. Por ejemplo, el objeto ventana es hijo de pantalla, y a su vez cada
objeto ventana es padre de los ejes. En el momento que se borre un objeto de MATLAB
se borrarn todos todos los objetos que son descendientes. Es decir, al borrar el objeto
eje se borrarn las lneas, superficies, texto, imagen y polgono.

3.4.2.2. Identificadores (handles)


Cada uno de los objetos de MATLAB tiene un identificador nico a los que se les
llamar handle o id. Algunos grficos tienen muchos objetos, en cuyo caso tienen
mltiples handles. El objeto raz (pantalla) es siempre nico y su identificador siempre
es cero. El identificador de las ventanas siempre es un entero que aparece en la barra de
nombre de dicha ventana. Los identificadores de otros elementos grficos son nmeros
float.
En Matlab puede haber mltiples ventanas abiertas pero solo una esta activa. Cada una
de estas ventanas puede tener ejes abiertos, pero solo se dibuja en los ejes activos. Los
identificadores de la ventana activa, de los ejes activos y del objeto activo se pueden
obtener con los siguientes comandos:
 gcf (get current figure): Devuelve el entero que es el handle de la ventana activa.
 gca(get currant axis): Devuelve handle de los ejes activos.
 gco(get current object): Devuelve handle del objeto activo.
 delete handle: borra el objeto correspondiente y todos sus hijos.

3.4.2.3. Propiedades de los objetos


Los objetos de Matlab pueden tener distintas propiedades:
 Children
 Clipling
 Parent
 Type
 UserData
 Visible
Las propiedades tienen valores por omisin que se utilizan cuando el usuario no indique
otra cosa. Es posible cambiar las propiedades por omisin y tambin devolverles el
valor original. Hay propiedades que solo pueden ser consultados sus valores, sin poder
ser modificados, y otros que tendrn un conjunto limitado de valores (p.e. on/off).

38

Memoria Tcnica

4. Memoria de clculo
En esta parte se ver la parte prctica del proyecto, en la que se explicar la
configuracin de hardware y de software, as como los clculos realizados para el
diseo del controlador y la explicacin del programa mediante un diagrama de flujo.

4.1. Configuracin de los elementos Hardware


Antes de nada hay que tener claro cuales son los elementos que se van a utilizar para
que el motor de corriente continua pueda girar, y que se pueda implantar un lazo de
velocidad y un controlador que haga cumplir nuestras exigencias de diseo. Tambin
ser de suma importancia establecer las conexiones y asignar las entradas/salidas en la
placa de adquisicin de datos.

4.1.1. Esquema de conexionado


Siguiendo lo establecido en el apartado 3.3, y utilizando los elementos descritos en el,
tenemos el siguiente esquema de conexionado con el que se ha desarrollado la
aplicacin en tiempo real. Este esquema corresponde a un sistema realimentado.
DRIVER

VARIADOR DE TENSIN
220Vca
Vcc+

SH_OUT
0V

IDE20-E/S

SH_IN

Vcc_puente
GND_puente
M+
M-

F1

M+

M-

0V
MODULO
CONTROL
n (V)

9PIN 25 PIN
CON CON

SALIDAS

Varmadura

ENTRADAS

F2

Vexcitacin

25 PIN 9PIN
CON CON

MOTOR+CARGA

PLACA DAQ

Ilustracin 18: Esquema de conexionado

En la Ilustracin 19 se muestra el puente del modulo de velocidad de Leybold-Didactic,


de esta manera se evita el error 6, explicado en el apartado 3.3.3.3.

39

Memoria Tcnica

Ilustracin 19: Puente de de entrada de sensado de temperatura

4.1.2. Tabla de conexiones


A continuacin se muestra una tabla resumen que engloba el conexionado desde el IDE
de 20 pines hasta la placa de adquisicin (DAQ) que hay en la Ilustracin 18, as como:
los pines de la DAQ y el rango de tensin, diferenciando las entradas de las salidas.

1
2
3
4
5
1
2
3

Descripcin de la seal
ENTRADAS
Medida Sensor Hall
Sobrecorriente Shall y
MC33153
Cruce Rama B
Cruce Rama A
Lectura Velocidad (modulo
ext.)
SALIDAS
Velocidad
Rampa
Sentido de giro

Pin
IDE
Placa# Pin DAQ#

Rango
Tensin
(V)

20 ACH0

12

11 DIO3
12 DIO2
13 DIO1

0-5
0-5
0-5

- ACH1

10

19 DAC0OUT
18 DAC1OUT
17 DIO0

Tabla 10: Resumen de conexiones entre driver y placa DAQ

La distribucin de pines en el conector IDE de 20 pines del driver:

40

0-5
0-5
0-5

Memoria Tcnica

Ilustracin 20: Conector IDE de 20 pines en vista frontal

El listado de pines del conector IDE del driver de corriente continua se muestra en la
siguiente tabla.

NPIN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

IN/OUT de la placa al PC
OUT
OUT
OUT
OUT
N.C.
N.C.
N.C.
N.C.
N.C.
N.C.
OUT
OUT
OUT
IN
OUT
IN
IN
IN
IN
OUT

Descripcin
-12 V
+12 V
GND
+5 V

Sobrecorriente (Shall i MC33153)


Cruce rama B
Cruce rama A
Entrada al pic (libre)
Salida del pic (libre)
reset/rearme por soft (no implement.)
Sentido de giro: 0 izq., 1 derecha
Seal analgico rampa
Seal analgico velocidad
Medida de corriente al Shall (12 V)

Tabla 11: Lista de entradas salidas en el conector IDE de 20 pins del driver cc

4.2. Configuracin elementos de Software


A continuacin se explica como instalar y configurar todos los elementos de MATLAB
para trabajar con la toolbox de real-time.

4.2.1. Instalacin MATLAB


En el caso que haya que instalar MATLAB, hay que tener en cuenta que durante el
proceso hay que seleccionar la instalacin de SIMULINK y TOOLBOX REAL-TIME.
Es aconsejable una instalacin completa en caso de dudas.

41

Memoria Tcnica

Ilustracin 21: Proceso de instalacin con MATLAB

Una vez concluido el proceso de instalacin es necesario agregar el driver de la


mochila, o dongle, as como tenerla conectada fsicamente al PC, porque es lo que nos
permite arrancar satisfactoriamente la sesin de trabajo. La versin utilizada es
MATLAB R2006a.

4.2.2. Instalacin Compilador


Para poder desarrollar la aplicacin en tiempo real es necesario un compilador que
traduzca las lneas de programa escritas en el fichero .m, as el depurador de Matlab
permitir visualizar los errores, detener el programa en un determinado punto de la
ejecucin, permitir la ejecucin paso a paso, etc.
El compilador es externo, y por lo tanto habr que instalarlo y configurarlo para que
Matlab lo reconozca y pueda trabajar con l. Se instala un compilador C/C++, en
nuestro caso se ha escogido el Visual C/C++, ya que el Open Watcom C/C++ daba
problemas en las pruebas que se realizaron con Matlab.

4.2.3. Configuracin Compilador


Para que Matlab pueda trabajar correctamente y reconozca el compilador habr que
seguir los siguientes pasos:
Teclear el siguiente comando para determinar que compiladores reconoce

>> mex setup


El comando provoca la respuesta:

Please choose your compiler for building external


interface (MEX) files:

42

Memoria Tcnica

Would you like mex to locate installed compilers


[y]/n? y
Le decimos que queremos ver todos los compiladores instalados

Select a compiler:
[1] Lcc C version 2.4.1 in C:\ARCHIVOS DE
PROGRAMA\MATLAB\R2006A\sys\lcc
[2] Open WATCOM C/C++ version 1.3 in c:\watcom
[3] Microsoft Visual C/C++ version 6.0 in c:\visual
[0] None
Compiler:
Se marca la opcin 3, el compilador de Microsoft, y aparece el siguiente mensaje:

Please verify your choices:


Compiler: Microsoft 6.0
Location: C:\visual
Are these correct?([y]/n):
Se confirma con un yes, y se muestra por pantalla siguiente mensaje
confirmando la actualizacin de la opcin.

Trying to update options file: C:\Documents and


Settings\user\Application
Data\MathWorks\MATLAB\R2006a\mexopts.bat
From template:
C:\ARCHIVOS DE
PROGRAMA\MATLAB\R2006A\BIN\win32\mexopts\lccopts.bat
Done . . .
******************************************************
Warning: The file extension of 32-bit Windows MEXfiles was changed
from ".dll" to ".mexw32" in MATLAB 7.1
(R14SP3). The generated
MEX-file will not be found by MATLAB
versions prior to 7.1.
Use the -output option with the ".dll" file
extension to
generate a MEX-file that can be called in
previous versions.
For more information see:
MATLAB 7.1 Release Notes, New File
Extension for MEX-Files on Windows
******************************************************

43

Memoria Tcnica

4.2.4. Instalacin del Kernel Real-Time Windows Target


El kernel del RTWT de la placa es imprescindible para que la aplicacin en tiempo real
se conecte con el sistema operativo Windows y se ejecuten las interrupciones de manera
acorde al tiempo de muestreo seleccionado. El kernel es el gestor de las tareas y los
tiempos de ejecucin de cada una de ellas, sin l no se podra ejecutar ninguna
aplicacin en tiempo real.
Aunque el kernel es copiado automticamente durante el proceso de instalacin, hay
que instalarlo manualmente mediante el siguiente comando:

>>rtwintgt -setup
You are going to install the Real-Time Windows Target
kernel.
Do you want to proceed? [y] :
Se confirma con un yes, entonces el programa confirma la correcta instalacin del
kernel.

The Real-Time Windows Target kernel has been


successfully installed.
Para comprobar la correcta instalacin del kernel y la versin instalada, se teclea el
comando:

>> rtwintgt -version


The installed version of the Real-Time Windows Target
kernel is 2.6.1.

4.2.5. Obtencin de informacin de estado del kernel


Con Real-Time Windows Target disponemos de una herramienta para poder acceder a
la informacin de estado del kernel. Tecleando el siguiente comando:

>> rtwho
Real-Time Windows Target version 2.6.1 (C) The
MathWorks, Inc. 1994-2005
Running on Uniprocessor APIC computer.
MATLAB performance = 100.0%
Kernel timeslice period = 1 ms
En la respuesta que produce debera haber reconocido el driver de la placa de
adquisicin de datos. Para indicarle manualmente el driver de la placa de adquisicin
habr que teclear:

>> rtload

44

Memoria Tcnica

Y aparecer la siguiente ventana:

Ilustracin 22: Pantalla de seleccin manual del driver de la placa de adquisicin de datos

Vamos a la carpeta de Nacional Instruments (NI) y seleccionamos el fichero


correspondiente a nuestra placa: pci-6024e.rwd
Hacemos la comprobacin para ver si ha cogido el driver, y efectivamente nos muestra
el correcto, adems de la direccin que ocupa.

>> rtwho
Real-Time Windows Target version 2.6.1 (C) The
MathWorks, Inc. 1994-2005
Running on Uniprocessor APIC computer.
MATLAB performance = 100.0%
Kernel timeslice period = 1 ms
DRIVERS:
Parameters

Name

Address

National Instruments PCI-6024E

0x2

[0 0 0 0 0]
Para deshacer los cambios existe un comando que deshace la seleccin del driver:

>>rtunload

4.3. Modelado de la planta


Para disear un controlador sobre un sistema real se podra realizar de diferentes
formas: empirricamente o analticamente. Los mtodos empricos se pueden englobar
en 3 grupos: el analtico, el de lazo abierto y el de lazo cerrado. El analtico se basa en
calcular y simular las diferentes acciones, solas y conjuntamente e ir viendo el
comportamiento de la respuesta hasta que sea satisfactoria. El de lazo abierto y el lazo

45

Memoria Tcnica
cerrado son mtodos en que la sintona de los parmetros del controlador se realiza
aplicando las variables obtenidas empricamente sobre las formulas de unas tablas.
El mtodo escogido es el analtico porque se ha pensado que era el ms interesante, ya
que permite utilizar los conocimientos de teora de control y es ms atractivo para el
alumnado. Para la consecucin de este mtodo es necesario determinar la planta de todo
el sistema que controla el motor de corriente continua. Para ello se hacen pruebas en
lazo abierto del sistema segn la Ilustracin 23. Se utiliza la carga y el modulo de
Leybold para obtener la lectura de velocidad.

Ilustracin 23: Diagrama de bloques del sistema

Para capturar los parmetros que definen la respuesta del sistema se utiliza un modelo
en Simulink que permita introducir una consigna y visualizar los valores de la salida,
aunque tambin se utilizado el osciloscopio para asegurar que la respuesta sea correcta.
Los valores de salida permitirn reconstruir y estudiar los valores que definen la
respuesta del motor de corriente contnua en lazo abierto. La frecuencia de muestreo
escogida es superior a 10 veces la frecuencia del sistema, para evitar el fenmeno de
aliasing, y as obtener una buena representacin.

(a)

(b)

46

Memoria Tcnica

(c)

(d)

Ilustracin 24: Modelo creado para la obtencin de la planta y la respuesta obtenida para el escaln
unitario (figura a y b) con un tiempo de muestreo de 0,001s. Y la obtencin de la planta mediante el
osciloscopio (figura c y d).

La respuesta obtenida se aproxima a una funcin de primer orden, cuya expresin y


respuesta caracterstica quedan definidas en la ecuacin ( 10 ) y la Ilustracin 25.

Ilustracin 25: Respuesta de un sistema de primer orden a una entrada de tipo escaln unitaria.

A partir de la grfica de la Ilustracin 24 se obtiene la constante de tiempo que define el


sistema de primer orden de la planta del motor de cc. La constante corresponde al
63,2% del valor final de la respuesta y(t).

G( s) =

( 10 )

K
s +1

A travs del valor final que es 1,1241 se podr obtener el valor de la constante de
tiempo que corresponde al 63,2% del valor final, grficamente el valor es de 0,1763 s.
El valor de la ganancia K se determina mediante el Teorema del Valor Final. Es decir,
se impone en rgimen permanente el valor final de salida conocido.

47

Memoria Tcnica

( 11 )

y ss = lim s Y ( s )
s 0

El valor de K es 6,376. Por tanto la expresin que define el sistema es la siguiente:


G( s) =

( 12 )

6,376
s + 5,762

4.3.1. Discretizacin de la planta


Dado que se trabaja en un sistema digital mediante PC, habr que discretizar la planta
del sistema continuo ( 12 ) para poder disear el controlador discreto. Para discretizar la
planta se aplica el mtodo analtico de la inclusin de un trmino de mantenimiento.

( 13 )

-1 1 e Ts

G ( z ) = Z L
G ( s)

s
t =nT
Se sustituye la expresin ( 12 ) en la ( 13 ) y se obtiene:

( 14 )

1 e Ts 6,376

G ( z ) = Z L -1

s + 5,762 t = nT
s

Descomponiendo en fracciones simples y haciendo la transformada Z se obtiene la


planta discretizada dependiente del tiempo de muestreo.

G ( z ) = 1,1066

( 15 )

1 e 5, 762T
z e 5,762T

4.3.1.1. Frecuencia de muestreo


Para la eleccin de la frecuencia de muestreo habr que recurrir al teorema de NyquistShanon. El teorema establece que la frecuencia mnima de muestreo necesaria para
evitar el aliasing debe ser:
( 16 )

f s > 2 BW
Siendo el ancho de banda:

48

Memoria Tcnica
( 17 )

BW = f max f min

Para nuestro sistema consideramos que f min = 0 , por tanto la expresin ( 16 ) quedar:
( 18 )

f s > 2 f max

El teorema de Nyquist slo indica el valor mnimo necesario para que el muestreo
resulte eficaz. Por encima de este valor, cuanto mayor sea el nmero de muestras
tomadas ms fiable ser la representacin. Cuantas ms muestras se tengan, mejor se
podr reconstruir la seal; aunque, a mayor frecuencia de muestreo mayor ser el ancho
de banda, es decir que necesitaremos mayor nmero de bits, mayor tamao de buffer, lo
que ralentiza el procesado de la seal y encarece el equipo, que necesitar ms memoria,
ms procesador, etc.
Otro factor a tener en cuenta es que aunque se siga aumentando la frecuencia de
muestreo, la calidad de la seal reconstruida no continua incrementndose
indefinidamente. Por ello, la experiencia establece un valor aproximado para determinar
la frecuencia de muestreo.
( 19 )

f s 10 f max

Partiendo de la expresin ( 12 ), que corresponde a la funcin de transferencia continua


que define el sistema del conjunto motor y carga, se extrae la constante de tiempo y se
impone como la inversa de la frecuencia de nuestro sistema. Hay que tener en cuenta
que este parmetro es muy restrictivo porque es el tiempo que tarda en llegar al 63,2%
del valor final, y el valor que nos interesa es el tiempo que tarda en llegar al 100% del
valor final.
La frecuencia del sistema es:

= 0,1763 s f =

( 20 )

= 5,67 Hz

La frecuencia y periodo de muestreo imponiendo ( 19 ) es:


( 21 )

f s = 113,44 Hz Ts 0,0088

4.3.1.2. Efecto aliasing


El efecto aliasing aparece cuando se utiliza una frecuencia de muestreo inferior a la
establecida por el teorema de Nyquist-Shanon, entonces se produce este fenmeno, que
tambin se conoce como solapamiento. El aliasing impide recuperar correctamente la
seal original.

49

Memoria Tcnica

Ilustracin 26: Efecto aliasing

En la Ilustracin 26 se aprecia el resultado de la mala eleccin del tiempo de muetreo.


Los cuadrados corresponden a las muestras recogidas y resiguiendo estos se obtiene que
la seal reconstruida difiere respecto a la original.

4.3.1.3. Funciones de transferencia discretas


Dado que la aplicacin de MATLAB/SIMULINK en tiempo real trabaja mejor para
frecuencias de muestreo menores. Entonces, se puede afirmar que cuanto menor sea la
frecuencia de muestreo:




Mayor es el intervalo de tiempo que se podr visualizar/ejecutar en la aplicacin


en tiempo real.
Mayor es el nmero de bloques que se podrn insertar en Simulink sin errores de
buffer.

Rescatando la expresin ( 15 ) de la transformada Z de la planta calculada anteriormente


confeccionamos la siguiente tabla resumen que servir para el clculo del controlador,
ya que la dinmica y la ganancia del sistema nos variar en funcin del tiempo de
muestreo escogido.

Tiempo de muestreo (s) Funcin de Transferencia Discreta (Z)


0,06196
( 22 )
G( z ) =
0,01
z 0,944
0,00636
( 23 )
G( z) =
0,001
z 0,994
Tabla 12: Funciones de transferencia discreta en funcin del tiempo de muestreo

4.4. Diseo de controladores


Un sistema de control realimentado o tambin conocido como sistema de control en
lazo cerrado es aquel sistema que mantiene una relacin entre la salida y la entrada de
referencia, comparndolas y usando la diferencia como medio de control.
La ventaja de un sistema de control en lazo cerrado es que el uso de la realimentacin
vuelve la respuesta del sistema relativamente insensible a las perturbaciones externas y
50

Memoria Tcnica
a las variaciones internas en los parmetros del sistema. Aunque, en sistemas sin
perturbaciones y donde se conozcan con anticipacin las entradas es aconsejable utilizar
un control en lazo abierto.
Algunos aspectos que habr que tener en cuenta en el diseo del controlador es la
frecuencia de muestreo a seleccionar en la aplicacin en tiempo real, porque afectar a
la planta del sistema, modificando la ganancia y la dinmica del sistema. Por lo tanto, el
diseo de los controladores se har para los tiempos de muestreo reflejados en la Tabla
12, mediante el mtodo de diseo del lugar de las races. A continuacin se muestra la
estructura bsica de un controlador PID discreto.

kp
+
E

+
kiz/(z-1)
+
kd(z-1)/z

Ilustracin 27: Estructura de controlador discreto con acciones proporcional, integral y derivativa

Desarrollando analticamente la Ilustracin 27, se obtiene la funcin de transferencia de


un controlador con todas las acciones (proporcional, integral y derivativa).

H ( z ) (kp + ki + kd ) z 2 (kp + 2 kd ) z + kd
=
E( z)
z2 z

( 24 )

Accin proporcional e integral


( 25 )

H ( z ) (kp + ki) z kp
=
E ( z)
z 1

Accin proporcional
( 26 )

H ( z)
= kp
E( z)

En los siguientes apartados se estudian las acciones del controlador por separado y
combinadas, para la consecucin de un control que nos conserve las propiedades de la
planta original y que realice una gestin adecuada de la velocidad.

51

Memoria Tcnica

4.4.1. Controlador P
La estructura de un controlador P introduce una ganancia a la entrada de la planta. La
estructura es la que se muestra en la Ilustracin 28. Para sistemas de tipo cero, el efecto
del controlador proporcional es el siguiente:
Disminuye el tiempo de subida
Aumenta el sobrepico
No provoca grandes cambios en el tiempo de establecimiento
Disminuye el error en rgimen permanente, pero no lo elimina






R(z)

Controlador

Planta
Y(z)

+
kp

G(z)

Ilustracin 28: Diagrama de bloques del controlador P con la planta del sistema

Para realizar el ajuste de la constante proporcional hay que obtener la funcin de


transferencia en lazo cerrado con la incgnita kp. Mediante la regla de Mason se cierra
el lazo quedando la expresin siguiente.
( 27 )

Y ( z)
kp G ( z )
=
R ( z ) 1 + kp G ( z )
La expresin del error:
E( z) =

( 28 )

R( z )
1 + kp G ( z )

Haciendo el desarrollo de la expresin ( 27 ) y sustituyendo el valor del tiempo de


muestreo, se aplica el Teorema del Valor Final:
( 29 )

( z 1)
Y ( z)
z 1
z

yss = lim

A continuacin se muestra un resumen de los valores obtenidos para cada tiempo de


muestreo. Se considera la entrada como un escaln unitario y el error en estado
estacionario es del 1%, lo que quiere decir que el valor de la salida (yss) es 0,99. El valor
de la constante proporcional se obtiene aislando ( 29 ).

52

Memoria Tcnica

Tiempo de muestreo (s) Valor Constante Proporcional kp


0,01
89,5
0,001
93,4
Tabla 13: Valores kp en funcin del tiempo de muestreo

En este caso, al ser un sistema de primer orden, mirar el lugar de las races no aporta
informacin significativa debido a que no se introduce ningn polo o cero. Por tanto no
habr grandes cambios dentro de los valores de ganancia para los que el sistema es
estable.
-4

Root Locus

Root Locus

x 10

1
6

0.8
0.6

0.4

Imaginary Axis

Imaginary Axis

0.2
0
-0.2

-2

-0.4
-0.6

-4

-0.8
-6

-1
-1

-0.5

0.5

0.9936

0.9938

0.994

0.9942

0.9944

0.9946

0.9948

0.995

Real Axis

Real Axis

Ilustracin 29: Lugar de las races del sistema

Lo que interesa es estudiar la respuesta obtenida con la simulacin.


12

Step Response

Step Response

x 10

1
0.9

0.8
0.7

-5

Amplitude

Amplitude

0.6

-10

0.5
0.4
0.3

-15

0.2
0.1

-20

10

12

14

16

18

20

Time (sec)

10

12

14

16

18

Time (sec)

Ilustracin 30: Respuestas del sistema en lazo cerrado para tiempos 0,01 y 0,001 con sus respectivos
valores calculados de la constante proporcional.

La respuesta obtenida para el valor calculado en el tiempo de muestreo de 0,01


segundos es inestable. Esto es debido a que se ha calculado el valor de la constante
proporcional mediante el teorema del valor final, sin tener en cuenta ningn criterio de
seguimiento para la estabilidad. Al utilizar el valor obtenido a travs del teorema del
valor final, el denominador de la funcin de transferencia en lazo cerrado crece tanto
53

20

Memoria Tcnica
que se hace positivo y mayor que la unidad, es decir que tenemos inestabilidad en
nuestro sistema de primer orden. Habr que utilizar un metodo discreto que permita
dimensionar un valor de kp que obligue al sistema a comportarse de manera estable, el
escogido es el test de Jury.
( 30 )

P ( z ) = a0 z n + a1 z n 1 + ... + a n 1 z + a 0

Las condiciones del test de Jury para un sistema de primer orden:


( 31 )

P (1) > 0
(1) n P (1) > 0

El margen de valores posibles en que el sistema se comportor de manera estable:


31,35 > kp > 0,888
En los resultados obtenidos se puede ver que hay que escoger un valor de la constante
que cumpla nuestras exigencias, es decir, que no haya ni soprepico, ni oscilaciones, que
el valor llegue a la unidad con el mnimo error en estado estacionario posible y lo
suficientemente rapido.
4

1.5

Step Response

Step Response

x 10

2
1.8

1.6
1.4

0.5
Amplitude

Amplitude

1.2

1
0.8

-0.5

0.6
0.4

-1
0.2
0

-1.5
0

50

100

150

200

250

50

100

150

200

250

Time (sec)

Time (sec)

(a) kp = 32

(b) kp = 31

Step Response

Step Response

0.7

0.9

0.6
0.8
0.7

0.5

Amplitude

Amplitude

0.6
0.5
0.4

0.4

0.3

0.3

0.2
0.2

0.1

0.1
0

10

12

14

16

18

20

Time (sec)

10

15

20

25

30

Time (sec)

(c) kp=15

(d) kp = 1

Ilustracin 31: Respuestas simuladas con los valores obtenidos en el test de Jury

54

35

40

45

Memoria Tcnica
Los margenes de estabilidad de la constante proporcional obtenidos con el test de Jury
para el tiempo de muestreo a 0,001 segundos es:
313,52 > kp > 0,943
Los valores definitivos de la constante proporcional teniendo en cuenta la estabilidad se
muestran en la Tabla 14.

Tiempo de muestreo (s) Valor Constante Proporcional kp


0,01
15
0,001
93,4
Tabla 14: Valores kp en funcin del tiempo de muestreo, siendo el sistema estable

A continuacin se muestran los valores reales obtenidos, para un tiempo de muestreo de


0,001 segundos y una consigna de 3.
Linear Simulation Results
3.5

Amplitude

2.5

1.5

0.5

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Time (sec)

(a) Representacin tensin de salida en (b) Representacin tensin de salida en funcin del
funcin del nmero de muestras. Respuesta tiempo. Respuesta simulacin controlador a
real controlador a Ts=0,001s kp=93,4
Ts=0,001s con kp=93,4
6.376

93.4

s+5.762
Step

Gain

Saturation

Transfer Fcn

Zero-Order
Hold

Scope

(c) Representacin tensin de salida en (d) Modelo con controlador proporcional y


funcin del nmero de muestras. Error real saturacin a Ts=0,001s
Controlador a Ts=0,001s
Ilustracin 32: Comparacin entre controlador P real y simulado

55

Memoria Tcnica

En la Ilustracin 32 se puede observar como las caractersticas de las respuestas real y


simulada difieren en que la real tiene sobrepico y tarda ms en alcanzar el valor final, es
diez veces ms lenta. El sobrepico es debido a que la planta real de un motor de
corriente contnua es un segundo orden, en cambio, la de la simulada es una
aproximacin a un primer orden. El retraso en alcanzar el valor final es debido a
saturaciones que se producen en el sistema real, y que no han sido contempladas en la
simulacin. A travs del modelo propuesto en la Ilustracin 32-d se puede explicar el
fenmeno de la saturacin, que es debido a la limitacin de la tensin de control del
driver, que puede oscilar entre los valores de 0 y 5 V. Los resultados obtenidos sobre la
aproximacin de primer orden se muestran en la Ilustracin 33, estos se ajustan a las
reales pero sin sobrepico porque es un primer orden.

Error simulado con saturacin


300

2.5

250

200
Amplitud (V)

Amplitud (V)

Respuesta simulada con saturacin


3

1.5

150

100

0.5

50

0.1

0.2

0.3

0.4

0.5
0.6
Tiempo (s)

0.7

0.8

0.9

0.1

0.2

0.3

0.4

0.5
0.6
Tiempo (s)

0.7

0.8

0.9

(a) Representacin tensin de salida en (b) Representacin tensin de salida en


funcin del tiempo. Respuesta simulacin funcin del tiempo. Error real a
controlador a Ts=0,001s con kp=93,4
Ts=0,001s con kp=93,4
Ilustracin 33: Respuestas obtenidas teniendo en cuenta la saturacin

56

Memoria Tcnica

4.4.2. Controlador PI
El controlador PI, al contener la parte integral, a diferencia del anterior incrementa el
tiempo de establecimiento y elimina el error en estado estacionario. Con la accin
combinada de la parte integral y proporcional habr que reducir el sobrepico y el tiempo
de establecimiento. En la siguiente ilustracin se muestra el esquema de bloques tpico
de un sistema en lazo cerrado con un controlador PI.

R(z)

+
-

Controlador PI

Planta

( kp + ki ) z kp
z 1

G(z)

Y(z)

Ilustracin 34: Diagrama de bloques del controlador PI con la planta del sistema

La expresin del controlador PI:


( 32 )

Y ( z)
z
= kp + ki
R( z )
z 1

Para realizar la sintona del controlador se recurre al mtodo del lugar geomtrico de las
races, combinando las simulaciones con MATLAB como comprobacin. A modo de
ejemplo se utilizar el caso en que el tiempo de muestreo es de 0,001 s.
La planta introduce un polo en 0,994 y, segn la expresin ( 25 ), al introducir el
controlador PI estamos introduciendo un polo en +1 y un cero que habr que decidir su
colocacin para obtener la respuesta deseada. Para la bsqueda de las variables que
definen el sistema se impondr el valor de la constante proporcional como 10. Ahora
quedar buscar el valor de la constante ki. Mediante simulacin se determina que la
mejor posicin del cero del controlador est entre el origen y el polo de la planta, es
decir en 0,98.
Root Locus

x 10

1
0.8

0.6

Root Locus

0.2

Imaginary Axis

Imaginary Axis

0.4

-3

0
-0.2

-1

-2

-0.4
-0.6

-3

-0.8

-4
-1
-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

0.992

Real Axis

0.994

0.996

0.998
Real Axis

Ilustracin 35: Lugar geomtrico de las races de la planta y el controlador

57

1.002

Memoria Tcnica

Las respuestas obtenidas en la simulacin y en la aplicacin Real Time para el tiempo


de muestreo de 0,001 segundos e introduciendo una consigna escaln de 3 se
representan en la Ilustracin 37.
Linear Simulation Results
3

2.5

Amplitude

1.5

0.5

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Time (sec)

(a) Representacin tensin de salida en funcin (b) Representacin tensin de salida en funcin
del nmero de muestras. Respuesta real del tiempo. Respuesta simulacin controlador a
controlador a Ts=0,001s
Ts=0,001s

(c) Representacin tensin de salida en funcin


del nmero de muestras. Error real Controlador
a Ts=0,001s
Ilustracin 36: Comparacin entre controlador PI real y simulado

Se puede comprobar en las ilustraciones a y b, que el diseo se ha realizado


correctamente, aunque en la ejecucin real se alcanza el valor final unas dcimas de
segundo antes que en la simulada. Respecto al diseo del controlador P, se ha
conseguido reducir el error y el sobrepico.
En la Ilustracin 36.c se puede apreciar como el error en la entrada del controlador
decrece hasta alcanzar un valor prximo a cero.
Las funciones de transferencia de los controladores se reflejan en la siguiente tabla.

58

Memoria Tcnica

Tiempo de muestreo (s) Funcin de Transferencia Discreta (Z)


z 0,996
( 33 )
D( z ) =
0,01
z 1
z 0,98
( 34 )
D( z ) =
0,001
z 1
Tabla 15: Funciones de transferencia en funcin del tiempo de muestreo

4.4.3. Limitaciones en la frecuencia de muestreo


La eleccin de la frecuencia de muestreo mxima est sujeta a diferentes parmetros. El
primero es asegurar que se est cumpliendo el teorema de Shanon-Nyquist, es decir que
estamos dentro de la frecuencia mnima (la frecuencia 100 Hz se considera dentro de la
mnima). La segunda concierne a los diferentes parmetros de ejecucin de la aplicacin
en tiempo real como: tiempos inicial y final, nmero de bloques utilizados en el modelo,
as como las caractersticas de velocidad de procesador, RAM y disco duro del
ordenador de sobremesa que se disponga.
Se han realizado diferentes pruebas para la determinacin de la relacin de estos
parmetros, pero sin demasiado xito. Pero si que se ha conseguido establecer unos
mrgenes que reflejan las limitaciones del sistema como se ver ms adelante.
La primera prueba que se ha realizado es poner un modelo muy sencillo con dos
bloques: uno que reciba la seal de entrada procedente de un generador de funciones
exterior y el otro que lo muestre en un bloque Scope. Con esta estructura se han
realizado pruebas a diferentes frecuencias. Se han ordenado los resultados y se han
concentrado en la siguiente tabla resumen.
t representado Npt max.
Duracin
Ts (s)
fs (kHz) (s)
representados (106 s)
Ejecucin
0,0001
10
100
1.000.000
1 Correcto
0,0001
10
200
2.000.000
2 Correcto
0,00001
100
0,01
1.000
1 Correcto
0,00001
100
2
819
2 Error
0,00001
100
1
820
2 Error
0,00001
100
0,01
1.000
2 Correcto
0,00001
100
0,02
2.000
2 Error
0,000001
1000
0,0001
100
2 Error grave
Tabla 16: Ensayos para determinacin de limitaciones en la aplicacin en tiempo real, con MATLAB 7

El valor mostrado en la tercera columna corresponde al intervalo de tiempo que es


representado grficamente en Matlab. La cuarta columna refleja el nmero de puntos
que tiene la variable que se visualizar, o mejor dicho, los puntos que se utilizarn en la
representacin. El parmetro duracin es la capacidad mxima que le hemos establecido

59

Memoria Tcnica
a Matlab para la captura de variables a visualizar. La ltima columna es el indicador si
el sistema ha respuesto correctamente a la frecuencia de trabajo.
Para conocer la relacin entre los parmetros anteriores se ha determinado la siguiente
expresin:
Npt =

( 35 )

pt
t
Ts

Donde:
Npt: Es el numero total de puntos que se pueden visualizar durante la ejecucin de la
aplicacin en tiempo real.
pt: Es el numero de puntos que se capturan por intervalo de tiempo muestreado. Por
defecto es igual a la unidad, y es aconsejable que se deje as.
Ts: Es el periodo de muestreo seleccionado en la aplicacin en tiempo real.

t: Es el intervalo de tiempo total que se desea representar en la aplicacin en tiempo


real. Es la diferencia entre el tiempo inicial y final seleccionado por el usuario en la
apliacin en tiempo real.
La expresin ( 35 ) tiene matices, ya que est acotada por otras dos expresiones. Una es
la limitacin que tiene el sistema en cuanto a la velocidad de capturar puntos por unidad
de tiempo, se ha decido llamarlo slew rate (SR) como en los operacionales.
SR =

( 36 )

Npt
[ puntos ]
=
t
[segundos ]

La otra expresin sera la que resultara de las expresiones ( 35 ) y ( 36 ), el intervalo


mximo de tiempo representable para un determinado periodo de muestreo. Se
considera pt = 1.
t max =

( 37 )

Ts Npt
= Ts 2 SR
pt

Estas expresiones funcionan en la teora, pero en la prctica vemos que no se cumplen


porque existen limitaciones de memoria del sistema de adquisicin con la aplicacin.
Puede suceder que determinemos un SR para un determinado modelo, y que no sirva en
para otro modelo diferente. Esto es debido a que le afecta el nmero de bloques
utilizados en Simulink, los procesos que corren detrs de la aplicacin Matlab, los
recursos que disponga la mquina, la versin de Matlab y todas sus herramientas.

60

Memoria Tcnica

4.5. Funcionamiento del interfaz grfico


A continuacin se presenta el interfaz grfico realizado con la herramienta de Matlab,
GUIDE. El interfaz permitir controlar la velocidad de un motor y su carga en lazo
cerrado, pudiendo modificar parmetros como: velocidad, rampa, sentido de giro,
valores de controlador, tiempo de simulacin, tiempo de muestreo, etc. y una vez
acabada la simulacin se podrn visualizar los parmetros y grabarlos en un fichero
.MAT. Otra caracterstica interesante es poder decirle al programa si queremos trabajar
en lazo abierto o cerrado, segn convenga. Ms adelante se explicar con detalle que
opciones tiene el programa, como trabaja, y cual es el cdigo que lo hace funcionar.
Para hacer mucho ms ameno el seguimiento del funcionamiento de la aplicacin se
divide el programa segn las partes ms relevantes, que son las siguientes:










Eleccin del modelo de trabajo


Parmetros de entrada
Parmetros del controlador
Parmetros de ejecucin
Visualizacin de datos
Guardar datos
Casilla de dilogo
Funcin de cierre de programa

Ilustracin 37: Interfaz grfica en fase de diseo

61

Memoria Tcnica

4.5.1. Eleccin del modelo de trabajo


A travs de las casillas de seleccin se puede escoger el modelo de Simulink con el que
se desea trabajar. Existen tres opciones:





Modelo en lazo cerrado con controlador discreto (en Z) y con carga


Modelo en lazo abierto
Modelo en lazo cerrado sin controlador y con carga

A continuacin se explican ms en profundidad cada una de estas opciones.

4.5.1.1. Modelo en lazo cerrado con controlador y carga


Esta es la eleccin por defecto con la que arranca el programa. El modelo que se abre es
el fichero rtw.mdl y tiene el aspecto de la Ilustracin 38. Por defecto arranca con un
controlador PI diseado para las condiciones con las que inicia. Aunque tambin es
posible disear cualquier otro controlador que tenga las partes proporcional, integral y/o
derivativa.
El patrn utilizado en este modelo es el mismo que se utiliza en los otros modelos, de
esta manera las rutas y los nombres de las variables y bloques sern aprovechables en la
parte de programacin, lo que simplificar mucho el trabajo.

Ilustracin 38: Aspecto del modelo de Simulink en lazo cerrado con controlador y con carga

Observando la parte principal del modelo, es decir el control, podemos ver que
mediante la variacin del bloque Constant se podr modificar el valor del escaln. El

62

Memoria Tcnica
bloque Sortida9 permitir visualizar las diferencias entre el valor de entrada respecto al
de salida. Mediante el bloque Sortida2 se podr visualizar el error del controlador. Se ha
puesto un limitador en la salida para absorber cualquier variacin imprevista superior a
unos valores de 0 a 5 V. De esta manera se protege la entrada del driver CC que trabaja
con rangos de tensiones TTL. Despus del limitador se encuentra el bloque de salida
que inyectar el valor de la velocidad al driver de cc en ese instante de tiempo. El valor
real de la velocidad del conjunto motor+carga es capturado por el tacmetro de la carga
y reinyectado en el sumador para volver a calcular el valor velocidad en el siguiente
instante de tiempo, haciendo que el error tienda a cero.
El valor de la constante Constante2 es el valor de la rampa, que como hemos dicho
anteriormente el driver cc trabaja con lgica TTL, los valores admisibles son de 0 a 5 V
y para que se cumpla esta condicin esta el limitador. Cuanto ms alto sea el valor de la
constante ms lenta ser la aceleracin y la frenada.
El valor de la constante Constant1 es el valor para modificar el sentido de giro, que en
este modelo la opcin queda deshabilitada a travs del GUI debido a conflictos con el
modulo D&B de LEYBOLD.
A mano de derecha de la Ilustracin 38 quedan las entradas:






Sobreintensidad en la rama A
Sobreintensidad en la rama B
Sobreintensidad en el sensor Hall
Medicin procedente del sensor Hall

Todos los valores se guardan y pueden ser visualizados a posteriori.

4.5.1.2. Modelo en lazo abierto


Esta es la segunda eleccin posible y el fichero que abre es el rtwol.mdl, y en caso que
existiera cualquier otro modelo abierto lo cerrara guardando los cambios. El modelo no
tiene ningn control como es lgico, ya que es un lazo abierto. El patrn que sigue es
como el explicado en el anterior apartado.

63

Memoria Tcnica

Ilustracin 39: Aspecto del modelo en lazo abierto

En esta opcin es posible realizar cambios en el sentido de giro del motor, adems de
poder regular la rampa de aceleracin y deceleracin como se puede hacer en los otros
modelos.

Ilustracin 40: Inversin de giro y aceleracin/deceleracin del motor cc.

La Ilustracin 40 muestra el cambio en el sentido de giro del motor, se puede ver como
primeramente como acelera a una rampa de valor 2 hasta conseguir el valor de la
consigna que es 4, es a partir de este momento que se solicita el cambio de giro. Cuando
se realiza el cambio de giro sera de esperar que fuera decrementando hasta el valor de
-4, pero por lo contrario el tramo de 2 a -2 lo realiza de manera vertiginosa. Cuando
alcanza el valor de -4 lo obligamos a ir a consigna cero.

4.5.1.3. Modelo en lazo cerrado sin controlador y con carga


Esta es la tercera opcin posible, y abrir el modelo rtw_cl2.mdl que es una rplica del
rtw.mdl pero sin controlador. De esta manera se deja una puerta abierta a un posible
control diferente al Z, como por ejemplo mediante la utilizacin de lgica borrosa.
64

Memoria Tcnica

Ilustracin 41: Aspecto del modelo en lazo cerrado sin controlador y con carga

Para conocer los detalles del modelo ir al apartado 4.5.1.1, ya que siguen el mismo
patrn.

4.5.2. Parmetros de entrada


La interfaz de los parmetros de entrada permite modificar la consigna, la rampa, el
sentido de giro (solo en lazo abierto) y el tiempo de retardo, de cualquiera de los tres
modelos.

Ilustracin 42: Aspecto de la interfaz para la entrada de parmetros de entrada

Cuando se abra un modelo en lazo cerrado, como por ejemplo la opcin 1 3, el botn
del sentido de giro permanecer invisible.

4.5.3. Parmetros del controlador


Mediante el marco de los parmetros del controlador es posible modificar las constantes
de este, y ser el programa el encargado de calcular la funcin de transferencia del
control. Esta opcin ha sido pensada para hacer un ajuste manual afinando
65

Memoria Tcnica
empricamente el diseo, o bien simplemente para ver el efecto de la variacin de una
accin (proporcional, integral o derivativa). Tambin existe la posibilidad de hacer un
ajuste manual directamente sobre el bloque de la funcin de transferencia. Esta ltima
opcin se ha contemplado para el caso que se haga un diseo en papel del controlador,
en que sea calculado todo el bloque.

Ilustracin 43: Aspecto del marco del ajuste de parmetros de controlador

4.5.4. Parmetros de ejecucin


La interfaz de los parmetros de ejecucin permite modificar el instante de tiempo
inicial, final, el tiempo de muestreo, la conexin de la placa con la aplicacin real time,
la ejecucin del modelo, la parada de la ejecucin y la compilacin. La compilacin es
necesaria cada vez que se realice algn cambio en modelo, es decir, cada vez que se
cambien conexiones, se generen bloques nuevos o se cambien caractersticas de
simulacin como el periodo de muestreo o los valores de tiempo inicial o final. No es
necesario realizar una compilacin cuando se realice el cambio del Value de los
bloques, por ejemplo, cuando se cambie el valor de la consigna del escaln, o la rampa,
o del sentido de giro.

Ilustracin 44: Marco con los parmetros de ejecucin

Existe la posibilidad de conectar la placa y ejecutar la aplicacin bajo un mismo control,


como tambin existe la posibilidad de parar la ejecucin.

4.5.5. Visualizacin de grficos


Para la visualizacin de grficos se ha implementado esta herramienta, que permitir
visualizar datos en tiempo real (mediante el bloque Scope) y en post-procesado
(mediante la GUI). Una limitacin importante en Matlab es que no podemos capturar o
visualizar datos si la ejecucin en tiempo real no ha finalizado. Esto hecho solo se
produce trabajando en modo externo y no trabajando en modo normal. Lo que
ocurre cuando se hace una ejecucin en tiempo real (en modo externo) es que las
variables no son accesibles hasta que ha finalizado el tiempo de ejecucin, es solo en

66

Memoria Tcnica
ese momento cuando los datos son pasados al Workspace de Matlab y pueden ser
utilizados para hacer grficas u operaciones. Esta limitacin ha sido confirmada por el
servicio tcnico de Matlab, que respondi que en futuras versiones lo resolveran
(consultar anexos de cartas a Matlab).

Ilustracin 45: Aspecto de la interfaz para la visualizacin de datos

4.5.5.1. Opciones para la visualizacin de datos de entrada/salida


Para visualizar datos de entrada/salida existen tres posibles soluciones:
 Opcin AND: Cada vez que se selecciona este radiobutton nos permite
visualizar grficos conservando el anterior cada vez que se selecciona un dato
en la lista desplegable. Pudiendo visualizar de 1 hasta n grficos en la ventana,
solo se borrar la pantalla cuando se le indique a travs del botn de borrar
pantalla. A cada grfico se le asigna un color diferente para poder ser
diferenciados cuando estn solapados. La visualizacin es a post-procesado.

Opcin OR: Esta opcin solo permite la visualizacin de un grfico a la vez.


Cuando haya un grfico en pantalla y se seleccione un dato a visualizar, el
nuevo machacar al anterior. El color de los valores grficos por defecto es el
azul. La visualizacin es a post-procesado.

Opcin Scope: Esta opcin se diferencia de las anteriores porqu permite la


visualizacin de datos en tiempo real. Es posible accediendo directamente al
bloque Scope que tenemos en el modelo.

67

Memoria Tcnica

Ilustracin 46: Opciones de grfico de las de la interfaz, opcin AND y Scope respectivamente

4.5.5.2. Seleccin datos a visualizar


Los pasos para visualizar un grfico son: seleccionar el modo de visualizacin (ANDOR-Scope), seleccionar el dato que queremos en el grfico mediante la listbox:











Velocidad
Error Controlador
Sensor Hall
Sobreintensidad Rama A
Sobreintensidad Rama B
Sobreintensidad Sensor Hall
Entrada
Velocidad de Salida Control
Velocidad Salida Control sin limitador, y

Por ltimo confirmar con el botn Plota.

Ilustracin 47: Lista desplegable de variables a visualizar

4.5.5.3. Opciones de zoom y de centrado


Cuando se tenga un grfico en pantalla se podr hacer un zoom para ampliar una regin
de visualizacin de datos (zoom out), o bien para reducirla (zoom in). A parte de todo
estos podemos marcar los limites del grfico que ms interese marcando las
68

Memoria Tcnica
coordenadas: Xmax, Xmin, Ymax e Ymin. Para que los valores tengan efecto se deber
deseleccionar la configuracin automtica de los ejes (el radiobutton Eixos Auto).
Cuando se marque la opcin de Eixos Auto el grfico volver a tener los valores por
defecto, es decir se visualizar todo el grfico. En ambos casos se deber confirmar con
el botn plota.

Ilustracin 48: Marco con las opciones para visualizar las zonas que sean de inters

4.5.6. Guardar y cargar datos


Existe la posibilidad de guardar los datos procedentes de la ejecucin en tiempo real en
un fichero .MAT. Como tambin existe la posibilidad de recuperar esos datos y
visualizarlos en la GUI. Para poder guardar los datos habr que:





Especificar la ruta donde se desea guardar los ficheros, se aconseja que sea la
que coge por defecto, que es la del directorio de trabajo de nuestra sesin de
trabajo con Matlab.
Escribir el nombre del fichero que se desea guardar. En caso que no se escriba
un nombre escoger el nombre por defecto matlab.dat.
Pulsar el botn de guardar.

Para poder cargar un fichero el procedimiento es similar:




Especificar la ruta donde se encuentra el fichero.


Escribir el nombre del fichero que deseamos cargar. En caso que no exista o no
se introduzca un nombre en la casilla, la ventana de dialogo se quejar y nos
pedir que volvamos a introducir un nombre correcto, o que lo introduzcamos
respectivamente.
Pulsar el botn de cargar.

Ilustracin 49: Aspecto de la interfaz antes de grabar o cargar y una vez se carga la variable y su ruta

69

Memoria Tcnica

4.5.7. Casilla de dilogo


En ocasiones se hace interesante que la aplicacin en tiempo real establezca mensajes
de respuesta a acciones realizadas por el usuario. Es decir, que de mensajes de error, que
avise el inicio o fin de las compilaciones, o la conexin y desconexin con la placa de
adquisicin, etc. Pues bien, se ha contemplado esta opcin mediante la casilla de
dilogo, que no es nada ms que un texto esttico. Esto quiere decir que es un texto que
puede ser ledo, pero no puede ser modificado por el usuario.

Ilustracin 50: Ejemplos de mensajes generados por la aplicacin en la casilla de dilogo

4.5.8. Botones para cerrar la aplicacin

Ilustracin 51: Botones para cerrar la aplicacin

En la Ilustracin 51 se pueden apreciar los botones que nos permiten cerrar la aplicacin
de tiempo real, es decir, la GUI y el modelo que se est utilizando. La diferencia entre
Tanca y Tanca i Salva, es que el primero cierra la aplicacin sin guardar cambios y el
segundo cierra guardando los cambios producidos en el modelo. Hay que remarcar que
al arrancar la GUI la siguiente vez, se actualizarn todos los datos del modelo en los
campos correspondientes de la aplicacin: consigna, valor retraso, tiempos de muestreo,
inicial y final, etc.

4.5.9. Diagrama de flujo general


A continuacin se muestra el diagrama de bloques general de la aplicacin desarrollada
para trabajar en tiempo real. El siguiente diagrama no intenta entrar en detalle, sino
resumir el principio de funcionamiento de la GUI.

70

Memoria Tcnica

Inicio de Programa:
RTWT_OpeningFcn

No

Lazo
Cerrado? Sin
Control

Lazo
Cerrado?
Control Z

No

Si

No

Lazo
Abierto?

Si

Si

Abrir modelo:
rtw_cl2
(si es que no est abierto)

Abrir modelo:
rtw_cl
(si es que no est abierto)

Abrir modelo:
rtw
(si es que no est abierto)

- Captura de la ruta de trabajo


- Transferencia de parametros
modelo a las editboxes de la
aplicacin
- Invisibilidad de los comandos:
inversin de giro y parametros
del controlador.
- Limitacin puntos simulacin
- Inicializacin de variables
generales

- Captura de la ruta de trabajo


- Transferencia de parametros
modelo a las editboxes de la
aplicacin
- Visibilidad de los comandos:
inversin de giro y parametros
del controlador.
- Limitacin puntos simulacin
- Inicializacin de variables
generales

- Captura de la ruta de trabajo


- Transferencia de parametros
modelo a las editboxes de la
aplicacin
- Invisibilidad de los comandos:
inversin de giro y parametros
del controlador.
- Limitacin puntos simulacin
- Inicializacin de variables
generales

Transferencia de los valores de las editboxes a el modelo en funcionamiento

Si

Evento?

No

Ejecucin de la accin demandada y actualizacin de las variables

Cerrar?

Si

Fin Programa

Si

Ilustracin 52: Diagrama de flujo general de la GUI

71

Cerrar
Salvando?

Memoria Tcnica

4.6. Cdigo fuente de la GUI


De la misma manera que en el apartado anterior se separaban los elementos que
componen la GUI para poder explicar el funcionamiento de esta. En este apartado se
separa el cdigo que compone la GUI para poder hacer ms inteligible los contenidos.
Las partes que los compondrn se ajustarn bastante a la estructura anterior, es
interesante que as sea, ya que permitir relacionar ms fcilmente la operatibilidad de
la GUI y su cdigo.









Funcin de apertura
Parmetros de entrada
Parmetros del controlador
Parmetros de ejecucin
Visualizacin de grficos
Guardar y cargar datos
Ventana de dilogo y cerrar aplicacin

4.6.1. Funcin de Apertura


En el momento en que se inicie el programa de la aplicacin en tiempo real, la primera
funcin que se ejecuta es la OpeningFcn, o traducido literalmente funcin de apertura.
Dentro de ella se inicializan las variables globales que indican con que modelo se
comienza la aplicacin en tiempo real. El modelo que se arranca por defecto es lazo
cerrado con controlador. Posteriormente se hace una llamada a la funcin inici y
actualitza.
function RTWT_OpeningFcn(hObject, eventdata, handles, varargin)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% % % Se comienza con el modelo el lazo cerrado y controlador por defecto
set(handles.rboto_cl,'Value',1);
cl=1;ol=0;cl2=0;
assignin('base','cl',cl);
assignin('base','ol',ol);
assignin('base','cl2',cl2);
inici(handles);
actualitza(handles);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Choose default command line output for RTWT
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);

La funcin inici se ejecuta al arrancar la aplicacin por primera vez y lo que hace es
capturar todos los valores que tiene el modelo y pasarlos a la GUI o aplicacin. Esta

72

Memoria Tcnica
rutina se encarga de capturar la ruta de trabajo que ser la utilizada para grabar los datos
del Wokspace de Matlab, es decir, los parmetros obtenidos en la ejecucin que podrn
ser visualizados posteriormente y siempre que se desee.
Como se ha dicho con anterioridad, la rutina se encarga de capturar los valores del
modelo y los pone dentro de las editboxes correspondientes. Por ejemplo, se capturan
los valores de:








Consigna
Rampa
Tiempo de retardo
Valor de la inversin de giro
Inicializacin del contador del grid.
Inicializacin de los valores para plotar por defecto

Antes de capturar los valores del modelo determinar que modelo es el que est abierto
para saber la ruta donde buscarlos.
function inici(handles)
cl=evalin('base','cl');
ol=evalin('base','ol');
cl2=evalin('base','cl2');
% Se abre por primera vez el modelo para coger los valores
% en el modelo y ponerlos en la GUI, en el caso que sea la
% se haya abierto el programa.
% % % % % % % % % % % % INICIO PARAM.GENERALES % % % % % %
% %
% Se capturan los valores de los parametros generales, son
no
% dependen del modelo escogido

que tiene
primera vez
% % % % % % %
aquellos que

% Se coge la ruta por defecto de matlab para poder grabar las variables
en
% un fichero .MAT
ruta=cd;
set(handles.edit_ruta,'String',ruta);
% Se hace invisible la editbox del nombre de la variable a guardar en el
WS
set(handles.edit_nomvar,'Visible','off');
% Variable para el grid para que actue como un pushbutton pero sin
% enclavarse
cnt=0;
assignin('base','cnt',cnt);
% Parametros para plotar por defecto
set(handles.rboto_and,'Value',1);
set(handles.rboto_or,'Value',0);
set(handles.rboto_scope,'Value',0);
set(handles.popupmenu1,'Value',1);
pand=1;or=0;scope_stat=0;popval=1;
assignin('base','pand',pand);
assignin('base','or',or);
assignin('base','scope',scope_stat);
assignin('base','popval',popval);
% % % % % % % % % % % % FIN PARAM.GENERALES % % % % % % % % % % % % % %
% % %
if cl==1

73

Memoria Tcnica

if isempty(find_system('Name','rtw'))open_system('rtw');end
if isempty(find_system('Name','rtwol')) else
close_system('rtwol',1);end
if isempty(find_system('Name','rtw_cl2')) else
close_system('rtw_cl2',1);end
% Se cogen los valores del modelo y se ponen dentro de las editboxes
% Consigna
set(handles.edit_consigna,'String',get_param('rtw/Constant','Value'));
% Rampa
set(handles.edit_rampa,'String',get_param('rtw/Constant2','Value'));
% Tiempo de retardo para la rampa y el escaln
set(handles.edit_td, 'String',get_param('rtw/Step','time'));
limitapunts(handles);
controlador(handles);
end
if ol==1
if isempty(find_system('Name','rtwol'))open_system('rtwol');end
if isempty(find_system('Name','rtw')) else close_system('rtw',1);end
if isempty(find_system('Name','rtw_cl2')) else
close_system('rtw_cl2',1);end
% Se cogen los valores del modelo y se ponen dentro de las editboxes
% Consigna
set(handles.edit_consigna,'String',get_param('rtwol/Constant','Value'));
% Rampa
set(handles.edit_rampa,'String',get_param('rtwol/Constant2','Value'));
% Tiempo de retardo para la rampa y el escaln
set(handles.edit_td, 'String',get_param('rtwol/Step','time'));
%Sentido de giro
set(handles.tboto_inversio,'Value',str2num(get_param('rtwol/Constant1','
Value')));
limitapunts(handles);
end
if cl2==1
if isempty(find_system('Name','rtw_cl2'))open_system('rtw_cl2');end
if isempty(find_system('Name','rtwol')) else
close_system('rtwol',1);end
if isempty(find_system('Name','rtw')) else close_system('rtw',1);end
% Se cogen los valores del modelo y se ponen dentro de las editboxes
% Consigna
set(handles.edit_consigna,'String',get_param('rtw_cl2/Constant','Value')
);
% Rampa
set(handles.edit_rampa,'String',get_param('rtw_cl2/Constant2','Value'));
% Tiempo de retardo para la rampa y el escaln
set(handles.edit_td, 'String',get_param('rtw_cl2/Step','time'));
limitapunts(handles);
end

74

Memoria Tcnica
La rutina actualitza viene a ser la inversa de la rutina inici, ya que su funcin es capturar
los valores que se encuentran dentro de las editboxes y ponerlos dentro de los bloques
del modelo para que los cambios realizados en la GUI tengan efecto durante la
ejecucin de la aplicacin. La filosofa de funcionamiento es la misma que en la rutina
inici, donde tenemos unos parmetros generales y unos parmetros especficos de cada
modelo. A continuacin se pueden ver las lneas de programa que detallan lo explicado.
function actualitza(handles)
ol=evalin('base','ol');
cl=evalin('base','cl');
cl2=evalin('base','cl2');
if cl==1
if isempty(find_system('Name','rtw'))open_system('rtw');end
if isempty(find_system('Name','rtwol')) else
close_system('rtwol',1);end
if isempty(find_system('Name','rtw_cl2')) else
close_system('rtw_cl2',1);end
%figure(RTWT);
% Se coge el valor de la editbox i lo pone el bloque del modelo
set_param('rtw/Constant','Value',...
get(handles.edit_consigna,'String'))
set_param('rtw/Constant2','Value',...
get(handles.edit_rampa,'String'))
% Tiempo de retardo para el escalon y la rampa
set_param('rtw/Step','Time',get(handles.edit_td,'String'));
set_param('rtw/Step1','Time',get(handles.edit_td,'String'));
% Se coge el valor de la editbox y se coloca como parametro general
de
% la simulacin
%PARAMETROS DE LA SIMULACION
set_param('rtw','FixedStep',get(handles.edit_ts, 'String'));
set_param('rtw','Starttime',get(handles.edit_ti,'String'));
set_param('rtw','Stoptime',get(handles.edit_tf,'String'));
limitapunts(handles);
controlador(handles);
end
if ol==1
if isempty(find_system('Name','rtwol'))open_system('rtwol');end
if isempty(find_system('Name','rtw')) else close_system('rtw',1);end
if isempty(find_system('Name','rtw_cl2')) else
close_system('rtw_cl2',1);end
%figure(RTWT);
set_param('rtwol/Constant1','Value',num2str(get(handles.tboto_inversio,'
Value')));
% Se coge el valor de la editbox i lo pone el bloque del modelo
set_param('rtwol/Constant','Value',get(handles.edit_consigna,'String'));
set_param('rtwol/Constant2','Value',get(handles.edit_rampa,'String'));
% Tiempo de retardo para el escalon y la rampa
set_param('rtwol/Step','Time',get(handles.edit_td,'String'));
set_param('rtwol/Step1','Time',get(handles.edit_td,'String'));
% Se coge el valor de la editbox y se coloca como parametro general
de

75

Memoria Tcnica
% la simulacin
%PARAMETROS DE LA SIMULACION
set_param('rtwol','FixedStep',get(handles.edit_ts, 'String'));
set_param('rtwol','Starttime',get(handles.edit_ti,'String'));
set_param('rtwol','Stoptime',get(handles.edit_tf,'String'));
limitapunts(handles);
end
if cl2==1
if isempty(find_system('Name','rtw_cl2'))open_system('rtw_cl2');end
if isempty(find_system('Name','rtwol')) else
close_system('rtwol',1);end
if isempty(find_system('Name','rtw')) else close_system('rtw',1);end
%figure(RTWT);
% Se coge el valor de la editbox i lo pone el bloque del modelo
set_param('rtw_cl2/Constant','Value',...
get(handles.edit_consigna,'String'))
set_param('rtw_cl2/Constant2','Value',...
get(handles.edit_rampa,'String'))
% Tiempo de retardo para el escalon y la rampa
set_param('rtw_cl2/Step','Time',get(handles.edit_td,'String'));
set_param('rtw_cl2/Step1','Time',get(handles.edit_td,'String'));
% Se coge el valor de la editbox y se coloca como parametro general
de
% la simulacin
%PARAMETROS DE LA SIMULACION
set_param('rtw_cl2','FixedStep',get(handles.edit_ts, 'String'));
set_param('rtw_cl2','Starttime',get(handles.edit_ti,'String'));
set_param('rtw_cl2','Stoptime',get(handles.edit_tf,'String'));
limitapunts(handles);
end

4.6.2. Parmetros de entrada


Los parmetros de entrada se utilizan en dos casos. El primero cuando se genera un
evento provocado por el clic del ratn o bien por la pulsacin de la tecla enter. El
segundo cuando existe una funcin que solicita conocer su valor actual, a travs de un
get o bien cuando hay una funcin que cambia el valor de este parmetro a travs de la
funcin set.
A continuacin se listan los parmetros de entrada y se muestran sus rutinas.

4.6.2.1. Consigna
Este parmetro es un editbox y como tal le corresponde un tag de la forma
edit_consigna. Cada vez que se genere un evento se realiza una llamada a actualitza,
que actualiza el valor de todos los elementos, incluido el presente.
function edit_consigna_Callback(hObject, eventdata, handles)
actualitza(handles);

76

Memoria Tcnica

4.6.2.2. Rampa
Este parmetro es un editbox y como tal le corresponde un tag de la forma edit_rampa.
Cada vez que se genere un evento se realiza una llamada a actualitza, que actualiza el
valor de todos los elementos, incluido el presente.
function edit_rampa_Callback(hObject, eventdata, handles)
actualitza(handles);

4.6.2.3. Inversin de giro


Este parmetro es un togglebutton y como tal le corresponde un tag de la forma
tbutton_inversio. Cada vez que se genere un evento se realiza una llamada a actualitza,
que actualiza el valor de todos los elementos, incluido el presente.
function tboto_inversio_Callback(hObject, eventdata, handles)
actualitza(handles);

4.6.2.4. Tiempo de retardo


Este parmetro es un editbox y como tal le corresponde un tag de la forma edit_td. Cada
vez que se genere un evento se realiza una llamada a actualitza, que actualiza el valor
de todos los elementos, incluido el presente.
function edit_td_Callback(hObject, eventdata, handles)
actualitza(handles);

4.6.3. Parmetros del controlador


Los parmetros del controlador se utilizan en dos casos. El primero cuando se genera un
evento provocado por el clic del ratn o bien por la pulsacin de la tecla enter. El
segundo cuando existe una funcin que solicita conocer su valor actual, a travs de un
get o bien cuando hay una funcin que cambia el valor de este parmetro a travs de la
tecla set.
A continuacin listamos los parmetros del controlador y mostramos sus rutinas.

4.6.3.1. Constante proporcional


Este parmetro es un editbox y como tal le corresponde un tag de la forma edit_kp. Cada
vez que se genere un evento se realiza una llamada a la funcin controlador, que
actualizar el valor de todos los elementos, incluido el presente.
function edit_kp_Callback(hObject, eventdata, handles)
controlador(handles);

77

Memoria Tcnica

4.6.3.2. Constante integral


Este parmetro es un editbox y como tal le corresponde un tag de la forma edit_ki. Cada
vez que se genere un evento se realiza una llamada a la funcin controlador, que
actualizar el valor de todos los elementos, incluido el presente.
function edit_ki_Callback(hObject, eventdata, handles)
controlador(handles);

4.6.3.3. Constante derivativa


Este parmetro es un editbox y como tal le corresponde un tag de la forma edit_kd. Cada
vez que se genere un evento se realiza una llamada a la funcin controlador, que
actualizar el valor de todos los elementos, incluido el presente.
function edit_kd_Callback(hObject, eventdata, handles)
controlador(handles);

4.6.3.4. Ajuste manual por funcin de transferencia


Este parmetro es un radiobutton y como tal le corresponde un tag de la forma
rboto_ajustFcnTf. Cuando se selecciona esta opcin, lo primero hace invisible las
casillas de ajuste de las constantes y abre el bloque de la funcin de transferencia del
controlador para que se modifique directamente, sin necesidad de poner los valores de
cada una de las constantes. En caso contrario, cuando se vuelva a seleccionar la opcin,
las casillas de las constantes se harn visibles.
function rboto_ajustFcnTf_Callback(hObject, eventdata, handles)
if(get(hObject,'Value'))
set(handles.edit_kp,'Visible','off');
set(handles.edit_ki,'Visible','off');
set(handles.edit_kd,'Visible','off');
open_system('rtw/Discrete Transfer Fcn');
else
set(handles.edit_kp,'Visible','on');
set(handles.edit_ki,'Visible','on');
set(handles.edit_kd,'Visible','on');
end

4.6.3.5. Funcin controlador


Esta funcin es la encargada de coger los valores de las editboxes y realiza las
operaciones oportunas para obtener los coeficientes del numerador y del denominador
de la funcin de transferencia del controlador.
function controlador(handles)
kd=str2double(get(handles.edit_kd,'String'));
ki=str2double(get(handles.edit_ki,'String'));
kp=str2double(get(handles.edit_kp,'String'));

78

Memoria Tcnica

p=(kp+ki+kd);
q=-(kp+2*kd);
r= kd;
u=1;
v=-1;
w=0;
num=[p q r];
den=[u v w];
numdz=strcat('[', num2str(num),']');
dendz=strcat('[', num2str(den),']');
set_param('rtw/Discrete Transfer Fcn','Denominator',dendz);
set_param('rtw/Discrete Transfer Fcn','Numerator',numdz);

4.6.4. Parmetros de ejecucin


Los parmetros de ejecucin son aquellos que conciernen a la ejecucin de la aplicacin
en tiempo real, y como tales necesitan ser compilados cada vez que se modifiquen. De
la misma manera que los parmetros anteriores, se vuelven activos en dos casos:
eventos de ratn o teclado y consultas o modificaciones de su valor.
A continuacin listamos los parmetros de ejecucin y sus rutinas.

4.6.4.1. Tiempo inicial


Este parmetro es un editbox y como tal le corresponde un tag de la forma edit_ti. Cada
vez que se genere un evento se realiza una llamada a la funcin actualitza, que
actualizar el valor de todos los elementos, incluido el presente.
function edit_ti_Callback(hObject, eventdata, handles)
actualitza(handles);

4.6.4.2. Tiempo final


Este parmetro es un editbox y como tal le corresponde un tag de la forma edit_tf. Cada
vez que se genere un evento se realiza una llamada a la funcin actualitza, que
actualizar el valor de todos los elementos, incluido el presente.
function edit_tf_Callback(hObject, eventdata, handles)
actualitza(handles);

4.6.4.3. Tiempo discreto


Este parmetro es un editbox y como tal le corresponde un tag de la forma edit_ts. Cada
vez que se genere un evento se realiza una llamada a la funcin actualitza, que
actualizar el valor de todos los elementos, incluido el presente.

79

Memoria Tcnica

function edit_ts_Callback(hObject, eventdata, handles)


actualitza(handles);

4.6.4.4. Conexin y ejecucin de la aplicacin


Este parmetro es un pushbutton y como tal le corresponde un tag de la forma
boto_connecta. Cada vez que se pulse este botn se imprime un mensaje en la casilla de
dilogo diciendo que se est conectando y ejecutando. Y las acciones que lleva a cabo
es poner el modelo con el que se est trabajando en modo externo, conectar la placa y
seguidamente comenzar a ejecutar la aplicacin.
function boto_connecta_Callback(hObject, eventdata, handles)
ol=evalin('base','ol');
cl=evalin('base','cl');
cl2=evalin('base','cl2');
if cl==1
set(handles.text_dialeg,'String',...
'Connectant i executant...');
set_param('rtw','SimulationMode','external');
set_param('rtw','SimulationCommand','connect');
set_param('rtw','SimulationCommand','start');
end
if ol==1
set(handles.text_dialeg,'String',...
'Connectant i executant...');
set_param('rtwol','SimulationMode','external');
set_param('rtwol','SimulationCommand','connect');
set_param('rtwol','SimulationCommand','start');
end
if cl2==1
set(handles.text_dialeg,'String',...
'Connectant i executant...');
set_param('rtw_cl2','SimulationMode','external');
set_param('rtw_cl2','SimulationCommand','connect');
set_param('rtw_cl2','SimulationCommand','start');
end
assignin('base','cl',cl);
assignin('base','ol',ol);
assignin('base','cl2',cl2);

4.6.4.5. Parada de la ejecucin


Este parmetro es un pushbutton y como tal le corresponde un tag de la forma
boto_stop. Al pulsar este botn se para automticamente la ejecucin que se est
llevando a cabo y desconecta la placa de adquisicin de la aplicacin en tiempo real.

80

Memoria Tcnica
function boto_stop_Callback(hObject, eventdata, handles)
ol=evalin('base','ol');
cl=evalin('base','cl');
cl2=evalin('base','cl2');
if cl==1
set_param('rtw','SimulationCommand','stop');
set_param('rtw','SimulationCommand','disconnect');
set(handles.text_dialeg,'String',...
'Sha parat lExecuci de laplicaci "Real
Time"!');
end
if ol==1
set_param('rtwol','SimulationCommand','stop');
set_param('rtwol','SimulationCommand','disconnect');
set(handles.text_dialeg,'String',...
'Sha parat lExecuci de laplicaci "Real
Time"!');
end
if cl2==1
set_param('rtw_cl2','SimulationCommand','stop');
set_param('rtw_cl2','SimulationCommand','disconnect');
set(handles.text_dialeg,'String',...
'Sha parat lExecuci de laplicaci "Real
Time"!');
end
assignin('base','cl',cl);
assignin('base','ol',ol);
assignin('base','cl2',cl2);

4.6.4.6. Compilacin
Este parmetro es un pushbutton y como tal le corresponde un tag de la forma
boto_compila. Al pulsar este botn se inicia la compilacin del modelo que corresponda
indicando el comienzo y el final de este proceso a travs de la casilla de dilogo.
function boto_compila_Callback(hObject, eventdata, handles)
ol=evalin('base','ol');
cl=evalin('base','cl');
cl2=evalin('base','cl2');
if cl==1
set(handles.text_dialeg,'String',...
'Compilant...');
pause(0.5);
rtwbuild('rtw');
%figure(RTWT);
set(handles.text_dialeg,'String',...
'Finalitzada tasca de compilar');
end
if ol==1
set(handles.text_dialeg,'String',...
'Compilant...');

81

Memoria Tcnica
pause(0.5);
rtwbuild('rtwol');
%figure(RTWT);
set(handles.text_dialeg,'String',...
'Finalitzada tasca de compilar');
end
if cl2==1
set(handles.text_dialeg,'String',...
'Compilant...');
pause(0.5);
rtwbuild('rtw_cl2');
%figure(RTWT);
set(handles.text_dialeg,'String',...
'Finalitzada tasca de compilar');
end
assignin('base','cl',cl);
assignin('base','ol',ol);
assignin('base','cl2',cl2);

4.6.5. Limitacin de puntos de ejecucin


Con la intencin de acotar las posibilidades de error del usuario se ha ideado esta
funcin. Durante el diseo de la aplicacin en tiempo real se ha tenido deshabilitada
est opcin porque interesaba ver los lmites tanto de la captura como de la
representacin de datos. Es decir, sin esta opcin activada puede ser que conduzca al
error al usuario y de errores de compilacin, o lo ms probable, dar representaciones
errneas por insuficiencia de datos. Mediante esta rutina se indica al usuario si el
incremento de tiempo es correcto con el tiempo de muestreo seleccionado, la correccin
es instantnea, si se excede el nmero de puntos mximos de representacin estimados
se utilizar el valor mximo. Por el contrario, si el valor es inferior al mximo no se
har ninguna correccin.
function limitapunts(handles)
ol=evalin('base','ol');
cl=evalin('base','cl');
ti=str2num(get_param(gcs,'Starttime'));
tf=str2num(get_param(gcs,'Stoptime'));
At=tf-ti;
if cl==1 && ol==0
Ts=str2num(get_param('rtw','FixedStep'));
elseif cl==0 && ol==1
Ts=str2num(get_param('rtwol','FixedStep'));
end
% puntos mximos de representacin
pt=str2num(get_param(gcs,'Decimation'));
% Calculo del numero de puntos
div=pt/Ts;
Npt=At*div;
Nptmax=40000;
if(Npt>Nptmax)
At=(Nptmax*Ts)/pt;
ti=0;
tf=num2str(At);

82

Memoria Tcnica
msge='Sha excedit el nmero mxim de punts...Reclcul amb la
freqncia de mostreig seleccionada:';
msge2='tf=';
msge3=strcat(msge,msge2,tf);
set(handles.text_dialeg,'String',...
msge3);
end
% Se ponen los valores en las casillas correspondientes
set(handles.edit_ti,'String',num2str(ti));
set(handles.edit_tf,'String',num2str(tf));
set(handles.edit_ts,'String',num2str(Ts));
% Se actualizan los valores en el modelo
if cl==1 && ol==0
set_param('rtw','Starttime',num2str(ti));
set_param('rtw','Stoptime',num2str(tf));
set_param('rtw','FixedStep',num2str(Ts));
elseif cl==0 && ol==1
set_param('rtwol','Starttime',num2str(ti));
set_param('rtwol','Stoptime',num2str(tf));
set_param('rtwol','FixedStep',num2str(Ts));
end

4.6.6. Visualizacin de grficos


En la visualizacin de grficos intervienen hasta 15 elementos, y son de los tipos:
radiobutton, pushbutton, editbox, popupmenu y axes. Dado que en el apartado anterior
se ha descrito el funcionamiento, a continuacin se numeran los elementos y las lneas
de programa que contienen.

4.6.6.1. Opcin de grfico AND


Este parmetro es un radiobutton y como tal le corresponde un tag de la forma
rboto_and. Permite la visualizacin mltiple de grficos poniendo su flag a 1 (a travs
de la variable pand).
function rboto_and_Callback(hObject, eventdata, handles)
pand = get (hObject,'Value');
if pand == 1
set(handles.rboto_or, 'Value',0);
set(handles.rboto_scope, 'Value',0);
scope_stat=0
pand=1;
or=0;
else
set(handles.rboto_or, 'Value',0);
set(handles.rboto_and, 'Value',1);
set(handles.rboto_scope, 'Value',0);
scope_stat=0;
or=0;
pand=1;
end
assignin('base','pand',pand);
assignin('base','or',or);
assignin('base','scope_stat',scope_stat);

83

Memoria Tcnica

4.6.6.2. Opcin de grfico OR


Este parmetro es un radiobutton y como tal le corresponde un tag de la forma
rboto_or. Permite la visualizacin exclusiva de un solo grfico poniendo su flag a 1 (a
travs de la variable por).
function rboto_or_Callback(hObject, eventdata, handles)
or = get (hObject,'Value');
if or == 1
set(handles.rboto_and, 'Value',0);
set(handles.rboto_scope, 'Value',0);
scope_stat=0;
or=1;
pand=0;
else
set(handles.rboto_and, 'Value',0);
set(handles.rboto_or, 'Value',1);
set(handles.rboto_scope, 'Value',0);
scope_stat=0;
pand=0;
or=1;
end
assignin('base','or',or);
assignin('base','pand',pand);
assignin('base','scope_stat',scope_stat);

4.6.6.3. Opcin de grfico SCOPE


Este parmetro es un radiobutton y como tal le corresponde un tag de la forma
rboto_scope. Permite la visualizacin en tiempo real sobre el modelo de un grfico
poniendo su flag a 1 (a travs de la variable scope_stat).
function rboto_scope_Callback(hObject, eventdata, handles)
scope_stat=get(hObject,'Value');
assignin('base','scope_stat',scope_stat);
if scope_stat== 1
set(handles.rboto_and, 'Value',0);
set(handles.rboto_or, 'Value',0);
scope_stat=1;
or=0;
pand=0;
else
set(handles.rboto_and, 'Value',0);
set(handles.rboto_or, 'Value',0);
set(handles.rboto_scope, 'Value',1);
scope_stat=1;
pand=0;
or=0;
end
assignin('base','or',or);
assignin('base','pand',pand);
assignin('base','scope_stat',scope_stat);

84

Memoria Tcnica

4.6.6.4. Seleccin de variable a visualizar


Este parmetro es un popupmenu y como tal le corresponde un tag de la forma
popupmenu1. Permite la visualizacin de 9 tipos de variables descritas en el apartado
4.5.5.2rmite la visualizacin de 9 tipos de variables descritas en el apartado 4.5.5.2. En
esta rutina simplemente recogemos el valor de la opcin seleccionada en la variable
popval para luego en la rutina de boto_plota imprimirla en pantalla.
function popupmenu1_Callback(hObject, eventdata, handles)
popval = get(hObject,'Value');
assignin('base','popval',popval);

4.6.6.5. Borrar pantalla


Este parmetro es un pushbutton y como tal le corresponde un tag de la forma
boto_esborrap. Esta rutina tiene una variable que permite conocer el estado de la
cuadrcula, en caso de que se borre pantalla evitar la desaparicin del grid.
function boto_esborrap_Callback(hObject, eventdata, handles)
hold off;
newplot
quadricula=evalin('base',quadricula);
if cnt==1
grid on;
end

4.6.6.6. Activacin de la cuadrcula de pantalla


Este parmetro es un pushbutton y como tal le corresponde un tag de la forma
boto_grid. Mediante esta funcin conseguimos que un pushbutton se comporte como un
togglebutton, y la variable que acta como memoria es cnt. Cada vez que se pulse el
botn que activa la cuadrcula, el valor de cnt ir oscilando de 0 a 1 de la misma manera
que el grid de la pantalla se desactivar o activar respectivamente. De esta manera,
cuando se borre la pantalla de visualizacin se recuperar el estado del grid en la
siguiente grfica.
function boto_grid_Callback(hObject, eventdata, handles)
quadricula=get(hObject,'Value')
cnt=evalin('base','cnt');
if quadricula==1
cnt=~cnt
assignin('base','cnt',cnt)
end
if cnt==1
hold on;
grid on
elseif cnt==0
hold off
grid off
end

85

Memoria Tcnica

4.6.6.7. Casillas de seleccin de rea de visualizacin


Estos parmetros son cuatro, indicando el valor mnimo y mximo de las coordenadas x
e y. Son del tipo editbox y sus respectivos tags se corresponden a edit_xmin, edit_xmax,
edit_ymin y edit_ymax. Su funcin es la de marcar una superficie de visualizacin que
vendr siempre acompaada de un zoom in o un zoom out para que surta efecto, por
tanto no tendr una rutina concreta. Esto quiere decir que su valor solo ser consultado
por las rutinas que se generan con boto_zi y boto_zo.

4.6.6.8. Zoom in
Este parmetro es un pushbutton y como tal le corresponde un tag de la forma boto_zi.
Cada vez que se pulse este botn, se reduce un 61,8% el tamao del rea de
visualizacin.
function boto_zi_Callback(hObject, eventdata, handles)
%handles.axes_plot.zoomIn
if 1
xm = str2double(get(handles.edit_xmin, 'String'));
xM = str2double(get(handles.edit_xmax, 'String'));
ym = str2double(get(handles.edit_ymin, 'String'));
yM = str2double(get(handles.edit_ymax, 'String'));
axis ([0.618*xm 0.618*xM 0.618*ym 0.618*yM]);
eixos_e = axis;
set(handles.edit_xmin, 'String', num2str(eixos_e(1,1)));
set(handles.edit_xmax, 'String', num2str(eixos_e(1,2)));
set(handles.edit_ymin, 'String', num2str(eixos_e(1,3)));
set(handles.edit_ymax, 'String', num2str(eixos_e(1,4)));
end

4.6.6.9. Zoom out


Este parmetro es un pushbutton y como tal le corresponde un tag de la forma boto_zo.
La funcin que realiza es la contraria a la que realiza el zoom in, es decir, que cada vez
que se pulse este botn se aumenta el 61,8% del rea de visualizacin.
function boto_zo_Callback(hObject, eventdata, handles)
% hObject
handle to boto_zo (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
if 1
xm = str2double(get(handles.edit_xmin, 'String'));
xM = str2double(get(handles.edit_xmax, 'String'));
ym = str2double(get(handles.edit_ymin, 'String'));
yM = str2double(get(handles.edit_ymax, 'String'));
axis ([1.618*xm 1.618*xM 1.618*ym 1.618*yM]);
eixos_e = axis;
set(handles.edit_xmin, 'String', num2str(eixos_e(1,1)));
set(handles.edit_xmax, 'String', num2str(eixos_e(1,2)));
set(handles.edit_ymin, 'String', num2str(eixos_e(1,3)));
set(handles.edit_ymax, 'String', num2str(eixos_e(1,4)));
end

86

Memoria Tcnica

4.6.6.10. Seleccin automtica de visualizacin


Este parmetro es un radiobutton y como tal le corresponde un tag de la forma
rboto_eixosauto. La funcin que realiza este control es la de recuperar la visualizacin
global de la grfica cuando se presiona el botn de plotar.

4.6.6.11. rea de visualizacin de grficos


Este elemento es del tipo axes y tiene el nombre de axes_plot, que tiene la funcin de
recibir todos los datos que deben ser plotados.

4.6.6.12. Visualizacin de grficos


Este parmetro es un pushbutton y como tal le corresponde un tag de la forma
boto_plot. En esta rutina se recogen todos los valores de opcin de visualizacin, as
como el modelo que se encuentra abierto y el modo de visualizacin. Si se selecciona un
parmetro que no exista en el modelo seleccionado, entonces aparecer un mensaje en la
editbox box indicando que la seleccin no es vlida.
function boto_plot_Callback(hObject, eventdata, handles)
pand=evalin('base','pand');
or=evalin('base','or');
popval=evalin('base','popval');
scope_stat=evalin('base','scope_stat');
cnt=evalin('base','cnt');
ol=evalin('base','ol');
cl=evalin('base','cl');
cl2=evalin('base','cl2');
if scope_stat==1
if cl==1
if popval==1
open_system('rtw/Sortida3')
elseif popval==2
open_system('rtw/Sortida2')
elseif popval==3
open_system('rtw/Entrada1')
elseif popval==4
open_system('rtw/Sortida5')
elseif popval==5
open_system('rtw/Sortida6')
elseif popval==6
open_system('rtw/Sortida7')
elseif popval==7
open_system('rtw/Sortida9')
elseif popval==8
open_system('rtw/Sortida1')
elseif popval==9
open_system('rtw/Sortida4')
end

87

Memoria Tcnica
end
if ol==1
if popval==1
open_system('rtwol/Sortida3')
elseif popval==2
set(handles.text_dialeg,'String',...
'Opci no valida amb el model seleccionat');
elseif popval==3
open_system('rtwol/Entrada1')
elseif popval==4
open_system('rtwol/Sortida5')
elseif popval==5
open_system('rtwol/Sortida6')
elseif popval==6
open_system('rtwol/Sortida7')
elseif popval==7
open_system('rtwol/Sortida9')
elseif popval==8
open_system('rtw/Sortida3')
elseif popval==9
open_system('rtw/Sortida2')
end
end
if cl2==1
if popval==1
open_system('rtw/Sortida3')
elseif popval==2
open_system('rtw/Sortida2')
elseif popval==3
open_system('rtw/Entrada1')
elseif popval==4
open_system('rtw/Sortida5')
elseif popval==5
open_system('rtw/Sortida6')
elseif popval==6
open_system('rtw/Sortida7')
elseif popval==7
open_system('rtw/Sortida9')
elseif popval==8
open_system('rtw/Sortida1')
elseif popval==9
open_system('rtw/Sortida4')
end
end

end
if pand==1
hold
if popval == 1
x = evalin('base','velocitat(:,2)');
plot(x,'b');
elseif popval==2
x = evalin('base','error(:,2)');
plot(x,'r');
elseif popval==3

88

Memoria Tcnica
x = evalin('base','shall(:,2)');
plot(x,'y');
elseif popval==4
x = evalin('base','sia(:,2)');
plot(x,'g');
elseif popval==5
x = evalin('base','sib(:,2)');
plot(x,'c');
elseif popval==6
x = evalin('base','sishall(:,2)');
plot(x,'m');
elseif popval==7
x = evalin('base','entrada(:,2)');
plot(x,'r');
elseif popval==8
x = evalin('base','sortida(:,2)');
plot(x,'y');
elseif popval==9
x = evalin('base','sortida3(:,2)');
plot(x,'g');
end

auto = get(handles.rboto_eixosauto, 'Value');


if auto == 1
axis auto;
eixos_e = axis;
set(handles.edit_xmin, 'String', num2str(eixos_e(1,1)));
set(handles.edit_xmax, 'String', num2str(eixos_e(1,2)));
set(handles.edit_ymin, 'String', num2str(eixos_e(1,3)));
set(handles.edit_ymax, 'String', num2str(eixos_e(1,4)));
else
xm = str2double(get(handles.edit_xmin, 'String'));
xM = str2double(get(handles.edit_xmax, 'String'));
ym = str2double(get(handles.edit_ymin, 'String'));
yM = str2double(get(handles.edit_ymax, 'String'));
axis ([xm xM ym yM]);
end
hold;
end
%fin del while and==1

if or == 1
if popval == 1
x = evalin('base','velocitat(:,2)');
plot(x);
elseif popval==2
x = evalin('base','error(:,2)');
plot(x);
elseif popval==3
x = evalin('base','shall(:,2)');
plot(x);
elseif popval==4
x = evalin('base','sia(:,2)');

89

Memoria Tcnica
plot(x);
elseif popval==5
x = evalin('base','sib(:,2)');
plot(x);
elseif popval==6
x = evalin('base','sishall(:,2)');
plot(x);
elseif popval==7
x = evalin('base','entrada(:,2)');
plot(x);
elseif popval==8
x = evalin('base','sortida(:,2)');
plot(x,'y');
elseif popval==9
x = evalin('base','sortida3(:,2)');
plot(x,'g');
end

auto = get(handles.rboto_eixosauto, 'Value');


if auto == 1
axis auto;
eixos_e = axis;
set(handles.edit_xmin, 'String', num2str(eixos_e(1,1)));
set(handles.edit_xmax, 'String', num2str(eixos_e(1,2)));
set(handles.edit_ymin, 'String', num2str(eixos_e(1,3)));
set(handles.edit_ymax, 'String', num2str(eixos_e(1,4)));
else
xm = str2double(get(handles.edit_xmin, 'String'));
xM = str2double(get(handles.edit_xmax, 'String'));
ym = str2double(get(handles.edit_ymin, 'String'));
yM = str2double(get(handles.edit_ymax, 'String'));
axis ([xm xM ym yM]);
end
end

%fin while or==1

if cnt==1
grid on;
else
grid off;
end

4.6.7. Parmetros de guardar y cargar datos


Para realizar la funcin de cargar y guardar datos en formato .mat, correspondientes a
las simulaciones, intervienen 4 elementos.

4.6.7.1. Nombre de la variable


Este parmetro es un editbox y como tal le corresponde un tag de la forma edit_nomvar.
Mediante esta casilla se captura el nombre del fichero .mat que se desea guardar o
cargar.

90

Memoria Tcnica
function edit_nomvar_Callback(hObject, eventdata, handles)
a=get(hObject,'String');
assignin('base','a',a);

4.6.7.2. Ruta para salvar/guardar datos


Este parmetro es un editbox y como tal le corresponde un tag de la forma edit_ruta.
Mediante esta casilla se captura el nombre del fichero .mat que se desea guardar o
cargar.
function edit_ruta_Callback(hObject, eventdata, handles)
ruta=get(handles.edit_ruta,'String');
cd(ruta)

4.6.7.3. Salvar/guardar datos


Estos dos elementos son del tipo pushbutton y tienen el formato boto_guarda y
boto_carga.
function boto_guarda_Callback(hObject, eventdata, handles)
%Es mira que la var a existeixi, que es la que porta el nom
evalin('base','exist a');
f=evalin('base','ans');
if (f)
a=evalin('base','a');
assignin('base','a',a);
set(handles.edit_nomvar,'Visible','on');
set(handles.edit_nomvar,'String',a);
set(handles.text_dialeg,'String',...
'Miri si el nom de la variable i la ruta son correctes i premi
"guarda"');
a=get(handles.edit_nomvar,'String');
assignin('base','a',a);
if(~isempty(a))
cola='.mat';
assignin('base','cola',cola)
g=evalin('base','strcat(a,cola)');
if(exist(g,'file'))
set(handles.text_dialeg,'String',...
'Nom Fitxer Existent.Vol Sobreescriue? Premi Guarda
(SI).');
if(handles.boto_guarda)
evalin('base','save (a)');
set(handles.text_dialeg,'String',...
'Fitxer .MAT Guardat');
end
else
evalin('base','save (a)');
set(handles.text_dialeg,'String',...
'Fitxer .MAT Guardat');
end
end

91

Memoria Tcnica

else
set(handles.edit_nomvar,'Visible','on');
set(handles.text_dialeg,'String',...
'Introduiexi el nom pel fitxer .MAT a guardar');
a=get(handles.edit_nomvar,'String');
assignin('base','a',a);
%Es torna a comprovar que shagui introduit un nom
evalin('base','exist a');
f=evalin('base','ans');
if(f)
evalin('base','save (a)');
set(handles.text_dialeg,'String',...
'Fitxer .MAT Guardat');
else
set(handles.text_dialeg,'String',...
'Si us plau, introduiexi el nom pel fitxer .MAT a guardar');
end
end

function boto_carga_Callback(hObject, eventdata, handles)


evalin('base','exist a');
f=evalin('base','ans');
if (f)
a=evalin('base','a');
assignin('base','a',a);
set(handles.edit_nomvar,'Visible','on');
set(handles.edit_nomvar,'String',a);
set(handles.text_dialeg,'String',...
'Miri si el nom de la variable i la ruta son correctes i premi
"carrega"');
a=get(handles.edit_nomvar,'String');
assignin('base','a',a);
if(~isempty(a))
cola='.mat';
assignin('base','cola',cola)
g=evalin('base','strcat(a,cola)');
if(exist(g,'file'))
evalin('base','load (a)');
set(handles.text_dialeg,'String',...
'Fitxer .MAT Carregat');
else
set(handles.text_dialeg,'String',...
'Fitxer .MAT NO Existent. Torna-hi');
end
end
else
set(handles.edit_nomvar,'Visible','on');
set(handles.text_dialeg,'String',...
'Introdueix a la casella el nom del fitxer .MAT a carregar');
a=get(handles.edit_nomvar,'String');
assignin('base','a',a);
%Es torna a comprovar que shagui introduit un nom

92

Memoria Tcnica
evalin('base','exist a');
f=evalin('base','ans');
e=evalin('base','isempty(a)');
if(f==1 && e==0)
evalin('base','load (a)');
set(handles.text_dialeg,'String',...
'Fitxer .MAT Carregat');
else
set(handles.text_dialeg,'String',...
'Introdueix a la casella el nom del fitxer .MAT a
carregar');
end
end

4.6.8. Parmetros de casilla de dilogo y cerrar aplicacin


4.6.8.1. Casilla de dilogo
Este elemento es del tipo text y tiene le corresponde el tag del tipo text_dialeg.

4.6.8.2. Salvar
Existen dos elementos que son del tipo pushbutton y tienen el formato boto_tanca y
boto_s_i_g.
function boto_tanca_Callback(hObject, eventdata, handles)
if isempty(find_system('Name','rtw')) else close_system('rtw');end
if isempty(find_system('Name','rtwol')) else close_system('rtwol');end
close
function boto_s_i_g_Callback(hObject, eventdata, handles)
close_system('rtw',1);
close_system('rtwol',1);
close

93

Memoria Tcnica

5. Conclusiones
Se puede decir que se han cumplido satisfactoriamente los propsitos planteados
inicialmente, aunque han quedado temas por desarrollar y se han detectado limitaciones
del sistema RTWT de Matlab, que en futuro podrn ser solventadas. Pero lo que es ms
importante, es que se ha conseguido sentar las bases para trabajos futuros en un entorno
muy desconocido como es el trabajo con sistemas reales y en tiempo real mediante
Matlab.
Se ha utilizado con xito y ha quedado documentada la informacin referente a las
herramientas:







GUIDE
Toolbox de Real-Time con Simulink
Controlador discreto para un motor de corriente continua, y que podr ser
utilizado para el control de velocidad de cualquier otro motor con algunas
adaptaciones.
Driver de corriente continua desarrollado ntegramente en el laboratorio de la
URV.
El modulo de control de Leybold.

Todo ello se ha relacionado con la teora de control para la obtencin de un sistema


realimentado para la regulacin de la velocidad de un motor de corriente continua. A
travs de la aplicacin ideada se podr disear cualquier tipo de controlador soportado
por Simulink (fuzzy, discreto o continuo), para posteriormente visualizar las grficas
reales y corroborarlas con las tericas.
Tambin se ha abierto un canal de comunicacin con el servicio tcnico de Matlab, a
travs de e-mail. De esta manera se podr solventar cuestiones y sugerir mejoras futuras
como ya se ha hecho.
Se han detectado deficiencias y para enmendarlas se proponen posibles trabajos futuros:





Poner un PC con mayores caractersticas: RAM, procesador y disco duro. Se


conseguir reducir el tiempo de compilacin, mayor rapidez de respuesta de la
aplicacin en tiempo real, mayor frecuencia de muestreo y tamao de modelos
en Simulink.
Prescindir del modulo de control de LEYBOLD, tomando las seales
directamente de la carga y llevndolas al driver de cc y la placa de adquisicin.
Aadir un filtro en el modelo de Simulink para eliminar el ruido provocado por
la conmutacin de los IGBTs del puente en H.
Estar pendiente de las nuevas actualizaciones de Matlab para la resolucin del
problema de la imposibilidad para capturar datos y/o realizar operaciones con las
variables hasta que no haya acabado la ejecucin en tiempo real de la aplicacin.

94

Memoria Tcnica

6. Bibliografa
[1] Pol Toldr Fernndez, Implementaci dun driver commutat a alta freqncia per un accionament
regulat amb motor DC, PFC URV,2004.
[2] Rafael Moragues, Sistema de control en temps real a travs de MATLAB/SIMULINK, PFC URV,
2004.
[3] David Oliveras, Desenvolupament d'una Plataforma Hardware/Software per a l'Experimentaci
d'Accionaments DC, PFC URV, 2005.
[4] Pedro Garcs, Apuntes de la asignatura de Ingeniera de Control II, URV 2004.
[5] Sistemas de control en tiempo discreto, Katsuhiko Ogata, Ed. Pentice Hall, 2 edicin.
[6] Ayudas de Matlab dentro de Programa.
[7] http://www.mathworks.com
[8] The MathWorks, Real-Time Windows Target Users Guide (Version 2).

95

Anexos

7. Anexos
En el siguiente captulo se dar aquella informacin que es interesante pero que no es
imprescindible para entender el funcionamiento de la aplicacin en tiempo real, y que
de alguna manera no ha tenido cabida en la memoria tcnica.

7.1. Compatibilidad de bloques de Simulink y RTWT


En la Tabla 17 se muestran los bloques de Simulink separados por categoras y unas
notas explicativas. Estos bloques son compatibles con la toolbox de tiempo real de
Matlab, ya que RTWT no puede trabajar con todos los bloques de Simulink.
Sublibrary
Additional Math and
Discrete: Additional
Discrete

Additional Math and


Discrete: Additional
Discrete

Additional Math and

Block
Fixed-Point State-Space

Support Notes
SN1

Transfer Fen Direct Form II

SN1, SN2

Transfer Fen Direct Form II Time


Varying
Unit Delay Enabled

SN1. SN2

Unit Delay Enabled External IC

SN1, SN2

Unit Delay Enabled Resettable

SN1. SN2

Unit Delay Enabled Resettable


External IC

SN1. SN2

Unit Delay External IC

SN1, SN2

Unit Delay Resettable

SN1. SN2

Unit Delay Resettable External IC

SN1, SN2

Unit Delay With Preview Enabled

SN1, SN2

Unit Delay With Preview Enabled


Resettable

SN1. SN2

Unit Delay With Preview Enabled


Resettable External RV

SN1. SN2

Unit Delay With Preview Resettable

SN1. SN2

Unit Delay With Preview Resettable


External RV

SN1. SN2

Decrement Real World

SN1

96

SN1. SN2

Anexos
Discrete:
Increment/Decrement

Continuous

Discontinuities

Discrete

Decrement Stored Integer

SN1

Decrement Time To Zero

Decrement To Zero

SN1

Increment Real World

SN1

Increment Stored Integer

SN1

Derivative
Integrator
State-Space

SN3. SN4
SN3. SN4
SN3. SN4

Transfer Fen

SN3. SN4

Transport Delay

SN3. SN4

Variable Time Delay

SN3. SN4

Variable Transport Delay

SN3. SN4

Zero-Pole
Backlash
Coulomb & Viscous Friction

SN3. SN4
SN2
SN1

Dead Zone
Dead Zone Dynamic

SN1

Hit Crossing

SN4

Quantizer
Rate Li miter

SN5

Rate Limiter Dynamic

SN1. SN5

Relay
Saturation
Saturation Dynamic

SN1

Wrap To Zero

SN1

Difference
Discrete Derivative

SN1
SN2. SN6

Discrete Filter

SN2

Discrete State-Space

SN2

97

Anexos

Logic and Bit


Operations

Discrete Transfer Fen

SN2

Discrete Zero-Pole

SN2

Discrete-Time Integrator

SN2. SN6

First-Order Hold

SN4

Integer Delay

SN2

Memory
Transfer Fen First Order

SN1

Transfer Fen Lead or Lag

SN1

Transfer Fen Real Zero

SN1

Unit Delay
Weighted Moving Average

SN2

Zero-Order Hold

Bit Clear

Bit Set
Bitwise Operator

Combinatorial Logic

Compare to Constant

Compare to Zero

Detect Change

SN2

Detect Decrease

SN2

Detect Fall Neaative

SN2

Detect Fall Nonpositive

SN2

Detect Increase

SN2

Detect Rise Nonnegative

SN2

Detect Rise Positive

SN2

Extract Bits
Interval Test
Interval Test Dynamic

Loaical Operator

98

Anexos

Lookup Tables

Math Operations

Relational Operator

Shift Arithmetic

Cosine
Direct Lookup Table (n-D)

SN1
SN2

Interpolation (n-D)

Lookup Table

Lookup Table (2-D)

Lookup Table (n-D)

Lookup Table Dynamic

PreLookup Index Search

Sine
Abs
Algebraic Constraint

SN1

Not supported

Assignment
Bias
Complex to Magnitude-Angle

SN2

Complex to Real-lmag

Concatenate
Dot Product
Gain
Maanitude-Anale to Complex

SN2

Math Function (10 u)


Math Function (conj)
Math Function (exp)
Math Function (hermitian)
Math Function (hypot)
Math Function (log)
Math Function (Iog10)
A
Math Function (maanitude 2)
Math Function (mod)
Math Function (pow)
Math Function (reciprocal)
Math Function (rem)
Math Function (square)
Math Function (sqrt)
Math Function (transpose)
MinMax

99

Anexos

Model Verification

Ports & Subsystems

MinMax Running Resettable

Polynomial
Product
Real-lmaa to Complex

SN2

Reshape
Rounding Function

Sign
Sine Wave Function

Slider Gain
Sum
Trigometric Function

SN7

Unary Minus
Weighted Sample Time Math

Assertion
Check Discrete Gradient

Check Dynamic Gap

Check Dynamic Lower Bound

Check Dynamic Range

Check Dynamic Upper Bound

Check Input Resolution

Check Static Gap

Check Static Lower Bound

Check Static Range

Check Static Upper Bound

Atomic Subsystem

Code Reuse Subsystem

Configurable Subsystem

Enabled Subsystem

Enabled and Triaaered Subsystem

For Iterator Subsystem

100

Anexos

Signal Attributes

Signal Routing

Function-Call Generator

Function-Call Subsystem

If
If Action Subsystem

Model
Subsystem
Switch Case

Switch Case Action Subsystem

Triggered Subsystem

While Iterator Subsystem

Data Type Conversion

Data Type Conversion Inherited

Data Type Duplicate

Data Type Propogation

Data Type Scaling Strip

JC
Probe
Rate Transition

SN4

SN2. SN5

Sianal Conversion

Signal Specification

Weighted Sample Time

Width
Bus Assianment

Bus Creator
Bus Selector
Data Store Memory

Data Store Read

Data Store Write

Demux
Environment Controller

101

Anexos

Sinks

Sources

From
Goto
Goto Tag Visibility

Index Vector
Manual Switch

SN4

Merge
Multiport Switch

SN2

Mux
Selector

Switch
Display
Floating Scope

SN2
SN8
SN8

Output (Out1)
Scope

SN8

Stop Simulation
Terminator

Not supported

To File

SN4

To Workspace

SN8

XY Graph

SN8

Band-Limited White Noise

SN5

Chirp Signal

SN4

Clock

SN4

Constant

Counter Free-Running
Counter Limited

SN4
SN1

Diaital Clock

SN4

From File

SN8

From Workspace

SN8

Ground
Inport(lni)
Pulse Generator

SN5. SN9

Ramp

SN4

102

Anexos

User-Defined

Random Number

Repeating Sequence

SN10

Repeating Sequence Interpolated

SN1. SN5

Repeating Sequence Stair

SN1

Signal Builder

SN4

Sianal Generator

SN4

Sine Wave

SN6. SN9

Step
Uniform Random Number

SN4

Embedded MATLAB Function

Fen
MATLAB Fen

SN11

S-Function
S-Function Builder

SN12

Tabla 17: Listado de bloques de Simulink y sus compatibilidades


Symbol

SN1

SN2
SN3

SN4
SN5
SN6
SN7

SN8
SN9

Note
Real-Time Workshop supports the block and requires no special notes.
Real-Time Workshop does not explicitly group primitive blocks that
constitute a nonatomic masked subsystem block in the generated
code. This flexibility allows for more optimal code generation. In certain
cases, you can achieve grouping by configuring the masked subsystem
block to execute as an atomic unit by selecting the Treat as atomic
unit option.
Generated code relies on memepy or memset (string, h) under certain
conditions.
Consider using the Simulink Model Discretizer to map continuous
blocks into discrete equivalents that support code generation. To start
the Model Discretizer, click Tools > Control Design.
Not recommended for production code.
Cannot use inside a triggered subsystem hierarchy.
Depends on absolute time when used inside a triggered subsystem
hierarchy.
The three functions asinh, acosh, and atanhare not supported by
all compilers. If you use a compiler that does not support these
functions, Real-Time Workshop issues a warning message for the
block and the generated code fails to link.
Ignored for code generation.
Does not refer to absolute time when configured for sample-based
operation. Depends on absolute time when in time-based operation.

103

Anexos
SN10
SN11
SN12

Consider using the Repeating Sequence Stair or Repeating Sequence


Interpolated block instead.
Consider using the Embedded MATLAB block instead.
S-functions that call into MATLAB are not supported for code
generation.
Tabla 18: Notas referentes a la Tabla 17

7.2. Preguntas realizadas al servicio tcnico de Matlab


Este apartado ha sido concebido para solucionar posibles dudas que hayan podido surgir
a lo largo de la lectura de la memoria tcnica, y con la intencin de dar continuidad al
trabajo realizado en el presente proyecto. Esto dar la posibilidad a la persona que
prosiga en esta misma lnea de investigacin o en otra similar las limitaciones de las
toolboxes de Real-Time para esta versin de Matlab, y posibles mejoras que se van
implementar en un futuro como nos aseguran en una de estas cartas. A continuacin se
mostrarn algunos de los e-mails de Matlab.
From: august.cilento@estudiants.urv.es
Sent: 5/4/2005 1:31:21 PM
To: soporte@mathworks.es
Subject: Matlab trabajando en tiempo real
Estimados Srs. De

MathWorks,

Estoy trabajando en la Universidad Rovira y Virgili de Tarragona en un


proyecto de control de un motor de CC mediante una placa de
adquisicin en tiempo real (RTWT).
En la pgina de Mathworks he visto que la placa puede llegar a
trabajar de 10 a 40 kHz con Windows. He estado haciendo pruebas y he
visto que no puedo trabajar a frecuencias de muestreo tan altas. He
podido comprobar que con una frecuencia de muestreo de 10 kHz y
tomando como entrada una seal sinusoidal a 1 kHz, el sistema
operativo se vuelve inestable, cuando no se reinicia la computadora, y
solo captura unos 1000 puntos.

Nuestro hardware es el siguiente:


- PCI NI-6024e como placa de adquisicin en Tiempo Real
- Computadora:
Intel Pentium 4 a 1,86 GHz
256 MB Ram
El software:
- Matlab 6.5 R13
- Windows 2000 (Service Pack)
- Ejecutando el comando rtwho da como respuesta:
o Real Time Windows Target v 2.2.
o MATLAB performance = 100%
o Kernel timeslice period = 1ms
Mis preguntas son:
- Con el hardware y software que tenemos se puede muestrear hasta los
40 kHz?
- Cual es la limitacin de puntos guardando datos en Tiempo Real con

104

Anexos
To Workspace o Scope? He observado que el mximo numero de
puntos es de 1000 puntos
- Cual es la relacin entre el tiempo de muestreo del Simulation
Parameters del Simulink y el tiempo de cada uno de los bloques.
Atentamente,
Augusto Cilento

De: support@mathworks.de
Data: Dilluns, Juny 6, 2005 9:40 am
Assumpte: RE: Matlab trabajando en tiempo real
Hola Sr Cliento
- Con el hardware y software que tenemos se puede muestrear hasta los
40 kHz?
Esto no se sabe hasta que se prueba. Por favor mira la pagina
siguiente:
http://www.mathworks.com/support/solutions/data/118N6Z.html?solution=1-18N6Z
- Cual es la limitacin de puntos guardando datos en Tiempo Real con
To Workspace o Scope? He observado que el mximo numero de
puntos es de 1000 puntos
En el bloque Scope y To Workspace hay una casilla "Limit Data Points
To Last". Tiene el valor 1000?
- Cual es la relacin entre el tiempo de muestreo del Simulation
Parameters del Simulink y el tiempo de cada uno de los bloques.
El tiempo de muestro del bloque es igual
precendente si su casilla tiene un valor
tienen un valor -1 es igual al tiempo de
Configuration Parameters). He aadido un

al valor del bloque


-1. Si todos los bloques
muestra fundamental (en
ejemplo.

Necesito conocer su nmero de licencia. Puede utilizar el comando


"ver" dentro de la ventana de comandos de MATLAB y devolvernos su
salida. Si tiene ms preguntas esciribemelas.
Un saludo cordial,
Tobias Gemperli

From: august.cilento@estudiants.urv.cat
Sent: 2006-08-21 11:48:33 AM
To: soporte@mathworks.es
Subject: RE: RE: RE: RE: Respondre el missatge:
RE:Matlabtrabajandoentiemporeal
Hello Tobias,
Can you explain me, how can I display a block scope into a GUI and see
that in real-time by means of "external mode" ? Can I export this data
to grafical user interface axes? I need work in signal tracing mode
(acquiring and visualizing signals while running a target
application).

105

Anexos

Can you help me?


Best regards,
August Cilento
----- Missatge original ----De: soporte@mathworks.es
Data: Dilluns, Agost 21, 2006 9:40
Assumpte: RE: RE: RE: RE: Respondre el missatge: RE:
Matlabtrabajandoentiemporeal
Per a: august.cilento@estudiants.urv.cat
>
>
>
>
>
>
>
>

Hello August
I tried to call you on the number +34 977 55 96 59. The person
who took off the phone said that he doesn't know you. Do you
have another phone number?
Thank you
Tobias

De: soporte@mathworks.es
Data: Dimarts, Agost 22, 2006 16:28
Assumpte: RE: RE:Matlabtrabajandoentiemporeal
Per a: august.cilento@estudiants.urv.cat
> Hello August
>
> I'm still investigating if the data can be displayed in a GUI. I
> will tell you when I have further information about it.
>
> You wrote:
>
https://estudiants.urv.cat/popup.html?nopop
2 de 4 14/09/2006 16:40
>
> 2. Granted that the size of buffer of data is very
> small, would be possible to do more than a simulation and chain
> all the values obtained within a same variable, thus to obtain
> more points for a representation?
>
> Unfortunately this is not possible. Please check if the
> following hints help:
>
>
> Solution Id: 1-1J9KLJ
>
> Summary: Why do I receive an error stating that the external
> mode packet buffer is too small in Real-Time Windows Target
> 2.5.2 (R14SP2)?
>
> Solution:
> There is a bug in Real-Time Windows Target 2.5.2 (R14SP2) in
> the way that Real-Time Windows Target interacts with external
> mode. This bug is under investigation and no fully tested
> workarounds exist. However, the following are three techniques
> that may resolve the problem. This is a machine-dependent issue,
> and the techniques cannot be guaranteed to work on all machines.
>

106

Anexos
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

1) Minimize the number of external mode communication channels,


such as scopes and displays. Users often attach scopes and
displays to signals "just in case". While this approach is
acceptable for simulation, it wastes packet buffer space, which
is one of the most critical resources when running in external mode.
2) Reduce the amount of data transmitted through external mode
channels. In the External Mode Control Panel, set the Duration
(which must be a positive integer) as low as possible. The
shorter duration reduces the number of samples in one buffer.
3) If the computer supports hyperthreading, disable
hyperthreading in the BIOS setup. Hyperthreading helps few
applications. For real-time applications it does not help at
all, and can cause additional problems. You should have your
System Administrator do this for your machine.

3. Which is approximately the number of points


maximum/frequency of sampling for a simulation? But as it could
obtain the relation?
Do you mean the number of points that can be saved?
Un saludo,
Tobias Gemperli

From: august.cilento@estudiants.urv.cat
Sent: 2006-08-24 04:50:16 AM
To: soporte@mathworks.es
Subject: RE: RE:Matlabtrabajandoentiemporeal
Hello Tobias,
You clarified me some doubts about buffer size, I will prove it.
3. Which is approximately the maximum number of points/frequency of
sampling for asimulation? But as it could obtain the relation?
Do you mean the number of points that can be saved?
Yes, I mean the maximum I number of points by unit of time (at minimum
increase of time or maximum frequency).
Thank you
De: soporte@mathworks.es
Data: Dimarts, Desembre 04, 2006 16:28
Assumpte: RE: RE:Matlabtrabajandoentiemporeal
Per a: august.cilento@estudiants.urv.cat
Dear August
I'm sorry about the delay in my reply. Unfortunately there is no
formula to calculate the maximum buffer size. I have made tests on
several
computers. I found out that the "out of memory" error occurs between
20'000'000 and 40'000'000 time steps. Unfortunately it is not yet
possible to
prealocate the memory which will be used by the scopes. I have
forwarded such a request to development to be considered in a future
release of
matlab.
Do you need to log every sample or can you just log every tenth? If
the second applies please specify the field "Sampling" in the scope
block:
Scope, Floating Scope, Signal Viewer Scope :: Blocks (Simulink)

107

Anexos
http://www.mathworks.com/access/helpdesk/help/toolbox/simulink/slref/s
cope.shtml
Regards Tobias

108

También podría gustarte