当前位置: 首页 > news >正文

带你玩转modbusTCP通信

modbus TCP

Modbus TCP是一种基于TCP/IP协议的Modbus通信协议,它是Modbus协议的一种变体,用于在以太网上进行通信。Modbus TCP协议是一种开放的通信协议,它支持多种编程语言和操作系统,并且可以在不同的硬件和软件平台上进行通信。

Modbus TCP协议使用标准的TCP/IP协议栈,通过以太网进行通信。它支持多个设备同时访问同一个Modbus TCP服务器,从而实现了高效的数据传输。

Modbus TCP协议的数据格式与Modbus RTU协议类似,但是它使用了不同的传输方式。Modbus TCP协议使用了基于TCP的传输方式,因此它可以在局域网或广域网上进行通信,而不需要使用串行通信线路。

Modbus TCP协议可以用于控制和监控各种设备,包括工业自动化设备、机器人、传感器、PLC等。它被广泛应用于工业自动化领域,因为它具有高效、可靠、灵活和易于实现的特点。

modbus TCP通信协议

Modbus TCP协议的数据格式如下:

  1. Modbus TCP帧格式

Modbus TCP帧格式如下:

| 事务标识符 | 协议标识符 | 长度 | 单元标识符 | 功能码 | 数据 |

其中,各字段含义如下:

  • 事务标识符:用于标识请求和响应的对应关系。
  • 协议标识符:固定为0x0000。
  • 长度:指示后续数据的字节数。
  • 单元标识符:用于标识Modbus设备。
  • 功能码:指示请求操作的类型。
  • 数据:请求或响应的数据。

几个主要的域说明:

Modbus TCP的事务标识符用于标识请求和响应的对应关系。它是一个16位的无符号整数,由客户端生成,并在请求和响应中保持不变。在请求中,客户端使用一个新的事务标识符,而在响应中,服务器使用相同的事务标识符,以便客户端可以将响应与请求进行匹配。事务标识符的范围是0到65535。

Modbus TCP的单元标识符用于标识Modbus设备。它是一个8位的无符号整数,通常设置为0xFF,表示广播地址。如果单元标识符不是广播地址,则请求将被发送到指定的设备,并且响应也将返回到该设备。如果单元标识符是广播地址,则请求将被发送到所有设备,并且响应只会返回到请求的客户端。在大多数情况下,单元标识符设置为0xFF。

  1. Modbus TCP功能码

Modbus TCP支持的功能码如下:

功能码描述
0x01读线圈
0x02读离散输入
0x03读保持寄存器
0x04读输入寄存器
0x05写单个线圈
0x06写单个保持寄存器
0x0F写多个线圈
0x10写多个保持寄存器
  1. Modbus TCP数据格式

Modbus TCP数据格式如下:

  • 读线圈、读离散输入、读保持寄存器、读输入寄存器:
字节数描述
2起始地址
2寄存器数量
  • 写单个线圈、写单个保持寄存器:
字节数描述
2寄存器地址
2写入值
  • 写多个线圈、写多个保持寄存器:
字节数描述
2起始地址
2寄存器数量
1字节数
n写入值

其中,n为写入值的字节数。

modbus TCP实例

假设我们有一个Modbus TCP设备,其IP地址为192.168.1.100,端口号为502。我们可以使用一个Modbus TCP客户端来与该设备进行通信。

例如,我们想要读取该设备上寄存器地址为0的16位整数值,我们可以发送以下Modbus TCP请求:

请求报文:
00 01 00 00 00 06 FF 03 00 00 00 01

解释:
00 01 -> 事务标识符,随意指定
00 00 -> 协议标识符,Modbus TCP协议标识符为0x0000
00 06 -> 报文长度,表示后面的报文长度为6个字节
FF -> 单元标识符,广播地址
03 -> 功能码,读取保持寄存器的功能码为0x03
00 00 -> 起始地址,要读取的寄存器地址为0
00 01 -> 寄存器数量,要读取的寄存器数量为1

设备收到请求后,将返回以下响应:

