UNIVERSIDAD TECNOLÓGICA DE LA
MIXTECA
MAESTRÍA EN ELECTRÓNICA
OPCIÓN SISTEMAS INTELIGENTES APLICADOS
MODBUS maestro, arduino esclavo.
Materia:
Programación de interfaces
Presenta
César Gabriel Pérez Ibarra
Rubén Omar García Valladares
Profesor
Dr. Fermín Hugo Ramírez Leyva
24/mayo/2018
Página | 1
Índice
Objetivo. ........................................................................................................................................ 3
Materiales. .................................................................................................................................... 3
Desarrollo. ..................................................................................................................................... 3
Resultados. .................................................................................................................................... 4
Conclusiones. ................................................................................................................................ 4
Anexos ........................................................................................................................................... 5
Página | 2
Objetivo.
Utilizar el protocolo MUDBUS para hacer la lectura de registros de entrada y
escribir una bobina, empleando como maestro la interfaz en LabVIEW y un
arduino como esclavo.
Materiales.
Arduino UNO.
Computadora.
Potenciómetro
Leds
Resistencias
Desarrollo.
Se utilizó la librería Modbus.h y ModbusSerial.h, esta librería facilita la comunicación con el
protocolo MODBUS, es necesario él establecer constantes con los valores de los registros se
habilita en el arduino la lectura analógica (A0), con el uso de la función addHreg el valor
obtenido se almacenara y este será enviado cuando el maestro haga la solicitud de una lectura
de registro. Se habilita una salida digital (pin 13), con la función addIreg, permite la escritura de
bobina cuando el maestro lo indique esta encenderá o apagara un led según sea el caso.
Ilustración 1 coneccion de auduino, led y potenciometro
Página | 3
Se empleó la interfaz proporcionada por el profesor para establecer la comunicación entre
LabVIEW y el arduino con usando el protocolo MODBUS.
Ilustración 2 INTERFAZ MODBUS LabVIEW
Se eligió como dirección de los registros de la bobina el 100 y como registro de entrada 200. La
comunicación serial se estableció en 19200 bps.
Resultados.
Se logró establecer la comunicación entre LabVIEW como maestro y el arduino como esclavo.
Al hacer la petición de lectura de registro se obtiene el valor del potenciómetro en ese momento,
se indica el valor que se desea tengo el pin digital (0 , 1) logrando encender o apagar el led.
Conclusiones.
.
Las pruebas realizadas mostraron resultados totalmente satisfactorios.
Página | 4
Anexos
Código implementado en el arduino para trabajar como esclavo.
#include <Modbus.h>
#include <ModbusSerial.h>
//Modbus Registers Offsets (0-9999)
const int SENSOR_IREG = 100;
const int LAMP1_COIL = 200;
//Used Pins
const int sensorPin = A0;
const int ledPin = 13;
// ModbusSerial object
ModbusSerial mb;
long ts;
void setup() {
// Config Modbus Serial (port, speed, byte format)
mb.config(&Serial, 19200, SERIAL_8N1);
Página | 5
// Set the Slave ID (1-247)
mb.setSlaveId(10);
// Set ledPin mode
pinMode(ledPin, OUTPUT);
// Add LAMP1_COIL register - Use addCoil() for digital outputs
mb.addHreg(LAMP1_COIL);
// Add SENSOR_IREG register - Use addIreg() for analog Inputs
mb.addIreg(SENSOR_IREG);
ts = millis();
void loop() {
//Call once inside loop() - all magic here
mb.task();
digitalWrite(ledPin, mb.Hreg(LAMP1_COIL));
//Read each two seconds
if (millis() > ts + 2000) {
ts = millis();
//Setting raw value (0-1024)
mb.Ireg(SENSOR_IREG, analogRead(sensorPin));
Página | 6