Transcript
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