Características técnicas

Familia Raspberry PLC

Instalación inicial

Primeros pasos

En primer lugar, el PLC Raspberry Pi necesitará un sistema operativo para empezar a funcionar. Aunque puedes utilizar cualquier distribución GNU/Linux, te recomendamos que te quedes con Raspberry Pi OS, que es el sistema operativo oficial soportado por la placa Raspberry.

Para instalar un sistema operativo en la Raspberry Pi, consulte esta guia.

Si has seguido la guía con precisión, puedes acceder al PLC Raspberry a través de una pantalla y un teclado o a través de SSH utilizando el puerto Ethernet. En caso de que prefieras este último método, puedes seguir esta guia sobre cómo acceder al PLC a través de SSH.

Programación del PLC

La principal ventaja de utilizar el PLC Raspberry Pi es que es compatible con cualquier Entorno de Desarrollo Integrado (IDE) que funcione con los lenguajes de programación compatibles. Esto se puede lograr ya sea accediendo a un IDE instalado en el PLC vía X-forwarding a través de "ssh -X", o utilizando un IDE instalado en su computadora, y luego transfiriendo los archivos a través de SFTP/FTP.

Aunque se puede utilizar una gran variedad de lenguajes de programación, aconsejamos utilizar Python, C++ y Node-RED, ya que son nuestros lenguajes oficiales.

Python

Python 3.9.2 ya está preinstalado en el sistema operativo Raspberry Pi y, por lo tanto, no requiere ninguna instalación adicional.

Sin embargo, para acceder a la Entrada/Salida (E/S) y a las interrupciones del PLC, necesitarás instalar las librerías rpiplc y rpiplc-python3, que ya deberían estar instaladas si has seguido la guía para instalar el SO.

C++

La cadena de herramientas GCC viene preinstalada con el sistema operativo Raspberry Pi. Por lo tanto, no es necesaria ninguna instalación adicional para utilizar C++.

Sin embargo, para utilizar las E/S y las interrupciones del PLC, necesitarás las librerías rpiplc, que ya deberían estar instaladas si has seguido la guía para instalar el SO.

Node-RED

Node-RED es un editor de flujos basado en navegador que permite la programación gráfica de dispositivos de hardware, API y servicios en línea. Está construido sobre Node.js, lo que permite aprovechar al máximo su modelo no bloqueante basado en eventos.

A diferencia de Python o C++, Node-RED debe instalarse manualmente. Para ello, puede seguir el último paso del procedimiento guía de instalación del sistema operativo o consulte la Guía del usuario.

Fuente de alimentación

Todos los PLC (controladores lógicos programables) industriales basados en Raspberry Pi pueden alimentarse entre 12-24V. La familia Raspberry Pi tiene un consumo entre -mA y +mA. Por lo tanto, la fuente de alimentación recomendada es de 2A o superior. Cualquier fuente de alimentación industrial será una buena opción para alimentarlos.

Nuestras unidades están diseñadas para ser alimentadas entre 12-24V. Sólo alimentarlos con el USB, la unidad no será capaz de realizar sus funciones.

Si por alguna razón desea utilizar una fuente de alimentación inferior a 3 A, póngase en contacto con el servicio técnico de Industrial Shields para garantizar que su sistema funcione sin problemas.

El siguiente diagrama ilustra las conexiones necesarias para alimentar correctamente un PLC:

Power Diagram

Interruptores DIP

Los PLCs basados en Raspberry Pi tienen algunos interruptores que se pueden utilizar para configurar ciertas funcionalidades del PLC. En esta sección se explica cómo utilizarlos correctamente. Para diferenciar las distintas partes del PLC y ubicar cada interruptor en consecuencia, se utilizará la siguiente nomenclatura:

Zones Diagram

Zona B, C y D: Interruptor analógico

Analog switch

Interruptor

OFF

ON

1

AX.5

QX.5

2

AX.6

QX.6

3

AX.7

QX.7

4

NC

NC


