3. 风资源评估:长期数据订正、风玫瑰图、威布尔分布、年平均风速计算

各位好,我是老张。干风电这行十几年了,今天咱们聊聊风资源评估里最核心的几个活儿。说白了,就是搞清楚这地方到底有没有风,风怎么吹,能发多少电。我见过太多项目,前期评估拍脑袋,后期运维拍大腿。所以,这块内容,咱们得掰开了揉碎了讲。

核心逻辑:风资源评估不是看一天两天的数据,而是要通过短期实测数据,推算出代表长期平均水平的参数。这中间,数据订正、风玫瑰图、威布尔分布、年平均风速,一个都不能少。

3.1 长期数据订正:别被短期数据骗了

你想想看,我们在现场测风,通常就测个一年半载。但这一年可能是大风年,也可能是小风年。直接用这一年的数据去算发电量,那风险太大了。我有个朋友,在南方某山地项目,测风那一年刚好是厄尔尼诺年,风速偏大,结果项目建成后,实际发电量比预期低了15%,那叫一个惨。

所以,我们需要做长期数据订正。说白了,就是找一个附近长期运行的参考气象站(至少20年以上数据),把短期测风数据和长期参考数据建立关系,然后用这个关系去修正我们的测风数据。

常用的订正方法有两种:

  • 比值法:最简单粗暴。计算测风期间,测风塔与参考站的风速比值,然后用这个比值去修正参考站的长期平均风速。但这个方法有个前提:两地的风况相关性要好,且地形不能差太远。
  • 线性回归法:更靠谱一些。把测风塔的月平均风速和参考站的月平均风速做线性回归,得到回归方程。然后用这个方程,把参考站的长期月平均风速代入,算出测风塔的长期月平均风速。

我的经验:我个人习惯用线性回归法,但要注意剔除异常月份。比如参考站有仪器故障,或者测风塔有结冰期,这些数据点得先清理掉。我曾经处理过一个项目,回归相关系数只有0.6,后来发现是参考站换过位置,数据序列不连续。嗯,这里要注意,数据质量检查永远是第一步。

下面是一个简单的线性回归代码示例,用Python写的,你们可以感受一下:

import numpy as np
from sklearn.linear_model import LinearRegression

# 测风塔月平均风速 (m/s)
tower_speed = np.array([6.5, 7.2, 5.8, 6.9, 7.5, 6.1]).reshape(-1, 1)
# 参考站同期月平均风速 (m/s)
ref_speed = np.array([5.1, 5.8, 4.5, 5.5, 6.0, 4.8]).reshape(-1, 1)

# 建立线性回归模型
model = LinearRegression()
model.fit(ref_speed, tower_speed)

# 参考站长期平均风速 (m/s)
ref_long_term = np.array([5.3, 5.6, 4.7, 5.2, 5.9, 4.9, 5.1, 5.4, 4.6, 5.0, 5.7, 4.8]).reshape(-1, 1)

# 预测测风塔长期月平均风速
tower_long_term = model.predict(ref_long_term)

print("订正后的测风塔长期月平均风速:", tower_long_term.flatten())

避坑指南:我曾经遇到过一个沿海项目,参考站距离测风塔只有15公里,但一个在海岸线,一个在内陆丘陵。结果比值法算出来的数据偏差很大。为什么?因为海陆风效应差异巨大。所以,订正前一定要做风况相似性分析,别盲目套公式。

3.2 风玫瑰图:风从哪里来?

风玫瑰图,说白了就是一张风向分布图。它告诉你,这个地方的风,主要从哪个方向吹过来。这对风机排布至关重要。你想想看,如果主风向是西南风,你却把风机排成一排挡在西南侧,那后面的风机就喝西北风了。

绘制风玫瑰图,需要统计每个风向扇区(通常16个方位)的风频。然后按比例画出花瓣形状。花瓣越长,代表这个方向的风越多。

下面我用SVG画一个简单的风玫瑰图,展示一下它的样子:

N S W E 风频比例

你看这个图,南向(S)和南南东(SSE)方向的花瓣最长,说明这个场址的主风向是偏南风。那我们在排布风机时,就要考虑这个主风向,尽量让风机之间错开,减少尾流影响。

