02 ModBus TCP

目录

一、ModBus TCP 一帧数据格式

二、0x01 读线圈状态

三、0x03读保持寄存器

四、0x05写单个线圈

 五、0x06 写单个寄存器

六、0x0f写多个线圈 

七、0x10:写多个保持寄存器

八、通信过程

九、不同modbus通信模式的应用场景


一、ModBus TCP 一帧数据格式

其中MBAP报文头有7个字节,分别是:

长度描述
事物处理标识符2个字节用于事务处理配对,他是Modbus的事务处理码,每次通信后就要加一
协议标识符2个字节用于系统内的多路复用,当值为0是,表示使用ModBus协议
长度2个字节用于说明接下来还有多少字节的数量
单元标识符1个字节当ModBus客户端在请求设置这个域是,在响应中服务器必须利用相同的值返回这个域(同设备地址)

二、0x01 读线圈状态

注意:每次请求事物处理标识都应该不一样,例如每次通信后事物处理标识加1;线圈的单位是位,一个线圈只占一位

起始地址0x0013(0019)读取16个线圈的值

返回的3C 25(0011 1100 0010 0101)分别对应的就是(0019--0034)

三、0x03读保持寄存器

四、0x05写单个线圈

 

 五、0x06 写单个寄存器

六、0x0f写多个线圈 

 

七、0x10:写多个保持寄存器

modbus tcp发送数据的格式起始和modbus rtu类似

modbus tcp:mbap报文头+功能码+数据

modbus rtu:设备地址+功能码+数据+CRC校验 

八、通信过程

  1. 主站设备主动向从站设备发送请求
  2. 从站设备处理主站的请求后,向主站返回结果
  3. 如果从站设备处理请求出现异常,则向主站设备返回异常功能码

九、不同modbus通信模式的应用场景

modbus ASCII模式:主要用来调试,故障排查,数据量小(ASCII码字符可以用字母形式显示,可以显示更多的调试信息,更直观)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

队列(C语言版)

一.队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有 先进先出 FIFO(First In First Out) 入队列:进行插入操作的一端称为 队尾 出队列:进行删除操作的一端称为…

【大数据面试】Flink面试题附答案

目录 ✅Flink介绍、特点、应用场景 ✅Flink与Spark Streaming的区别 ✅Flink有哪些部署模式 ✅Flink架构 ✅怎么设置并行度? ✅什么是算子链? ✅什么是任务槽(Task Slots)? ✅任务槽和并行度的关系 ✅Flink作…

自动化测试入门 —— 自动化测试概论

整篇论述总的来讲会很长,从自动化的思维、模型、工具,到各层次的自动化测试技术、测试框架、测试平台,包括面向未来的自动化技术都将涉及,因此打算拆成几个部分去写。此外,由于涉及的范围比较广泛,部分内容…

C++内存布局(二)

