You are on page 1of 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

i
1. Introduccin................................................................................................................... 6
2. Objetivos........................................................................................................................ 6
3. 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

ii
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
ndice

iii
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

Memoria Tcnica

6
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

7
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

8
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

9
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.
Memoria Tcnica

10

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.



Memoria Tcnica

11
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.



Memoria Tcnica

12
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

Memoria Tcnica

13
E
n
t
r
a
d
a
s
/
S
a
l
i
d
a
s
Driver Motor CC
Alimentacin
MOTOR
Realimentacin
Velocidad
Rampa
Sentido de giro
Errores


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.



Memoria Tcnica

14
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


Memoria Tcnica

15
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.


Memoria Tcnica

16

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.

Memoria Tcnica

17

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


Memoria Tcnica

18

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 Short-circuit to
ground
1A fused
DIO<0..7> DIO 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
Memoria Tcnica

19

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.
Memoria Tcnica

20

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) Range


0,5 10 V


1 5 V


10 500 mV


100 50 mV





Voltaje mximo de trabajo de 11 V


Poteccin contra sobretensiones


Signal Powered
On
Powered
Off

ACH<0..15> 42 35


AISENSE 40 25





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
Memoria Tcnica

21

Entradas/Salidas Digitales
DIO<0..7>



Digital logic levels





Level Min Max

Input low voltage 0 V 0.8 V
Input high voltage 2 V 5 V
Input low current (Vin= 0 V) 320 A
Input high current (Vin= 5 V) 10 A
Output low voltage (IOL= 24 mA) 0.4 V
Output high voltage (IOH= 13 mA) 4.35 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.

Memoria Tcnica

22
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.


Memoria Tcnica

23
Cuadrante Velocidad Par
1 + +
2 + -
3 - -
4 - +
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
dt
T
t f
Vmed
0
) (

( 1 )

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.
T
TL VL
T
TH VH
Vmed

+

=
( 2 )

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

24
T
T
D
on
=
( 3 )

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
Memoria Tcnica

25
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.


Memoria Tcnica

26

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.

Memoria Tcnica

27
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:

w a = K E
( 4 )

Ia = K Ti
( 5 )

Ea Vb Ra a a + + = I V
( 6 )

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

n a = 1047 . 0 K E
( 7 )

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 ):

n
Ra Ia Vb Va


=
1047 . 0
K
( 8 )

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

n
Ra Ia Va


=
1047 . 0
K
( 9 )

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 220 V Tensin excitacin 220 V
Intensidad nominal 1,8 A Intensidad nominal de excitacin 0,25 A
Potencia nominal 0,3 kW Velocidad nominal 2000 rpm
Tabla 7: Valores placa de caractersticas
Memoria Tcnica

28
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: kn
2
, 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 Descripcin
ERR 1 Generator operation
ERR 2 Temperature of the DUT
ERR 3 Overvoltage in the link circuit of the control unit
ERR 4 Temperature of the D & B Unit
ERR 5 Temperature of the control unit
ERR 6
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.

Memoria Tcnica

29

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.


Memoria Tcnica

30
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.
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).
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.
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).
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
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

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.
7.4 Load simulation M ~ k n
The D & B Unit simulates the load response of a fan
(M ~ k n
2
).
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 M
i
~ n
i

The D & B Unit simulates the load response
with arbitrary characteristic edited by the user.
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
10 L1
IN
, L2I
N
, L3
IN

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
11 L1OUT, L2OUT, L3OUT
Output sockets for connection of different
DUT-machines (DC, AC, 3~)
12 INTERN / EXTERN-switch
Memoria Tcnica

31
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 CONTROL
IN

(13).
13 External control input CONTROL
IN

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: T
ERR

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.
16 Connection socket to supply the D & B Unit.
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.
18 Digital speed output (TACHO
OUT
)
The signals of the tacho-generator are automatically
forwarded.
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 al so be
car r i ed out usi ng t he soft war e CBM10 V5,
cat. no. 728 421.
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).
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).
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).
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).
27 Pushbutton to display torque limit (|M
M
AX|)
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.
28 Pushbutton to display speed limit n
S
TOP
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.
Memoria Tcnica

32
29 3-digit 7-segment display to indicate the torque
30 4-digit 7-segment display for the indication of the
speed, the condition of DUT ENABLE output and
error codes. To acknowledge error see RESET (8)!
Memoria Tcnica

33

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


Memoria Tcnica

34

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.



Memoria Tcnica

35

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.

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

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.














Memoria Tcnica

