嵌入式通信协议【Modbus】Modbus TCP的帧格式

news2024/11/24 5:17:40

一、请求帧格式

Client request:例:

19 B2 00 00 00 06 06 03 00 27 00 02

1、头字节

上面是modbus客户端发出的报文内容,为modbus tcp/ip协议格式,其前面的六个字节为头字节( header handle);

19 B2 00 00 00 06

19 B2 00 0000 06
两个Client发出的检验信息,Sever端只是需要将这两个字节的内容copy以后再放到response的报文的相应位子就可以了两个字节是表示tcp/ip 的协议的modbus的协议两个字节表示的是header handle后面还有多长的字节,即表示的是该字节以后的字节长度(lengch),可以看到在00 06后面还有 “06 03 00 27 00 02”六个字节,所以这两个字节表示的就是6;

2、协议数据单元(PDU)

MODBUS 协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的 MODBUS 协议映射能够在应用数据单元(ADU)上引入一些附加域。

06 03 00 27 00 02

0603 00 27 00 02
一个字节表示slave address;一个字节是表示modbus的功能码两个字节 表示Client request的寄存器地址;两个字节表示request 寄存器的长度;(寄存器个数)

二、回复帧格式

Server response例:

19 B2 00 00 00 07 06 03 04 00 00 00 00

1、头字节

Header handle : “19 B2 00 00 00 07”

19 B2 00 0000 07
两个字节为Server返回的检验码两个字节是表示tcp/ip 的协议的modbus的协议两个字节表示的是header handle后面还有多长的字节,即表示的是该字节以后的字节长度(lengch),可以看到在00 07后面还有 “19 B2 00 00 00 07”六个字节,所以这两个字节表示的就是6;

2、协议数据单元(PDU)

PDU:“06 03 04 00 00 00 00”

0603 0400 00 00 00 
是Slave address,从地址数;一个字节是表示modbus的功能码两个字节 表示了回复给Client request的需要读的寄存器的值的个数,这里因为主地址向从地址读了2个寄存器即2个16位的寄存器(2个字)所以这里为4个字节,因为2个字为4个字节,而04这个字节表示的就是从地址要回复给主地址的寄存器字节长度表示了4个字节的值

三、ModbusTcp的链路解析说明

1、数据请求

97 76 00 00 00 06 04 04 00 7D 00 7D

示例

长度

说明

备注

Map报文头

0x97

1

事务处理标识符Hi

客户机发起,服务器复制,用于事务处理配对

0x96

1

事务处理标识符Lo

0x0000

2

协议标识符号

客户机发起,服务器复制

Modbus协议 = 0.

0x0006

2

长度

从本字节下一个到最后

0x04

1

单元标识符

客户机发起,服务器复制

串口链路或其他总线上远程终端标识

功能码

0x04

1

功能码

(0x04)读输入寄存器

数据

0x007D

2

起始地址

0x 007D

2

寄存器数量

校验

2、数据请求回复

97 76 00 00 00 FD 04 04 FA AB 9E 41 18 7A E1 3F 94 7A E1 3F 94 0A 3D 3F 97 51 EC 3F 98 CC CD C0 6C 33 33 C0 E3 CC CD C0 EC EB 85 41 F1 D7 0A 41 E9 47 AE 41 ED EB 85 41 F1 19 9A 43 D0 E6 66 43 C9 4C CD 43 CF EB 85 41 F3 66 66 42 0F CC CD 41 C2 E6 66 44 0A 1E B8 41 FB A3 D7 42 0C CC CD 41 BC C0 00 44 0A B8 52 41 F6 5C 29 42 0F 47 AE 41 D1 C6 66 44 0A 00 00 00 00 C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F C9 9E FF 7F 05 16 00 00 04 11 00 00 05 16 00 00 04 11 00 00 05 16 00 00 04 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 0A 00 0A 00 0A 00 04 00 04 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0F

示例

长度

说明

备注

Map报文头

0x97

1

事务处理标识符Hi

