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

Modbus RTU和Modbus TCP的区别 深入篇

目录

1 传输方式不同

2 硬件接口不同

3 校验码不同

4 指令内容不同

4.1 Modbus RTU

4.1.1 功能码为03,表示读寄存器

4.1.2 功能码为10,表示写多个寄存器

4.2 Modbus TCP

4.2.1 功能码为03,表示读寄存器

4.2.2 回复异常报文

 5 传输速度不同

6 补充说明

7 术语解读


 

1 传输方式不同

RTU协议需要将控制器设置成RTU模式,用二进制数据的传输方式就可以直接传送数据。
遵循3.5T时间间隔。集体可以查看modbus rtu通讯-T1.5以及T3.5时间间隔。
TCP协议在以太网的物理层上工作,是传输层第四层的协议,它先将每字节进行二进制传输再转换为十六进制的两个字节,依次这样操作将转换好的字节串联在一起。

2 硬件接口不同

RTU协议使用的是233、422、485的串行接口(serial port)。
串行接口整个操作过程比较方便,通过两个引脚就可以通迅,这两个引脚分别为Rx和Tx,它们的用途是用来传送和接收数据。
串行接口默认的波特率为9600、奇偶校验为否、数据位为8、 停止位为1。
从表现形式和结构来看,RTU协议的使用度比TCP协议更广泛。
TCP协议使用的是以太网接口,能直接连接网络,连接后它可以自行与其他的网络设备联系并确定一种目前最简便的工作方式。
以太网接口的工作模式分为全双工模式和半双工模式。
以太网接口根据类型可以分为传统接口和快速接口,具体有SC光纤的接口、RJ45的接口、AUI的接口、FDDI的接口、BNC的接口和Console的接口。

3 校验码不同

RTU协议中为了检验整个数据的内容要用到16位的CRC校验,这个校验分别计算传输端的和接收端的帧内容,两个CRC值比较出来是相符合的就接收数据,若不相符就拒收这个数据并报告到上级设备。
TCP协议在连接时有着“确认对方信息”、“排序数据”、“控制数据流量”、“避免阻塞”的四个步骤,这样的连接协议相对来说会比较可靠,所以不需要再用额外的校验码去检验数据的帧内容。

4 指令内容不同


RTU协议的指令内容有五个字节,分别为从站地址、功能码、数据起始地址、数据数量量和CRC检验。
例如01、03、00 00、00 02、C4 0B。
TCP协议的指令内容在RTU指令内容的基础上增加了一个MBAP报文头,删除了CRC校验。
例如00 00 00 00 00 06 ff 03 00 00 00 02,其中00 00 00 00 00 06 ff七个字节为MBAP报文头。

详细介绍如下

4.1 Modbus RTU

简介:RTU协议中的指令由地址码(1字节),功能码(1字节),起始地址(2字节),数据(N个字节),校验码(2字节)五个部分组成

4.1.1 功能码为03,表示读寄存器

1、发送指令:01 03 76 83 00 0C AE 6F
解析:
01为从机地址(地址码),
03 为功能码(03表示:读),
76 83 为寄存器地址[起始地址][真实的寄存器地址-1],
00 0C 为读取寄存器的个数,
AE 6F 为CRC校验。

2、接收指令:01 03 18 00 55 00 AA FF FF FF FF 01 2D FF FF FF FF FF FF 00 55 FF FF FF FF FF FF BA 58
解析:
01 为从机地址(地址码),
03 为功能码,
18 为数据长度[表示24(转换为十进制)],24个字节的数据正文(即12个寄存器,每个寄存器占两个字节),
00 55 00 AA FF FF FF FF 01 2D FF FF FF FF FF FF 00 55 FF FF FF FF FF FF 为每个寄存器数据,
BA 58 为校验码。

4.1.2 功能码为10,表示写多个寄存器

1、发送指令:01 10 8C BD 00 08 10 53 47 39 4B 54 4C 2D 4D 00 00 00 00 00 00 00 00 39 2F
解析:
01 为从机地址(地址码),
10 为功能码(10表示:写),
8C BD 为寄存器地址[起始地址],
00 08 为写入寄存器的个数,
10 为数据长度,表示数据长度为16个字节,数据长度是寄存器个数的2倍,
53 47 39 4B 54 4C 2D 4D 00 00 00 00 00 00 00 00 为写入寄存器的数据[16个字节],
39 2F 为校验码

2、接收指令:01 10 8C BD 00 08 7B 7B FF FF FF FF FF FF FF FF
解析:
01 为从机地址,
10 为功能码,
8C BD 为寄存器地址,
00 08 为数据长度,
7B 7B FF FF FF FF FF FF 为寄存器数据,
FF FF 为校验


4.2 Modbus TCP

简介:Modbus TCP协议是在RTU协议前面添加MBAP报文头,由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码

4.2.1 功能码为03,表示读寄存器

