Realtime Information Backbone (RIB)

Realtime Information Backbone (RIB) es un producto de la familia SIMATIC de Siemens diseñado para intercambiar información en tiempo real entre el PLC y aplicaciones del usuario escritas en C++, que son ejecutadas en el sistema operativo Linux. Está disponible solo en aquellos modelos de PLCs donde el sistema operativo del PLC está gestionado por el Hypervisor de SIMATIC y que además comparten el mismo sistema con una instalación del SO Linux. Aunque en realidad también puede ser usado para intercambiar información entre aplicaciones de Linux, donde ningún PLC interviene, usando exclusivamente POSIX shared memories de Linux.

Real-time concept – imagen obtenida del manual de operación del Software Controller. Esta imagen muestra una Industrial PC, su HW, y como este es asignado al SO y al CPU por el Virtual Machine Manager (VMM/Hypervisor).

Los modelos de PLCs que tienen la opción de usar este software son:

El intercambio de información entre el PLC y las aplicaciones de Linux se da a través de memorias compartidas gestionadas por el SIMATIC Hypervisor, directamente accesibles desde Linux y desde el PLC, siendo así el tiempo de lectura/escritura muy corto.

El software RIB consta de una aplicación central (RIB_App) encargada de coordinar a las aplicaciones participantes del ecosistema que intercambian datos entre si, y una librería de soporte (RIB Support Library) que es integrada (linked) a las aplicaciones escritas por el usuario en el lenguaje C++. Esta librería cuenta con clases que se pueden instanciar y métodos de estas clases que se pueden llamar, con el objetivo de hacer una aplicación que se comunique con la RIB_App para obtener o dar información acerca de variables (nombre, tipo, dirección en memoria, etc.), y leer o escribir/actualizar estas variables.

Existe también la posibilidad de usar la RIB Support Library en aplicaciones escritas en Python usando un el paquete cppyy, además de que existe también un wrapper para poder usar esta librería en aplicaciones escritas en C.

El ecosistema RIB consta de una aplicación central (RIB_App) que recibe mensajes de las aplicaciones que integran de alguna forma la RIB Support Library. Estos mensajes son emitidos en diferentes eventos durante el tiempo de ejecución de una aplicación, por ejemplo al iniciar y al terminar, con el objetivo de informar que está pone a disposición datos para que sean leídos por aplicaciones interesadas, y también para avisar que una aplicación requiere de ciertos datos y que espera un mensaje para saber de donde leerlos. La RIB_App almacena en su base de datos las aplicaciones en ejecución y los datos que ofrecen y/o necesitan y avisa a las aplicaciones conforme estos datos están disponibles o dejan de estarlo. No existe intercambio de mensajes entre aplicaciones del usuario. Las aplicaciones unicamente leen directamente de la dirección donde están las variables de interés y escriben en memoria las variables que comparten.

Perspectiva general del sistema – Imagen obtenida del manual de programación del RIB.

¿Qué tipo de aplicaciones tiene?

Las aplicaciones en las cuales el Realtime Information Backbone puede ser de utilidad son bastas, a continuación algunos ejemplos.

  • El PLC al tener acceso directo a variables del proceso automatizado puede recolectar los valores de estas y compartirlos con una aplicación de Linux que se encargue de acondicionar los datos y meterlos en una base de datos para posteriormente analizarlos usando técnicas de Data Mining. El objetivo de este análisis puede ser hacer más eficiente el proceso, diagnosticar fallas, identificar el momento más adecuado para realizar mantenimientos preventivos, etc.
  • Al suceder el intercambio de información entre el PLC y el SO Linux en tiempo real, estas variables pueden ser procesadas en una aplicación en Linux, y al PLC se le pueden compartir valores que repercutan directamente en el proceso automatizado.
  • Los PLCs de diferentes vendedores tienen siempre un limitado número de protocolos de comunicación, al tener las variables disponibles en Linux, estas pueden ser acondicionadas para ser compartidas con sistemas que usen algún protocolo de comunicación común.

Enlaces relacionados