modbus TCP协议讲解及实操
具体讲解
- 前言
- 正文
- 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实现一套完成的主机客户端。
相关文章:
modbus TCP协议讲解及实操
具体讲解 前言正文modbus tcp主机请求数据基本讲解Modbus Poll工具简单使用讲解 modbus tcp从机响应数据Modbus Slave工具简单使用讲解 前言 关于modbus tcp从0到1的讲解,案例结合讲解,详细了解整个modbus的可以参考这个:详解Modbus通信协议…...
既有内销又有外贸,多样性外贸业务管理解决方案
随着外贸数字化贸易全球化的深入发展,出口、进口、内销业务越来越受到关注。外贸业务是企业在海外市场进行商品贸易,而内销业务是企业在国内市场进行商品贸易。在管理这种业务时,想要实现降本增效,企业需要有一套成熟的管理解决方…...
spring eurake中使用IP注册
在开发spring cloud的时候遇到一个很奇葩的问题,就是服务向spring eureka中注册实例的时候使用的是机器名,然后出现localhost、xxx.xx等这样的内容,如下图: eureka.instance.perferIpAddresstrue 我不知道这朋友用的什么spring c…...
c# 从零到精通 form界面之listView控件
c# c# 从零到精通 form界面之listView控件 添加值 设置值 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Test06 { public partial cla…...
Qt6.5.1+WebRTC学习笔记(十二)环境搭建流媒体服务器(ubuntu22.04+SRS)
前言 若只是实现一对一通信,仅使用webrtc就足够了。但有时间需要进行多个人的直播会议,当人比较多时,建议使用一个流媒体服务器,笔者使用的是SRS。 这个开源项目资料比较全,笔者仅在此记录下搭建过程 一、准备 1.操…...
LeetCode 9. 回文数
LeetCode 9. 回文数 一、题目描述: 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数…...
Linux系统之部署Teleport堡垒机系统
Linux系统之部署Teleport堡垒机系统 一、Teleport介绍1.1 Teleport简介1.2 Teleport特点1.3 支持操作系统 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、部署teleport服务端4.1 创建部署目录4.2 下载t…...
【二叉树part02】| 102.二叉树的层序遍历、226.翻转二叉树、101.对称二叉树
目录 ✿LeetCode102.二叉树的层序遍历❀ ✿LeetCode226.翻转二叉树❀ ✿LeetCode101.对称二叉树❀ ✿LeetCode102.二叉树的层序遍历❀ 链接:102.二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地ÿ…...
【干货】Android系统定制基础篇:第十五部分(Android支持鼠标右键返回、GPIO 控制方案、属性标识USB摄像头的VID与PID)
1、修改 frameworks/native/services/inputflinger/InputReader.cpp 如下: diff --git a/frameworks/native/services/inputflinger/InputReader.cpp b/frameworks/native/services/inputflinger/Inp index 7207a83..2721800 100755 --- a/frameworks/native/servi…...
ubuntu18 修改dns服务器地址为google
域名解析被干扰的有点严重,直接使用谷歌dns服务器来解析ip 第一、永久修改DNS方法 1、修改 /etc/systemd/resolved.conf 文件 vi /etc/systemd/resolved.conf这里我们可以看到这些参数: # 指定 DNS 服务器,以空白分隔,支持 IP…...
RHCE shell 作业一
1. 设置邮箱 [rootserver ~]# yum install s-nail -y [rootserver ~]# vim /etc/s-nail.rc 编写脚本 [rootserver ~]# vim homework1.sh 设置定时任务 [rootserver ~]# vim /etc/crontab 2. [rootserver ~]# vim homework2.sh 测试: 3. [rootserve…...
Qqis中采用栅格工具生成XYZ瓦片(目录)简介
目录 前言 一、Qgis的相关功能 1、数据准备 2、将两个xyz图源添加到图层 二、Qgis栅格工具生成 1、生成xyz图块工具在哪里 2、生成xyz图块怎么用 3、下载结果 4、Leaflet加载离线瓦块 总结 前言 在上一篇博客中,介绍了一种在Qgis中基于QMetaTiles插件进行xyz瓦…...
【Axure教程】根据标签数自动调整尺寸的多选下拉列表
多选下拉列表常用于需要用户从一组选项中选择多个选项的情况。它提供了一个下拉菜单,用户可以点击展开并选择他们感兴趣的多个选项。多选下拉列表可以用于展示可选标签,并允许用户选择多个标签。例如,在一个博客发布界面上,可以…...
【python】js逆向基础案例——有道翻译
前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 课程亮点: 1、爬虫的基本流程 2、反爬的基本原理 3、nodejs的使用 4、抠代码基本思路 环境介绍: python 3.8 pycharm 2022专业版 >>> 免费使用教程文末名片获取 requests >>> pip install req…...
面经系列.飞猪 Java开发工程师.杭州.2023.6.14一面面经
本人是2023年6月14日面试的,面试的岗位是飞猪的Java研发工程师,地点是杭州,面试时长37分钟,没有问八股文。全都围绕项目在问,在提问的过程中会涉及到原理以及具体操作。整体面试感觉下来,面试官很随和,通过面试也能和面试官学到很多,交流了对未来行业的看法,也对某些技…...
基于物联网及云平台的光伏运维系统
系统结构 在光伏变电站安装逆变器、以及多功能电力计量仪表,通过网关将采集的数据上传至服务器,并将数据进行集中存储管理。用户可以通过PC访问平台,及时获取分布式光伏电站的运行情况以及各逆变器运行状况。平台整体结构如图所示。 光伏背景…...
Android kotlin 实现仿京东多个item向左自动排队(横向、动手滑动、没有首尾滑动)功能
文章目录 一、实现效果二、引入依赖三、源码实现1、适配器2、视图实现一、实现效果 二、引入依赖 在app的build.gradle在添加以下代码 1、implementation com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.6,这个里面带的适配器,直接调用就即可 BaseRecyclerViewAdapt…...
美团买菜基于 Flink 的实时数仓建设
美团买菜基于 Flink 的实时数仓建设 1. 背景介绍2. 技术愿景和架构设计3. 典型场景、挑战与应对3.1 动态 ETA 实时特征3.2 实时数据经营分析 4. 未来规划 1. 背景介绍 美团买菜是美团自营生鲜零售平台,上面所有的商品都由美团亲自采购,并通过供应链物流体…...
前端vue入门(纯代码)08
【08.webStorage--本地存储】 (1). 什么是 localStorage 和 sessionStorage ? 它们都是浏览器的一种本地存储数据的方式它们只是存在本地,即浏览器中,不会发送到服务器 它们的区别: localStorage:永久存在浏览器中…...
Xubuntu22.04之便签工具(一百八十)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
Unity入门4——重要组件与API
一、GameObject (一)成员变量 // 名字 print(this.gameObject.name); this.gameObject.name "Lesson4唐老狮改名"; print(this.gameOb…...
NFS服务器安装及NFS制备程序安装
NFS服务器安装及NFS制备程序安装 NFS服务器安装 NFS是一种分布式文件系统协议,由sun公司开发,旨在允许客户端主机可以像访问本地存储一样通过网络访问服务端文件 安装NFS服务器 登录需要安装NFS服务器的主机执行以下命令完成NFS安装 yum -y install…...
matlab+yalmip+cplex求解车辆路径优化问题(VRP)--matlab中yalmip函数介绍
YALMIP是一个MATLAB工具箱,用于建模和求解优化问题。它支持线性规划、二次规划、整数规划、鲁棒优化、半定规划等优化问题的建模和求解。下面是一些常用的函数的详细介绍: 1. sdpvar:用于定义优化问题中的变量。可以定义实数、向量和矩阵型变…...
实战:用dockerfile创建镜像实现springboot项目容器化
文章目录 前言技术积累docker基本操作命令dockerfile简介dockerfile指令说明 实战演示创建dockerfile创建挂载目录构建dockerfile启动容器完成验证 写在最后 前言 docker容器化方案是当下流行的服务部署方式,在软件领域举足轻重。我公司的测试、线上环境都采用dock…...
【Flask】配置项解析与加载
文章目录 默认配置表配置项加载方式直接配置存放在app.config字典通过.py配置文件通过class类加载对象通过.json配置文件通过环境变量配置内置命令行 默认配置表 配置项默认值备注DEBUGFalse是否开启 Debug 模式。如果为True,修改了代码,只需要保存&…...
Dinky: 实时即未来,让 Flink SQL 纵享丝滑--如何本地编译、运行
什么是Dinky 实时即未来,Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑。 Dinky 是一个开箱即用、易扩展,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架的一站式实时计算平台,致力于流批一体和湖仓一体的探索与实践。 最后,Dinky 的发展皆归功于 Apache …...
2023 Nature 健康系统规模的语言模型是通用预测引擎
文章目录 一、论文关键信息二、论文主要内容三、总结与讨论🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、论文关键信息 论文标题:Health system-scale language models are all-purpose prediction engines 期刊信息:2023 Nature 论文地址:h...
《2023 年 React 生态》
大家好,我是 Chocolate。 前不久看到一篇不错的内容,来自于 The React Ecosystem in 2023,也结合自己今年使用的 React 生态总结一下。 本文并非视频演讲稿,和视频内容还是有一点点区别,视频内容相对来说会更加详细一…...
武职302303笔记-day01
这里写自定义目录标题 开发永和小票开发步骤1、对页面进行需求分析 使用CSS的方式 Order.html问题:html代码和css样式代码交织 idea开发后端程序使用chatGPT给我们打工QRCreate.java 开发永和小票 开发步骤 1、对页面进行需求分析 页面是很多文字组成,…...
Python面试高频100题【11~15题】
Python面试必知100例。收集整理了目前Python岗位常见的面试题,希望大家通过学习理解相关知识点。下面介绍的是11~15道题。 十一、请介绍下Python中单下划线与双下划线区别 在Python中,单下划线和双下划线主要用于命名变量和方法,而它们具有不…...
做网站需要什么认证/只要做好关键词优化
专栏 | 九章算法网址 | http://www.jiuzhang.com问1动态规划是个什么鸟蛋?答:动态规划是一种通过“大而化小”的思路解决问题的算法。区别于一些固定形式的算法,如二分法,宽度优先搜索法,动态规划没有实际的步骤来规定…...
武汉小程序开发制作/站长工具seo综合查询工具
场景: 我们现在有一个树状结构的数据,如下图: 大概的数据结构如下: const tree {value: 根节点,children: [{value: 学校,children: [{value: 学生,children: [{value: 年龄,children: [{value: 身高}]}]}......]}]}现在我们要…...
网站二级域名怎么设置/怎么做一个免费的网站
[错误信息]程序安装成功,在run的过程中出错,提示错误信息如下:runRunning…putpkt: write failed: Broken pipeputpkt: write failed: Broken pipeThe program being debugged is not being run.The program being debugged is not being run.Ignoring packet error, continuin…...
嘉兴做网站的/腾讯广告联盟官网
秋招过后,根据学习群里很多小伙伴的反馈,发现在Java后端面试中,Redis是所有框架/中间件中被问到频率最高的。但是由于本身不熟悉Redis,再加上大厂的面试题也确实是很难,有些还偏重实战,大家又没有经验&…...
asp.net做网站源代码/站长统计app官方网站
来源:fhods Blog作者:fhod 小财说明:文章已发表于***手册07年10期,转载请注明出处!对明小子QQ密码特工软件的分析 ----小财今天无聊给一朋友讲解QQ盗取原理,从网上找了一个工具 “明小子QQ密码特工”结果发…...
wordpress 同步phpcms/广告软文营销平台
文章目录一 HBase优化1 预分区(1)手动设定预分区(2)生成16进制序列预分区(3) 按照文件中设置的规定预分区(4)使用JavaAPI创建预分区2 RowKey设计3 内存优化4 基础优化二 整合Phoenix…...