Cómo trabajar con RS485 en un Raspberry PLC
Aprende a trabajar con la comunicación RS485 del PLC Raspberry Pi
8 marzo, 2021 por
Cómo trabajar con RS485 en un Raspberry PLC
Boot & Work Corp. S.L., Marti Guillem Cura

Introducción

El RS-485, también conocido como EIA-485, se define como un sistema de bus multipunto diferencial; es perfecto para transmitir datos con alta velocidad a distancias de hasta 12 metros. Una de sus características más importantes es que el par de hilos trenzados reduce el ruido inducido en la línea de transmisión. Se pueden conectar varios receptores a una red de este tipo en un bus lineal multipunto. Estas características hacen que el RS-485 sea útil en sistemas de control industrial y aplicaciones similares.

Nuestros PLCs para la automatización industrial llevan en su interior el circuito integrado SC16IS752. Se trata de un transceptor de bajo consumo utilizado para la comunicación RS-485 que funciona con una sola fuente de alimentación de 5V y la corriente media es de 300μA. Utilizando la comunicación half-duplex para convertir el nivel TTL en nivel RS-485, puede alcanzar la máxima velocidad de transmisión de 2,5Mbps.

Odoo text and image block

En este post, aprenderás cómo hacer lo básico para trabajar con el RS485 de los controladores lógicos programables Industrial Shields Raspberry Pi. Al finalizar el post, serás capaz de entender cómo conectar y configurar tu controlador PLC basado en Raspberry Pi industrial.

Lecturas previas

Te recomendamos que leas las siguientes entradas para entender el programa de este blog. Hemos utilizado las siguientes entradas del blog antes de hacer este ejemplo::

  • Cómo acceder al PLC de la Raspberry Pi Ver >>

  • Cómo cambiar la IP en Windows y LinuxVer >>

  • Conceptos básicos sobre entradas digitales del PLC Raspberry Ver >>

Requisitos

Para seguir el blog y hacer todas las pruebas correspondientes necesitarás los siguientes dispositivos:

  • Fuente de alimentación de 12/24 Vdc Ver >>

  • Cualquier dispositivo de la familia Raspberry PLC Ver >>

  • Cualquier dispositivo de la familia M-Duino / Ardbox Ver >>

  • Algunos cables

Odoo image and text block

Hardware

Un PLC industrial Raspberry incluye dos puertos RS485 half-duplex . Para que funcione como una comunicación full-duplex, debes utilizar ambos al mismo tiempo, uno para enviar datos y el otro para recibir. 

En primer lugar, asegúrese de que el PLC está alimentado con una tensión de 12-24 Vdc. Para trabajar con el RS48 debemos conectar los pines A+ y B- con los correspondientes A+ y B-. 





Software

Una vez realizada la configuración del hardware, vamos a configurar el software. El PLC industrial Raspberry Pi está configurado por defecto para trabajar con la comunicación RS485. Si estás utilizando una imagen diferente a la predeterminada, sigue las instrucciones de este enlace.

El PLC industrial Raspberry Pi utiliza los puertos serie ttySC0 y ttySC1 para comunicarse. En este post, verás cómo comunicarte con un PLC de la familia M-Duino para enviar y recibir datos. En primer lugar, harás una prueba inicial para comprobar el RS485 en tu Controlador Lógico Programable.


Prueba de verificación

En la siguiente prueba vas a utilizar los dos canales RS485 para comunicarte entre ellos, conectando el pin A+ con el otro A+ y el B- al pin B- del mismo PLC. Después de conectar los cables, crearás un nuevo script bash.

nano Test_RS485.sh 


En primer lugar, inicializarás ambos puertos serie a la misma tasa de baudios de 38400. 

#!/bin/bash

stty 115200 -F /dev/ttySC0 #will be used to send data
stty 115200 -F /dev/ttySC1 #will be used to receive data


Todos los datos recibidos desde el /dev/ttySC1 serán almacenados en el archivo temporal rs485.txt. Se enviará un mensaje "OK" desde el /dev/ttySC0, si todo está conectado correctamente, se enviará al serial /dev/ttySC1 y se escribirá en rs485.txt. El mensaje resultante se almacenará en la variable RESULTADO para una futura verificación. Asegúrese de matar el proceso cat, de lo contrario se ejecutará en segundo plano.

