Modbus RTU通信协议详解

需积分: 14 11 下载量 10 浏览量 更新于2024-08-11 收藏 148KB DOCX 举报
"该文档详细介绍了Modbus RTU通信协议,包括读取多个寄存器值、写入多个寄存器、写多个线圈以及处理通讯错误和批量写入IO变量的操作。此外,还提到了读取配置信息的指令。" 在Modbus RTU通信协议中,主要有以下几个关键知识点: 1. 功能码“03”:读取多个寄存器值 当主机想要从从机(如PDM)读取多个寄存器数据时,会使用功能码“03”。例如,要读取设备地址为04、寄存器起始地址为0034的2个寄存器,主机将发送特定格式的报文,从机会回应包含读取到的数据的报文。 2. 功能码“10”:写入多个寄存器 主机可以利用功能码“10”将数据写入从机的多个寄存器。每个寄存器是16位,高位在前。PDM允许一次最多写入60个寄存器,例如,主机将值0064和0010写入地址002C和002D的寄存器,从机响应确认写入成功。 3. 功能码“0F”:写多个线圈 功能码“0F”用于写入多个线圈状态。数据区的每一位对应一个线圈,1表示开(ON),0表示关(OFF)。例如,主机写12个线圈到地址0x04a5,通过两个字节DATA1和DATA2来表示状态。 4. 通讯错误处理 如果出现错误,如非法功能码、非法数据位置或非法数据值,从机将返回一个错误码,功能码最高位设为1,并且增加128。错误码包括81(非法功能码)、82(非法的数据位置)和83(非法的数据值)。CRC错误将被忽略,其他错误会有详细信息反馈。 5. 批量写入IO变量指令 这个指令允许一次性设置多个连续的IO变量值,数据写入时低位在前,高位在后。例如,设置IO[2]至IO[3]的值为0x1234和0x5678,主机发送的报文格式为0010 0434127856,从机返回确认的报文。 6. 读取配置信息指令 主机可以通过特定指令读取从机的配置信息,类似于按字节读取特定内存地址(如0x08070000+addr)的数据。 在实际应用中,Modbus RTU协议常用于485网络,配合单片机(如STM32)进行设备间的通信。了解并掌握这些知识点对于实现基于Modbus RTU的嵌入式系统通信至关重要。