Flink 在新能源场站运维的应用

摘要:本文整理自中南电力设计院工程师、注册测绘师姚远,在 Flink Forward Asia 2022 行业案例专场的分享。本篇内容主要分为四个部分:

  1. 建设背景

  2. 技术架构

  3. 应用落地

  4. 后续及其他

点击查看原文视频 & 演讲PPT

一、建设背景

1

建设背景主要分为宏观背景和场站侧的需求。

上图引用的是 2022 年我国电力发展和改革形势分析报告的统计数据,展示了 2013-2021 年,九年间装机容量的增长百分比。可以看出传统火电和水电的增长已经乏力;核电由于基数较少基本处于平稳发展;而新能源电站,特别是风电站和光伏电站经过多年的建设,在维持较高增长率的同时,很多电站已经进入存量运维的阶段。随着时间推移,设备老化等运维问题逐渐增加。

2

从发电设备的日平均利用小时数来看,风电和光伏的日平均可利用小时数都维持在一天五个小时左右,这还是综合了全年的数据进行的平均计算。如果单看某一段时期,利用小时数会更低,对整个电网的稳定运行是特别不利的,主要是因为风电和光伏严重依赖自然条件进行发电。所以,针对场站,在自然条件允许的情况下,确保风电和光伏的满负荷运转,是运维考虑的首要问题。

3

从场站侧来看,我们在系统建设上的主要出发点有以下三点:

  • 刚才所描述的设备,在风光可利用窗口期内,尽可能多发电是首要的目的。

  • 希望合理减少人工的运维投入,更多进行自动化的运转。

  • 能预测风光的强度,也就能大概预测发电量,对并网运行和电力市场的现货交易情况都有很大用处。

二、技术架构

2.1 整体架构

4

从上图抽象的简单处理架构可以看出,我们把核心系统分为了三个部分,分别是采集、处理、服务。

  • 采集:利用物联网的子系统,适配各种采集协议,进行数据采集。更多的是电力行业相关的专有协议,经过简单的处理后推送到处理系统。
  • 处理:包含了整个 Flink 流处理在内的整套处理分析、存储中心。
  • 服务:利用处理之后的数据,结合业务系统的数据进行对外服务。

2.2 “分布式”系统

5

通常意义上的分布式系统,可能就是系统分布在各个节点里进行协同的交互。但由于我们现场场站的限制,我们的分布节点之间不能进行直接通讯。按照标准要求会进行设备隔离的分区,它利用硬件将系统中设备进行了物理分区,网络是独立的,但它又没有完全阻挡数据的交互,它可以通过特殊装置进行数据交换,物理隔离装置就起到了这个作用。我们的系统采用的是单向隔离,数据只从分区到主系统分区进行单向的数据传输。

三、应用落地

3.1 隔离分区处理

6

时间问题可能是分布式系统大家都会碰到的常见问题,在我们的系统里这个问题也比较突出。传感器的数量较多,而且传感器的数值对系统的运作还很重要。因为系统处于受限的网络环境中,高精度在线授时无法进行请求,软件授时精度及可靠性也无法得到保证。同时,我们采用流处理模式处理时间的问题,很难进行数据的清洗,剔除又会降低数据的可用率。

最开始我们的思路是采用清洗的办法来处理,但处理难度太大,我们就换了个思路。我们在隔离分区内部加上了北斗授时装置,这样分区内的高精度授时传感器都从授时装置中获取高精度的时间。当传感器的数据到达处理系统时,绝大部分时间都可以确保是正常的,极少量的异常数据也是在可容忍的范围内。

7

通常空间和时间是相伴的问题,特别是风机,它的运作和摆头式的电风扇很类似,叶片绕电机的轴转动,电机又绕基座转动,但风机的转动频率可能会比电风扇低很多。这个问题如果在游戏里,它就是相对坐标和矩阵运算的问题。

在我们的系统里,我们希望所有组件都可以,以统一的坐标进行展示。简单来说就是,给定一个时刻场站所有运行风机的瞬时状态位置,可以在一张图里反馈出来,不需要再进行一些复杂的矩阵或者空间运算。

