3、通信协议入门:Modbus RTU/TCP协议详解、DL/T645电表协议、IEC 61850/104规约简介、协议转换与网关

做储能远程监控,说白了就是让设备跟平台「说上话」。但设备们说的「语言」五花八门——有的用Modbus,有的用DL/T645,还有的用IEC 61850。你想想看,要是没有统一的通信协议,这系统根本搭不起来。

我个人习惯把通信协议比作「翻译官」。它负责把电池的电压、电流、温度这些原始数据,打包成平台能读懂的信息。今天我就带你把这几个主流协议捋一遍。

核心观点:协议选型决定了系统的兼容性、实时性和成本。选对了,事半功倍;选错了,后期全是坑。

3.1 Modbus RTU/TCP协议详解

Modbus 是工业领域最通用的协议之一。我在项目中遇到过不少设备,哪怕是大厂的BMS(电池管理系统),也几乎都支持Modbus。它简单、稳定,而且免费。

Modbus 有两种常见形态:RTUTCP

特性 Modbus RTU Modbus TCP
物理层 RS-232 / RS-485 以太网
传输方式 串行,半双工 网络,全双工
地址范围 1-247(从站) IP地址+单元标识符
典型距离 1200米(RS-485) 100米(网线)
实时性 较高,适合短距离 受网络延迟影响

Modbus RTU 的报文结构,说白了就是四段:地址码 + 功能码 + 数据区 + 校验码。举个例子,读取保持寄存器的报文长这样:

请求:01 03 00 00 00 02 C4 0B
响应:01 03 04 00 01 00 02 79 85

我来拆解一下:01 是从站地址,03 是读保持寄存器的功能码,00 00 是起始地址,00 02 是读取数量,C4 0B 是CRC校验。响应里的 04 表示数据长度4字节,后面跟着两个寄存器的值。

避坑指南:我曾经在调试一个PCS(储能变流器)时,发现数据总是跳变。查了半天,原来是RS-485的A/B线接反了。记住:A接A,B接B,屏蔽层单端接地。

Modbus TCP 就简单多了。它去掉了CRC校验,因为TCP/IP协议栈自己会做校验。报文结构变成了:MBAP头(7字节)+ 功能码 + 数据区。

请求:00 01 00 00 00 06 01 03 00 00 00 02
响应:00 01 00 00 00 07 01 03 04 00 01 00 02

嗯,这里要注意:MBAP头里的 00 06 表示后面数据长度是6字节。这个长度计算容易出错,我建议你写代码时用现成的库,别自己拼报文。

3.2 DL/T645电表协议

DL/T645 是国内电表的标准协议。储能系统里,并网柜的电表几乎都用它。说实话,这个协议比Modbus复杂不少,但功能也更强大。

它的报文结构是:起始符 + 地址域 + 控制码 + 数据长度 + 数据域 + 校验 + 结束符

举个例子,读取电表电压的报文:

请求:68 11 22 33 44 55 66 68 11 04 33 33 34 33 33 33 16
响应:68 11 22 33 44 55 66 68 91 08 33 33 34 33 33 33 00 00 00 00 16

看着是不是有点晕?我刚开始接触时也头疼。关键点在于:地址域是6字节的BCD码,而且数据域里的数值也是BCD码格式。比如 33 33 34 33 33 33 表示电压值,需要按BCD码解析。

注意:DL/T645 的校验方式是累加和校验,不是CRC。很多新手在这里翻车。我曾经调试一个项目,电表数据死活读不对,最后发现是校验算法写错了。

我个人习惯的做法是:先用厂家提供的调试工具确认电表能正常通信,再写代码。这样能快速定位问题是出在硬件还是软件上。

3.3 IEC 61850/104规约简介

这两个协议主要用在大型储能电站和变电站。IEC 61850 是面向对象的,IEC 104 是面向点的。说白了,61850 更「智能」,104 更「传统」。

IEC 61850 的核心是「逻辑节点」和「数据对象」。比如一个断路器,它被抽象成 XCBR 逻辑节点,里面包含位置、状态等数据对象。这种设计的好处是:设备自描述,不需要人工配置点表。

但说实话,61850 的学习曲线很陡。我建议你先从 IEC 104 入手,它更接近传统的遥测遥信。

IEC 104 的报文结构:启动字符 + 长度 + 控制域 + 类型标识 + 结构限定词 + 传送原因 + 公共地址 + 信息体

举个例子,遥测报文:

68 0E 00 00 00 00 64 01 06 00 01 00 00 00 00 00

其中 68 是启动字符,0E 是长度,64 是类型标识(表示遥测),01 是传送原因(表示周期上送)。

经验之谈:我曾经在调试一个光伏储能站时,IEC 104 的公共地址配错了,导致所有数据都上不来。记住:公共地址必须和调度端一致,一个字节都不能差。

3.4 协议转换与网关

现实中的储能系统,往往是多种协议混用。BMS用Modbus,电表用DL/T645,调度端用IEC 104。这时候就需要协议转换网关来当「翻译官」。

网关的核心功能就三个:协议解析、数据映射、转发。我画了一张图,帮你理解这个流程:

BMS (Modbus RTU) 电表 (DL/T645) PCS (Modbus TCP) 协议转换网关 协议解析 数据映射 转发 监控平台 调度端 (IEC 104) 协议转换网关架构图

选型时,我建议你关注这几点:

  • 协议支持是否全面:至少支持Modbus、DL/T645、IEC 104
  • 数据点容量:能映射多少个数据点?我见过一些网关只能支持200个点,根本不够用
  • 实时性:从设备到平台,延迟控制在多少毫秒以内?
  • 配置方式:是网页配置还是专用软件?网页配置更方便远程维护

重要提醒:协议转换不是简单的「复制粘贴」。不同协议的数据类型、精度、单位都可能不同。比如Modbus里的16位整数,映射到IEC 104时可能需要转换成32位浮点数。这个转换逻辑一定要写对,否则数据全是错的。

好了,通信协议这块就聊到这儿。记住一句话:协议是手段,不是目的。我们的目标是让数据稳定、准确地从设备跑到平台。选协议时,别追求高大上,适合场景的才是最好的。

专注资料整理