一、Modbus协议
- Modbus协议是一种软件协议,支持RS232(硬件层协议)、RS485(硬件层协议)、TCP/IP等多种电气接口。
- Modbus协议标准开放、无版权要求,消息帧格式简单,便于厂商开发和集成。
- Modbus可以在各种介质上传输,报文类型支持ASCII、RTU、TCP三种,使用串口传输时选择ASCII(字符)和RTU模式(hex、bin),常用的是RTU模式。
二、Modbus协议格式
1.1 Modbus-RTU协议帧
- Modbus消息帧由地址、功能码、数据和CRC校验码组成,最多256个字节。
- 从机地址:每个从机都有唯一地址(主机没有地址),占用1个字节,范围0-255,其中从机有效地址范围1-247。
- 功能码:占用1个字节,用于指示数据用途,可查询从机数据,也可修改从机数据,数据根据功能码不同而异。
- 数据:根据功能码不同对应不同内容。
- 校验:CRC校验用于检测数据错误。
1.2 判断一帧数据是否结束
- Modbus协议规定两帧数据之间要有3.5个字符的空闲间隔(3.5T)。
- 当串口波特率大于19200时,3.5T固定为1750us。
- 当串口波特率小于19200时,假如串口设置为:起始位1bit + 数据位8bit + 停止位1bit。
传输1个字符所需时间 t = 10 * 1000 / (baudRate) ms。
baudRate = 9600时,t = 10 * 1000 / 9600 = 1.04 ms, 3.5T = 3.64ms。
1.3 功能码
功能码包括读多个寄存器、写单个寄存器和写多个寄存器等。寄存器是虚拟的软件控制项,用于控制传感器、继电器等。
1.4 异常码
异常处理包括非法功能码、非法地址、非法数据值和设备故障等。
报文示例:
读多个寄存器:
写单个寄存器:
标签:协议,寄存器,Modbus,从机,串口,RTU From: https://www.cnblogs.com/xiaohuzaixue/p/18369210