¡Construyamos un PLC de grado industrial basado en Arduino!

¿En serio, un PLC basado en Arduino? ¿Te volviste loco?
¿Debemos ser mentalmente inestables para considerar la idea de utilizar la plataforma Arduino para realizar un PLC de grado industrial? ¿Es imposible? ¿Alguien nos lo prohíbe?
¡Podemos hacerlo mejor que los chinos!

Hola, soy Fco. Javier (fjrg76), Ingeniero en Electrónica con 20+ años de experiencia en electrónica y sistemas embebidos, y en esta serie de artículos vamos a descubrir si podemos realizar un PLC basado en el chip ATmega328. Nuestro producto final será un PLC diseñado y ensamblado por nosotros que programaremos en C/C++, en sketches o en la línea de comandos.

¿Qué tenemos que hacer?

  • Lo primero es analizar a los PLCs comunes y corrientes, tener claro qué son y cómo están fabricados. Esto lo veremos en este artículo.
  • En un próximo artículo estableceremos las características de nuestro PLC.

Antes de responder a todas las preguntas que planteamos hace un momento veamos (o recordemos) brevemente lo que es un PLC (Programable Logic Controller, Controlador Lógico Programable).

¿Qué es un PLC?

Un PLC es una computadora de propósito específico utilizada para la automatización industrial que debe soportar los ambientes extremos de las industrias.

Un PLC es una computadora de propósito específico

Si es una computadora de propósito específico, entonces en un sistema embebido, como los que nos gustan hacer. Esto es, un PLC no es una computadora de propósito general, como las computadoras a las que estamos acostumbrados. Muchos PLCs ni siquiera tienen una pantalla.

Micro PLC.

Ambientes y condiciones extremos

Un PLC debe soportar condiciones de temperatura y humedad extremas que se generan en las industrias. Así mismo, debe soportar las variaciones de tensión y ruido electromagnético producido por motores eléctricos (recuerda que los motores eléctricos mueven al mundo).

Compactos y expandibles

Es muy deseable que los PLCs sean compactos, consuman poca energía y se puedan expandir. Esto último significa que deben incrementar su funcionalidad (más entradas, más salidas) de la manera más simple y barata posible. Esto se consigue con módulos esclavo conectados al módulo central a través de protocolos seriales: RS-232, RS-485, Ethernet, así como con protocolos propietarios.

Fáciles de programar

Existen diferentes lenguajes de programación para los PLCs, siendo el lenguaje de escalera (ladder diagram) el más común entre los programadores. Cada fabricante tiene su propio software de programación.

La programación de nuestro PLC será en C/C++, desde un sketch o desde la línea de comandos (mi preferida).

¿De qué está hecho un PLC?

Cerebro

El cerebro de un micro PLC moderno es un microcontrolador. El tamaño de éste dependerá del conjunto de funcionalidades que tenga el PLC. Algunos de estos microcontroladores son comerciales (de fabricantes como Atmel (hoy Microchip), ST, NXP, Hitachi), mientras que otros son propietarios. Sus rangos de velocidades van de los 72 MHz hasta los 180 MHz.

Microcontrolador de 32 bits LPC1227 Cortex-M0 de grado industrial. Foto tomada de una tarjeta de desarrollo que yo diseñé.

Algunos PLCs son simples y sólo se encargan de leer las entradas, procesar el programa, escribir a las salidas, y realizar comunicaciones seriales básicas; mientras que otros son mucho más complejos: en un mismo chip integran controladores de pantallas LCD, Ethernet, CAN, convertidores digitales-analógicos (DACs), el reloj RTC, memoria externa FLASH/RAM, etc.

Desde hace un poco más de una decada la empresa ARM introdujo al mercado (de la mano de muchos fabricantes) procesadores RISC de 32 bits muy económicos. Esta línea de chips es conocida como Cortex-Mx (donde la x puede ser 0, 0+, 3, 4, …). Los PLCs chinos utilizan como base al procesador STM32F1xx por las razones mencionadas y por la alta integración de periféricos en un mismo chip. (Como dato interesante, un procesador Cortex-M0 puede costar menos de la mitad que un ATmega328.)

Es conveniente saber que algunos PLCs que requieren velocidades de ejecución extremadamente rápidas optan por usar FPGAs, que son una especie de dispositivos cuya programación es sobre compuertas lógicas y bloques lógicos pre-construídos sobre las compuertas lógicas.

Entradas

