Cómo utilizar la librería de Software Serial en el controlador industrial Arduino PLC

Ejemplo de serie del software Arduino
18 de febrero de 2019 por
Cómo utilizar la librería de Software Serial en el controlador industrial Arduino PLC
Boot & Work Corp. S.L., Support Team


 
 

Index

¿Qué es la comunicación en serie con Arduino? ¿Cómo se utiliza la biblioteca en el IDE de Arduino? 

Hay diferentes tipos de comunicaciones en serie. Cuando usas una placa Arduino en un proyecto puedes elegir los pines Seriales estándar como Rx Tx del software Arduino, desde la UART dentro de la placa Arduino, por lo que se llama Serial TTL. En ese caso, utilizarás la librería Hardwareserial.h, pero algunos pines adicionales pueden funcionar como Rx o Tx. Por ejemplo, los pines de comunicación SPI pueden funcionar como MISO, MOSI y Select (SC), pero también son pines que pueden funcionar como entrada o salida digital, o si lo necesitas, podrías usar esos pines como Rx, Tx usando la librería softwareserial.h.
 

Serial communications allow you to connect two different devices sending and receiving data between them.  

El puerto Serial TTL se puede transformar a un estandar Industrial cómo son RS232 y RS485. Cuándo utilizas RS232, la funcionalidad es bastante similar a cuando trabajas directamente con el puerto Serial TTL aúnque trabajas a un rango de voltaje estandarizado ya que Serial TTL para una placa Arduino Uno, Mega o Leonardo trabaja a 5V. En cambio si utilizas el puerto RS485 puedes configurar una red de comunicaciones entre dispositivos dónde defines un equipo que trabaje como MAESTRO (Master) conectado a varios dispositivos configurados como ESCLAVOS (Slave). En este caso el numero de dispositivos que puedes conectar es de entre 2 a 32 dispositivos (comunmente llamados Nodos). La máxima distáncia entre estos dispositivos será de hasta 1220m siempre y cuando el cableado esté bien echo y cumpliendo con los requisitos EMC y el ruido eléctrico haya sido minimizado.

En resumen, si estás utilizando el puerto serie UART del Arduino o del PLC basado en Arduino para proyectos industriales. El uso de otros pines que funcionen como TTL Serial puede ayudarte con el éxito del desarrollo de tu proyecto.  Por lo tanto, ese puerto serie adicional debe ser programado utilizando la biblioteca softwareserial.h.

Si no puedes utilizar la Librería HardwareSerial, porque necesitas utilizar un protocolo de comunicación que necesite de la comunicación originaria de la UART física de la placa en lugar de utilizar un puerto seria virtual. En estos casos necesitarás convertir el estándar RS232 o RS485 del dispositivo a Puerto Serie TTL. (Este ejemplo lo mostraremos en otro post)

This post explains the advantage of the SoftwareSerial Library to simulate a serial port through Software (virtual serial TTL) using the Arduino IDE. 

Puertos serie en Arduino y PLCs industriales Arduino utilizando Industrial shields

Arduino Uno includes 1 serial TTL port from pin 0 and pin 1. It works from UART, but there is the possibility to use it as a TTL with other pins. For example, all digital pins can work as a Tx, but the SPI communication pins can work as an Rx, so you could be able to add at least 3 additional SoftwareSerial ports.  See on technical specifications from Arduino UNO that Rx and Tx are shared with USB port, so if you need to use Rx and Tx from UART the USB port can not be used. Other characteristics affect the use of Arduino UNO so we recommend the use of Arduino Leonardo and Arduino Mega if you need to use both ports, USB and Serial TTL.

Como se observa en las carecteristicas técnicas de Arduino MEGA, Esta incluye 4 puertos Serie TTL independientes. Utilizando la placa Arduino Leonardo, tiene unicamente un único puerto Serie TTL si bien este está separado del puerto USB de la placa.

