MODBUSTCP和MODBUSRTU数据帧对比

news2024/10/6 0:32:57

工具介绍

ModBus Poll 在TCP中模拟客户端,在RTU中模拟主机;(请求数据方)
ModBus Slave 在TCP中模拟服务器,在RTU中模拟从机;(响应数据方)

数据帧简介

ModBus是一种通信协议,用于在工业自动化领域中,通过串行通信或以太网连接来传输数据。ModBus数据帧是用于在ModBus协议中传输数据的格式。
ModBus协议支持两种不同的数据帧格式:ModBus TCP和ModBus RTU。
ModBus TCP数据帧:
ModBus TCP是基于以太网的ModBus协议版本。在ModBus TCP中,数据帧格式如下:
1)事务标识符(2字节):用于标识请求和响应之间的关联。
2)协议标识符(2字节):用于指定ModBus协议版本。
3)长度字段(2字节):指定数据帧中后续字段的长度。
4)单元标识符(1字节):用于标识ModBus设备。
5)功能码(1字节):指定要执行的操作。
6)字节数(1字节):数据的字节数量
6)数据(可变长度):根据功能码的不同,数据字段可以包含不同类型的数据。
ModBus RTU数据帧:
ModBus RTU是基于串行通信的ModBus协议版本。在ModBus RTU中,数据帧格式如下:
1)地址(1字节):用于标识ModBus设备。
2)功能码(1字节):指定要执行的操作。
3) 字节数(1 字节) :数据的字节个数
3) 数据(可变长度):根据功能码的不同,数据字段可以包含不同类型的数据。
4) CRC(2字节):用于检测数据传输中的错误。

数据帧具体举例

ModBusTCP和ModBusRTU数据帧,主从对比示例。功能码为4
以下是一个主从模式下使用功能码为4的ModBusTCP和ModBusRTU数据帧的对比示例:
假设我们有一个ModBus主设备(主机)和一个ModBus从设备(从机),主设备要从从设备读取输入寄存器的值。

ModBus TCP主从模式数据帧示例:
主设备发送:
1)事务标识符:0x0001
2)协议标识符:0x0000
3)长度字段:0x0006
4)单元标识符:0x01
5)功能码:0x04
6)起始地址:0x0000
7)读取长度:0x0002
从设备响应:
1)事务标识符:0x0001
2)协议标识符:0x0000
3)长度字段:0x0005
4)单元标识符:0x01
5)功能码:0x04
6)字节数:0x04
7)数据:0x1234 0x5678(输入寄存器的值)

ModBus RTU主从模式数据帧示例:
主设备发送:
1)地址:0x01
2)功能码:0x04
3)起始地址:0x0000
4)读取长度:0x0002
5)CRC:0xA9 0x39(根据数据计算的循环冗余校验)
从设备响应:
1)地址:0x01
2)功能码:0x04
3)字节数:0x04
4)数据:0x34 0x12 0x78 0x56(输入寄存器的值,低位在前)
5)CRC:0x9E 0x80(根据数据计算的循环冗余校验)

可以看到,ModBusTCP和ModBusRTU主从模式下的数据帧结构也是基本相同的,都包含了地址、功能码、起始地址、读取长度和数据字段。不同之处在于ModBusTCP数据帧中包含了额外的字段(事务标识符、协议标识符、长度字段),而ModBusRTU数据帧中则没有这些字段。此外,ModBusRTU数据帧中的数据字段是按照字节顺序排列的,而ModBusTCP数据帧中则是按照字节顺序排列的。

帧格式对比

从机

类型MBAP报文头地址码功能码寄存器地址寄存器数量CRC校验
MODBUS RTU0C0400 0000 05XX XX
MODBUS TCP00 01 00 00 00 060C0400 0000 05

主机

类型MBAP报文头地址码功能码数据长度具体数据CRC校验
MODBUS RTU0C040a00 05 …XX XX
MODBUS TCP00 01 00 00 00 060C040a00 05 …

图示

如果需要将MODBUS TCP数据转化为MODBUS RTU数据则只需要将RTU数据的CRC校验去掉,然后加上事务处理标识符、协议标识符、长度字段信息即可。
在这里插入图片描述

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

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

相关文章

Spring整合Elasticsearch(2)

原生查询 可以查询的范围更精确,当ElasticsearchRepository提供的基本方法无法满足我们所需要的查询可以使用原生的方式查询 Test//原生查询public void naticeQuery(){//创建原生查询构建器对象NativeSearchQueryBuilder queryBuilder new NativeSearchQueryBuilder();//过滤…

【前端】ant-design-pro初体验

什么是Ant Design Pro Ant Design Pro 是一个企业级中后台前端/设计解决方案,它秉承 Ant Design 的设计价值观,致力于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源,进一步提高企…

第164天:应急响应-挖矿脚本检测指南威胁情报样本定性文件清除入口修复

知识点 #知识点 -网页篡改与后门攻击防范应对指南 主要需了解:异常特征,处置流程,分析报告等 主要需了解:日志存储,Webshell检测,分析思路等 掌握: 中间件日志存储,日志格式内容介绍…

如何给旧电脑安装Linux系统

目录 必要软件下载 下载ultraiso软件 下载linux系统 刻录光盘 U盘启动 必要软件下载 下载ultraiso软件 进入ultraiso官网,链接如下: 最新UltraISO官方免费下载 - UltraISO软碟通中文官方网站 下载linux系统 准备一个8G或者以上的U盘,…

