100% encontró este documento útil (2 votos)
259 vistas19 páginas

Red de Campo Modbus con RS485 y Arduino

Este documento describe el diseño e implementación de una red de campo industrial utilizando el protocolo Modbus RTU sobre la capa física RS-485. Se utiliza una plataforma Raspberry Pi como maestro y dos Arduinos como esclavos. Además, se diseñan e implementan tres conversores (RS-485 a TTL, RS-485 a RS-232 y RS-485 a USB) para permitir la comunicación entre los dispositivos. El objetivo es integrar los conocimientos teóricos sobre redes industriales mediante la práctica de configurar una red
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (2 votos)
259 vistas19 páginas

Red de Campo Modbus con RS485 y Arduino

Este documento describe el diseño e implementación de una red de campo industrial utilizando el protocolo Modbus RTU sobre la capa física RS-485. Se utiliza una plataforma Raspberry Pi como maestro y dos Arduinos como esclavos. Además, se diseñan e implementan tres conversores (RS-485 a TTL, RS-485 a RS-232 y RS-485 a USB) para permitir la comunicación entre los dispositivos. El objetivo es integrar los conocimientos teóricos sobre redes industriales mediante la práctica de configurar una red
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1

TECNOLOGICO DE MONTERREY

REDES INSDUSTRIALES

DISEO E IMPLEMENTACIN DE UNA RED DE CAMPO CON LA CAPA FSICA EIA 485
UTILIZANDO EL PROTOCOLO MODBUS.

Integrantes:
Ana Pamela Castro Martin A01298181
Daro Guamn Lozada A01298193

Fecha de entrega:
28 de Octubre del 2013

Objetivo:
Integrar una red de campo entre un maestro y dos esclavos utilizando la capa fsica EIA-
485 para establecer la comunicacin utilizando el protocolo Modbus.

Especificaciones:
Conversor USB- RS 485
Conversor TTL RS 485
Conversor TTL RS485 RS232
Plataforma Raspberry pi
2 Plataforma Arduinos Decimal

Descripcin
La red de campo que se logr implementar en el presente Proyecto utilizando el
protocolo Modbus RTU cuenta con una plataforma Rasperry y dos Arduino que funciona
como master y esclavos respectivamente, usan como medio de comunicacin la Interfaz
RS-485 utilizando diferentes tipos de convertidores.



Monterrey, 28 de octubre del 2013

2


INDICE


1. Resumen: .............................................................................................................................................................................................. 3
2. Identificacin del problema y justificacin: ....................................................................................................................... 3
3. Objetivos: ............................................................................................................................................................................................. 3
4. Metodologa ........................................................................................................................................................................................ 3
5. Resultados ........................................................................................................................................................................................ 16
6. Conclusiones .................................................................................................................................................................................... 16
7. Referencias Bibliogrficas ........................................................................................................................................................ 16
8. Anexos ................................................................................................................................................................................................ 17


































3

1. Resumen:

En el presente trabajo se muestra los objetivos, procedimiento, metodologa, resultados y
conclusiones que se obtuvieron al disear e implementar una red de campo con un
maestro y dos esclavos utilizando el protocolo Modbus RTU con comunicacin punto a
punto, y la capa fsica RS 485. Como maestro se utiliza una plataforma Raspberry con
programacin en Python aprovechado la librera MinimalModbus y dos Arduinos como
esclavos utilizando la librera SimpleModbus. Para que la comunicacin sea posible en la
red se deber tomar en cuenta muchos aspectos importantes como los parmetros de
servicio, las funciones implementadas en cada disposicin y el hardware. Tambin se
mostrar el diseo e implementacin de tres conversores con la finalidad de poder obtener
compatibilidad entre seales digitales de diferente categora y para que sea posible que
interacten las entidades de la red.
2. Identificacin del problema y justificacin:

