Cómo conectar dos PLCs industriales a través de RS-485

22 de mayo de 2020 por
Cómo conectar dos PLCs industriales a través de RS-485
Andrei Postolache

Introducción

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

Lecturas previas

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

Requisitos

Para trabajar con comunicación TTL en serie, necesitará cualquiera de nuestros controladores lógicos programables para la automatización industrial:

Controladores Industrial Shields controllers: Wifi & Bluetooth Controller FamilyEthernet Controller FamilyGPRS / GSM Controller Family.

Hardware

Para hacer la conexión entre los dispositivos seguimos el siguiente esquema.

Esquema para realizar la conexión entre los dispositivos.

Software

El siguiente código tiene la función de comunicar al Maestro y al Esclavo enviando la instrucción de activar el relé para encender la bomba de agua.

Un ejemplo de la comunicación de Simplecomm Master:

#include <RS485.h>
#include <SimpleComm.h>
// Create SimplePacket for sending and receiving data
SimplePacket packet;
// Define master address
uint8_t masterAddress = 0;
// Define slave address to communicate with
uint8_t slaveAddress = 1;
// Value to send as packet data
int value = 5;
////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600L);
  // Start RS485
  RS485.begin(19200L);
  RS485.setTimeout(20);
  // Start SimpleComm
  SimpleComm.begin(masterAddress);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
  static unsigned long lastSent = millis();
  // Send packet periodically: once per second
  if (millis() - lastSent >= 10000) {
  // Set request packet data
  packet.setData(value);
  // Send request to slave
  if (SimpleComm.send(RS485, packet, slaveAddress)) {
  lastSent = millis();
  Serial.print("Sent value: ");
  Serial.println(value);
  }
  }
  // Get responses
  if (SimpleComm.receive(RS485, packet)) {
  // Update value from the response
  value = packet.getInt();
  Serial.print("Received value: ");
  Serial.println(value);
  }
}
An example of Simplecomm Slave communication:
#include <SimpleComm.h>
// Create SimplePacket for sending and receiving data
SimplePacket request;
SimplePacket response;
// Define slave address to communicate with
uint8_t slaveAddress = 1;
////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600L);
  // Start RS485
  RS485.begin(19200L);
  RS485.setTimeout(20);
  // Start SimpleComm
  SimpleComm.begin(slaveAddress);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
  // Get requests
  if (SimpleComm.receive(RS485, request)) {
  int value = request.getInt();
  Serial.print("Received value: ");
  Serial.println(value);
if ( value==5){
  digitalWrite(R0_8,HIGH);
  delay(5000);
  digitalWrite(R0_8,LOW);

}
  // Process value
  //value++;
  // Send response to the request packet source
  response.setData(value);
  if (SimpleComm.send(RS485, response, request.getSource())) {
  Serial.print("Sent value: ");
  Serial.println(value);
  }
  }
}
 
 

#include <RS485.h>

Suscríbete a nuestro  YouTube channel si quieres estar al día de nuestos tutoriales.


Buscar en nuestro blog

Cómo conectar dos PLCs industriales a través de RS-485
Andrei Postolache 22 de mayo de 2020
Compartir

¿Estás buscando 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.


Industrial PLC comparison >>>