Modbus协议

一、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 异常码

异常处理包括非法功能码、非法地址、非法数据值和设备故障等。

报文示例:

读多个寄存器:

写单个寄存器:

posted @ 2024-08-20 13:15  xioahuhu  阅读(23)  评论(0编辑  收藏  举报