Modbus RTU
ADU、CRC、功能码与串口时序。
正在准备工具…
报文结构
Modbus RTU 的 ADU 由从站地址、功能码、数据和 CRC 组成,CRC 在线上低字节在前:
CRC 使用 CRC-16/MODBUS,初值 FFFF、反射多项式 A001。ASCII 文本 123456789 的校验值为 4B37,线上发送 37 4B。
例:从站 1、功能码 03、起始地址 0、读取 10 个保持寄存器,PDU 为 01 03 00 00 00 0A,ADU 为 01 03 00 00 00 0A C5 CD。
功能码与数量
第一版支持 01、02、03、04、05、06、0F、10。读线圈和离散输入最多 2000 个,读保持/输入寄存器最多 125 个;写多线圈最多 1968 个,写多寄存器最多 123 个。功能码 05 的线圈值只接受 FF00 或 0000,功能码 06 的寄存器值为 0–65535。
地址 0 只用于写功能码广播,从站不返回响应。异常响应把功能码最高位置 1,后接异常码和 CRC。响应解析会核对 CRC、字节数和寄存器/线圈数量。
帧间隔
RTU 帧之间至少需要 3.5 个字符的静默:
高于 19200 baud 时按规范使用固定 1.75 ms。9600 baud、8N1、8 字节请求的字符时间约 1.042 ms,帧时间约 8.333 ms,帧间隔约 3.646 ms。页面按所选串口格式计算字符位数。
边界
地址、数量、写入值和 CRC 都会校验;解析模式要求响应至少包含地址、功能码、数据和 CRC。页面不处理 ASCII 模式、网关路由和 Modbus TCP 的 MBAP 头。