Como parte del curso de redes industriales es necesaria la integracin de los conocimientos
tericos con la prctica. Este proyecto nos sirve como base para entender el
funcionamiento y configuracin de una red industrial.
El protocolo Modbus es utilizado en las redes de campo de gran cantidad de industrias, para
realizar el control procesos y monitoreo de variables por ser fcil de utilizar y acceso libre
al mismo. En el mundo de las redes industriales se han desarrollado varios tipos de
protocolos y cada uno de estos con interfaces especficas. No todos los dispositivos como
sensores y transmisores poseen la comunicacin que el protocolo requiere por lo que es
necesario la utilizacin de conversores adecuados.
3. Objetivos:

General

Integrar una red de campo entre un maestro y dos esclavos utilizando la capa
fsica EIA-485 para establecer la comunicacin utilizando el protocolo Modbus.

Especficos

Disear e implementar 3 convertidores RS 485- TTl, RS 485 Rs232, RS 485
USB.
Investigar y recopilar informacin de las libreras que permiten implementar el
protocolo Modbus sobre diferentes plataformas.
Configurar la red de campo con los parmetros necesarios que requiere el
protocolo Modbus RTU.

4. Metodologa


4

El presente proyecto fue realizado diferentes etapas y pasos que se describen a
continuacin.




DISEO E IMPLEMENTACIN DE LOS CONVERTIDORES RS485 RS 232, RS485
TTL Y RS 485 USB.

1. En internet nos podemos encontrar diagramas muy tiles que nos pueden ayudar en el
diseo de convertidores. Los convertidores a usar en este proyecto tendrn control de
flujo automtico de datos. La Figura 1 nos muestra el circuito para esto:



Figura 1.- Esquema de control de flujo automtico.

Como se pude observar la idea de este circuito es que ponga a masa el pin enable de
transmisin cuando en la lnea de datos tengamos 5 V, y que lo deje a 5V, habilitndolo
cuando caiga a cero.
2. El circuito del paso anterior es el mismo que se debe implementar para obtener el
conversor RS-485 - TTL. La figura 2 muestra el esquema de conexin y la tabla 1 la lista
DISEO E
IMPLEMENTACIN DE
LOS CONVERTIDORES
PRUEBA DE LOS
CONVERTIDORES
DESCARGA DE
LIBRERIAS EN LAS
PLATAFORMAS.
PROGRAMACIN Y
CONFIGURACIN DE LA
RED.

5

de elementos que se necesita para la implementacin. En el Anexo 1 y 2 se muestran la
distribucin de pines del MAX485 y del NE 555 respectivamente con informacin
adicional que ser de mucha ayuda al armar el circuito.



Figura 2.- Conversor TTL-RS485.

Tabla 1.-Materiales para conversor RS485-TTL.
CONVERSOR RS485 TTL
Cant. Descripcin
1 Max 485
1 CI 555
1 Diodo 1N4007
2 Capacitores cermicos 0.01 Uf
1 Resistencia 3.9 K
1 Resistencia 120
2 Resistencias 560
1 Terminal 2
1 Tira de espadines hembra
2 Zcalos de 8 pines
- 10 cm de cable UTP
1 Placa tipo proto board de 3 x 3 cm.

3. La figura 3 muestra el esquema de conexin para la implementacin del conversor RS
485 RS 232 y la tabla 2 la lista de elementos que se necesita para la implementacin. El
anexo 1, 2 y 5 muestran la distribucin de pines del max 485, NE 555, max 232 con
informacin adicional til para la implementacin.

6


Figura 3.- Conversor RS232-RS485.


Tabla 2.-Materiales para conversor RS485-RS232.
CONVERSOR RS485 RS 232
Cant. Descripcin
1 Max 485
1 CI 555
1 Max 232
1 Diodo 1N4007
2 Capacitores cermicos 0.01 uF
4 Capacitores electroltico de 10 uF
1 Resistencia 3.9 K
1 Resistencia 120
2 Resistencias 560
1 Interface RS 232 hembra a 90 grados
1 Terminal 2
1 Tira de espadines hembra
2 Zcalos de 8 pines
- 10 cm de cable UTP
1 Placa tipo proto board de 3 x 5 cm.

