C贸mo configurar el Puerto Serie en Arduino IDE industrial
Ejemplo utilizando el puerto serie RS-485
22 julio, 2019 por
C贸mo configurar el Puerto Serie en Arduino IDE industrial
Boot & Work Corp. S.L., Quesada Dani Salvans

Index

1. Introducci贸n
2. RS-485
3. Maestro-Esclavo
4. Configuraci贸n
5. Ejemplo de c贸digo

Introducci贸n

En este post, ver谩s c贸mo es el protocolo RS-485, la relaci贸n maestro-esclavo y profundizar谩s en c贸mo configurar esta comunicaci贸n de la mejor manera posible.


RS-485

RS-485 es un est谩ndar que define las caracter铆sticas el茅ctricas de los conductores y receptores para su uso en sistemas de comunicaci贸n en serie. De acuerdo con la se帽alizaci贸n el茅ctrica, est谩 equilibrado y soporta todo tipo de sistemas multipunto. Implementando el est谩ndar, las redes de comunicaciones digitales pueden utilizarse efectivamente a largas distancias y tambi茅n en ambientes electr贸nicamente ruidosos. Se pueden conectar varios receptores a una red en un bus lineal multipunto.

Este protocolo es com煤n en los sistemas de control industrial y en este tipo de aplicaciones. Se utiliza en PLCs (Controladores L贸gicos Programables) y en f谩bricas entre otras aplicaciones. Se aplica como la capa f铆sica que subyace a muchos protocolos de automatizaci贸n est谩ndar y patentados que se utilizan para implementar sistemas de control industrial como el Modbus.

Aqu铆 tienes algunas referencias a otras entradas de este blog sobre RS-485 y Modbus:
Comunicaci贸n por MODBUS RTU a trav茅s de una interfaz serie RS485 (m贸dulo Seneca Z-D-in).


RS485 Gu铆a sobre incidencias

Read the Post >>>


Maestro-Esclavo

Normalmente, cuando hablamos de una red maestro-esclavo, el dispositivo maestro inicia toda la actividad de comunicaci贸n. Hay muchas comunicaciones diferentes pero, en esta, el maestro est谩 t铆picamente ubicado en el centro a lo largo del conjunto de cables RS-485 y dos esclavos est谩n ubicados en el extremo f铆sico de los cables, haciendo las terminaciones.

Hay tres tipos de relaciones entre el maestro y el esclavo desde el punto de vista de la Tx y Rx (Transmisor y Receptor); el Simplex, el Full Duplex y el Half Duplex..

  • El Simplex es un tipo de transmisi贸n unidireccional en el que el Rx no puede responder al Rx.

  • El Half Duplex permite la transmisi贸n en ambas direcciones. Aunque Tx y Rx comparten la misma frecuencia, Tx s贸lo puede ocurrir de manera simult谩nea.

  • El Full Duplex permite la transmisi贸n en ambas direcciones y para el mismo canal de forma simult谩nea, utilizando dos frecuencias diferentes; una para Tx y otra para Rx.


Simplex, Half Duplex, Full Duplex

Configuraci贸n

Para explicar la configuraci贸n del RS-485, tomaremos un ejemplo: el Sinamics V20 Converter de Siemens.

Un PLC maestro puede conectar un m谩ximo de 31 convertidores (esclavos) a trav茅s de una interfaz serie y controlarlos con el protocolo de bus serie USS. Un esclavo no puede transmitir si no ha sido iniciado por el maestro antes, por lo que la transmisi贸n directa de informaci贸n entre los diferentes esclavos no es posible.

Sinamics V20 Converter

En el caso de la comunicaci贸n Half-Duplex, los mensajes se env铆an siempre en el mismo formato:

Half duplex communication

Y, en la configuraci贸n de Arduino IDE para Serial, puedes ver que tienes que seguir la siguiente Sintaxis y Par谩metros (la configuraci贸n tiene que ser establecida en la secci贸n de configuraci贸n y puedes inicializar tantos puertos seriales como tenga su dispositivo de trabajo):聽

