Ir al contenido

PLC Raspberry Pi · Raspberry Pi 4B · 12 a 24 Vdc · Linux

PLC Raspberry Pi: características técnicas

Referencia técnica completa de la familia Raspberry PLC, el PLC Raspberry Pi industrial de Industrial Shields: fuente de alimentación, interruptores DIP, consumo, E/S analógicas y digitales, salidas de relé, Ethernet, RS-485, Serial TTL, I2C, SPI, UPS Shield y RTC, con esquemas de cableado y ejemplos de código en Python.

Fuente de alimentación
12 a 24 Vdc, 2 A o más
Programación
Python, C++, Node-RED, Docker
Comunicaciones
2x Ethernet, RS-485, Serial TTL, I2C, SPI
Extras
UPS Shield, RTC DS3231, pines de 3,3 Vdc

Visión general del Raspberry PLC

Qué es el Raspberry PLC#

El Raspberry PLC es la gama de PLC Raspberry Pi industriales de Industrial Shields: un controlador industrial basado en una Raspberry Pi 4B con Linux (Raspberry Pi OS) y E/S industriales profesionales, alimentado a 12-24 Vdc. Combina la automatización de campo con todo el software de un ordenador Linux, así que el mismo controlador puede hacer también de concentrador de datos, pasarela de protocolos o nodo de edge computing.

Se programa en Python, C/C++ y Node-RED, y también ejecuta Docker. Se comunica por dos puertos Ethernet, RS-485, Serial TTL, I2C y SPI, con protocolos como Modbus RTU, Modbus TCP y MQTT. Todos los modelos incluyen un UPS Shield con reloj en tiempo real DS3231.

Los modelos FLEX son configurables: eliges la RAM de la Raspberry Pi 4B (2, 4 u 8 GB) y placas de comunicación opcionales (4G, LoRa, CAN, M-BUS, GPS, SIGFOX). Los modelos CORE son la combinación preconfigurada más habitual, lista para pedir. Certificaciones: CE y RoHS.

Modelos y E/S#

La gama va de 0 puntos de E/S (CPU-Gateway) a 62 puntos. Las entradas analógicas se configuran como 0-10 V o 4-20 mA y todas las salidas digitales admiten PWM.

Modelo de Raspberry PLCEntradas analógicasEntradas digitalesSalidas digitalesSalidas de reléE/S totalesCORE / FLEX
CPU-Gateway00000CORE, FLEX
19R423817No
21678021CORE, FLEX
38AR10911838No
38R8461634No
42121416042No
57R12692451CORE, FLEX
58182123062No

Compara toda la gama en la página de la familia Raspberry PLC o descarga fichas técnicas, guías de usuario y certificados desde la documentación técnica.

Instalación y configuración

Primeros pasos: Raspberry Pi OS#

Antes de nada, el PLC Raspberry Pi necesita un sistema operativo para empezar a funcionar. Aunque puedes usar cualquier distribución GNU/Linux, te recomendamos Raspberry Pi OS, el sistema operativo con soporte oficial para la placa Raspberry.

Para instalar un sistema operativo en la Raspberry Pi, consulta esta guía.

Si has seguido la guía correctamente, puedes acceder al Raspberry PLC con pantalla y teclado o por SSH a través del puerto Ethernet. Si prefieres el segundo método, puedes seguir esta guía sobre cómo acceder al PLC por SSH.

Programación: Python, C++ y Node-RED#

La principal ventaja del PLC Raspberry Pi es que es compatible con cualquier entorno de desarrollo integrado (IDE) que trabaje con los lenguajes de programación compatibles. Puedes usar un IDE instalado en el PLC mediante X-forwarding con "ssh -X", o un IDE instalado en tu ordenador y transferir después los archivos por SFTP/FTP.

Aunque se pueden usar varios lenguajes de programación, te recomendamos Python, C++ y Node-RED, que son los lenguajes con soporte oficial.

Python

Python 3.9.2 ya viene preinstalado en Raspberry Pi OS, así que no requiere ninguna instalación adicional.

Sin embargo, para acceder a las entradas/salidas (E/S) y a las interrupciones del PLC necesitas las bibliotecas rpiplc y rpiplc-python3, que ya deberían estar instaladas si seguiste la guía de instalación del sistema operativo.

C++

La toolchain GCC viene preinstalada con Raspberry Pi OS, así que no hace falta ninguna instalación adicional para usar C++.

Sin embargo, para usar las E/S y las interrupciones del PLC necesitas las bibliotecas rpiplc, que ya deberían estar instaladas si seguiste la guía de instalación del sistema operativo.