Estos conmutadores se utilizan para elegir entre salida digital o analógica, según la tabla anterior. Si está en OFF, sólo estará disponible la salida analógica correspondiente. Si está en ON, sólo estará disponible la salida digital correspondiente. Los conmutadores se comportan de la misma forma en las zonas B, C y D, siendo el valor "X" diferente según la zona:

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

Consumo de energía

Este informe presenta un análisis del consumo de energía de varios modelos de PLC Raspberry en diferentes escenarios operativos. Comprender el uso de la energía es fundamental para optimizar la eficiencia y garantizar un rendimiento fiable en aplicaciones industriales. Las pruebas realizadas incluyen escenarios como el reposo, en el que el PLC está inactivo, salidas configuradas en ALTO, que representan la carga máxima de salida, y condiciones de estrés, que simulan picos de demanda operativa. El objetivo de los resultados es proporcionar información valiosa sobre los requisitos energéticos de estos dispositivos en distintos escenarios de uso.

Reposo

En este escenario, el PLC Raspberry está encendido, con todos los pines y las comunicaciones apagadas y utilizando una fuente de alimentación de 24V. Esta prueba mide el consumo de energía de referencia cuando el dispositivo está inactivo y no participa activamente en ninguna tarea de procesamiento o salida.

MODEL

CORRIENTE (mA)


