c++用libmodubs库 与modbus tcp通信的代码
时间: 2023-09-23 22:09:49 浏览: 91
C++ Modbus Tcp 通讯程序
5星 · 资源好评率100%
下面是一个简单的使用libmodbus库与modbus TCP通信的C++代码示例:
```c++
#include <iostream>
#include <modbus/modbus.h>
int main() {
modbus_t *ctx;
uint16_t tab_reg[10];
// 创建一个modbus上下文
ctx = modbus_new_tcp("192.168.1.10", 502);
if (ctx == NULL) {
std::cerr << "Unable to create modbus context" << std::endl;
return 1;
}
// 连接到modbus从设备
if (modbus_connect(ctx) == -1) {
std::cerr << "Connection failed: " << modbus_strerror(errno) << std::endl;
modbus_free(ctx);
return 1;
}
// 读取从设备的寄存器
int rc = modbus_read_registers(ctx, 0, 10, tab_reg);
if (rc == -1) {
std::cerr << "Read failed: " << modbus_strerror(errno) << std::endl;
modbus_close(ctx);
modbus_free(ctx);
return 1;
}
// 打印读取到的寄存器数据
for (int i = 0; i < rc; i++) {
std::cout << "reg[" << i << "]=" << tab_reg[i] << std::endl;
}
// 断开与从设备的连接
modbus_close(ctx);
modbus_free(ctx);
return 0;
}
```
在这个示例中,我们首先创建了一个modbus上下文,然后连接到modbus从设备。接下来,我们使用`modbus_read_registers()`函数从从设备的寄存器中读取10个寄存器的数据,并将其存储在`tab_reg`数组中。最后,我们打印读取到的寄存器数据,断开与从设备的连接并释放modbus上下文。
阅读全文