Modbus通信协议基础知识总结

1. 数据类型与存储区分类

Modbus协议将数据分为四类存储区,通过存储区代号区分:

  • 输出线圈(0x):可读写,对应二进制开关量(如继电器状态),地址范围000001-065536(绝对地址)。

  • 输入线圈(1x):只读,用于读取外部设备状态(如传感器开关),地址范围100001-165536

  • 输入寄存器(3x):只读,存储16位数据(如温度值),地址范围300001-365536

  • 输出寄存器(4x):可读写,用于控制设备参数(如设定频率),地址范围400001-465536

每个存储区最多支持65536个元素(线圈或寄存器),通过偏移量定位具体地址。

2. 地址模型

Modbus有两种地址表示方式:

  • PLC地址模型:直接使用存储区代号+偏移量,如D100表示D区第100个字,M10表示M区第10个位。

  • Modbus地址模型:采用六位绝对地址,由存储区代号+(偏移量+1)组成。

  • 例如:

    • 4区第1个寄存器 → 400001(绝对地址),对应偏移量0。

    • 4区第100个寄存器 → 400100(绝对地址),对应偏移量99。

为何协议报文中使用相对地址?
协议报文中仅包含偏移量(从0开始),结合功能码即可确定存储区。若用绝对地址(如400001),可能因功能码冲突导致歧义。

3. 长地址 vs 短地址模型

  • 长地址模型:六位数地址,覆盖全范围(如400001-465536),适用于PLC等复杂系统。

  • 短地址模型:五位数地址,范围缩小(如输出线圈00001-09999),常见于仪表、变频器等简单设备,便于配置。

示例转换
PLC的D100对应Modbus长地址400100(4区偏移量99),而短地址可能直接表示为40099

4. 协议分类

Modbus协议根据传输方式和介质分为多种类型:

  • 串口通信(RS232/485/422):

    • Modbus RTU:二进制编码,高效,使用CRC校验。

    • Modbus ASCII:文本编码,可读性强,效率较低,使用LRC校验。

  • 以太网通信

    • Modbus TCP:基于TCP/IP,无校验,适用于工业以太网。

    • Modbus RTU/ASCII Over TCP/UDP:将串口协议封装在TCP/UDP包中,兼容旧设备。

5. 功能码说明

功能码是操作指令的代号,定义了对存储区的读写行为:

  • 读取操作

    • 01:读取输出线圈(如继电器状态)。

    • 02:读取输入线圈(如传感器开关)。

    • 03:读取输出寄存器(如读取PLC参数)。

    • 04:读取输入寄存器(如采集温度值)。

  • 写入操作

    • 05:写入单个线圈(如控制继电器通断)。

    • 0F:写入多个线圈。

    • 06:写入单个寄存器(如修改频率设定)。

    • 10:写入多个寄存器

6. 关键总结

  • 存储区与地址:通过功能码+偏移量定位数据,长地址兼容全范围,短地址简化配置。

  • 协议选择:RTU适合高效串口通信,TCP用于以太网,ASCII便于调试。

  • 功能码核心作用:明确操作类型(读/写)和目标存储区,是协议交互的核心指令。

示例应用
若要读取变频器的运行频率(存储在输出寄存器4x,地址400010),使用功能码03,发送偏移量9(因绝对地址400010对应偏移量9)。设备返回该寄存器的16位数据值。

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

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

相关文章

docker环境下安装flink

前言 flink在实时计算领域中有着举足轻重的地位。这篇文章来介绍一下,在linux的docker环境下,怎么快速安装一个单机版本的flink。 操作流程 环境准备 检查docker环境是不是正常,如果在拉取镜像的时候比较慢,建议使用镜像加速&…

LeetCode 2614.对角线上的质数:遍历(质数判断)

【LetMeFly】2614.对角线上的质数:遍历(质数判断) 力扣题目链接:https://leetcode.cn/problems/prime-in-diagonal/ 给你一个下标从 0 开始的二维整数数组 nums 。 返回位于 nums 至少一条 对角线 上的最大 质数 。如果任一对角线上均不存在质数&…

MongoDB 只能存储能够序列化的数据(比如字符串、数字等),而 Python 的 UUID 对象并不是直接可以存入数据库的格式。

1. UUID 对象是什么? UUID 是 “Universally Unique Identifier”(通用唯一识别码)的缩写,是一种 128 位的数字,用于在全局范围内生成一个唯一的标识符。它常用于数据库中的记录标识、分布式系统中的对象标识等场景。…

linux 安全 xshell 使用