4. A continuacin se muestra figura 4 donde se puede observar el esquema de conexin
para la implementacin del conversor RS 485 RS 232 y la tabla 3 la lista de elementos
necesarios. Desde el anexo 1 hasta el 3 se muestran una parte de la hoja de
especificaciones tcnicas del max 485, NE 555, FT232L con informacin adicional que
ser de mucha ayuda al armar el circuito. Tomar especial atencin en el anexo 4 donde
el fabricante del componente FT 232L muestra la aplicacin de este circuito integrado
para la conexin con el shield del USB.


7


Figura 4.- Conversor USB-RS485.

Tabla 3.-Materiales para conversor RS485-USB.
CONVERSOR RS485 USB
Cant. Descripcin
1 Max 485
1 Circuito Integrado NE555
1 Circuito Integrado FT 232 L
1 Diodo 1N4007
2 Capacitores cermicos 0.01 uF
1 Resistencia 3.9 K
1 Resistencia 120
2 Resistencias 560
1 Interface USB hembra
1 Terminal 2
1 Tira de espadines hembra
2 Zcalos de 8 pines
- 10 cm de cable UTP
1 Placa tipo proto board de 3 x 6 cm.


5. El circuito integrado FT 232 L es un componente de montaje superficial no ser posible
colocarlo en un protoboard por lo que tendremos que adecuarlo. Para lo cual usaremos
cable muy fino llamado wire - wrap, espadines machos y una placa tipo proto board. Es
necesario ser muy pacientes y precisos al soldar y no daar el componente con el calor.
Siguiendo estos consejos finalmente el CI FT232RL quedar como se muestra la figura 5.


8


Figura 5.- CI FT232RL.


6. Una vez que hemos comprado todos los elementos necesarios para los convertidores es
hora de armarlos primeramente en el protoboard para poder asegurar el
funcionamiento de cada uno.

PRUEBA DE LOS CONVERTIDORES.

7. Usando un terminal serial del software Microcode Studio (figura 7) y un cable USB a RS
232 (figura 6). Se prueba cada convertidor de la siguiente manera:


Figura 6.- Conversor RS232-USB.



Figura 7.- Terminal Serial de Microcode.


Para comprobar el correcto funcionamiento de los convertidores conectamos en cascada el
conversor USB-R485 con RS485-RS232, seguidamente conectamos la interfaz serial con el

9

conversor RS232-USB para poder conectarlo a la computadora, seguidamente enviamos
caracteres por la terminal serial de microcode y tenemos que obtener los mismos
caracteres del otro lado, si es as los convertidores funcionan correctamente; Repetir el
mismo procedimiento con el conversor TTL-RS485.

8. Tambin es posible probar el funcionamiento de los convertidores implementando el
protocolo Modbus.
Descargar un simulador de maestro: Modbus Tester (figura 8) en el siguiente
link. [Link]
Descargar en otra PC un simulador de esclavos: Modbus Slave (figura 9) en el
siguiente link. [Link]


Figura 8.- Interfaz Grfica Modbus Tester.



Figura 9.- Interfaz Grfica Modbus Slave.


10


9. Una vez que hemos comprobado el funcionamiento de cada convertidor, es momento
de soldar, para esto necesitamos algunas herramientas y equipos especiales como los
que se encuentran en la figura 10 (cautn, estao, pinzas de corte, pasta para soldar y
una esponja) para que sea un trabajo sencillo y no tedioso.



Figura 10.- Materiales y herramientas para soldar.


10. Ser ordenados y cuidadosos al soldar los elementos siguiendo el esquema de cada
convertidor. Las figuras 11, 12 y 13 muestran los convertidores ya implementados:


Figura 11.- Conversor TTL-RS485.



Figura 12.- Conversor RS232-RS485.



Figura 13.- Conversor USB-RS485.





11

DESCARGA DE LIBRERIAS EN LAS PLATAFORMAS.

11. Para la plataforma Rapberry que ser el maestro de la red se usar el lenguaje de
programacin de Python. Para descargar esta librera la Raspberry debe tener acceso a
internet. Escribir los siguientes comandos en la consola y esperar que se complete la
instalacin:

sudo pip install -U pyserial
sudo pip install -U minimalmodbus

12. Dos Arduinos diecimal sern los esclavos de la red. Se descarga la librera de
SimpleModbusSlave de la siguiente manera :

Ingresar al siguiente link [Link]
En la pestaa Dowland descargamos el archivo [Link]
Lo descomprimimos y copiamos su contenido en la carpeta de las libreras del
Software Arduino.
(Simple-modbus)

PROGRAMACIN Y CONFIGURACIN DE LA RED.

13. A continuacin se presenta la programacin realizada en un script de python en la
raspberry.


#!/usr/bin/env python
# Librerias utilizadas
import minimalmodbus
import time

print " PROYECTO DE REDES INDUSTRIALES"
print "Por: Pame y Dario"
while 1:
print "INGRESE LA DIRECCION DEL ESCLAVO 1 o 2"
# Direccion del Esclavo
a=input()
if a==1 or a==2:
# Configuracion de los Parametros de servicio con la direccin del esclavo
esclavo=[Link]('/dev/ttyUSB0',a)
[Link] =9600
[Link] =8
[Link] =2
[Link] =1

print "Para escribir: E Para leer: L"
c=raw_input()
if c=="L":
print " INGRESE LA DIRECCION DE REGISTRO 0-9"

12

b=input()
e=input("Cuantos registros desea leer?")

# Lectura de los registros del esclavo y direccin seleccionada
valorobtenido=esclavo.read_registers(b,e,3)
print " El valor obtenido del esclavo"
print a
print "de la direccion:"
print b
print " Es:"
print valorobtenido

if c=="E":
print " INGRESE LA DIRECCION DE REGISTRO 0-9"
b=input()
print " INGRESE EL VALOR A ESCRIBIR"
d=input()

# Escritura sobre la direccin de los registros en el esclavo
esclavo.write_register(b, d,0)
if c!= "E" and c!="L":
print ".........ERROR......"
if a!=1 and a!=2:
print "......ERROR......!!!"
print "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
print "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"



14. La programacin de los esclavos se presenta a continuacin.


#include <SimpleModbusSlave.h>

enum
{
// Aade o elimina registros sobre los que puedes leer o escribir.
REG0,
REG1,
REG2,
REG3,
REG4,
REG5,
REG6,
REG7,
REG8,
HOLDING_REGS_SIZE
};


13

// Tipo de los registros (enteros).
unsigned int holdingRegs[HOLDING_REGS_SIZE];

void setup()
{
// Pin 3 como salida
pinMode(3, OUTPUT);

/* modbus_configure(&Serial, baudrate, byteFormat, ID, transmit enable pin, registers
size, holding register array)
*/
/*
SERIAL_8N2: 1 start bit, 8 data bits, 2 stop bits
SERIAL_8E1: 1 start bit, 8 data bits, 1 Even parity bit, 1 stop bit
SERIAL_8O1: 1 start bit, 8 data bits, 1 Odd parity bit, 1 stop bit
*/
modbus_configure(&Serial, 9600, SERIAL_8N2, 2, 2, 9, holdingRegs);

// Asignacin de valores a los registros.
holdingRegs[0] = 1;
holdingRegs[1] = 2;
holdingRegs[2] = 3;
holdingRegs[3] = 4;
holdingRegs[4] = 5;
holdingRegs[5] = 6;
holdingRegs[6] = 111;
holdingRegs[7] = 111;
holdingRegs[8] = 111;
}

void loop()
{
if (holdingRegs[1] == 1)
{
digitalWrite(3, HIGH);
}
else
{
digitalWrite(3, LOW);
}

// Lnea de cdigo encargada de actualizar los valores e implementar las funciones.
modbus_update();
}


15. Como se pudo ver en el cdigo tanto el maestro como los esclavos deben ser
configurados con los mismos parmetros de servicio:

Velocidad en baudios: 9600

14

1 start bit, 8 data bits, 2 stop bits

16. Cambiar la direccin del esclavo antes de cargar la programacin en el segundo
esclavo.
17. En la figura 14 se puede ver la conexin fsica de la red. No olvidar que la tierra en
todos los circuitos y plataformas debe estar cableada.