1、发送指令:68 68 00 00 00 06 01 03 33 65 00 04
解析:
68 68 为报文序列号,
00 00 为协议标识(00 00表示ModbusTCP协议),
00 06 为后续字节数(数据长度,单位为字节),
01 为从机地址,
03 为功能码,
33 65 为寄存器地址[起始地址],
00 04 为寄存器个数。

2、接收指令:68 68 00 00 00 0B 01 03 08 00 01 00 AA 00 00 00 AA
解析:
68 68 为报文序列号,
00 00 为协议标识,
00 0B 为后续字节数,
01 为从机地址,
03 为功能码,
08 为数据长度,
00 01 00 AA 00 00 00 AA 为寄存器数据

4.2.2 回复异常报文

68 68 00 00 00 03 F7 90 02


解析:
68 68 为报文序列号,
00 00 为协议标识,
00 03 为后续字节数,
F7 为从机地址,
90 为功能码,
02 为异常码

 5 传输速度不同

使用RTU协议因使用的是232、422、485这样的串行接口,因此在传输速度上会比较慢,
使用TCP协议时的传输速度较快,如果想要更快的速度可以连接PLC总线的方式去扩展以太网模块的范围,但对于许多设备来说并不需要这么快的速度,速度过快,设备向上级设备报告数据的次数就会变多间接增加了设备的工作量。

6 补充说明

Modbus 协议是一种应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型,协议本身并没有定义物理层,只是定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。
Modbus 协议使用串口传输时可以选择RTU或ASCII模式,并规定了消息、数据结构、命令和应答方式并需要对数据进行校验。ASCII 模式采用LRC校验,RTU模式采用16 位CRC校验。通过以太网传输时使用TCP,这种模式不使用校验,因为TCP协议是一个面向连接的可靠协议。

7 术语解读

校验码:校验码通常是一组数字的最后一位,由前面的数字通过某种运算得出,用以检验该组数据的正确性。代码作为数据在向计算机或其它设备进行输入时,容易产生输入错误,为了减少这种输入错误,编码专家发明了各种校验检错方法,并依据这些方法设置了校验码。常用的校验有:累加和校验SUM、字节异或校验XOR、纵向冗余校验LRC、循环冗余校验CRC。

相关文章:

Modbus RTU和Modbus TCP的区别 深入篇

目录 1 传输方式不同 2 硬件接口不同 3 校验码不同 4 指令内容不同 4.1 Modbus RTU 4.1.1 功能码为03,表示读寄存器 4.1.2 功能码为10,表示写多个寄存器 4.2 Modbus TCP 4.2.1 功能码为03,表示读寄存器 4.2.2 回复异常报文 5 传输速…...

【大数据】Doris 的集群规划和环境准备

Doris 的集群规划和环境准备 1.1 环境要求1.1 Linux 操作系统版本需求1.2 软件需求 1.2 硬件要求1.3 节点规划1.4 通信端口1.5 IP 地址绑定 Doris 作为一款开源的 MPP 架构 OLAP 数据库,能够运行在绝大多数主流的商用服务器上。为了能够充分运用 MPP 架构的并发优势…...

connect: Network is unreachable问题解决

第一步:查看ifcfg-ens33配置文件 cd /etc/sysconfig/network-scripts/ cat ifcfg-ens33 发现问题:GATEWAY写错成GATWAY 第二步:修改 vim ifcfg-ens33 第三步:检测是否成功 ping baidu.com 成功!...

三层交换与DHCP

目录 一、三层交换 (一)基本概念 (二)转发原理 (三)ensp项目实验 二、DHCP (一)DHCP工作原理 1.DHCP的特点 2.工作原理 (二)DHCP项目实验 一、三层交…...

02markdown-学习笔记

一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 换行符<br>标签 写入一段测试用的正文第二段测试文本,如果要对文本进行换行可以使用<br>标签 文本修饰符 字体为斜体的修饰&#xff0c;一对星号包含 字符为粗体&#xff0c;两对星号包含 字体为…...

UE5 动画 Sequencer-学习笔记

P2. 课程介绍 资料&#xff1a;https://www.bilibili.com/video/BV1Ag411873f?p2&vd_source707ec8983cc32e6e065d5496a7f79ee6 Sequencer不仅可以做互动动画&#xff0c;还可以导出视频与序列帧 P3-4. 界面介绍 https://www.bilibili.com/video/BV1Ag411873f?p3&spm_…...

visual studio code 好用的插件

vscode-icons Better comments 该插件对不同类型的注释会附加了不同的颜色&#xff0c;更加方便区分&#xff0c;帮助我们在代码中创建更人性化的注释。 Error Lens Error Lens插件是一款可以检测你编写的代码的语法错误&#xff0c;并且会显示出对语法错误的诊断信息…...

Redis 过期删除策略、内存回收策略、单线程理解

