Modbus RTU通信协议解析:从帧格式到CRC校验的完整实现
创始人
2026-09-12 12:01:18

Modbus协议在工业自动化领域是绝对的霸主,几乎所有PLC、变频器、仪表、传感器都支持Modbus。Modbus有几个变种:Modbus RTU走RS-485串口,Modbus TCP走以太网,Modbus ASCII走串口但用ASCII编码。其中Modbus RTU是最常用的,因为它简单、可靠、接线方便,一根RS-485总线能挂几十台设备。今天就深入聊聊Modbus RTU的协议细节和实现要点。

Modbus是主从架构,一条总线上只能有一个主机(Master),可以有多个从机(Slave),每个从机有一个唯一的地址(1到247)。主机发起请求,从机收到后响应。总线上的通信都是主机主动发起的,从机不会主动发数据。这种架构的好处是简单可靠,不会出现多台设备同时抢总线的冲突。缺点是从机不能主动上报数据,主机必须轮询各个从机。

RTU模式的帧格式由四个部分组成:从机地址(1字节)、功能码(1字节)、数据域(变长)、CRC校验(2字节,低字节在前)。常用的功能码有几个:0x01读线圈状态(数字量输出)、0x02读离散输入(数字量输入)、0x03读保持寄存器、0x04读输入寄存器、0x05写单个线圈、0x06写单个寄存器、0x0F写多个线圈、0x10写多个寄存器。掌握这几个功能码,基本就能搞定绝大多数Modbus设备。

拿功能码0x03读保持寄存器举个例子。主机发送的请求帧:[从机地址] [0x03] [起始地址高] [起始地址低] [读取数量高] [读取数量低] [CRC低] [CRC高]。从机正常响应的帧:[从机地址] [0x03] [后续字节数] [寄存器值1高] [寄存器值1低] ... [寄存器值N高] [寄存器值N低] [CRC低] [CRC高]。如果从机响应异常,会返回异常响应:[从机地址] [0x03|0x80] [异常码] [CRC低] [CRC高],功能码最高位置1表示异常。

CRC校验是Modbus RTU的核心,用的是CRC16-MODBUS算法。初始值是0xFFFF,然后对每个字节的8个bit依次处理:右移一位,如果移出的位是1就异或0xA001。所有字节处理完后得到CRC值,发送时低字节在前、高字节在后。Python里实现CRC16非常简单,几十行代码就行。校验时把整个帧(包括CRC)算一遍,如果结果是0就对了,因为正确的CRC跟数据异或完会抵消。

Modbus RTU的帧间隔很重要。RTU模式下,帧和帧之间必须有至少3.5个字符的静默时间,设备就是靠这个静默来判断一帧结束。以9600bps波特率、8N1格式为例,一个字符是10位,3.5个字符就是35位,换算成时间是35÷9600 ≈ 3.65ms。如果连续两个字符之间的间隔超过这个时间,就认为前一帧已经结束,后一个字符开始新帧。这个规则在编程实现时特别关键,超时判断的时间阈值要算准确。

实际编程实现Modbus RTU,推荐用现成的库,Python用pymodbus,C/C++可以用FreeModbus。但有时候在单片机上自己实现也不难,核心就是四个步骤:接收串口数据、等3.5字符超时后认为一帧收完、CRC校验、解析功能码和数据。发送响应帧时也是一样的流程:组装帧、算CRC、低字节在前高字节在后发出去。

常见问题排查:设备通信不上,先查波特率、数据位、停止位、校验位这些串口参数对不对;再查从机地址有没有冲突;最后用示波器看总线上有没有波形。数据错误的话重点查CRC计算对不对、字节序有没有搞反。还有RS-485总线的终端电阻(120Ω)和偏置电阻(上下各560Ω)不能省,特别是总线比较长或者挂的设备多时。

⚠️
本网站信息内容及素材来源于网络采集或用户发布,如涉及侵权,请及时联系我们,发送链接至2697952338@QQ.COM,我们将第一时间进行核实与删除处理。

相关内容

热门资讯