Figura 14.- Esquema de conexin de la red.

18. Compilamos y ejecutamos el programa en el maestro con los siguientes comandos:

sudo python [Link]

A continuacin se puede observar la ejecucin del programa cuando el maestro lee los
registros del esclavo. El programa es interactivo con el usuario (figura 15):


15


Figura 15.- Lectura de registros a travs del maestro.

En la figura 16 se puede observar la ejecucin del programa cuando el usuario selecciona la
opcin de escritura y se comprueba la funcin leyendo el valor del registro en el que se
escribi.


Figura 16.- Escritura de valores sobre los esclavos.


16

5. Resultados

Los valores que se lograron obtener al realizar pruebas ejecutando diferentes comandos en
las lneas de programacin del master se puede ver en la tabla 2.
Tabla 2.- Valores obtenidos al leer y escribir.

Funcin Empleada Valor Ledo
(Master)
Valor Escrito
(Esclavo)
Errores
read_register(2,1) 0.1 -
read_register(2,0) 10 -
read_registers(2,5,3) [1,2,3,4] -
write_register(7,35,0) 35 -
read_register(7,0) 35 -



Los resultados que se adquirieron desde el master como se ve en la tabla 1 carecen de
errores tanto en la escritura y lectura de los datos, debemos mencionar que las
funciones efectuadas solo corresponden a holding register, puesto que la librera que se
utiliz sobre la plataforma arduino implementa solo esta funcin.

Los leds que se utiliz para verificar la escritura de los valores sobre las plataformas
arduino se encendieron y apagaron de acuerdo a lo preestablecido (Encendido: Valor
de 1 en el registro 1; Apagado: Valores diferentes de 1 en el registro 1) logrando
comprobar el funcionamiento adecuado del protocolo sobre el esclavo 1 al igual que el
esclavo 2.
6. Conclusiones

Gracias a los conceptos vistos en clase y la informacin investigada fue posible
integrar una red de campo utilizando el protocolo modbus RTU.

Implementar el protocolo utilizando libreras, es ms fcil que programar desde
cero el protocolo sobre cualquier plataforma.

Como trabajos futuros, las plataformas que trabajan como esclavos pueden
establecer comunicacin con cualquier aplicacin que implemente el protocolo
modbus y funcione como master o con un servidor OPC.
7. Referencias Bibliogrficas

Bartolom, J. (2011). El protocolo MODBUS. Recuperado el 18 de Octubre de 2013, de
[Link]

FTDI Chip. (2010). FT 232 R. Recuperado el 24 de Octubre de 2013, de
[Link]


17

Instruments, T. (Marzo de 2004). Max 232. Recuperado el 24 de Octubre de 2013, de
[Link]

LVR. (s.f.). Rs 485. Recuperado el 18 de Octubre de 2013, de
[Link]

MAXIM. (1996). Max 485. Recuperado el 24 de Octubre de 2013, de
[Link]

[Link]. (Diciembre de 2006). MODBUS over Serial Line. Recuperado el 18 de
Octubre de 2013, de
[Link]

Simple-modbus. (s.f.). Recuperado el 18 de Octubre de 2013, de Modbus RTU libraries
for Arduino: [Link]

Texas Instruments. (Marzo de 2013). LM555. Recuperado el 24 de Octubre de 2013, de
[Link]

Wikipedia. (Mayo de 2013). RS-485. Recuperado el 18 de Octubre de 2013, de
[Link]

8. Anexos



Anexo 1.- Parte Superior MAX485



18



Anexo 2.- Parte Superior Timer 555



Anexo 3.- Distribucin de Pines y Esquema del CI FT232RL


Anexo 4.- Esquema de conexin del CI FT232RL

19




Anexo 5.- Distribucin de Pines MAX232

Common questions

Con tecnología de IA

The RS-485 physical layer offers several advantages for Modbus communication, such as longer transmission distances, higher noise immunity, and the ability to support multiple slave devices on the same network. These features make it ideal for industrial environments where devices are distributed over extensive areas and subject to electrical noise. The differential signal used in RS-485 allows robust communication, which is critical for the reliability required in industrial applications .

