Blog

OBs en Siemens y Program Execution Types en Mitsubishi: ¿Qué son y cómo se comparan?

¿Qué es un OB en TIA Portal de Siemens?

Los bloques de organización (OBs), son bloques que sirven como la interfaz entre el sistema operativo del PLC y el programa del usuario. Los bloques de organización son llamados automáticamente por el sistema operativo del controlador y llama a los OBs cada vez que es necesaria su intervención, cuándo y bajo qué condiciones.

Por ejemplo, pueden controlar las siguientes operaciones:

  • Características de arranque del sistema de automatización
  • Procesamiento cíclico del programa
  • Ejecución del programa basada en interrupciones
  • Manejo de errores
Información de inicio de los bloques de organización

Cuando se inician ciertos bloques de organización, el sistema operativo proporciona información que puede ser evaluada en el programa de usuario. Existen varios bloques organizacionales en TIA Portal como:

  • Program Cycle: Main [OB1]
  • Startup [OB100]
  • TimeDelayInterrupt [OB20]
  • CyclicInterrupt [OB30]

Entre otros bloques, cada uno con funcionalidades distintas dentro de nuestro proyecto y con sus respectivos parámetros modificables.

¿Qué es un Program Execution Type en GX Works de Mitsubishi?

En GX Works, un Program Execution Type es una propiedad que define cuándo y bajo qué condiciones se ejecuta un bloque de programa (OBs, en Siemens) dentro del ciclo de operación del PLC. Estos programas permiten estructurar la lógica del control dividiéndola en tareas según su propósito o prioridad operativa.

Cada programa creado en GX Works debe tener asignado un tipo de ejecución, los cuales son los siguientes:

  • Initial: se ejecuta una sola vez cuando el PLC pasa de STOP a RUN. Se usa típicamente para inicializar variables o estados del sistema.
  • Scan: se ejecuta de forma cíclica durante cada ciclo de escaneo del PLC. Es el tipo principal para la lógica operativa continua.
  • Fixed Scan: se ejecuta a intervalos de tiempo definidos (por ejemplo, cada 10 ms), útil para tareas periódicas con requerimientos temporales constantes.
  • Event: se ejecuta solo cuando se produce un evento específico, como una interrupción externa, un cambio de entrada o una condición de sistema.
  • Standby: el código permanece cargado pero inactivo; puede ser activado dinámicamente si se requiere.
  • No Execution Type: el programa existe pero no está programado para ejecutarse automáticamente; se puede llamar desde otro bloque.

Tabla de equivalencias entre OBs y Program Execution Types

Haciendo un análisis y una comparación de los OBs de TIA Portal y los Program Execution Types en Mitsubishi tenemos como resultado, la siguiente tabla:

Siemens: OBsMitsubishi: Program Execution Type
OB 100Initial
OB 1Scan
OB 35Fixed Scan
OB 20 – 23 y OB 40Event
Standby
FC/FBNo Execution Type

Como podemos observar, cada OB de Siemens tiene su equivalente funcional en GX Works de Mitsubishi, aunque con diferencias importantes en la forma de la programación y el entorno de trabajo.

En Siemens, la estructura está centrada en bloques organizativos (OBs) que se activan por el sistema operativo del PLC en función de eventos, ciclos o errores.

En cambio, Mitsubishi utiliza la asignación explícita de tipos de ejecución (Program Execution Types) para cada bloque de programa, podemos observar como cada uno de los programas tiene sus propias ventajas.

Esta comparación no solo ayuda a comprender las similitudes entre ambos entornos, sino que también es clave al momento de migrar proyectos o complementar nuestros conocimientos, esto si ya sabemos manejar un entorno y entramos a otro. Conocer estas equivalencias permite diseñar soluciones más sencillas, sin perder de vista las características particulares de cada plataforma.

Enlaces relacionados:

SIMATIC S7-PLCSIM V19

¿Qué es S7-PLCSIM V19?

Es el simulador de software que emula únicamente la CPU de un PLC S7-1200 o S7-1500 (sin módulos de campo ni acceso a OPC UA ni funciones de red avanzadas). Viene integrado con TIA Portal V19 y permite validar lógicas de programa antes de ir al equipo físico.

