el 12-30-2021 02:11 PM
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.
el 12-30-2021 09:33 PM
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..
el 01-01-2022 06:45 PM
_________________________________________
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);
}
el 01-01-2022 08:49 PM
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);
}
el 01-11-2022 05:06 AM
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.
el 02-14-2022 10:57 AM
CUAL ES LA LIBRERIA DE LABVIEW PORFAVOR?
el 02-14-2022 11:06 AM
Aquí puedes encontrar alguna:
https://www.aulamoisan.com/documentos/fuentes-labview