TDengine在中节能风力发电运维系统中的落地实践

2022年01月15日 阅读数:4
这篇文章主要向大家介绍TDengine在中节能风力发电运维系统中的落地实践,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。


做者:潘文彪html


小 T 导读中节能风力发电股份有限公司(股票简称:节能风电,股票代码:601016)是中国节能环保集团有限公司控股的现代股份制公司。公司前后成功中标并示范建设了国家第一个百万千瓦级风电基地启动项目——河北张北单晶河200兆瓦风电特许权项目,和第一个千万千瓦级风电基地启动项目——甘肃玉门昌马200兆瓦风电特许权项目,是国家首个百万千瓦、千万千瓦风电基地的示范者和引领者,在业内树立了较高的知名度和良好的品牌形象。建成、在建项目装机规模547.97万千瓦,已发展成为张北坝上地区、甘肃河西走廊地区最大的风电开发商之一,是我国风电领域一支重要的力量。

一.前端

项目背景
web



公司做为中节能集团在风电领域的专业化公司和核心上市平台,具有成熟的风电开发和运维经验,可是随着在建风场逐步增多以及各种新型传感器的加装,传统运维方式已经愈来愈吃力,数字化智能化的需求愈来愈强烈,所以迫切须要基于海量时序数据的数据平台来支撑繁杂的运维工做。

所以,咱们作了大量的时序数据调研工做。可是选型工做也并不是一路顺风,开始咱们尝试传统的工控时序数据库,可是随着测点数量的增多,单机版架构已经无力支撑,后期咱们也尝试了InfluxDB和OpenTSDB等分布式架构的时序数据库,可是性能又达不到要求。

机遇巧合,咱们注意到一款国产、开源的时序数据库TDengine,因此也尝试了一下。

二.sql

TDengine选型测试
数据库



针对咱们重点关注的查询性能,咱们作了以下几个测试。

1.微信

单测点历史数据聚合查询
架构

随机选择任一个测点,查询该测点在某个时间段测点采集值的count,max,min,avg;好比从2020-01-01 00:00:00.000 到 2020-02-01 00:00:00.000的31天内的共535680条数据记录的count,max,min,avg。具体的查询语句为:
select count(*),max(col117),min(col117),avg(col117) from t_QH01 where ts>='2021-08-15 00:00:00.000' and ts<'2021-08-16 00:00:00.000'

实验截图以下:

3次查询测试时延以下:app

测试批次运维

时延(秒)分布式

1

0.635000

2

0.145000

3

1.492000

平均值

0.7573333333333333

2.

分组聚合查询

查询某个时间段内测点采集值的count,max,min,avg,好比查询从2020-01-01 00:00:00.000 到 2020-02-01 00:00:00.000的31天内的数据记录的count,max,min,avg。数据库中对应查询语句为:
select count(*),max(col117),min(col117),avg(col117) from t_QH01 where ts >='2021-08-01 00:00:00.000' and ts<'2021-09-01 00:00:00.000' group by wtcode >>E:/taosTempData/2

实验截图以下:


3次查询测试时延以下:

测试批次 时延(秒)
1 0.040000
2 0.661000
3 0.099000
平均值 0.26666

3.

窗口查询操做

查询某个时间段内,按照1小时、1天、10天的时间窗口进行分组后的count,max,min,avg聚合结果;好比查询从2020-01-01 00:00:00.000 到 2020-02-01 00:00:00.000的31天内的所有数据记录,按照每1小时、1天、10天的时间区间划分后的count,max,min,avg。

数据库中对应查询语句为:
select count(*),max(col117),min(col117),avg(col117) from t_QH01 where ts >='2021-08-01 00:00:00.000' and ts<'2021-09-01 00:00:00.000' and wtcode ='001' interval (1h) >>E:/taosTempData/3;select count(*),max(col117),min(col117),avg(col117) from t_QH01 where ts >='2021-08-01 00:00:00.000' and ts<'2021-09-01 00:00:00.000' and wtcode ='001' interval (1d) >>E:/taosTempData/4; select count(*),max(col117),min(col117),avg(col117) from t_QH01 where ts >='2021-08-01 00:00:00.000' and ts<'2021-09-01 00:00:00.000' and wtcode ='001' interval (10d) >>E:/taosTempData/5;

