欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > Modbus TCP返回报文

Modbus TCP返回报文

2025/3/31 16:46:47 来源:https://blog.csdn.net/weixin_44417481/article/details/146555414  浏览:    关键词:Modbus TCP返回报文

请求报文

客户端发送的请求报文如下:

字段名称值(十六进制)说明
事务标识符0x0001客户端生成的事务标识符。
协议标识符0x0000固定值。
长度0x0006从单元标识符到报文结束的字节数。
单元标识符0x00固定值。
功能码0x03读取保持寄存器。
起始地址0x0000起始寄存器地址。
寄存器数量0x0002要读取的寄存器数量。

完整的请求报文为:0x0001 0x0000 0x0006 0x00 0x03 0x0000 0x0002

服务器响应报文

假设服务器成功读取了两个寄存器的数据,返回的报文格式如下:

字段名称长度(字节)说明
事务标识符2与请求报文中的事务标识符相同。
协议标识符2固定为0x0000。
长度2表示从单元标识符到报文结束的字节数。
单元标识符1与请求报文中的单元标识符相同。
功能码1与请求报文中的功能码相同。
数据字节计数1返回数据的字节数。
数据可变返回的寄存器数据。

假设读取的两个寄存器的值分别为0xAAAA和0xBBBB,返回的报文如下:

字段名称值(十六进制)说明
事务标识符0x0001与请求报文中的事务标识符相同。
协议标识符0x0000固定值。
长度0x0005从单元标识符到报文结束的字节数(1字节单元标识符 + 1字节功能码 + 1字节数据字节计数 + 4字节数据)。
单元标识符0x00与请求报文中的单元标识符相同。
功能码0x03与请求报文中的功能码相同。
数据字节计数0x04返回数据的字节数(2个寄存器,每个寄存器2字节)。
数据0xAAAA 0xBBBB返回的寄存器数据。

完整的响应报文为:0x0001 0x0000 0x0005 0x00 0x03 0x04 0xAAAA 0xBBBB

解释

  1. 事务标识符(0x0001):与请求报文中的事务标识符相同,用于匹配请求和响应。
  2. 协议标识符(0x0000):固定值,表示使用的是Modbus TCP协议。
  3. 长度(0x0005):从单元标识符到报文结束的字节数,包括单元标识符(1字节)、功能码(1字节)、数据字节计数(1字节)和数据(4字节)。
  4. 单元标识符(0x00):与请求报文中的单元标识符相同。
  5. 功能码(0x03):与请求报文中的功能码相同,表示读取保持寄存器。
  6. 数据字节计数(0x04):返回数据的字节数,表示返回了4个字节的数据(2个寄存器,每个寄存器2字节)。
  7. 数据(0xAAAA 0xBBBB):返回的寄存器数据,表示两个寄存器的值分别为0xAAAA和0xBBBB。

错误响应

如果服务器无法完成请求,例如寄存器地址无效或设备故障,服务器会返回一个错误响应报文。错误响应报文的格式如下:

字段名称长度(字节)说明
事务标识符2与请求报文中的事务标识符相同。
协议标识符2固定为0x0000。
长度2表示从单元标识符到报文结束的字节数。
单元标识符1与请求报文中的单元标识符相同。
功能码1请求的功能码的最高位设置为1,表示错误。
错误码1表示具体的错误类型。

假设请求的功能码为0x03,但服务器无法完成请求,返回的错误响应报文如下:

字段名称值(十六进制)说明
事务标识符0x0001与请求报文中的事务标识符相同。
协议标识符0x0000固定值。
长度0x0003从单元标识符到报文结束的字节数(1字节单元标识符 + 1字节功能码 + 1字节错误码)。
单元标识符0x00与请求报文中的单元标识符相同。
功能码0x83请求的功能码的最高位设置为1,表示错误。
错误码0x02表示具体的错误类型,例如0x02表示非法数据地址。

完整的错误响应报文为:0x0001 0x0000 0x0003 0x00 0x83 0x02

总结

  • 正常响应:返回请求的数据,包含事务标识符、协议标识符、长度、单元标识符、功能码、数据字节计数和数据。
  • 错误响应:返回错误信息,包含事务标识符、协议标识符、长度、单元标识符、功能码(最高位为1)和错误码。

通过这些报文格式,客户端可以清楚地了解服务器的响应情况。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com