modbus通讯代码C语言
时间: 2023-08-24 18:04:55 浏览: 58
以下是一个简单的C语言Modbus通讯代码示例,其中使用了libmodbus库:
```c
#include <stdio.h>
#include <stdlib.h>
#include <modbus/modbus.h>
int main(int argc, char *argv[]) {
modbus_t *ctx;
uint16_t tab_reg[32];
int rc;
ctx = modbus_new_rtu("/dev/ttyS0", 9600, 'N', 8, 1);
if (ctx == NULL) {
fprintf(stderr, "Unable to create the libmodbus context\n");
return -1;
}
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_registers(ctx, 0, 10, tab_reg);
if (rc == -1) {
fprintf(stderr, "%s\n", modbus_strerror(errno));
modbus_free(ctx);
return -1;
}
for (int i=0; i < rc; i++) {
printf("reg[%d]=%d (0x%X)\n", i, tab_reg[i], tab_reg[i]);
}
modbus_close(ctx);
modbus_free(ctx);
return 0;
}
```
这个示例代码使用了modbus库来建立一个Modbus RTU通讯连接,并读取从设备1的地址0到10的寄存器中的数据。如果连接或读取失败,将会输出相应的错误信息。