modbus slave
This commit is contained in:
@ -1,36 +1,52 @@
|
|||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
|
|
||||||
// #include "Streaming.h"
|
|
||||||
#include "Metro.h"
|
#include "Metro.h"
|
||||||
|
|
||||||
#include "ads1210.h"
|
#include "ads1210.h"
|
||||||
#include "led.h"
|
#include "led.h"
|
||||||
|
#include "SimpleModbusSlave.h"
|
||||||
|
|
||||||
const uint8_t LED_PIN = 8;
|
const uint8_t LED_PIN = 8;
|
||||||
const uint8_t ADC_CS_PIN = 9;
|
const uint8_t ADC_CS_PIN = 9;
|
||||||
const uint8_t ADC_RDY_PIN = 7;
|
const uint8_t ADC_RDY_PIN = 7;
|
||||||
|
const uint8_t MODBUS_TX_ENABLE_PIN = 6;
|
||||||
|
const uint8_t MODBUS_ID = 3;
|
||||||
|
|
||||||
ADS1210 ads1210;
|
ADS1210 ads1210;
|
||||||
LED led;
|
LED led;
|
||||||
Metro secondTick = Metro(1000);
|
Metro secondTick = Metro(1000);
|
||||||
|
uint32_t uptimeSeconds;
|
||||||
|
|
||||||
|
|
||||||
|
struct {
|
||||||
|
union {
|
||||||
|
uint32_t in;
|
||||||
|
uint16_t modbusRegisters[2]; // 0, 1
|
||||||
|
} adcValue;
|
||||||
|
union {
|
||||||
|
uint32_t in;
|
||||||
|
uint16_t modbusRegisters[2]; // 2, 3
|
||||||
|
} uptimeSeconds;
|
||||||
|
} modbusHoldingRegisters;
|
||||||
|
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
// Serial.begin(9600);
|
|
||||||
delay(1000);
|
|
||||||
|
|
||||||
led.begin(LED_PIN);
|
led.begin(LED_PIN);
|
||||||
ads1210.begin(ADC_CS_PIN, ADC_RDY_PIN);
|
ads1210.begin(ADC_CS_PIN, ADC_RDY_PIN);
|
||||||
|
modbus_configure(&Serial, 1200, SERIAL_8N2, MODBUS_ID, MODBUS_TX_ENABLE_PIN,
|
||||||
|
sizeof(modbusHoldingReigsre), modbusHoldingRegisters)
|
||||||
|
uptimeSeconds = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
|
modbus_update();
|
||||||
|
|
||||||
ads1210.exec();
|
ads1210.exec();
|
||||||
|
modbusHoldingRegisters.adcValue.in = ads1210.value;
|
||||||
|
|
||||||
if (secondTick.check() == 1) {
|
if (secondTick.check() == 1) {
|
||||||
led.toggle();
|
led.toggle();
|
||||||
|
uptimeSeconds++;
|
||||||
// Serial << "AdcValue: " << _HEX(ads1210.value) << endl;
|
modbusHoldingRegisters.uptimeSeconds.in = uptimeSeconds;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user