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

Modbus TCP 报文说明

Modbus TCP 报文说明

  • Modbus TCP 报文结构
  • 报文解析
  • 功能码说明
  • Modbus 功能码与 PLC 地址的对应关系

Modbus TCP 报文结构

  1. 事务标识符(Transaction Identifier,2 字节):
    用于匹配请求和响应,通常由客户端生成,服务端在响应中原样返回。
  2. 协议标识符(Protocol Identifier,2 字节):
    始终为 0x0000,表示这是 Modbus 协议。
  3. 长度域(Length Field,2 字节):
    指定后续数据部分的字节长度(含单元标识符)。
  4. 单元标识符(Unit Identifier,1 字节):
    表示目标从站设备地址,通常在网关或多设备场景中使用。
  5. 功能码及数据域(Function Code + Data):
    Modbus 数据内容。

报文解析

Modbus TCP 报文是:

50 D4 00 00 00 06 01 03 00 0A 00 01
  1. 事务标识符(2 字节):
    50 D4
    客户端生成的随机标识符,用于标记请求。它的值为 0x50D4(十进制 20692)。
    在响应报文中会原样返回,帮助客户端识别请求对应的响应。
  2. 协议标识符(2 字节):
    00 00
    始终为 0,表示使用 Modbus 协议。
  3. 长度域(2 字节):
    00 06
    后续数据部分的长度为 6 字节,包括单元标识符和功能码+数据。
  4. 单元标识符(1 字节):
    01
    表示目标从站地址为 1。
  5. 功能码(1 字节):
    03
    读取保持寄存器。
  6. 数据域(N 字节):
    00 0A:起始地址为 10。
    00 01:读取 1 个寄存器。

功能码说明

功能码操作寄存器类型数据类型常见场景
01读取线圈状态(Coils)离散输出(DO)0 或 1(按位)监控输出设备的状态,例如继电器
02读取离散输入状态离散输入(DI)0 或 1(按位)检查输入设备的状态,例如按钮
03读取保持寄存器(Holding Registers)数据寄存器或变量(D 或 R 等)16 位(按字)获取设备配置或测量数据
04读取输入寄存器(Input Registers)模拟量输入寄存器(AI)16 位(按字)获取设备配置或测量数据
05写单个线圈(Write Single Coil)离散输出(DO)将单个线圈的状态写为 0 或 1
06写单个保持寄存器(Write Single Register)数据寄存器或变量(D 或 R 等)16 位(按字)向单个保持寄存器写入16 位数据。
15写多个线圈(Write Multiple Coils)离散输出(DO)一次性写入多个线圈状态。
16写多个保持寄存器(Write Multiple Registers)数据寄存器或变量(D 或 R 等)一次性写入多个保持寄存器的数据。

Modbus 功能码与 PLC 地址的对应关系

功能码Modbus 寄存器类型PLC 地址类型地址范围(标准 Modbus)
01线圈(Coils)离散输出(DO)00001 到 09999
02离散输入(Discrete Inputs)离散输入(DI)10001 到 19999
03保持寄存器(Holding Registers)数据寄存器或变量(D 或 R 等)40001 到 49999
04输入寄存器(Input Registers)模拟量输入寄存器(AI)30001 到 39999
http://www.lryc.cn/news/512133.html

相关文章:

  • 音视频入门基础:MPEG2-TS专题(24)——FFmpeg源码中,显示TS流每个packet的pts、dts的实现
  • 大模型:OneFitsAll、Time - LLM、LLaTA
  • 连锁餐饮行业数据可视化分析方案
  • Ubuntu 下使用命令行将 U 盘格式化为 ext4、FAT32 和 exFAT 的详细教程
  • 多说话人ASR的衡量指标和有效计算工具包
  • 英伟达(NVIDIA)
  • 【环境配置】Jupyter Notebook切换虚拟环境
  • 嵌入式单片机窗口看门狗控制与实现
  • NiChart 多模态神经影像(structural MRI,functional MRI,and diffusion MRI)处理和分析工具包安装
  • Es搭建——单节点——Linux
  • Python自动化测试之线上流量回放:录制、打标、压测与平台选择
  • k-Means聚类算法 HNUST【数据分析技术】(2025)
  • STM32学习之 按键/光敏电阻 控制 LED/蜂鸣器
  • VUE前端实现防抖节流 Lodash
  • Ubuntu20.04 交叉编译Qt5.15.15 for rk3588
  • Unity编译Android apk包进度奇慢或gradle报错的解决方案
  • 【Qt】多元素控件:QListWidget、QTableWidget、QTreeWidget
  • Docker基础知识 Docker命令、镜像、容器、数据卷、自定义镜像、使用Docker部署Java应用、部署前端代码、DockerCompose一键部署
  • Qt For Android之环境搭建(Qt 5.12.11 Qt下载SDK的处理方案)
  • 低代码开发中 DDD 领域驱动的页面权限控制
  • 如果你的网站是h5网站,如何将h5网站变成小程序-除开完整重做方法如何快速h5转小程序-h5网站转小程序的办法-优雅草央千澈
  • docker redis安装
  • apisix的hmac-auth认证
  • elementPlus消息组件多按钮案例
  • 计算机视觉目标检测-2
  • 爬虫数据存储:Redis、MySQL 与 MongoDB 的对比与实践
  • 深入解析MySQL索引结构:从数组到B+树的演变与优化
  • 【疑难杂症】 HarmonyOS NEXT中Axios库的响应拦截器无法拦截424状态码怎么办?
  • jmeter并发用户逐步递增压测找性能拐点
  • 【PostgreSQL使用】最新功能逻辑复制槽的failover,大数据下高可用再添利器