4. 常用通信协议与网络组网
光伏电站监控系统本质上是一个“多源异构数据汇聚”系统:逆变器、汇流箱、智能电表、气象站、跟踪支架控制器、储能PCS、箱变测控等设备来自不同厂商,接口形态从RS-485串口到以太网、光纤、4G/5G无线都有。通信协议决定了这些设备能否被统一采集、统一建模、统一上送。本节围绕光伏监控中最常见的三类协议——Modbus、IEC 61850、MQTT——讲清它们的定位差异、适用场景与组网方式,并给出可落地的选型与配置思路。
一、三类协议的定位差异
Modbus是工业现场最普及的轻量级协议,分为Modbus RTU(串行)和Modbus TCP(以太网)。它采用“主站轮询、从站应答”的请求-响应模式,数据模型简单:线圈、离散输入、输入寄存器、保持寄存器四类地址空间。光伏逆变器、汇流箱、电表几乎都提供Modbus接口,寄存器表由厂商文档给出。它的优点是实现成本低、调试工具多;缺点是缺乏统一语义模型,同一物理量在不同厂商的寄存器地址和缩放系数不同,且轮询机制在设备数量多时实时性下降。
IEC 61850最初为变电站自动化设计,强调“面向对象建模”和“互操作性”。它把设备抽象为逻辑设备(LD)、逻辑节点(LN)、数据对象(DO)和数据属性(DA),并通过SCL配置文件(ICD/CID)描述能力。通信上支持MMS(客户端/服务器)、GOOSE(快速跳闸信号)、SV(采样值)。在光伏监控中,IEC 61850主要用于升压站、并网点、箱变测控等需要与电网调度对接的场合,尤其是大型地面电站的站控层与调度数据网之间。
MQTT是面向物联网的发布/订阅协议,基于TCP,采用Broker中转。设备作为Publisher把数据发布到Topic,监控平台作为Subscriber订阅Topic。它天然支持一对多、断线重连、QoS等级(0/1/2)和遗嘱消息,非常适合分布式光伏、屋顶电站、跨区域多站点汇聚等网络不稳定、设备数量大的场景。缺点是它只负责传输,不定义数据语义,需要在上层约定Topic命名和Payload格式(常用JSON)。
二、Modbus在光伏监控中的实际用法
以一台组串逆变器为例,厂商寄存器表通常给出:交流有功功率在保持寄存器40083,单位0.1kW,有符号16位;日发电量在40101,单位0.1kWh,无符号32位,高字在前。采集网关作为Modbus RTU主站,通过RS-485总线轮询,波特率9600、8位数据位、无校验、1位停止位,从站地址1。轮询周期设为5秒,单条读取指令一次读20个寄存器,减少往返次数。
# 示例:用 pymodbus 读取逆变器有功功率与日发电量(教学示例)
from pymodbus.client import ModbusSerialClient
client = ModbusSerialClient(
port='/dev/ttyUSB0', baudrate=9600,
bytesize=8, parity='N', stopbits=1, timeout=1
)
client.connect()
# 读保持寄存器 40083 起 2 个寄存器(地址偏移 82)
rr = client.read_holding_registers(address=82, count=2, slave=1)
power_raw = rr.registers[0]
power_kw = power_raw * 0.1 if power_raw < 32768 else (power_raw - 65536) * 0.1
# 读日发电量 40101 起 2 个寄存器(32位,高字在前)
rr2 = client.read_holding_registers(address=100, count=2, slave=1)
energy_kwh = (rr2.registers[0] << 16 | rr2.registers[1]) * 0.1
print(power_kw, energy_kwh)
关键判断点:若读回值恒为0或异常大,先核对地址偏移(40001对应偏移0还是1)、字节序(高字在前/低字在前)和缩放系数;若出现超时,检查RS-485终端电阻、屏蔽层单端接地和总线长度(9600bps下建议不超过1200米)。
三、IEC 61850的适用边界
IEC 61850不适合直接用于组串级设备采集,因为其建模和配置成本高,且多数逆变器不原生支持。它真正的价值在升压站和并网点:箱变测控、保护装置、电能计量等通过MMS上送站控层,GOOSE用于站内快速联锁。工程上通常由通信管理机把Modbus采集的逆变器数据转换为IEC 61850模型,再统一上送调度。配置时需关注ICD文件导入、数据集(DataSet)定义、报告控制块(BRCB/URCB)的触发条件和缓冲时间。
四、MQTT的组网与Topic设计
分布式光伏站点分散、公网质量不稳定,MQTT是更合适的上云通道。典型组网:现场网关采集Modbus数据后,以JSON格式发布到Broker。Topic建议按层级设计,例如:
pv/{stationId}/{deviceType}/{deviceId}/telemetry
示例:pv/ST001/inverter/INV-03/telemetry
Payload 示例:
{"ts":1718000000,"pac_kw":52.3,"eday_kwh":210.5,"status":1}
QoS选择:遥测数据用QoS 1保证至少一次送达;告警用QoS 1并配合遗嘱消息(Last Will)检测网关离线;高频原始数据可用QoS 0降低开销。Broker端再通过规则引擎写入时序数据库。需要注意:MQTT不保证顺序,时间戳必须由网关携带;Topic层级不宜过深,否则订阅通配符匹配效率下降。
五、选型与组网对照
| 对比项 | Modbus | IEC 61850 | MQTT |
|---|---|---|---|
| 典型场景 | 逆变器、汇流箱、电表采集 | 升压站、并网点、调度对接 | 分布式站点上云、多站汇聚 |
| 通信模式 | 主站轮询/从站应答 | 客户端/服务器 + 发布/订阅 | 发布/订阅(Broker中转) |
| 数据语义 | 寄存器地址,无语义 | 面向对象模型,语义完整 | Topic + Payload,需自定义 |
| 实时性 | 秒级,受轮询周期限制 | 毫秒级(GOOSE) | 秒级,受网络影响 |
| 网络要求 | RS-485/以太网,局域网 | 站内光纤环网 | 公网/4G/5G,可跨区域 |
| 配置成本 | 低 | 高(SCL建模) | 中(Topic与Payload约定) |
总结来看,协议选型不是“越先进越好”,而是匹配场景:设备级采集优先Modbus,站控与调度对接优先IEC 61850,远程分散汇聚优先MQTT。组网时把网关放在正确的位置,明确每一层的输入输出和转换关系,才能让监控系统稳定、可维护地运行。