cat /dev/ttySC1 > /tmp/rs485.txt &
sleep 1
echo "OK" > /dev/ttySC0
RESULT=$(cat /tmp/rs485.txt)
sudo killall cat > /dev/null


Por último, comprobarás si hay datos en la variable RESULTADO. Si la comunicación ha sido exitosa, imprimirá en el terminal el mensaje recibido "OK". En caso contrario, se mostrará un mensaje de error.

if [ -n "${RESULT}" ] ; then
        echo rs485 true "${RESULT}"
else
        echo rs485 false "RS-485 cannot read from /dev/ttySC1"
fi


Prueba de conexión de M-Duino

Después de comprobar que ambos puertos RS485 funcionan correctamente, conectarás tu PLC Raspberry a uno de los PLCs M-Duino. En este caso, estamos utilizando un M-Duino 54 ARA+. Programarás tus PLCs para que envíen información de uno a otro y devuelvan un mensaje de confirmación. Para la conexión del hardware debes cablear el pin A+ del PLC Arduino con el pin A+ del PLC Raspberry y también el B- con el B-.

En ambos programas Arduino hará la misma configuración:

// Include Industrial Shields libraries
#include <RS485.h>
//// IMPORTANT: check switches configuration
////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
  // Begin serial port
  Serial.begin(9600);
  // Begin RS485 port
  RS485.begin(38400);
}
////////////////////////////////////////////////////////////////////////////////////////////////////

El primer programa enviará datos desde el PLC Arduino al PLC Raspberry. Estará esperando los datos desde el puerto serie y, cuando los reciba, los enviará por RS485. Mientras tanto, el PLC Raspberry estará esperando la información durante 5 segundos y, una vez recibida, la mostrará en el terminal.  Debes configurar el siguiente código en la función de bucle del PLC Arduino:

////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
  // Wait bytes in the serial port
  if (Serial.available()) {
    byte tx = Serial.read();

    // Echo the byte to the serial port again
    Serial.write(tx);

    // And send it to the RS-485 port
    RS485.write(tx);
  }
}
////////////////////////////////////////////////////////////////////////////////////////////////////

En cuanto al lado de la Raspberry, tendrás que crear un nuevo script bash y pegar el siguiente código:

#!/bin/bash

stty 115200 -F /dev/ttySC0 #will be used to send data
end=$((SECONDS+5))

while [ $SECONDS -lt $end ]; do
	cat /dev/ttySC0 > /tmp/rs485.txt &
	sleep 1
	RESULT=$(cat /tmp/rs485.txt)
	if [ -n "${RESULT}" ] ; then
		echo "${RESULT}"
		break
	fi
done

sudo killall cat > /dev/null

El segundo programa enviará datos desde el PLC Raspberry al PLC Arduino. Enviarás un mensaje "¡Hola Mundo!" desde el puerto serie ttySC0 del PLC Raspberry y, cuando lo recibas, lo mostrarás en el monitor serie del IDE Arduino.

Añade las siguientes líneas antes de la configuración:
  int Period = 1000; //Periode d'enviament de dades en ms
  int unsigned long Time;
  String rcv_message;

Debes configurar el siguiente código en la función de bucle del PLC Arduino:

////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
  //Print received byte when available
  if (RS485.available()) {
    rcv_message = RS485.readString();
    Serial.println(rcv_message);
  }
}
////////////////////////////////////////////////////////////////////////////////////////////////////

En cuanto al Raspberry, tendrás que crear un nuevo script bash y pegar el siguiente código:

#!/bin/bash

stty 115200 -F /dev/ttySC0 #will be used to send data
echo "Hello World!" > /dev/ttySC0

¿Quieres saber más sobre el Raspberry PLC de Industrial Shields?

Descubre las características de este controlador basado en código abierto.


Cómo trabajar con RS485 en un Raspberry PLC
Boot & Work Corp. S.L., Marti Guillem Cura
8 marzo, 2021
Compartir
Archivar

¿Buscas tu controlador lógico programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Comparación PLC industrial>>>

¿Quieres más información?

¡Rellena el formulario!

¡Cuéntame más!