Node-RED

Node-RED es un editor de flujos basado en navegador que permite programar gráficamente dispositivos de hardware, APIs y servicios online. Está construido sobre Node.js, lo que permite aprovechar todo su modelo orientado a eventos y no bloqueante.

A diferencia de Python o C++, Node-RED se instala manualmente. Para hacerlo, puedes seguir el último paso de la guía de instalación del sistema operativo o consultar la guía de usuario.

Fuente de alimentación: 12 a 24 Vdc#

Todos los PLC (controladores lógicos programables) industriales basados en Raspberry Pi se alimentan a 12-24 V. El consumo máximo es de 1,5 A (potencia nominal de 30 W, fusible de 2,5 A), así que se recomienda una fuente de alimentación de 2 A o más. Cualquier fuente de alimentación industrial es una buena opción para alimentarlos.

Nuestros equipos están diseñados para alimentarse a 12-24 V. Si solo se alimentan por USB, no podrán realizar sus funciones.

Si por algún motivo quieres usar una fuente de alimentación de menos de 2 A, contacta con el soporte técnico de Industrial Shields para asegurarte de que tu sistema funcionará sin problemas de alimentación.

El siguiente esquema muestra las conexiones necesarias para alimentar correctamente un PLC:

Esquema de cableado de la alimentación del Raspberry PLC

Interruptores DIP: salidas analógicas o digitales#

Los PLC basados en Raspberry Pi tienen varios interruptores que sirven para configurar ciertas funciones del PLC. Esta sección explica cómo usarlos correctamente. Para distinguir las distintas partes del PLC y localizar cada interruptor, se usa la siguiente nomenclatura:

Nomenclatura de zonas del PLC, lateral derecho

Nomenclatura de zonas del PLC, vista superior

Nomenclatura de zonas del PLC, lateral izquierdo

Zonas B, C y D: interruptor analógico

Interruptor analógico de las zonas B, C y D del Raspberry PLC

InterruptorOFFON
1AX.5QX.5
2AX.6QX.6
3AX.7QX.7
4NCNC

Estos interruptores sirven para elegir entre salida digital o analógica, según la tabla anterior. En OFF, solo estará disponible la salida analógica correspondiente. En ON, solo estará disponible la salida digital correspondiente. Los interruptores funcionan igual en las zonas B, C y D, y el valor de "X" cambia según la zona:

  • Zona B: X = 0
  • Zona C: X = 1
  • Zona D: X = 2

Consumo por modelo#

Este informe analiza el consumo de varios modelos de Raspberry PLC en distintos escenarios de funcionamiento. Conocer el consumo es clave para optimizar la eficiencia y garantizar un funcionamiento fiable en aplicaciones industriales. Las pruebas incluyen el reposo, con el PLC inactivo; las salidas en HIGH, que representan la carga máxima de salida; y el estrés, que simula el pico de demanda. Los resultados ayudan a conocer las necesidades energéticas de estos equipos en distintos escenarios de uso.

En reposo

En este escenario, el Raspberry PLC está encendido, con todos los pines y comunicaciones desactivados y alimentado a 24 V. Esta prueba mide el consumo base cuando el equipo está en reposo y no realiza ninguna tarea de procesamiento ni de salida.

MODELOCORRIENTE (mA)POTENCIA (W)
Ethernet CPU1603.84
21+1503.6
42+1573.768
58+1603.84
19R+1553.72
38R+1573.768
57R+1804.32
38AR+1573.768
53ARR+1603.84
57AAR+1603.84
54ARA+1603.84
50RRA+1603.84

Todas las salidas en HIGH

En esta prueba, el Raspberry PLC se configura para poner todos sus pines de salida en estado alto, alimentado a 24 V. Las salidas no están conectadas, así que el consumo real variará según la corriente que absorba el equipo conectado a cada salida.

MODELOCORRIENTE (mA)POTENCIA (W)
Ethernet CPU--
21+1643.936
42+1854.44
58+2004.8
19R+2606.24
38R+3588.592
57R+48211.568
38AR+2676.408
53ARR+3759
57AAR+2806.72
54ARA+2806.72
50RRA+3759

Estrés

En condiciones de estrés, el Raspberry PLC ejecuta tareas de cálculo intensivas o procesos de alta demanda. Esta prueba mide el consumo máximo cuando el equipo trabaja a plena capacidad, un dato útil para escenarios en los que el PLC está muy cargado. Se realiza con el comando "stress --cpu 4" y alimentación de 24 V, con todos los pines de salida en estado alto. Las salidas no están conectadas, así que el consumo real variará según la corriente que absorba el equipo conectado a cada salida.

