modbus协议和示例

news2024/12/24 21:06:22

协议

主机读写

从站地址(8bit)功能码 (8bit)起始地址(16bit)数量(16bit)CRC(16bit)

从机对主机读取的回复

从站地址(8bit)功能码 (8bit)字节计数(8bit)数据(n*8bit)CRC(16bit)

从机对主机写入的回复

从站地址(8bit)功能码 (8bit)起始地址(16bit)数量(16bit)CRC(16bit)

所有功能码如下:

功能码作用长度
0x01读线圈寄存器1bit
0x02读离散输入寄存器1bit
0x03读保持寄存器16bit
0x04读输入寄存器16bit
0x05写单个线圈寄存器1bit
0x06写单个保持寄存器16bit
0x0f写多个线圈寄存器1bit
0x10写多个保持寄存器16bit

地址划分如下(5bit):

名称读写地址范围
线圈可读可写布尔量(1bit)00001-09999
离散量输入只读布尔量(1bit)10001-19999
输入寄存器只读寄存器(16bit)30001-39999
保持寄存器可读可写寄存器(16bit)40001-49999

测试

从以下网站获取modubus模拟设备https://www.modbus.cn/25794.html
从以下网站获取UART虚拟设备https://www.hhdsoftware.com/virtual-serial-port-tools
我们将会使用virtual-serial-port-tools创建两个虚拟的连接起来的设备,在这两个设备上分别建立一个虚拟ModBUS主机,ModBUS从机,观察通信过程。

读取多个线圈

下图中是设置完毕之后的通信情况。从站内持有10个线圈,其中第二,第六,第十个数据为1,其余为0。
在这里插入图片描述
0982-Txd : 01 01 00 00 00 0A BC 0D
0982-Rxd : 01 01 02 22 02 20 9D

主机发送

从站地址(8bit)功能码 (8bit)起始地址(16bit)数量CRC(16bit)
010100 0000 0ABC 0D

从机回复

从站地址(8bit)功能码 (8bit)字节计数(8bit)数据CRC(16bit)
01010202 2220 9D

可以看出,对于线圈数据,modubus将这些1bit数据放到了字节中传输。达不到8倍数的要填充0。下面是填充过的从机数据,其中第二、第六、第十个数据为1,其余为0,转换为16进制就是0x02 22。modubus先发的低字节
0000 0010 0010 0010

写入单个线圈

注意1,0在下面的表现形式
在这里插入图片描述

1103-Txd : 01 05 00 00 FF 00 8C 3A
1103-Rxd : 01 05 00 00 FF 00 8C 3A
1104-Txd : 01 05 00 00 00 00 CD CA
1104-Rxd : 01 05 00 00 00 00 CD CA

主机发送1

从站地址(8bit)功能码 (8bit)地址(16bit)数据(16bit)CRC(16bit)
010500 00FF 008C 3A

主机发送0

从站地址(8bit)功能码 (8bit)地址(16bit)数据(16bit)CRC(16bit)
010500 0000 00CD CA

从机回复数据与主机相同

写入多个线圈

在这里插入图片描述
1459-Txd : 01 0F 00 00 00 03 01 02 0E 96
1459-Rxd : 01 0F 00 00 00 03 15 CA

主机发送

从站地址(8bit)功能码 (8bit)地址(16bit)线圈个数(16bit)字节计数(8bit)数据CRC(16bit)
010F00 0000 0301020E 96

从机回复

从站地址(8bit)功能码 (8bit)地址(16bit)线圈个数(16bit)CRC(16bit)
010F00 0000 0315 CA

后续大家自己测试

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

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

相关文章

并网逆变器学习笔记8---平衡桥(独立中线模块)控制

参考文献:《带独立中线模块的三相四线制逆变器中线电压脉动抑制方法》---赵文心 一、独立中线模块的三相四线拓扑 独立中线模块是控制中线电压恒为母线一半,同时为零序电流ineu提供通路。不平衡负载的零序电流会导致中线电压脉动,因此需要控制…

Python第十三章(递归与lamada)

一。引用类型 不可变类型:在改变原有类型的数据后,值的地址也会进行更改 包括:整数,浮点数,字符串,元组 用id():进行判断是否十进制地址是否一样 可变类型:在改变原有类型后&…

一文教你如何本地搭建Qchan图床网站实现公网远程访问

文章目录 前言1. Qchan网站搭建1.1 Qchan下载和安装1.2 Qchan网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar云端设置2.2 Cpolar本地设置 3. 公网访问测试总结 前言 图床作为云存储的一项重要应用场景,在大量开发人员的努力下,已经开发出大…

endnote设置引用格式

1在这上面找到合适的style,比如搜索nature methods https://endnote.com/downloads/styles/​​​​​​2.下载到的ens用endnote打开,可以导入nature methods格式 3.引用的时候发现显示的插入是4-7,但是看了最近nature methods的是4,5,6,7 …

C/C++实现无序入参的命令解析工具