36
Item Tag Detalles
1 Select Seleccin de un objeto
2 Push Button Botn
3 Slider Barra de desplazamiento
4 Radio Button Botn de seleccin circular
5 Check Box Botn de seleccin tipo lista
6 Edit Box Casilla de edicin
7 Static Text Casilla de texto fijo
8 Pop-up menu Men desplegable
9 List Box Men en lista
10 Toggle Button Botn con memoria
11 Axes Pantalla para visualizacin de grficos
12 Panel Opcin para generar un panel
13 Button Group Opcin para agrupar botones
14
Activex
Control Opcin para generar controles ActiveX
15 Align objects Opcin para alinear objetos
16 Menu Editor Editor de opciones de men
17
Tab order
Editor
Opcin para cambiar el orden de las ventanas en el
editor
18 M-file Editor Editor de los ficheros .m
19
Property
inspector Editor propiedades de los controles
20
Object
Browser Buscador de Objetos
21 Run 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.

Memoria Tcnica

37
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.

Ventana 1
(figure)
Ventana 2
(figure)
Panel
Pantalla
Ejes 1 (axes) Ejes 2 (axes)
Controles
(uicontrol)
Mens
(uimenu)
Lneas (lines)
Superfcies
(surfaces)
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
Memoria Tcnica

38
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).

Memoria Tcnica

39

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.

VARIADOR DE TENSIN
Vcc+
0V
220Vca
SH_IN
SH_OUT
Vcc_puente
GND_puente
M-
M+
DRIVER
Vexcitacin
F2 F1 M+ M-
9PIN
CON
25 PIN
CON
Varmadura
MOTOR+CARGA
25 PIN
CON
9PIN
CON
n (V)
0 V
MODULO
CONTROL
PLACA DAQ
E
N
T
R
A
D
A
S
S
A
L
I
D
A
S
I
D
E
2
0
-
E
/
S

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.

Memoria Tcnica

40

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.

Descripcin de la seal
Pin
IDE
Placa# Pin DAQ#
Rango
Tensin
(V)
ENTRADAS
1 Medida Sensor Hall 20 ACH0 12
2
Sobrecorriente Shall y
MC33153 11 DIO3 0-5
3 Cruce Rama B 12 DIO2 0-5
4 Cruce Rama A 13 DIO1 0-5
5
Lectura Velocidad (modulo
ext.) - ACH1 10
SALIDAS
1 Velocidad 19 DAC0OUT 0-5
2 Rampa 18 DAC1OUT 0-5
3 Sentido de giro 17 DIO0 0-5
Tabla 10: Resumen de conexiones entre driver y placa DAQ



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

Memoria Tcnica

41

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 IN/OUT de la placa al PC Descripcin
1 OUT -12 V
2 OUT +12 V
3 OUT GND
4 OUT +5 V
5 N.C.

6 N.C.

7 N.C.

8 N.C.

9 N.C.

10 N.C.

11 OUT Sobrecorriente (Shall i MC33153)
12 OUT Cruce rama B
13 OUT Cruce rama A
14 IN Entrada al pic (libre)
15 OUT Salida del pic (libre)
16 IN reset/rearme por soft (no implement.)
17 IN Sentido de giro: 0 izq., 1 derecha
18 IN Seal analgico rampa
19 IN Seal analgico velocidad
20 OUT 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.

Memoria Tcnica

42


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:

Memoria Tcnica

43
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 MEX-
files 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
******************************************************
Memoria Tcnica

44
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
Memoria Tcnica

45

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: Name Address
Parameters

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
Memoria Tcnica

46
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)
Memoria Tcnica

47


(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).


1
) (
+
=
s
K
s G


( 10 )

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.

Memoria Tcnica

48

) ( lim
0
s Y s y
s
ss
=


( 11 )



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

762 , 5
376 , 6
) (
+
=
s
s G
( 12 )


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.

=
=

nT t
Ts
-
s G
s
e
Z z G ) (
1
) (
1
L
( 13 )

Se sustituye la expresin ( 12 ) en la ( 13 ) y se obtiene:

=
=

nT t
Ts
-
s s
e
Z z G
762 , 5
376 , 6 1
) (
1
L
( 14 )

Descomponiendo en fracciones simples y haciendo la transformada Z se obtiene la
planta discretizada dependiente del tiempo de muestreo.

T
T
e z
e
z G
762 , 5
762 , 5
1
1066 , 1 ) (

=
( 15 )


4.3.1.1. Frecuencia de muestreo

Para la eleccin de la frecuencia de muestreo habr que recurrir al teorema de Nyquist-
Shanon. El teorema establece que la frecuencia mnima de muestreo necesaria para
evitar el aliasing debe ser:
BW f
s
2 >
( 16 )
Siendo el ancho de banda:
Memoria Tcnica

49
min max
f f BW =
( 17 )
Para nuestro sistema consideramos que 0
min
= f , por tanto la expresin ( 16 ) quedar:
max
2 f f
s
>
( 18 )

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.
max
10 f f
s

( 19 )

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 = Hz f s 67 , 5
1


( 20 )
La frecuencia y periodo de muestreo imponiendo ( 19 ) es:
0088 , 0 44 , 113 =
s s
T Hz f
( 21 )




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.

Memoria Tcnica

50

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,01
944 , 0
06196 , 0
) (

=
z
z G
( 22 )
0,001
994 , 0
00636 , 0
) (

=
z
z G
( 23 )
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
Memoria Tcnica

51
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
kiz/(z-1)
kd(z-1)/z
+
+
+
E
H

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).