处理方式是,传感器的数据在进入系统后,匹配塔基的基础数据,然后基于统一的坐标框架,把瞬时姿态信息求解,之后就会落库到时序数据库里进行存储。

8

传感器的数据预处理和清洗是数据利用的基础。

在预处理上,不少传感器数据在设计时,为了数据的高效和快速传输,会进行一定的计算或者合并处理。在预处理过程中就需要根据传感器的元数据定义,还原数据的真实含义值,最后进行测试和分析。

在数据清理上,我们主要用来处理时间标注、值的跳变、数据量缺失,进行补充差值。

9

在数据架构部分,我们介绍了网络的隔离状况,它无法利用 tcp 进行数据交互,只能通过文件的方式进行数据传输。基于这个方式,我们利用了增量同步的思路,将数据加上指标后序列化到小文件里,在主服务端循环监测数据文件的变化情况。

有新的文件到达系统之后立即进行反序列化,解析到消息队列中进行后续处理。在整个过程中,数据其实会存在一定延迟,但数据交换的频率足够高,影响不是特别大。

3.2 主系统区处理

10

在主系统分区里,不仅包含了很多传感器数据,还包含了业务系统数据、与传感器有关联的设备的详细信息、传感器所组成的主设备的详细信息。在这里,可以利用系统之间的数据进行合并分析,掌握设备全体的状态信息。根据我们的划分,我们将按照聚合差值、推导进行数据的拼装合并,然后也会按照比值、差值、时间进行统计。

11

下面以一个设备的数据整合为例说明一下。

通常一个设备它有上千个传感器,它每个传感器获取的都是单一的测点信息,且每个传感器获取的采样频率不一致。那么设备的瞬时状态和整体的情况是如何的分析的呢?

这个问题就和盲人摸象的故事一样,即使我们上了很多监测手段,但每个监测手段都是独立的。我们真正需要的是,可以整合所有问题,然后告诉我们这个设备的状态是否正常。

12

针对设备的瞬时状态,我们处理的思路是,根据设备传感器的分组,确定它是属于计量、控制还是监测。当新的测点数据到达系统后,我们利用属性信息将传感器的分组进行整合运算。在运算状态里,我们会来维持设备本身的传感器信息的分组、运算函数、运算函数所需要的前置信息。

当新的数据进入系统后,我们会进行状态值的更新。而瞬时状态值的计算是定时根据传感器值和拟合函数计算得到。这些拟合函数用的比较多的,包含一次函数、二次函数、分段函数、反比例函数、对数函数等。最终这些设备的瞬时状态会通过异步的形式落库。

13

接下来我们来看一下长时间维度的整体情况。

按照五分钟或者一个小时的情况统计,处理过程其实是类似的。不同的是计算过程及函数方法的差异,对应的结果会进入其他的系统进行综合的分析和利用。

14

单一的设备处理介绍,基本上就是上述思路。更上一层,可能涉及到设备之间和场站之间的信息。主要包括遥测数据、峰谷差数据、电镀统计数据、停运数据。他们的整体统计情况,我们主要通过一些聚合运算来完成。

15

还记得我们在最开始的时候,我们提到了风光严重靠天吃饭的问题。气象就是天的核心,准确的预测气象是非常重要的研究内容。

16

当前主流的方法是进行物理模型的创建,然后进行气象模拟,但它的专业度高,复杂度也高。所以我们想尝试通过将场站几年的历史数据进行拟合,不断迭代分析完善,进行大概的预测。利用文献资料,我们选取了自适应滤波法和平稳时间序列模型,在 Flink 里进行实现。然后根据历史数据和传感器当前的实时数据进行迭代分析。

效果其实不是特别理想,也没有想到更好的解决办法。后续我们可能还会借助建模的方式进行场站范围内微气象的建模,进行分析和预测。

四、后续及其他

4.1 后续

17

在气象预测方面,如果一条路不太通顺,我们可能会换种思路进一步尝试。

在辅助传感器的应用方面,无论是我们还是业界,基于传感器数据的综合使用分析,还属于浅层利用,离智能化的路还比较长。

