Ir al contenido

RS232 es un estándar de comunicación serie muy utilizado para conectar ordenadores y dispositivos periféricos. Este estándar de comunicación punto a punto funciona con un conjunto definido de características eléctricas y funciones de señal, y permite transmitir datos bit a bit por una sola línea de datos. 

Aunque su sencillez y fiabilidad lo han convertido en una opción habitual en muchas aplicaciones desde hace años, RS-232 suele estar limitado a distancias cortas y velocidades bajas. Además, está diseñado para transmitir datos entre un DTE (equipo terminal de datos) y un DCE (equipo de comunicación de datos), por lo que solo admite la comunicación entre 2 dispositivos a la vez.

Los PLC de Industrial Shields basados en Arduino incorporan comunicación RS232 mediante un transceptor RS232 (el MAX232) y un puerto serie del Arduino del PLC. Por eso, el uso de RS232 es muy parecido al de los puertos Serial TTL habituales.

Hardware

RS232 usa señalización no balanceada (single-ended): los datos se transmiten como niveles de tensión por un solo hilo respecto a una tierra común. Por eso, usa 2 cables para lograr una comunicación full-duplex, TX y RX, y necesita una tierra común entre los dispositivos.

Las conexiones entre dispositivos son:


Los pasos para configurar RS232 varían según el PLC. Sigue el procedimiento correspondiente a tu modelo de PLC:

Recuerda alimentar correctamente el PLC con una fuente de alimentación de 12-24V.


Software

El paquete de placas industrialshields incluye una librería RS232 que facilita la programación. Esta librería se usa igual que la librería Serial de Arduino, con métodos como available(),​ read(), write(), etc.

El siguiente ejemplo establece una comunicación RS232 y te permite leer o enviar mensajes desde el terminal del PC:

#include <RS232.h>

void setup() {
  // Begin Serial port
  Serial.begin(9600);
  // Begin RS232 port
  RS232.begin(38400);
}

void loop() {
  //Send one byte for the serial, receive this byte by rs485
  if (Serial.available()){
    read_from_serial();
  }
  if (RS232.available()){
    read_from_rs232();
  }
}

static void read_from_serial(void){
  char tx = Serial.read(); //Read byte
  if (tx != '\n') Serial.println(tx); //Print the byte 
  RS232.write(tx); //Transmit by rs485
}

static void read_from_rs232(void){
  char rx = RS232.read(); //Receive the same byte
  if (rx != '\n') {
    Serial.println(rx); //Print the byte
  } 
}
Referencia de la API

Descripción:

Inicializa la comunicación con la velocidad en baudios y la configuración serie indicadas. Debe llamarse antes que cualquier otra función de comunicación.

Sintaxis:

RS232.begin(baudrate, config);

Parámetros:

  • RS232: el objeto RS232.
  • baudrate: la velocidad en baudios de la comunicación.
  • config: la configuración serie (bits de datos, paridad y bits de parada). Por defecto es SERIAL_8N1 (8 bits de datos, sin paridad, 1 bit de parada).

Devuelve:

Nada.

Descripción:

Comprueba si hay bytes disponibles para leer en el buffer RS232.

Sintaxis:

RS232.available();

Parámetros:

  • RS232: el objeto RS232.

Devuelve:

Devuelve el número de bytes disponibles para leer.

Descripción:

Lee un byte del buffer RS232.

Sintaxis:

RS232.read();

Parámetros:

  • RS232: el objeto RS232.

Devuelve:

Devuelve el byte leído del buffer RS232, o -1 si no hay datos disponibles.

Descripción:

Escribe un byte o un buffer de bytes en el bus RS232.

Sintaxis:

RS232.write(value);
RS232.write(buff, len);

Parámetros:

  • RS232: el objeto RS232.
  • value: el byte que se transmite por RS232.
  • buff: un puntero al buffer de bytes que se transmiten.
  • len: el número de bytes del buffer que se transmiten.​

Devuelve:

Devuelve el número de bytes escritos.

Calificación
0 0

No hay comentarios por ahora.

para ser el primero en comentar.