Iot Base作为modbus server


用DTU模拟传感器,改写Iot Base保持寄存器的数据,IotBase的id为7

#include 
#include 
#include 
#define RX_PIN      13
#define TX_PIN      15

RS485Class RS485(Serial2, RX_PIN, TX_PIN,-1,-1);

const int numCoils            = 10;
const int numDiscreteInputs   = 10;
const int numHoldingRegisters = 10;
const int numInputRegisters   = 10;

void setup() {
    M5.begin();
    M5.Lcd.setTextSize(3);
    M5.Lcd.println(">>IoT BASE");
    M5.Lcd.println(">>ModBus Slave Test");
    M5.Lcd.println(">>ID: 0x07");

    // start the Modbus RTU server, with (slave) id 7
    if (!ModbusRTUServer.begin(7, 9600)) {
        Serial.println("Failed to start Modbus RTU Server!");
        while (1)
            ;
    }
    // configure coils at address 0x00
    ModbusRTUServer.configureCoils(0x00, numCoils);
    // configure discrete inputs at address 0x00
    ModbusRTUServer.configureDiscreteInputs(0x00, numDiscreteInputs);
    // configure holding registers at address 0x00
    ModbusRTUServer.configureHoldingRegisters(0x00, numHoldingRegisters);
    // configure input registers at address 0x00
    ModbusRTUServer.configureInputRegisters(0x00, numInputRegisters);
}

void loop() {
    // poll for Modbus RTU requests
    ModbusRTUServer.poll(); 
    M5.Lcd.drawNumber(ModbusRTUServer.holdingRegisterRead(1), 55, 100);
}

相关