POWER (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 HIGH

Para esta prueba, el PLC Raspberry está configurado para poner todos sus pines de salida a un estado alto utilizando una fuente de alimentación de 24V. Sin embargo, las salidas no están conectadas, lo que significa que el consumo de energía variará dependiendo de la corriente consumida por el dispositivo conectado a cada salida.

MODEL

CORRIENTE (mA)


POWER (W)

Ethernet CPU-
-
21+164
3,936
42+185
4,44
58+200
4,8
19R+260
6,24
38R+358
8,592
57R+482
11,568
38AR+267
6,408
53ARR+375
9
57AAR+280
6,72
54ARA+280
6,72
50RRA+375
9

Tensión

En condiciones de tensión, el PLC Raspberry se somete a tareas computacionales intensivas o procesos de alta demanda. Esta prueba evalúa el pico de consumo de energía cuando el dispositivo está funcionando a su máxima capacidad, proporcionando información valiosa para escenarios en los que el PLC está bajo una carga pesada. Esta prueba se realiza mediante el comando "stress --cpu 4" y utilizando una fuente de alimentación de 24V. Todos sus pines de salida están en estado alto utilizando una fuente de alimentación de 24V. Sin embargo, las salidas no están conectadas, lo que significa que el consumo de energía variará dependiendo de la corriente consumida por el dispositivo conectado a cada salida.

MODEL

CORRIENTE (mA)


POWER (W)

Ethernet CPU312
7,488
21+290
6,96
42+320
7,68
58+338
8,112
19R+395
9,48
38R+500
12
57R+625
15
38AR+410
9,84
53ARR+325
7,8
57AAR+418
10,032
54ARA+423
10,152
50RRA+522
12,528

Entradas y Salidas

Entradas analógicas

La entrada analógica proporciona una forma de leer los niveles de tensión analógica, codificando el valor con un número de N bits. Las entradas analógicas en el PLC basado en Raspberry Pi utilizan el GND interno como referencia (el mismo que la fuente de alimentación). Las entradas analógicas en estos PLCs tienen las siguientes especificaciones:

  • Rango de voltaje: de 0 a 10 Vdc.
  • Resolución: 12 bits, lo que significa que los valores de lectura pueden oscilar entre 0 y 4096.

Las entradas analógicas son las comprendidas entre IX.7 y IX.12, siendo X 0, 1 o 2 según la zona. Puede identificar las entradas analógicas de su aparato con el siguiente símbolo:

Analog Input Symbol

0V - 10Vdc Entrada analógica

 El siguiente diagrama ilustra las conexiones necesarias para utilizar correctamente una entrada analógica:

Analog Input Diagram


Configuración del software

He aquí un ejemplo sencillo de utilización 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 interconectar el pin elegido con los pines de 5V y 3.3V del PLC Raspberry. Recuerda cambiar el pin y el modelo de PLC según tus necesidades y asegúrate de tener instalados todos los paquetes necesarios para programar el PLC explicados en este blog.

El siguiente post también puede ser de interés: Conceptos básicos sobre las entradas analógicas del PLC Raspberry.

Entradas digitales

Las entradas digitales se utilizan para capturar señales que existen en uno de dos estados: alto o bajo, verdadero o falso, etc. Las entradas digitales del PLC Raspberry Pi interpretan como altos valores de 5 Vcc o superiores, hasta 24 Vcc, mientras que valores inferiores a 5V se interpretan como bajos. Hay 2 tipos de entradas que se pueden utilizar como entrada digital:

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

Puede identificarlos con los siguientes símbolos:

Isolated Input Symbol

5V - 24V entrada aislada

 

Non Isolated Input Symbol

5V - 24V entrada no aislada

 

Los siguientes diagramas ilustran las conexiones necesarias para utilizar correctamente ambas entradas como digitales:

Isolated Input Diagram

Non Isolated Input Diagram


Configuración del software

He aquí un ejemplo sencillo de utilización 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 interconectar el pin elegido con los pines de 5V y 3.3V del PLC Raspberry. Recuerda cambiar el pin y el modelo de PLC según tus necesidades y asegúrate de tener instalados todos los paquetes necesarios para programar el PLC explicados en este blog.

El siguiente post también puede ser de interés: Conceptos básicos sobre las entradas digitales de un PLC Raspberry.

Entradas de interrupción

Algunas de las entradas digitales en el PLC Raspberry son capaces de interrumpir, lo que significa que pueden ser utilizados con ISRs (rutina de servicio de interrupción) para desencadenar cierta ejecución de 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 y IX.6. Se utilizan y conectan como entradas digitales aisladas normales, y las interrupciones se programan mediante software. Estos pines están conectados directamente a la Raspberry Pi, lo que significa que pueden ser utilizados como GPIO:

Analógico/Digital

Relé

GPIO

0.5

0.0

GPIO 13

0.6

0.1

GPIO 12

1.5

1.0

GPIO 27

1.6

1.1

GPIO 5

2.5

2.0

GPIO 26

2.6

2.1

GPIO 4

Configuración del software

Este es un ejemplo de cómo utilizar los pines de interrupción. En este caso estamos utilizando Python y la libreria RPi.GPIO . Mira como la función "add_event_detect" configura la interrupción estableciendo el pin, el tipo de interrupción (por ejemplo falling) y el callback de la función a ejecutar cuando se dispare 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 el siguiente post: Cómo programar las entradas de interrupción del PLC industrial Raspberry con Python.


Salidas analógicas

Las salidas analógicas del PLC Raspberry permiten generar niveles de tensión analógicos para controlar dispositivos externos. Estas salidas traducen valores digitales, representados por un número de N bits, en las señales analógicas correspondientes. Las salidas analógicas utilizan una tierra externa (GND) como referencia. Las especificaciones de salida analógica para estos PLCs incluyen:

  • Rango de voltaje: de 0 a 10 Vdc.
  • Resolución: 12 bits, lo que significa que los valores de lectura pueden oscilar entre 0 y 4095.

Las salidas analógicas son las comprendidas entre AX.0 y AX.7, siendo X 0, 1 ó 2 según la zona. Puede identificar las entradas analógicas de su dispositivo con el siguiente símbolo:

Analog Output Symbol

0 - 10V salida analógica

 El siguiente diagrama ilustra las conexiones necesarias para utilizar correctamente una salida analógica:

Analog Output Diagram

Configuración del software

He aquí un ejemplo sencillo de utilización 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()

Recuerde cambiar el pin y el modelo de PLC según sus necesidades y asegúrese de tener instalados todos los paquetes necesarios para programar el PLC explicados en este blog.

El siguiente post también puede ser de interés: Conceptos básicos sobre las salidas analógicas del PLC Raspberry Pi.

Salidas digitales

Las salidas digitales del PLC Raspberry pueden proporcionar un valor bajo (0 Vcc) o alto (hasta 24 Vcc). Estas salidas están etiquetadas como QX.X, y se pueden identificar con el siguiente símbolo:

Digital Output Symbol

Salida digital (PWM opcional)

El valor alto de salida puede oscilar entre 5 y 24 Vcc. Esta tensión debe ajustarse mediante dos pines situados junto a las salidas: QVdc y COM(-). Por ejemplo, si desea ajustar la salida a 24V, el pin QVdc debe conectarse a 24V y el pin COM(-) a GND. El siguiente diagrama ilustra un ejemplo de conexión:

Digital Output Diagram


Configuración del software

He aquí un ejemplo sencillo de utilización 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()

Recuerde cambiar el pin y el modelo de PLC según sus necesidades y asegúrese de tener instalados todos los paquetes necesarios para programar el PLC explicados en este blog.

El siguiente post también puede ser de interés: Conceptos básicos sobre las salidas digitales del PLC Raspberry.

Salida PWM

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

El valor alto de salida puede oscilar entre 5 y 24 Vcc. Al igual que cuando se utilizan como simples salidas digitales, esta tensión debe ajustarse mediante dos pines situados junto a las salidas: QVdc y COM(-). Por ejemplo, si desea ajustar la salida a 24V, el pin QVdc debe conectarse a 24V y el pin COM(-) a GND. El siguiente diagrama ilustra un ejemplo de conexión.

El siguiente diagrama ilustra un ejemplo de conexión:

PWM Isolated Output Diagram

El siguiente blog puede ser de interés: Cómo trabajar con salidas PWM en el PLC industrial Raspberry.

Salida de relé

Un relé es un interruptor electromagnético controlado por una señal eléctrica. En las unidades Industrial Shields estos dispositivos ya están integrados en sus placas. Los relés incluidos en el PLC Raspberry tienen las siguientes especificaciones:

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

Cada salida de relé tiene dos terminales, y está etiquetada como RX.X. El siguiente diagrama ilustra las conexiones:

Relay Output Diagram

Configuración del software

He aquí un sencillo ejemplo de utilización de una salida de relé utilizando 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()

Recuerde cambiar el pin y el modelo de PLC según sus necesidades y asegúrese de tener instalados todos los paquetes necesarios para programar el PLC explicados en este blog.

Comunicaciones

Ethernet

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

Una LAN es una red de ordenadores y otros dispositivos electrónicos que cubre un área pequeña, como una habitación, una oficina o un edificio. Se utiliza en contraste con 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 a través de una LAN. Técnicamente se denomina protocolo IEEE 802.3. El protocolo ha evolucionado y mejorado con el tiempo hasta transferir datos a una velocidad de un gigabit por segundo.

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

WX5500 es un controlador Ethernet embebido TCP/IP cableado que facilita la conexión a Internet de los sistemas embebidos. Este chip permite a los usuarios disponer de conectividad a Internet en sus aplicaciones utilizando un único chip en el que están integrados la pila TCP/IP, la MAC Ethernet 10/100 y la PHY. El chip W5500 incorpora un búfer de memoria interna de 32 Kb para el procesamiento de paquetes Ethernet. Con este chip, los usuarios pueden implementar la aplicación Ethernet añadiendo un sencillo programa de socket. SPI se proporciona para una fácil integración con el microcontrolador externo.

Hardware

Asegúrese de que su PLC está alimentado (12-24Vdc). Sólo con USB es insuficiente energía para encender la comunicación Ethernet.

Configuración del interruptor:
Para el protocolo de comunicación Ethernet no hay ningún switch que lo afecte, por lo que no importa la configuración de los switches para implementar la comunicación Ethernet.

Pines utilizados:
Para la comunicación Ethernet con la interfaz eth0, no hay ningún pin utilizado Raspberry Pi. Sin embargo, para la comunicación Ethernet con la interfaz eth1, el pin utilizado de Raspberry Pi es GPIO7, que está conectado y ya ensamblado internamente al controlador Ethernet W5500. Puede acceder fácilmente al puerto Ethernet, ya que se encuentra en la parte superior de la capa de comunicaciones. La configuración del hardware Ethernet debe ser plug and play.

Software

Asegúrese de que ha seguido correctamente la guía de instalación del sistema operativo.

Configuración del Software:
Una vez realizada la configuración del hardware, es posible utilizar el puerto Ethernet como lo harías con cualquier otro ordenador Linux. No hay necesidad de instalar librerías adicionales para empezar.

RS-485

RS485, también conocida como TIA-485(-A), EIA-485, es una norma que define las características eléctricas de los controladores y receptores para su uso en sistemas de comunicaciones serie. La señalización eléctrica es equilibrada y admite sistemas multipunto.

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

MAX485 es un transceptor de bajo consumo y velocidad de giro limitada que se utiliza para la comunicación RS-485. Funciona con una sola fuente de alimentación de +5 V y la corriente nominal es de 300 μA. Al adoptar la comunicación semidúplex para implementar la función de convertir el nivel TTL en nivel RS-485, puede alcanzar una velocidad de transmisión máxima de 2,5 Mbps. El transceptor MAX485 consume una corriente de alimentación de entre 120μA y 500μA en condiciones sin carga o con carga completa cuando el controlador está desactivado.

Hay internamente instalado un receptor MAX485 half duplex y un transmisor MAX485. Si está trabajando en full duplex , utilizará el MAX485 half duplex para recibir datos y MAX485 transmisor para enviar los datos.

Hardware

Asegúrese de que su PLC está alimentado (12-24Vdc). El simple uso del USB no es suficiente para alimentar la comunicación Ethernet.

Configuración del interruptor:
Para el protocolo de comunicación RS-485 no hay ningún switch que lo afecte, por lo que no importa la configuración de los switches para implementar la comunicación RS-485.

Pines utilizados:
Para el protocolo de comunicación RS-485, los pines utilizados son los correspondientes a SPI1, que no son accesibles a través de los pines del PLC.

Software

Asegúrese de haber seguido correctamente la guía de instalación del sistema operativo.

Configuración del Software:
Una vez realizada la configuración hardware, es posible utilizar el RS-485 con muy poca configuración. Si estás interesado en saber cómo configurarlo, puedes seguir esta guia.

Serial TTL

TTL serie es un protocolo para la comunicación serie que se utiliza en muchos microcontroladores embebidos para la comunicación asíncrona. Un puerto serie envía los datos en una secuencia bit a bit, y como es una comunicación asíncrona, no hay ninguna señal de reloj que sincronice los datos. La circuitería UART ("Universal Asynchronous receiver-transmitter") se encarga de la sincronización a través de bits de inicio y parada, suponiendo que ambos dispositivos trabajan a la misma velocidad en baudios.

Al ser TTL significa que los niveles lógicos utilizados son '0' (GND) o '1' (Vcc, en este caso 3,3V). A diferencia de RS-485 o RS-232, no utiliza diferencias de voltaje y es full dúplex por defecto (TX y RX en cables separados + GND).

La familia PLC Raspberry tiene un único puerto Serie en los pines RX/TX (GPIO15 y GPIO14 respectivamente). Se puede acceder a él configurándolo con el comando stty o a través de librerías Serial para lenguajes de programación como C++ (iostream, librería estándar) o Python (pyserial).

Hardware

Asegúrese de que su PLC está alimentado (12-24Vdc).

Configuración del interruptor:
Para el protocolo de comunicación Serial no hay ningún switch que lo afecte, por lo que no importa la configuración de los switches para implementar la comunicación Serial.

Pines utilizados:
Para el protocolo de comunicación Serial, los pines utilizados son los correspondientes a los puertos serie de la Raspberry (GPIO14/TX y GPIO15/RX).

Software

Asegúrese de que ha seguido correctamente la guía de instalación del sistema operativo.

Configuración del Software:
Para la comunicación serie no hay ningún interruptor que la afecte, por lo que no importa la configuración de los interruptores para implementar la comunicación serie.

I2C

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

I2C es un protocolo de comunicaciones en serie. La velocidad es de 100 Kbit/s en modo estándar, pero permite velocidades de hasta 3,4 Mbit/s. Es un bus muy utilizado en la industria, principalmente para comunicar microcontroladores y sus periféricos en sistemas integrados. También se utiliza para comunicar circuitos integrados entre sí, normalmente alojados en una misma PCB (placa de circuito impreso).

Hardware

Asegúrese de que su PLC está alimentado (12-24Vdc).

Configuración del interruptor:
Para lograr la comunicación I2C no hay ningún interruptor que la afecte, siempre está habilitada. Así que no importa la configuración de los interruptores para implementar la comunicación I2C.

Pines utilizados:
Para el protocolo de comunicación I2C los pines definidos son los correspondientes a la Raspberry Pi (GPIO2 para SDA y GPIO3 para SCL).

Software

Asegúrese de que ha seguido correctamente la guía de instalación del sistema operativo.

Configuración del Software:
Primero necesitarás algunas librerías para hacer funcionar I2C en el PLC Raspberry:

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

Una vez instalados estos paquetes, es posible empezar a utilizar I2C con Python. Puedes seguir esta guia tpara aprender a programar un escáner I2C, un programa que busca dispositivos disponibles en el bus.

SPI

SPI es un bus de protocolo de comunicación síncrono que tiene una arquitectura maestro-esclavo. Los dispositivos esclavos no pueden iniciar la comunicación ni intercambiar datos entre sí directamente. Sólo el maestro puede seleccionar con qué esclavo se comunicará a través del pin SS (slave select).

SPI1 está ensamblado internamente con el transmisor y receptor RS-485. Y SPI0, que está disponible a través de los pines PLC Raspberry, se comparte con Ethernet W5500 IC. El pin GPIO8 actúa como pin SS para un dispositivo externo. Todos estos pines deben trabajar a 3.3V.

Hardware

Asegúrese de que su PLC está alimentado (12-24Vdc).

Configuración del interruptor:
Para lograr la comunicación SPI no hay ningún interruptor que la afecte, siempre está habilitada. Así que no importa la configuración de los interruptores para implementar la comunicación SPI.

Pines utilizados:
Para el protocolo de comunicación SPI, los pines definidos de Raspberry Pi se muestran en la siguiente tabla:

SPI

Raspberry PLC

Raspberry Pi pinout

MOSI

MOSI

GPIO10

MISO

MISO

GPIO9

SCLK

SCK

GPIO11

SS0

GPIO8

GPIO8

SS1

Internally assembled

GPIO7

Software

Asegúrese de que ha seguido correctamente la guía de instalación del sistema operativo.

Configuración del Software:
Primero necesitarás algunas librerías para hacer funcionar SPI en el PLC Raspberry:

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

Una vez instalados estos paquetes, es posible empezar a utilizar SPI con Python. Puedes seguir esta guia para aprender cómo puede utilizar un PLC Raspberry para comunicarse utilizando este protocolo.

Wi-Fi/Bluetooth

Wi-Fi es uno de los avances tecnológicos más importantes de la era moderna. Al igual que otros tipos de conexión inalámbrica, como Bluetooth, es una tecnología de transmisión por radio basada en un conjunto de normas que permite comunicaciones seguras y de alta velocidad entre una amplia variedad de dispositivos digitales, puntos de acceso y hardware. Hace posible que los dispositivos con capacidad Wi-Fi accedan a Internet sin necesidad de cables. Puede funcionar en distancias cortas y largas, estar bloqueada y protegida, o abierta y libre. Es increíblemente versátil y fácil de usar.

Bluetooth es otro estándar de tecnología inalámbrica. Bluetooth se desarrolló como una forma de intercambiar datos a corta distancia. Funciona en el rango de 2400-2483,5 MHz dentro de la banda de frecuencia ISM de 2,4 GHz. Los datos se dividen en paquetes y se intercambian a través de uno de los 79 canales Bluetooth diseñados (cada uno de los cuales tiene 1 MHz de ancho de banda).

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

Para configurar Wi-Fi en el PLC Raspberry, puedes seguir esta guia.

Y si quieres saber cómo usar Bluetooth para, por ejemplo, comunicar el PLC Raspberry con un teléfono Android, puedes seguir esta guia.

Características adicionales

UPS Shield

Todos los dispositivos de la familia Raspberry PLC incluyen el UPS Shield. Se trata de un Plug & Play UPS Smart Shield que proporciona 5 segundos de electricidad frente a un corte de suministro eléctrico. Este tiempo extra de electricidad proporciona que la Raspberry siga un correcto proceso de Apagado, evitando cualquier problema de corrupción de la SD. El tiempo de recarga del UPS es inferior a 1 minuto, y el tiempo de reconexión es inferior a 20 segundos.
Si desea ejecutar comandos específicos durante un apagado del UPS, puede editar el archivo "/etc/rpishutdown/hooks/pre-poweroff" y póngalos ahí. También es posible que necesite dar permisos de ejecución al archivo con el comando "sudo chmod ugo+x /etc/rpishutdown/hooks/pre-poweroff ".

RTC (UPS Shield)

La UPS Shield contiene un circuito integrado RTC DS3231 que se comunica a través de I2C-bus con la Raspberry Pi.El término reloj en tiempo real se utiliza para evitar confusiones con los relojes de hardware ordinarios que son sólo señales que gobiernan la electrónica digital, y no cuentan el tiempo en unidades humanas. RTC no debe confundirse con la informática en tiempo real, que comparte el acrónimo pero no se relaciona directamente con la hora del día.

Aunque se puede mantener la hora sin un RTC, utilizar uno tiene sus ventajas:

  • Bajo consumo de energía (importante cuando se utiliza energía alternativa).
  • Libera el sistema principal para tareas urgentes.
  • A veces es más preciso que otros métodos.

Hay una batería de litio de 3.3V que alimenta el RTC, recomendamos usar la batería CR2032. El módulo Raspberry Pi RTC está basado en el chip DS3231. El reloj serial en tiempo real DS3231 es un reloj/calendario de bajo consumo, con codificación decimal binaria completa (BCD). La dirección y los datos se transfieren en serie a través de I2C. El reloj/calendario proporciona información de segundos, minutos, horas, día, fecha, mes y año. La fecha de fin de mes se ajusta automáticamente para los meses con menos de 31 días, incluidas las correcciones por año bisiesto. El reloj funciona en formato de 24 o 12 horas con indicador AM/PM. El DS3231 tiene un circuito sensor de alimentación integrado que detecta los fallos de alimentación y cambia automáticamente al suministro de reserva. La operación de cronometraje continúa mientras la pieza funciona con la alimentación de reserva.

Señales de 3.3 Vdc

Estos pines pueden ser programados de acuerdo a las características de Raspberry, tales como E/S operando a 3.3V, o cualquier característica adicional presente en los pines:

I2C Pines – SDA/SCL:
El protocolo I2C está pensado para trabajar en una configuración pull-up. En este caso lee 3.3V cuando no hay nada conectado.

Serial – RX/TX:
El protocolo Serial puede funcionar también como un pin de 3.3V. Si se utilizan estos pines, la comunicación serie no puede funcionar al mismo tiempo.

SPI0 – MISO/MOSI/SCK/GPIO8(SS):
Estos pines sólo pueden funcionar como pines de 3,3V si no se va a utilizar el IC Ethernet W5500. Como el W5500 utiliza SPI para comunicarse con la placa Raspberry, ambos comportamientos no pueden ocurrir al mismo tiempo.