logo资料库

模拟风电数据日志分析设计.docx

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
模拟风电数据日志分析设计 一、风电数据分析: 1.提取数据项 风机在运行中产生的数据种类多样,数量巨大,有测风数据、电量指标,以及 箱变系统、变桨系统、偏航系统和齿轮箱各个设备部件的运行状态和故障信息 等等。由于风电机组中的环境、工况、状态参数具有一定的复杂、多变的特性, 且各参数之间相互关联,我们可以利用大数据手段,从海量的数据中挖掘出影 响风机正常运行的关键因素,提升风机发电量,并对频繁发生故障的部件进行 预警,降低运维成本。 以提高发电量一项来说。提高发电量是复杂的系统工程,因为它会受到影响的 因素非常多。比如主控参数优化,参数设置、偏航优化和变桨优化,需要整体 考虑才能得到理想的结果,得到更高的产能和利润。这就需要对风机产生的数 据进行整体性、联动性分析,而这就是大数据技术的用武之地了。 提取将处理数据项:风速、电量 2.风电数据用途 (1)集控 (2)发电量统计、能效分析等 BI 场景 (3)设备健康状况监控和监测 (4)故障关联分析 (5)设备故障预测 (6)业务管理优化 为了支撑这些数据驱动的应用场景,需要整合多维度的生产经营数据以及更细 粒度的秒级、甚至毫米级数据。在风电这种典型的工业大数据场景,数据平台 架构可以基于数据特征进行优化,更加友好的支持实时、并发读写,以及横向 扩展。 3.日志内容
时间序列数据库是比较年轻的数据库,设计实现上更加新颖,如列式存储、REST API 接口、异步通信、分布式存储等都有广泛使用。 数据模型上,时序数据的字段往往如下定义: metric:具体的变量名。每个 metric 代表一类度量值,如偏航功率、环 境温度、机舱温度等; timestamp:时间戳,标识时间维度,可能是秒,也可能是毫秒,作为 KV 数据对中的 key; Value:变量值。跟时间戳一起组成 KV 数据对,Value 标识具体时间点的 变量值; TagKey/TagValue:TagKey 和 TagValue 组成一对描述数据的标签,比如 数据是属于哪个风机的,是哪个系统采集的等,通过 tag 补充标注。一个 KV 数据对,可以有无数个 TagKey/TagValue 描述,根据需要扩展完整的数据画像。 OpenTSDB 以 KV 数据库 Hbase 作为存储后端,可满足存储的横向扩展。对 元数据的管理和数据存储上有存储优化的设计,是 Hbase 的一大优势。 1. 通过为每个 metric、tag key 和 tag value 设计一个固定 3byte 的 UID 缩短 Rowkey 的长度; 2. 支持一个时间段内的数据进行整合后存储,如将一小时 3600 个数据点 合并成一个点,来节省 Rowkey 的数量。 Flume:从风场传来的日志文件的监控和收集 Kafka:风机日志文件的缓存和中间结果的保存 flink:风机日志文件的实时获取和预处理
OpenTSDB+Hbase+HDFS:数据的存储和扩展 2.日志设计: 参数: (1) 系统时间: systemTime= `date +%Y-%m-%d\ %H:%M:%S` (2) 环境温度: ambientTemperature (3) 机身温度: fuselageTemperature (4) 风速: windSpeed (5) 发电量: powerGeneration (6) 风机编号:fanNumber (7) 机型:model 执行脚本自动化模拟数据 版本 1:(吴跟强设计) [root@master ~]# cat windpower-datas.sh #!/bin/bash fanNumber_list=("001" "002" "003") model_list=("X" "Y" "Z") ambientTemperature_list=("23" "36" "25.5") fuselageTemperature_list=("76" "68") windSpeed_list=("20" "23") powerGeneration_list=("100" "102") ((i=0)) while [ 1 ] do
((i++)) #系统时间 systemTime=`date +%Y-%m-%d\ %H:%M:%S` #风机编号 fanNumber_num=$(((RANDOM%3))) fanNumber=${fanNumber_list[$fanNumber_num]} #机型 model_num=$(((RANDOM%3))) model=${model_list[$model_num]} #环境温度 ambientTemperature_num=$(((RANDOM%3))) ambientTemperature=${ambientTemperature_list[$ambientTemperature_ num]} #机身温度 fuselageTemperature_num=$(((RANDOM%2))) fuselageTemperature=${fuselageTemperature_list[fuselageTemperatur e_num]} #风速 windSpeed_num=$(((RANDOM%2))) windSpeed=${windSpeed_list[$windSpeed_num]} #发电量 powerGeneration_num=$(((RANDOM%2))) powerGeneration=${powerGeneration_list[$powerGeneration_num]} echo "$systemTime $fanNumber $model $ambientTemperature $fuselageTemperature $windSpeed $powerGeneration" >>/var/log/windpower/windpower.log sleep 1;
done 版本 2:(刘晓君设计) [root@master ~]# cat dataDemo.sh #!/bin/bash step=1 RANDOM_MAX_INT=32768 function random_float() { local scale=2 local min=25 local max=29 j=$((5+${RANDOM}%5)) i=1 my_list=() while(($i<=j)) do local random1=$( echo "scale=2;${min}+${RANDOM}/${RANDOM_MAX_INT}*(${max}-${min}+1)" | bc -l ) my_list[i]=${random1} let i++ done current=`date "+%Y-%m-%d %H:%M:%S"` timeStamp=`date -d "$current" +%s` #currentTimeStamp=$((timeStamp*1000+`date "+%N"`/1000000)) echo "${timeStamp} ${my_list[*]}" >> /root/dataDemo.log } while [ 1 ] do
random_float sleep $step done
分享到:
收藏