聊聊三种不同的Modbus协议PDU(Modbus协议帧结构)
创作时间:
作者:
@小白创作中心
聊聊三种不同的Modbus协议PDU(Modbus协议帧结构)
引用
1
来源
1.
https://cloud.tencent.com.cn/developer/article/2431674
Modbus协议是一种在工业领域广泛应用的通信协议,主要用于实现设备间的通信和数据交换。本文将深入探讨Modbus协议中的PDU(Protocol Data Unit)结构及其在不同通信方式(RTU、ASCII和TCP)下的应用。
Modbus PDU基础
Modbus协议定义了一个简单的协议数据单元(PDU),这个定义是独立于底层通信层的。Protocol data unit,缩写为PDU,即协议数据单元,其基本结构如下:
一个PDU单元主要由功能码和相应的数据两部分组成。将Modbus协议映射到特定的总线或网络会在协议数据单元上引入一些额外的字段。发起Modbus事务的客户端构建Modbus PDU,然后添加字段以构建适当的通信PDU。下图即在串行总线上的PDU通信帧结构。
当然也有将上述结构简称为ADU(Application Data Unit应用数据单元),如下图所示:
需要说明的以下几点:
- Modbus应用数据单元(ADU)由发起Modbus事务的客户端构建。功能码指示服务器要执行的操作类型。Modbus应用协议建立了客户端发起请求的格式。
- Modbus数据单元的功能码字段以一字节编码。有效的代码范围是1到255的十进制数(128到255的范围是保留的,用于异常响应)。当从客户端发送消息到服务器设备时,功能码字段告诉服务器要执行什么操作。功能码"0"是无效的。
- 某些功能码会添加子功能码以定义多个操作。客户端发送到服务器设备的消息的数据字段包含服务器用来执行功能码定义的操作的额外信息。这可能包括离散和寄存器地址、要处理的项目数量以及字段中实际数据字节的计数。
- 在某些类型的请求中,数据字段可能不存在(长度为零),在这种情况下,服务器不需要任何额外信息。功能码单独指定操作。
- 如果与正确接收到的Modbus ADU中请求的Modbus功能相关的没有发生错误,服务器对客户端的响应的数据字段包含请求的数据。对于正常响应,服务器简单地向请求回响原始的功能码。
- 如果发生与请求的Modbus功能相关的错误,该字段包含一个异常代码,服务器应用程序可以使用它来确定下一步要采取的操作。
- 例如,客户端可以读取一组离散输出或输入的开/关状态,或者它可以读写一组寄存器的数据内容。当服务器响应客户端时,它使用功能码字段来指示是正常(无错误)响应还是发生了某种错误(称为异常响应)。
- 需要注意的是:超时处理机制是必要的。可以来避免不无限期地等待可能永远不会到来的回复。
RTU、ASCII和TCP协议帧
我们先通过内部的PDU结构图来看看:
Modbus RTU协议帧:
Modbus ASCII协议帧:
Modbus TCP协议帧:
Modbus PDU的大小受到从最初的串行线路网络(最大RS485 ADU =256字节)继承的大小限制。
因此:
- 串行线路通信的Modbus PDU = 256 - 服务器地址(1字节)- CRC(2字节)=253字节。
- RS232 / RS485 ADU = 253字节 + 服务器地址(1字节)+ CRC(2字节)=256字节。
- TCP Modbus ADU = 253字节 + MBAP(7字节)=260字节。
三种不同类型的PDU
Modbus协议定义了三种PDUs(协议数据单元),它们是:
- Modbus请求PDU,mb_req_pdu
- Modbus响应PDU,mb_rsp_pdu
- Modbus异常响应PDU,mb_excep_rsp_pdu
这三种具体的定义如下:
mb_req_pdu = {function_code, request_data}
其中:
- function_code = [1字节]Modbus功能码
- request_data = [n字节]这个字段依赖于功能码,通常包含诸如变量引用、变量计数、数据偏移量、子功能码等信息。
mb_rsp_pdu = {function_code, response_data}
其中:
- function_code = [1字节]Modbus功能码
- response_data = [n字节]这个字段依赖于功能码,通常包含诸如变量引用、变量计数、数据偏移量、子功能码等信息。
mb_excep_rsp_pdu = {exception-function_code, request_data}
其中:
- exception-function_code = [1字节]Modbus功能码 + 0x80
- exception_code = [1字节]定义在“Modbus异常代码”表中的Modbus异常代码,后期会单独说明,敬请持续关注。
热门推荐
Mesh组网的设备和技术有哪些,如何选择合适的设备?
肺气肿肺心病的综合治疗方案
犯罪未遂与犯罪既遂的区别:从结果、主观到社会危害性的多维度分析
湘情融肉:毛氏红烧肉的风味传承与文化寻根
《哪吒2》特效团队走进中山校园,揭秘动画制作故事
被动投资的风刮向债市
打破单一视角!融合红外和可见光,YOLO算法实现全天候无人机检测
网站设计任务需求撰写指南:如何清晰表达设计意图
喝了一口变质牛奶怎么办
老年人换膝关节手术:适应症、优势、风险及康复全解析
骨髓穿刺及切片检查详解:从适应症到术后护理

交锋9次拜仁5胜领先,这次国米要改写剧本?
如何理解股票开盘时的涨停现象?这种现象反映了市场的哪些情况?
情感交织:青春之恋与友情纷争,探寻成长轨迹
北极熊生存困境:栖息地变迁与全球气候挑战
欧冠巅峰对决:阿森纳与皇马24亿欧豪门碰撞,19年恩怨再续
AI技术护家园,智慧安防守护新领地
811汇改后人民币汇率变化对经济的影响分析
土壤熏蒸如何影响作物氮代谢?中国农科院最新研究揭示微生物关键作用
曹德旺:从街头小贩到玻璃帝国,37岁累计捐款超80亿
动车直达!探秘“侗乡第一寨”
健康小贴士:维生素B2——守护你日常活力的秘密武器
线上消费遇陷阱,消费者如何维权?
一文读懂:财务管理的五个层级和升级路线
煮饺子为什么要加冷水 - 不加可以吗
如何查询股票市场收盘价以进行投资分析?这些收盘价反映了哪些市场动态?
IEC保护等级I、II和III设备详解:定义、特点及应用场景
杨修之死:智慧与命运的较量
考研补考有记录吗?怎么查?
蔡少芬老公50大寿,3个孩子出镜像爹又像妈,张晋长了好多白头发