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

Once the hardware configuration is done, let's configure the software. The industrial Raspberry Pi PLC is configured by default to work with the RS485 communication. If you are using a different image than the default, please follow the instructions of the Section 15.2 (32-bit version) or 15.3 (64-bit version) of the UserGuide.

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!