在《C内存布局(一)》 中,我们介绍了C内存布局的基本知识,本篇我们仍着重探讨C类的内存布局,尤其是 多重继承、钻石继承(菱形继承)场景下的虚函数表的情况。 一、多重继承 1.1 示例 class A { public:virtual void d…

LabVIEW软件模拟氢燃料电池在车辆中的应用

LabVIEW软件模拟氢燃料电池在车辆中的应用 在追求可持续能源的时代,氢燃料电池在绿色经济中扮演着关键角色。本研究通过LabVIEW软件模拟和评估了氢燃料电池在车辆应用中的性能和效率。LabVIEW作为一个强大的模拟工具,能够动态模拟氢燃料电池系统在不同条…

js键盘事件keydown事件,防止重复触发,组合键的配合使用

js键盘事件keydown事件,防止重复触发 键盘事件类型主要有三种: keydown 、keypress(不建议使用,部分浏览器已放弃)和 keyup 。 添加普通键盘keydown事件 // 监听键盘按下事件document.addEventListener(keydown, function(event) {// 输出按…

3 python基本语法 - Dict 字典

Python 中字典(dict)是一种无序的、可变的序列,它的元素以“键值对(key-value)”的形式存储。相对地,列表(list)和元组(tuple)都是有序的序列,它们…

23、Web攻防——Python考点CTF与CMS-SSTI模板注入PYC反编译

文章目录 一、PYC文件二、SSTI 一、PYC文件 pyc文件:python文件编译后生成的字节码文件(byte code),pyc文件经过python解释器最终会生成机器码运行。因此pyc文件是可以跨平台部署的,类似java的.class文件,…

Vue-图片懒加载

实现图片懒加载可以使用vue-lazyload插件 npm 链接:vue-lazyload - npm (npmjs.com) 使用方法: 1. 安装vue-lazyload npm i vue-lazyload npm i vue-lazyload1.3.3 // 如果是vue2就需要安装1.3.3版本 2. 引入vue-lazyload并使用 可以在使用该插…

软件企业在什么情况下需要找第三方软件测试机构?如何收费?

近年来,随着软件行业的迅猛发展,软件企业对软件测试的需求也越来越大。为了保证软件的质量和稳定性,许多企业选择寻找第三方软件测试机构来进行软件测试。第三方软件测试机构是独立于软件开发企业的专业机构,主要从事软件测试和质…

每日一题 2828. 判别首字母缩略词(简单)

简单题,就不多写了 class Solution:def isAcronym(self, words: List[str], s: str) -> bool:if len(words) ! len(s):return Falsefor i in range(len(words)):if words[i][0] ! s[i]:return Falsereturn True

栈(stack)

栈(stack)是一种用于存储数据的简单数据结构,与链表和顺序表很相似,最大的区别在于数据的存取操作。栈的插入和删除操作只允许在一端执行,因此把允许操作的一端称为栈顶,不允许操作的称为栈底。插入元素称为…

轻度听力损失的儿童需要早期干预吗?

一些宝宝在做听力筛查时总是不通过,进一步听力诊断发现宝宝有轻度的听力损失,刚知道这个消息时,家长可担心了,总想着宝宝是不是听不到啊?但是一段时间后,有些家长又会忽略宝宝的听力问题,因为部…

7款创意性前端源码特效资源分享(附在线预览效果)

分享7款非常不错炫酷的前端特效源码 其中包含css动画特效、js原生特效、svg特效等 下面我会给出特效样式图或演示效果图 但你也可以点击在线预览查看源码的最终展示效果及下载源码资源 CSS绘制iPhone 14带动态岛 纯CSS绘制iPhone 14带动态岛模型 运行初始化时还附带出场动画 …

防冻水表是什么?

防冻水表是一种特殊类型的水表,它主要用于防止水管和设备在寒冷的冬季中受到冻结和损坏的情况。在冷却系统中使用防冻水表可以有效地监测和控制液体的温度,从而保护系统的正常运行。 防冻水表通常由温度传感器、控制器和显示器组成。温度传感器负责测量液…

阿里云k8s集群搭建

文章目录 一、安装前准备1.环境2.k8s集群规划 二、k8s 安装1. centos基础设置2. docker 安装3. k8s安装3.1 添加阿里云 yum 源3.2 安装 kubeadm、kubelet、kubectl3.3 部署 Kubernetes Master3.4 加入 Kubernetes Node3.5 部署 CNI 网络插件3.6 测试 kubernetes 集群 一、安装前…

鸿蒙Harmony4.0开发-ArkTS基础知识运用

概念 1.渲染控制语法: 条件渲染:使用if/else进行条件渲染。 Column() {if (this.count > 0) {Text(count is positive)} }循环渲染:开发框架提供循环渲染(ForEach组件)来迭代数组,并为每个数组项创建…

abpvnext框架的项目部署到linux arm64版的docker中

参考: windows10下安装的docker 导出镜像到另一个电脑_docker镜像拷贝另一台机器的镜像-CSDN博客 前提条件: 1、vs2022,我的电脑本机安装有windows版docker desktop 。 2、linux中已经安装好docker,安装了sftp。这部分可以自行…

layui 树组件tree 通过API获取数据

一、简单 var treedata[];tree.render({elem: #addLeftType,id: demoId,data: treedata,showCheckbox: true,oncheck: function(obj){console.log(obj.data); // 得到当前点击的节点数据console.log(obj.checked); // 节点是否被选中console.log(obj.elem); // 得到当前节点元素…