modbus协议

news2024/10/3 2:19:07

1 MODBUS

  • 应用层报文传输协议
ADU应用数据单元
PDU协议数据单元
MBMODBUS协议
MBAPMODBUS协议
  • ADU:地址域 + PDU + 差错校验
  • PDU:功能码+数据
  • 串行链路:
    • 最大RS485 ADU = 256 字节
    • PDU = 256 - 服务器地址(1字节)- CRC(2字节)= 253 字节
  • TCP MODBUS
    • ADU = 249 字节 + MBAP(7字节)= 256 字节

请求PDU,mb_req_pdu
响应PDU,mb_rsp_pdu
异常响应PDU,mb_excep_rsp_pdu

  • 大端传输,big-endian
    (16 bit)0x1234:首先发送 0x12,然后0x34

数据模型

离散量输入单个bit只读
线圈单个bit读写
输入寄存器16 bit只读
保持寄存器16 bit读写

2 功能码

  • 正常响应
    响应功能码 = 请求功能码
  • 异常响应
    响应功能码 = 请求功能码 + 0x80

功能码01:读线圈

功能码02:读离散量输入

  • 线圈读取数量:0x0001 ~ 0x07D0 (2000)
  • 指示状态:1为ON,0为OFF
  • 字节数:N = 输出数量 / 8 ,如果余数不等于0,则等于 N+1
    在这里插入图片描述
    在这里插入图片描述

功能码03:读保持寄存器

功能码04:读输入寄存器

  • 寄存器数量:0x0001 ~ 0x007D (125)
  • 寄存器数据:每个寄存器 2 个字节
  • 字节数: 2 * N(寄存器数量)
    在这里插入图片描述
    在这里插入图片描述

功能码05:写单个线圈

  • 输入输出状态:0xFF 00为ON,0x00 00为OFF
    在这里插入图片描述

功能码06:写单个寄存器

  • 寄存器值:0x0000 ~ 0xFFFF
    在这里插入图片描述

功能码15 (0x0F) :写多个线圈

  • 线圈数量:0x0001 ~ 0x07B0
  • 指示状态:1为ON,0为OFF
  • 字节数:N = 输出数量 / 8 ,如果余数不等于0,则等于 N+1
    在这里插入图片描述

功能码16 (0x10) :写多个寄存器

  • 寄存器数量 N:0x0001 ~ 0x007B (123)
  • 寄存器数据:每个寄存器 2 个字节
  • 字节数: 2 * N(寄存器数量)
    在这里插入图片描述

功能码20 (0x14) :读文件记录

功能码21 (0x15) :写文件记录

