Modbus通讯协议初学

目录

  • Modbus通讯协议初学
    • 什么是Modbus?
    • Modbus用来做什么?
    • 4个种类的寄存器
    • 协议速记
    • 功能码
    • Modbus 报文帧
    • 示例解读

Modbus通讯协议初学

什么是Modbus?

顾名思义,它是一个bus,即总线协议。比如串口协议、IIC协议、SPI都是通讯协议。你接触到这种协议,相信你所处的行业是工业方面或者你的产品用于工业。

Modbus用来做什么?

用两个来概括:通讯。

4个种类的寄存器

线圈状态(Coil Status) 可读可写

离 散 输入状 态(Discrete Input Status) 只读

保 持 寄 存 器(Holding Register) 可读可写

输 入 寄 存 器( Input Register)只读

在这里插入图片描述

协议速记

Modbus 是一主多从的协议

在这里插入图片描述

主控发出的数据里,必定含有如下信息:

① 设备地址:你要访问从设备 1,还是访问从设备 2

② 访问哪类寄存器,是读还是写,只访问 1 个寄存器,还是多个寄存器:这被称为功能码

③ 起始寄存器地址、寄存器数量:这在数据里定义

④ 为了保证数据传输的可靠,还附带有 CRC 检验码

以 Modbus RTU 协议为例,主控发出的数据包格式如下:

在这里插入图片描述

功能码

在这里插入图片描述

功能代码有哪些?常用的功能码如下:

① 读线圈状态(01)

② 读离散输入状态(02)

③ 写单个线圈(05)、写多个线圈(15)

④ 读保持寄存器(03)

⑤ 读输入寄存器(04)

⑥ 写单个保存寄存器(06)、写多个保存寄存器(16)

Modbus 报文帧

一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,本质就是一串数据。

Modbus 报文是指主机发送给从机的一帧数据,其中包含着从机的地址,主机想执行的操作,校验码等内容。

Modbus 协议 RTU 报文格式如下所示:

帧结构 = 地址 + 功能吗 + 数据 + 校验

地址: 占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址(广播地址就是应答所有地址,正常的需要两个设备的地址一样才能进行查询和回复)。

功能码:占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改数据,所以不同功能码对应不同功能。

数据:根据功能码不同,有不同结构,在后续的实例中有说明。

校验:为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致,如果一致,就说明这帧数据是正确的,我再回复;如果不一样,说明你这个数据在传输的时候出了问题,数据不对的,所以就抛弃了。

示例解读

以(0x01)读取线圈为例

在这里插入图片描述

从我上图的这个例子中,进行如下的解析

主机发送:07 01 00 00 00 08 3D AA
从机回复:07 01 01 20 50 D8解析如下:
07(从设备地址) 01(功能码) 00 00(起始地址16bit,高位在前,低位在后) 00 08(寄存器数16bit 高位在前,低位在后) 3D AA (CRC校验) 07(从设备地址) 01(功能码) 01(数据域字节数) 20(数据 1) 50 D8(校验) 

参考资料:

https://blog.csdn.net/qq_39400113/article/details/118369506

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

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

相关文章

如何自定义Linux命令

说明:本文介绍如何将自己常用的命令设置为自定义的命令,以下操作在阿里云服务器CentOS上进行。 修改配置文件 修改配置文件前,先敲下面的命令查看当前系统配置的shell版本 echo $SHELL或者 echo $0区别在于,$SHELL查看的是系统…

落雪音乐 超好用的桌面端音乐播放器

之前一直都是充某Q音乐的会员,突然不想氪金了,终于找到一个开源的音乐播放器,在此先给落雪无痕大佬跪了 太爱了 简直白嫖怪的福音 话不多说,直接上操作:解压密码:www.1234f.com下载地址:极速云…

图片批量管理迈入智能新时代:一键输入关键词,自动生成并保存惊艳图片,轻松开启创意之旅!

在数字化时代,图片已成为我们表达创意、记录生活、传递信息的重要工具。然而,随着图片数量的不断增加,如何高效、便捷地管理这些图片,却成为了一个令人头疼的问题。 第一步,进入首助编辑高手主页面,在上方…

视频封面一键提取:从指定时长中轻松获取您想要的帧图片

在数字媒体时代,视频已成为人们获取信息、娱乐和沟通的主要形式之一。而一个好的视频封面,往往能够吸引观众的眼球,增加视频的点击率和观看量。然而,对于很多视频创作者和编辑者来说,如何从视频中快速、准确地提取出合…

Git知识点总结

