HY-K 太阳能控制器协议|水利物联太阳能供电系统接入指南

干水利物联这么多年,一直有个绕不开的现实问题:设备再智能,没电就是摆设。

河道水位计、山坳雨量站、田间流量计、坝上监控,绝大多数野外点位拉不到市政电。不少项目一开始选择开挖埋电缆,征地协调周期长,土建成本甚至超过设备本身。

我们团队的思路从单纯接入感知设备,延伸到整套离网供电系统一体化管理。本文是太阳能供电协议系列第一篇,拆解华昱信通 HY-K 系列(HY-K60A)太阳能控制器,协议同源 EPEVER IT-NC G3,资料可互通参考。

野外离网供电,本质是一套完整底座:光伏发电、电池储电、控制器负责充放电管理、负载控制,再配上远程监控。供电故障主要集中三点:

  1. 取电难:无电网覆盖,布线征地成本高;
  2. 储电难:普通电池缺少专业保护,低温、长期阴雨很容易亏电;
  3. 管电难:站点分散,供电隐患是缓慢恶化的,往往等到设备掉线才发现,运维成本高。

野外光伏不是买一块光伏板就完事,需要一套可监测、可远程调整 的供电系统。

一、HY-K 控制器能力简介

  1. 充电侧:双路 PV 输入,MPPT 跟踪,过压、欠压、过充保护
  2. 电池侧:支持铅酸、胶体、锂电、三元电池,带温度补偿;接锂电池可读取 BMS 电芯数据
  3. 负载侧:支持手动、光控、定时三种控制模式,具备过载、短路保护

通信接口:标准 Modbus RTU,默认从站 ID=1,115200,8N1。工程上一般搭配 DTU 透明传输或者 Modbus TCP 网关转发,一共 200 + 寄存器点位,覆盖光伏、电池 SOC、负载状态、告警、电量统计等数据。

二、协议重点 & 高频坑点

底层是标准 Modbus RTU,CRC16 多项式 0xA001,初值 0xFFFF,低字节在前。但有几处和常规 Modbus 习惯不一样,也是大部分对接翻车的地方:

1. 功能码千万别搞混(最隐蔽的坑)

很多工程师习惯性用 0x03 读实时数据,这台设备是反过来的:

|------|----------------------------------------|
| 功能码 | 用途 |
| 0x04 | 读实时数据 / 额定参数 / 状态位 / 统计电量 / BMS(输入寄存器) |
| 0x03 | 读设置参数区(保持寄存器,0x9000 起) |
| 0x10 | 写设置参数 |
| 0x05 | 写单个线圈(开关量) |
| 0x01 | 读线圈 |

**坑:**功能码用反,不一定直接报错,可能返回一堆看起来正常、实际完全错误的数据,排查难度极高。

2. 寄存器分 6 个独立区域,不要一次性盲目连续读取

寄存器地址不连续,分为 6 块:

|--------|--------|------|-------------------------|
| 分区 | 起始地址 | 寄存器数 | 内容 |
| 额定参数 | 0x3002 | 12 | PV/电池/负载的额定电压电流功率 |
| 实时数据 | 0x3100 | 34 | 光伏、负载、电池的实时电压电流功率温度 SOC |
| 状态位 | 0x3200 | 7 | 按位拆的告警与运行状态 |
| 统计电量 | 0x3300 | 21 | 今日/本月/本年/累计的用电量、发电量 |
| BMS 数据 | 0x3400 | 36 | 锂电池电芯级数据、保护状态 |
| 设置参数 | 0x9000 | 76 | 电池类型、各种电压阈值、负载控制模式等 |

推荐方案:按分区合并采集,一轮 6 条请求全部读完,避免 200 多次请求挤占 RS485 总线。

**注意:**区间内存在空洞地址(0x3204、0x9044、0x9048),不能凭主观判断地址连续。

3. 32 位数据低字在前,特殊换算系数

32 位数值:低字放在低地址,实际值 = (高字 <<16) + 低字,和很多设备字节序相反,直接套用通用解析逻辑,功率、电量必然出错。

换算系数规则:

  1. 100:原值 ÷100(保留 2 位小数)
  2. 10:原值 ÷10(保留 1 位小数)
  3. 1:原值直接使用
  4. 0.01:实际值 = 原值 ×100(典型如波特率 115200,寄存器存 1152)

附加细节:有符号数按 int16 解析;状态寄存器大量使用位域,需要按位拆分读取。

三、实测可用报文

// 读实时数据,从站1,0x3100,34寄存器

01 04 31 00 00 22 7E EF

// 设置浮充电压138.00V

下发:01 10 90 0C 00 01 02 35 E8 21 8B

正常应答:01 10 90 0C 00 01 EC CA

// 打开充电开关

01 05 00 00 FF 00 8C 3A

四、接入常见难点总结

1、0x03 / 0x04 功能码混用,静默错误最难排查;

2、读取区间切分错误、空洞地址没处理,点位全部串位;

3、字节序、换算系数、位域解析错误,SOC 和电量失真;

4、很多采集平台只做只读,无法远程改参数、控制负载,故障只能现场处理。

五、YBolt + 平台接入方案

我们将该控制器封装独立协议插件,把上面所有特殊规则内置固化:

  1. 自动区分功能码、字节序、换算系数,直接输出工程值;
  2. 分区合并采集,总线负载更低;
  3. 链路自适应:支持 DTU 透明传输、Modbus TCP 网关、串口服务器多种链路;
  4. 双向读写:远程改阈值、控制充电开关、故障复位;

平台可展示发电功率、SOC、负载功耗、预估续航,低电量提前告警,不用等站点掉线再处理。

结语

野外离网光伏供电,难点不在于能不能发电,而是发电、储电、用电全程可感知、可调控。 这是光伏供电协议系列第一篇,后续持续更新其他型号控制器、BMS 电池协议,欢迎工程同行一起交流。

相关推荐
zerwave1 小时前
从慢订阅者到发布者:LiteBus 如何用 Unix Socket 背压保护可靠 Topic
网络·机器人·unix
piaoyiren2 小时前
Python FTP 服务端项目详细功能文档
网络·数据库·python
半杯咖啡半行码2 小时前
QML进阶实战(二):异步网络、性能优化与工程化落地
网络·qt·性能优化·qml
悟天特斯2 小时前
安防一体化:从“各管各的“到“全局联动“
java·大数据·网络·人工智能·物联网
骑着蜗牛撵大象3272 小时前
手写一个 HTTP 服务器:从 socket 到 epoll,Linux 上到底怎么把请求变成响应
linux·服务器·网络·http·epoll·socket编程·并发模型
wusam2 小时前
基于HCL的python脚本编程(2)
网络·python·智能路由器
乌恩大侠2 小时前
从真实 5G 网络采集 AI 训练数据:基于 NVIDIA Aerial Data Lake 构建 AI-RAN 数据平台
网络·人工智能·5g·aerial·o-ru·ai-ran
沫璃染墨3 小时前
从零入门计算机网络系列(十):HTTP协议进阶——从资源路径解析到状态码与请求头详解
linux·运维·服务器·网络·c++·http
Sayai3 小时前
Ubuntu 开发环境搭建避坑(一):网卡 EEE 致 60% 周期性丢包,Realtek RTL8125 网络黑洞排查与修复
linux·运维·网络·ubuntu·性能优化