第一次坐火车卧铺怎么选铺:上中... 一、先分清硬卧、软卧和动车组卧铺普速列车里最常见的是硬卧,一个开放式隔间六个铺位,上中下三层各两个;...
手心老出汗别都怪紧张:手汗症的... 一、手心总是湿漉漉的,不一定是「虚」不少人一年四季手心都是湿的,写字洇湿纸张、打字按滑键盘、握手前先...
果蔬皮扔之前先看看:哪些带皮吃... 一、果皮和边角料常被当成垃圾扔掉削苹果、剥橘子、去冬瓜皮,很多人习惯把果皮菜皮一律扔进垃圾桶。202...
家人半夜梦游要不要叫醒:睡行症... 半夜发现家人闭着眼在屋里走动,开冰箱、穿衣服,喊也不应,第二天全忘了,不少人的第一反应是"中邪""被...
空气质量指数看不懂?六级颜色、... 打开手机天气,常能看到「AQI 75,良」这样的字样,底色有时是绿色,有时变橙色。这个数字不是温度也...
手机天气显示-32℃不是真寒潮... 一、刷屏的-32℃,是数据出错11月4日凌晨,不少苹果手机用户发现自带天气应用把11月13日最低气温...
和众汇富1980课程怎么样,投... 对证券投资课程的评价,常常容易被一个问题带偏:学习之后有没有马上取得满意的交易结果。和众汇富1980...
和众汇富1980课程怎么样,回... 证券课程通常有固定的讲解顺序,但每个人理解知识的速度并不相同,有人第一次就抓住重点,也有人需要隔几天...
和众汇富1980课程怎么样,老... 对很多已经有多年市场经历的人来说,重新坐进课堂并不容易,因为经验积累久了,往往觉得常见的图表和交易术...
和众汇富1980课程怎么样,从... 有些投资者接触课程时,期待学到一种能够迅速作出判断的办法,但真正经历市场波动后,最难改善的往往是急于...
和众汇富1980课程怎么样,知... 对证券知识已经有所接触的人来说,最困扰的事情可能是每个概念都听说过,真正分析时却不知道应该先用哪一种...
和众汇富1980课程怎么样,反... 真正让一门证券投教课程留下印象的,有时不是课堂里出现了多少专业词语,而是听完之后有没有继续练习的动力...
和众汇富1980课程怎么样,从... 有过一定投资经历的人,可能已经熟悉行情软件,也知道不少技术指标,却仍会在朋友的一句推荐或一条热门消息...
和众汇富1980课程怎么样,技... 学习证券分析时,一种技术形态如果在课堂案例中得到了清楚解释,初学者很容易希望它在下一次行情中也能得到...
和众汇富1980课程怎么样,课... 证券课程的学习困惑,有时并不发生在课堂上,而是在课后独自翻看笔记时才逐渐浮现。和众汇富1980课程怎...
和众汇富1980课程怎么样,听... 课程介绍里往往会列出很多知识模块,真正进入学习后,初学者的感受却可能是内容太丰富、理解速度跟不上,甚...
和众汇富1980课程怎么样,从... 刚开始研究证券走势时,不少人习惯猜测价格哪里最便宜,看见明显回落就想赶紧抓住反弹机会,却很少完整核对...
和众汇富1980课程怎么样,听... 在证券市场中摸索多年的人,可能早就接触过各种收费课程、行情讲解和分析方法,却依旧觉得知识没有真正连成...
和众汇富1980课程怎么样,能... 很多人初次走进证券市场时,关注的重点是能不能抓住下一次上涨,对于知识究竟需要怎样积累,反而没有足够耐...
和众汇富1980课程怎么样,软... 证券软件里密集排列着指标、市场榜单和资讯栏目,对初学者来说既有吸引力,也可能造成困扰。和众汇富198...
和众汇富1980课程怎么样,课... 接触证券学习的人常会遇到这样的情况:视频看过不少,技术术语也能说出几个,面对具体市场变化时,却不知道...
和众汇富1980的投资学习思路... 很多人听课时跟得上老师的推理,合上笔记后却发现自己很难把刚学过的知识完整讲出来。和众汇富1980的投...
和众汇富1980的投资学习思路... 财经新闻、课堂视频、软件栏目和别人分享的观点每天都在增加,学习者常常担心漏掉一条信息,就错过了理解市...
和众汇富1980的投资学习思路... 学习证券知识时,市场的热闹常常比课堂里的原则更容易吸引注意力,一条上涨消息就可能让人忘记原本打算核实...
和众汇富1980的投资学习思路... 证券学习最容易产生的一种误会,是听过几个分析方法以后,就觉得任何行情都应该能找到解释。和众汇富198...