目录和文件 ls -l 查看目录和文件的权限的设置情况 加固方法 对于重要目录,建议执行如下类似操作 Chmod -R 750 /etc/rc.d/init.d/* 这样只有root可以读写和执行这个目录下的脚本 新建了一个用户Q 写入了一些信息 发现在root用户下可以进行文件打开 接下来用普通用…

自动驾驶背后的数学:特征提取中的线性变换与非线性激活

在上一篇博客「自动驾驶背后的数学:从传感器数据到控制指令的函数嵌套」—— 揭秘人工智能中的线性函数、ReLU 与复合函数中,我们初步探讨了自动驾驶技术中从传感器数据到控制指令的函数嵌套流程,其中提到了特征提取模块对传感器数据进行线性…

杨校老师课堂之编程入门与软件安装【图文笔记】

亲爱的同学们,热烈欢迎踏入青少年编程的奇妙世界! 我是你们的授课老师杨校 ,期待与大家一同开启编程之旅。 1. 轻松叩开编程之门 1.1 程序的定义及生活中的应用 程序是人与计算机沟通的工具。在日常生活中,像手机里的各类 APP、电…

DeepSeek 3FS 与 JuiceFS:架构与特性比较

近期,DeepSeek 开源了其文件系统 Fire-Flyer File System (3FS),使得文件系统这一有着 70 多年历时的“古老”的技术,又获得了各方的关注。在 AI 业务中,企业需要处理大量的文本、图像、视频等非结构化数据,还需要应对…

Coco AI 智能检索 Hugo Blog 集成指南

在此前的文章中,我们介绍了如何使用 Coco Server 连接 Notion,实现智能内容检索。本次,我们将进一步探索如何在 Coco Server 最新版本 中集成 Hugo Site,以便对 Hugo 站点 进行高效检索。 Coco Server 部署方式 要在本地或服务器…

Mobile-Agent-V:通过视频引导的多智体协作学习移动设备操作

25年2月来自北京交大和阿里巴巴公司的论文“Mobile-Agent-V: Learning Mobile Device Operation Through Video-Guided Multi-Agent Collaboration”。 移动设备使用量的快速增长,迫切需要改进自动化以实现无缝任务管理。然而,因缺乏操作知识&#xff0…

电鱼智能EFISH-RK3576-SBC工控板已适配Android 14系统

EFISH-RK3576-SBC工控板此前已提供了Linux 6.1.57系统,为了满足更多客户的需求,电鱼智能近日又为其成功适配了Android 14系统——硬件性能卓越的核心板与Android 14的深度组合,将为用户带来更加流畅、开放、智能的使用体验。 一、高性能处理器…

正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-5.1 uboot顶层Makefile分析-VSCode工程创建

前言: 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用: …

java 使用命令创建jar的常用参数整理

在Java中,创建JAR文件的命令是jar。以下是常用参数的表格展示: 参数信息含义使用场景使用示例c创建新的JAR文件用于创建一个新的JAR文件当需要打包类文件和资源文件时jar cf myapp.jar MyClass.classt列出JAR文件内容显示JAR文件中的内容列表查看JAR文件…

无线头戴式摄像头系统:无需标记点摄像头智能捕捉人脸表情

AH-T无线头戴式摄像头系统是一款可以精准捕捉人脸面部细微表情的设备,基于单目无标记点摄像头智能识别算法,无需在脸上粘贴标记点即可实现真人细微脸部表情的精准捕捉,采用头盔,面捕摄像头一体式人性化设计,可以让使用…

Cursor IDE 入门指南

什么是 Cursor? Cursor 是一款集成了 AI 功能的现代代码编辑器,基于 VSCode 开发,专为提高开发效率而设计。它内置强大的 AI 助手功能,能够理解代码、生成代码、解决问题,帮助开发者更快、更智能地完成编程任务。 基础功能 1.…

Tailwind CSS 中的 spacing 详解

🔍 Tailwind CSS 中的 spacing 详解 spacing(间距)是 Tailwind CSS 里的一个核心概念,它主要用于控制 padding(内边距)、margin(外边距)、width(宽度)、heig…

go语言学习教程推荐,零基础到做项目

一、基础入门阶段 官方教程(免费) • A Tour of Go:交互式入门教程,边学边练 • Go by Example:通过300代码片段学习语法 入门书籍 • 📘《Go语言圣经》中文版(免费在线阅读)&#…

STM32---FreeRTOS内存管理实验

一、简介 1、FreeRTOS内存管理简介 2、FreeRTOS提供的内存管理算法 1、heap_1内存管理算法 2、heap_2内存管理算法 4、heap_4内存管理算法 5、heap_5内存管理算法 二、FreeRTOS内存管理相关API函数介绍 三、 FreeRTOS内存管理实验 1、代码 main.c #include "st…

常见的前端安全问题

前端安全是 Web 开发中至关重要的一环,以下是常见的前端安全问题及对应的防御措施: 1. XSS(跨站脚本攻击) 攻击原理 攻击者向页面注入恶意脚本(如 JavaScript),在用户浏览器中执行,…

【VUE】ant design vue实现表格table上下拖拽排序

适合版本&#xff1a;ant design vue 1.7.8 实现效果&#xff1a; 代码&#xff1a; <template><div class"table-container"><a-table:columns"columns":dataSource"tableData":rowKey"record > record.id":row…

深入解析ES6+新语法:复杂的迭代器与生成器

一、迭代器&#xff08;Iterator&#xff09;&#xff1a;数据遍历的统一协议 1. 迭代器协议的本质 **迭代器协议&#xff08;Iterator Protocol&#xff09;** 是一种标准化的数据访问接口&#xff0c;它要求对象实现一个 next() 方法&#xff0c;每次调用返回包含 { valu…