IEC 61784-6:现场总线通信系统—Modbus
IEC 61784-6标准中关于Modbus的内容,主要规定了Modbus协议在现场总线通信系统中的应用与要求。Modbus协议是一种广泛应用的工业通信协议,尤其是在自动化、控制系统和设备之间的数据交换中。在IEC 61784-6中,Modbus的数据交换格式主要包括以下几个方面的规定:
1. Modbus RTU与Modbus TCP
IEC 61784-6标准规定了Modbus协议的两种主要变体:Modbus RTU 和 Modbus TCP。
- Modbus RTU(Remote Terminal Unit):这是一种基于串行通信的协议,通常使用RS-485、RS-232等串行通信线路。
- Modbus TCP:这是一种基于以太网的协议,适用于局域网(LAN)中设备之间的通信。
2. Modbus数据帧格式
在IEC 61784-6中,对于数据交换格式的规定,Modbus协议采用特定的数据帧结构。无论是Modbus RTU还是Modbus TCP,数据交换的核心格式是类似的,主要包括以下几个部分:
1) Modbus RTU 数据帧结构
Modbus RTU通信协议的数据帧由以下几个字段组成:
- 地址字段(1字节):该字段包含目标设备的唯一地址(通常在1到247之间)。
- 功能码(1字节):功能码定义了要执行的操作(如读取、写入)。常见功能码包括:
- 0x03:读取保持寄存器(Read Holding Registers)
- 0x04:读取输入寄存器(Read Input Registers)
- 0x06:写单个寄存器(Write Single Register)
- 0x10:写多个寄存器(Write Multiple Registers)
- 数据字段:该字段包含与功能码相关的操作数据。根据功能码的不同,数据字段的内容也会有所不同。例如,对于读取操作,数据字段通常包含要读取的寄存器的值;对于写操作,则包含要写入寄存器的新值。
- CRC校验码(2字节):用于检测数据传输中的错误。Modbus RTU使用CRC-16校验来确保数据的完整性。
示例: 读取保持寄存器的Modbus RTU数据帧(请求帧):
| 地址 | 功能码 | 数据(寄存器值) | CRC |
| 0x01 | 0x03 | 0x00 0x02 | CRC |
在此示例中,设备地址为0x01,功能码是0x03(读取保持寄存器),数据字段包含两个寄存器的值,最后是CRC校验码。
2) Modbus TCP 数据帧结构
Modbus TCP的帧结构较RTU稍微复杂一些,因为它基于以太网传输,需要添加更多的头信息。Modbus TCP的数据帧由以下部分组成:
- TCP头部(7字节):包括事务标识符(Transaction Identifier)、协议标识符(Protocol Identifier)、长度字段(Length)和单元标识符(Unit Identifier)。其中:
- 事务标识符:用于标识一次请求或响应。
- 协议标识符:用于标识Modbus协议。
- 长度字段:指定后续数据字段的长度。
- 单元标识符:通常为1,用于标识目标设备。
- Modbus消息头(1字节):与Modbus RTU相同,表示功能码。
- 数据字段:功能码对应的操作数据字段,与Modbus RTU类似。
- 错误检查:Modbus TCP不使用CRC校验,而是依赖于TCP/IP协议的内建错误校验机制。
示例: 读取保持寄存器的Modbus TCP数据帧(请求帧):
| TCP头 | 单元标识符 | 功能码 | 数据(寄存器值) |
| 7字节 | 1字节 | 1字节 | 2字节 |
此处,TCP头包含7字节的元数据,单元标识符是1,功能码是读取保持寄存器(0x03),数据字段则是实际读取的寄存器值。
3. 数据交换的常见功能码与格式
IEC 61784-6标准详细规定了Modbus协议中的常见功能码以及它们的数据交换格式。以下是一些常见功能码的示例:
-
读取保持寄存器(功能码0x03):用于从设备中读取多个寄存器的值。
- 请求格式:设备地址、功能码、开始地址、寄存器数量、CRC校验。
- 响应格式:设备地址、功能码、字节数、数据(寄存器值)、CRC校验。
-
写单个寄存器(功能码0x06):用于将一个寄存器设置为指定的值。
- 请求格式:设备地址、功能码、寄存器地址、寄存器值、CRC校验。
- 响应格式:设备地址、功能码、寄存器地址、寄存器值、CRC校验。
-
写多个寄存器(功能码0x10):用于将多个寄存器设置为指定的值。
- 请求格式:设备地址、功能码、起始寄存器地址、寄存器数量、字节数、数据(要写入的寄存器值)、CRC校验。
- 响应格式:设备地址、功能码、起始寄存器地址、寄存器数量、CRC校验。
4. 错误检测与异常响应
在IEC 61784-6中,Modbus协议还规定了错误检测和异常响应的机制:
- CRC错误:在Modbus RTU中,使用CRC校验来确保数据完整性。若出现CRC错误,接收方将不响应数据请求。
- 异常响应:如果设备无法执行请求的操作(例如,非法功能码、非法数据等),设备会返回一个异常响应,功能码会设置为原功能码的高位加0x80,并附带异常码。常见异常码包括:
- 0x01:非法功能码。
- 0x02:非法数据地址。
- 0x03:非法数据值。
总结
IEC 61784-6标准中,Modbus协议的数据交换格式主要规定了Modbus RTU和Modbus TCP的帧结构,包括数据字段的格式、功能码的作用和响应方式等。此外,标准还规定了设备之间通信的错误检测机制和异常响应格式。通过这些规定,确保了Modbus协议在现场总线通信中的稳定性、可靠性和互操作性。