Conceptos básicos sobre RS485 de un PLC industrial

6 de marzo de 2020 por
Conceptos básicos sobre RS485 de un PLC industrial
Andrei Postolache

            RS-485 's Introducción

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

            Nuestros PLC para automatización industrial tienen dentro del circuito integrado MAX485. Este es un transceptor de baja potencia utilizado para la comunicación RS-485 que funciona con una sola fuente de alimentación de 5V y la corriente promedio es de 300μA. Usando la comunicación Half Duplex para convertir el nivel TTL a nivel RS-485, puede alcanzar la velocidad máxima de transmisión de 2.5Mbps. Internamente podemos encontrar un transceptor Half Duplex MAX485 y también un MAX485, de forma que, si estamos en Full Duplex, utilizará el Half Duplex MAX485 para recibir datos y el transmisor MAX485 los enviará.

            Lectura previa

            We recommend you read the following posts in order to understand the program of this blog. We used the following blog posts to do this example:
            Cómo programar nuestro PLC industrial Arduino conArduino IDE:


            Requirements for working with RS-485

            In order to work with RS-485 protocol, you will need any of our industrial Arduino PLC controllers for industrial automation:
            - Controladores Industrial Shields:
            - Configuración de los interruptores y puentes
             

            RS-485 en M-Duino

            En el  M-Duino Familyosiempre tendrás activado el RS-485 por defecto, por lo que no necesitarás activarlo con ningún interruptor.

             

            RS485 en M-Duino - Configuración de interruptores y jumpers


            RS-485 en Ardbox

            ForPara la familia Ardbox tenemos dos subfamilias. En ésta, tenemos que elegir entre RS-485 y RS-232 utilizando los interruptores y puentes como mostramos en la siguiente imagen:

            IMPORTANTE: LA CONFIGURACIÓN DE LA COMUNICACIÓN YA ESTÁ HECHA, SÓLO HAY QUE ELEGIRLA AL COMPRAR EL DISPOSITIVO.





            Ardbox Relay HF+



            Hardware

            The first thing we need to do is to be sure that the industrial Arduino PLC is supplied with 12-24Vdc.

            M-Duino - Pines PLC para comunicación RS-485

            Los pines del PLC que tenemos que utilizar para la comunicación RS-485. 

            Ardbox Analog HF+ - Pins PLC for RS-485 communication

            Ardbox Relay HF+ - Pines PLC para comunicación RS-485

            The first step is downloading the Arduino based PLC boards para Arduino IDE.

            Después de llevar a cabo la configuración de hardware, necesitamos continuar con la configuración de software y saber cómo utilizarla. Para empezar con este proceso, es necesario incluir la librería de RS485.h, la cual está incorporada con nuestras
            Boards. Después de esto, en la función de setup, por favor tenga cuidado en realizar la correcta implementación de su comunicación.

            Para todas las familias:

            Configuación de Software

            #incluir <RS485.h>

            Para comprobar la activación de RS-485 solo tienes que utilizar el monitor serie del Arduino IDE usando la oración correcta dentro de la función setup ().

            Serial.begin(9600); 

            También es importante implementar la inicialización en la función setup().

            RS485.begin(38400);

            IMPORTANTE: COMPRUEBA LA VELOCIDAD DE TRANSMISIÓN DE LOS DISPOSITIVOS PLC-PORTÁTIL Y PLC.

            Un ejemplo básico de escritura en el RS-485:

            // Include Industrial Shields libraries
            #include <RS485.h>
            
            //// IMPORTANT: check switches configuration
            
            ////////////////////////////////////////////////////////////////////////////////////////////////////
            void setup() {
              // Begin serial port
              Serial.begin(9600);
            
              // Begin RS485 port
              RS485.begin(38400);
            }
            
            ////////////////////////////////////////////////////////////////////////////////////////////////////
            void loop() {
              // Wait bytes in the serial port
              if (Serial.available()) {
                byte tx = Serial.read();
            
                // Echo the byte to the serial port again
                Serial.write(tx);
            
            
                // And send it to the RS-485 port
              RS485.write(tx);
              }
            }

            Un ejemplo básico de lectura del RS-485:  

            // Include Industrial Shields libraries
            #include <RS485.h>
            
            //// IMPORTANT: check switches configuration
            
            ////////////////////////////////////////////////////////////////////////////////////////////////////
            void setup() {
              // Begin serial port
              Serial.begin(9600);
            
              // Begin RS485 port
              RS485.begin(38400);
            }
            ////////////////////////////////////////////////////////////////////////////////////////////////////
            void loop() {
              // Print received byte when available
              if (RS485.available()) {
                byte rx = RS485.read();
            
                // Hexadecimal representation
                Serial.print("HEX: ");
                Serial.print(rx, HEX);
            
                // Decimal representation
                Serial.print(", DEC: ");
                Serial.println(rx, DEC);
              }
            }

            Ejemplo básico de RS-485 Full Duplex:

            Antes de iniciar la prueba, conecta A, B (receptores) a los Y, Z (transmisores).

            // Include Industrial Shields libraries
            #include <RS485.h>
            //// IMPORTANT: check switches configuration
            //// IMPORTANT: Full duplex mode is only available when device supports it
            ////////////////////////////////////////////////////////////////////////////////////////////////////
            byte tx = 5;
            void setup() {
              // Begin serial port
              Serial.begin(9600);
              // Begin RS485 port
              RS485.begin(38400, FULLDUPLEX);
              Serial.println("setup");
            }
            ////////////////////////////////////////////////////////////////////////////////////////////////////
            void loop() {
              // Wait bytes from the RS-485
              RS485.write(tx);
              delay(3000);
              if (RS485.available()) {   
                byte rx = RS485.read();
                // In full-duplex mode it is possible to send and receive data
                // at the same time in a secure way
                RS485.write(rx);
                // Echo the byte to the serial port
                Serial.println(rx);
              }
            } 


            Buscar en nuestro blog

            Conceptos básicos sobre RS485 de un PLC industrial
            Andrei Postolache 6 de marzo 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 >>>