Según altos estándares industriales

Busca en nuestro Blog. Encontrarás múltiples aplicaciones, soluciones, ejemplos de código. Navega utilizando la nube de etiquetas o busca utilizando criterios específicos

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

Ejemplo de serie del software Arduino


 
 

¿Qué es la comunicación Serial con Arduino? ¿Cómo se utiliza la Librería en el Arduino IDE?

Hay diferentes tipos de comunicación Serial. Cuando se utiliza una placa Arduino en un proyecto puedes utilizar el estándar de comunicación Serial desde los pines Rx, Tx, de la UART incorporado en la misma placa Arduino, lo que se llama Serial TTL. En este caso, utilizarás la Librería Hardwareserial.h, pero hay otros pines adicionales que también te permiten trabajar como Rx o Tx. Por ejemplo, los pines de la comunicación SPI son MISO, MOSI y Select (SC), pero también son pines que pueden trabajar como entradas y salidas digitales, o si lo necesitas, puedes utilizar esos pines como Rx, Tx usando la Librería softwareserial.h. 

Las comunicaciones Serial te permiten conectar dos dispositivos diferentes enviando y recibiendo datos entre ellos.

El puerto Serial TTL se puede transformar a un estándar industrial como RS232 y RS485. Cuando utilizas RS232, la funcionalidad es bastante similar a cuando trabajas directamente con el puerto Serial TTL, aunque si trabajas usando RS485, puedes configurar una red usando un dispositivo Master que se puede conectar con dispositivos Slave. Entonces, la cantidad de dispositivos se ha incrementado de 2 a 32 dispositivos (nodos). Y la distancia máxima entre ellos puede ser de hasta 1220 m si el cableado está bien hecho y de acuerdo con EMC y se evita el ruido eléctrico.

En resumen, si estás utilizando el puerto serie UART de Arduino o el PLC basado en Arduino para proyectos industriales, el uso de otros pines que funcionen como TTL en serie puede ayudarte con el éxito del desarrollo de tu proyecto. Entonces, ese puerto serial adicional debe programarse usando 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)

Esta publicación explica la ventaja de la Librería SoftwareSerial para simular un puerto serial a través del Software (TTL serial virtual) usando el Arduino IDE.

Placa Arduino Uno Serial TTL

Puerto Serie en Arduino y en un PLC Arduino Industrial de Industrial Shields®

Arduino Uno incluye 1 puerto serial TTL desde pin 0 y pin 1. Este trabaja desde UART, pero existe la posibilidad de usar otros pines como Serial TTL. Por ejemplo, todos los pines digitales pueden funcionar como Tx, pero los pines de comunicación SPI también se pueden configurar como Rx, por lo que podrás agregar al menos 3 puertos SoftwareSerial adicionales. Mira en las especificaciones técnicas de Arduino UNO dónde se explica que el Rx y Tx de la UART comparten el puerto USB, por lo que si necesitas usar Rx y Tx desde UART, el puerto USB no se puede usar. También hay otras características que afectan el uso de Arduino UNO por lo que recomendamos el uso de Arduino Leonardo y Arduino Mega si necesitas usar ambos puertos, USB y Serial TTL.

Como se observa en las características técnicas de Arduino Mega, incluye 4 puertos UART serial TTL y también puedes usar otros pines como Rx. Al usar Arduino Leonard, el UART no se comparte desde el USB, por lo que podrías usar USB y Serial TTL para trabajar juntos.

De todos modos, no recomendamos el uso del puerto USB para enviar y recibir datos porque está diseñado solo para programar la placa Arduino. A veces, la configuración del chip UART puede estar mal configurada si el volumen y / o la velocidad de la comunicación es bastante alto. Entonces, por razones de seguridad en proyectos industriales, recomendamos usar RS232 en lugar de USB.

Utilizando un PLC Industrial con Arduino

Usando un Arduino de Industrial Shields®, la configuración estándar ya se ha realizado. Por lo tanto, puede conectarse directamente a los puertos de comunicación RS232 y RS485, pero solo uno de ellos puede ejecutarse en HardwareSerial, por lo que el otro debe configurarse como SoftwareSerial. Debes configurar los puentes internos para definir qué puerto debe funcionar como HardwareSerial y cuál debería funcionar como SoftwareSerial porque el PLC te permite configurar cuál puede funcionar como Hardware Serial.

Industrial Arduino PLC Ardbox Relay

                    Mira el ejemplo

                    Requisitos

                    PLC Ethernet o 20 I/Os:    Ethernet PLC          20 I/Os PLC

                    Librería SoftwareSerial:       Librería SoftwareSerial

                    Configuración

                    Para 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)

                    Recomendamos usar uno de los pines habilitados para Rx para Tx.

                    Para Arduino MEGA:

                    En el Arduino MEGA, todos los pines pueden ser usados para Tx, mientras que para hile 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 (MOSI)
                    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");
                    }

                    ¿Estás buscando tu PLC ideal?

                    Mira esta comparativa con otros controladores industriales

                    Comparamos entradas, salidas, comunicaciones y otras características con las de algunas de las marcas relevantes


                    Comparación de controladores PLC industriales >>

                    ¿Quieres más información? 

                    ¡Solo llena el formulario! 

                    ¡Quiero saber más!  Por favor, llene el formulario correctamente.