MODELOCORRIENTE (mA)POTENCIA (W)
Ethernet CPU3127.488
21+2906.96
42+3207.68
58+3388.112
19R+3959.48
38R+50012
57R+62515
38AR+4109.84
53ARR+3257.8
57AAR+41810.032
54ARA+42310.152
50RRA+52212.528

Entradas y salidas

Entradas analógicas: 0 a 10 Vdc#

Una entrada analógica permite leer niveles de tensión analógicos y codificar el valor con un número de N bits. Las entradas analógicas del PLC basado en Raspberry Pi usan como referencia el GND interno (el mismo que la fuente de alimentación). Las entradas analógicas de estos PLC tienen las siguientes especificaciones:

  • Rango de tensión: de 0 a 10 Vdc.
  • Resolución: 12 bits, es decir, los valores leídos van de 0 a 4095.

Las entradas analógicas son las comprendidas entre IX.7 e IX.12, donde X es 0, 1 o 2 según la zona. Puedes identificar las entradas analógicas de tu equipo con el siguiente símbolo:

Símbolo de entrada analógica, 0 a 10 Vdc

Entrada analógica 0V - 10Vdc

El siguiente esquema muestra las conexiones necesarias para usar correctamente una entrada analógica:

Esquema de cableado de una entrada analógica del Raspberry PLC

Configuración del software

Este es un ejemplo sencillo de uso de una entrada analógica con Python:

from rpiplc_lib import rpiplc

def analog_in_test():
        rpiplc.pin_mode("I0.12",rpiplc.INPUT)
        read_value=rpiplc.analog_read("I0.12") # 0 - 2047
        print("The I0.12 is reading: {}".format(read_value))
        rpiplc.delay(1000)

if __name__ == "__main__":
        rpiplc.init("RPIPLC_42")

        while True:
               analog_in_test()

Para probar el código puedes conectar el pin elegido a los pines de 5 V y 3,3 V del Raspberry PLC. Recuerda cambiar el pin y el modelo de PLC según lo que necesites y comprueba que tienes instalados todos los paquetes necesarios para programar el PLC, explicados en este post del blog.

También te puede interesar este post: Conceptos básicos sobre las entradas analógicas del Raspberry PLC.

Entradas digitales: 5 a 24 Vdc#

Las entradas digitales sirven para captar señales que solo tienen dos estados: alto o bajo, verdadero o falso, etc. Las entradas digitales del PLC Raspberry Pi interpretan como nivel alto los valores de 5 Vdc o más, hasta 24 Vdc, y como nivel bajo los valores inferiores a 5 V. Hay 2 tipos de entradas que se pueden usar como entrada digital:

  • Entradas digitales aisladas (5 - 24 Vdc): estas entradas están optoaisladas, es decir, tienen una protección adicional y usan como referencia un pin de masa externo. Son los pines de IX.0 a IX.6, donde X es 0, 1 o 2 según la zona.
  • Entradas digitales no aisladas (5 - 24 Vdc): estas entradas no están optoaisladas y usan como referencia el GND interno del PLC. Son las mismas que las entradas analógicas, de IX.7 a IX.12, donde X es 0, 1 o 2 según la zona.

Puedes identificarlas con los siguientes símbolos:

Símbolo de entrada digital aislada, 5 a 24 Vdc

Entrada aislada 5V - 24V

Símbolo de entrada digital no aislada, 5 a 24 Vdc

Entrada no aislada 5V - 24V

Los siguientes esquemas muestran las conexiones necesarias para usar correctamente ambas entradas como digitales:

Esquema de cableado de una entrada digital aislada del Raspberry PLC

Esquema de cableado de una entrada digital no aislada del Raspberry PLC

Configuración del software

Este es un ejemplo sencillo de uso de una entrada digital con Python:

from rpiplc_lib import rpiplc

def digital_in_test():
        rpiplc.pin_mode("I0.0", rpiplc.INPUT)
        read_value = rpiplc.digital_read("I0.0")
        print("The I0.0 is reading: {}".format(read_value))
        rpiplc.delay(1000)

if __name__ == "__main__":
        rpiplc.init("RPIPLC_42")

        while True:
               digital_in_test()

Para probar el código puedes conectar el pin elegido a los pines de 5 V y 3,3 V del Raspberry PLC. Recuerda cambiar el pin y el modelo de PLC según lo que necesites y comprueba que tienes instalados todos los paquetes necesarios para programar el PLC, explicados en este post del blog.

