Modbus---RTU
串口是硬件层的通讯接口Modbus是软件层的应用层协议举个简单的比喻串口是“路”Modbus是“跑在路上的车数据格式”在使用是只需要用串口发送数据格式就可以使用串口通信数据格式1.地址域1字节从机地址2.功能码1字节指示操作类型如读线圈、写寄存器等3.数据域可变长度包含请求或响应的具体数据4.CRC校验2字节循环冗余校验确保数据完整性常用功能码其中最常用的是0x03读取数据0x06写参数功能码功能0x01读线圈状态读开关量输出0x02读离散输入状态读开关量输入0x03读保持寄存器读模拟量、参数最常用0x04读输入寄存器读模拟量采集值0x05写单个线圈控制单个继电器0x06写单个保持寄存器设参数、控输出最常用0x0F写多个线圈0x10写多个保持寄存器主机发送以主机请求数据帧为例固定格式从机地址 功能码 起始寄存器地址 寄存器数量 校验码例0x01 0x03 0x00 0x00 0x00 0x02 C4 0B解析0x01 从机地址0x03 功能码0x00 起始寄存器地址高8位0x00 起始寄存器地址低8位0x00 读取寄存器个数高8位0x02 读取寄存器个数低8位0xC4 校验高8位0x0B 校验低8位主机接收固定格式从机地址 功能码 数据长度 数据1 数据2 …… 校验码解析字段解析0x01从机地址0x03功能码原功能码不变0x04数据长度表示后面有多少字节数据0x12第 1 个寄存器数据高 8 位0x34第 1 个寄存器数据低 8 位…………0xXXCRC 校验高 8 位0xXXCRC 校验低 8 位