Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Modbus TCP/IP entre Arduino y LabVIEW

Hola ¿cómo están?

 

Necesito realizar un proyecto con 1 entrada digital, 1 entrada analógica, 1 salida digital y 1salida analógica.

 

Pero para realizarlo debo usar el protocolo Modbus TCP/IP ETHERNET entre el LabVIEW y una tarjeta de  Arduino con Shield Ethernet. 

 

Probé la librería de LabVIEW de Modbus Master. Y una librería de Arduino que encontré en un foro. Pero no logra enlazar correctamente con el LabVIEW. Solo me funcionó entre el Arduino y Un programa Modbus poll. Pero con el LabVIEW no enlaza.

 

Si alguien realizó un proyecto similar me gustaría saber cómo realizaron la programación en LabVIEW y en Arduino.

 

 

 

0 kudos
Mensaje 1 de 7
3.848 Vistas

share your labview code so that we can know where you went wrong.

Make sure you have select port number 502 and whether it is ascii or rtu..


CLD Using LabVIEW since 2013
0 kudos
Mensaje 2 de 7
3.818 Vistas

Najup_0-1641084286719.png

 

_________________________________________

Y en Arduino:

 

/*
Modbus-Arduino Example - Lamp (Modbus IP)
Copyright 2016 by wvengen
Copyright 2015 by André Sarmento Barbosa
http://github.com/wvengen/modbus-arduino
*/

 

#include <SPI.h>
#include <Ethernet.h>
#include <Modbus.h>
#include <ModbusIP.h>

// Modbus register offset (0-9999)
const int LAMP1_COIL = 1;
const int ledPin = 2;
const int SWITCH_ISTS = 10001;
const int switchPin = 4;
const int PWM_HREG = 40001;
const int PWMPin = 3;
const int SENSOR_IREG = 30001;
const int sensorPin = A0;

// ModbusIP object
ModbusIP mb;

 

void setup() {
// The media access control (ethernet hardware) address for the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// The IP address for the shield
byte ip[] = { 169, 254, 1, 100 };
// Config Modbus IP
mb.config(mac, ip);
// Set ledPin mode
pinMode(ledPin, OUTPUT);
pinMode(switchPin, INPUT);
pinMode(PWMPin, OUTPUT);
pinMode(sensorPin, INPUT);
// Add LAMP1_COIL digital output register
mb.addCoil(LAMP1_COIL);
// Add SWITCH_ISTS register - Use addIsts() for digital inputs
mb.addIsts(SWITCH_ISTS);
// Add PWM_HREG register - Use addHreg() for analog outpus or to store values in device
mb.addHreg(PWM_HREG);
// Add SENSOR_IREG register - Use addIreg() for analog Inputs
mb.addIreg(SENSOR_IREG);
}

 

void loop() {
// Call once inside loop() - all magic here
mb.task();

// Attach ledPin to LAMP1_COIL register
digitalWrite(ledPin, mb.Coil(LAMP1_COIL) ? HIGH : LOW);
//Attach switchPin to SWITCH_ISTS register
mb.Ists(SWITCH_ISTS, digitalRead(switchPin));
//Attach PWMPin to PWM_HREG register
analogWrite(PWMPin, mb.Hreg(PWM_HREG));
//read sensor
mb.Ireg(SENSOR_IREG, analogRead(sensorPin));

delay(10);
}

 

0 kudos
Mensaje 3 de 7
3.766 Vistas

Najup_0-1641091727032.png

 

Programación en Arduino:

 

/*
Modbus-Arduino Example - Lamp (Modbus IP)
Copyright 2016 by wvengen
Copyright 2015 by André Sarmento Barbosa
http://github.com/wvengen/modbus-arduino
*/

#include <SPI.h>
#include <Ethernet.h>
#include <Modbus.h>
#include <ModbusIP.h>

// Modbus register offset (0-9999)
const int LAMP1_COIL = 1;
const int ledPin = 2;
const int SWITCH_ISTS = 10001;
const int switchPin = 4;
const int PWM_HREG = 40001;
const int PWMPin = 3;
const int SENSOR_IREG = 30001;
const int sensorPin = A0;

// ModbusIP object
ModbusIP mb;

void setup() {
// The media access control (ethernet hardware) address for the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// The IP address for the shield
byte ip[] = { 169, 254, 1, 100 };
// Config Modbus IP
mb.config(mac, ip);
// Set ledPin mode
pinMode(ledPin, OUTPUT);
pinMode(switchPin, INPUT);
pinMode(PWMPin, OUTPUT);
pinMode(sensorPin, INPUT);
// Add LAMP1_COIL digital output register
mb.addCoil(LAMP1_COIL);
// Add SWITCH_ISTS register - Use addIsts() for digital inputs
mb.addIsts(SWITCH_ISTS);
// Add PWM_HREG register - Use addHreg() for analog outpus or to store values in device
mb.addHreg(PWM_HREG);
// Add SENSOR_IREG register - Use addIreg() for analog Inputs
mb.addIreg(SENSOR_IREG);
}

void loop() {
// Call once inside loop() - all magic here
mb.task();

// Attach ledPin to LAMP1_COIL register
digitalWrite(ledPin, mb.Coil(LAMP1_COIL) ? HIGH : LOW);
//Attach switchPin to SWITCH_ISTS register
mb.Ists(SWITCH_ISTS, digitalRead(switchPin));
//Attach PWMPin to PWM_HREG register
analogWrite(PWMPin, mb.Hreg(PWM_HREG));
//read sensor
mb.Ireg(SENSOR_IREG, analogRead(sensorPin));

delay(10);
}

 

0 kudos
Mensaje 4 de 7
3.766 Vistas

Por descartar problemas, yo probaría desde el ordenador con algún programa simulador de Modbus, por ejemplo ModBUS Master Simulator. Lo puedes encontrar aquí: http://en.radzio.dxp.pl/modbus-master-simulator/

 

Una vez que te funcione con ese u otro programa, ya pruebas con LabVIEW.

Saludos y suerte.

_________________________________________
https://aulamoisan.uva.es

0 kudos
Mensaje 5 de 7
3.698 Vistas

CUAL ES LA LIBRERIA DE LABVIEW PORFAVOR?

0 kudos
Mensaje 6 de 7
3.604 Vistas

Aquí puedes encontrar alguna:

https://www.aulamoisan.com/documentos/fuentes-labview

_________________________________________
https://aulamoisan.uva.es

0 kudos
Mensaje 7 de 7
3.599 Vistas