También te puede interesar este post: Conceptos básicos sobre las entradas digitales de un Raspberry PLC.

Entradas de interrupción: IX.5 e IX.6#

Algunas entradas digitales del Raspberry PLC admiten interrupciones, es decir, se pueden usar con ISR (rutinas de servicio de interrupción) para ejecutar cierto código cuando se detecta un evento (un cambio de estado en el pin). Hay dos pines de este tipo en cada zona: IX.5 e IX.6. Se usan y se conectan como entradas digitales aisladas normales, y las interrupciones se programan por software. Estos pines están conectados directamente a la Raspberry Pi, así que se pueden usar como GPIO:

Analógico/DigitalReléGPIO
0.50.0GPIO 13
0.60.1GPIO 12
1.51.0GPIO 27
1.61.1GPIO 5
2.52.0GPIO 26
2.62.1GPIO 4

Configuración del software

Este es un ejemplo de cómo usar los pines de interrupción. En este caso usamos Python y la biblioteca RPi.GPIO . Fíjate en cómo la función "add_event_detect" configura la interrupción indicando el pin, el tipo de interrupción (por ejemplo, flanco de bajada) y el callback de la función que se ejecuta al dispararse la interrupción.

import signal
import sys
import time 

import RPi.GPIO as GPIO

INT_GPIO = 13

def signal_handler(sif, frame):
    GPIO.cleanup()
    sys.exit(0)

def int_activated_callback(channel):
    print("INT activated")

if __name__ == "__main__":
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(INT_GPIO, GPIO.IN)
    GPIO.add_event_detect(INT_GPIO, GPIO.FALLING, callback=int_activated_callback, bouncetime=1000)
    signal.signal(signal.SIGINT, signal_handler)
    while 1:
        print ("Work")
        time.sleep(0.1)

Para saber más sobre las entradas de interrupción, consulta este post: Cómo programar las entradas de interrupción del PLC industrial Raspberry con Python.

Salidas analógicas: 0 a 10 Vdc, 12 bits#

Las salidas analógicas del Raspberry PLC generan niveles de tensión analógicos para controlar equipos externos. Convierten valores digitales, representados por un número de N bits, en las señales analógicas correspondientes. Las salidas analógicas usan como referencia una masa (GND) externa. Las especificaciones de las salidas analógicas de estos PLC son:

  • Rango de tensión: de 0 a 10 Vdc.
  • Resolución: 12 bits, es decir, los valores escritos van de 0 a 4095.

Las salidas analógicas son las comprendidas entre AX.0 y AX.7, donde X es 0, 1 o 2 según la zona. Puedes identificar las salidas analógicas de tu equipo con el siguiente símbolo:

Símbolo de salida analógica, 0 a 10 Vdc

Salida analógica 0 - 10V

El siguiente esquema muestra las conexiones necesarias para usar correctamente una salida analógica:

Esquema de cableado de una salida analógica del Raspberry PLC

Configuración del software

Este es un ejemplo sencillo de uso de una salida analógica con Python:

from rpiplc_lib import rpiplc

def analog_out_test():
        rpiplc.pin_mode("A0.7", rpiplc.OUTPUT)
        rpiplc.analog_write("A0.7", 1024)
        rpiplc.delay(1000)
        rpiplc.analog_write("A0.7", 4095)
        rpiplc.delay(1000)
        rpiplc.analog_write("A0.7", 0)
        rpiplc.delay(1000)

if __name__ == "__main__":
        rpiplc.init("RPIPLC_42")

        while True:
               analog_out_test()

Recuerda cambiar el pin y el modelo de PLC según lo que necesites y comprueba que tienes instalados todos los paquetes necesarios para programar el PLC, explicados en este post del blog.

También te puede interesar este post: Conceptos básicos sobre las salidas analógicas del PLC Raspberry Pi.

Salidas digitales: 5 a 24 Vdc#

Las salidas digitales del Raspberry PLC pueden dar un valor bajo (0 Vdc) o alto (hasta 24 Vdc). Están rotuladas como QX.X y se identifican con el siguiente símbolo:

Símbolo de salida digital con PWM opcional

Salida digital (PWM opcional)

El valor alto de la salida puede ir de 5 a 24 Vdc. Esta tensión se fija con dos pines situados junto a las salidas: QVdc y COM(-). Por ejemplo, si quieres que la salida dé 24 V, conecta el pin QVdc a 24 V y el pin COM(-) a GND. El siguiente esquema muestra un ejemplo de conexión:

Esquema de cableado de una salida digital del Raspberry PLC

Configuración del software

Este es un ejemplo sencillo de uso de una salida digital con Python:

