Modbus=报文头(MBAP)+帧结构(PDU)

注意:据说RTU和TCP的差距就是效验码,具体我也没有操作,所以这里介绍的只有TCP相关内容。看这个章节的时候最好下载Modbus Slave(服务器)和Modbus Poll(客户端)两个软件测试了解一下Modbus。

其实Modbus TCP就是使用TCP协议传输数据,传输的数据是Modbus格式。

客户端传输数据时是以十六进制发送,每次发送两位;服务器接收数据时也是以十六进制的形式接收,每次接收两位。 如:0X00,两位十六进制数是8位二进制数。

了解以上部分在了解下面的就很容易。以下是正文:

1、MBAP(报文头)

事务标识符 协议标识 长度 单元标识符
2字节 2字节 2字节 1字节
00 00 00 00 00 00 01
  • 事务标识符:可以解释为报文的序列号,由于我们测试使用的Modbus Poll客户端是一直发送数据,所以每发送一次数据标识符就加一。服务器接收时会把这个数据原封返回。
  • 协议表示:00 00代表TCP协议。
  • 长度:表示从单元标识符开始后面数据的长度。如:00 06表示后面有0X06个字节长度的数据。
  • 单元标识符:相当于设备的地址。一般为01。

2、PDU(帧结构)

2.1 PDU=功能码+数据。

功能码 数据
1字节 视功能而定

2.2 功能码:

  • modbus的操作对象有四种:线圈、离散输入、输入寄存器、保持寄存器。

线圈:相当于开关,在MODBUS中可读可写,数据只有00和01。
        离散量:输入位,开关量,在MODBUS中只读。
        输入寄存器:只能从模拟量输入端改变的寄存器,在MODBUS中只读。
        保持寄存器:用于输出模拟量信号的寄存器,在MODBUS中可读可写。

  • 根据对象的不同,modbus的功能码有:

0x01:读线圈
        0x05:写单个线圈
        0x0F:写多个线圈
        0x02:读离散量输入
        0x04:读输入寄存器
        0x03:读保持寄存器
        0x06:写单个保持寄存器
        0x10:写多个保持寄存器

2.3 报文的详细解读

这里只介绍读线圈和保持寄存器内容,以下数据全部位16进制数据。

1、 0x01:读线圈

请求:00 01 00 00 00 06 01 01 00 02 00 04(客户端)

  • 00 01:事务标识符
  • 00 00:Modbus TCP协议
  • 00 06:后面有00 06个字节数据
  • 01:单元标识符
  • 01:功能码(读线圈)
  • 00 02:开始读的数据的地址。从00 02开始读数据。
  • 00 04:注意这里不是读到00 04,而是从开始位置读00 04个数据。

这段报文就是请求读从 00 02 开始的 00 04 个数据。

回应:00 01 00 00 00 04 01 01 01 0E(服务器)

  • 00 01:事务标识符
  • 00 00:Modbus TCP协议
  • 00 04:后面有00 04个字节数据
  • 01:单元标识符
  • 01:功能码
  • 01:后面有01个字节的数据
  • 0E:表示所读地址的线圈全是2的位置是0,其余是1

说明:线圈是只有00和01两种格式,所以图中从2的位置开始读到的4位数据是:1110(二进制),转化为十六进制就是0E。

线圈读取

2、0x03:读保持寄存器

请求:00 01 00 00 00 06 01 03 00 02 00 04(客户端)

  • 00 01:事务标识符
  • 00 00:Modbus TCP协议
  • 00 06:后面有00 06个字节数据
  • 01:单元标识符
  • 03:功能码(读保持寄存器)
  • 00 02:开始读的数据的地址。从00 02开始读数据。
  • 00 04:注意这里不是读到00 04,而是从开始位置读00 04个寄存器数据。

回应:00 01 00 00 00 0B 01 03 08 00 00 00 37 00 00 00 00(服务器)

  • 00 01:事务标识符
  • 00 00:Modbus TCP协议
  • 00 09:后面有00 09个字节数据
  • 01:单元标识符
  • 03:功能码
  • 08:后面有08个字节的数据,后面的数据每两位表示一个寄存器数据。
  • 00 00:第一个寄存器数据
  • 00 37:第二个寄存器数据,图中我写入的数据是55(十进制),这里是十六进制数据
  • 00 00:第三个寄存器数据
  • 00 00:第四个寄存器数据

读保持寄存器

其他寄存器和写数据请参考以下博主:

参考:https://blog.csdn.net/iknow_nothing/article/details/84292914https://blog.csdn.net/iknow_nothing/article/details/84292914

