Freemodbus主从库
Freemodbus 简介 Freemodbus 是一款开源的 Modbus 协议栈,由armink大神移植。同时支持主机和从机的功能。 FreeModbus 主机源码是开源的,这使得在嵌入式产品中实现Modbus主机功能变得简单。 特性 新增加的主机源码与原有从机的风格及接口保持一致 支持主机与从机在同一协议栈运行 支持实时操作系统及裸机移植 为应用提供多种请求模式,可以选择阻塞还是非阻塞模式 支持所有常用的Modbus方法 文件结构 源文件 描述 FreeModbus/modbus/mb.c Modbus从机设置及轮询接口 FreeModbus/modbus/mb_m.c Modbus主机设置及轮询接口 FreeModbus/modbus/rtu/mbrtu.c 从机RTU模式设置 FreeModbus/modbus/rtu/mbrtu_m.c 主机RTU模式设置 FreeModbus/port/portserial.c 从机串口移植 FreeModbus/port/portserial_m.c 主机串口移植 FreeModbus/port/user_mb_app.c 从机数据缓冲区 FreeModbus/port/user_mb_app_m.c 主机数据缓冲区 数据缓冲区 数据缓冲区定义在 user_mb_app_m.c 文件中,共4种数据类型: 线圈(Coils) 离散输入(Discrete Inputs) 保持寄存器(Holding Registers) 输入寄存器(Input Registers) API详解 写单个保持寄存器 eMBMasterReqWriteHoldingRegister( UCHAR ucSndAddr, USHORT usRegAddr, USHORT usRegData, LONG lTimeOut ); 读多个保持寄存器 eMBMasterReqReadHoldingRegister( UCHAR ucSndAddr, USHORT usRegAddr, USHORT usNRegs, LONG lTimeOut ); 读输入寄存器 eMBMasterReqReadInputRegister( UCHAR ucSndAddr, USHORT usRegAddr, USHORT usNRegs, LONG lTimeOut ); 返回值说明 返回值 描述 MB_MRE_NO_ERR 正常 MB_MRE_NO_REG 寄存器地址出错 MB_MRE_TIMEDOUT 响应超时 MB_MASTER_BUSY 主机忙 获取方式 GitHub: https://github.com/RT-Thread-packages/freemodbus