from rpiplc_lib import rpiplc

def digital_out_test():
        rpiplc.pin_mode("Q0.0", rpiplc.OUTPUT)
        rpiplc.digital_write("Q0.0", rpiplc.HIGH)
        rpiplc.delay(1000)
        rpiplc.digital_write("Q0.0", rpiplc.LOW)
        rpiplc.delay(1000)

if __name__ == "__main__":
        rpiplc.init("RPIPLC_42")

        while True:
               digital_out_test()

Recuerda cambiar el pin y el modelo de PLC según lo que necesites y comprueba que tienes instalados todos los paquetes necesarios para programar el PLC, explicados en este post del blog.

También te puede interesar este post: Conceptos básicos sobre las salidas digitales del Raspberry PLC.

Salidas PWM#

En los PLC basados en Raspberry Pi, todas las salidas digitales se pueden usar como salidas PWM.

El valor alto de la salida puede ir de 5 a 24 Vdc. Igual que cuando se usan como salidas digitales simples, esta tensión se fija con dos pines situados junto a las salidas: QVdc y COM(-). Por ejemplo, si quieres que la salida dé 24 V, conecta el pin QVdc a 24 V y el pin COM(-) a GND.

El siguiente esquema muestra un ejemplo de conexión:

Esquema de cableado de una salida PWM del Raspberry PLC

También te puede interesar este post: Cómo trabajar con salidas PWM en el Raspberry PLC industrial.

Salidas de relé: 5 A a 250 Vac#

Un relé es un interruptor electromagnético controlado por una señal eléctrica. En los equipos de Industrial Shields estos dispositivos ya vienen integrados en las placas. Los relés del Raspberry PLC tienen las siguientes especificaciones:

  • Corriente máxima en DC: 3 A a 30 Vdc.
  • Corriente máxima en AC: 5 A a 250 Vac

Cada salida de relé tiene dos bornes y está rotulada como RX.X. El siguiente esquema muestra las conexiones:

Esquema de cableado de una salida de relé del Raspberry PLC

Configuración del software

Este es un ejemplo sencillo de uso de una salida de relé con Python:

from rpiplc_lib import rpiplc

def relay_test():
        rpiplc.pin_mode("R0.1", rpiplc.OUTPUT)
        rpiplc.digital_write("R0.1", rpiplc.HIGH)
        rpiplc.delay(1000)
        rpiplc.digital_write("R0.1", rpiplc.LOW)
        rpiplc.delay(1000)

if __name__ == "__main__":
        rpiplc.init("RPIPLC_42")

        while True:
               relay_test()

Recuerda cambiar el pin y el modelo de PLC según lo que necesites y comprueba que tienes instalados todos los paquetes necesarios para programar el PLC, explicados en este post del blog.

Comunicaciones: Ethernet, RS-485, Serial TTL, I2C, SPI

Ethernet: eth0 y W5500#

Ethernet es la tecnología más usada en las redes de área local cableadas (LAN).

Una LAN es una red de ordenadores y otros dispositivos electrónicos que cubre un área pequeña, como una sala, una oficina o un edificio. Se contrapone a una red de área amplia (WAN), que abarca zonas geográficas mucho mayores. Ethernet es un protocolo de red que controla cómo se transmiten los datos en una LAN. Técnicamente se denomina protocolo IEEE 802.3. El protocolo ha evolucionado con el tiempo hasta transferir datos a un gigabit por segundo.

Nuestra familia Raspberry Pi incorpora tanto un circuito integrado W5500 como el propio puerto Ethernet de la Raspberry Pi.

El W5500 es un controlador Ethernet embebido con pila TCP/IP por hardware que simplifica la conexión a Internet de los sistemas embebidos. Este chip da conectividad a Internet a tus aplicaciones con un único integrado que incluye la pila TCP/IP, el MAC Ethernet 10/100 y el PHY. El W5500 integra un búfer de memoria interna de 32 KB para procesar los paquetes Ethernet. Con este chip puedes implementar la aplicación Ethernet añadiendo un sencillo programa de sockets. Incluye SPI para integrarlo fácilmente con el microcontrolador externo.

Hardware

Comprueba que el PLC está alimentado (12-24 Vdc). Solo con el USB no hay potencia suficiente para la comunicación Ethernet.

Configuración de los interruptores:
Ningún interruptor afecta a la comunicación Ethernet, así que la configuración de los interruptores no importa para usarla.

