当前位置: 首页 > news >正文

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位数据值。

相关文章:

  • 003-掌控命令行-CLI11-C++开源库108杰
  • 音频大语言模型可作为描述性语音质量评价器
  • java学习笔记4
  • Java动态代理模式深度解析
  • Git 分支删除操作指南(含本地与远程)
  • 如何将MediaPipe编译成Android中Chaquopy插件可用的 .whl 文件
  • 鸿蒙NEXT开发问题大全(不断更新中.....)
  • PyQt5库 各种导入项的作用
  • BUUCTF Pwn babyheap_0ctf_2017 Unsorted bin attack部分
  • Rust语言的物理引擎
  • 嵌入式硬件篇---PWM输出通道定时器
  • JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
  • FreeRTOS移植并实现一个多任务程序
  • mysql中查询没有主键的表
  • 《Python深度学习》第五讲:文本处理中的深度学习
  • 一学就会:A*算法详细介绍(Python)
  • springcloud, nacos使用rabbitMq
  • 前端面试项目拷打
  • Django:内置和自定义中间件
  • Java集合的底层原理
  • 赵乐际:深入学习贯彻习近平生态文明思想,推动森林法全面有效贯彻实施
  • “两高”出台司法解释,严打破坏黑土地资源犯罪
  • 柳向春:关于美国国会图书馆所藏《全芳备祖》的一些故事
  • 解放日报头版:上海张江模力社区托举“年轻的事业”
  • 市场驱动的系统改造:丹麦零弃风经验研究
  • 王毅在金砖正式成员和伙伴国外长会上的发言