目录 1、版本控制 1.1什么是版本控制 1.2常见的版本控制工具 1.3版本控制分类 2、集中版本控制 SVN 3、分布式版本控制 Git 2、Git与SVN的主要区别 3、软件下载 安装:无脑下一步即可!安装完毕就可以使用了! 4、启动Git 4.1常用的Li…

Shell编程之循环语句之for

一.for循环语句 读取不同的变量值,用来逐个执行同一组命令 for 变量名 in 取值列表 do命令序列 done 示例: 1.计算从1到100所有整数的和 2.提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和 3.求从1到100所有整数的偶数和…

【牛客】SQL206 获取每个部门中当前员工薪水最高的相关信息

1、描述 有一个员工表dept_emp简况如下: 有一个薪水表salaries简况如下: 获取每个部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号dept_no升序排列,以上例子输出如下: 2、题目…

SBM模型、超效率SBM模型代码及案例数据(补充操作视频)

01、数据简介 SBM(Slack-Based Measure)模型是一种数据包络分析(Data Envelopment Analysis, DEA)的方法,用于评估决策单元(Decision Making Units, DMUs)的效率。而超效率SBM模型是对SBM模型的…

轮转数组 与 消失的数字

轮转数组 思路一 创建一个新内存空间,将需轮转的数依次放入,之后在把其它数放入 代码: void rotate(int* nums, int numsSize, int k) {k k % numsSize;// 确定有效的旋转次数if(k 0)return;int* newnums (int*)malloc(sizeof(int) * nu…

企业OA办公系统开发笔记:1、搭建后端环境

文章目录 企业办公系统:搭建环境一、项目介绍1、介绍2、技术栈3、项目模块4、数据库 二、搭建环境1、搭建后端1.1、搭建父工程clfwzx-oa-parent1.2、搭建工具类父模块common1.3、搭建工具类common的子模块1.4、搭建实体类模块model和项目模块service-oa 2、配置依赖…

2024最新最全【NMAP】零基础入门到精通

一、Nmap介绍 Nmap(Network Mapper,网络映射器)是一款开放源代码的网络探测和安全审核工具。它被设计用来快速扫描大型网络,包括主机探测与发现、开放的端口情况、操作系统与应用服务指纹识别、WAF识别及常见安全漏洞。它的图形化界面是Zenmap&#xff…

[AIGC] redis 持久化相关的几道面试题

文章目录 1. 什么是Redis持久化?2. Redis 的持久化机制是什么?各自的优缺点?2.1 RDB(Redis DataBase),快照2.2 AOF(Append Only File),日志 3. 优缺点是什么?…

pixhawk无人机飞控解锁

飞控解锁 GitBook 左手油门的遥控解锁是油门右下角拨,右手油门是油门最低,方向最右。 飞控如何加锁? 左手油门:油门左下角 右手油门:油门最低,方向最左 飞控解锁成功后,不推油门的情况下,…

基于SSM+Vue的物流管理系统

运行截图 获取方式 Gitee仓库

LORA学习笔记2——训练集处理

前言 对于ai训练来说,处理训练集是模型训练的重要环节。训练集的质量对最终模型的质量影响巨大。这里以二次元角色为例,记录下训练集处理的流程和一些心得。 素材准备 素材准备有以下几个需要注意的点: 通常训练二次元角色需要30张以上的…

14:HAL---CRC校验

103系列只有一个CRC 前言: CRC(Cyclic Redundancy Check),即循环冗余校验,是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法,主要用来检测或校核数据传输或者保存后可能出现的错误。…

QX---mini51单片机学习---(8)8*8点阵屏

目录 1LED点阵屏简绍 2 8*8点阵屏电路图74 3 74HC595芯片 4实践编程 1LED点阵屏简绍 2 8*8点阵屏电路图74 怎么点亮,正极给高负极给低 不能同时静态显示,跟数码管动态显示一样,反复横跳,利用视觉效果 3 74HC595芯片 …

关于 IIS 开启匿名访问网站仍要账号密码登录网站的解决方法

欢迎关注公总号【云边小网安】 问题提出:发现虽然勾选了允许匿名访问网站,但在访问某一网站的时候仍然需要登录账号密码 解决方法一:登录管理员账号密码解决方法二:添加访问网站文件夹的用户 访问某一网站本质上来讲&#xff0…

C++入门必读-Qt的安装与配置

QT简介 Qt是一个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供建立图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。 QT下载 访问下载网站: Index of /archive/qt 安装编译器 QT安装 建议安装之前将网络断…

1064 朋友数

solution 给出n个整数&#xff0c;统计可能的位数和&#xff0c;并按升序输出&#xff08;考虑用set实现&#xff09; #include<iostream> #include<set> using namespace std; int main(){set<int> st;int n, x, sum;scanf("%d", &n);while…