在管理融合方面,结合现场的实际需求,真正的让传感器发挥效应,是很值得挖掘的。另外运维现状,新的系统在不断建设,系统之间也没有打通。后续将构想以处理中心的办法来驱动技术和管理应用的结合。

4.2 总结

总结

首先,在专业度上,我们属于跨越不同行业进行融合,在广度而非深度上进行 Flink 利用,很少会动底层实现的能力;其次,对能稳定运行且不干扰其他业务系统的运转,我们将会降低应用程序设计的复杂度,从而达到减少出错率的目的;最后,我们考虑更多的是,通过软硬件结合来协同处理问题。比如时间问题,Flink 处理起来可能会比较困难,我们就会引入硬件来解决这个问题。问题可能在系统之内,但是解决的办法可能在软件系统之外。软硬件结合,其实我们的批处理和流处理也是分开的系统。后续我们可能也会考虑在批流合一方面进行一些尝试。

4.3 今年工作的地点和环境

18

点击查看原文视频 & 演讲PPT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/4303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Yalmip入门教程(3)-约束条件的定义

博客中所有内容均来源于自己学习过程中积累的经验以及对yalmip官方文档的翻译:https://yalmip.github.io/tutorials/ 之前的博客简单介绍了约束条件的定义方法,接下来将对其进行详细介绍。 首先简单复习一下: 1.定义约束条件可以使用矩阵拼接…

GRE和MGRE

目录 GRE GRE环境的搭建 MGRE MGRE的配置 MGRE环境下的RIP网络 MGRE实验 VPN 说到GRE,我们先来说个大家熟悉一点的,那就是VPN技术。 背景需求 企业、组织、商家等对专用网有强大的需求。 高性能、高速度和高安全性是专用网明显的优势。 物理专…

Notepad++ 配置python虚拟环境(Anaconda)

Notepad配置python运行环境步骤: 打开Notepad ->”运行”菜单->”运行”按钮在弹出的窗口内输入以下命令: 我的conda中存在虚拟环境 (1) base (2) pytorch_gpu 添加base环境至Notepad中 cmd /k chdir /d $(CURRENT_DIRECTORY) & call cond…

TX Barcode .NET for WPF Crack

TX Barcode .NET for WPF Crack 用于WPF软件的TX Barcode.NET包括一天完成的功能以及用于WPF的软件的2D条形码控制。 用于WPF的TX Barcode.NET的功能和属性: 它具有以下特性和属性,如: 常见的文字处理功能:它可以为用户和开发人员…

FastEdit ⚡:在10秒内编辑大型语言模型

