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:
En la familia M-Duino, RS232 no necesita configuración de hardware. Basta con conectar los cables necesarios (TX, RX y GND).
Según la configuración, el Ardbox puede usar RS232 mediante una interfaz serie por hardware del Arduino o mediante software serial. La opción principal es usar el serie por hardware, pero si ya está en uso (por ejemplo, para RS485), la alternativa es software serial. En cuanto al hardware, hay que configurar algunos jumpers e interruptores.
Jumpers
Los PLC Ardbox analógicos tienen 2 grupos de jumpers, accesibles al retirar la tapa del equipo.

Pines de la zona 1 | |
Izquierda | Derecha |
RS485 | RS485 |
D0 (Arduino) | D1 (Arduino) |
RS232 | RS232 |
Pines de la zona 2 | |
Izquierda | Derecha |
Q0.9 | Q0.8 |
D4 (Arduino) | D8 (Arduino) |
RS232 (software serial) | RS232 (software serial) |
Serie por hardware
Para usar el serie por hardware, coloca los jumpers de la zona 1 según la imagen anterior: conectando los pines de la fila central con los de la fila inferior.
Software serial
Para usar software serial, los jumpers de la zona 1 deben estar en RS485 y los de la zona 2 en la posición inferior: conectando los pines de la fila central con los de la fila inferior.
Interruptores DIP
Por último, hay algunos interruptores que solo hay que configurar cuando se usa el serie por hardware. Busca los interruptores situados en la parte superior del PLC (junto a los LED) y configúralos así:
- Interruptor 1 en OFF para habilitar RS-232.
- Interruptor 2 en ON para habilitar RS-232.
- Interruptor 3 en OFF para habilitar RS-232.
- Interruptor 4 en ON para habilitar RS-232.

Según la configuración, el Ardbox puede usar RS232 mediante una interfaz serie por hardware del Arduino o mediante software serial. La opción principal es usar el serie por hardware, pero si ya está en uso (por ejemplo, para RS485), la alternativa es software serial. En cuanto al hardware, hay que configurar algunos jumpers e interruptores.
Jumpers
Los PLC Ardbox de relés tienen 3 grupos de jumpers, accesibles al retirar la tapa del equipo.

Pines de la zona 1 | |
Izquierda | Derecha |
RS485 Y+ | RS485 Z- |
Habilitar | Habilitar |
A0.0 | A0.1 |
Pines de la zona 2 | |
Izquierda | Derecha |
I0.2 | I0.3 |
D4 (Arduino) | D8 (Arduino) |
RS232 (SS) | RS232 (SS) |
Pines de la zona 3 | |
Izquierda | Derecha |
RS485 | RS485 |
D0 (Arduino) | D1 (Arduino) |
RS232 | RS232 |
Serie por hardware
Para usar el serie por hardware, coloca los jumpers de la zona 3 según la imagen anterior: conectando los pines de la fila central con los de la fila inferior.
Software serial
Para usar software serial, los jumpers de la zona 3 deben estar en RS485 y los de la zona 2 en la posición inferior: conectando los pines de la fila central con los de la fila inferior.
Interruptores DIP
Por último, hay algunos interruptores que solo hay que configurar cuando se usa el serie por hardware. Busca los interruptores situados en la parte superior del PLC (junto a los LED) y configúralos así.
- Interruptor 1 en ON para habilitar RS-232.
- Interruptor 2 en OFF para habilitar RS-232.
- Interruptor 3 en ON para habilitar RS-232.
- Interruptor 4 en OFF para habilitar RS-232.

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 } }
#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.
No hay comentarios por ahora.