Integración de Laboratorios Remotos en eMersion

Anuncio
Integración de Laboratorios
Remotos en eMersion
Héctor Vargas.Departamento de Informática y Automática
Universidad Nacional de Educación a Distancia
Noviembre - 2007
Contenido
Como construir los laboratorios remotos de manera
sistemática (nuestra experiencia Ejs/LabVIEW)
• Estructura de comunicación
• Implementación usando Ejs y LabVIEW
Documentación a preparar para los laboratorios
• Organización de la documentación
• Plantillas web
Integración de los laboratorios en eMersion
• Recursos a enviar por los sitios remotos
• Pruebas remotas
Control de accesos
• Sistema de reservas (en desarrollo)
• Autenticación
UNED
Madrid – Noviembre 2007
Visión General
UNED
Madrid – Noviembre 2007
Laboratorios Remotos
Laboratorios remotos usando Ejs/LabVIEW
•
Ventajas de usar ambas herramientas de software: Posibilidad de generar agradables
simulaciones interactivas en Java junto a la flexibilidad que LabVIEW provee para
conectar con instrumentación externa.
•
Es posible transparentar el proceso de crear laboratorios virtuales y remotos de control
ocultando los detalles de implementación TCP/IP.
Cliente
Internet
TCP/IP
Servidor
Easy Java Simulations
LabVIEW
• Generador de aplicaciones Java
• Paradigma Modelo, Vista y Controlador.
• Applets Java embebidos en páginas HTML.
• Aplicación servidor (basado en TCP/IP).
• Adquisición de datos y control de lazo cerrado.
• Intercambio de datos con el cliente Ejs.
UNED
Madrid – Noviembre 2007
Laboratorios Remotos
Estructura de comunicación
•
Intercambio continuo de vectores de control y estado entre el cliente Ejs y el servidor
LabVIEW usando sockets TCP/IP.
•
Conocimiento de uso de Sockets TCP/IP en Java y la librería de bloques comunicación
TCP de LabVIEW.
Ejs
LabVIEW
Hilo
Transmisor
Vector de Control
Hilo
Receptor
Enlace TCP/IP
Hilo
Receptor
Vector de Estado
UNED
Hilo
Transmisor
Hilo
ejecutando
el lazo de
Control
RT
Madrid – Noviembre 2007
Laboratorios Remotos
Implementación tradicional (Servidor en LabVIEW)
Pseudo código
UNED
Madrid – Noviembre 2007
Laboratorios Remotos
Implementación tradicional (Cliente en Ejs)
UNED
Madrid – Noviembre 2007
Laboratorios Remotos
Nuevo esquema de implementación (en desarrollo)
•
Métodos internos en Ejs para manejar la conexión con el servidor.
•
Encapsulamiento de los hilos analizador de Comandos y Transmisor en un módulo
genérico de LabVIEW.
Ejs
LabVIEW
Hilo
Analizador
Comandos
Hilo
Transmisor
Enlace TCP/IP
Asincrónico
Hilo
Transmisor
Hilo
Receptor
UNED
Hilo
ejecutando
el lazo de
Control
Madrid – Noviembre 2007
Laboratorios Remotos
Servidor – Analizador de comandos y transmisor
•
JiL Server implementa los módulos Analizador de Comandos y Transmisor.
•
JiL Server incluye todos los métodos para interpretar y ejecutar comandos
entrantes desde Ejs y enviar las respuestas asociadas a estos comandos.
Panel frontal de JiL Server. JiL Server usa la característica VI Server de LabVIEW
UNED
Madrid – Noviembre 2007
Laboratorios Remotos
Servidor – Desarrollo del VI de control local
•
Esta parte del servidor es generada por el desarrollador siguiendo la estructura
típica de implementación de lazos de control en LabVIEW.
•
JiL Server envuelve este VI con los métodos TCP/IP de comunicación para
conectar con Ejs.
Típico lazo de control en LabVIEW incluyendo hardware en el lazo.
UNED
Madrid – Noviembre 2007
Laboratorios Remotos
Cliente – Métodos internos en Ejs
Retorno
void
Métodos para controlar la conexión
_external.connect(): Conecta la aplicación Ejs a la
fuente de datos a través de JiL Server.
void
_external.disconnect(): Desconecta la aplicación Ejs
desde la fuente de datos a través de JiL Server.
void
_external.runVI(boolean arg): Ejecuta un VI de
LabVIEW en dos modos de ejecución. Si arg es
TRUE, el VI remoto debe finalizar su ejecución en
una iteración del diagrama de bloques. Por otra parte,
si arg es FALSE, el VI remoto será lanzado y
ejecutado sin esperar a que éste finalice (intercambio
continuo de datos con el servidor).
void
void
boolean
String
Retorno
Métodos para establecer y obtener variables
void
_external.setValue(string arg1, boolean arg2): Escribe
una variable TF de LabVIEW cuyo nombre es
especificado en arg1 con el valor arg2.
void
_external.setValue(string arg1, int arg2): Escribe una
variable I32 de LabVIEW cuyo nombre es especificado
en arg1 con el valor arg2.
void
_external.setValue(string arg1, double arg2): Escribe una
variable DB de LabVIEW cuyo nombre es especificado
en arg1 con el valor arg2.
_external.step(int arg): Realiza el intercambio
asincrónico de datos entre Ejs y JiL Server. Este
método debe ser usado en la evolución de Ejs. La
entrada arg no es usada actualmente y está
reservada para una futura característica. Por defecto,
debe ser 1 .
void
_external.setValue(string arg1,string arg2): Escribe una
variable ABC de LabVIEW cuyo nombre es especificado
en arg1 con el valor arg2.
boolean
_external.getBoolean(string arg): Lee una variable TF de
LabVIEW cuyo nombre se especifica en arg.
_external.synchronize(): Envía los parámetros de
control a JiL Server cuando el usuario interactúa con
la vista Ejs .
int
_external.getStatus(): Retorna el estado actual de la
conexión TCP/IP con un verdadero o falso.
_external.getErrorMsg(): Retorna el último mensaje
de error capturado durante la conexión como un
string.
UNED
_external.getInt(string arg): Lee una variable I32 de
LabVIEW cuyo nombre se especifica en arg.
double
_external.getDouble(string arg): Lee una variable DB de
LabVIEW cuyo nombre se especifica en arg.
String
_external.getString(string arg): Lee una variable ABC de
LabVIEW cuyo nombre se especifica en arg.
Madrid – Noviembre 2007
Laboratorios Remotos
Cliente – Configurar la fuente de datos
•
Configurar la fuente de datos.
•
Conectar variables Ejs a variables LabVIEW.
•
Usar los métodos internos para la lógica de
conexión.
UNED
Madrid – Noviembre 2007
Resumen
Resumen de pasos a seguir usando JiL Server
•
Programar la simulación del sistema usando Ejs.
•
Desarrollar un programa LabVIEW para controlar el sistema localmente.
•
Localizar el programa LabVIEW anterior en el directorio provisto por JiL Server
para las aplicaciones cliente y luego abrir e iniciar el servidor.
•
Finalmente, modificar la versión virtual del laboratorio creado con Ejs para
agregar la conexión con el servidor usando los métodos internos.
Servidor
Cliente
Lazo de Control.vi
JiL
Internet
UNED
Madrid – Noviembre 2007
Ejemplos
Simulación del sistema de tres tanques – modo local
Proceso real en el laboratorio
Relación de variables
Pump 1
Pump 2
Q1
Q2
A
T1
T3
T2
h1
h3
Sn
az1
dh1
= Q1 − Q13 − Q1leak
dt
dh
A 3 = Q13 − Q 32 − Q 3 leak
dt
dh
A 2 = Q 2 + Q 32 − Q 20 − Q 2 leak
dt
A
UNED
Q13
az3
h2
Q32
az2
Q20
Q ij = az i S n sgn( hi − h j ) 2 g hi − h j
Q13 = az 1 S n sgn( h1 − h3 ) 2 g h1 − h3
Q 32 = az 3 S n sgn( h3 − h 2 ) 2 g h3 − h 2
Q 20 = az 2 S n 2 gh 2
Madrid – Noviembre 2007
Ejemplos
El sistema heatflow – Proceso real
Proceso real en el laboratorio
Relación de variables
Calefactor (Vh)
Ta
Ventilador (Vb)
Temperatura
ambiente
Flujo de Temperatura
S1
S2
S3
x1
x2
x3
x3
(
.
Tn = F V , V , Ta , xn
h b
)
modelo
−τ d s
(
)
T (s ) K p 1 + τ 3s e
=
G(s) = n
(1 + τ1s )(1 + τ 2 s )
Vh (s )
Tn: Temperatura en el sensor n.
Vb: Voltaje aplicado al calefactor.
Vh: Voltaje aplicado al calefactor.
Ta: Temperatura ambiente.
xn: Distancia desde el sensor n al calefactor.
UNED
Modelo identificado - IDENT
Tn (s): Temperatura en el sensor n.
Vh (s): Voltaje aplicado al calefactor.
Madrid – Noviembre 2007
Documentación
Organización de la documentación (plantilla web)
•
Protocolo de Tareas
•
Manual de la interfaz cliente
•
Guión de Prácticas
•
Anexos
•
Versión PDF de cada página
Protocolo de acceso
UNED
Documentación de la práctica
Madrid – Noviembre 2007
Integración en eMersion
Recursos a enviar por los sitios remotos
•
Protocolo de Tareas
•
Manual de la interfaz cliente
•
Guión de Prácticas
•
Anexos
•
Versión PDF de cada página
•
Applet Java desarrollado con Ejs
Pruebas de conectividad
•
Integración del laboratorio remoto en eMersion.
•
Pruebas de acceso remoto.
UNED
Madrid – Noviembre 2007
Control de Acceso
Sistema de reservas
Estudiante
Estudiante
Estudiante
Red UNED
Red UMH
1. Applet Java de cada laboratorio
2. Web server Apache Tomcat
3. MySQL server
4. eMersion
Red UPC
Windows 2000
Server
IP: 62.204.199.62/24
http://lab.dia.uned.es
Red UAL
Red UNILEON
Windows O.S.
IP: X.Y.W.Z/24
http://xywz.ual.es
Red UPV
Red UA
Lazo de Control y Módulo de Comunicación
Base de datos para reservas. accesslist
UNED
Madrid – Noviembre 2007
Control de Acceso
Sistema de reservas (que hacer en los sitios remotos)
•
Desarrollar el laboratorio virtual y remoto usando Ejs y LabVIEW sin considerar
autenticación.
•
Instalar MySQL Server y crear una instancia llamada “netlab” con sólo una
tabla llamada accesslist. Esta tabla será escrita desde el servidor central con
las nuevas reservas realizadas por un usuario. Por otro lado, será leída
localmente por la aplicación LabVIEW para propósitos de autenticación.
•
Agregar a la aplicación LabVIEW la lógica de autenticación requerida. Esto
implica recibir el username y password desde Ejs, consultar la tabla accesslist
de la BD netlab y, finalmente, dar acceso o no a la planta si el usuario cumple
los requisitos.
•
Para consultar la base de datos, la aplicación LabVIEW utiliza la librería
gratuita LabSQL (http://jeffreytravis.com/lost/) para accesar MySQL.
•
Agregar a la aplicación Ejs los métodos para autenticación.
UNED
Madrid – Noviembre 2007
Descargar