C/C实现无序入参的命令解析工具 1 实现思路2 主要功能3 效果展示3.1 直接运行代码图3.2help命令执行效果图3.3命令行执行命令解析效果图 4 代码实现5 代码下载 1 实现思路 基本介绍: 思路来源于atlas,atc(模型转换工具),该工具对命令支持众多&#xff0…

多智能体强化学习--MAPPO(pytorch代码详解)

标题 代码详解Actor和Critic网络的设置 代码详解 代码链接(点击跳转) Actor和Critic网络的设置 基本设置:3个智能体、每个智能体观测空间18维。Actor网络:实例化一个actor对象,input-size是18Critic网络&#xff1…

Shell脚本——免交互

目录 一、Here Document免交互 1、免交互概述 2、语法格式 2.1示例:免交互方式实现对行数的统计,将要统计的内容置于标记EOF之间,直接将内容传给wc-l来统计 3、变量设定 ①变量图换成实际值 ②整行内容作为变量并输出结果 ③使输出内…

杠杆交易在伦敦金市场的优势与风险

伦敦金作为黄金市场的灯塔,每天吸引着全球投资者的目光。伦敦金的特殊地位使得以它为基准的杠杆交易成为众多投资者追逐的目标。在这篇文章中,我们将深入探讨伦敦金杠杆交易的奥秘,带你揭开这一盛宴的神秘面纱。 伦敦金杠杆交易的核心在于通过…

【pytorch】anaconda使用及安装pytorch

https://zhuanlan.zhihu.com/p/348120084 https://blog.csdn.net/weixin_44110563/article/details/123324304 介绍 Conda创建环境相当于创建一个虚拟的空间将这些包都装在这个位置,不需要了可以直接打包放入垃圾箱,同时也可以针对不同程序的运行环境选…

HashSet 的基本操作【集合容器知识回顾 ④】

HashSet 是 Java 中的一个集合类,它实现了 Set 接口。Set 是一种不允许包含重复元素的集合,而 HashSet 则是 Set 接口的一个具体实现。因此,HashSet 用于存储一组唯一的元素,不允许重复。 HashSet 的一些特点: 不允许…

揭开时间序列的神秘面纱:特征工程的力量

目录 写在开头1. 什么是特征工程?1.1 特征工程的定义和基本概念1.2 特征工程在传统机器学习中的应用1.3 时间序列领域中特征工程的独特挑战和需求3. 时间序列数据的特征工程技术2.1 数据清洗和预处理2.1.1 缺失值处理2.1.2 异常值检测与处理2.2 时间特征的提取2.2.1 时间戳解析…

Vue中使用定义的函数时,无法访问到data()里面的数据

const translateItems1 () > {this.translatedItems this.items1.map(item > {return {...item,label: this.$t(item.labelKey)};}); items1是我们data()里面的数据,无法访问到 解决办法 把箭头函数替换为普通函数 const translateItems1 function() {th…

echarts 鼠标移入有单位;echarts 纵坐标有单位;echarts 纵坐标刻度有单位

1.echarts 鼠标移入有单位 tooltip series: [{name: "平均值",type: "line",data: this.avgData,tooltip: {valueFormatter: function (value) {return value 万元}}}]2.echarts 纵坐标有单位;name yAxis: [{type: "value",name: t…

为什么贪婪的 GPU需要快速的对象存储?

一个链条的力量取决于其最薄弱的环节 - 同样,您的AI/ML基础设施的速度也只有您的最慢组件那么快。如果您使用GPU训练机器学习模型,那么您的薄弱环节可能是您的存储解决方案。结果就是我所说的“饥饿GPU问题”。 饥饿GPU问题发生在您的网络或存储解决方案…

三、软硬件工作流程分析

现在的计算机主要是由两部分组成:软件系统和硬件系统。这里先捋清楚硬件和软件的关系,以及电脑 各个组成部分是如何配合工作的。 软件系统主要被分类为两大类: 系统软件:这包括操作系统,如Windows、Linux等。操作系统是…

ManticoreSearch-(安装配置,集群搭建)-学习总结

ManticoreSearch-(安装配置)-学习总结 基础概念安装搭建集群搭建(基于K8S) 原文地址 https://blog.csdn.net/liuyij3430448/article/details/135955025 基础概念 Manticore Search是一个专门为搜索设计的多存储数据库,具有强大的全文搜索功能,适用于…

力扣hot100 三数之和 双指针 细节去重

Problem: 15. 三数之和 文章目录 思路Code 思路 &#x1f468;‍&#x1f3eb; 参考 Code ⏰ 时间复杂度: O ( n 2 ) O(n^2) O(n2) &#x1f30e; 空间复杂度: O ( 1 ) O(1) O(1) class Solution {public List<List<Integer>> threeSum(int[] nums){List&l…

composer常用命令

查看全局配置信息 composer config -gl 设置镜全局像地址 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 去掉-g&#xff0c;即表示只有当前项目使用该镜像 批量安装composer项目依赖 composer install 执行该命令后&#xff0c;会读取当…

算法练习-二叉树的层序遍历(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;二叉树 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0c;旨…

EasyExcel根据对应的实体类模板完成多个sheet的写入与读取

1.展示模板一的实体类 import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.HeadRowH…