z z
kd z kd kp z kd ki kp
z E
z H

+ + + +
=
2
2
) 2 ( ) (
) (
) (

( 24 )

Accin proporcional e integral
1
) (
) (
) (

+
=
z
kp z ki kp
z E
z H

( 25 )

Accin proporcional
kp
z E
z H
=
) (
) (

( 26 )

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.




Memoria Tcnica

52
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



+
kp G(z)
-
Y(z)
Planta
Controlador
R(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.

) ( 1
) (
) (
) (
z G kp
z G kp
z R
z Y
+

=
( 27 )

La expresin del error:

) ( 1
) (
) (
z G kp
z R
z E
+
=
( 28 )

Haciendo el desarrollo de la expresin ( 27 ) y sustituyendo el valor del tiempo de
muestreo, se aplica el Teorema del Valor Final:

) (
) 1 (
lim
1
z Y
z
z
y
z
ss


( 29 )

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 (y
ss
) es 0,99. El valor
de la constante proporcional se obtiene aislando ( 29 ).

Memoria Tcnica

53


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.

-1 -0.5 0 0.5 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Root Locus
Real Axis
I
m
a
g
in
a
r
y

A
x
is

0.9936 0.9938 0.994 0.9942 0.9944 0.9946 0.9948 0.995
-6
-4
-2
0
2
4
6
x 10
-4
Root Locus
Real Axis
I
m
a
g
in
a
r
y

A
x
is

Ilustracin 29: Lugar de las races del sistema

Lo que interesa es estudiar la respuesta obtenida con la simulacin.
0 2 4 6 8 10 12 14 16 18 20
-20
-15
-10
-5
0
5
x 10
12
Step Response
Time (sec)
A
m
p
lit
u
d
e
0 2 4 6 8 10 12 14 16 18 20
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Step Response
Time (sec)
A
m
p
lit
u
d
e

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
Memoria Tcnica

54
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.

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


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

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

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

888 , 0 35 , 31 > > kp

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.
0 50 100 150 200 250
-1.5
-1
-0.5
0
0.5
1
1.5
x 10
4
Step Response
Time (sec)
A
m
p
lit
u
d
e
0 50 100 150 200 250
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
Step Response
Time (sec)
A
m
p
lit
u
d
e
(a) kp = 32 (b) kp = 31
0 2 4 6 8 10 12 14 16 18 20
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Step Response
Time (sec)
A
m
p
lit
u
d
e
0 5 10 15 20 25 30 35 40 45
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
Step Response
Time (sec)
A
m
p
lit
u
d
e
(c) kp=15 (d) kp = 1
Ilustracin 31: Respuestas simuladas con los valores obtenidos en el test de Jury
Memoria Tcnica

55
Los margenes de estabilidad de la constante proporcional obtenidos con el test de Jury
para el tiempo de muestreo a 0,001 segundos es:

943 , 0 52 , 313 > > kp

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.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.5
1
1.5
2
2.5
3
3.5
Linear Simulation Results
Time (sec)
A
m
p
lit
u
d
e

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

Zero-Order
Hol d
6.376
s+5.762
Transfer Fcn
Step Scope Saturati on
93.4
Gai n

(c) Representacin tensin de salida en
funcin del nmero de muestras. Error real
Controlador a Ts=0,001s
(d) Modelo con controlador proporcional y
saturacin a Ts=0,001s
Ilustracin 32: Comparacin entre controlador P real y simulado
Memoria Tcnica

56

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.


0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.5
1
1.5
2
2.5
3
Tiempo (s)
A
m
p
l
i
t
u
d

(
V
)
Respuesta simulada con saturacin
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
50
100
150
200
250
300
Tiempo (s)
A
m
p
l
i
t
u
d

(
V
)
Error simulado con saturacin
(a) Representacin tensin de salida en
funcin del tiempo. Respuesta simulacin
controlador a Ts=0,001s con kp=93,4
(b) Representacin tensin de salida en
funcin del tiempo. Error real a
Ts=0,001s con kp=93,4
Ilustracin 33: Respuestas obtenidas teniendo en cuenta la saturacin

Memoria Tcnica

57

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.

+
G(z)
-
Y(z)
Planta
Controlador PI
R(z)
1
) (

+
z
kp z ki kp

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

La expresin del controlador PI:
1 ) (
) (

+ =
z
z
ki kp
z R
z Y

( 32 )

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.

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Root Locus
Real Axis
I
m
a
g
in
a
r
y

A
x
is

0.992 0.994 0.996 0.998 1 1.002
-4
-3
-2
-1
0
1
2
3
x 10
-3
Root Locus
Real Axis
I
m
a
g
in
a
r
y

A
x
is
Ilustracin 35: Lugar geomtrico de las races de la planta y el controlador
Memoria Tcnica

58

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.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.5
1
1.5
2
2.5
3
Linear Simulation Results
Time (sec)
A
m
p
lit
u
d
e

(a) Representacin tensin de salida en funcin
del nmero de muestras. Respuesta real
controlador a Ts=0,001s
(b) Representacin tensin de salida en funcin
del tiempo. Respuesta simulacin controlador a
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.



Memoria Tcnica

59
Tiempo de muestreo (s) Funcin de Transferencia Discreta (Z)
0,01
1
996 , 0
) (

=
z
z
z D
( 33 )
0,001
1
98 , 0
) (

=
z
z
z D
( 34 )
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.

Ts (s) fs (kHz)
t representado
(s)
Npt max.
representados
Duracin
(10
6
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
Memoria Tcnica

60
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:

t
Ts
pt
Npt =
( 35 )

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.

[ ]
[ ] segundos
puntos
t
Npt
SR = =
( 36 )

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.

SR Ts
pt
Npt Ts
t =

=
2
max

( 37 )

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.

Memoria Tcnica

61
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

Memoria Tcnica

62

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
Memoria Tcnica

63
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.

Memoria Tcnica

64

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.
Memoria Tcnica

65


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
Memoria Tcnica

66
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
Memoria Tcnica

67
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.

Memoria Tcnica

68


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 (AND-
OR-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
Memoria Tcnica

69
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

Memoria Tcnica

70
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.

Memoria Tcnica

71
Inicio de Programa:
RTWT_OpeningFcn
Lazo
Cerrado? Sin
Control
Si
No
Lazo
Cerrado?
Control Z
- 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
Si
No Lazo
Abierto?
No
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
- 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
Evento?
Si
No
Ejecucin de la accin demandada y actualizacin de las variables
Fin Programa Cerrar?
Si
Cerrar
Salvando?
Si

Ilustracin 52: Diagrama de flujo general de la GUI


Memoria Tcnica

72
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
Memoria Tcnica

73
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 que tiene
% en el modelo y ponerlos en la GUI, en el caso que sea la primera vez
% se haya abierto el programa.
% % % % % % % % % % % % INICIO PARAM.GENERALES % % % % % % % % % % % % %
% %
% Se capturan los valores de los parametros generales, son aquellos que
no
% dependen del modelo escogido

% 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
Memoria Tcnica

74

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


Memoria Tcnica

75
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
Memoria Tcnica

76
% 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);

Memoria Tcnica

77
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);

Memoria Tcnica

78
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'));
Memoria Tcnica

79

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.
Memoria Tcnica

80

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.





Memoria Tcnica

81
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...');
Memoria Tcnica

82
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);
Memoria Tcnica

83
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);
Memoria Tcnica

