快速开发光伏电站数字孪生运维系统
1. 准备阶段
在本实验中,本章节仅需要了解基础概念,无需实操。
一、梳理业务流程
所有的数字化系统都是为了特定业务目的而开发的,因此系统全面地梳理整个业务系统的运行流程、系统构成及特定规则等是构建数字孪生系统的核心基础。在此案例中,我们整理的业务架构图如下:
整个光伏电站由四大部分组成:
- 光伏发电系统:由两个发电阵列(A和B)及气象仪组成,主要将光能转化成电能,是整个运维系统监控的核心。发电阵列是一个逻辑管理单元,是由下面多个逆变器组合而成,每个逆变器下又由多个PV组串构成,每个PV组串下面连接多个光伏组件;气象仪提供实时气象测量数据,辅助判断当前发电效率是否正常
- 电器自用:光伏发电系统发的电首先给该集团内部的各种工厂设备及商用电器使用,优先保证电力的自给自足,这里面主要关心每天、每月及年度的电力使用量,取计量电表的数据
- 电力储能站:光伏发电系统发的电如果自用有盈余,白天的时候可以将多余电力存入储能站,以便晚上无法发电时由储能站向自用的电器设备供电。储能站电表和多个主控组成,每个主控下又由多个电池堆组成,为了简化系统说明,我们只关注储能站的电表数据
- 余电并网:光伏发电系统供给电器自用及储能站之后,如果还有盈余,则可以通过并网柜将多余的电量输送到电网中售卖以获得额外收入,为了简化系统说明,我们只关注余电并网中电表数据,以了解某个时间段内售卖给电网的电量
二、确定系统目标
在光伏电站数字孪生运维系统建设完成之后,会通过实时采集各个设备上传的数据,并通过对历史数据比对、横向设备数据比对、数据实时计算、数据智能分析等方式,可以向客户提供:
- 系统状态实时感知,这是最基础的能力。如组件级、组串级、逆变器级、阵列级、电站级的实时发电量,通过实时计算获取到当日、当月及年度累计发电量;集团内电量的使用情况、储能站的充放电及输入到并网系统中的电量等
- 发电系统异常及时感知及处理,以缩短故障处理时间,提高整个系统的发电效率。如逆变器过压过流异常、光伏组件的发电效率异常等,这里除了常规的经验规则阈值方法,还可以通过深度学习算法对历史数据进行训练学习,生成光伏发电领域的智能算法模型,通过对采集的数据进行智能分析来判断异常状态,如I-V曲线算法
- 月度发电量预测,便于根据预测的发电量对用电进行合理规划。这个可以通过天气预报数据、历史发电数据、当前发电系统的状态等多维度数据,使用智能算法进行预测
为了简化说明,本文只针对系统状态实时感知异常感知进行演示,以此作为整个系统建设完成后的目标。包括:
- 系统状态的实时数据通过3D模型中点击特定区域展示出来,包括:
- PV组串:实时电流、实时电压、实时功率(实时计算而来)等时序数据,也包括厂商、型号、倾角、方位角等固定的静态数据
- 逆变器:安装区域(静态数据)、型号(静态数据)、版本(静态数据)、实时电压(实时计算获取,各PV组串累加)、实时电流(实时计算获取,下属PV的最大电流值)、实时功率(实时计算获取,实时电压*实时电流)、交流电压(U、V、W)、交流电流(U、V、W)、交流功率(U、V、W,实时计算获取,实时电压*实时电流)、IGBT内芯温度(时序数据)、当天发电量(实时计算,累加)、当月发电量(实时计算,累加)、年度发电量(实时计算,累加)
- 发电阵列及发电系统:当日、当月及年度累计发电量,这些都是通过下属的逆变器数据实时计算获取
- 集团自用电表/储能站电表/余电并网电表/气象仪:为了简化说明,全部采用静态数据,实际构建系统时需要获取实时数据。
- 系统异常分析采用简单的规则方式,对以下两种情况进行告警,并在3D模型上实时提示:
- 逆变器IGBT温度过高,当温度大于120°时进行告警,并提示运维人员处理建议:1.检查安装位置是否符合要求。2.尝试降低周围环境温度。3.关闭逆变器5分钟后重新启动
- 逆变器直流过压,当电流超过16A时进行告警,并提示运维人员处理建议:检查光伏组串的串联配置是否过多,导致开路电压高于逆变器最大输入电压。若属此情况,尝试减少组串的数量,使组串开路电压降至逆变器规格范围以内
需要注意的是,系统告警后除了在3D模型上进行展示提醒外,往往还会通过电话、短信或邮件等方式通知到运维人员进行及时处理,对于通知能力的集成可以通过物联网平台的事件响应服务完成。
三、整理各设备物模型
业务流程梳理完成,并且确定好了系统目标,接下来需要对相关的设备进行物模型的定义,即每个设备的静态属性有哪些,会实时上报哪些数据及上报频率,还有哪些数据是通过上报的数据进行实时计算获取到的,如果是通过实时计算,计算的规则是什么等等。本文中为了简化开发,我们仅对光伏组件、逆变器、发电阵列、电站气象仪、光伏发电站5个部分进行物模型的梳理说明,详情信息如下所示:
光伏组件
属性类型 |
属性名称 |
属性单位 |
数据类型 |
属性范围 |
上报间隔/规则 |
静态属性 |
厂商 |
- |
string |
AlibabaCloud |
N/A |
静态属性 |
型号 |
- |
string |
ACYQ2022-S2 |
N/A |
静态属性 |
最大功率 |
W |
int |
365 |
N/A |
静态属性 |
倾角 |
° |
int |
0 |
N/A |
静态属性 |
方位角 |
° |
int |
180 |
N/A |
静态属性 |
优化器配置 |
- |
bool |
Y,N |
N/A |
时序属性 |
实时电流 |
A |
float |
1分钟 |
|
时序属性 |
实时电压 |
V |
float |
1分钟 |
|
虚拟属性 |
实时功率 |
W |
float |
1分钟 |
逆变器
属性类型 |
属性名称 |
属性单位 |
数据类型 |
属性范围 |
上报间隔/规则 |
静态属性 |
SN |
- |
string |
ACYQ202211001 |
N/A |
静态属性 |
型号 |
- |
string |
ACYQ10 |
N/A |
静态属性 |
所属电站 |
- |
string |
A区/B区 |
N/A |
静态属性 |
国家标准 |
- |
string |
EN50549NL |
N/A |
静态属性 |
最大功率 |
W |
float |
110000 |
N/A |
静态属性 |
逆变器版本 |
° |
int |
180 |
N/A |
时序属性 |
设备在线 |
- |
bool |
true/false |
1分钟 |
虚拟属性 |
实时功率 |
W |
float |
0-100000 |
PV1-PV20功率累加 |
虚拟属性 |
PV1-20电压 |
V |
float |
0-300 |
组件1到组件n累加 |
虚拟属性 |
PV1-20电流 |
A |
float |
0-300 |
组件1电流 |
虚拟属性 |
PV1-20功率 |
W |
float |
0-100000 |
PV电压*PV电流 |
时序属性 |
交流U电压 |
V |
float |
0-300 |
5分钟 |
时序属性 |
交流U电流 |
A |
float |
0-300 |
5分钟 |
时序属性 |
交流U频率 |
Hz |
float |
0-100 |
固定50Hz |
虚拟属性 |
交流U功率 |
W |
float |
0-100000 |
交流U电压*交流U电流 |
时序属性 |
交流V电压 |
V |
float |
0-300 |
5分钟 |
时序属性 |
交流V电流 |
A |
float |
0-300 |
5分钟 |
时序属性 |
交流V频率 |
Hz |
float |
0-100 |
固定50Hz |
虚拟属性 |
交流V功率 |
W |
float |
0-100000 |
交流U电压*交流U电流 |
时序属性 |
交流W电压 |
V |
float |
0-300 |
5分钟 |
时序属性 |
交流W电流 |
A |
float |
0-300 |
5分钟 |
时序属性 |
交流W频率 |
Hz |
float |
0-100 |
固定50Hz |
虚拟属性 |
交流W功率 |
W |
float |
0-100000 |
交流U电压*交流U电流 |
时序属性 |
IGBT内芯温度 |
摄氏度 |
float |
-20-200 |
1分钟 |
虚拟属性 |
当日发电量 |
kWh |
float |
0-1000000 |
1分钟 |
虚拟属性 |
当月发电量 |
kWh |
float |
0-1000000 |
当月所有天发电量累加,实时更新 |
虚拟属性 |
当年发电量 |
kWh |
float |
0-1000000 |
当年所有天发电量累加,实时更新 |
发电阵列
属性类型 |
属性名称 |
属性单位 |
数据类型 |
属性范围 |
上报间隔/规则 |
静态属性 |
阵列位置 |
- |
string |
N/A |
N/A |
静态属性 |
最大功率 |
W |
float |
10000000 |
N/A |
虚拟属性 |
实时功率 |
W |
float |
0-10000000 |
下挂的逆变器实时功率累加 |
虚拟属性 |
当日发电量 |
kWh |
float |
0-1000000 |
下挂的逆变器当日发电量累加 |
虚拟属性 |
当月发电量 |
kWh |
float |
0-1000000 |
当月所有天发电量累加,实时更新 |
虚拟属性 |
当年发电量 |
kWh |
float |
0-1000000 |
当年所有天发电量累加,实时更新 |
电站气象仪
属性类型 |
属性名称 |
属性单位 |
数据类型 |
属性范围 |
上报间隔/规则 |
时序属性 |
直接辐射 |
W/㎡ |
int |
0-10000000 |
60分钟 |
时序属性 |
散射辐射 |
W/㎡ |
int |
0-10000000 |
60分钟 |
时序属性 |
日照时长 |
min |
int |
0-1440 |
10分钟 |
时序属性 |
温度 |
℃ |
float |
-50-70 |
60分钟 |
时序属性 |
湿度 |
%RH |
int |
0-100 |
6小时 |
时序属性 |
风向 |
° |
int |
0-360 |
60分钟 |
时序属性 |
风速 |
m/s |
float |
0-80 |
60分钟 |
时序属性 |
气压 |
hPa |
float |
900-1200 |
6小时 |
时序属性 |
雨量 |
mm |
int |
0-1000 |
60分钟 |
光伏发电站
属性类型 |
属性名称 |
属性单位 |
数据类型 |
属性范围 |
上报间隔/规则 |
虚拟属性 |
实时功率 |
kW |
int |
0-10000000 |
所有发电阵列实时功率累加 |
虚拟属性 |
当日发电量 |
kWh |
float |
0-1000000 |
所有发电阵列当日发电量累加 |
虚拟属性 |
当月发电量 |
kWh |
float |
0-1000000 |
当月所有天发电量累加,实时更新 |
虚拟属性 |
当年发电量 |
kWh |
float |
0-1000000 |
当年所有天发电量累加,实时更新 |
虚拟属性 |
未来30日发电预测 |
kWh |
float |
0-1000000 |
本期不适用 |
四、制作3D模型
整个光伏电站的实时状态展示及告警展示我们使用IoT孪生引擎的场景编辑器进行开发,需要根据电站的实际情况进行3D模型的制作,制作完成之后生成GLB或GLTF格式的文件导入到IoT孪生引擎中使用。我们准备的3D模型如下所示:
准备好3D模型后,我们就可以进入实际的系统开发阶段了。
2. 开发阶段
一、基本概念
使用IoT孪生引擎开发数字孪生系统整体开发分成四步: 创建孪生空间、构建孪生体(也叫孪生实例)、配置数据源、管理孪生场景。
下面是后续操作会涉及到IoT孪生引擎的一些核心概念。
概念 |
说明 |
孪生空间 |
孪生应用的顶层容器,包含应用信息、孪生实体图、数据源输入配置、3D模型资源及3D场景。 |
孪生实体图 |
简称“孪生实体”,由多个和多层级的孪生节点组成,用于构建物理世界的业务场景、业务流程和业务模型。 |
孪生节点 |
组成孪生实体图的节点,用于映射真实设备及其物模型数据。 |
孪生体模板 |
可复用的孪生体结构,可选中孪生体中一个或多个孪生节点生成孪生体模板。孪生体模板中新孪生节点,会拷贝源孪生节点间的关系、物模型定义和孪生规则,且新孪生节点信息支持单独修改。 您可引用或拷贝孪生体模板到孪生实体图中使用,快速构建完整的业务流程和模型。 |
物模型定义 |
在孪生体和孪生体模板中,支持为孪生节点配置物模型属性。属性数据可来自物理设备的数据映射,也可由孪生规则运算得出。 |
数据源 |
孪生实体图的数据输入源,可使用数据映射功能,将物理设备上报的Topic数据和API数据源,处理并传递给目标孪生节点的物模型属性。 |
场景 |
孪生应用中与孪生实体图对应的3D交互页面,以3D模型形式展示孪生体实时业务状态。 您需自行上传3D模型资源至IoT孪生引擎工作台,来搭建场景。 |
组件 |
可视化组件,包含状态数据卡、仪表盘、进度图、图表和水位图,关联3D模型的模块和孪生节点的数据,用于展示孪生体实时数据、状态和告警信息。 |
二、前置准备
您需注册一个阿里云的账号,然后登录物联网平台,可以购买一个企业实例也可以先通过免费实例进行体验,免费实例也可进行demo体验。体验地址(需先登录阿里云账号):https://iot.console.aliyun.com/digital-twin-console/spaceDemo
三、创建孪生空间
创建孪生空间
在空间管理页面,单击创建空间,输入空间名称,空间描述、空间坐标创建孪生空间,该空间包含孪生体、数据源及孪生场景,一个孪生空间可对应一个实际的项目。
构建孪生节点
在孪生实体图页面,单击编辑孪生体进行孪生体编辑器,通过右键新建节点或拖拽左上角孪生节点来添加新节点,用于构建孪生体节点关系结构。构建完成的孪生体用于描述客户的业务模型,后续数据源配置,孪生场景的搭建都是基于该孪生体模型进行。其中的节点可以和真实设备相对应,也可以是逻辑业务节点,我们按照在准备阶段梳理的业务流程创建对应的孪生节点。
添加物模型
我们按照准备阶段整理的各个设备物模型(光伏组件、逆变器、发电阵列、电站气象仪、光伏发电站),在对应的孪生节点上依次添加,如下图所示。
添加虚拟属性(运算规则)
对于各个设备虚拟属性,需要通过其他属性数据的计算得来,在IoT孪生引擎中通过孪生规则来实现,我们根据在准备阶段梳理的设备物模型,依次创建设备的孪生规则来构建虚拟属性。
节点运算规则分成两种类型:
- 自身节点规则 :自身节点物模型属性数据的计算规则。
- 父子节点规则 :父子节点间物模型属性数据的计算规则。
为方便使用编辑、开发,规则配置内置了25个运算符和32个函数,并且支持不同类型的数据计算,编辑器也可以自动进行语法补全。
孪生模版
为更方便构建孪生实体,可选中孪生实体图中的节点生成孪生模板,会把选中节点的关系、物模型和规则都拷贝到模板中,然后再通过引用、拷贝模板的方式来构建孪生实体图。
在光伏电站场景中,逆变器、光伏组件都是需要复用创建的,因此我们都把第一个创建的孪生节点及其物模型通过创建模板的方式进行复用,以节省整个开发时间,操作步骤如下所述。
创建孪生模版
选中希望复用孪生节点,点击右键生成孪生模板。
通过模板构建孪生体
通过拖拽孪生模版,构建相同物模型、阶段运算规则的孪生体节点,简化客户配置的过程。
四、配置数据源
逆变器、光伏组件、电站气象仪三类设备实时上报的数据会先到物联网平台上,通过数据源配置将这三类设备的数据映射到孪生实体的具体节点属性上,以达到孪生实体实时感知物理设备状态的目的。
脚本配置
孪生实体与物理设备之间是解耦关系,可使用数据映射功能,将物理设备的原始数据映射到孪生实体的业务模型中,即孪生节点的物模型属性上。数据映射由以下3部分组成:
配置项 |
说明 |
数据源 |
数据源类型包含:
|
脚本文件 |
使用JavaScript语言编辑脚本,解析处理设备Topic的原始数据,最后输出JSON格式数据。文件大小不超过128 KB。 |
输出文件 |
使用规定的JSON数据格式,将设备Topic数据或通过脚本处理后的数据,映射到指定孪生节点的物模型属性上。文件大小不超过256 KB。 |
然后选择具体的数据源类型,以及数据来源,来编写脚本和输出文件,其中脚本文件是可选的(原始的来源数据直接映射到孪生节点)。
运行结果
可以通过查看孪生节点的快照、历史数据、运行日志等来观察孪生体的运行情况,下图为某个PV组件1小时的电压数据。
五、场景配置
场景是数字孪生系统中的展示及交互页面,以3D方式展示孪生模型中的实时数据、状态及告警信息。可在场景中关联孪生模型中的数据源,配置状态及告警,完成配置后可预览并发布页面,页面发布完成后可嵌入至业务系统中进行展示,我们这里新建一个光伏商业电站的场景进行配置。
场景管理
单击场景管理页面,创建一个名称为光伏商业电站的场景,描述可选填。
若关闭提示面板,可在场景列表,单击场景卡片,或单击卡片右下角的更多图标后单击进入编辑工作台,进入场景编辑工作台。
3D资源管理
场景当中依赖的3D资源在此处进行上传和管理,将准备阶段制作的光伏电站3D模型(gltf/glb类型)文件进行上传。
场景编辑器
进入场景编辑器后将前一步上传的模型拖拽到场景中,本模型不做样式调整,仅调整角度及缩放比例。
场景数据配置
在场景编辑器中,单击数据配置,再单击左侧组件面板中的+图标添加一个组件,在右侧面板中依次对组件进行命名(选择一个有业务含义的名字,如本图中“B区电站-2号逆变器”),选择该组件对应的3D文件MESH(可选择多个),再选择该组件关联的孪生节点,之后该孪生节点的属性数据可作为基础数据配置不同的数据看板,如下图所示配置了5个数据看板(可根据看板偏好选择仪表盘、趋势图、水位图等样式)。
告警配置:如下图所示,单击编辑组件面板中的告警标示,新建一个告警,告警内容为在“准备阶段-确定系统目标”章节定义的告警内容,这样当关联的数据超过所设定的阈值后就可以以告警图标显示出来,点击告警图标后可以显示具体的告警内容及维修建议。
按照上述数据配置步骤将其他需要在3D模型上展示的数据及告警依次进行配置完成即可。
补充说明:IoT孪生引擎抽象了一套模型用于串联孪生体和3D文件,其中场景是具体孪生实体的可视化方案,场景有多个组件组成,组件一侧关联孪生实体的节点作为数据源,一侧关联3D文件的MESH(3D模型拆分的基本单元)。组件关联的孪生数据源又支持status多种状态面板、alert自定义告警规则表达式,widget自定义可视化组件。后端将孪生实体的节点数据和规则数据进行实时计算推给前端,用于3D模型的动态渲染。同时我们设计了一套dsl,用户可以自定义渲染样式来关联后端孪生体的数据源,操作更灵活。整体的操作步骤如下:
3. 发布阶段
场景预览&分享
在所有数据配置完成之后,单击场景编辑器右上角预览图标,查看配置是否正常。若所有配置符合预期,单击场景编辑器右上角分享图标将页面分享给其他用户,其他用户可直接通过链接URL和密码查看已经配置好的光伏电站数字孪生运维系统,比如接入到监控大屏或在展会时直接通过URL访问向客户进行演示。
4. 实验总结
通过本实验,相信您已经了解了构建数字孪生系统的基本步骤以及如何使用阿里云物联网平台和IoT孪生引擎来开发一个数字孪生系统。如果您后续想要进一步了解IoT孪生引擎,可以通过我们的官方网站进行查看,也欢迎您加入阿里云IoT物联网在线交流群,如果实验有任何问题,可以进群咨询。
实验链接:https://developer.aliyun.com/adc/scenario/52f21f42835e4ce99b50347fa4c70298