modbusTCP协议读取离散寄存器功能C语言实现实例
时间: 2023-10-10 13:13:03 浏览: 42
以下是一个 modbusTCP 协议读取离散寄存器的 C 语言实现实例,需要使用 modbus 库:
```c
#include <stdio.h>
#include <stdlib.h>
#include <modbus.h>
int main(int argc, char *argv[])
{
modbus_t *ctx;
uint8_t tab_rp_bits[64];
int rc;
int i;
// 创建 modbus 上下文
ctx = modbus_new_tcp("192.168.0.1", 502);
if (ctx == NULL) {
fprintf(stderr, "Unable to allocate libmodbus context\n");
return -1;
}
// 设置从机 ID
modbus_set_slave(ctx, 1);
// 建立连接
if (modbus_connect(ctx) == -1) {
fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
modbus_free(ctx);
return -1;
}
// 读取离散寄存器
rc = modbus_read_input_bits(ctx, 0, 10, tab_rp_bits);
if (rc == -1) {
printf("Failed to read input bits: %s\n", modbus_strerror(errno));
} else {
for (i = 0; i < rc; i++) {
printf("Input bit %d: %d\n", i, tab_rp_bits[i]);
}
}
// 关闭连接
modbus_close(ctx);
modbus_free(ctx);
return 0;
}
```
其中,需要根据实际情况修改 IP 地址、从机 ID、起始地址和长度等参数。