Modbus_TCP

MODBUS TCP 功能码的作用与区别详解

MODBUS TCP 是一种基于 TCP/IP 的工业通信协议,功能码(Function Code)定义了客户端(Master)请求的操作类型。以下是其核心功能码的详细分类、作用与区别:


一、功能码分类

类别 功能码范围 操作类型
公共功能码 1~64, 73~99 标准操作(如读写寄存器)
用户自定义码 65~72, 100~127 厂商或设备自定义扩展功能

二、核心功能码详解

1. 数据读取功能码

功能码 名称 作用 数据类型 权限 示例应用
01 Read Coils 读取线圈状态(开关量输出) 位(Bit) 读取继电器开关状态
02 Read Discrete Inputs 读取离散输入状态(开关量输入) 位(Bit) 读取传感器开关信号
03 Read Holding Registers 读取保持寄存器(可读写的模拟量数据) 字(Word) 读取PLC温度设定值
04 Read Input Registers 读取输入寄存器(只读的模拟量输入) 字(Word) 读取传感器实时值

区别

  • 01 vs 02:线圈(输出)与离散输入(输入)权限不同。
  • 03 vs 04:保持寄存器可读写,输入寄存器只读。

2. 数据写入功能码

功能码 名称 作用 数据类型 权限 示例应用
05 Write Single Coil 写入单个线圈状态 位(Bit) 控制继电器通断
06 Write Single Register 写入单个保持寄存器 字(Word) 修改PLC设定参数
15 Write Multiple Coils 批量写入多个线圈状态 位(Bit) 同时控制多设备启停
16 Write Multiple Registers 批量写入多个保持寄存器 字(Word) 批量更新控制参数

区别

  • 05 vs 15:单线圈写入 vs 多线圈批量写入。
  • 06 vs 16:单寄存器写入 vs 多寄存器批量写入。

3. 其他功能码

功能码 名称 作用
07 Read Exception Status 读取设备异常状态(仅限串行链路)
22 Mask Write Register 按位掩码修改寄存器部分位
23 Read/Write Registers 原子操作同时读写多个保持寄存器

三、关键区别

1. 数据类型

类型 功能码 典型用途
位操作 01, 02, 05, 15 开关量控制(如继电器)
字操作 03, 04, 06, 16 模拟量数据(如温度)

2. 读写权限

权限 功能码 典型数据
01, 02, 03, 04 传感器输入、设备状态
05, 06, 15, 16 控制命令、参数设定

3. 单次 vs 批量操作

操作类型 功能码 适用场景
单次操作 05, 06 少量数据更新
批量操作 15, 16 高效传输大量数据

四、异常响应

  • 异常功能码:原功能码 + 0x80(如 `03
posted @ 2025-04-25 19:16  XingLongHuang  阅读(176)  评论(0)    收藏  举报