我的习惯:拿到测风数据后,我第一件事就是画风玫瑰图。不光是看全年,还要看季节变化。有些地方,冬天刮北风,夏天刮南风,那风机排布就得综合考虑。我曾经在西北一个项目,全年主风向是西北风,但夏季有短暂的东南风,结果没考虑这个,导致夏季发电量偏低。

3.3 威布尔分布:风速的脾气

风速不是一成不变的,它有自己的统计规律。威布尔分布就是用来描述这种规律的。它有两个关键参数:形状参数k和尺度参数A。

  • 形状参数k:决定了风速分布的形态。k值越大,风速越集中,风况越稳定。一般风电场k值在1.5到3之间。
  • 尺度参数A:与平均风速正相关。A值越大,平均风速越高。

威布尔分布的概率密度函数长这样:

f(v) = (k/A) * (v/A)^(k-1) * exp(-(v/A)^k)

其中:
v 是风速 (m/s)
k 是形状参数 (无量纲)
A 是尺度参数 (m/s)

为什么要用威布尔分布?因为有了它,我们就可以算出任意风速区间出现的概率,进而估算发电量。比如,我们可以算出风速在3-25 m/s(风机工作风速范围)之间的总小时数。

下面是一个用Python拟合威布尔分布的例子:

import numpy as np
from scipy.stats import weibull_min

# 假设我们有一年的逐小时风速数据 (m/s)
# 这里用随机数据模拟
np.random.seed(42)
wind_speed = np.random.weibull(2, 8760) * 7  # 形状参数k=2, 尺度参数A≈7

# 拟合威布尔分布
params = weibull_min.fit(wind_speed, floc=0)  # floc=0 固定位置参数为0
k_fitted = params[0]  # 形状参数
A_fitted = params[2]  # 尺度参数

print(f"拟合结果:形状参数 k = {k_fitted:.2f}, 尺度参数 A = {A_fitted:.2f}")

# 计算年平均风速
mean_speed = np.mean(wind_speed)
print(f"年平均风速:{mean_speed:.2f} m/s")

注意:威布尔分布拟合时,数据量要足够大,至少一年以上的逐小时数据。数据太少,拟合出来的参数不可靠。我见过有人用三个月数据去拟合,结果k值算出来3.5,明显偏大,导致发电量估算过于乐观。

3.4 年平均风速计算:最终答案

年平均风速,是所有风资源评估的落脚点。它直接决定了发电量的上限。计算方法很简单:把一年内所有风速数据加起来,除以总小时数(8760小时)。

但要注意,年平均风速有两种:

  • 算术平均风速:直接对所有风速数据求平均。这是最常用的。
  • 风能平均风速:按风能密度加权平均。因为风能与风速的立方成正比,所以风能平均风速通常比算术平均风速高10%-20%。

在发电量计算中,我们通常用算术平均风速,但如果你要做更精细的评估,风能平均风速更有参考价值。

风速区间 (m/s) 小时数 (h) 算术平均风速 (m/s) 风能平均风速 (m/s)
0-3 1500 1.5 2.0
3-6 2500 4.5 5.2
6-9 3000 7.5 8.1
9-12 1200 10.5 11.0
12-25 560 15.0 16.5
合计 8760 6.8 7.6

你看这个表,算术平均风速是6.8 m/s,但风能平均风速是7.6 m/s,高了近12%。这意味着,虽然低风速时间多,但高风速时段贡献了更多的风能。

避坑指南:我曾经在计算年平均风速时,直接用测风塔的原始数据,没做高度修正。结果算出来的风速比实际轮毂高度风速低了0.5 m/s。为什么?因为测风塔通常10米高,而风机轮毂高度是80米甚至更高。风速随高度变化,必须用风切变指数进行修正。这个细节,很多人会忽略。

好了,这一章的内容就到这里。风资源评估是个细致活,每一步都马虎不得。数据订正、风玫瑰图、威布尔分布、年平均风速,这四个环节环环相扣,缺一不可。希望你们在实际项目中,能把这些方法用起来,少走弯路。

专注资料整理