Pines usados:
La comunicación Ethernet por la interfaz eth0 no usa ningún pin de la Raspberry Pi.
En cambio, la comunicación Ethernet por la interfaz eth1 usa el pin GPIO7 de la Raspberry Pi, que ya está conectado internamente al controlador Ethernet W5500. El puerto Ethernet es fácil de alcanzar, porque está en la parte superior de la capa de comunicaciones.
La configuración del hardware Ethernet debe ser plug and play.

Software

Comprueba que has seguido correctamente la guía de instalación del sistema operativo.

Configuración del software:
Una vez hecha la configuración del hardware, puedes usar el puerto Ethernet como en cualquier otro ordenador Linux. No hace falta instalar bibliotecas adicionales para empezar.

RS-485 (MAX485)#

RS485, también conocido como TIA-485(-A) o EIA-485, es un estándar que define las características eléctricas de los emisores y receptores usados en sistemas de comunicación serie. La señalización eléctrica es balanceada y admite sistemas multipunto.

Nuestros PLC basados en Raspberry Pi incorporan dos circuitos integrados MAX485.

El MAX485 es un transceptor de bajo consumo y slew rate limitado para comunicación RS-485. Funciona con una única alimentación de +5 V y su corriente nominal es de 300 μA. Usa comunicación half-duplex para convertir niveles TTL en niveles RS-485 y alcanza una velocidad máxima de 2,5 Mbps. Con el driver desactivado, el MAX485 consume entre 120 μA y 500 μA, sin carga o a plena carga.

Internamente hay un receptor MAX485 half-duplex y un emisor MAX485. Si trabajas en full-duplex, usarás el MAX485 half-duplex para recibir datos y el emisor MAX485 para enviarlos.

Hardware

Comprueba que el PLC está alimentado (12-24 Vdc). Solo con el USB no basta para la comunicación RS-485.

Configuración de los interruptores:
Ningún interruptor afecta a la comunicación RS-485, así que la configuración de los interruptores no importa para usarla.

Pines usados:
La comunicación RS-485 usa los pines de SPI1, que no son accesibles desde los bornes del PLC.

Software

Comprueba que has seguido correctamente la guía de instalación del sistema operativo.

Configuración del software:
Una vez hecha la configuración del hardware, puedes usar RS-485 con muy poca configuración. Si quieres saber cómo configurarlo, puedes seguir esta guía.

Serial TTL (GPIO14 y GPIO15)#

Serial TTL es un protocolo de comunicación serie que usan muchos microcontroladores embebidos para la comunicación asíncrona. Un puerto serie envía los datos bit a bit y, al ser una comunicación asíncrona, no hay ninguna señal de reloj que sincronice los datos. El circuito UART ("Universal Asynchronous Receiver-Transmitter") gestiona la sincronización mediante bits de inicio y de parada, siempre que ambos equipos trabajen a la misma velocidad en baudios.

Que sea TTL significa que los niveles lógicos usados son '0' (GND) o '1' (Vcc, en este caso 3,3 V). A diferencia de RS-485 o RS-232, no usa diferencias de tensión y es full-duplex por defecto (TX y RX en cables separados + GND).

La familia Raspberry PLC solo tiene un puerto serie, en los pines RX/TX (GPIO15 y GPIO14, respectivamente). Se puede usar configurándolo con el comando stty o mediante bibliotecas serie de lenguajes como C++ (iostream, biblioteca estándar) o Python (pyserial).

Hardware

Comprueba que el PLC está alimentado (12-24 Vdc).

Configuración de los interruptores:
Ningún interruptor afecta a la comunicación serie, así que la configuración de los interruptores no importa para usarla.

Pines usados:
La comunicación serie usa los pines de los puertos serie de la Raspberry (GPIO14/TX y GPIO15/RX).

Software

Comprueba que has seguido correctamente la guía de instalación del sistema operativo.

Configuración del software:
Ningún interruptor afecta a la comunicación serie, así que la configuración de los interruptores no importa para usarla.

I2C (GPIO2 y GPIO3)#

I2C es un protocolo síncrono que usa 2 cables, uno para el reloj (SCL) y otro para los datos (SDA). Esto significa que el maestro y el esclavo envían datos por el mismo cable, que controla el maestro, que también genera la señal de reloj. I2C no usa selección de esclavo, sino direccionamiento.

I2C es un protocolo de comunicación serie. La velocidad es de 100 Kbit/s en modo estándar, pero admite hasta 3,4 Mbit/s. Es un bus muy usado en la industria, sobre todo para comunicar microcontroladores con sus periféricos en sistemas integrados. También se usa para comunicar circuitos integrados entre sí, normalmente en la misma PCB (placa de circuito impreso).

Hardware