功能码22 (0x16) :屏蔽写寄存器

  • 利用AND屏蔽、OR屏蔽以及寄存器内容的组合来修改特定保持寄存器的内容
  • 算法:结果 = (当前内容 AND And_Mask)OR(Or_Mask AND And_Mask
    • 如果Or_Mask = 0,则:结果 = (当前内容) AND (And_Mask
    • 如果And_Mask = 0,则:结果 = (Or_Mask)

功能码23 (0x17) :读/写多个寄存器

  • 在一个单独modbus事务中,实现了一个读操作和一个写操作的组合
  • 读取数量 N:0x0001 ~ 0x007D (125)
  • 写入数量 N:0x0001 ~ 0x0079 (121)

功能码43 (0x2B) :读设备识别码

  • 读取与远程设备的物理描述和功能描述相关的识别码和附加报文
  • 读设备识别码的接口模拟为一个地址空间(一组可寻址数据元素,即:对象。由对象ID确定该数据元素)
  • 接口由3种对象组成:
    • 基本设备识别码【必备的】(厂商名称、产品代码、修订本号)
    • 正常设备识别码
    • 扩展设备识别码
  • 指配号为14的MODBUS封装接口识别读识别码请求,访问类型
    • 01:请求获得基本设备识别码(流访问)
    • 02:请求获得正常设备识别码(流访问)
    • 03:请求获得扩展设备识别码(流访问)
    • 04:请求获得特定识别码对象(专用访问)
  • 识别码数据不适合单独响应的情况下,可需要几个请求/响应事务处理。第一个事务处理,客户机必须设置对象id为0。
  • 【响应】(在流访问下)“随后更多“ = FF(请求下一个对象id)/ 00(无更多对象)
  • 设备的识别码一致性等级和支持访问的类型
    • 01:基本识别码(仅流访问)
    • 02:正常识别码(仅流访问)
    • 03:扩展识别码(仅流访问)
    • 81:基本识别码(流访问和单个访问)
    • 82:正常识别码(流访问和单个访问)
    • 83:扩展识别码(流访问和单个访问)
      在这里插入图片描述

MODBUS异常响应

异常码名称含义
01非法功能功能码不允许
02非法数据地址数据地址不允许
03非法数据值数据值不允许(例如,隐含长度)
04从站设备故障
05确认服务器(从站)已接收请求,需要长时间处理。
防止客户机(主站)发生超时错误,可继续轮询确认。
06从属设备忙服务器(从站)处理长时间命令,稍后重新传输
08存储奇偶性查错不能通过一致性校验,读取文件发现奇偶性校验错误
0A不可用网关不能为处理请求分配内部通信路径,网关错误配置或过载
0B网关目标设备响应失败设备未在网络中

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

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

相关文章

Linux学习(7)文件权限与目录配置

目录 1. 使用者与群组 1,文件拥有者 2,群组概念 3,其他人 Linux 用户身份与群组记录的文件 2.Linux 文件权限概念 Linux的文件属性 第一栏代表这个文件的类型与权限(permission): 第二栏表示有多少档名连结到此节点(i-no…

linux CUDAtoolkit+cudnn+tensorrt 的安装

windows上 CUDAtoolkitcudnn的安装 CUDAtoolkitcudnn的安装 须知 use command ubuntu-drivers devices查看你的显卡类型和推荐的驱动版本百度 nvidia-driver-*** 支持的 cuda 或 去文档查找驱动(比如450,460)匹配的cuda版本 下载 网盘下载 https://www.aliyundr…

Python实现贝叶斯优化器(Bayes_opt)优化Catboost回归模型(CatBoostRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。1.项目背景贝叶斯优化器 (BayesianOptimization) 是一种黑盒子优化器,用来寻找最优参数。贝叶斯优化器是…

18523-47-2,3-Azidopropionic Acid,叠氮基丙酸,可以与炔烃发生点击化学反应

【中文名称】3-叠氮基丙酸【英文名称】 3-Azidopropionic Acid,3-Azidopropionic COOH【结 构 式】【CAS】18523-47-2【分子式】C3H5N3O2【分子量】115.09【纯度标准】95%【包装规格】1g,5g,10g【是否接受定制】可进行定制,定制时…

龙蜥开发者说:为爱发电!当一个龙蜥社区打包 Contributor 是怎样的体验?| 第16期

「龙蜥开发者说」第 16 期来了!开发者与开源社区相辅相成,相互成就,这些个人在龙蜥社区的使用心得、实践总结和技术成长经历都是宝贵的,我们希望在这里让更多人看见技术的力量。本期故事,我们邀请了龙蜥社区开发者 Fun…

无线通信时代的新技术----信标( Beacon)

随着IT技术的发展,无线通信技术也在不断发展。 现已根据预期用途开发了各种无线通信技术,例如 NFC、WIFI、Bluetooth和 RFID。 车辆内部结构的复杂化和数字化,车载通信网络技术的重要性也越来越高。 一个典型的例子是远程信息处理。 远程信息…

注重邮件数据信息安全 保障企业稳步发展

近年来,世界各地的政府、银行、电信公司、制造业以及零售业等,不断发生数据泄密事件。 就企业而言,邮件数据很容易成为竞争对手或者诈骗者窃取的目标。 电子邮件是企业中一种重要的沟通工具但是随着网络攻击手段的不断升级,电子邮…

RN面试题

RN面试题1.React Native相对于原生的ios和Android有哪些优势?1.性能媲美原生APP 2.使用JavaScript编码,只要学习这一种语言 3.绝大部分代码安卓和IOS都能共用 4.组件式开发,代码重用性很高 5.跟编写网页一般,修改代码后即可自动刷…

关系数据库

关系的三类完整性约束实体完整性规则• 保证关系中的每个元组都是可识别的和惟一的 • 指关系数据库中所有的表都必须有主键,而且表中不允许存在如下记录:– 无主键值的记录– 主键值相同的记录• 原因:实体必须可区分• 就像实体-学生&#…

谷歌外推留痕,谷歌搜索留痕快速收录怎么做出来的?

本文主要分享谷歌搜索留痕的收录效果是怎么做的,让你对谷歌留痕技术有一个全面的了解。 本文由光算创作,有可能会被修改和剽窃,我们佛系对待这样的行为吧。 谷歌搜索留痕快速收录怎么做出来的? 答案是:通过谷歌蜘蛛…

XLSX.utils读取日期格式错误

表格中的时间为2023/2/16调用 XLSX.utils.sheet_to_json 读取到的时间为2/16/23时间格式不对-期待的时间格式为2023-02-16 00:00增加代码 cellDates: true, dateNF: "yyyy-MM-dd HH:mm" 解决问题readerData (rawFile) {this.loading truethis.isFile true // 流程结…

透射电镜测试样品的制备要求和方法

透射电镜(Transmission Electron Microscope,TEM)是一种高分辨率的显微镜,能够对样品进行高精度的成像和分析。为了得到高质量的TEM图像,样品制备是非常重要的。 ​ 样品选择 TEM样品应该是具有明确结构和化学成分的…

《分布式技术原理与算法解析》学习笔记Day21

分布式数据存储三要素 什么是分布式数据存储系统? 分布式存储系统的核心逻辑,就是将用户需要存储的数据根据某种规则存储到不同的机器上,当用户想要获取指定数据时,再按照规则到存储数据的机器中获取。 分布式存储系统的三要素…

苏州市软件行业协会第五届第四次理事会暨元宇宙专委会成立决议会在苏召开

2月17日,2022年度苏州市软件行业协会第五届第四次理事会暨苏州市软件行业协会元宇宙专委会成立决议会在西交利物浦大学顺利召开。会议选举西交利物浦大学担任苏州市软件行业协会元宇宙专委会第一届轮值会长单位。 苏州市工信局大数据处处长(信息化和软件…

python+pytest接口自动化(1)-接口测试基础

接口定义一般我们所说的接口即API,那什么又是API呢,百度给的定义如下:API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或…

MySQL锁篇

文章目录说明:锁篇一、MySQL有那些锁?二、MySQL 是怎么加锁的?三、update 没加索引会锁全表?四、MySQL 记录锁间隙锁可以防止删除操作而导致的幻读吗?五、MySQL 死锁了,怎么办?六、字节面试&…

【单例模式】单例模式创建的几种方式

一、饿汉模式饿汉模式是在类加载的时候就初始化了一份单例对象,所以他不存在线程安全问题。优点:不存在线程安全问题,天然的线程安全缺点:在类加载的时候就已经创建了对象,如果后续代码里没有使用到单例,就…

跟20%的同行去竞争80%的蓝海市场不香吗?

近年来,由于科技的发展等诸多因素,跨境电商行业有了长足的发展空间,不少人也有想要入行的打算。对于不是很了解这一行业的新手来说,如何选择合适的跨境电商市场与平台就显得至关重要。 一直以来,作为全球第四大电商市…

Android自定义View实现横向的双水波纹进度条

效果图:网上垂直的水波纹进度条很多,但横向的很少,将垂直的水波纹改为水平的还遇到了些麻烦,现在完善后发布出来,希望遇到的人少躺点坑。思路分析整体效果可分为三个,绘制圆角背景和圆角矩形,绘…

阅读HAL源码之重点总结

HAL封装中有如下特点(自己总结的): 特定外设要设置的参数组成一个结构体; 特定外设所有寄存器组成一个结构体; 地址基本都是通过宏来定义的,定义了各外设的起始地址,也就是对应寄存器结构体的地…