Hoy vemos otro ejemplo de como las técnicas nacidas en el seno de la Ingeniería de Software son útiles en muchos otros campos, sobre todo la parte de modelado. En concreto, veremos como hemos creado un nuevo lenguaje para diseñar minas, sobre todo pensando en el sistema IoT (Internet de las cosas) de la mina, es decir el conjunto de sensores y actuadores que permiten monitorizar y reaccionar a eventos peligrosos que ocurran dentro de la mina. La creación de un nuevo lenguaje siempre es un ejercicio complicado (ej. aquí hablamos del proceso de creación del lenguaje Dart) pero cuando se diseña bien permite a los expertos de dominio ser mucho más efectivos con sus diseños. Este tipo de lenguajes se llaman “lenguajes específicos de dominio” (DSLs, por su acrónimo en inglés -> Domain Specific Language). En este post, veremos un lenguaje externo para minería y sus ventajas.

El porqué de un lenguaje específico para el sector de la minería

La minería es una de las industrias que actualmente aprovecha el uso de sistemas de Internet de las Cosas (IoT) para optimizar los procesos de extracción de minerales. Por ejemplo, la minería subterránea de carbón busca mejorar la seguridad de los trabajadores implementando sistemas de monitoreo y control de la atmósfera. Durante los procesos de exploración, explotación y extracción del carbón, los trabajadores están expuestos a muchos factores de riesgo que pueden afectar su salud como gases explosivos y tóxicos, inestabilidad del terreno, riego de incendios, altas temperaturas, y altos niveles de humedad [Knights]. Los sistemas de IoT pueden mejorar la seguridad de los trabajadores soportando tareas como el monitoreo constante de la atmósfera, control del sistema de ventilación, generación de alarmas, y geolocalización de los trabajadores dentro de las minas.

En Colombia, el reglamento de seguridad para obras mineras subterráneas (decreto 1886 de 2015) determina los límites de concentración de gases explosivos y tóxicos. Si se supera alguno de estos límites, se deben realizar una serie de acciones/adaptaciones como encender las alarmas, activar el sistema de ventilación, cerrar o abrir los conductos de ventilación, y otras tareas que se pueden soportadas mediante sistemas IoT que involucran diferentes tipos de sensores y actuadores. Sin embargo, el diseño, despliegue y gestión de estos sistemas en minas subterráneas no es una tarea fácil.

Expertos del sector confirman que si dispusieran de un lenguaje que permitiera crear de una forma fácil y precisa el diseño de una mina, muchas de estas tareas (como el análisis de las características de seguridad de la mina diseñada) se podrían realizar de una forma mucho más efectiva, barata y segura.

Un DSL para el modelado de sistemas IoT en minería

Una de las soluciones más utilizadas para hacer frente a la complejidad de diseño de sistemas es la Ingeniería Dirigida por Modelos (MDE). El uso de modelos permite elevar el nivel de abstracción y capturar los aspectos de interés de un sistema real. Esto ayuda a evitar la complejidad e incertidumbre de los escenarios reales y complejos como sucede en la implementación de sistemas IoT en minas subterráneas de carbón.

Los modelos se puede definir con un lenguaje genérico como UML o, como hemos comentado antes, creando un lenguaje específico para ese sector. El problema de los lenguajes específicos es que hay que crearlos y esto tiene un coste inicial. Pero vienen con muchas ventajas ya que un DSL ofrece un conjunto de abstracciones y vocabulario más cercano al que ya emplean los expertos del dominio, facilitando el diseño de nuevos sistemas para ese dominio, en nuestro caso, el diseño de nuevas minas de carbón sin tener que ser expertos en programación o en modelado de sistemas.

Es ahí donde entra en juego nuestra propuesta: un DSL para soportar el diseño, despliegue, y gestión de sistemas IoT en la minería subterránea de carbón. Este DSL es una extensión de nuestro trabajo presentado en SAM’21, y será próximamente será discutido en las JISBD ’22.

Los DSL están diseñados para describir o modelar cosas en un dominio o contexto específico. Los DSL abordan las necesidades de un dominio de aplicación específico que no puede ser cubierto por un Lenguaje de propósito general (GPL). Básicamente, un DSL se compone de tres elementos: la sintaxis abstracta, la sintaxis concreta y la semántica:

  • La sintaxis abstracta suele estar representada por un metamodelo o gramática que define los conceptos del dominio y sus relaciones.
  • La sintaxis concreta define la notación (gráfica, textual o híbrida) para la sintaxis abstracta. La notación utilizada por los usuarios para definir los modelos puede tener un gran impacto en la usabilidad del lenguaje. Para representar conceptos con un DSL gráfico, se utilizan objetos gráficos como conectores, bloques, ejes, flechas y otros. En cambio, un DSL textual se basa en la gramática; por ejemplo, SQL es un DSL textual que se utiliza para realizar consultas en bases de datos.
  • La semántica del lenguaje mapea los conceptos de la sintaxis abstracta a algún lenguaje matemático para poder analizar la corrección de los modelos creados con el DSL y eliminar cualquier ambigüedad. Puede haber más de un mapeo en función de las propiedades a verificar.

