modbus TCP协议讲解及实操

news2024/9/28 9:27:30

具体讲解

  • 前言
  • 正文
  • modbus tcp主机请求数据
    • 基本讲解
    • Modbus Poll工具简单使用讲解
  • modbus tcp从机响应数据
    • Modbus Slave工具简单使用讲解

前言

关于modbus tcp从0到1的讲解,案例结合讲解,详细了解整个modbus的可以参考这个:详解Modbus通信协议。

正文

首先说明一下一个概念,所谓的传输协议,不管是mqtt也好还是modbus也罢,实际上传递的基本都是16进制的字节数组,不同的是每个协议,每个字节,每个字节对应的每一位具有不同的含义,所以,想了解一种协议,就要明白它的字节含义即可,切勿急躁。

言归正传,Modbus就是一个总线通信协议,说白了就是一条线上挂了很多个设备和一个主设备。
在这里插入图片描述

通信的规则是:从机不能主动给主机发送消息,只能主机给从机发消息,从机回应,无论是你想查看某一个从机的数据,还是修改某个从机的数据,都需要通过主机先发送一个消息给从机,然后从机根据主机发过来的数据指令,去做对应的操作,最后将结果回应给主机。

注重说一下,在tcp通信中,主机充当的是客户端的角色,从机充当的是服务端的角色,所有从机用的端口都一样,不同从机用id地址区分(也就是从机号)

modbus tcp主机请求数据

基本讲解

我们说一下主机请求从机需要发送的基本数据
在这里插入图片描述

针对性的讲一下每个参数,先有个映像,后边还会举例说明:

  • 事物标识符:
    就是一个递增的数字,每次发送消息递增一下即可,尽量不重复,因为占用2个字节,所以范围是:0~65535

  • 协议标识符
    这个默认给固定值0,表示modbus协议

  • 长度
    等于协议标识符的长度2+协议数据单元PDU的长度(不固定)

  • 单元标识符
    这个就是从机地址,就是slave id

  • 功能码
    Modbus规定了多个功能,那么为了方便的使用这些功能,我们给每个功能都设定一个功能码,就是上边说的,你要对从机做什么操作,那么就在这里设定好,从机读取到这个数据就知道要做什么啦。
    在这里插入图片描述

  • 数据
    数据对于主机来说就是想要操作从机寄存器里的哪些数据,什么是寄存器?就是从机用来存数据的地方,讲从机的时候具体再将。
    讲完了基本概念,咱们来实操一下,在这之前,咱们需要用到两个工具(Modbus Poll 和 Modbus Slave)

Modbus Poll工具简单使用讲解

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
明白这些就可以啦。
现在我们来连接上1号从机。
在这里插入图片描述
连接之后会发现收到了从机的数据了,并且在界面上显示了出来,这里提前给看一下从机的页面(注意不一个软件哈)。
在这里插入图片描述
从图上就知道了,确实,我们收到了从机的数据 ,好,那么我们接下来深入看一下主机到底给从机发送了什么数据?
在这里插入图片描述
006-01 03 00 00 00 06 01 03 00 00 00 0A
其中,因为软件显示的原因,006-01 03这其实就是事物标识符的两个字节,那么来实际看一下,数据到底是不是我们上边讲的?
在这里插入图片描述

006-01 03【事物标识符】00 00【协议标识符】 00 06【长度】01【单元标识符】 03【功能码】 00 00 00 0A【数据】

  • 算一下吧,长度=单元标识符1+PDU(功能码+)5=6;
  • 功能码03代表查询数据,单元标识符01代表从机id号,所有都对应上了,没问题;
    在这里插入图片描述
  • 再看下发送的数据:
    在这里插入图片描述
    其中 00 00代表要查询的寄存器起始位,00 0A(十进制就是10)代表要查询从起始位往后10位,对应工具设置的这里.
    在这里插入图片描述
    当然你也可以把起始位置和查询数量的参数改一下,再去跟发送的内容对比一下,是同步的,另外,显示界面也会变化的,可以多尝试一下。

