您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Modbus常用功能码协议有哪些
## 一、Modbus协议概述
Modbus是一种**串行通信协议**,由Modicon公司(现为施耐德电气)于1979年开发,广泛应用于工业自动化领域。它采用**主从架构**,支持多种物理层(如RS-232、RS-485、TCP/IP),具有简单、开放、易实现的特点。协议的核心是通过**功能码(Function Code)**定义操作类型,实现数据读写和设备控制。
---
## 二、Modbus功能码分类
Modbus功能码分为三类,用1字节表示(十进制1~127):
1. **公共功能码**:公开定义且标准化的操作(最常用)
2. **用户自定义功能码**(65~72、100~110):厂商可扩展用途
3. **保留功能码**:协议保留或历史遗留代码
以下重点介绍**公共功能码**及其应用场景。
---
## 三、常用功能码详解
### 1. 读取数据类功能码
| 功能码 | 名称 | 数据类型 | 作用 |
|--------|--------------------------|----------------|-------------------------------|
| 01 | Read Coils | 位(Bit) | 读取离散量输出(DO)状态 |
| 02 | Read Discrete Inputs | 位(Bit) | 读取离散量输入(DI)状态 |
| 03 | Read Holding Registers | 字(16-bit) | 读取保持寄存器数据(如PLC变量)|
| 04 | Read Input Registers | 字(16-bit) | 读取输入寄存器数据(如传感器)|
**示例场景**:
- 用`03`功能码读取变频器的当前频率(保持寄存器地址40001)
- 用`02`功能码检测急停按钮状态(离散输入地址10001)
---
### 2. 写入数据类功能码
| 功能码 | 名称 | 数据类型 | 作用 |
|--------|--------------------------|----------------|-------------------------------|
| 05 | Write Single Coil | 位(Bit) | 单点写入线圈状态(ON/OFF) |
| 06 | Write Single Register | 字(16-bit) | 单点写入保持寄存器 |
| 15 | Write Multiple Coils | 位(Bit) | 多点写入线圈状态 |
| 16 | Write Multiple Registers | 字(16-bit) | 多点写入保持寄存器 |
**示例场景**:
- 用`05`功能码控制继电器吸合(线圈地址00001写入FF00)
- 用`16`功能码批量设置PID参数(寄存器地址40010~40012)
---
### 3. 诊断与特殊功能码
| 功能码 | 名称 | 用途 |
|--------|--------------------------|-------------------------------|
| 07 | Read Exception Status | 读取设备的异常状态 |
| 22 | Mask Write Register | 对寄存器指定位进行掩码修改 |
| 23 | Read/Write Registers | 同时读写多个寄存器(高效操作)|
---
## 四、功能码使用注意事项
1. **地址映射规则**
- Modbus地址通常以偏移量表示(如40001对应协议中的地址0x0000)
- 不同设备厂商可能自定义地址范围(需查阅设备手册)
2. **错误响应机制**
- 若请求失败,从站返回**异常码**(功能码+0x80,如`83`表示`03`功能码错误)
- 常见异常码:
- `01` 非法功能码
- `02` 非法数据地址
- `03` 非法数据值
3. **数据格式处理**
- 寄存器数据可能采用大端序(Big-Endian)或浮点编码(IEEE 754)
- 需根据设备规范解析(如`03`功能码返回的4字节浮点数)
---
## 五、不同传输模式下的功能码差异
| 传输模式 | 特点 |
|----------------|----------------------------------------------------------------------|
| **Modbus RTU** | 功能码直接通过二进制传输,需CRC校验(典型波特率9600/19200) |
| **Modbus TCP** | 功能码封装在TCP帧中,增加MBAP头(事务标识符、协议标识等) |
| **Modbus ASCII** | 功能码转换为ASCII字符传输,效率低但可人工调试(起始符`:`,结束符`CRLF`)|
---
## 六、总结
Modbus功能码是协议实现设备交互的核心,掌握常用功能码可覆盖90%的工业通信场景。实际应用中需注意:
- 优先使用标准功能码(01~04、05~06、15~16)
- 严格遵循设备文档中的地址定义
- 通过异常响应排查通信问题
附:完整功能码列表参考[Modbus官方协议规范](https://www.modbus.org/specs.php)
注:本文约1050字,采用Markdown格式,包含表格、代码块、层级标题等元素,可直接用于技术文档发布。如需扩展具体功能码的报文示例或编程实现,可进一步补充。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。