¿Qué es un controlador PID?

En prácticamente cualquier proceso industrial —desde el control de temperatura en un horno hasta la velocidad de un motor o el nivel de un tanque— encontramos la necesidad de mantener una variable dentro de ciertos límites. Para lograrlo de forma automática, se utilizan controladores PID (Proporcional–Integral–Derivativo), una de las herramientas más importantes y versátiles de la ingeniería de control.

¿Qué hace un controlador PID?

El objetivo de un PID es mantener una variable de proceso (por ejemplo, la temperatura, presión o velocidad) lo más cercana posible a un valor deseado o setpoint, corrigiendo los desvíos que se produzcan.
Para ello, el controlador compara constantemente el valor real con el valor deseado y calcula una señal de control que actúa sobre el sistema.

Los tres términos del PID

El nombre “PID” proviene de las tres acciones de control que combina:

  • P (Proporcional): responde al error instantáneo. Cuanto mayor sea la diferencia entre el valor real y el deseado, mayor será la corrección.
  • I (Integral): acumula el error a lo largo del tiempo y lo corrige, eliminando desvíos persistentes.
  • D (Derivativo): predice cómo cambiará el error, reaccionando a su velocidad de variación para suavizar la respuesta.

La combinación equilibrada de estos tres efectos permite obtener un sistema estable, preciso y con una buena respuesta dinámica.

Por qué es tan usado

El PID es tan popular porque:

  • Es simple de entender y fácil de implementar.
  • Se adapta bien a una amplia variedad de procesos.
  • Ofrece un buen equilibrio entre rendimiento y estabilidad.

Incluso cuando se utilizan controladores avanzados o técnicas modernas, el PID sigue siendo la base conceptual de casi todos los sistemas de control industrial.

En los PLCs de Siemens

En los PLCs Siemens, el bloque de funciones PID_Compact del entorno TIA Portal permite implementar controladores PID de manera sencilla y estandarizada.
Ofrece modos automáticos de ajuste, funciones de auto–tuning y herramientas gráficas para supervisar el comportamiento del lazo de control.

Videos relacionados

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