Funcionalidades principales

  1. Carga y ejecución de bloques PLC
    – Emula la CPU del S7-1200/S7-1500 para ejecutar tus bloques (OB, FC, FB, DB).
    – Soporta stepping, breakpoints y watch tables para depuración.
  2. Validación de lógicas básicas
    – Observación de variables, flags y temporizadores en tiempo real.
    – Edición “on-the-fly” (cambios en bloques sin recompilar todo el proyecto).
  3. Simulación de E/S digitales
    – Emula entradas y salidas digitales (no módulos analógicos ni contadores rápidos de hardware reales).
    – Permite forzar valores de entrada manualmente.
  4. Interacción con HMI WinCC Runtime
    – Conecta tu Runtime de WinCC (no Advanced) a la CPU simulada vía PROFINET, para probar pantallas.

Limitaciones frente a PLCSIM Advanced

CaracterísticaS7-PLCSIM V19PLCSIM Advanced
Simulación de red PROFINETSí, básicaSí, múltiple y virtual
Simulación de módulos de E/SSolo digitalesDigitales y analógicos
OPC UA client/serverNo
API de automatización externaNo (solo GUI)Sí (.NET, C/C++, PowerShell)
Topologías de red complejasNo

Video tutoriales para aprender a usar el PLCSIM

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

Siemens TIA Project-Server anteriormente conocido como TIA Multiuser Server

Esta opción de TIA Portal está disponible desde hace ya varias versiones (V15) del software para configurar/programar los PLCs de Siemens, y es seleccionable a la hora de realizar la instalación.

El objetivo de esta opción es permitir que varios usuarios puedan contribuir de manera simultanea al desarrollo del software de control que el PLC ejecuta.

Existe desde las épocas de Step 7, antes de que TIA Portal existiera, la posibilidad de que varios usuarios se conecten al mismo PLC de forma simultanea y desarrollaran o hicieran cambios online. Esto, en mi experiencia propia, no es una situación deseada ya que fácilmente se puede llegar a ocasionar caos entre las versiones que cada programador tiene en su PC/PG y la versión central del PLC.

TIA Project-Server tiene como objetivo el permitir el desarrollo de software de control de un PLC de manera grupal y siempre offline, es decir, sin conexión al PLC. La forma más adecuada de ir probando lo que se va desarrollando entonces sería ejecutarla en un PLC aparte, o en el PLC Sim, lo que es económicamente más conveniente.

Algo similar a como se desarrolla software de otra naturaleza, como el firmware de un teléfono móvil, un navegador de internet o un sistema operativo. Estos softwares cuentan con diferentes funcionalidades que hasta cierto punto son independientes unas de otras, dando cabida a que existan grupos de desarrolladores de software que se enfocan en solo una de las múltiples funcionalidades del software.

La analogía sin embargo no es completamente exacta. Existen diferencias entre desarrollar software de manera grupal para un PLC y desarrollar una aplicación “convencional”.

Generalmente existe un ambiente de desarrollo (IDE) con el cual se pueden crear, editar, debuggear, etc. los archivos que forman parte del código fuente de una aplicación (Visual Studio, Eclipse, etc.) y de manera independiente existe un software y una infraestructura encargada de almacenar de manera central los archivos que conforman un proyecto de software y además de manejar las distintas versiones del software a lo largo del proceso de desarrollo de este (Git – github, TFS, Tortoise – SVN, etc. ). En el caso de TIA Portal, TIA Portal es el único software involucrado. TIA Portal es el encargado de comparar y sincronizar los bloques entre los usuarios del software, además también de crear un proyecto multiusuario y de administrarlo.

TIA Project-Server está enfocado al desarrollo del software de control de un PLC de manera grupal y no a la configuración de Hardware, que también forma parte integral del un proyecto de TIA Portal. TIA Project-Server tiene entonces la limitante de que cambios en la configuración de HW se tienen que realizar directamente de manera central. Es decir, en el proyecto común que sirve como base para todos los desarrolladores.

EL tipo de proyectos para los cuales la opción TIA Project-Server puede ser interesante, son proyectos grandes, que involucran una máquina compleja, donde además se recopilan datos para transferirlos a un sistema que los procesa. Usar esta funcionalidad para programar una máquina pequeña y simple, solo podría añadir complejidad de forma innecesaria.

El siguiente video muestra como configurar de la manera más básica un proyecto multiusuario y como usar esta funcionalidad para desarrollar el software de control de un PLC en conjunto con varios programadores.

Para que el desarrollo de un proyecto sea llevado a cabo por varios usuarios, es necesario dividir la infraestructura en varias computadoras PC/PGs, estos son los dispositivos que cada programador posee para desarrollar el software de un PLC. El siguiente video explica como se configura y funciona esto.

Enlaces relacionados