- libmodbusSDK介绍并使用
- 使用VS开发modbusTCPIP通信
目录
1.1 libmodbus开发库
1.1.1 简介
github搜索libmodbus,下载libmodbus.zip库,底下是对该文件的树枝进行分析。
doc:libmodbus库的API接口说明
m4:存放GNU m4文件
src:全部的libmodbus源文件
win32:定义在windows下使用VS编译时的项目工程文件及配置
modbus.c:核心文件,实现Modbus协议层,定义了共通的发送函数和接收函数、功能码对应函数
modbus.h:接口API头文件
modbus-data.c:数据处理共通函数,包括大小端相关字节、位交换等函数
modbus-private.h:内部使用的数据结构和函数定义
RTUmodbus-rtu.c:通信层实现,RTU模式相关函数,主要是串口的设置、连接及消息的发送和接收
modbus-rtu.h:RTU模式对外提供的各API定义
modbus-rtu-private.h:RTU模式私有定义TCP
modbus-tcp.c:通信层实现,TCP模式相关函数,主要是TCP/IP的设置、连接及消息的发送接收
modbus-tcp.h:定义TCP模式对外提供的各API定义
modbus-tcp-private.h:TCP模式私有定义
modbus-version.h:版本定义文件tests:包含自带的测试代码其他文件对理解代码无用
1.1.2 编译libmodbus的SDK
第一步:位于win32中的configure.js(展开项目用)先安装,生成config.h和 modbusversion.h
第二步:打开VS,在vS中打开win32中的modbus-9.sln文件(升级文件用),勾选全部完成。(完成打开libmodbus项目)
第三步:在VS的解决方案modbus的位于目录Header Files的modbus-version.h移除(Remove)(操作1),并在目录Header Files右击加入(Add)>>现有项目(ExistingItem)(操作2),把上文文件夹的modbus-version.h重新加载进去,然后重新Rebuild Solution(操作3)
第四步:编译后出现错误,原因在于没有将版本(version)项的定义清零(位于modbus项目资源管理的属性下)
最后一步:重新编译,成功生成modbus.dll和modbus.lib
1.1.3 libmodbus源码分析
- 数据类型stdint.h
定义int8_t等
- 常量定义 modbus.h
功能码定义
- 核心结构体
包含modbus_t和modbus_mapping_t
结构体一:位于modbus-private.h》》modbus_t》》
含_modbus和struct_modbus_backend两个
功能定义