Comprueba que el PLC está alimentado (12-24 Vdc).

Configuración de los interruptores:
Ningún interruptor afecta a la comunicación I2C, que siempre está activada. Así que la configuración de los interruptores no importa para usarla.

Pines usados:
La comunicación I2C usa los pines de la Raspberry Pi (GPIO2 para SDA y GPIO3 para SCL).

Software

Comprueba que has seguido correctamente la guía de instalación del sistema operativo.

Configuración del software:
Primero necesitas algunas bibliotecas para que I2C funcione en el Raspberry PLC:

sudo apt-get install -y python3-pip
pip3 install adafruit-blinka

Con estos paquetes instalados, ya puedes empezar a usar I2C con Python. Puedes seguir esta guía para aprender a programar un escáner I2C, un programa que busca los dispositivos disponibles en el bus.

SPI (SPI0 y SPI1)#

SPI es un bus de comunicación síncrono con arquitectura maestro-esclavo. Los esclavos no pueden iniciar la comunicación ni intercambiar datos directamente entre ellos. Solo el maestro puede seleccionar con qué esclavo se comunica mediante el pin SS (slave select).

SPI1 está conectado internamente al emisor y al receptor RS-485. Y SPI0, accesible desde los bornes del Raspberry PLC, se comparte con el circuito integrado Ethernet W5500. El pin GPIO8 hace de pin SS para un dispositivo externo. Todos estos pines deben trabajar a 3,3 V.

Hardware

Comprueba que el PLC está alimentado (12-24 Vdc).

Configuración de los interruptores:
Ningún interruptor afecta a la comunicación SPI, que siempre está activada. Así que la configuración de los interruptores no importa para usarla.

Pines usados:
Los pines de la Raspberry Pi definidos para la comunicación SPI se muestran en la tabla siguiente:

SPIRaspberry PLCPinout de la Raspberry Pi
MOSIMOSIGPIO10
MISOMISOGPIO9
SCLKSCKGPIO11
SS0GPIO8GPIO8
SS1Conectado internamenteGPIO7

Software

Comprueba que has seguido correctamente la guía de instalación del sistema operativo.

Configuración del software:
Primero necesitas algunas bibliotecas para que SPI funcione en el Raspberry PLC:

sudo apt-get install -y python3-pip
pip3 install spidev adafruit-blinka

Con estos paquetes instalados, ya puedes empezar a usar SPI con Python. Puedes seguir esta guía para aprender a usar un Raspberry PLC para comunicarte con este protocolo.

Wi-Fi y Bluetooth#

Wi-Fi es uno de los avances tecnológicos más importantes de la era moderna. Igual que otras conexiones inalámbricas como Bluetooth, es una tecnología de transmisión por radio basada en un conjunto de estándares que permiten comunicaciones rápidas y seguras entre una gran variedad de dispositivos digitales, puntos de acceso y hardware. Permite que los dispositivos con Wi-Fi accedan a Internet sin cables. Puede funcionar a corta y larga distancia, cerrada y protegida o abierta y libre. Es muy versátil y fácil de usar.

Bluetooth es otro estándar de tecnología inalámbrica. Bluetooth se desarrolló para intercambiar datos a corta distancia. Opera en el rango de 2400-2483,5 MHz, dentro de la banda ISM de 2,4 GHz. Los datos se dividen en paquetes y se intercambian por uno de los 79 canales Bluetooth definidos (cada uno con un ancho de banda de 1 MHz).

Todos los productos de la familia Raspberry Pi incorporan conexión WiFi/Bluetooth.

Para configurar Wi-Fi en el Raspberry PLC, puedes seguir esta guía.

Y si quieres saber cómo usar Bluetooth para, por ejemplo, comunicar el Raspberry PLC con un móvil Android, puedes seguir esta guía.

Funciones adicionales: UPS, RTC, pines de 3,3 V

UPS Shield#

Todos los equipos de la familia Raspberry PLC incluyen el UPS Shield. Es un UPS Smart Shield Plug & Play que da 5 segundos de alimentación ante un corte de suministro. Este tiempo extra permite que la Raspberry Pi siga un proceso de apagado correcto y evita que se corrompa la tarjeta SD. El UPS se recarga en menos de 1 minuto y el tiempo de reconexión es inferior a 20 segundos.
Si quieres ejecutar comandos concretos durante un apagado del UPS, edita el archivo "/etc/rpishutdown/hooks/pre-poweroff" y añádelos ahí. Puede que también tengas que dar permisos de ejecución al archivo con el comando "sudo chmod ugo+x /etc/rpishutdown/hooks/pre-poweroff ".