实验截图以下:

多个批次查询测试时延以下:

测试批次 时延(秒)
interval(1h)第1次查询 0.107000
interval(1h)第2次查询 0.060000
interval(1h)第3次查询 1.072000
Interval(1h) 平均值 0.413
测试批次 时延(秒)
interval(1d)第1次查询 0.041000
interval(1d)第2次查询 0.087000
interval(1d)第3次查询 1.615000
Interval(1d) 平均值 0.581
测试批次 时延(秒)
interval(10d)第1次查询 0.072000
interval(10d)第2次查询 0.026000
interval(10d)第3次查询 0.020000
Interval(10d) 平均值 0.03933
通过反复对比测试以及应用适配,最终咱们选定TDengine做为咱们数据平台的时序数据解决方案。

三.

TDengine落地实践



目前中节能风电的总体时序数据流以下图所示:
风场的时序数据(主要是风机数据和电气数据)穿透网闸后,经由场站侧的采集程序采集和转发,最终全部数据会汇聚到集团侧的分布式时序数据库,前端的实时监视、指标计算均构建于其上,同时数据还要送到大数据分析平台和生产运维平台。

集团中心侧的TDengine集群起到了举足轻重的做用,既要收集全部风场的时序数据,同时还要支撑前端应用以及同步数据到其它系统。

TDengine的诸多特性中,最吸引咱们的是超级表标签功能。超级表能让同一类风机的建模、管理和计算过程更加方便快捷,而标签特性能增长诸如隶属项目、平台容量等维度特征,便于在聚合操做过程当中快速筛选或者分组。基于时间窗口和状态窗口的功能也为应用构建提供了不少方便,好比功率曲线拟合过程当中须要的五分钟平均风速和功率计算逻辑,以及基于风机状态的各种统计分析。

在TDengine的使用初期遇到了一些问题,主要涉及集群搭建和参数配置方面,通过和涛思数据技术团队的沟通交流,都已获得解决。

后期在数据建模和应用适配方面也走了一些弯路,尤为是数据建模方面。最开始咱们使用的是最简单的单列模式,一个测点一张表,在测点数目少的状况下问题并不明显,可是随着测点数目的不断膨胀,这种方式逐渐暴露出在应用适配方面的问题;后来咱们采起按照不一样机型不一样风场建超级表的方式建模,基本能解决咱们的应用问题,可是依然有无效开关量数值过多的问题;最终咱们采起将风机状态等重点开关量单列建模的方式解决了。

四.

总体效果和将来展望



目前基于TDengine数据库咱们构建了中节能风电运维平台,使用后数据存储优点明显,总体压缩比在7-8倍,数据查询也实现秒级响应。总体使用效果以下图所示:

将来咱们考虑在每一个风电场站的三区部署一个单节点TDengine,做用不仅是采集和转发,还要起到时序数据质量治理以及实时模型预测的功能;而在集团侧咱们会考虑基于TDengine构建更多更复杂的计算指标和高级模型;同时还要和任务调度引擎以及风电行业标准集成。将来的数据流图以下图所示:

最终将其做为中节能风电公司时序数据的核心技术组件来构建智能运维平台,为中节能风电公司3060双碳目标的提供坚实基础。


做者介绍:

潘文彪,中节能风电生产运维部数据分析师,2019年起从事节能风电的数据分析与数字化平台建设工做。



✨投稿活动到周一(1.17)就截止啦,别错过你的大奖哦✨
⬇️点击下图查看活动详情,
iPhone 13 Pro/AirPods Pro/阅读器 等你带回家!

👇点击 阅读原文,了解体验TDengine!

本文分享自微信公众号 - TDengine(taosdata_news)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。