不知从何开始Redis的内存淘汰策略也开始被人问及&#xff0c;卷&#xff01;真的是太卷了。难不成要我们去阅读Redis源码吗&#xff0c;其实问题的答案&#xff0c;在Redis中的配置文件中全有&#xff0c;不需要你阅读源码、这个东西就是个老八股&#xff0c;估计问这个东西是想…...

oracle 如何把数据库 date 日期格式 的数据 改成 2021-01-27

如果您要将日期"27-12月-29"更改为"2021-01-27"格式&#xff0c;您可以使用Oracle的日期格式化函数和字符串替换函数来实现。 以下是一个示例SQL语句&#xff0c;将日期"27-12月-29"更改为"2021-01-27"格式&#xff1a; sql UPDATE…...

Git 使用教程(超级详细)

目录 一&#xff1a;Git二&#xff1a;SVN与Git的的区别三、安装Git四&#xff1a;常规操作五&#xff1a;远程仓库六&#xff1a;创建与合并分支七&#xff1a;bug分支八&#xff1a;多人协作九&#xff1a;git可视化工具 Git Git 是一种分布式版本控制系统&#xff0c;用于…...

动态规划习题

动态规划的核心思想是利用子问题的解来构建整个问题的解。为此&#xff0c;我们通常使用一个表格或数组来存储子问题的解&#xff0c;以便在需要时进行查找和使用。 1.最大字段和 #include <iostream> using namespace std; #define M 200000int main() {int n, a[M], d…...

安卓免Root做klipper上位机教程

软件说明&#xff1a;虚拟电脑可以在8.0以上没越狱的安卓系统中安装klipper上位机程序实现对已刷入klipper固件的3D打印控制板的控制欢迎下载安装测试&#xff0c;反馈碰到的问题。安装步骤&#xff1a;1). 在手机上打开浏览器&#xff0c;访问这个网址 http://droidvm.com/cn/…...

网络安全学习之信息泄露

一、背景以及泄露途径 通常我们会对数据进行备份&#xff0c;比如我们在发布网站的时候会对将要替换的版本进行备份。我们在对重要文件进行修改的时候我们也需要进行备份&#xff0c;如果我们对备份或缓存的文件或信息为做好管理&#xff0c;很容易就导致我们的敏感信息泄露。…...

Java智慧工地源码,智慧工地管理平台的技术架构和工作原理

智慧工地管理平台是将互联网的理念和技术引入建筑工地&#xff0c;从施工现场源头抓起&#xff0c;最大程度的收集人员、安全、环境、材料等关键业务数据&#xff0c;依托物联网、互联网&#xff0c;建立云端大数据管理平台&#xff0c;形成“端云大数据”的业务体系和新的管理…...

Nginx配合Vue的history模式

加上一行代码就行&#xff1a; try_files $uri $uri/ /index.html;...

持续集成交付CICD:Jenkins使用GitLab共享库实现基于Ansible的CD流水线部署前端应用的蓝绿发布

目录 一、实验 1.蓝绿发布准备 2.Jenkins使用GitLab共享库实现基于Ansible的CD流水线部署前端应用的蓝绿发布 二、问题 1.手动构建Jenkins前端项目CI流水线报错 2.如何优化手动构建流水线选项参数 一、实验 1.蓝绿发布准备 &#xff08;1&#xff09;环境 表1 蓝绿发布…...

计算机网络中的通信子网主要有哪些功能?

计算机网络中的通信子网主要具有以下功能&#xff1a; 负责全网的数据通信&#xff1a;通信子网通过使用各种通信协议和传输控制功能&#xff0c;能够确保数据从一台主机安全、准确地传输到另一台主机。这包括数据的封装、解封装、传输控制、差错控制等过程。 完成各种网络数据…...

【大数据-Hadoop】从入门到源码编译-概念篇

【大数据-Hadoop】从入门到源码编译-概念篇 Hadoop与大数据生态&#xff08;一&#xff09;Hadoop是什么&#xff1f;&#xff08;二&#xff09;Hadoop组成1. HDFS1.1 NameNode&#xff08;nn&#xff09;1.2 DataNode&#xff08;dn&#xff09;1.3 Secondary NameNode&#…...

什么是设计模式

一、概述 1、设计模式是解决某些问题的办法 2、设计模式不是凭空想象出来的&#xff0c;是经验的总结和积累 3、设计模式是不断的发展的 4、各个行业都有自己的设计模式 二、设计模式的基本要素 设计模式一般包括模式的名称、问题、目的、解决方案、效果、实例代码和相关…...

Typescript中Omit数据类型的理解

在 TypeScript 中&#xff0c;Omit 是一个内置的工具类型&#xff0c;它用于从对象类型中排除指定的属性&#xff0c;并返回剩余的属性。 Omit 的语法如下所示&#xff1a; type Omit<T, K> Pick<T, Exclude<keyof T, K>>;其中&#xff0c;T 表示原始类型…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...