Modbus协议

1|0一、Modbus协议

  • Modbus协议是一种软件协议,支持RS232(硬件层协议)、RS485(硬件层协议)、TCP/IP等多种电气接口。
  • Modbus协议标准开放、无版权要求,消息帧格式简单,便于厂商开发和集成。
  • Modbus可以在各种介质上传输,报文类型支持ASCII、RTU、TCP三种,使用串口传输时选择ASCII(字符)和RTU模式(hex、bin),常用的是RTU模式。

2|0二、Modbus协议格式

1|01.1 Modbus-RTU协议帧

  • Modbus消息帧由地址、功能码、数据和CRC校验码组成,最多256个字节。

  • 从机地址:每个从机都有唯一地址(主机没有地址),占用1个字节,范围0-255,其中从机有效地址范围1-247。
  • 功能码:占用1个字节,用于指示数据用途,可查询从机数据,也可修改从机数据,数据根据功能码不同而异。
  • 数据:根据功能码不同对应不同内容。
  • 校验:CRC校验用于检测数据错误。

1|01.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|01.3 功能码

功能码包括读多个寄存器、写单个寄存器和写多个寄存器等。寄存器是虚拟的软件控制项,用于控制传感器、继电器等。

1|01.4 异常码

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

1|0报文示例:

读多个寄存器:

写单个寄存器:


__EOF__

本文作者xiaohu
本文链接https://www.cnblogs.com/xiaohuzaixue/p/18369210.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   EternalH  阅读(187)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
点击右上角即可分享
微信分享提示