1. Modbus协议基础与工业应用场景
Modbus作为工业自动化领域最广泛应用的通信协议之一,自1979年由Modicon公司推出以来,已成为连接工业电子设备的事实标准。在C#生态中实现Modbus协议栈开发,需要深入理解其核心机制与不同传输模式的特性差异。
1.1 协议架构与传输模式对比
Modbus协议采用主从式通信模型,物理层支持RS-232/RS-485串行链路(RTU/ASCII模式)和以太网(TCP/UDP模式)。协议栈分层如下:
| 层级 | RTU模式 | TCP模式 |
|---|---|---|
| 应用层 | Modbus功能码 | Modbus功能码 |
| 协议层 | Modbus RTU帧结构 | Modbus TCP ADU |
| 传输层 | 串行通信 | TCP/IP |
| 物理层 | RS-232/RS-485 | 以太网 |
RTU模式采用二进制编码和CRC校验,传输效率高于ASCII模式。典型RTU帧结构示例:
code复制[设备地址][功能码][数据][CRC低字节][CRC高字节]
而Modbus TCP则在RTU协议数据单元(PDU)前添加MBAP头:
code复制[事务标识][协议标识][长度][单元标识][PDU]
1.2 寄存器类型与功能码映射
Modbus定义了四种寄存器类型,每种对应特定的操作指令:
| 寄存器类型 | 地址范围 | 功能码 | 访问方式 |
|---|---|---|---|
| 线圈 | 00001-09999 | 01(读) 05(写单) 15(写多) | 位操作 |
| 离散输入 | 10001-19999 | 02 |