modbus tcp从机响应数据

参考主机发送数据,一样的道理,毕竟用的都是modbus tcp协议。
在这里插入图片描述
这里就直接实操讲解

Modbus Slave工具简单使用讲解

在这里插入图片描述
这里说明一下,工具上显示的寄存器只有0-9位,但是不代表实际中就只有10位哈。

在这里插入图片描述
从上边的讲解中可以看出,寄存器是分区的,范围一般是0~49999,工具为了模拟,所以只做了10位。
在这里插入图片描述
在这里插入图片描述
好了,这两步知道就可以了!
当我们启动这边,主机那边才能连接上,并且发送数据,主机连接上之后,看下发送的数据和收到的数据吧。

在这里插入图片描述
031-08 13 00 00 00 17 01 03 14 03 E8 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

为了方便讲解,把响应的数据拆成两部分讲解:
031-08 13 00 00 00 17 01
这部分代表报文头,其他参数都没疑问,就是这个17变化了,十六进制的17转化成十进制是23。
这就对了,23=1(单元标识符)+22(下边的PDU)。

03 14 03 E8 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
PDU的变化相对于主机发送的数据来说变长了,那么我们来解释一下:
03:代表功能码(主机那边传递过来的,原封不动返回去)。
14:代表的是数据长度,转换成十进制正好是20,从数据可以看出从14往后数,正好有20位。
03 E8:代表寄存器0号位置的数值,转换成十进制就是1000。
00 0C:代表寄存器1好位置的数据,转换成十进制就是12。
后边的就不一一讲解了吧,都是每个位置对应的值。

再对比下前边的图
在这里插入图片描述
不难理解了吧。

ok,讲解完毕,后边会整合springboot、netty实现一套完成的主机客户端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671292.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【吃透网络安全】2023软考网络管理员考点网络安全(一)安全基础篇

