modbus-esp8266 API终极速查表:readHreg、writeCoil、push/pull一览无余 modbus-esp8266 API终极速查表readHreg、writeCoil、push/pull一览无余【免费下载链接】modbus-esp8266Most complete Modbus library for Arduino. A library that allows your Arduino board to communicate via Modbus protocol, acting as a master, slave or both. Supports network transport (Modbus TCP) and Serial line/RS-485 (Modbus RTU). Supports Modbus TCP Security for ESP8266/ESP32.项目地址: https://gitcode.com/gh_mirrors/mo/modbus-esp8266modbus-esp8266是 Arduino 平台最完整的 Modbus 协议库让 ESP8266 / ESP32 单板即可充当 Modbus 主站或从站同时支持 Modbus RTURS-485 串口与 Modbus TCPWiFi/以太网两种传输并内置 Modbus TCP Security 安全扩展。本文以速查表形式整理其核心 API从readHreg、writeCoil读写接口到push/pull数据中转、task() 异步机制与回调函数一篇看全。 完整接口签名见 documentation/API.md核心类与功能码定义见 src/Modbus.h。30秒入门4 种寄存器类型Modbus 只有 4 类寄存器所有 API 都是围绕它们设计的名称宏功能码类型特点CoilCOIL(n)0x01 读 / 0x05 写bool可读可写控制输出IstsISTS(n)0x02bool只读离散输入HregHREG(n)0x03uint16_t可读可写保持寄存器IregIREG(n)0x04uint16_t只读输入寄存器 注意Modbus 标准只有位和16 位两种数据类型。float、uint32_t等有符号/浮点值需要拆分成多个 16 位寄存器传输。服务端速查addHreg 与本地寄存器读写作为从站server/slave先注册本地寄存器再用同名函数读写操作API说明注册addHreg(offset, value, numregs)建立从站地址空间Coil/Ists/Ireg 同理写本地Hreg(offset, value)Coil(offset, bool)、Ists、Ireg同理读本地Hreg(offset)单参重载即读返回uint16_t删除removeHreg(offset, numregs)从地址空间移除寄存器这些接口的完整签名可参考 src/Modbus.h。客户端读写readHreg 与 writeCoil 怎么用作为主站master/client调用格式高度统一读写函数(从站ID, 起始地址, 值/数组指针, 寄存器数, 事务回调)操作API对应功能码读线圈readCoil(slaveId, offset, value, numregs, cb)0x01读离散输入readIsts(slaveId, offset, value, numregs, cb)0x02读保持寄存器readHreg(slaveId, offset, value, numregs, cb)0x03读输入寄存器readIreg(slaveId, offset, value, numregs, cb)0x04写单个线圈writeCoil(slaveId, offset, value, cb)0x05写单个寄存器writeHreg(slaveId, offset, value, cb)0x06批量写writeCoil(slaveId, offset, value, numregs, cb)0x0F / 0x10批量写重载会根据numregs自动选择单写或多写功能码无需手动区分。Modbus TCP 模式下把slaveId换成IPAddress可加uint单元标识参数即可直连对端。push/pull 数据中转一行代码完成远程↔本地复制push/pull 是最容易混淆的一组接口记住一个方向口诀即可pull 把远程数据拉下来存进本地寄存器pullHreg(slaveId, from, to, numregs)from是远程起始地址to是本地保存地址push 把本地数据推上去写到远程pushHreg(slaveId, to, from, numregs)to是远程地址from是本地数据地址跨类型中转同样支持pullCoilToIsts、pushIregToHreg、pullIsts、pushIstsToCoil等 典型场景做 TCP 到 RTU 的协议桥接、把传感器数据自动缓存到本地寄存器都靠它一行解决官方桥接示例见 examples/Bridge/。别忘了 task()异步调用工作流这是新手最常踩的坑所有 read/write/pull/push 都是异步的。readHreg()只是发出请求就立刻返回真正的应答处理由task()完成。所以loop()里必须周期性调用void loop() { if (!mb.slave()) { // 无进行中的请求时才发新请求 mb.readCoil(1, 1, coils, 20, cbWrite); } mb.task(); // 处理应答、触发事务回调 yield(); }上面的完整主站示例可参考 examples/RTU/master/master.ino从站示例见 examples/RTU/slave/slave.ino。图服务端 task() 收到请求后的处理流程onRequest 回调 → 参数校验 → 准备应答 → 触发 onGet/onSet 回调⚠️ 两个高频现象都是异步机制的正常表现调用 readHreg 后立刻读值读不到—— 应答可能还没回来由task()异步填充连续调用多次 read/write 只有第一次执行—— 同一时间只允许一个请求在途task()处理完前请等待。回调速查onSetHreg、onGetCoil 与事务通知回调触发时机onSetCoil / onSetHreg / onSetIsts / onSetIreg(addr, cb, numregs)本地寄存器被写时onGetCoil / onGetHreg / onGetIsts / onGetIreg(addr, cb, numregs)本地寄存器被读时事务回调cbTransaction每个 read/write/push/pull 请求结束时成功或超时onConnect / onDisconnectTCP 服务器连接建立/断开事件在回调内调用eventSource()可获取请求来源RTU 下返回从站 IDTCP 下返回对方 IP超时事务返回INADDR_NONE。回调用法示例见 examples/Callback/onGetShared/onGetShared.ino 与 examples/Callback/onSet/onSet.ino。错误码速查表所有客户端调用返回事务 ID结果通过事务回调以ResultCode形式通知常见值错误码含义排查建议0x00成功—0x01功能码不支持检查从站是否实现该功能0x02地址非法确认已addXxx注册该寄存器0x03值超范围检查写入值0xE4超时RTU查接线/波特率可降到 9600/换独立供电TCPping 与防火墙排查0xE5连接丢失检查对端在线状态0xE6事务被取消—传输层设置RTU 与 TCP 快速上手需求RTU串口/RS-485TCP网络初始化begin(Serial1, txEnablePin)—设波特率setBaudrate(9600)非 ESP 平台必调—从站模式server(slaveId)server(port)默认 502主站模式client()或master()client()配合connect(ip, port)自动重连—autoConnect(true)默认关闭RTU 的begin支持SoftwareSerial/HardwareSerial/任意StreamtxEnablePin用于 MAX-485 收发控制低电平有效需传txEnableDirectfalse。RTU 接口签名见 src/ModbusRTU.h编译期配置项最大寄存器数、事务数等在 src/ModbusSettings.h 中调整。常见问题速答float / 32 位值怎么发拆成多个 16 位寄存器连续 read/write 后在应用层拼合。0xE4 超时偶发偶发可接受频发则按上表 RTU/TCP 分别排查硬件与网络。能做 TCP→RTU 桥吗可以参考 examples/Bridge/TCP-to-RTU-Simulator/ 及文档 documentation/README.md 中的 FAQ。把这张速查表收藏起来配合examples/目录里的分场景示例RTU、TCP、TLS、桥接、OTA 文件更新就能覆盖绝大多数 Modbus 开发需求 ✅【免费下载链接】modbus-esp8266Most complete Modbus library for Arduino. A library that allows your Arduino board to communicate via Modbus protocol, acting as a master, slave or both. Supports network transport (Modbus TCP) and Serial line/RS-485 (Modbus RTU). Supports Modbus TCP Security for ESP8266/ESP32.项目地址: https://gitcode.com/gh_mirrors/mo/modbus-esp8266创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考