A continuación, presentamos parte de la sintaxis abstracta y concreta de nuestro DSL para modelar sistemas IoT desplegados en minas subterráneas de carbón. En cuanto a los análisis de los modelos nos limitaremos a comprobar la corrección sintáctica del lenguaje con lo que no hace falta pasar por ninguna semántica formal.

Sintaxis abstracta

La siguiente imagen presenta una parte de nuestro metamodelo que abstrae los conceptos para la especificación de la estructura de la mina de carbón subterránea y la arquitectura del sistema IoT.

Todos los conceptos que heredan de Region representan espacios físicos dentro de una mina subterránea de carbón como túneles (Tunnel), Frentes de trabajo (WorkingFace), bocaminas (Entry) y cámaras (Room). Un túnel puede ser interno (Internal) o de acceso (Access). Tres tipos de túneles de acceso pueden ser representados: horizontal (Drift), inclinado (Slope), y vertical (Shaft). Además, cada túnel de acceso debe tener una o más entradas (representadas por la relación entries). Los puntos de control (lugares específicos de la mina donde se controlan los gases, la temperatura, el oxígeno y el flujo de aire) se especifican mediante el concepto CheckPoint. Cada CheckPoint puede contener múltiples sensores y actuadores representados por la relación devices en el metamodelo. Otros conceptos del metamodelo como EdgeNode, FogNode, CloudNode, Sensor, Actuator, Topic, Container, y Application, premiten especificar la infraestructura del sistema IoT, comunicaciones asincrónicas, y el despliegue de aplicaciones basadas en contenedores.

 

Parte del metamodelo para la especificación de la estructura de la mina y el sistema IoT

Sintaxis concreta e implementación del DSL

Para representar los conceptos del metamodelo, ofrecemos varias notaciones (textuales, tabulares, y gráficas) dirigidas a diferentes tipos de perfil de usuario del DSL. Por ejemplo, la notación tabular para modelar la infraestructura del sistema (como sensores, actuadores y nodos), y notación gráfica (diagrama de árbol) para el modelado de la estructura de la mina. Para lograr esto, nuestro DSL es implementado usando MPS, una herramienta desarrollada por Jetbrains para diseñar DSLs usando editores de proyecciones que permiten definir un conjunto de notaciones complementarias.

Por ejemplo, el editor gráfico (diagrama de árbol) para modelar la estructura de una mina subterránea se puede ver en la siguiente imagen. Esta notación en forma de árbol permite especificar las regiones y subregiones contenidas en la mina. Esta mina de ejemplo contiene dos túneles de acceso inclinados, una cámara con dos frentes de trabajo, y un túnel interno.

Modelado de la estructura de una mina subterránea

Por otra parte, los puntos de control dentro de la mina pueden ser modelados usando una notación tabular para especificar la lista de sensores y actuadores. La siguiente imagen presenta un ejemplo de modelado de un punto de control ubicado en la cámara Room. Este punto de control contiene tres sensores para monitorear gas metano CH4, dióxido de carbono CO2, temperatura, y una alarma (actuador). Para cada sensor es posible describir sus especificaciones como tipo (Type), limite (Threshold), protocolo de comunicación (Communicacion), etc.

Modelado de un punto de control

Estos son solo algunos ejemplos de los conceptos que nuestro DSL permite modelar para representar sistemas IoT desplegados en minas subterráneas de carbón. Los nodos (servidores), aplicaciones, contenedores de software, el broker MQTT de mensajería, e incluso reglas de adaptación también son abordados en este trabajo. Te invitamos a consultar el DSL en nuestro repositorio, en donde también encontrarás una guía de instalación, y un ejemplo de modelado.

Generación de Código

Las ventajas de un DSL no se limitan sólo a ayudar a definir dominios específicos si no que una vez definido con precisión el modelo de dominio podemos automatizar cualquier operación que haya que hacer con él. Se puede analizar su calidad, generar documentación, certificarlo o, si hay un parte software, generar código a partir del modelo.

Este es el caso de las minas donde más allá de diseñar la mina queremos generar automáticamente la infraestructura software que la va a monitorizar y adaptará su comportamiento dependiendo de los eventos que sucedan en la mina. Para este fin, además del DSL, hemos diseñado un generador de código, el cual, a partir del modelo diseñado por el usuario, genera manifiestos YAML para el despliegue, configuración y autoadaptación del sistema IoT en tiempo de ejecución. Estos manifiestos contienen la configuración del despliegue y operación del sistema, que se lleva a cabo mediante el orquestador Kubernetes o K3S (una versión ligera de Kubernetes optimizada para IoT y edge computing). Este generador de código también fue implementado usando el toolkit de MPS, por lo que también está disponible en el mismo repositorio de nuestro proyecto.

Si te interesa este trabajo y quieres conocer más detalles, puedes escribirme a ialfonsod@uoc.edu