18

Entorno de tiempo realbibing.us.es/proyectos/abreproy/4577/fichero/PARTE+I+... · Capítulo 2 Entorno de tiempo real 2.1. Obtención rápida de prototipos y simulación con hard-ware

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

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.