Capítulo 2
Entorno de tiempo real
2.1. Obtención rápida de prototipos y simulación con hard-
ware en el lazo
El diseño de controladores basados en modelo para un sistema o planta real se puede dividir
en tres etapas.
1. Identi�cación de un modelo del sistema: proceso iterativo mediante el cual se obtiene un
modelo matemático aproximado utilizando técnicas de identi�cación de parámetros y análisis
de datos de la planta real.
2. Diseño del algoritmo de control: a partir de la dinámica del modelo obtenido previamente se
proponen controladores para el sistema.
3. Simulación del conjunto controlador-modelo: se trata de corregir posibles fallos en el modelado
o la síntesis del controlador, optimizar la respuesta y validar el resultado.
MATLAB-Simulink es un entorno de Mathworks que permite llevar a cabo este proceso.
Un vez validado el sistema de control en simulación, el entorno MATLAB-Simulink también
ofrece la posibilidad de generar el código necesario para la ejecución del controlador en el hardware
embebido que controlará el sistema real, siendo este código compatible con requerimientos de
funcionamiento en tiempo real. Este proceso se conoce como obtención rápida de un prototipo o
RP1 y se ilustra en la Figura 2.1.
Por otra parte, se puede realizar el mismo procedimiento para obtener el código correspondiente
al modelo de la planta. De esta forma se pueden realizar simulaciones con el hardware embebido
real tratando de controlar al modelo del sistema. Una razón muy importante para hacer esto es que
en muchas ocasiones la planta puede tener partes donde la seguridad es crítica o el hardware sea
1RP = Rapid Prototyping.
4
2.2. Plataformas hardware para la obtención rápida de prototipos 5
Figura 2.1: Obtención rápida de prototipos
muy costoso. En estos casos es conveniente probar completamente el software y la electrónica del
sistema de control antes de implantarlo en la planta real. Este proceso se conoce como simulación
con hardware en el lazo o HIL2 y se ilustra en la Figura 2.2.
2.2. Plataformas hardware para la obtención rápida de pro-
totipos
En la de�nición de plataformas hardware para sistemas en tiempo real mediante RP, se tienen
en cuenta los siguientes conceptos básicos:
Procesador de tiempo real
Tarjetas de entrada/salida o módulos I/O
Bus de comunicación entre el procesador y las tarjetas
Bastidor donde se instalan todos los componentes
Existen dos tipos de arquitecturas: abiertas y cerradas.
2.2.1. Plataformas cerradas
Este tipo se basa comúnmente en hardware propietario, lo que le proporciona a esta solución
un alto grado de integración y calidad. Frecuentemente, el hardware de estos sistemas integrados3
2HIL = Hardware In the Loop.3también se les conoce como ordenadores embebidos, empotrados o incrustados.
2.2. Plataformas hardware para la obtención rápida de prototipos 6
Figura 2.2: Simulación con hardware en el lazo (HIL)
está optimizado para las características de una industria o aplicación especí�ca. Las opciones a la
hora de elegir el procesador y los módulos I/O están limitadas a una pequeña gama de productos,
pero a su vez presentan alto rendimiento y prestaciones. Como la combinación de hardware es de
ámbito limitado, este tipo de sistemas resultan fáciles de usar y entender por el usuario.
A continuación se mencionan dos ejemplos de este tipo de arquitectura.
2.2.1.1. MPL Packaged Industrial PCs (PIP)
Se trata de una familia de SBCs4 de bajo consumo de la empresa MPL, que funcionan sin
ventilador en una carcasa de aluminio compacta y robusta. Disponen de varias con�guraciones en
cuanto a procesador, memoria y módulos I/O según el modelo, así como la posibilidad de expanción
usando módulos PC/104, PC/104+, PCI y PMC. La Figura 2.3 muestra el modelo PIP8. Para
obtener más información ver [1].
2.2.1.2. Speedgoat Mobile real-time target machine
Se trata de un equipo de la empresa Speedgoat con un procesador Intel Pentium-M de 1.0GHz,
512MB de memoria RAM y capacidad de albergar hasta 3 módulos I/O tipo PMC o PCI. Orig-
nalmente fue concebido como el hardware que distribuía Mathworks junto con xPC Target, por
lo que actualmente su con�guración está optimizada para servir como target en aplicaciones de
Simulink. Este equipo se puede ver en la Figura 2.4. Para obtener más información ver [2].
4SBC = Single Board Computer.
2.2. Plataformas hardware para la obtención rápida de prototipos 7
Figura 2.3: MPL PIP8
Figura 2.4: Speedgoat Mobile real-time target machine
2.3. xPC Target 8
2.2.2. Plataformas abiertas
Este tipo se basa en hardware comercial de producción en serie, por lo que suele ser de bajo cos-
to dada la competencia en el mercado. Dicha competencia entre fabricantes hace que el rendimiento
de los productos sea elevado. Esta solución abarca múltiples plataformas basadas en estándares
industriales como PCI, cPCI, PC/104 o PC/104+. Usualmente se dispone de una amplia selec-
ción de procesadores disponibles que cubren todo el rango de rendimientos, por lo que es posible
seleccionar procesadores simples de bajo costo para aplicaciones sencillas o procesadores de alto
rendimiento para aplicaciones complejas. Así mismo, se puede encontrar una gran cantidad mó-
dulos I/O de diversos fabricantes. Esto permite que se puedan elegir las opciones y características
que se ajusten exactamente a las necesidades de cualquier aplicación. La desventaja radica en que
la integración del sistema y su instalación en bastidores tiene que ser llevada a cabo por el usuario,
tarea que no siempre resulta sencilla.
2.3. xPC Target
2.3.1. De�nición y características
xPC Target es un sistema operativo en tiempo real, propiedad de MATLAB-Simulink, que
permite la ejecución en tiempo real de los modelos proporcionados por Simulink en cualquier
ordenador que disponga de un procesador Intel o AMD de 32 bit.
La Figura 2.5 resume el esquema de trabajo. El ordenador de la izquierda, que en adelante se
llamará host, representa un PC con Windows como sistema operativo, donde se ejecutan MATLAB,
Simulink y todo el software habitual de un ordenador común. El ordenador de la derecha, que en
adelanté se llamará target, representa un PC industrial donde se ejecuta xPC Target. El objetivo
de la con�guración anterior es que modelos inicialmente desarrollados sobre el entorno Simulink
del host se ejecuten en tiempo real en el target. Para esto, se dispone de una herramienta de
Mathworks llamada Real-Time Workshop, que toma el modelo de Simulink, lo compila utilizando
un compilador de lenguaje C, enlaza algunos �cheros de sistema que proporciona xPC Target y
genera un archivo de extensión .dlm. Este archivo, pasa al target vía Ethernet o puerto serie y
se conecta con su kernel de tiempo real. Una vez descargada la aplicación, el target inicializa los
parámetros del modelo, prepara los visores para la observación de señales y espera a que el usuario
arranque el sistema.
xPC Target es capaz de ejecutarse en muchas plataformas con factores de forma diferentes, ya
sea un PC de escritorio, un PC montado en rack, un sistema integrado, un compactPCI o tarjetas
PC/104 y PC/104+ apiladas.
2.3. xPC Target 9
Figura 2.5: Host y Target
2.3.1.1. Interacción host-target en tiempo real de ejecución
Existen varios métodos para interactuar con la aplicación en tiempo real desde el host. En
primer lugar está el explorador de xPC Target que permite monitorizar señales, ajustar parámetros
y controlar todos los aspectos de con�guración de múltiples targets y sus aplicaciones en tiempo
real. En segundo lugar, xPC Target da la posibilidad de registrar datos, para posteriormente
almacenarlos en la memoria o disco duro del target o pasarlos de vuelta al host. Esto es útil para
conocer que sucede con el algoritmo en tiempo real realizando tareas de post-procesamiento de
datos con MATLAB. En tercer lugar, es posible conectar xPC Target al Virtual Reality Toolbox
de Simulink para visualizar lo que ocurre en una escena virtual. Esto es especialmente útil en
aplicaciones de automoción y aeronáutica, donde el comportamiento del sistema queda oculto a
veces en las representaciones grá�cas bidimensionales de las variables frente al tiempo. Finalmente,
se puede usar una Interfaz Grá�ca de Usuario o GUI 5. MATLAB es un entorno que permite
desarrollar fácilmente GUIs que incluyan funciones para controlar e interactuar con el target y su
aplicación en tiempo real. También es posible utilizar el propio diagrama de bloques de Simulink
como interfaz grá�ca o crear aplicaciones especi�cas de control en lenguaje C/C++. Todos estos
conceptos se resumen en la Figura 2.6.
Una explicación más detallada de cada una de estas formas de interacción se aborda más
adelante en la sección 2.3.5.
2.3.1.2. Soporte para I/O
xPC Target cuenta con más de 250 drivers de dispositivos I/O de 20 fabricantes diferentes.
Estos drivers adquieren la forma de bloques MATLAB-Simulink que son fácilmente con�gurables
dentro de un modelo de Simulink con el objetivo de permitir la comunicación con hardware en
tiempo real, tal como se aprecia en la Figura 2.7.
5GUI = Graphical User Interface.
2.3. xPC Target 10
Figura 2.6: Diferentes formas de interacción host-target
Figura 2.7: Drivers para dispositivos I/O
2.3. xPC Target 11
2.3.2. Con�guración de los equipos
Basta con ejecutar el comando xpcexplr en la ventana de comandos de MATLAB para abrir el
explorador de xPC Target, una interfaz grá�ca que permite con�gurar los equipos de forma rápida
y sencilla. La ventana se divide en dos. En la mitad izquierda hay un esquema de árbol donde se
incluye un nodo para el host y otro para el target por defecto. Se pueden crear entornos con varios
equipos sin más que añadir varios target seleccionando Add target desde el menú File. En la mitad
derecha se ven los diferentes parámetros y opciones del nodo que se seleccione.
2.3.2.1. Requerimientos.
Respecto al software necesario en el host se ha utilizado la versión 3.3 de xPC Target que a su
vez requiere los siguientes componentes:
MATLAB versión 7.5 (R2007b)
Simulink versión 7.0
Real-Time Workshop versión 7.0
Microsoft Visual Studio C/C++ versiones 6.0, 7.1 (.NET 2003), 8.0, 2005 Express Edition
o, en su defecto, Open Watcom C/C++ versión 1.3
Respecto al hardware del target, el cuadro 2.1 muestra los adaptadores de red que son compatibles
con la versión 3.3 de xPC Target.
Cuadro 2.1: Adaptadores de red compatibles con xPC Target 3.3
Tarjetas Ethernet 100 Mbits/s con los siguientes chips:
I8255x (driver I82559)
Chip controlador Ethernet Rápida y otros
chips de la familia Intel 8255x, incluyendo
I82559, I82559ER, I82562EM, I82562, I82551,
I82551ER, y I82550
I8254x (driver I8254x)Chip controlador Ethernet Rápida Gigabit y
otros chips de la familia Intel 8254x
AMD79C971 PCNET (driver RTLANCE)Chip controlador Ethernet Rápida y otros
chips de la familia AMD 79C97x
DP83815 (driver NS83815)Chip controlador Ethernet de National
Semiconductor
3C90x (driver 3C90x)Chip controlador Ethernet y otros chips de la
familia 3Com 3C90x
RTL8139D (driver R8139) Chip controlador Ethernet de Realtek
2.3. xPC Target 12
Tarjetas Ethernet 10 Mbits/s con los siguientes chips:
NE2000 (driver NE2000)
SMC91C9x (driver SMC91C9x)
Los equipos que se utilizan como host y target en este proyecto se abordaran en el capítulo 6.
2.3.2.2. Con�guración del host
Si se despliega el nodo correspondiente al host se pueden ver dos nodos:
Compiler(s) Con�guration En los menús desplegables de la derecha hay que seleccionar el
compilador que esté instalado y la ruta donde se encuentra su ejecutable. Por ejemplo, si
Microsoft Visual Studio esta instalado, hay que seleccionar VicualC como compilador y
escribir C:\Archivos de Programa\Microsoft Visual Studio en la ruta6.
DLM(s) Bajo este nodo se muestra una lista de todos los �cheros .dlm que se encuentran en
el directorio actual de trabajo. Se puede cambiar el directorio actual desde MATLAB o
bien seleccionando Change Host PC Current Directory desde el menú File. Para cargar una
aplicación basta con arrastrar el elemento correspondiente de la lista sobre el nodo del target
que esté conectado, o pulsar el botón derecho del ratón sobre la aplicación y seleccionar el
nombre del target.
Adicionalmente, se deben con�gurar la dirección IP y la máscara de subred en las propiedades
TCP/IP de la red de Windows. En este caso la dirección IP es 192.168.0.2 y la máscara de subred
255.255.255.0
2.3.2.3. Con�guración del target
Antes de conectar cualquier target con el host, es necesario con�gurarlo. Desplegando el nodo
Con�guration del target se encuentran los siguientes tres nodos:
Communication Aquí se con�gura el tipo de conexión entre el host y el target. En el panel
Communication Protocol se debe seleccionar TCP/IP si la conexión es Ethernet, o RS-232 si
la conexión se realiza a través del puerto serie. En este caso se utiliza una conexión Ethernet
con cable cruzado. Los demás parámetros de la con�guración se pueden consultar en el cuadro
2.2.
6Aunque ya se haya de�nido el compilador utilizando el comando mex -setup desde la ventana de comandosde MATLAB, es necesario con�gurar esta opción, de lo contrario se obtendrá un error de Real-Time Workshop alintentar compilar cualquier modelo.
2.3. xPC Target 13
Settings Aquí se con�guran aspectos relacionados con el hardware como la cantidad de memoria
RAM y el tamaño máximo permitido para las aplicaciones.
Appearance Aquí se puede activar o desactivar el scope y, en caso de que el target disponga de
un ratón, el tipo de conexión, ya sea PS/2 o RS-232.
Cuadro 2.2: Parámetros de con�guración de comunicación
Target PC TCP/IP Con�guration
Target PC IP Adress 192.168.0.1 7
TCP/IP Target port 22222
LAN subnet mask adress 255.255.255.0 8
TCP/IP gateway adress 255.255.255.255 9
TCP/IP Target Driver 3C90x o NS83815 (ver capítulo 6) 10
TCP/IP Target bus PCI
2.3.2.4. Disco de arranque
Después de con�gurar correctamente los equipos, el siguiente paso es crear el disco de arranque
que permite cargar el kernel de xPC Target en el equipo correspondiente. Para esto se selecciona el
nodo Con�guration. En la parte derecha hay un menú desplegable que proporciona dos opciones:
BootFloppy Esta opción sirve para crear el disco de arranque utilizando uno de 31/2”.
DOSLoader Esta opción copia los archivos necesarios para el arranque en una memoria �ash
creando un ejecutable. De esta forma, es posible arrancar el kernel en equipos que tengan
instalado previamente un sistema operativo tipo DOS.
Una vez seleccionada la opción adecuada, basta con pulsar el botón Create Bootdisk. El explorador
copia los archivos necesarios con todos los parámetros con�gurados antes.
2.3.2.5. Conexión del target
Para conectar o desconectar un target, se selecciona el nodo correspondiente en el árbol del
explorador de xPC Target con el botón derecho del ratón y después se pulsa sobre Connect o
Disconnect respectivamente. También es posible hacer esto desde el menú Target, o utilizar el
7La con�guración de red de Windows en el host también debe estar en el rango 192.168.x.x Esta dirección signi�ca�red local interna�.
8La con�guración de red de Windows en el host debe coincidir.9Este valor indica que no se usa una puerta de enlace ya que los equipos se conectan directamente.
10En este menú desplegable aparecen todos los drivers de los adaptadores de red soportados por xPC Target.
2.3. xPC Target 14
botón para conectar que se encuentra en la barra de herramientas. El target debe estar conectado
antes de cargar cualquier aplicación.
2.3.3. Visualización
Si el target dispone de un monitor y se activa la opción scope en la con�guración, cuando
arranca el kernel se puede ver en la pantalla la consola de la Figura 2.8. Se observan tres zonas. El
marco de arriba a la izquierda contiene la siguiente información:
Loaded App aquí aparece el nombre de la aplicación que esté cargada.
Memory la memoria RAM disponible
Mode el modo de ejecución, por ejemplo, RT single (Real-Time single tasking). Aparece loader
si no hay ninguna aplicación cargada.
Logging los datos que se registran. Pueden ser el tiempo, la salida, el estado o el TET11. Estos
datos se escogen en la con�guración del modelo desde Simulink.
StopTime el tiempo total de ejecución de la aplicación.
SampleTime el tiempo de muestreo
AverageTET el TET promedio
Execution el reloj de la aplicación
En el marco de arriba a la derecha aparece la consola de comandos pulsando la tecla c, donde
se puede arrancar o parar la aplicación escribiendo start o stop respectivamente y pulsando luego
Intro. Aquí se muestran también mensajes del sistema relativos a la aplicación y su ejecución.
Para conocer todos los comandos de la consola consultar el apartado Target PC Command-Line
Interface Reference en [3].
Por último, en el área restante de la pantalla se muestran los diferentes scopes para visualizar
señales que se hayan de�nido en el modelo.
Si no se dispone de un monitor, una imagen instantánea de la consola se puede ver desde el
host utilizando el comando xpctargetspy desde la ventana de comandos de MATLAB.
2.3.3.1. xPC Target Scopes
Para monitorizar señales se dispone de un bloque llamado Scope (xPC) en la librería Misc. de
xPC Target para Simulink. Dependiendo de su con�guración, un scope puede ser de tres tipos:
target, host o �le.
11TET = Task Execution Time. Es el tiempo real que tarda en ejecutarse un paso completo de simulación.
2.3. xPC Target 15
Figura 2.8: Consola de xPC Target
Scope tipo target este tipo se usa para visualizar señales en el monitor del target. Cada bloque
de este tipo que se añadan al modelo genera una grá�ca con su respectiva señal en la pantalla
del target cuando se cargue la aplicación.
Scope tipo host este tipo se usa para visualizar señales en el host de forma similar a como se
visualizan con un scope estándar de Simulink.
Scope tipo �le este tipo registra los valores de la señal en un �chero .dat y luego lo almacena en
el disco duro del target.
Para conocer con detalle los parámetros de con�guración de este bloque consultar el apartado I/O
Reference\Miscellaneous Blocks\Blocks - Alphabetical list\Scope (xPC) (xPC Target Scope) en [3].
2.3.4. Generación del código
Como ya se dijo anteriormente, Real-Time Workshop genera automáticamente el código de
cualquier modelo obtenido con Simulink. Sin embargo, a la hora de crear un modelo hay que tener
en cuenta la compatibilidad de los bloques. Para ver una lista completa de la compatibilidad de
los bloques de Simulink con Real-Time Workshop consultar el apéndice A.
2.3.4.1. Con�guración del modelo para la generación de código
Real-Time Workshop tiene la capacidad de generar código para múltiples targets diferentes, no
sólo para xPC Target. Por esta razón, hay que seleccionar para qué tipo de target se genera el
código. Para ello, hay que entrar en Con�guration Parameters en el menú Simulation o pulsando
ctrl+E y seleccionar en el árbol de la izquierda Real-Time Workshop. En el panel Target selection
2.3. xPC Target 16
de la derecha al pulsar el botón Browse aparece una lista de todos los targets disponibles. Hay que
seleccionar xpctarget.tcl
Si se quiere consultar de forma sencilla todos el código generado al �nal de la compilación,
se debe marcar la casilla Generate HTML Report del panel Documentation and traceability. Este
informe generado de manera automática contiene toda la información sobre �cheros de cabecera,
de�nición de variables, �cheros fuente, etc.
Cuando se selecciona el target, bajo el nodo Real-Time Workshop aparece un nuevo nodo lla-
mado xPC Target options. Aquí se puede elegir si la aplicación se carga automáticamente en el
target después de la compilación en el panel Target options, o si se quiere registrar el TET, en el
panel Data logging options.
Para conocer completamente la utilidad de todas las demás opciones de con�guración consultar
el apartado Con�guration Parameters en [4].
2.3.4.2. Compilación de la aplicación
Para compilar el modelo hay que seleccionar Build Model en el apartado Real-Time Workshop
del menú Tools o pulsar ctrl+B. El proceso que se lleva a cabo es el siguiente:
Se generan módulos de código C
Se compilan los módulos generados junto con otro módulos estáticos
Se enlazan los módulos compilados en una biblioteca de enlace dinámico (.dll)
Se transforma el archivo .dll en una aplicación especí�ca para el kernel de xPC Target (.dlm)
Si la opción de carga automática está activada en la con�guración, la aplicación pasa al target justo
después de terminar el proceso. En caso contrario se puede cargar cualquier aplicación manualmente
desde el explorador de xPC Target, como se menciona en la sección 2.3.2.2.
2.3.5. Interacción entre host y target
Como se explica en la sección 2.3.1.1, existen varias formas de interacción host-target.
2.3.5.1. xPC Explorer
Además de la con�guración de los equipos, el explorador tienen otras funcionalidades que re-
sultan interesantes.
Para arrancar o parar la aplicación que está cargada en el target, se puede seleccionar Start/Stop
Application en el menú Application o pulsar ctrl+T. También es posible usar los botones de la barra
de herramientas.
En el nodo File system se puede acceder a los archivos de arranque del disco de 31/2” o a los
archivos que haya en el disco duro si el target dispone de alguno. De esta forma, se puede hacer una
2.3. xPC Target 17
copia en el host de los datos que se hayan registrado con los scopes tipo �le después de ejecutar
una aplicación, basta con seleccionar el archivo que se quiera copiar con el botón derecho del ratón
y luego pulsar sobre Save to Host PC. xPC target sólo es compatible con el sistema de archivos
FAT32, por lo que en este nodo sólo aparecen los discos o particiones que tengan ese formato.
En el nodo PCI Devices se puede ver una lista con información de todos los dispositivos PCI
que se encuentren en el target.
Cuando se haya cargado alguna aplicación, aparece un último nodo con el mismo nombre que
tenga el modelo. Si se pulsa sobre él, se ve en la parte derecha información de la aplicación, como
el nombre, los tiempos, el número de señales y parámetros en el modelo, etc. También hay un panel
que permite cambiar el tiempo de ejecución, el tiempo de muestreo y el método como se registran
los datos. Además, un tercer panel permite enviar al workspace de MATLAB el tiempo, la salida,
el estado o el TET, si la opción de registro de estos se con�guró previamente en el modelo desde
Simulink. Si se despliega este tercer nodo se pueden ver otros dos subnodos:
Model Hierarchy aquí aparece un árbol completo del modelo con todos los subsistemas, bloques
y señales que tenga. Al seleccionar cualquier de ellos se ve en la parte derecha los parámetros
en el caso de bloques y los valores en el caso de señales. Si la aplicación se encuentra en
marcha, se puede ver como varían los valores de las señales. También es posible modi�car los
parámetros en tiempo de ejecución. En este caso, el explorador envía una señal al target y
este actualiza el valor dentro de la aplicación que está ejecutando.
xPC Scopes aquí se muestran un nodo por cada scope que se encuentre de�nido en el modelo.
En la parte derecha de la pantalla se muestran los mismos parámetros de con�guración que
aparecen en el bloque de Simulink. Cada modelo puede contener hasta un máximo de 10
scopes de cada uno de los tres tipos. Se pueden añadir más scopes sin necesidad de modi�car
y recompilar el modelo, seleccionando Add a scope en el menú Application. Bajo el nodo de un
scope se muestran las señales que se representan en la correspondiente grá�ca. Para añadir una
señal se puede pulsar el botón derecho del ratón sobre la señal deseada en el árbol del modelo
y luego seleccionar el número que identi�ca el scope, o simplemente arrastrar el elemento de
la lista sobre el nodo. Todos los scopes que se añadan posteriormente a la compilación deben
ser inicializados manualmente antes de arrancar la aplicación, o de lo contrario no se dibuja
la grá�ca. Para esto hay que pulsar con el botón derecho del ratón sobre el scope y seleccionar
Start. Para ver scopes del tipo host , además de la inicialización manual se debe seleccionar
View Scope o pulsar el botón Scope Viewer en la barra de herramientas.
2.3.5.2. Registro de datos
Además de poder copiar al host cualquier señal registrada con scopes tipo �le, se puede copiar
el tiempo, la salida, el estado o el TET, como se menciona en el apartado anterior. Para ello hay
que hay que añadir un bloque Outport al diagrama del modelo, entrar en Con�guration Parameters
2.3. xPC Target 18
en el menú Simulation, seleccionar Data Import/Export en el árbol de la izquierda y marcar las
casillas Time, States y Output. Para el caso del TET, seleccionar xPC Target Options bajo Real-
Time Workshop y marcar Log Task Execution Time. De esta forma, después de compilar y ejecutar
la aplicación se puede acceder a estos datos a través del explorador de xPC Target, marcando las
casillas correspondientes en el panel Logging del nodo de la aplicación y pulsando el botón Send
to MATLAB Workspace.
2.3.5.3. Interfaz grá�ca de usuario con el editor de MATLAB
Ejecutando el comando target_object = xpc desde la ventana de comandos de MATLAB, se
crea un objeto cuyas propiedades y métodos proporcionan otra forma de interacción. Por ejemplo,
el método target_object.start arranca la aplicación cargada en el target que esté conectado desde
la ventana de comandos de MATLAB. Esto se puede usar en combinación con el editor de GUIs
de MATLAB12 para crear una interfaz grá�ca de usuario que interaccione con el target y la apli-
cación cargada. Para conocer una lista completa de las propiedades y métodos de un objeto target
consultar el apartado Target and Scope Objects en [3].
2.3.5.4. Interfaz grá�ca de usuario con Simulink en modo Externo
El propio diagrama del modelo en Simulink sirve como interfaz grá�ca de usuario para xPC
Target y permite de una forma sencilla interactuar con la aplicación en tiempo de ejecución.
Simplemente hay que seleccionar External y luego Connect to Target en el menú Simulation. Esto
descarga la aplicación al target y permite arrancarla o pararla desde Simulink. Cuando se modi�ca
el valor de un parámetro en algún bloque del modelo en tiempo de ejecución, Simulink envía una
señal al target y este actualiza dicho valor en la aplicación. De esta forma se puede ver como
in�uyen los cambios en los parámetros en la respuesta en tiempo real.
2.3.5.5. Interfaz de programación de aplicaciones
xPC Target también incluye dos interfaces de programación de aplicaciones o API 13 que per-
miten crear aplicaciones personalizadas para controlar una aplicación de tiempo real que se ejecute
en xPC Target.
Por una parte, xPC Target API consiste en una biblioteca dll con una serie de funciones en
lenguaje C que se pueden llamar desde cualquier aplicación escrita en C/C++. Estas funciones
permiten:
Establecer comunicación entre el host y el target.
Cargar una aplicación .dlm en el target.
12para entrar en el editor basta escribir guide en la ventana de comandos y pulsar Intro.13API = Application Programming Interface.
2.3. xPC Target 19
Arrancar la aplicación cargada.
Monitorizar el comportamiento de la aplicación.
Parar la aplicación cargada.
Descargar la aplicación.
Terminar la comunicación entre los equipos.
Por otra parte, xPC Target COM API es una colección organizada de objetos, clases y funciones
accesibles desde un entorno grá�co de desarrollo como Microsoft Visual Basic, o desde cualquier
entrono de programación compatible con objetos COM como Visual C++ o Java, con la misma
funcionalidad que xPC Target API. De esta forma, se pueden desarrollar GUIs que interaccionen
con xPC Target pero con funcionamiento independiente de MATLAB.
Para obtener más información consultar el apartado API Guide en [3].
2.3.6. Interfaz grá�ca de usuario con Simulink y Virtual Reality Toolbox
Los pasos para crear una interfaz grá�ca usando un modelo de Simulink que contenga bloques
de Virtual Reality Toolbox son los siguientes:
1. Decidir en el modelo Simulink que se va a ejecutar en el target 14, a cuáles de sus parámetros
y señales se tendrá acceso a través de los bloques de control y representación grá�ca del
modelo Simulink que se va a ejecutar en el host 15.
2. Marcar los parámetros en el modelo aplicación que van conectados a los bloques de control
en el modelo interfaz. Ver sección 2.3.6.3.
3. Marcar las señales en el modelo aplicación que van conectadas a los bloques de representación
grá�ca en el modelo interfaz. Ver sección 2.3.6.4.
4. En la ventana de comandos de MATLAB, ejecutar el comando xpcsliface('modelo_aplicación')16
para crear un modelo interfaz plantilla. Esta función genera un nuevo modelo de Simulink
que contiene los bloques de interfaz de xPC Target, To xPC Target y From xPC Target,
de�nidos por los parámetros y señales marcadas anteriormente.
5. Al modelo interfaz plantilla añadir bloques de control para los bloques To xPC Target y
bloques de representación grá�ca de Virtual Reality Toolbox para los bloques From xPC
Target.
6. Arrancar la aplicación del target junto con el modelo interfaz creado.
14llamamos a este modelo �modelo aplicación�.15llamamos a este modelo �modelo interfaz�.16la ejecución de este comando requiere obligatoriamente que exista una conexión con el target .
2.3. xPC Target 20
Figura 2.9: Bloque To xPC Target
2.3.6.1. Bloque To xPC Target
Este bloque recibe como entrada la señal de un bloque de control17 y lo escribe como nuevo
valor del parámetro especi�cado dentro de la aplicación del target. Este proceso se ilustra en la
Figura 2.9.
Este bloque está implementado como una S-Function de código M, optimizado para cambiar un
parámetro sólo cuando exista una diferencia entre la entrada y el valor en el último paso de simu-
lación. La función xpcsliface con�gura automáticamente los parámetros de este bloque. Para ver
una descripción detallada de estos parámetros consultar el apartado I/O Reference\Miscellaneous
Blocks\Blocks - Alphabetical list\To xPC Target en [3].
2.3.6.2. Bloque From xPC Target
Este bloque lee el valor de la señal especi�cado dentro de la aplicación del target y lo escribe en
la salida, conectada a su vez a la entrada de un bloque de representación grá�ca, como se observa
en la Figura 2.10.
Este bloque está implementado como una S-Function de código M. Como se ejecuta en tiempo
no-real, es completamente asíncrono al modelo que se ejecuta en tiempo real. Dependiendo del
tiempo de muestreo del target y la velocidad actual a la que se ejecuta el modelo interfaz, es
posible que el bloque lea más de un valor en el mismo tiempo de muestreo. En este caso el target
devuelve el mismo valor. Por el mismo motivo, es posible que el bloque se salte alguna muestra
entre dos valores devueltos satisfactoriamente. La función xpcsliface con�gura automáticamente
los parámetros de este bloque. Para ver una descripción detallada de estos parámetros consultar el
apartado I/O Reference\Miscellaneous Blocks\Blocks - Alphabetical list\From xPC Target en [3].
2.3.6.3. Marcación de parámetros
1. Abrir el modelo aplicación.
2. Pulsar el botón derecho del ratón sobre el bloque cuyo parámetro se desee marcar y seleccionar
Block Properties.
17por ejemplo, el bloque Signal Builder.
2.3. xPC Target 21
Figura 2.10: Bloque From xPC Target
3. En el cuadro de texto Description, escribir xPCTag(1, . . . index_n) = label_1 . . . label_n;18
donde index_n es el índice del parámetro, empezando por 1, y label_n es el nombre que
recibirá el bloque To xPC Target correspondiente en el modelo interfaz.
4. Guardar los cambios en el modelo.
2.3.6.4. Marcación de señales
1. Abrir el modelo aplicación.
2. Pulsar el botón derecho del ratón sobre la línea que representa la señal que se desea marcar
y seleccionar Signal Properties.
3. Seleccionar la pestaña Documentation.
4. En el cuadro de texto Description, escribir xPCTag(1, . . . index_n) = label_1 . . . label_n;
donde index_n es el índice dentro del vector señal, empezando por 1, y label_n es el nombre
que recibirá el bloque From xPC Target correspondiente en el modelo interfaz.
5. Guardar los cambios en el modelo.
Sólo es posible marcar señales a la salida de bloques no-virtuales, es decir, no es posible marcar
señales a la salida de subsistemas, multiplexores, demultiplexores, etc. Para solventar este problema,
se puede añadir un bloque Gain con valor 1 donde haga falta y marcar la señal de salida.
18nótese que los índices van separados por comas y las etiquetas por espacios.
Top Related