Las entradas de un PLC son de dos tipos: digitales y analógicas. Y no podemos conectar un dispositivo directamente a las entradas ya que en el ambiente industrial tales dispositivos suelen funcionar con 24V de corriente directa, o con tensiones alternas de 120/240 V, mientras que la tensión máxima que soporta un microcontrolador es de máximo 5V (ya sea que éste trabaje a 5V o 3.3V).

Si a una terminal del microcontrolador se le aplica una tensión por arriba de la máxima soportada, en el mejor de los casos ese pin quedará inservible; en el peor, el chip completo estará frito.

La etapa de entrada que baja la tensión (de digamos 24V) a 5V o 3.3V también proteje las terminales en casos de cortos-circuitos, inversiones de polaridad, o de picos de tensión. Usualmente están construídas en base a optoacopladores, aunque existen modelos de PLCs que en lugar de éstos tienen nada más un divisor resistivo a la entrada. PLCs más sofisticados utilizan transformadores que aislan galvánicamente las terminales del chip de los dispositivos externos.

¿Tiene alguna ventaja la entrada basada en resistencias?

Sí. La misma entrada puede ser utilizada de manera digital o analógica. Es por eso que PLCs similares al mostrado incluyen muchas entradas analógicas (compartidas con las digitales), ya que es relativamente fácil configurarlas como digitales o analógicas.

Un segundo tipo de entrada digital es para tensión alterna, la cual puede ir desde 24 VAC hasta 240 VAC.

En cuanto a las entradas analógicas se presenta el mismo problema que las entradas digitales, sólo que en este caso no se pueden utilizar optoacopladores como interfaz. Aquí existen varias opciones:

  1. Conectar el dispositivo analógico externo (que normalmente opera en el rango 0-10V) al microcontrolador a través de un divisor de tensión que reduzca el rango a 0-5V ó 0-3.3V.
  2. Utilizar un convertidor analógico-digital (ADC) externo que soporte tensiones mayores y que transmita el resultado al microcontrolador en forma serial o paralela.

Salidas

Así como las entradas sólo pueden trabajar con baja tensión, las salidas tienen, además, restricciones de potencia, esto es, solamente pueden entregar una cantidad muy limitada de corriente, en el mejor de los casos, 20 mA, siendo el caso general del órden de los 3 – 5 mA, apenas lo suficiente para activar un LED. Pero los PLCs deben manejar cargas de muchas órdenes de magnitud superior a eso, tanto en tensión como en corriente.

Por eso a la salida de los PLCs encontramos, generalmente, relés o transistores, actuando ambos como «amplificadores» (en el sentido más amplio del término) de corriente. La salida a relé provee un aislamiento galvánico entre la terminal del microcontrolador y la carga. La salida a transistor provee potencia, pero no aislamiento, a menos que se incluya una pre-etapa basada en optoacopladores.

Los fabricantes de PLCs incluyen, en la misma línea de producto, versiones a relé y versiones a transistor. Algunos también agregan al catálogo salidas a TRIAC o SCR.

Tenía una duda personal sobre cuál salida es la mejor. La respuesta a la que llegué es: ambas y ninguna. Es decir, cada tipo de salida obedece a diferentes tipos de aplicaciones, y el diseñador del sistema debe escoger la más adecuada. Veamos brevemente las ventajas y desventajas de cada una.

Salida a relé

Ventajas:

  • Provee aislamiento galvánico.
  • Puede manejar tensiones directas y alternas.
  • Pueden manejar tensiones y corrientes muy altas.

Desventajas:

  • Se desgastan con el tiempo. Entre más se usen, más se gastan.
  • El cierre de los contactos puede producir interferencia EMI (Electro-Magnetic-Interference) que podría afectar no sólo a equipo cercano, sino al mismo PLC.
  • Son lentos. No se pueden usar en dispositivos de alta velocidad, o de control por PWM (Pulse-Width Modulation).

Salida a transistor

Ventajas:

  • Son muy rápidos, con pulsos en el orden de los KHz. Se pueden usar para dispositivos de alta velocidad, o de control por PWM, por ejemplo para controlar un SSRs (Solid-State Relay) o un motores servo (o servo-motores).
  • Si se utilizan dentro de sus parámetros seguros de tensión y corriente su duración es de muchos años antes de que fallen.
  • Es más fácil controlar la EMI.
  • Son ligeros y compactos.

Desventajas:

  • Por sí mismas no proveen aislamiento galvánico entre las terminales del microcontrolador y el mundo externo por lo que se debe agregar una etapa optoacoplada entre el procesados y los transistores.
  • La tensión y corriente que soportan son mucho menores que la de un relé.
  • Funcionan sólo para tensión directa. Si se quiere controlar cargas de corriente alterna, entonces se tiene que utilizar un SSR. Como mencioné, algunos modelos de PLC cuentan con salida a TRIAC o SCR, siendo estos el componente principal de los SSRs.

