为了保证各类算法(如功率平衡控制、AI 时序预测、优化调度、强化学习等)能够快速集成至微电网实验平台,所有自定义算法均应基于统一模板 template.py 开发。
统一的软件框架具有以下优势:
Template 已完成运行框架、API 注入、控制循环等公共功能,开发人员只需专注于算法实现即可。
Template 已提供完整的运行框架,其整体结构如下:
1. 文件说明(Info)
2. API Reference
3. 导入模块
4. 公共工具函数
5. 基础运行参数
6. 启动提示及安全延时
7. 用户参数区
8. 主循环
9. 程序结束
其中,API Reference 已明确列出平台提供的全部接口,包括节点控制、数据采集、广播控制、日志输出、循环控制等,开发过程中应严格遵循接口定义,不建议修改 API 的调用方式。
Template 中已明确说明:
保持 Template 原有结构,仅修改参数配置及波形(算法)生成部分,不要修改 API 的使用方式。
因此,推荐遵循以下原则:
对于大多数算法开发,仅需修改 Template 中预留的三个区域。
用于配置程序运行参数,包括:
例如:
run_duration_s = 30.0
send_hz = 10.0
period = 1.0 / send_hz
Template 已完成运行时间检查,并支持:
开发者通常无需修改运行框架,只需调整参数即可。
该区域用于定义算法所需的各种参数。
例如:
PV参数
Load参数
SOC参数
预测模型路径
优化器参数
波形参数
控制目标
推荐所有可调参数集中放置于此,避免在程序中出现大量硬编码,提高程序可维护性。
主循环是整个算法运行的核心。
Template 已完成:
开发人员仅需补充算法逻辑,例如:
读取数据
↓
算法计算
↓
功率限幅
↓
API下发
↓
数据记录
复杂算法建议封装成独立函数,在主循环中调用,例如:
prediction = predict(...)
power = power_balance(...)
api.node[node].p = power
而不是直接在循环中编写大量业务逻辑。
Template 已内置统一启动流程。
程序启动后将依次完成:
输出运行参数
↓
输出安全提示
↓
等待5秒
↓
开始发送控制命令
↓
进入主循环
↓
结束运行
其中 5 秒安全延时用于提醒用户确认设备状态,避免程序启动后立即向硬件发送控制指令。
建议所有案例保留该启动流程,不要删除。
平台通过统一 API 控制所有硬件节点。
常用接口包括:
api.node[node].p
api.node[node].v
api.node[node].i
分别对应:
Template 已提供:
step()
step_p()
step_v()
step_i()
用于生成平滑控制轨迹,而非瞬间跳变。
可通过:
get_data()
读取:
推荐所有算法均使用统一接口获取实时数据,不直接访问底层通信对象。
Template 提供:
set_broadcast_p()
set_broadcast_v()
set_broadcast_i()
用于同时控制多个节点。
适用于:
推荐统一使用:
api.log()
输出程序运行信息。
避免直接使用:
print()
便于平台统一管理日志。
所有控制量建议统一经过约束函数。
例如:
power = clamp(power)
或:
power = clamp_p(power)
统一限幅能够保证:
建议所有算法在 API 下发前完成最终功率检查。
Template 不限制算法类型,可直接集成:
等多种算法,推荐采用模块化设计:
数据读取
↓
预测模型
↓
功率平衡
↓
功率约束
↓
API控制
↓
数据保存
预测模块与控制模块保持解耦,便于模型替换和后续维护。
建议统一记录以下变量:
统一保存为 CSV 文件,便于:
为了保证代码质量,建议遵循以下规范:
template.py 提供了统一的软件运行框架,开发人员仅需在预留区域完成算法实现即可,无需关注底层通信及运行机制。
推荐的开发流程如下:
Template
↓
参数配置
↓
数据读取
↓
算法计算
↓
功率约束
↓
API 下发
↓
数据记录
↓
程序结束
遵循统一开发规范,可保证传统控制、AI 预测、优化调度及强化学习等不同算法均能快速集成到平台中,同时提升代码的可维护性、可扩展性及工程一致性。