响应报文:
00 01 00 00 00 03 FF 03 02

解释:
00 01 -> 事务标识符,与请求报文相同
00 00 -> 协议标识符,与请求报文相同
00 03 -> 报文长度,表示后面的报文长度为3个字节
FF -> 单元标识符,广播地址
03 -> 功能码,读取保持寄存器的功能码为0x03
02 -> 寄存器值,读取到的16位整数值为2

这就是一个简单的Modbus TCP实例,它演示了如何使用Modbus TCP协议读取一个设备的寄存器值。

为何需要单元标识符?

Modbus TCP是基于TCP/IP协议的应用层协议,它使用TCP协议的端口号来标识Modbus TCP通信。默认情况下,Modbus TCP使用502端口。

虽然Modbus TCP使用端口号来标识通信,但仍然需要使用单元标识符来标识通信的目标设备。这是因为Modbus协议最初是为串行通信设计的,其中每个设备都有一个唯一的地址,称为单元标识符。在Modbus TCP中,单元标识符通常设置为0xFF,表示通信的目标设备是广播地址,但也可以将其设置为特定的设备地址,以单独与该设备通信。

因此,单元标识符在Modbus TCP中仍然具有重要的作用,它可以帮助Modbus TCP客户端识别通信的目标设备,并将请求发送到正确的设备。同时,端口号可以帮助网络路由器将Modbus TCP通信路由到正确的设备。

【最后一个bug】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~
在这里插入图片描述

相关文章:

带你玩转modbusTCP通信

modbus TCP Modbus TCP是一种基于TCP/IP协议的Modbus通信协议,它是Modbus协议的一种变体,用于在以太网上进行通信。Modbus TCP协议是一种开放的通信协议,它支持多种编程语言和操作系统,并且可以在不同的硬件和软件平台上进行通信…...

2021牛客OI赛前集训营-提高组(第三场)T2交替