Consulta este post para más información.

Reloj en tiempo real (DS3231)#

El UPS Shield contiene un circuito integrado RTC DS3231 que se comunica con la Raspberry Pi por el bus I2C. El término reloj en tiempo real se usa para no confundirlo con los relojes de hardware ordinarios, que son solo señales que gobiernan la electrónica digital y no cuentan el tiempo en unidades humanas. No hay que confundir el RTC con la computación en tiempo real, que comparte siglas en inglés pero no tiene relación directa con la hora del día.

Aunque se puede llevar la hora sin RTC, usar uno tiene ventajas:

  • Bajo consumo (importante cuando funciona con alimentación alternativa).
  • Libera al sistema principal para tareas críticas en tiempo.
  • A veces es más preciso que otros métodos.

Una pila de botón de litio de 3 V (CR1216 o CR1220) alimenta el RTC. El módulo RTC se basa en el chip DS3231. El DS3231 es un reloj y calendario serie en tiempo real de bajo consumo, totalmente en decimal codificado en binario (BCD). Las direcciones y los datos se transfieren en serie por I2C. El reloj y calendario proporciona segundos, minutos, horas, día de la semana, fecha, mes y año. La fecha de fin de mes se ajusta automáticamente en los meses de menos de 31 días, incluida la corrección de los años bisiestos. El reloj funciona en formato de 24 horas o de 12 horas con indicador AM/PM. El DS3231 tiene un circuito de detección de alimentación que detecta los cortes y cambia automáticamente a la alimentación de respaldo, con la que sigue contando el tiempo.

Consulta este post para más información.

Señales de 3,3 Vdc#

Estos pines se pueden programar según las funciones de la Raspberry, como E/S a 3,3 V, o con cualquier función adicional que tengan:

Serie: RX/TX:
Los pines serie también pueden funcionar como pines de 3,3 V. Si los usas así, la comunicación serie no puede funcionar a la vez.

SPI0: MISO/MOSI/SCK/GPIO8(SS):
Estos pines solo pueden funcionar como pines de 3,3 V si no se va a usar el circuito integrado Ethernet W5500. Como el W5500 usa SPI para comunicarse con la placa Raspberry, no pueden darse ambos usos a la vez.

Proyectos y recursos del Raspberry PLC

Casos de estudio del Raspberry PLC#

Consulta todos los proyectos en la biblioteca de casos de estudio.

Cursos, ejemplos y documentos#

Preguntas frecuentes sobre el Raspberry PLC#

¿Qué es un PLC Raspberry Pi?

Un PLC Raspberry Pi es un controlador industrial basado en una Raspberry Pi 4B con Linux (Raspberry Pi OS), entradas y salidas industriales y alimentación de 12 a 24 Vdc. Combina la automatización de campo con el software de un ordenador Linux: Python, Node-RED y Docker.

¿Cómo se programa un PLC Raspberry Pi industrial?

Con cualquier IDE que admita sus lenguajes. Python, C++ y Node-RED son los que tienen soporte oficial, y las bibliotecas rpiplc y rpiplc-python3 dan acceso a las E/S y a las interrupciones. También se puede usar Docker. CODESYS solo funciona de forma experimental, para prototipos, pruebas y formación, no para producción.

¿Qué fuente de alimentación necesita el Raspberry PLC?

Una fuente de 12 a 24 Vdc; se recomiendan 2 A o más. Alimentado solo por USB, el PLC no puede realizar sus funciones.

¿Qué puertos y protocolos incluye el PLC Raspberry Pi industrial?

Dos puertos Ethernet (el de la Raspberry Pi y un controlador W5500), RS-485, Serial TTL, I2C y SPI, con Modbus RTU, Modbus TCP y MQTT. Los modelos FLEX admiten placas opcionales de 4G, LoRa, CAN, M-BUS, GPS y SIGFOX.

¿Qué le pasa a un PLC Raspberry Pi en un corte de alimentación?

Todos los modelos incluyen un UPS Shield que da 5 segundos de alimentación tras un corte, para que la Raspberry Pi se apague correctamente y no se corrompa la tarjeta SD. El UPS se recarga en menos de 1 minuto.

¿Qué diferencia hay entre los modelos CORE y FLEX?

Los modelos FLEX son configurables: eliges la RAM de la Raspberry Pi 4B (2, 4 u 8 GB) y placas de comunicación opcionales. Los modelos CORE son la combinación preconfigurada más habitual, lista para pedir.

Ninguna sección coincide con tu búsqueda. Prueba con el nombre de un pin, un protocolo o un componente.