Actualizado el 21 de Marzo del 2018 (Publicado el 28 de Febrero del 2018)
1.647 visualizaciones desde el 28 de Febrero del 2018
3,2 MB
104 paginas
Creado hace 8a (14/07/2016)
Trabajo Fin de Grado
Grado en Ingeniería de Tecnologías Industriales
Communications between PLC and microcontroller
using Modbus Protocol
Autor: Eduardo Naranjo Piñar
Tutor: Luis Fernando Castaño Castaño
Equation Chapter 1 Section 1
Dpto. Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2016
i
Communications between PLC and microcontroller using Modbus Protocol
ii
ii
iii
Trabajo Fin de Grado
Grado de Ingeniería en Tecnologías Industriales
Communications between PLC and microcontroller
using Modbus Protocol
Autor:
Eduardo Naranjo Piñar
Tutor:
Luis Fernando Castaño Castaño
Doctor Ingeniero Industrial
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2016
iii
Communications between PLC and microcontroller using Modbus Protocol
iv
iv
v
Proyecto Fin de Carrera: Communications between PLC and microcontroller using Modbus Protocol
Autor: Eduardo Naranjo Piñar
Tutor: Luis Fernando Castaño Castaño
El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:
Presidente:
Vocales:
Secretario:
Acuerdan otorgarle la calificación de:
Sevilla, 2016
v
El Secretario del Tribunal
Communications between PLC and microcontroller using Modbus Protocol
vi
vi
vii
Agradecimientos
A toda aquella persona, animal o cosa que me ha tenido que aguantar durante mis años de estudios
vii
Communications between PLC and microcontroller using Modbus Protocol
viii
viii
Abstract
The main goal of this document is developing multiple Modbus devices to communicate with
different computers and sensors. To explain this, the document will be divided in 3 chapters.
First of all, a small state of the art of the Modbus protocol will be done, explaining how it works
superficially, which are the most used functions, and how it handles the exceptions. Later there
will be an explanation on the development of the Modbus slave (serial and TCP/IP) with an
Arduino Mega board with the goal of sending a sensor output using a PC, and the development
of the Modbus master (serial) for reading data from a MASS-X solar sensor. Finally a Modbus
master which reads data from a solar panel (slave) and will send this data via Web Service in an
XML document has been documented.
ix
Communications between PLC and microcontroller using Modbus Protocol
x
x
xi
Introduction
Introduction
Whenever there are sensors in an industrial environment to have a better understatement about
what is happening, a way to send this data to a PLC or computer is necessary, which will read it
to make decisions about how the system has to respond. Because of this, the industry has
developed multiple communication protocols among all these devices, being Modbus the most
used nowadays.
Modbus is a serial protocol developed by Modicon (today Schneider Electric) for use it with
their PLCs. It is very simple and reliable thanks to its CRC, and it has become the standard de
facto protocol. It was written with industrial applications in mind, it is easy to maintain and to
use and royalty-free.
Even though PLCs are extremely reliable and robust computers, these are very expensive
compared to some new controllers such as Arduino from the Arduino Foundation and Raspberry
Pi from Element 14. Because of this, people are starting to use these computers to substitute
PLCs in some applications (like research or low-budget projects).
This is the main reason made this project was made, to make these devices compatible with the
protocol by using different libraries made by the user's community and to develop some user
interfaces to make the data visible for operators.
The first main goal is to program an Arduino Mega to read a sensor output and then send it to a
PLC or PC via Modbus. Thanks to this, the department will not need to buy expensive cards, and
will be able to connect the sensors far away from the PLC in case they are using Modbus
TCP/IP.
The second goal is to develop a Modbus master to read data from a system, which implements a
slave, and later will send this data through a Web Service in an XML format.
xi
Communications between PLC and microcontroller using Modbus Protocol
xii
Resumen en español
1: Protocolo de comunicación Modbus
Modbus es un protocolo de mensajes posicionado en el nivel 7 del modelo OSI (Open System
Interconnection), que provee comunicación maestro/esclavo entre dispositivos conectados en diferentes tipos
de redes. Es un protocolo de pedido/respuesta y ofrece servicios especificados por diferentes códigos de
función.
Figura 1.1 Tabla del modelo OSI
El protocolo tiene cuatro tipos de objetos:
1-Bit
16-Bits
Sólo lectura
Discrete Input
Input Register
Lectura/Escritura
Coil
Holding Register
Tabla 1.1 Tabla de variables Modbus
Las versiones más importantes del protocolo son:
Modbus RTU (Remote Terminal Unit)
Modbus ASCII (American Standard Code for Information Interchange)
Modbus TCP/IP (Transmission Control Protocol/Internet Protocol)
Modbus sobre TCP/IP
xii
xiii
Resumen en español
Cada dispositivo esclavo tiene asignado un único número de identificación. En Modbus serie sólo al maestro
se le permite iniciar una petición. Sobre Ethernet cualquier dispositivo puede hacerlo, sin embargo
normalmente es el maestro el que lo hace. La trama Modbus en su modalidad serie contiene el número de
esclavo con el que queremos comunicarnos y sólo el dispositivo con ese número responderá a la trama, incluso
aunque otros dispositivos también la reciban. Todas las tramas contienen información de redundancia para
detectar errores de transmisión.
La PDU (Protocol Data Unit) contiene toda la información necesaria para el esclavo y consta de los siguientes
elementos:
Código de función
Dirección del primer elemento
Número de elementos a leer o bytes de información
Los dispositivos se pueden dividir en dos tipos según la organización de los datos:
4 bloques diferentes (uno para cada tipo de objeto)
Figura 1.2 Dispositivo de 4 bloques
1 único bloque
Figura 1.3 Dispositivo de 4 bloques
xiii
Communications between PLC and microcontroller using Modbus Protocol
xiv
Los códigos de función más importantes son los siguientes:
01: Leer coils
02: Leer discrete inputs
03: Leer holding registers
04: Leer input registers
05: Escribir un sólo coil
06: Escribir un solo holding register
15: Escribir múltiples coils
16: Escribir múltiples holding registers
Cuando un maestro envía un pedido a un dispositivo esclavo, éste espera una respuesta normal. Uno de los
siguientes cuatro posibles eventos pueden ocurrir cuando el esclavo recibe la trama:
Si el esclavo recibe la trama sin errores de comunicación, y puede manejar la trama de manera
normal, devuelve una respuesta normal.
Si el esclavo no recibe la trama debido a un problema de comunicación, no se devuelve una respuesta.
El programa maestro eventualmente procesa una condición de timeout.
Si el esclavo recibe la trama, pero detecta un error de comunicación, no se devuelve una respuesta. El
programa maestro eventualmente procesa una condición de timeout.
Si el esclavo recibe un pedido sin error de comunicación, pero no puede manejar el pedido, éste
devuelve una respuesta de excepción informando al maestro de la naturaleza del error. El primer Byte
es el código de función sumando a 0x80, y el segundo es el código de excepción.
xiv
xv
2: Microcontrolador Mega 2560
Resumen en español
El microcontrolador Arduino Mega 2560 es una placa basada el chip ATmega560. Tiene 54 pines digitales de
entrada/salida (de los cuales 15 pueden ser usados como salidas PWM (Pulse-Width Modulation)), 16 entradas
analógicas, 4 puertos serie, un cristal oscilador de 16MH, conexión USB, puerto de alimentación tipo jack, y
botón de reinicio, y es además compatibles con la mayoría de los complementos para el Arduino Uno.
Figura 2.1 Arduino Mega
El mega 2560 se puede programar con el software de Arduino, y viene preprogramado con un boot-loader que
te permite subir un nuevo programa sin necesidad de hardware de programación. Usa librerías de C, y la
sintaxis de programación es muy similar.
La placa se puede alimentar vía USB o mediante una fuente externa (AC/DC (Alternating Current / D
Comentarios de: Communications between PLC and microcontroller using Modbus Protocol (0)
No hay comentarios