微搭学习路线图,JavaScript入门

目录 1 学习路线1.1 HTML 语义和结构1.2 使用 CSS 布局和美化1.3 使用 JavaScript 开发交互1.4 小程序API1.5 云开发1.6 微搭 2 JavaScript入门2.1 变量2.2 注释2.3 运算符2.4 条件语句2.5 函数2.6 事件 3 示例总结 可多初学的问,微搭学习几个小时够么,几…

学习网页设计html学习总结

学习网页设计html学习总结篇一 转眼间,已到了期末,学习网页设计这门课程也要结束了,虽然时间有点短,但是学过这个几周以后我受益匪浅。 记得最初接触dreamweaver的时候,我很茫然,因为刚接触陌生的软件心里会…

4 springboot配置文件——yaml语法

4.1 yaml配置文件介绍 原先的配置文件是application.properties,但是官方不推荐使用这个,官方推荐使用application.yaml配置文件。因此,将原来的application.properties删除,改为application.yaml。 4.2 yaml配置文件语…

MinIO部署简单使用

前言 前面我们做了分布式文件存储系统FastDFS的部署应用,其安装还是比较繁琐的,而且实际生产的应用限制较大,下面,介绍一款开源的文件系统——MinIO,它是一种对象存储解决方案,提供与 Amazon Web Services…

【回溯算法Part04】| 93.复原IP地址、78.子集、90.子集||

目录 🎈LeetCode93.复原IP地址 🎈LeetCode78.子集 🎈 LeetCode90.子集|| 🎈LeetCode93.复原IP地址 链接:93.复原IP地址 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能…

MKS SERVO4257D 闭环步进电机_系列12 STM32_CAN例程

第1部分 产品介绍 具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU通讯协议,内置高效FOC矢量算法。 硬件开源! 第2部分 相关资料下载 2.1 源代码下载 网盘: 08_例程-STM32系列(CAN) 第3部分 参数配置和注意事项 3.1 电机参…

iPhone 15系规格全面出炉,配置大换血看齐安卓旗舰

网上经常有声音说 iPhone 又不行了,产品竞争力不如安卓云云,事实上是这样的吗? 就拿最近 618 智能手机销售情况来看,苹果一家就以 562.8 万部成绩拿下了近一半市场,营收占比更是高达 67%。 来源:Techlnsig…

OpenCV读取一张8位无符号四通道图像并显示

#include <iostream> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp> #include

聊聊Compose跨平台与KMM

作者&#xff1a;黄林晴 有许多开发者可能还没有了解过Compose Multiplatform和KMM&#xff0c;那么本次分享将通过以下几点来介绍Compose Multiplatform 与KMM&#xff0c;让我们一起体验Kotlin跨平台的魅力。 Compose Multiplatform 与 KMM的关系Compose Multiplatform 与 K…

RK3588平台开发系列讲解(Camera篇)V4L2 主要特性

文章目录 一、V4L2 介绍1.1、模块化的架构1.2、统一的设备节点1.3、统一的视频数据格式1.4、支持多种视频设备1.5、支持流式 I/O1.6、支持控制参数1.7、支持事件通知二、V4L2使用场景沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解V4L2 主要特性。 一、…

赛宁数字孪生靶场:构建验证评估业务的新势能

​​2023年5月1日实施的《关键信息基础设施安全保护要求》中对于关基企业的现有网络安全保障体系提出了更加具体全面的要求&#xff0c;人员、系统、体系是检测评估主要关注的方向。 赛宁数字孪生靶场从验证评估业务的角度出发&#xff0c;借助多云融合能力、多样化仿真能力、…

链式编程艺术:探索 Promise 链的美妙之处

文章目录 1. 什么是 Promise&#xff1f;它解决了什么问题&#xff1f;2. Promise 有哪些状态&#xff0c;并且解释每个状态的含义。3. 如何创建一个 Promise&#xff0c;并描述其基本结构和用法。4. 解释 Promise 的链式调用&#xff08;chaining&#xff09;和方法的执行顺序…

RabbitMQ系列(13)--Direct交换机的简介与实现

1、Direct交换机的介绍 Direct交换机能让消息只发送往绑定了指定routingkey的队列中去&#xff0c;值得注意的是当绑定多个队列的routingkey都相同&#xff0c;则这种情况下的表现与Fanout交换机的类似 2、Direct交换机的实现 (1)新建一个名为fanout的包&#xff0c;用于装发…

QT6在线下载安装慢的问题

由于某“墙”的原因&#xff0c;在国内安装QT是会要了老命的&#xff0c;下载只有几十K&#xff0c;安装QT6保守估计得按天计算了。 经过多次尝试&#xff0c;终于找到了可以“几十MB”速度下载安装的办法。 方法一&#xff1a; qt-unified-windows-x64-4.5.2-online.exe --…

leetcode:移动零

移动零 easy 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums […

回归预测 | MATLAB实现BES-LSSVM秃鹰算法优化最小二乘支持向量机多输入单输出

回归预测 | MATLAB实现BES-LSSVM秃鹰算法优化最小二乘支持向量机多输入单输出 目录 回归预测 | MATLAB实现BES-LSSVM秃鹰算法优化最小二乘支持向量机多输入单输出预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现BES-LSSVM秃鹰算法优化最小二乘支持向量机多输入…