Modbus tcp协议学习总结相关推荐

  1. 工控协议(二):Modbus TCP/IP 学习笔记

    注:本文内容是对以下官方文档的整理小结. Modbus TCP/IP Modbus Application protocol specification Modbus TCP Security Mod ...

  2. C#上位机与台达PLC通信,modbus TCP协议

    C#上位机与台达PLC通信,modbus TCP协议. 1.真实使用项目,该程序框架完整,适合在此基础上开发项目. 2.使用VS2019开发. 3.项目还涉及到halcon视觉检测功能. YID:76 ...

  3. 如何使用python读取modbus/TCP协议数据

    文章目录 前言 一.modbus_tk是什么? 二.modbus_tk的使用步骤 三.使用modscan测试 四.32位无符号短整型数据转为64位float数据 五.总结 前言 在做项目的时候,需要使 ...

  4. 485之modbus通讯协议学习笔记

    485之modbus通讯协议学习笔记 这里主要探讨两个寄存器 03 读保持寄存器 04读输入寄存器 输入寄存器其中的温度值和湿度值分别各占两个字节,一个字节八位使用十六进制00 01表示两个字节的寄存 ...

  5. 力控 串口服务器 虚拟串口,M4系列串口服务器与力控组态软件MODBUS TCP 协议通信--有人物联网.pdf...

    M4系列串口服务器与力控组态软件MODBUS TCP 协议通信--有人物联网.pdf M4 系列串口服务器与力控组态软件MODBUS TCP 协议通信 M4系列串口服务器与力控组态软件MODBUS T ...

  6. Mcgs跟转接小板(用电脑模拟)收发数据(通过Modbus Tcp协议)

    1.Mcgs跟转接小板(用电脑模拟)收发数据(通过Modbus Tcp协议),转化为后台需要的数据格式 2.调试工具:Modbus Poll  , 3. 所有端口配置为同一个,配置好本地和远程ip地址 ...

  7. C# Modbus TCP协议客户端设计工程源码带注释,开源 dll文件,支持访问多个服务器,多线程实现,西门子C# Simens PPI Master

    西门子C# Simens PPI Master C# Modbus TCP协议客户端设计工程源码带注释,开源 dll文件,支持访问多个服务器,多线程实现 renfengli2010

  8. TCP协议学习笔记:

    TCP协议学习笔记: 网络层的IP协议本身是不可靠的,其可靠性需要上层协议(TCP协议)来保证. 文章目录 TCP协议学习笔记: 协议特点 TCP协议头部结构 TCP连接状态与状态转移 TCP三次握手 ...

  9. Modbus和Modbus/TCP协议

    Modbus和Modbus/TCP协议 文章目录 Modbus和Modbus/TCP协议 一. 概述 二. 协议规范 (1) Modbus应用协议 (2)通用Modbus帧结构--协议数据单元(PDU ...

最新文章

  1. 4566: [Haoi2016]找相同字符 SAM
  2. mysql system命令_mysql命令
  3. 【Java】数据结构---二叉树 详解
  4. 条件选择结构:星期计划(switch)
  5. 在 ASP.NET 上实现锁定表头、支持滚动的表格的做法
  6. db2 clob转mysql 的_Java中查询db2的clob列的问题
  7. HTML数字自动排序,jquery – HTML中的数字嵌套排序列表
  8. 在微信小程序上,帮助中心界面实现类似手风琴案例
  9. .NET Core Community 第三个千星项目诞生:爬虫 DotnetSpider
  10. 云从科技宣布B+轮融资,多家国有基金入股,累计获资35亿元
  11. Java并发 stop()、resume()和suspend()
  12. 例3.2 简单计算器 - 九度教程第27题(栈的应用)
  13. 经典CNN图像分类网络汇总
  14. Honeyview 漫画阅读器 v5.30.zip 下载
  15. scsi是工作站和服务器硬盘,高速SAS硬盘与SCSI硬盘技术对比
  16. @Transactional你知道多少?
  17. unity python做热更_Unity热更方案汇总
  18. win7计算机无法连接投影仪,手把手操作win7系统无法连接投影仪的修复教程
  19. 有道云笔记markdown上传本地图片的方法
  20. 2020大二HTML5期末课业

热门文章

  1. 向xlsx表追加写入并插入图片
  2. idea ctrl+shift+数字
  3. 【看论文】之《基于机器视觉的番茄收割机实时分拣系统研究_袁紫薇》
  4. 《向往的生活 》观后感
  5. Spring initializr总是网络连接超时?赶紧来看看解决办法吧
  6. 【matlab】关于遗传算法工具箱GAOT 改成可设置的交叉概率和变异概率
  7. 在colab上加载minst数据集
  8. Ztree 节点不可选
  9. 一款超好看的个人主页HTML源码
  10. html导出excel代码,html页面导出为excel表格(示例代码)