84

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);

Memoria Tcnica

85
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

Memoria Tcnica

86
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

Memoria Tcnica

87

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
Memoria Tcnica

88
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
Memoria Tcnica

89
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)');
Memoria Tcnica

90
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.

Memoria Tcnica

91
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
Memoria Tcnica

92


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
Memoria Tcnica

93
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

Memoria Tcnica

94

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.


Memoria Tcnica

95
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).

Anexos

96
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 Block Support Notes
Additional Math and Fixed-Point State-Space SN1
Discrete: Additional
Discrete

Transfer Fen Direct Form II

SN1, SN2
Transfer Fen Direct Form II Time SN1. SN2
Varying
Unit Delay Enabled

SN1. SN2
Unit Delay Enabled External IC

SN1, SN2
Unit Delay Enabled Resettable

SN1. SN2
Unit Delay Enabled Resettable SN1. SN2
External IC



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
Additional Math and Unit Delay With Preview Enabled SN1. SN2
Discrete: Additional Resettable
Discrete
Unit Delay With Preview Enabled SN1. SN2
Resettable External RV



Unit Delay With Preview Resettable

SN1. SN2
Unit Delay With Preview Resettable SN1. SN2
External RV



Additional Math and Decrement Real World SN1
Anexos

97
Discrete:
Increment/Decrement