2021牛客OI赛前集训营-提高组(第三场) 题目大意 一个长度为nnn的数组aaa,每秒都会变成一个长度为n−1n-1n−1的新数组a′aa′,其变化规则如下 如果当前数组aaa的大小nnn为偶数,则对于新数组a′aa′的每一个位置i(1≤…...

论文投稿指南——中文核心期刊推荐(金融)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…...

华为OD机试 - 不等式(C 语言解题)【独家】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:不等式题…...

90后老板用低代码整顿旅行社,创2000万年收,他是怎么做到的?(真实)

热爱旅游的92年成都小伙猴哥,大学毕业后开了一家旅行社,主要从事川藏、云南定制游服务。 从今年春节开始,国内各地旅游业开始复苏,向旅行社打电话咨询的人越来越多。 旅游的人多是好事,也是一种烦恼,因为…...

Apache Dubbo 存在反序列化漏洞(CVE-2023-23638)

漏洞描述 Apache Dubbo 是一款轻量级 Java RPC 框架 该项目受影响版本存在反序列化漏洞,由于Dubbo在序列化时检查不够全面,当攻击者可访问到dubbo服务时,可通过构造恶意请求绕过检查触发反序列化,执行恶意代码 漏洞名称Apache …...

【YOLO】YOLOv8训练自定义数据集(4种方式)

YOLOv8 出来一段时间了,继承了分类、检测、分割,本文主要实现自定义的数据集,使用 YOLOV8 进行检测模型的训练和使用 YOLOv8 此次将所有的配置参数全部解耦到配置文件 default.yaml,不再类似于 YOLOv5,一部分在配置文件…...

linux重置root用户密码

重置root密码 法一:rd.break 第 1 步:重启系统编辑内核参数 第 2 步:找到 linux 这行,在此行末尾空格后输入rd.break (End键也可直接进入行尾) 成功后显示页面为: 第 3 步:查看。…...

【DBC专题】-10-CAN DBC转换C语言代码Demo_接收Rx报文篇

案例背景(共15页精讲): 该篇博文将告诉您,CAN DBC转换C语言代码Demo,只需传递对应CAN信号关联参数,无需每个信号"左移"和"右移",并举例介绍:在CANoe/Canalyzer中CAPL中的应用&#xff…...

AtCoder292 E 思维

题意: 给定一副n(n≤3000)n(n\leq 3000)n(n≤3000)个顶点,mmm条有向边的图,可以在图中添加有向边,求添加的最少边数,使得这副图满足:如果顶点aaa到顶点bbb有边,顶点bbb到ccc右有边,…...

20230309英语学习

What Is Sleep Talking? We Look at the Science 为什么人睡觉会说梦话?来看看科学咋说 Nearly everyone has a story about people talking in their sleep.Though it tends to be more common in children, it can happen at any age:A 2010 study in the jour…...

CAD转换PDF格式怎么弄?教你几种方法轻松搞定!

CAD是从事与艺术创作相关等行业的打工人们必需的工作软件,可以用来完成建筑设计图、设计图纸等。在日常的工作中,一些伙伴经常需要传输图纸给合作方来完成探讨。但是CAD图纸需要使用专业软件才能打开,这就给文件传送带来了一定的困难。而且传…...

AtCoder 259E LCM

题意: 以唯一分解形式给出nnn个数: aipi,1ei,1pi,2ei,2...pi,tei,ta_{i}p_{i,1}^{e_{i,1}}p_{i,2}^{e_{i,2}}...p_{i,t}^{e_{i,t}} ai​pi,1ei,1​​pi,2ei,2​​...pi,tei,t​​ 现在可以将某个数改为111,求所有改法中,有多少个…...

MQTT协议-取消订阅和取消订阅确认

MQTT协议-取消订阅和取消订阅确认 客户端向服务器取消订阅 取消订阅的前提是客户端已经通过CONNECT报文连接上服务器,并且订阅了一个主题 UNSUBSCRIBE—取消订阅 取消订阅的报文同样是由固定报头可变报头有效载荷组成 固定报头由两个字节组成,第一个…...

90后小伙,用低代码“整顿”旅游业,年入2000万,他是怎么做到的?

热爱旅游的92年成都小伙猴哥,大学毕业后开了一家旅行社,主要从事川藏、云南定制游服务。 从今年春节开始,国内各地旅游业开始复苏,向旅行社打电话咨询的人越来越多。 旅游的人多是好事,也是一种烦恼,因为…...

C51---PWM 脉冲宽度调制

1.PWM:脉冲宽度调制,它是通过一系列脉冲宽度进行调制,等效出所需要的波形(包含形状以及幅值)。对模拟信号电平进行数字编码。也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于…...

毕业设计 基于51单片机WIFI智能家居系统设计

基于51单片机WIFI智能家居系统设计1、毕业设计选题原则说明(重点)2、项目资料2.1 系统框架2.2 系统功能3、部分电路设计3.1 STC89C52单片机最小系统电路设计3.2 ESP8266 WIFI电路设计3.3 DHT11温湿度传感器电路设计4、部分代码展示4.1 LCD12864显示字符串…...

Nginx服务优化措施与配置防盗链

目录 一.优化Nginx的相关措施 二.隐藏/查看版本号 三.修改用户与组 四.设置缓存时间 五.日志切割脚本 六.设置连接超时控制连接访问时间 七.开启多进程 八.配置网页压缩 九.配置防盗链 1.配置web源主机(192.168.79.210 www.zhuo.com) 1.1 安装…...

Java 某厂面试题真题合集

哈喽~大家好,这篇来看看Java 某厂面试题真题合集。 🥇个人主页:个人主页​​​​​ 🥈 系列专栏:【日常学习上的分享】 🥉与这篇相关的文章: Spr…...

很特别的5G市场,5.75亿部手机,却有11亿5G用户,这是怎么了?

中国在5G商用方面已取得了巨大的成绩,这是毋庸置疑的,不过近期公布的一份数据却相当特别,5G手机用户数为5.75亿,而开通了5G套餐的用户数却已超过11亿,这数据对比有点意思。中国在5G商用方面推进很快,建成的…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

ios苹果系统,js 滑动屏幕、锚定无效

现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...