光伏和储能电站接入电网调度时,“四可”经常被当成一句宣传口号:可观、可测、可控、可调。但真正落到项目里,它对应的是一整套数据、协议、控制、安全和验收工作:电站能不能把设备状态准确上送,能不能把调度指令安全执行,能不能在通信异常时保持本地安全运行,能不能把整个过程留痕并对账。
需要先说明边界:不同地区、不同电压等级、不同并网主体和不同调度机构对“四可”的适用范围、接口协议、点表格式、验收流程可能有差异。本文不把“四可”解读为全国统一的单一技术标准,工程实施应以当地电网企业要求、并网协议、调度接入文件和设备认证资料为准。本文重点讨论具备普遍性的边缘工程方法。
一、“四可”到底要求什么能力
“四可”不是在大屏上把数据画出来,而是让电站成为可被调度、可被追溯、可被验证的资源。
| 能力 | 表面理解 | 工程含义 | 常见交付物 |
|---|---|---|---|
| 可观 | 能看到电站 | 站内设备、回路、告警、通信状态可识别 | 站点模型、设备清单、通信状态、异常事件 |
| 可测 | 能看到功率 | 测点定义、量纲、精度、时标、质量位明确 | 点表、遥测遥信清单、死区策略、对账报告 |
| 可控 | 能下发命令 | 命令可达、可确认、可闭环、可回退 | 控制流程、联锁条件、执行反馈、操作审计 |
| 可调 | 能接受调度 | 有功、无功、电压、功率因数等可按约束调节 | AGC/AVC 接口、限值策略、斜率控制、本地策略 |
换句话说,“四可”验收卡住的地方通常不是有没有网关,而是语义是否一致:
- 调度端看到的
1001号测点,现场到底对应哪台逆变器、哪个相位、哪个量纲? - 遥信值
1到底表示运行、合闸、可用,还是告警? - 一条功率设定值指令,到达 PCS 前有没有经过限幅、斜率、SOC 和安全联锁判断?
- 通信中断 30 分钟后恢复,缺数、补传和事件时标如何处理?
- 现场设备固件升级后,点表偏移或比例因子变了,系统如何发现?
这些问题决定了光储项目的“四可”能力建设不是一次字段映射,而是持续运行的数据治理与控制治理。
二、为什么光储现场比普通采集项目更复杂
1. 协议栈是多层并存的
一个典型光储电站内部可能同时存在:
- 逆变器、PCS、BMS、电表、气象站、汇流箱;
- Modbus RTU、Modbus TCP、SunSpec Modbus、CAN、厂家私有协议;
- DL/T 645、DL/T 698、DLMS/COSEM 等计量类协议;
- 厂家云 API 或本地 API;
- 对上调度的 IEC 60870-5-104、IEC 61850、MQTT 或地方平台接口。
这些协议的设计目标不同。现场设备协议解决“怎么读到数据”,调度协议解决“如何可靠上送和受控执行”。中间必须有一层边缘运行时完成语义转换、缓存、仲裁和审计。
2. 点表不是静态表格
很多项目一开始用 Excel 点表看起来很顺利,到现场才发现:
- 同一品牌不同固件版本的寄存器布局不同;
- SunSpec 设备的模型地址需要动态发现,不能硬编码;
- Modbus 工具界面显示
40001,程序里可能应使用0,地址编号规则必须统一; - 32 位数据有高低字、字节序和符号位差异;
- SunSpec 比例因子可能是独立的带符号寄存器;
- 设备离线、寄存器读取失败和质量位缺失要能被区分。
如果这些信息不进入配置版本管理,后期运维只能靠人记住“这个站特殊”。站点一多,维护成本会迅速放大。
3. 控制链路比采集链路风险更高
采集错了通常是显示异常;控制错了可能影响设备安全和电网侧运行。调度指令从调度中心到逆变器或 PCS,至少要经过:
- IEC 104 指令接收;
- 指令类型、量纲、限值和时标校验;
- 站内控制模式判断;
- 本地安全联锁;
- 设备协议写入;
- 执行结果回读;
- 调度端确认与审计记录。
任何一步缺少状态反馈,都无法称为完整“可控”。
三、IEC 104 与 SunSpec 的定位差异
IEC 60870-5-104(下文简称 IEC 104)和 SunSpec Modbus 不是替代关系,而是分别位于调度接口和设备接入接口两层。
| 对比项 | IEC 104 | SunSpec Modbus |
|---|---|---|
| 主要定位 | 电力远动通信协议,用于主站与子站系统 | 光伏和储能设备数据模型,基于 Modbus 寄存器 |
| 通信方向 | 遥测、遥信、遥控、遥调双向交互 | 通常由网关主动轮询设备寄存器 |
| 数据语义 | ASDU、公共地址、信息体地址、传送原因等 | 模型、块长度、寄存器字段、比例因子、单位 |
| 时间机制 | 事件可携带 CP56Time2a 时标 | Modbus 报文本身不提供统一业务时标 |
| 可靠性机制 | 链路测试、确认、重传、序号、缓存补发 | 依赖 Modbus 请求响应、超时和上层处理 |
| 安全机制 | 协议本身不自动解决所有安全问题,需网络隔离、接入认证和运维管控 | Modbus/TCP 常需放在专网或 VLAN,并做访问控制 |
| 工程重点 | 点表、死区、总召唤、事件缓存、控制确认 | 模型发现、寄存器解析、比例因子、质量判断 |
因此,典型链路是:
逆变器 / PCS / BMS / 电表 | | Modbus RTU/TCP、SunSpec、CAN、DL/T 645、厂家 API v 边缘协议与控制运行时 | | 数据清洗、点表映射、质量标记、事件缓存、控制校验 v 调度主站 / 电站管理平台 | | IEC 104、MQTT、平台 API 等 v 可观、可测、可控、可调SunSpec 的价值是让同类设备有更统一的数据模型,降低逐个寄存器整理的成本;IEC 104 的价值是提供调度场景的远动交互框架。二者之间仍需要边缘层完成工程语义转换。
四、SunSpec 接入:先发现模型,再解析数据
原文中“SunSpec Model 123 寄存器 40001”“Model 160 固定寄存器”的写法需要修正:SunSpec 设备的可用模型、模型顺序和相对偏移由现场设备决定,网关应先做模型发现,再按模型 ID、块长度和字段偏移解析,不能把40001当成所有设备的固定业务地址。
更可靠的流程如下:
- 约定一个基准地址,明确它是协议地址还是工具界面的寄存器编号;
- 读取公共模型,校验
SunS标识; - 获取厂商、型号、序列号、固件版本;
- 按模型 ID 和块长度遍历后续模型;
- 找到逆变器、储能、电表等所需模型;
- 解析字段、单位、比例因子和数据类型;
- 将原始值转换成带单位的工程值;
- 标记读取失败、离线、越限和可疑质量;
- 生成站点级的标准化数据模型。
一个示意配置如下,字段名表示语义点,不代表所有设备都使用同一绝对地址:
device:id:pcs-001name:"1号储能PCS"vendor:"以设备识别结果为准"connection:protocol:modbus_tcphost:192.168.1.100port:502unit_id:1timeout_ms:1000retry:2sunspec:enabled:true# 0 是 Modbus 协议相对地址;部分工具界面会显示 40001。# 两套编号不能混用,项目中必须写清楚。base_address:0validate_marker:truediscover_models:truerequired_profiles:-common-inverter_or_storage-meterpoints:-name:pcs.active_powersemantic:active_powersource_profile:storage_or_invertersource_point:active_powerengineering_unit:kWsource_type:signed_integerscale_factor:dynamicquality:online_and_valid-name:pcs.statesemantic:operating_statesource_profile:storage_or_invertersource_point:stateengineering_unit:enumenum_map:1:running2:standby3:fault-name:pcs.socsemantic:state_of_chargesource_profile:batterysource_point:socengineering_unit:percentvalid_range:[0,100]这份配置的重点不是寄存器号,而是把来源、语义、单位、比例因子、质量位和有效范围显式化。只有这样,后续 IEC 104 点表和调度验收才能追溯。
五、IEC 104 点表:区分 Type ID、公共地址和 IOA
IEC 104 的 ASDU 通常要同时理解三类地址概念:
| 概念 | 作用 | 示例 |
|---|---|---|
| Type ID | ASDU 类型,决定报文结构和语义 | M_ME_NB_1标度化遥测 |
| Common Address | 公共地址,标识子站或应用区域 | 1 |
| IOA | Information Object Address,信息体地址,标识具体点 | 1001 |
不能把M_ME_NA_1写成“ASDU 地址 100”。正确表达是:某个工程点使用M_ME_NA_1类型,公共地址为1,信息体地址为1001。
常用类型包括:
| 类型 | 含义 | 适用点 |
|---|---|---|
M_SP_NA_1 | 单点遥信 | 运行、故障、通信状态 |
M_DP_NA_1 | 双点遥信 | 开关位置 |
M_ME_NA_1 | 归一化遥测 | 按调度约定量程换算的模拟量 |
M_ME_NB_1 | 标度化遥测 | 带符号整数和约定倍率 |
M_ME_NC_1 | 短浮点遥测 | 支持时可直接承载工程值 |
C_SE_NA_1/C_SE_NB_1/C_SE_NC_1 | 设定值命令 | 有功、无功、电压等调节指令 |
C_SC_NA_1/C_DC_NA_1 | 单点 / 双点命令 | 启停、开关等控制命令 |
一个点表映射示例如下:
| 语义点 | 边缘工程值 | IEC 104 示例 | 转换要求 |
|---|---|---|---|
| 电站有功功率 | site.active_power,kW | M_ME_NB_1,CA=1,IOA=1001 | 聚合后按调度倍率取整,保留质量位 |
| 电站无功功率 | site.reactive_power,kvar | M_ME_NB_1,CA=1,IOA=1002 | 符号方向与调度点表一致 |
| 电站运行状态 | site.operating_state | M_SP_NA_1,CA=1,IOA=2001 | 枚举映射必须双方确认 |
| 电池 SOC | storage.soc,% | M_ME_NB_1,CA=1,IOA=2101 | 限幅、质量位、离线处理 |
| 有功设定值 | control.active_power_setpoint | C_SE_NB_1,CA=1,IOA=3001 | 限幅、斜率、联锁和回读确认 |
| 无功设定值 | control.reactive_power_setpoint | C_SE_NB_1,CA=1,IOA=3002 | 与 AVC 策略和设备能力匹配 |
每行映射都必须有版本号、责任人、变更记录和联调记录。否则现场一旦换设备或升级固件,问题很难定位。
六、从“读寄存器”到“可靠上送”
Modbus 轮询得到的是瞬时原始值;IEC 104 需要的是可解释、有时标、有质量、可补发的事件流。边缘层至少要处理六件事。
1. 时间同步
建议网关通过 NTP、GNSS 或站级对时系统获取时间,并正确处理 IEC 104 时钟同步。事件缓存中要区分:
- 采样时间;
- 事件发生时间;
- 网关写入缓存时间;
- 重新上送时间。
断网补传时,不能把补发时间写成事件发生时间。
2. 工程值转换
所有原始值先转换成工程值,再进入 IEC 104 编码。不要在代码中散落value * 0.1这类魔术数字。
defto_engineering_value(raw_value:int,scale_factor:int,offset:float=0.0,)->float:"""Convert a SunSpec integer field using its 10**sf scale."""returnraw_value*(10**scale_factor)+offsetscale_factor应从点表配置或对应寄存器读取,并在配置校验时限制范围,避免异常比例因子把功率放大成天文数字。
3. 死区与刷新策略
不同测点不能使用同一个死区:
| 测点类型 | 建议策略 |
|---|---|
| 遥信 | 状态变化即上送 |
| 有功 / 无功 | 按量程和调度要求设置变化死区 |
| 电压 / 频率 | 小死区,避免越限过程丢失 |
| SOC / 温度 | 较大死区,配合周期刷新 |
| 电能量 | 使用累计增量或冻结值,避免重复累计 |
同时要支持周期上送、变化上送和总召唤响应。总召唤由调度主站发起,网关作为子站返回当前有效快照。
4. 质量位与离线语义
设备离线、读取失败、越限和校验异常不能都伪装成0。建议明确:
- 保留最后一次有效值;
- 标记质量为无效或旧值;
- 生成通信异常事件;
- 设置恢复判断条件;
- 限制控制功能或切换本地策略。
5. 优先级与流控
事故信号、保护动作和关键遥信应优先上送;普通遥测变化、电能量和慢变量可以降低优先级。队列满时不能随意覆盖未确认关键事件。
6. 断线缓存与补发
通信中断时,边缘侧应保存事件、原始时标、质量和点表版本。恢复连接并完成 IEC 104 启动流程后,按调度接受的方式补发。补发记录要可导出,便于与主站对账。
七、控制与调节:不能只做反向写寄存器
调度下发的 AGC/AVC 指令,本质上不是“把一个数字写进设备”这么简单。边缘侧要做控制闭环。
1. 指令合法性校验
至少校验:
- 指令来源和通道是否可信;
- Type ID、公共地址、IOA 是否在有效点表内;
- 数值量纲与点表一致;
- 有功、无功、电压、功率因数是否在设备能力范围内;
- 充放电方向符号是否一致;
- SOC 上下限、电池温度、保护状态是否允许执行;
- 斜率和死区是否符合并网要求;
- 是否重复下发同一条指令。
2. 控制模式仲裁
同一台 PCS 可能同时收到调度指令、本地 EMS 策略、运维手动命令和厂家面板操作。必须明确优先级和切换条件:
| 模式 | 典型目标 | 边界 |
|---|---|---|
| 调度模式 | 执行调度设定值 | 受安全约束和本地保护限制 |
| 本地自治 | 削峰填谷、备电、孤岛或安全停机 | 通信恢复后按规则切回 |
| 运维模式 | 调试、检修、手动控制 | 需要权限、审批和互锁 |
| 禁止控制 | 故障、保护、越限 | 必须拒绝或终止执行 |
模式切换要有事件记录,不能让多个控制源同时写设备。
3. 执行反馈与幂等
每条控制指令建议生成唯一command_id,记录:
control_record:command_id:"20261013-pps-001-000123"source:dispatchreceived_at:"2026-10-13T08:30:00+08:00"command_type:active_power_setpointtarget:pcs-001requested_value_kw:500applied_limits:min_kw:-800max_kw:900ramp_rate_kw_per_s:50precheck:device_online:trueprotection_clear:truesoc_allowed:trueresult:status:acceptedfeedback_value_kw:500completed_at:"2026-10-13T08:30:04+08:00"重复指令不应重复施加增量。例如“有功目标设为 500 kW”可以重复收敛到同一目标;增加 50 kW这类增量语义必须配合唯一命令 ID 和执行状态。
4. 通信中断后的本地策略
调度链路中断不等于站内失控。边缘侧应按项目安全要求预设策略:
- 保持最后有效目标值一段时间;
- 切换到本地计划曲线;
- 进入安全限功率模式;
- 触发电池保护或停机;
- 恢复通信后先同步状态,再接受新指令。
具体策略取决于并网协议、设备能力和业主运行要求,不能由网关自行拍板。
八、部署与验收清单
1. 项目启动阶段
- 收集调度接入文件、点表模板、通信方式和测试环境;
- 确认 IEC 104 公共地址、IOA 分配和 Type ID 约定;
- 收集逆变器、PCS、BMS、电表协议文档和固件版本;
- 明确遥测精度、死区、刷新周期和时标要求;
- 明确控制点、限值、斜率、联锁和本地策略;
- 建立点表配置仓库和变更流程。
2. 现场接入阶段
- 完成设备清单与实际接线核对;
- 逐台验证设备地址、通信速率、unit_id 和网络可达性;
- 执行 SunSpec 模型发现或厂家点表识别;
- 校验
SunS标识、厂商、型号、序列号和固件版本; - 抽查原始值、工程值、单位、符号方向和累计量;
- 验证设备离线、恢复、坏值和越限处理。
3. 调度联调阶段
- 完成 IEC 104 链路建立、启动传输和链路保活测试;
- 验证总召唤、变化上送、周期上送和事件时标;
- 模拟断链重连、缓存补发和队列溢出;
- 对每个遥测遥信点做端到端比对;
- 对控制指令做空指令、越限、合法值、拒绝和确认测试;
- 保留双方日志、点表版本和测试结论。
4. 运维移交阶段
- 提供点表映射、配置版本和网络拓扑;
- 提供常见故障排查手册;
- 配置远程诊断、日志采集和固件升级流程;
- 建立设备更换、固件升级后的回归测试清单;
- 定义告警响应和值班边界;
- 定期导出数据质量与控制执行报表。
九、常见坑与应对
| 坑 | 现场表现 | 应对 |
|---|---|---|
把40001当绝对地址 | 换设备后读数错位或读到异常值 | 统一协议地址与工具编号,先做模型发现 |
| 比例因子写死 | 功率、电流、电量系统性放大或缩小 | 动态读取并校验比例因子 |
| Type ID 和公共地址混用 | 联调时双方各说各话 | 点表写清 Type、CA、IOA 和量纲 |
| 遥信枚举未确认 | 现场显示与调度理解相反 | 建立双方确认的枚举映射 |
| 时标来源混乱 | 事件顺序无法解释 | 区分采样、发生、缓存和补发时间 |
| 质量位缺失 | 离线后仍显示 0 或旧值 | 引入质量状态和恢复事件 |
| 死区一刀切 | 刷屏或漏掉关键变化 | 按测点类型配置死区和刷新周期 |
| 控制无回读 | 指令显示成功但设备未执行 | 以设备反馈作为执行结果 |
| 多控制源并发 | EMS、调度、运维同时写设备 | 建立模式仲裁和互锁 |
| 配置无版本 | 固件升级后无法回滚 | 点表和策略配置版本化 |
| 无对账工具 | 验收反复拉扯 | 导出原始值、工程值、上送值和主站值 |
TL;DR
光储项目的“四可”不是加一个协议转换器就能完成。边缘层要先把现场异构设备转成统一工程模型:通过 SunSpec 模型发现、比例因子解析、质量位和时标治理得到可信数据;再按 IEC 104 的 Type ID、公共地址和 IOA 建立可版本化的调度点表,并实现变化上送、总召唤、断线缓存和补发。控制侧必须做指令校验、限幅、斜率、联锁、模式仲裁、执行回读和幂等记录;通信中断时按预设策略本地自治。最后,用配置版本、远程运维、日志对账和固件升级回归,把一次性联调沉淀为长期可运维能力。
如果在光储“四可”能力建设中评估边缘协议运行时,可以参考 Zenova EdgeOS 的多协议接入、点表治理、调度联动与远程运维能力。