交互(通信)标识:2个字节 为此次通信事务处理标识符,一般每次通信之后将被要求加1以区别不同的通信数据报文。
协议标识:2个字节 表示该条指令遵循ModbusTCP协议,一般都为00 00
报文长度:2个字节 表示后面数据的长度,有几个字节,高字节在前
(前六位Modbus/TCP协议不同功能码通用)
设备标识 :1个字节 设备地址,这个可以用于局域网里面的具体的地址,如果目标机器有固定ip,这个就不起作用,直接上写成 00
功能码:1个字节 功能码在modbus协议用于表示信息帧的功能
数据:N个字节 后面数据根据不同功能码不同。
示例报文:
请求:
第9,10位起始地址
第11,12位 查询线圈长度,查询16位线圈
响应:
前四位和7,8位同请求发送的报文
第5,6位是后面报文长度
第9位是后面数据位的长度,
第10位开始是数据位。
01查询线圈,每一个16进制数据表示8位线圈
第10位0A --> 0000 1010 第二位是1,第四位是1
同01
请求:
第1,2位 交互标识
第3,4位 协议标识
第5,6位 后面报文长度 有6位
第7位 设备地址,发送什么,响应什么
第8位 功能码
响应:
前四位()和7,8位()同请求发送的报文
第5,6位 是后面报文长度
第9位 04 是后面数据位的长度
第10-13位 数据位()
同03
请求:
第9,10位 写入线圈的地址
第11,12位 写入的数据值 FF 00 表示置ON/1状态 00 00 表示置OFF/0状态
响应:
请求:
第9,10位 写入的起始地址
第11,12位 写入线圈数量
第13位 数据字节数量
第14位之后是数据 低字节在前
CD 01 —> 1100 1101 0000 0001
请求:
响应:
请求:
响应:
从地址2开始写入两个寄存器,2寄存器写入33,3寄存器写入42
第9,10位 写入的起始地址
第11,12位 写入寄存器的数量
第13位 04 后面数据的字节
第14-17位 数据
响应:
当发生通讯异常时,响应前7位仍然为modbus正常协议格式,第八位响应功能码(请求功能码+0x80),第九位异常码。
- 响应功能码 = 请求功能码 + 0x80
- 响应报文提供异常码显示出错原因。
常见异常码含义:
float 按IEEE-754标准协议存储
C#中浮点数的二进制格式遵循IEEE754标准
IEEE-754格式标准:一个浮点数有2部分组成:底数m和指数e
IEEE-754
以上根据开发时查的资料和网上资料整理一些的有用信息,方便开发查询
到此这篇modbus报文解析0f(modbus报文解析 格式)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/haskellbc/42953.html