Decrement Stored Integer

SN1
Decrement Time To Zero


Decrement To Zero

SN1
Increment Real World

SN1
Increment Stored Integer

SN1
Continuous Derivative SN3. SN4
Integrator SN3. SN4
State-Space

SN3. SN4
Transfer Fen

SN3. SN4
Transport Delay

SN3. SN4
Variable Time Delay

SN3. SN4
Variable Transport Delay

SN3. SN4
Zero-Pole SN3. SN4
Discontinuities Backlash SN2
Coulomb & Viscous Friction

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
Discrete Difference SN1
Discrete Derivative

SN2. SN6
Discrete Filter

SN2
Discrete State-Space

SN2
Anexos

98
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 SN2
Weighted Moving Average


Zero-Order Hold


Logic and Bit
Operations
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
Anexos

99

Relational Operator


Shift Arithmetic


Lookup Tables Cosine SN1
Direct Lookup Table (n-D)

SN2
Interpolation (n-D)


Lookup Table


Lookup Table (2-D)


Lookup Table (n-D)



Lookup Table Dynamic


PreLookup Index Search


Sine SN1
Math Operations Abs
Algebraic Constraint

Not supported
Assignment SN2
Bias
Complex to Magnitude-Angle


Complex to Real-lmag


Concatenate SN2
Dot Product
Gain
Maanitude-Anale to Complex


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

100
MinMax Running Resettable


Polynomial
Product SN2
Real-lmaa to Complex



Reshape
Rounding Function


Sign
Sine Wave Function


Slider Gain
Sum
Trigometric Function

SN7
Unary Minus
Weighted Sample Time Math


Model Verification 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 Ports & Subsystems


Code Reuse Subsystem


Configurable Subsystem


Enabled Subsystem


Enabled and Triaaered Subsystem


For Iterator Subsystem
Anexos

101

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 Signal Attributes


Data Type Conversion Inherited


Data Type Duplicate


Data Type Propogation


Data Type Scaling Strip


JC SN4
Probe
Rate Transition

SN2. SN5
Sianal Conversion


Signal Specification


Weighted Sample Time


Width
Bus Assianment Signal Routing


Bus Creator
Bus Selector
Data Store Memory


Data Store Read


Data Store Write


Demux
Environment Controller
Anexos

102

From
Goto
Goto Tag Visibility


Index Vector
Manual Switch

SN4
Merge
Multiport Switch

SN2
Mux
Selector

Switch SN2
Sinks Display SN8
Floating Scope SN8

Output (Out1)
SN8 Scope

Stop Simulation Not supported
Terminator


To File SN4

To Workspace SN8

XY Graph

SN8
Band-Limited White Noise SN5 Sources

Chirp Signal

SN4
Clock SN4

Constant


Counter Free-Running SN4
Counter Limited SN1

Diaital Clock SN4

From File

SN8
From Workspace SN8

Ground
Inport(lni)
Pulse Generator SN5. SN9

Ramp SN4
Anexos

103
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 SN4
Uniform Random Number


Embedded MATLAB Function User-Defined



Fen
MATLAB Fen

SN11
S-Function SN12
S-Function Builder


Tabla 17: Listado de bloques de Simulink y sus compatibilidades

Symbol Note
Real-Time Workshop supports the block and requires no special notes.
SN1 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.
SN2 Generated code relies on memepy or memset (string, h) under certain
conditions.
SN3 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.
SN4 Not recommended for production code.
SN5 Cannot use inside a triggered subsystem hierarchy.
SN6 Depends on absolute time when used inside a triggered subsystem
hierarchy.
SN7 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.
SN8 Ignored for code generation.
SN9 Does not refer to absolute time when configured for sample-based
operation. Depends on absolute time when in time-based operation.
Anexos

104
SN10 Consider using the Repeating Sequence Stair or Repeating Sequence
Interpolated block instead.
SN11 Consider using the Embedded MATLAB block instead.
SN12 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
Anexos

105
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/1-
18N6Z.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 al valor del bloque
precendente si su casilla tiene un valor -1. Si todos los bloques
tienen un valor -1 es igual al tiempo de muestra fundamental (en
Configuration Parameters). He aadido un 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).
Anexos

106

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.
>
Anexos

107
> 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)
Anexos

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

You might also like