View
1.152
Download
10
Category
Preview:
Citation preview
5/23/2018 Modbus Arduino Rs485
1/19
1
TECNOLOGICO DE MONTERREYREDES INSDUSTRIALES
DISEO E IMPLEMENTACIN DE UNA RED DE CAMPO CON LA CAPA FSICA EIA 485
UTILIZANDO EL PROTOCOLO MODBUS.
IntegrantesAna Pamela Castro Martin A01298181
Daro Guamn Lozada A01298193
Fecha de entrega28 de Octubre del 2013
ObjetivoIntegrar 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
DescripcinLa 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
5/23/2018 Modbus Arduino Rs485
2/19
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
5/23/2018 Modbus Arduino Rs485
3/19
3
1. Resumen:En el presente trabajo se muestra los objetivos, procedimiento, metodologa, resultados yconclusiones que se obtuvieron al disear e implementar una red de campo con unmaestro 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 conprogramacin en Python aprovechado la librera MinimalModbus y dos Arduinos comoesclavos utilizando la librera SimpleModbus. Para que la comunicacin sea posible en lared se deber tomar en cuenta muchos aspectos importantes como los parmetros deservicio, las funciones implementadas en cada disposicin y el hardware. Tambin semostrar el diseo e implementacin de tres conversores con la finalidad de poder obtenercompatibilidad entre seales digitales de diferente categora y para que sea posible queinteracten las entidades de la red.
2.
Identificacin del problema y justificacin:
Como parte del curso de redes industriales es necesaria la integracin de los conocimientostericos con la prctica. Este proyecto nos sirve como base para entender elfuncionamiento y configuracin de una red industrial.El protocolo Modbus es utilizado en las redes de campo de gran cantidad de industrias, pararealizar el control procesos y monitoreo de variables por ser fcil de utilizar y acceso libreal mismo. En el mundo de las redes industriales se han desarrollado varios tipos deprotocolos y cada uno de estos con interfaces especficas. No todos los dispositivos comosensores y transmisores poseen la comunicacin que el protocolo requiere por lo que esnecesario la utilizacin de conversores adecuados.
3. Objetivos: General
Integrar una red de campo entre un maestro y dos esclavos utilizando la capafsica 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
5/23/2018 Modbus Arduino Rs485
4/19
4
El presente proyecto fue realizado diferentes etapas y pasos que se describen acontinuacin.
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 eldiseo de convertidores. Los convertidores a usar en este proyecto tendrn control deflujo automtico de datos. La Figura 1nos 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 detransmisin cuando en la lnea de datos tengamos 5 V, y que lo deje a 5V, habilitndolocuando caiga a cero.
2. El circuito del paso anterior es el mismo que se debe implementar para obtener elconversor RS-485 - TTL. La figura 2 muestra el esquema de conexin y la tabla 1 la lista
DISEO EIMPLEMENTACIN DELOS CONVERTIDORES
PRUEBA DE LOSCONVERTIDORES
DESCARGA DELIBRERIAS EN LAS
PLATAFORMAS.
PROGRAMACIN YCONFIGURACIN DE LA
RED.
5/23/2018 Modbus Arduino Rs485
5/19
5
de elementos que se necesita para la implementacin. En el Anexo 1 y 2 se muestran ladistribucin de pines del MAX485 y del NE 555 respectivamente con informacinadicional 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 4851 CI 5551 Diodo 1N40072 Capacitores cermicos 0.01 Uf1 Resistencia 3.9 K 1 Resistencia 120
2 Resistencias 560 1 Terminal 21 Tira de espadines hembra2 Zcalos de 8 pines- 10 cm de cable UTP1 Placa tipo proto board de 3 x 3 cm.
3. La figura 3 muestra el esquema de conexin para la implementacin del conversor RS485 RS 232 y la tabla 2 la lista de elementos que se necesita para la implementacin. Elanexo 1, 2 y 5 muestran la distribucin de pines del max 485, NE 555, max 232 coninformacin adicional til para la implementacin.
5/23/2018 Modbus Arduino Rs485
6/19
6
Figura 3.-Conversor RS232-RS485.
Tabla 2.-Materiales para conversor RS485-RS232.CONVERSOR RS485 RS 232
Cant. Descripcin
1 Max 4851 CI 5551 Max 2321 Diodo 1N40072 Capacitores cermicos 0.01 uF4 Capacitores electroltico de 10 uF1 Resistencia 3.9 K 1 Resistencia 120 2 Resistencias 560 1 Interface RS 232 hembra a 90 grados1 Terminal 21 Tira de espadines hembra2 Zcalos de 8 pines- 10 cm de cable UTP1 Placa tipo proto board de 3 x 5 cm.
4. A continuacin se muestra figura 4 donde se puede observar el esquema de conexinpara la implementacin del conversor RS 485 RS 232 y la tabla 3 la lista de elementosnecesarios. Desde el anexo 1 hasta el 3 se muestran una parte de la hoja deespecificaciones tcnicas del max 485, NE 555, FT232L con informacin adicional queser de mucha ayuda al armar el circuito. Tomar especial atencin en el anexo 4 dondeel fabricante del componente FT 232L muestra la aplicacin de este circuito integradopara la conexin con el shield del USB.
5/23/2018 Modbus Arduino Rs485
7/19
7
Figura 4.-Conversor USB-RS485.
Tabla 3.-Materiales para conversor RS485-USB.CONVERSOR RS485 USB
Cant. Descripcin
1 Max 4851 Circuito Integrado NE555
1 Circuito Integrado FT 232 L1 Diodo 1N40072 Capacitores cermicos 0.01 uF1 Resistencia 3.9 K 1 Resistencia 120 2 Resistencias 560 1 Interface USB hembra1 Terminal 21 Tira de espadines hembra2 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 posiblecolocarlo en un protoboard por lo que tendremos que adecuarlo. Para lo cual usaremoscable muy fino llamado wire - wrap, espadines machos y una placa tipo proto board. Esnecesario 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.
5/23/2018 Modbus Arduino Rs485
8/19
8
Figura 5.-CI FT232RL.
6. Una vez que hemos comprado todos los elementos necesarios para los convertidores eshora de armarlos primeramente en el protoboard para poder asegurar elfuncionamiento de cada uno.
PRUEBA DE LOS CONVERTIDORES.
7. Usando un terminal serial del software Microcode Studio (figura 7) y un cable USB a RS232 (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 elconversor USB-R485 con RS485-RS232, seguidamente conectamos la interfaz serial con el
5/23/2018 Modbus Arduino Rs485
9/19
9
conversor RS232-USB para poder conectarlo a la computadora, seguidamente enviamoscaracteres por la terminal serial de microcode y tenemos que obtener los mismoscaracteres del otro lado, si es as los convertidores funcionan correctamente; Repetir elmismo procedimiento con el conversor TTL-RS485.
8. Tambin es posible probar el funcionamiento de los convertidores implementando elprotocolo Modbus.
Descargar un simulador de maestro: Modbus Tester (figura 8) en el siguientelink.http://www.modbus.pl/node/10
Descargar en otra PC un simulador de esclavos: Modbus Slave (figura 9) en elsiguiente link.http://www.modbustools.com/modbus_slave.asp
Figura 8.-Interfaz Grfica Modbus Tester.
Figura 9.-Interfaz Grfica Modbus Slave.
http://www.modbus.pl/node/10http://www.modbus.pl/node/10http://www.modbus.pl/node/10http://www.modbustools.com/modbus_slave.asphttp://www.modbustools.com/modbus_slave.asphttp://www.modbustools.com/modbus_slave.asphttp://www.modbustools.com/modbus_slave.asphttp://www.modbus.pl/node/105/23/2018 Modbus Arduino Rs485
10/19
10
9. Una vez que hemos comprobado el funcionamiento de cada convertidor, es momentode soldar, para esto necesitamos algunas herramientas y equipos especiales como losque se encuentran en la figura 10 (cautn, estao, pinzas de corte, pasta para soldar yuna 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 cadaconvertidor. 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.
5/23/2018 Modbus Arduino Rs485
11/19
11
DESCARGA DE LIBRERIAS EN LAS PLATAFORMAS.
11. Para la plataforma Rapberry que ser el maestro de la red se usar el lenguaje deprogramacin de Python. Para descargar esta librera la Raspberry debe tener acceso ainternet. 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 deSimpleModbusSlave de la siguiente manera :
Ingresar al siguiente linkhttps://code.google.com/p/simple-modbus/ En la pestaa Dowland descargamos el archivoSimpleModbusSlaveV7.zip 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 laraspberry.
#!/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=minimalmodbus.Instrument('/dev/ttyUSB0',a)
esclavo.serial.baudrate =9600
esclavo.serial.bytesize =8
esclavo.serial.stopbits =2
esclavo.serial.timeout =1
print "Para escribir: E Para leer: L"
c=raw_input()
if c=="L":print " INGRESE LA DIRECCION DE REGISTRO 0-9"
https://code.google.com/p/simple-modbus/https://code.google.com/p/simple-modbus/https://code.google.com/p/simple-modbus/https://code.google.com/p/simple-modbus/downloads/detail?name=SimpleModbusSlaveV7.ziphttps://code.google.com/p/simple-modbus/downloads/detail?name=SimpleModbusSlaveV7.ziphttps://code.google.com/p/simple-modbus/5/23/2018 Modbus Arduino Rs485
12/19
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
enum
{
// Aade o elimina registros sobre los que puedes leer o escribir.
REG0,
REG1,
REG2,
REG3,
REG4,
REG5,
REG6,
REG7,
REG8,
HOLDING_REGS_SIZE
};
5/23/2018 Modbus Arduino Rs485
13/19
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 serconfigurados con los mismos parmetros de servicio:
Velocidad en baudios: 9600
5/23/2018 Modbus Arduino Rs485
14/19
14
1 start bit, 8 data bits, 2 stop bits16. 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 MAESTRO.py
A continuacin se puede observar la ejecucin del programa cuando el maestro lee losregistros del esclavo. El programa es interactivo con el usuario (figura 15):
5/23/2018 Modbus Arduino Rs485
15/19
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 laopcin de escritura y se comprueba la funcin leyendo el valor del registro en el que seescribi.
Figura 16.-Escritura de valores sobre los esclavos.
5/23/2018 Modbus Arduino Rs485
16/19
16
5. ResultadosLos valores que se lograron obtener al realizar pruebas ejecutando diferentes comandos enlas 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 deerrores tanto en la escritura y lectura de los datos, debemos mencionar que lasfunciones efectuadas solo corresponden a holding register, puesto que la librera que seutiliz sobre la plataforma arduino implementa solo esta funcin.
Los leds que se utiliz para verificar la escritura de los valores sobre las plataformasarduino se encendieron y apagaron de acuerdo a lo preestablecido ( Encendido:Valorde 1 en el registro 1; Apagado: Valores diferentes de 1 en el registro 1) lograndocomprobar el funcionamiento adecuado del protocolo sobre el esclavo 1 al igual que elesclavo 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 desdecero el protocolo sobre cualquier plataforma.
Como trabajos futuros, las plataformas que trabajan como esclavos puedenestablecer comunicacin con cualquier aplicacin que implemente el protocolo
modbus y funcione como master o con un servidor OPC.
7. Referencias BibliogrficasBartolom, J. (2011). El protocolo MODBUS. Recuperado el 18 de Octubre de 2013, dehttp://www.tolaemon.com/docs/modbus.htm
FTDI Chip. (2010). FT 232 R. Recuperado el 24 de Octubre de 2013, dehttp://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232R.pdf
5/23/2018 Modbus Arduino Rs485
17/19
17
Instruments, T. (Marzo de 2004). Max 232. Recuperado el 24 de Octubre de 2013, dehttp://www.ti.com/lit/ds/symlink/max232.pdf
LVR. (s.f.). Rs 485. Recuperado el 18 de Octubre de 2013, dehttp://www.lvr.com/images/rs-485_circuits_f1.gif
MAXIM. (1996). Max 485. Recuperado el 24 de Octubre de 2013, dehttp://ecee.colorado.edu/~mcclurel/max485ds.pdf
Modbus-IDA.ORG. (Diciembre de 2006). MODBUS over Serial Line. Recuperado el 18 deOctubre de 2013, dehttp://www.modbus.com/docs/Modbus_over_serial_line_V1_02.pdf
Simple-modbus. (s.f.). Recuperado el 18 de Octubre de 2013, de Modbus RTU librariesfor Arduino: https://code.google.com/p/simple-modbus/
Texas Instruments. (Marzo de 2013). LM555. Recuperado el 24 de Octubre de 2013, dehttp://www.ti.com/lit/ds/symlink/lm555.pdf
Wikipedia. (Mayo de 2013). RS-485. Recuperado el 18 de Octubre de 2013, dehttp://es.wikipedia.org/wiki/RS-485
8.Anexos
Anexo 1.-Parte Superior MAX485
5/23/2018 Modbus Arduino Rs485
18/19
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
5/23/2018 Modbus Arduino Rs485
19/19
19
Anexo 5.-Distribucin de Pines MAX232
Recommended