Modbus协议是一种广泛应用于工业自动化领域的通信协议,其简单易用、灵活可靠的特点使其成为工业控制领域广泛使用的协议之一。Modbus通信功能码是Modbus协议的重要组成部分,用于指示Modbus报文的功能。
Modbus功能码概述
Modbus功能码定义在Modbus协议的应用层,共包含255个功能码,其中常用功能码如下:
- 读线圈状态(01):读取指定从站的线圈状态。
- 读离散量输入状态(02):读取指定从站的离散量输入状态。
- 读保持寄存器值(03):读取指定从站的保持寄存器值。
- 读输入寄存器值(04):读取指定从站的输入寄存器值。
- 写单个线圈(05):设置或复位指定从站的单个线圈。
- 写单个保持寄存器(06):设置指定从站的单个保持寄存器值。
- 写多个线圈(15):设置或复位指定从站的多个线圈。
- 写多个保持寄存器(16):设置指定从站的多个保持寄存器值。
- 读文件记录(14):读取指定从站的文件记录。
- 写文件记录(15):写入指定从站的文件记录。
- 诊断(17):执行诊断测试。
- 报告从站标识符(18):获取从站标识符。
Modbus功能码应用实例
以下以读保持寄存器值功能码(03)为例,说明Modbus功能码的应用:
场景:读取Modbus从站1的保持寄存器100-102的值。
Modbus报文:
主机 -> 从站: 帧头:0x0A 事务标识符:0x00 00 协议标识符:0x00 00 长度:0x06 单元标识符:0x01 功能码:0x03 起始寄存器地址:0x64 寄存器数量:0x03 校验码:0xCF从站 -> 主机: 帧头:0x0A 事务标识符:0x00 00 协议标识符:0x00 00 长度:0x09 单元标识符:0x01 功能码:0x03 数据字节:0x00 01 02 03 04 05 校验码:0x25
说明:
- 主机首先发送Modbus报文,其中包含事务标识符、协议标识符、长度、单元标识符、功能码、起始寄存器地址、寄存器数量等信息。
- 从站收到Modbus报文后,解析并执行功能码03,读取指定寄存器中的值。
- 从站将读取到的数据封装成Modbus报文并发送给主机。
- 主机收到Modbus报文后,解析并校验数据,确认数据正确后使用。
总结
Modbus通信功能码是Modbus协议的重要组成部分,用于指示Modbus报文的功能。了解Modbus功能码的含义及应用,对于理解和使用Modbus协议至关重要。