一.libmodbus 库
免费的开源的,modbus 开发库,支持 RTU 和 TCP
官网:libmodbus.org
在线文档:https://libmodbus.org/reference/
二.源码简介
项目 | 说明 |
---|---|
doc 目录 | 各 API 接口的详细说明文档 |
src 目录 | 源码都在这个目录下 |
tests 目录 | 自带的测试代码 |
src/win32 目录 | windows 平台下的项目文件(使用 VS) |
Makefile.am | linux 平台下用于生成 makefile 文件 |
Modbus.c | 核心源码 |
Modbus.h libmodbus | 对外暴露的接口文件 |
Modbus-data.c | 实现数据处理的公用函数,比如大小端、位处理 |
Modbus-private.h | libmodbus 内部使用的数据结构和函数声明 |
Modbus-rtu.c | RTU 模式相关的函数定义 |
Modbus-rtu.h | RTU 模式对外提供的 API |
Modbus-private.h | RTU 模式内部使用的数据结构和函数声明 |
Modbus-tcp.c | TCP 模式相关的函数定义 |
Modbus-tcp.h | TCP 模式对外提供的 API |
Modbus-tcp-private.h | TCP 模式内部使用的数据结构和函数声明 |
Modbus-version.h.in | 版本定义 |
三.使用 VS 编译 modbus
- VS2017 WIN32 平台
- 双击 configure.js 进行配置
- 使用 VS 打开解决方案:modbus-9.sln
- 对项目重新生成,编译失败。把 modbus-version.h 从项目中移除,再重新添加 src 目录下
的 modbus-vsersion.h 文件 - 对项目重新生成,编译失败,提示:
再次重新生成,得到如下两个库文件:
- modbus.dll
- modbus.lib
以上是调试模式下的库文件,把 VS 设置位 release 模式,重复以上步骤,即可得到 release
版本的库文件。
四.从站设置
- 硬件环境配置
- 使用虚拟串口工具,实现 com3 <->com4
- Modbus 从站设置:(使用 com4)
- 内容设置
五.vs2017使用modbus
- 导入 libmodbus 相关的库和头文件:
- 源码
#include <stdio.h>
#include "modbus.h"
#pragma comment(lib, "modbus.lib")
int main(void) {
uint16_t tab_reg[4];
modbus_t *mb = modbus_new_rtu("com3", 9600, 'N', 8, 1);
modbus_connect(mb);
modbus_set_slave(mb, 1);
modbus_read_registers(mb, 80, 4, tab_reg);
modbus_close(mb);
modbus_free(mb);
for (int i = 0; i < 4; i++) {
printf("%d ", tab_reg[i]);
}
return 0;
}