De todos modos, en ningún caso recomendamos el uso del puerto USB para enviar y recibir datos ya que este ha estado diseñado para la carga del programa. Cuando se utiliza el puerto USB de la placa Arduino para enviar datos, ya sea por envio de muchos datos o por altas velocidades, el chip se desprograma y puede dar problemas de comunicación dificiles de arreglar en un proyecto industrial por lo que recomendamos el uso de RS232 en lugar de USB para estos casos.

Uso de un controlador industrial Arduino

Using an Arduino Industrial Shield, the standard configuration has already been done. So you can connect directly to RS232 and RS485 communication ports but only one of them can run under hardware serial, so, the other must be configurated as SoftwareSerial. You need to configure the internal jumpers to define which port should work as hardware serial and which one should work as SoftwareSerial because the PLC allows you to configure which one can run as a hardware serial. 

Ejemplo de uso

                Requisitos

                Configuración

                Por el Arduino LEONARDO

                Todos los pines se pueden usar para Tx en el Arduino LEONARDO, mientras que para Rx se pueden usar los siguientes:

                • Pin 14 de Leonardo (SO)

                • Pin 15 de Leonardo (SCK)

                • Pin 16 de Leonardo (SI)

                We recommend using one of the Rx-enabled pins for Tx.

                Por el Arduino MEGA

                En el Arduino MEGA, todos los pines pueden ser usados para Tx, mientras que para Rx se pueden usar los siguientes

                • Pin 50 del Arduino Mega 2560 (SO)

                • Pin 51 del Arduino Mega (SI)

                • Pin 52 del Arduino Mega (SCK)

                Recomendamos usar uno de los pines Rx habilitados para Tx. Usando una placa Arduino (este ejemplo se ha realizado utilizando Arduino Leonardo, Arduino Uno y Arduino Mega. Si necesitas utilizar otras placas Arduino, puedes consultar las especificaciones técnicas de esa placa).


                Software

                Este sketch es muy simple y muestra cómo funciona la librería. Primero, se deben definir los pines Tx y Rx del equipo para el SoftwareSerial (lo estamos probando en un modelo de la Familia Ardbox). Mira el código fuente de SoftwareSerial:
                SoftwareSerial mySerial(14, 15); // RX, TX

                Rx es el pin digital 14 (SO), conectado a TX del otro dispositivo.

                Tx es el pin digital 15 (SI), conectado aRX del otro dispositivo.


                Recibe de HardwareSerial, envia a SoftwareSerial. Recibe de SoftwareSerial, envia a HardwareSerial.

                #include <SoftwareSerial.h>
                
                SoftwareSerial mySerial(14, 15); // RX (MISO), TX (SCK)
                
                void setup()  
                {
                  // Open serial communications and wait for port to open:
                  Serial.begin(9600);
                  while (!Serial) {
                    ; // wait for serial port to connect. Needed for Leonardo only
                  }
                
                
                  Serial.println("Goodnight moon!");
                
                  // set the data rate for the SoftwareSerial port
                mySerial.begin(9600); mySerial.println("Hello, world?"); } void loop() // run over and over
                { if (mySerial.available())
                Serial.write(mySerial.read());
                if (Serial.available())
                mySerial.write(Serial.read()); }

                Este otro código envía instrucciones a través del serial del software: 
                 
                #include <SoftwareSerial.h>
                SoftwareSerial mySerial(14, 15);  // Rx (MISO), Tx (SCK)
                void setup() {
                  // put your setup code here, to run once:
                mySerial.begin(9600);
                Serial.begin(9600);
                }
                void loop() {
                  // put your main code here, to run repeatedly:
                delay(500);
                mySerial.println("Instruction 1"); 
                Serial.println("1st instruction sended");
                delay(500); 
                mySerial.println("Instruction 2"); 
                Serial.println("2nd instruction sended");
                }

                Buscar en nuestro blog

                Cómo utilizar la librería de Software Serial en el controlador industrial Arduino PLC
                Boot & Work Corp. S.L., Support Team 18 de febrero de 2019
                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 >>>