客户机发起,服务器复制,用于事务处理配对

0x96

1

事务处理标识符Lo

0x0000

2

协议标识符号

客户机发起,服务器复制

Modbus协议 = 0.

0x00FD

2

长度

从本字节下一个到最后

0x04

1

单元标识符

客户机发起,服务器复制

串口链路或其他总线上远程终端标识

功能码

0x04

1

功能码

(0x04)读输入寄存器

数据

0x FA

1

字节个数

0x----

数据

校验

3、写多个寄存器

97 79 00 00 00 09 04 10 00 00 00 01 02 00 01

示例

长度

说明

备注

Map报文头

0x97

1

事务处理标识符Hi

客户机发起,服务器复制,用于事务处理配对

0x79

1

事务处理标识符Lo

0x0000

2

协议标识符号

客户机发起,服务器复制

Modbus协议 = 0.

0x0009

2

长度

从本字节下一个到最后

0x04

1

单元标识符

客户机发起,服务器复制

串口链路或其他总线上远程终端标识

功能码

0x10

1

功能码

(0x10) 写多个寄存器

数据

0x0000

2

起始地址

0x 0001

2

写寄存器数量

0x 02

1

写字节的个数

00 01

2

目标值

校验

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

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

相关文章

3D点云之语义分割(相关官方示例介绍)

之前在博客中提到,会考虑用深度学习来对3D点云进行处理,接下来迈出脚步,先整几个例子来熟悉它。例子原型来源于官网,博主在其基础上做了一些代码修改。 一. 例子参考 1. Keras中的资源 Code examples 2.openvinotoolkit open_…

20230515在亚马逊Amazon扣费之后的申诉

20230515在亚马逊Amazon扣费之后的申诉 2023/5/15 22:56 缘起:使用Amazon的12个月的免费存储桶,然后调用S3功能翻译! 但是,被扣费了! 由于绑定的信用卡是工行的,要求和亚马逊解除绑定,工行给了一…

第十章创建模式—外观模式

文章目录 外观模式解决的问题概念结构 案例优缺点使用场景Tomcat 源码 结构型模式描述如何将类或对象按某种布局组成更大的结构,有以下两种: 类结构型模式:采用继承机制来组织接口和类。对象结构型模式:釆用组合或聚合来组合对象。…

GEE:无监督聚类算法(wekaKMeans)

作者:CSDN @ _养乐多_ 本文将介绍如何使用 Google Earth Engine(GEE)进行卫星图像 K-means 聚类分析的基本步骤,并提供相应的示例代码。 结果如下图所示, 文章目录 一、K-means 原理二、代码详解三、代码链接一、K-means 原理 二、代码详解 var roi = table; Map.cent…

【前后端异常】axios post请求 返回415错误状态码的解决方法

错误描述: 进行有文件的表单提交时出现415错误,以前没遇到过记录一下 415错误的解释是说,服务器无法处理请求附带的媒体格式。以下是HTTP的状态码关于415返回码的说明: 415Unsupported Media Type服务器无法处理请求附带的媒体格…

awk的应用

awk的基本应用 一、awk的工作原理二、实际应用按行输出文本按字段输出文本时间的使用查看各个功能 一、awk的工作原理 awk与sed和grep共成为文本三剑客,都是针对文本非常实用的工具。 awk的工作原理: 遂行读取文本,默认以空格或者tab&#x…

NodeJs模块化之上半部分

模块化 什么是模块化 模块化是指解决一个复杂问题时,自顶向下 逐层把系统 拆解 成若干 模块 的过程。 对于整个系统来说,模块是可组合、分解和更换的单元。 编程领域中的模块化 编程领域中的模块化,就是遵守固定的规则,把一个…

( 位运算 ) 231. 2 的幂 / 342. 4的幂 ——【Leetcode每日一题】

❓题目一 231. 2 的幂 难度:简单 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2 x n 2^x n2x ,则认为 n 是 2 的幂次方。 …

10款必装IDEA开发神器