概述: 这个仓库旨在通过一个单一的命令,有效地将新鲜且定制化的知识注入到大型语言模型中,以辅助开发人员的工作。 支持的模型:○ GPT-J (6B)○ LLaMA (7B/13B)○ BLOOM (7.1B)○ Falcon (7B)○ Baichuan (7B/13B)○ InternLM (7…

stable diffusion windows本地搭建的坑

刚刚2小时前,我搭好了,欣喜若狂,开放端口,同事也尝试了。我的配置 16G内存,AMD卡,有gpu但是没有用。这里不说具体步骤,只说坑点。 首先就是安装gfpgan、clip、openclip问题,我参考…

Kind | Kubernetes in Docker 把k8s装进docker!

有点像杰克船长的黑珍珠 目录 零、说明 一、安装 安装 Docker 安装 kubectl 安装 kind 二、创建/切换/删除集群 创建 切换 删除 将镜像加载到 kind 群集中 零、说明 官网:kind Kind: Kubernetes in Docker 的简称。kind 是一个使用 Docker 容…

CentOS5678 repo源 地址 阿里云开源镜像站

CentOS5678 repo 地址 阿里云开源镜像站 https://mirrors.aliyun.com/repo/ CentOS-5.repo https://mirrors.aliyun.com/repo/Centos-5.repo [base] nameCentOS-$releasever - Base - mirrors.aliyun.com failovermethodpriority baseurlhttp://mirrors.aliyun.com/centos/$r…

数据仓库建设-数仓分层

数据仓库能够帮助企业做出更好的决策,提高业务效率和效益;在数据仓库建设时,绕不开的话题就是数仓分层。 一、数据分层的好处 1. 降低数据开发成本 通用的业务逻辑加工好,后续的开发任务可以基于模型快速使用,数据需…

IDEA使用方式

1.翻译 1.Plugins插件:Chinese中文插件 文件F 编辑E 视图V 导航N 代码C 分析Z 重构R 构建B 运行U 工具T VCSS 窗口W 帮助H文件N 新建N 打开 打开最近 关闭项目 设置T 项目结构 文件属性 保存全部S 从磁盘全部重新加载 作废缓存/重启 导出/导入操作 其他设置 导出 打…

windows下mysql8定时备份,bat脚本编写,dos免密执行

前提:mysql8已经安装。 编写脚本copy_mysql_data.bat echo off set timestamp%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2% set backupfileD:\ProgramData\MySQL\Backup\backup_%timestamp%.sql set mysqlpathD:\Program Files\MySQL\MyS…

ubuntu版本Linux操作系统上安装键盘中文输入法

要在ubuntu版本Linux操作系统上安装键盘中文输入法 可以按照以下步骤进行操作: 1、Linux终端输入:sudo apt-get install ibus-pinyin 这将安装一个常用的中文输入法 “ibus-pinyin”。 2、重新启动系统:为了使输入法生效,需要…

ubuntu打开usb摄像头

文章目录 前言一、识别 usb 摄像头二、安装应用程序显示摄像头捕捉到的视频1、使用应用程序茄子(cheese)2、运行 cheese 捕捉视频 前言 记录一下解决在 Linux 下打开 usb 摄像头界面黑屏的问题。 一、识别 usb 摄像头 1、保持在 ubuntu 界面&#xff0…

前端学习记录~2023.7.17~CSS杂记 Day9

前言一、浮动1、使盒子浮动起来2、清除浮动3、清除浮动元素周围的盒子(1)clearfix 小技巧(2)使用 overflow(3)display: flow-root 二、定位1、定位有哪些2、top、bottom、left 和 right3、定位上下文4、介绍…

科技赋能企业,实现数字化转型

科技是第一生产力,数字技术即科技,可以改变传统的商业模式,为各行各业注入新的活力。 推动企业数字化转型,可是实现行业的效率提升,实现跨界重组,重构产业模式,为产业格局重新赋能,最…

AJAX: 事件循环(举例细论)

概念:执行任务和收集异步任务,在调用栈空闲时,反复调用任务队列里回调函数的一种执行机制 原因:JavaScript 是单线程的,为了不阻塞 JS 引擎,设计执行代码的模型 JS内代码如何执行: 执行同步代…

PHP与Golang对战:两种语言的比较与应用场景探讨

引言 在软件开发领域,选择一种合适的编程语言对于项目的成功至关重要。而在今天的文中,我们将探讨两个备受争议的编程语言——PHP与Golang之间的对战。通过比较它们的优势和应用场景,帮助开发者更好地了解如何选择适合自己项目的语言。 PHP的…

伙伴云CEO戴志康:我们为什么要做伙伴云?

分享嘉宾:戴志康,伙伴云CEO 以下为演讲实录⬇⬇⬇ 01选择人更少的一条路,从B级走向A级 我一直想和大家交流一个话题,关于我们为什么要做伙伴云。既代表我自己,同时也代表我们团队的一些想法。 我是一个怀疑论者。大…

Win10 配置NDK安装2023.7.19版本

NDK安装流程 1. 下载:2. 安装:3. 测试: 在大多数情况下,使用 Android SDK 管理器安装 NDK 会更轻松。本文单独安装NDK,但后续也可以使用管理器进行管理。 1. 下载: 地址 Fig.1 最新稳定版本 2. 安装&…

3.6 Bootstrap 导航元素

文章目录 Bootstrap 导航元素表格导航或标签胶囊式的导航菜单基本的胶囊式导航菜单垂直的胶囊式导航菜单 两端对齐的导航禁用链接下拉菜单带有下拉菜单的标签带有下拉菜单的胶囊标签页与胶囊式标签页 Bootstrap 导航元素 本文将讲解 Bootstrap 提供的用于定义导航元素的一些选项…