The main components used in the design and implementation of the field network include a Raspberry Pi as the master device and two Arduino platforms as slave devices. These components communicate over an RS-485 physical layer using various converters such as RS485-TTL, RS485-RS232, and RS485-USB. The protocol Modbus RTU is utilized for the communication. Essential to the setup are specific libraries like MinimalModbus for Raspberry Pi and SimpleModbus for Arduino .

Implementing the Modbus protocol on hardware platforms like Raspberry Pi and Arduino facilitates industrial network integration by providing a standardized communication protocol that is easy to implement using libraries such as MinimalModbus and SimpleModbus. This setup simplifies the programming task, allowing hardware from different manufacturers to communicate seamlessly, thus enabling reliable control and monitoring of industrial processes. The open nature of Modbus also ensures cost-effectiveness and interoperability with various industrial devices .

Python scripts play a crucial role in configuring and managing a Modbus network with a Raspberry Pi as the master. These scripts utilize libraries such as MinimalModbus to specify communication settings like slave addresses, baud rates, and data structures. The scripts facilitate interactive command execution for reading and writing to slave registers, enabling dynamic management of device responses and system operations. Moreover, Python's versatility supports extensive customization for handling data, automating tasks, and integrating with other software systems .

Data converters for RS-485 networks are designed to adapt signal levels between different interfaces, such as TTL, RS232, and USB, to the RS-485 standard. They are crucial for ensuring that devices with varying electrical characteristics can communicate. Implementing these converters involves using specific integrated circuits like MAX485 for RS-485, along with additional components like capacitors, resistors, and diodes, arranged to facilitate automatic data flow control between devices. Converters allow devices with incompatible physical layers to transmit data reliably in industrial settings .

Libraries like MinimalModbus and SimpleModbus simplify the implementation of the Modbus protocol on platforms such as Raspberry Pi and Arduino by providing pre-written functions for reading and writing registers, which allows for easier programming of industrial devices. These libraries handle much of the underlying protocol complexity, making it easier to set up communication parameters and address network devices consistently, which helps in reducing development time and effort .

Integrating a field network using a Raspberry Pi as the master and Arduinos as slaves over Modbus involves challenges such as ensuring electrical compatibility between devices using converters like RS485-TTL, RS485-RS232, and RS485-USB. Additionally, configuring consistent communication parameters, like baud rate and data bits, and using appropriate libraries like MinimalModbus and SimpleModbus is essential for seamless communication. Testing the reliability of the data exchange and addressing any potential latency or errors are also necessary to ensure effective integration and operation .

The testing process for RS-485 converters in the field network project involves connecting the converters in series and using a serial terminal software to send and receive test signals across them. Specifically, the process includes cascading the USB-RS485 and RS485-RS232 converters, and connecting a serial interface to ensure data integrity through the transmit and receive functions. Testing is further validated by implementing the Modbus protocol, using simulators like Modbus Tester and Modbus Slave, to confirm that the converters handle data correctly across different platforms, ensuring reliable communication .

Maintaining consistent parameter configurations, such as baud rate and data bits, is crucial in a Modbus RS-485 network to ensure that all devices can communicate without errors. Inconsistent settings can lead to data corruption or failure to establish communication between devices. Therefore, setups like 9600 baud rate, 8 data bits, and 2 stop bits are configured globally across both the master (Raspberry Pi) and slave (Arduino) devices. This uniformity ensures that all communication adheres to the same timing and structure, which is vital for the protocol to function correctly .

Testing both read and write functions is important in the implementation of a Modbus field network to ensure bidirectional data integrity and operational reliability. Successful execution is indicated by correctly reading values from slave devices and writing data to them without encountering errors. For instance, in the test environment described, reading registers consistently produces accurate values, and writing commands alter the slave state as expected, often verified by physical indicators like LEDs on Arduinos, showcasing that both the data flow and protocol are functioning as intended .

También podría gustarte