Fuente de alimentación

Por último, pero no menos importante, está la fuente de alimentación que provee de energía tanto al PLC como a los sensores/actuadores conectados a él.

Los PLCs llamados compactos casi siempre incluyen la fuente de alimentación dentro de su propio gabinete y convierten ya sean 120VAC/220VAC o 24VDC a la tensión del procesador, que como ya dije, puede ser de 3.3V o 5V. Regularmente la fuente de alimentación es del tipo SMPS (Switch-Mode Power Supply) por su alta eficiencia en la conversión.

Cuando las entradas del PLC son para tensión alterna, entonces se alimenta al mismo directamente con la tensión de línea, ya sea de 120VAC o 220VAC. Cuando las entradas del PLC son de 24VDC, entonces se le alimenta con una tensión de 24VDC proveniente de una fuente externa.

Últimamente es común encontrarse con PLCs que trabajan a 12VDC, y algunos que trabajan a 5VDC. Sin embargo, 24VDC es un estándar de la industria.

Entonces, ¿podemos construir un PLC basado en la plataforma Arduino, sí o no?

La respuesta es un rotundo SÍ acompañado de un rotundo SIEMPRE Y CUANDO LO DISEÑEMOS BIEN.

Más arriba mencioné que algunos PLCs conocidos utilizan microcontroladores comerciales (de esos que podemos comprar en una tienda de electrónica o pedir a mouser.com o digi-key.com, aunque algunos podrían estar descontinuados). Vamos a ver una pequeña lista:

PLC Chip Tecnología del chip Fabricante del chip
Leganza 88DDT8 P89C668 8051 Philips (NXP)
Mitsubishi FX-20MR-ES HD6433258 8 bits Hitachi
Wecon STM32F103 32 bits ST
Scheneider Zelio ATmega128 8 bits Atmel (Microchip)

Scheneider Zelio

Pongamos atención al último de la lista porque es muy interesante. Y para tener un contexto de la pequeña lista de características que voy a mencionar, quizás querrías echarle una mirada a este siguiente enlace, donde se muestra al PLC desensamblado.

Esta imagen representa el interior de un PLC marca Zelio, y podemos observar, además del procesador, al reloj de tiempo real, los relevadores y la batería de mantenimiento del calendario (la que parece rebanada amarilla).
  • Usa al chip ATmega128, una versión «ampliada» del ATmega328 (corazón de la Arduino UNO).
  • Las entradas no están optoaisladas.
  • Usa un RTC (Real-Time Clock) comercial M41T56 de ST acompañado de una pila.
  • Usa transistores discretos para energizar a las bobinas de los relés.
  • Parece que la fuente de alimentación se reduce a un simple 7805 o un LM317.
  • Tiene pistas en ángulo recto (los expertos no lo recomiendan).
  • Muchos PLCs tienen una cubierta (coated paint ) que lo protege contra la humedad y la corrosión. A simple vista éste no la tiene.

(Para conocer más acerca de este PLC puedes dar click aquí que te llevará a su página oficial en español.)

DISCLAIMER: Hagamos lo que hagamos, en ningún momento y bajo ninguna circunstancia será una copia o clon del PLC mostrado. Lo usé como ejemplo de que es posible construir equipo profesional a partir de microcontroladores comerciales.

¿Qué sigue?

Hoy hemos visto de forma muy general lo que son los PLCs, las partes de las que están hechos, y muy importante, el cerebro del mismo. También vimos que no hay nada que nos impida construir nuestro PLC de grado profesional, solamente hay que diseñarlo bien.

Y precisamente eso será lo que veamos en el siguiente artículo: el diseño de un PLC basado en Arduino, y siendo más específicos, un PLC basado en el microcontrolador ATmega328 y programado en el lenguaje más hermoso del mundo, C++.

Microcontrolador de 8 bits ATmega328 montado en una tarjeta tipo Arduino UNO. Este chip será el cerebro de nuestro PLC.

Nos vemos en el siguiente artículo (click aquí) donde tomaremos decisiones (algunas muy difíciles) de diseño para construir nuestro PLC.

Si consideras que hoy has aprendido algo nuevo, y que en el futuro podrás seguir aprendiendo cosas nuevas o útiles para tu trabajo o escuela, entonces podrías suscribirte a mi blog.


Por favor déjame tus comentarios, qué piensas de este proyecto, si ya has hecho PLCs en el pasado y qué micro usaste.

Fco. Javier Rodríguez

Deja una respuesta