Modbus协议
1|0一、Modbus协议
- Modbus协议是一种软件协议,支持RS232(硬件层协议)、RS485(硬件层协议)、TCP/IP等多种电气接口。
- Modbus协议标准开放、无版权要求,消息帧格式简单,便于厂商开发和集成。
- Modbus可以在各种介质上传输,报文类型支持ASCII、RTU、TCP三种,使用串口传输时选择ASCII(字符)和RTU模式(hex、bin),常用的是RTU模式。
2|0二、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 异常码
异常处理包括非法功能码、非法地址、非法数据值和设备故障等。
报文示例:
写单个寄存器:
__EOF__

本文作者:xiaohu
本文链接:https://www.cnblogs.com/xiaohuzaixue/p/18369210.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/xiaohuzaixue/p/18369210.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