Modbus常用功能码协议详解

2023-11-08

Modbus常用功能码协议详解

01H-读线圈状态

1)描述:读从机线圈寄存器,位操作,可读单个或者多个; 
2)发送指令: 
假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x0038,总共读取21个线圈。协议图如下: 

 
3)响应: 
返回数据的每一位对应线圈状态,1-ON,0-OFF,如下图; 

上表中data1表示0x0023-0x002a的线圈状态,data1的最低位代表最低地址的线圈状态,可以理解为小端模式;

data2表示地址0x002b-0x0033的线圈状态,如下表:

 
data3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表:


02H-读离散输入状态

1):读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议,此处省;


03H-读保持寄存器

1)描述:读保持寄存器,字节指令操作,可读单个或者多个; 
2)发送指令: 
从机地址0x01,保持寄存器起始地址0x0032,读2个保持寄存器

3)响应:

数据存储顺序


04H-读输入寄存器

1)描述:读输入寄存器,字节指令操作,可读单个或者多个; 
2)发送指令:同03H; 
3)响应:同03H;


05H-写单个线圈

1)描述:写单个线圈,位操作,只能写一个,写0xff00表示设置线圈状态为ON,写0x0000表示设置线圈状态为OFF 
2)发送指令: 
设置0x0032线圈为ON;

3)响应: 
同发送指令;


06H-写单个保持寄存器

1)描述:写单个保持寄存器,字节指令操作,只能写一个; 
2)发送指令: 
写0x0032保持寄存器为0x1232;

3)响应:同发送指令;


0FH-写多个线圈

1)描述:写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF。 
2)发送指令: 
线圈地址为0x04a5,写12个线圈, 

上图中DATA1为0x0c,表示: 

 
DATA2为0x02,不够8位,字节高位填充0:

3)响应:


10H-写多个保持寄存器

1)描述:写多个保持寄存器,字节指令操作,可写多个; 
2)发送指令: 
保持寄存器起始地址为0x0034,写2个寄存器4个字节的数据;


3)响应:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Modbus常用功能码协议详解 的相关文章

随机推荐

  • arima模型 p q d 确定_【干货】时间预测之 ARIMA模型

    ARIMA 是 AutoRegressive Integrated Moving Average的简称 看起来很复杂 其实这个模型本身是多个模型的叠加或者说混合 AR 自相关模型 AutoRegressive MA 移动平均模型 Movin
  • Python显示目录的树形结构

    转自 http blog chinaunix net uid 21374062 id 5198995 html Python显示目录的树形结构 coding utf 8 仿Linux命令tree生成树形目录结构 并汇总当前目录下文件总算 A
  • pes2017服务器维护时间,PES2017授权详情与球场数据包发布时间

    East Dorsetshire AFC Bournemouth BOU Lancashire Claret Burnley BRN London FC Chelsea CHE South Norwood Crystal Palace CR
  • python:多维数组变一维数组

    python 多维数组变一维数组 b a flatten 将多维数组变为1维数组 具体代码如下 import numpy as np 1 随机生成一个4行3列的多维数组a a np random randn 4 3 print a prin
  • selenium自动化,更新到最新的chrome驱动

    很久没有做自动化了 最近想要熟悉下 发现之前的chrome驱动器与现在的chrome浏览器版本不匹配了导致报错 提示如下 raise exception class message screen stacktrace selenium co
  • (已解决)显卡(N卡)设置独显后,指定程序依旧使用集显渲染

    显卡 N卡 设置独显后 指定程序依旧使用集显渲染 设置流程如下 设置流程如下 1 打开 nvdia 控制面板 2 设置全局为独显 3 修改指定程序为独显 4 以上几步若无效 则按如下修改 选择对应的程序
  • Linux安装nginx

    Linux安装nginx 1 下载 2 准备目录 3 上传 解压 5 设置安装路径 如果 报错 gcc pcre 6 编译 7 安装 8 启动 9 其他命令 10 判断Nginx配置是否正确命令 11 开放nginx默认端口号80 12 访
  • 02_02_广度优先搜索(Breadth-First Search,BFS)

    广度优先搜索 Breadth First Search BFS 广度优先搜索 Breadth First Search BFS 介绍 是一种图遍历算法 其原理是逐层遍历图的节点 BFS从起始节点开始 先访问起始节点的所有邻居节点 然后再逐层
  • 【知识分享】关于建立GitHub个人博客的问题和解决办法

    前言 GitHub是可以共享 存储的平台 我们可以用它 1 管管自己代码 类似一个程序员专版的Onedrive 当然也不仅仅是代码 任何文件都支持 不少人用GitHub来写博客 也就是使用Github Pages服务 它会自动帮你记录代码的
  • Qt扫盲-QWidget理论使用总结

    QWidget理论使用总结 一 概述 二 顶层 控件 和子 控件 三 复合控件 四 自定义控件和绘制 五 大小提示和大小策略 六 事件 七 一组函数和属性 八 QWidget样式表 九 透明度和双缓冲 十 创建半透明窗口 一 概述 widg
  • Java中同一个文件里类和方法的引用

    Java中同一个文件里类和方法的引用 在项目开发时往往需要在同一个文件里创建几个类 并互相引用 但小白们搞不懂 所以我给大家讲解一下 目录 Java中同一个文件里类和方法的引用 1 权限修饰符 2 类的引用 1 注意修饰符 2 同文件引用
  • windows 各种消息

    win32 消息
  • H3C平台部署chatGLM2-6B 且通过两块GPU调用

    H3C平台部署chatGLM2 6B 且通过两块 调用 文件上传 首先在github上下载chatGLM2 6B的参数文件和模型文件 简单来说是在github上搜索chatGLM2 6B 如下图所示 点击右侧 下载 然后解压到新建文件夹 C
  • c++ /QT 加锁的懒汉式单例

    c 加锁的懒汉式单例 singleton h ifndef SHAREPTR T H define SHAREPTR T H pragma once include
  • Perl Getopt::Long命令行参数传递

    原文链接 https www javatpoint com perl command line arguments The simple command line options are done using s option Comple
  • 数论——欧拉函数

    在数论中 对正整数n 欧拉函数是少于或等于n的数中与n互质的数的数目 此函数以其首名研究者欧拉命名 它又称为Euler s totient function 函数 欧拉商数等 例如 8 4 因为1 3 5 7均和8互质 百度百科词条 欧拉函
  • 虚拟机的启动内核日志

    等有时间了 回来分析下 0 000000 Initializing cgroup subsys cpuset 0 000000 Initializing cgroup subsys cpu 0 000000 Initializing cgr
  • LaTeX各种矩阵输入方法总结

    begin Bmatrix 1 2 4 5 end Bmatrix 结果 1 2
  • 【深度学习图像识别课程】毕业项目:狗狗种类识别(4)代码实现

    本博文涉及以下 六 目录 Zero 导入数据集 一 检测人脸 二 检测狗狗 三 从头实现CNN实现狗狗分类 四 迁移VGG16实现狗狗分类 五 迁移ResNet 50实现狗狗分类 六 自己实现狗狗分类 六 自己实现狗狗分类整体流程 实现一个
  • Modbus常用功能码协议详解

    Modbus常用功能码协议详解 01H 读线圈状态 1 描述 读从机线圈寄存器 位操作 可读单个或者多个 2 发送指令 假设从机地址位0x01 寄存器开始地址0x0023 寄存器结束抵制0x0038 总共读取21个线圈 协议图如下 3 响应