Proyecto UWS (7)

publicado en: Base de datos, Programación, SCADA | 0

Esta entrada es continuación de Proyecto UWS (6).

Entrada de datos
Entrada de datos

Mi proyecto personal de entorno de desarrollo SCADA ha tomado nuevos derroteros. Tenía pendientes bastantes temas (usuarios, otros drivers, más controles para la interfaz…) pero se ha apropiado de él una necesidad que ha orientado la nueva versión. Pongo en situación: quiero almacenar una serie de valores históricos que se van a recoger manualmente, para poder analizarlos con posterioridad: sacar tendencias, exportar tablas, hacer cálculos… Podría recurrir a una hoja de cálculo, pero no es lo ideal si la tienen que manejar varias manos y el volumen de información es grande. Lo adecuado es una base de datos, pero hay que proporcionar un método de entrada sencillo, como una página web. Y aquí es donde he pensado añadir un nuevo controlador a UWS. Puede parecer forzar algo el sentido original del SCADA, pero bien pensado, ¿qué diferencia hay entre intercambiar información con un servidor físico a hacerlo con una base de datos?
El nuevo módulo, DBPLCModule hace de driver para este tipo de comunicación. La clase derivada de PLC controla la conexión, y parece natural que una tabla se amolde a una clase Memory y cada variable Tag represente una columna. La reinterpretación de los métodos existentes es también directa. ¿Qué devuelve get()? El valor más reciente. Para eso, hay que poder ordenarlos temporalmente, y eso requiere una columna en cada tabla de tipo datetime. Es consistente con la necesidad de almacenar valores históricos. ¿Qué almacena set()? El valor actual. O uno antiguo, aprovechando el polimorfismo. ¿Qué hace el método connect() del PLC? Conectarse a la base de datos y actualizar en el motor el valor de las variables de acuerdo a su contenido. También se añade un escaneo periódico, porque otra aplicación podría estar actualizando por su cuenta la información. Aquí he añadido una funcionalidad interesante: cuando llamamos a este método, DBPLC tiene ya toda la información necesaria sobre la base de datos, tablas y columnas, así que, ¿por qué no crear la estructura si no existe previamente? Hecho, ni siquiera debemos molestarnos en levantar todo este andamiaje, basta con la clásica llamada a ensemble.deploy() para tenerlo todo funcionando.

Hasta aquí lo directo, pero sigue siendo insuficiente para responder a las necesidades iniciales. Para ello es necesario añadir algunas funciones extra:

  • Datapicker
    Datapicker

    Tenemos que insertar nuevos datos. Y no nos vale Tag.set(), porque debemos poder agregar un registro completo. Se resuelve con el método Memory.set_row(), al que se le pasa como argumento un diccionario con los valores de las columnas y, opcionalmente, la fecha y hora de registro. Esta función clama a gritos un nuevo control en la interfaz, que tiene que ser un formulario. He adoptado el mismo criterio de simplicidad que otras veces: el atributo data-table lo liga a nuestro control, y nos podemos olvidar de código extra.
    El código en j.js busca todas las variables (atributo data-dir) en su interior, actualiza los valores iniciales y añade los eventos necesarios. El campo con atributo data-datetime es opcional, y se convertirá en un calendario para seleccionar fecha y hora de inserción. Para quien se lo pregunte, no necesitamos hacer referencia a la tabla, ya que está implícita en la memoria a la que pertenecen las variables.

  • Es necesario también un método para reclamar los valores de una variable entre dos fechas. Éste es Tag.get_data(), al que se le pasan los instantes de inicio y el de fin, y devuelve un listado de pares [tiempo,valor]. Esto va a ser útil para, por ejemplo, trazar una tendencia. También va a ser sencillo para el desarrollador, basta incluir un div con las variables dentro del atributo data-trend, y UWS lo transformará en una gráfica.

    Tendencia
    Tendencia

    En este caso va a ser importante añadir un id, para en el futuro discriminar acciones sobre diferentes tendencias. Para este elemento he recurrido a la estupenda librería Flot. De momento, las tendencias de UWS están en una fase muy inicial, y necesitan controles extra para moverse, añadir y eliminar variables, ampliar y reducir, usar varias escalas, etc.

Faltan todavía más cosas. Es necesario poder exportar datos, consultar valores en una fecha determinada, quizás editar la información… Además de la gestión de usuarios. Será en próximas entregas.
Recursos asociados:
SCADA UWS (versión 1.4) y código de ejemplo.

Novedades 20160118

Los fabricantes de controladores cada vez se toman más en serio la conectividad de sus equipos, y no me refiero a nivel de campo. Las instalaciones de control aisladas renuncian al enorme potencial de la integración con el resto de la organización. Si hace poco hablaba de la librería TCP File Server de Siemens, Omron ha dado un paso más allá. Los NJ501 y NJ101 comunican directamente con bases de datos, sin intermediarios. Ellos lo enfocan a control numérico, se puede pensar en el IoT… pero la clave está en la gestión unificada de la producción.
La Agencia Europea de Seguridad de las Redes y de la Información (ENISA) ha publicado un estudio sobre el grado de madurez de la seguridad en los sistemas SCADA e ICS, orientado a las actividades de los estados miembros, sus legislaciones y estrategias. España destaca en la formación, debido a los cursos del INCIBE y la Universidad de León. El estudio también propone una serie de recomendaciones: alinear esfuerzos, buenas prácticas, estandarización, alertas, sensibilización, formación e investigación.
Omron dispone de una plataforma de formación online gratuita en la que se pueden encontrar cursos de diversas materias: sistemas de automatización, control, motores, fuentes, relés, interruptores, componentes de seguridad, sensores, visión, ahorro energético… Los textos son muy claros, en español, y no requieren un nivel elevado, de modo que constituyen un material muy interesante para quien quiera iniciarse por su cuenta.
Keith Blodorn, de ProSoft Technology, ha descrito recientemente en un artículo las características fundamentales de la Industria 4.0. Se centra en remarcar la evolución frente a la integración de sistemas tradicional, que en realidad es bastante gradual: lo que supone en cuanto a supervisión remota, movilidad e interoperatividad. Y precisamente debido a que es una evolución, más que revolución, la adaptación es sencilla, teniendo presente aspectos como escalabilidad, migración de red y ciberseguridad.
Telefónica ha publicado su libro blanco sobre las smart cities, una buena visión del estado del arte. A mi modo de ver, lo más interesante está en la cuarta parte. Tras esbozar una hoja de ruta, se ahonda en las relaciones que se deben establecer entre actores (ciudadanos, universidad, empresas, administración), el marco legal, la financiación y los modelos. De manera demasiado breve también se presenta algún caso práctico, como el de Rivas Vaciamadrid. Por último, el libro propone un decálogo para las las futuras ciudades inteligentes.