那些IDEA开发神器 1.Material Theme Ul 安装步骤 打开IDEA,点击File -> Settings。在Settings窗口中,选择Appearance & Behavior -> Appearance。在Appearance选项卡下,找到Theme并选择Material Theme Ul。点击Apply按钮,然后点…

Liunx基础命令 - mv剪切命令

mv命令 – 移动或改名文件 mv命令来自英文单词”move“的缩写,中文译为”移动“,其功能与英文含义相同,能够用于对文件进行剪切和重命名操作。这是一个被高频使用的文件管理命令,我们需要留意它与复制命令的区别。cp命令是用于文…

C++标准库中的锁

C标准库中的锁 std::mutex.lock是我们在C中比较常见的锁,我们使用std::mutex.lock方法时,同时需要考虑何时使用std:mutex.unlock方法去解锁。如果在复杂的多线程情况下,加锁、解锁的时机很难把握,也不好实现。 RAII原则是所有的…

c++中this指针的使用

首先,我们都知道类的成员函数可以访问类的数据,那么成员函数如何知道哪个对象的数据成员要被操作呢? 原因在于每个对象都拥有一个指针:this指针,每一个对象都能通过this指针来访问自己的地址。 this 指针是所有成员函…

NOSQL——redis的安装,配置与简单操作

1.缓存的相关知识 1.1 缓存的概念 缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较慢的一方起到加速作用,比如CPU的一级、二级缓存是保存了CPU最近经常访问的数据,内存是保存CPU经常访问硬盘的数据,而且硬…

Git简易教程

安装与配置 教程链接 代码上传到远程仓库 workspace:当前所在的工作目录 stagingarea:修改暂存区 loacl repository:本地仓库 remote respository :远程仓库 我们首先在workspace目录编写代码、修改文件,然后需要使用…

三十五、nacos注册中心集群搭建、网关、过滤器

1、nacos注册中心集群的搭建 要想搭建nacos集群模式,这些集群中的每台nacos服务,都必须连接同一个数据库。因为我们的nacos都放在同一台主机上,所以我们必须为每台nacos起不同的端口号。 1.1修改nacos端口号 8849 8850 8851 E:\software\naco…

2023/5/15总结

Java基础(4) 标准类制作 成员变量使用private修饰构造方法:提供一个无参构造方法,提供一个带多个参数的构造方法 成员方法:提供每一个成员变量对应的setXxx()/getXxx(),提供一个显示对象信息show()创建对象并为其成员…

服务端渲染

服务端渲染 和 前后端分离&#xff01; 渲染 什么是渲染呢 ? 其实很简单, 就是把数据反应在页面上&#xff0c;说白了, 就是利用 js 的语法, 把某些数据组装成 html 结构的样子, 放在页面上展示。 举个例子 : 1. 准备一段 html 结构 <h1>hello world</h1> <di…

Android之 Service服务详解

一 四大组件 1.1 Activity组件&#xff0c;它一个单独的窗口&#xff0c;程序流程都必须在Activity中运行&#xff0c;所有它是最基本的模块。 1.2 service组件&#xff0c;用于在后台完成用户指定的操作。 1.3 content provider组件&#xff0c;会为所有的应用准备一个内容…

零知识证明:重要构造

文章目录 ZKP for NPBlums ZK PoK for HCCompletenessSoundnessZero KnowledgeWI of n-parallelized versionsProof of KnowledgeSpecial Soundness Constant Round ZKPFLS ParadigmGK Paradigm 在 零知识证明&#xff1a;安全定义 中介绍了 ZKP 的一些安全性定义&#xff0c;…

TFT驱动ST7789使用总结

最近在使用一款TFT驱动芯片ST7789&#xff0c;在阅读芯片数据手册和液晶屏数据手册时&#xff0c;发现总是对不上&#xff0c;芯片手册中&#xff0c;有好几个引脚&#xff0c;一会儿是这个作用&#xff0c;一会儿又变成另一种作用&#xff0c;实在是让人感到混淆。网上找了好久…