Sintaxis y par谩metros

Si se juntan ambas im谩genes, en primer lugar, puedes ver que hay que establecer la velocidad de baudios, que es la velocidad de comunicaci贸n del puerto, y tiene que ser la misma en el Tx y Rx si tienen que comunicarse a trav茅s del mismo canal de frecuencia. Despu茅s de eso, tienes que establecer los par谩metros de configuraci贸n:

  • 8 bits de datos: aqu铆 tienes que establecer con cu谩ntos bits de datos tienes que trabajar.

  • 1 Bit de Paridad: aqu铆 tienes que escribir e (para par), o (para impar) o n (para nada). Es importante establecer esto correctamente porque el bit de paridad es un bit binario que indica si el n煤mero de bits con el valor 1 en un grupo de bits es par, impar o ninguno. Este es un importante m茅todo de detecci贸n de errores (compara los 1 con el bit de paridad para comprobar si la transmisi贸n tiene 茅xito).

  • 1/2 Bits de Parada: es importante establecer 1 o 2 bits de parada. Es importante saber que con 1 bit, la eficiencia es del 80%, y con 2 bits baja a 72,7%; pero, a veces, este bit extra puede ser una forma 煤til de a帽adir un poco de tiempo extra, especialmente a altas velocidades de baudios y/o usando UART suave, donde se requiere tiempo para procesar el byte recibido.


Si no se establecen los par谩metros de configuraci贸n del Serial aparte de la velocidad de la tasa de baudios que siempre se requiere, se establecer谩 la configuraci贸n de los par谩metros por defecto, que es SERIAL_8N1 (8 -> bits de datos, N -> ninguno, sin paridad, 1 -> bit de parada). En lo que respecta a la velocidad en baudios, es importante ajustar siempre la velocidad correcta seg煤n el dispositivo de trabajo (puede consultar las velocidades en baudios soportadas por cada pantalla o dispositivo en sus propias hojas de datos).聽


Ejemplo de c贸digo

/*
聽 聽Copyright (c) 2019 Boot&Work Corp., S.L. All rights reserved
聽 聽This program is free software: you can redistribute it and/or modify
聽 聽it under the terms of the GNU Lesser General Public License as published by
聽 聽the Free Software Foundation, either version 3 of the License, or
聽 聽(at your option) any later version.
聽 聽This program is distributed in the hope that it will be useful,
聽 聽but WITHOUT ANY WARRANTY; without even the implied warranty of
聽 聽MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.聽 See the
聽 聽GNU Lesser General Public License for more details.
聽 聽You should have received a copy of the GNU Lesser General Public License
聽 聽along with this program.聽 If not, see <http://www.gnu.org/licenses/>.
*/

// Arduino Mega using all four of its Serial ports
// (Serial, Serial1, Serial2, Serial3),
// with different baud rates and configurations:

void setup() {
聽 Serial.begin(9600,SERIAL_8N1); //the default configuration
聽 Serial1.begin(38400,SERIAL_5E1); //even parity
聽 Serial2.begin(19200, SERIAL_5O1); //odd parity
聽 Serial3.begin(4800);

聽 Serial.println("This is Serial");
聽 Serial1.println("This is Serial 1");
聽 Serial2.println("This is Serial 2");
聽 Serial3.println("This is Serial 3");
}

void loop() {
聽 // put your main code here, to run repeatedly:
}

Mira la聽Secci贸n Serial聽de la weboficial de Arduino聽para ampliar la informaci贸n.聽

Encuentra lo que buscas.隆Busca en nuestro Blog!

C贸mo configurar el Puerto Serie en Arduino IDE industrial
Boot & Work Corp. S.L., Quesada Dani Salvans
22 julio, 2019
Compartir
Archivar

驴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.


Comparaci贸n PLC industrial >>>

驴Quieres m谩s informaci贸n?

隆Rellena el formulario!

隆Cu茅ntame m谩s!