modbus rtu代码示例并附上注释
时间: 2023-08-27 09:05:00 浏览: 55
下面是一个基本的Modbus RTU代码示例,使用C++语言编写。注释已添加在代码中,以便更好地理解代码的功能:
```cpp
#include <ModbusRTU.h> // 引入Modbus RTU库
#define SLAVE_ID 1 // 从设备ID
#define BAUD_RATE 9600 // 通信速率
#define SERIAL_PORT "COM1" // 串口名称
ModbusRTU mb; // 创建一个Modbus RTU对象
void setup() {
Serial.begin(9600); // 初始化串口通信
mb.begin(SLAVE_ID, &Serial); // 初始化Modbus RTU
mb.setBaudrate(BAUD_RATE); // 设置通信速率
}
void loop() {
uint16_t regs[1]; // 创建一个包含一个16位的寄存器的数组
// 从寄存器0读取数据
mb.readHoldingRegisters(0, 1, regs);
// 打印读取到的数据
Serial.print("Value: ");
Serial.println(regs[0]);
// 将数据加1并写回寄存器0
regs[0]++;
mb.writeRegisters(0, 1, regs);
delay(1000); // 延迟1秒钟
}
```
这个代码示例演示了如何使用Modbus RTU从寄存器0读取数据并将其加1,然后写回寄存器0。运行代码后,您可以在串口监视器中观察到读取和写入的值。请注意,此示例仅适用于从设备ID为1的Modbus RTU网络。如果您的从设备ID不同,则需要相应更改代码中的SLAVE_ID。