涉及知识点 软考网络管理员,软考网络管理员常考知识点,软考网络管理员网络安全,网络管理员考点汇总。 后面还有更多续篇希望大家能给个赞哈,这边提供个快捷入口! 第一节 网络管理员考点网络安全(1&#…

【广州华锐互动】钢厂轧钢事故3D虚拟体验还原真实事故场景

由于钢厂生产过程中涉及到高温、高压、高负荷等危险因素,一旦出现操作不当、设备故障等问题,就可能导致严重的事故。因此,对于钢厂员工来说,接受事故教育、了解安全知识非常重要,可以提高他们的安全意识,避…

大数据行业对学历要求高么

《2020中国大数据产业发展白皮书》显示,2019年中国大数据产业规模达5397亿元,同比增长23.1%,随后稳定增长,预计到2022年将突破万亿元。 根据LinkedIn、赛迪智库、拉勾网等机构的统计结果,大数据时代下的数据人才总体缺…

【软考程序员学习笔记】——程序设计语言

目录 🍊一、常见的程序设计语言 🍊二、程序设计语言组成 🍊三、后缀表达式 🍊四、传值调用和传址调用 🍊五、语言处理程序 🍊六、解释程序 🍊七、链接程序 🍊八、编译程序 &…

国产替代FT232RL-USB到UART桥接控制器 GP232RNL

GP232RNL是一款高度集成的USB到UART桥接控制器,提供了一种简单的解决方案,可以使用最少的元器件和PCB空间,将RS232接口转换为USB接口。GP232RNL包括一个USB 2.0全速功能控制器、USB收发器、振荡器、EEPROM和带有完整的调制解调器控制信号的异…

Java GUI开发的几个小工具:apk/aab签名,验证签名,aab转apk

平时经常给apk/aab签名,验证签名,aab转apk等操作,每次输入命令行十分繁琐。于是利用JAVA GUI简单开发了几个jar包界面化工具,提供给大家一起使用。 工具功能JarSignerTool.jar为apk/aab签名ApkSignerTool.jar为apk签名AppSignVer…

Cloud Studio 浏览器插件来啦

当谈到Cloud Studio浏览器插件的优势时,最显著的就是它的便捷性。通过安装Cloud Studio浏览器插件,用户可以在浏览器中直接打开Cloud Studio的开发环境,无需切换到其他应用程序,从而提高了开发效率。 另一个优势是插件对于Github…

Logstash入门简介

目录 Logstash简介介绍用途部署安装测试配置详解输入过滤输出 读取自定义日志日志结构编写配置文件输出到Elasticsearch Logstash简介 介绍 Logstash是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到…

了解一下EPC模式和它的优势

目录 什么是EPCEPC的优势有哪些?BT、BOT、EPC分别是什么模式?总结 什么是EPC EPC是Engineering(工程):代表设计、采购和施工总承包。Procurement(采购):代表采购和物资管理。Constru…

Stable Diffusion提示词总结

提示词基本语法 一、提示词类别 1、内容型提示词 人物及主体特征 服饰穿搭 white dress 发型发色 blonde hair,long hair 五官特征 small eye,big mouth 面部表情 smiling 肢体动作 stretching arms beautiful detailed eyes 美丽细致的眼睛 highl…

数字化如何推动快消品企业实现营销变革

近几年,不确定性在各行各业上演。尤其伴随新一代信息技术的快速发展,消费者的需求和购买渠道也在不断变化。这就要求企业需要通过对消费者潜在需求进行更加深度的挖掘,为消费者提供“更佳的体验”,从而释放消费能力。 在这样的大背…

HTTP协议中的GET和POST接口测试的区别

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言HTTP协议基础GET请…

CVPR2023中的数据集工作(共46篇)

本文搜集了CVPR2023中所有的以数据集发布为主的工作,共搜集到46篇。所有标题都附带文章超链接,请君享用~ An Image Quality Assessment Dataset for PortraitsLOGO: A Long-Form Video Dataset for Group Action Quality AssessmentTowards …

C++学习 数据类型

数据类型存在的意义: 给变量分配合适的内存空间,避免资源浪费。 整型: 整型变量表示的是整数类型的数据 long类型 在 windows 中4字节 linux 中 32位4字节 64位8字节,占用空间的不同,可以表示的取值范围就越广&…

hello TypeScript

在上一章节中我们介绍了typescript的产生背景,和使用typescript开发需要环境和工具,这一节我们就来感受一下typescript吧 一、第一个typescript程序,‘hello ts’ 1. 安装TypeScript编译器 在开始编译TypeScript文件之前,需要先…

LeetCode算法题---两数相加(二)

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 …

Python嵌套列表处理「有问必答系列1」

1. 提问🙋 teacher,如果想把列表里的子列表,拆出来,让他们变成一个列表,可以用什么[可怜] 解答 如果你有一个列表包含子列表,你可以使用Python的extend()函数或列表推导式来实现。下面是两种方法的例子&a…

Dart 3.0 语法新特性 | switch 匹配加强

theme: cyanosis 一、 重新审视 switch 关键字 众所周知, switch 关键字用于流程控制: 可以基于一个对象进行匹配,并通过 case 关键字产生分支语句,进行不同的逻辑处理。其中有一个非常值得注意,使用者很容易忽略的一点…

Jetpack Compose —— ProgressBar

Jetpack Compose的ProgressBar是一种用户界面组件,用于向用户展示长时间操作的当前进度。ProgressBar可以有两种形式:线性和环形,这两种形式都可以通过Jetpack Compose轻松实现。 注意:从Jetpack Compose 1.0版本开始&#xff0c…

ChatGPT使用的SSE技术是什么?

在现代web应用程序中,实时通信变得越来越重要。HTTP协议的传统请求/响应模式总是需要定期进行轮询以获得最新的数据,这种方式效率低下并且浪费资源。因此,出现了一些新的通信技术,如WebSocket和SSE。但是,GPT为什么选择…