气象大数据

风机载荷与疲劳的气象驱动:湍流、切变与极端阵风

· 南京运梦科技算法团队 · 评审 算法负责人

风机载荷与疲劳的气象驱动:湍流、切变与极端阵风 封面

谈风能时,大多数人盯着发电量;但决定一台风机能不能跑满 20–25 年设计寿命的,往往不是平均风速,而是风的"脾气"——风速在多大尺度上抖动、风廓线有多陡、会不会突然来一记重拳。湍流强度、风切变、风向切变与极端阵风,这四种气象量并不直接进入功率曲线,却直接进入叶根、塔底和传动链的载荷谱。它们一边以高频小幅度的方式累积疲劳损伤(fatigue),一边以低频大幅度的方式逼近极限载荷(ultimate load)。本文面向风电载荷与资源工程师,把这套"气象→载荷→寿命"的链条讲清楚,对齐 IEC 61400-1 的设计工况口径,并给出在运梦气象 API 上用 ERA5 与德国气象局数据为机位做"载荷气象画像"的可运行示例。

关键要点

  • 疲劳由湍流主导,极限载荷由阵风主导:湍流强度(TI)决定 10 分钟尺度内的高频波动,是疲劳损伤的主要驱动;极端运行阵风(EOG)、极端风向变化(EDC)等瞬态事件则逼近极限载荷,两条线必须分开核算。
  • IEC 61400-1 把湍流写进了等级划分:风机分级用参考风速 Vref 与参考湍流强度 Iref(A/B/C 三档,分别约 0.16/0.14/0.12),正常湍流模型(NTM)和极端湍流模型(ETM)据此生成设计载荷工况——选机型本质上是在选湍流等级。
  • 切变与风向切变让扫风面"受力不均":风速垂直切变使叶片每转一圈经历一次载荷起伏(1P 激励),风向切变(veer,风向随高度旋转)则让叶片在不同方位角迎角不同,二者共同贡献叶根挥舞/摆振方向的疲劳,大叶轮机型尤其敏感。
  • 疲劳分析靠雨流计数 + S-N 曲线 + Miner 线性累积:把载荷时间序列用雨流计数(rainflow counting)拆成应力循环,套 Wöhler/S-N 曲线,再按 Miner 准则线性叠加得到损伤;工程上常折算成损伤等效载荷(DEL)做横向对比。
  • 运梦平台一套字段两处复用:历史用 ERA5(dataSourceId="era5",含 10m 与 100m 风分量逐时反算切变),预报用德国气象局(dataSourceId="ger",未来约 7 天,字段口径一致)。TI 没有原生字段,需用 SCADA 高频标准差或切变作代理。

为什么载荷而不是风速决定寿命

风机是一台长期暴露在随机激励下的旋转机械。轮毂高度处一个 10 分钟时段的平均风速,只描述了"风往哪吹、吹多大",却没说"风抖得多厉害"。而恰恰是这个抖动,让叶片、轮毂、主轴、齿轮箱、塔筒里的每一个承力截面,在 20 年里经历上亿次应力循环。金属与复合材料的失效不是"被一次大力压垮",而是"被无数次中等力反复揉断"——这就是疲劳。

工程上把载荷分成两类,对应两套完全不同的气象驱动:

  • 疲劳载荷(fatigue load):高频、中小幅度、海量循环。主要由湍流引起的风速脉动驱动,叠加叶片每转一圈因切变、塔影、重力产生的周期性载荷(1P/3P)。它决定的是"能不能撑到设计寿命"。
  • 极限载荷(ultimate load):低频、大幅度、少数几次甚至一生一次。由极端阵风、极端风向突变、切出后的待机偏航失稳、台风极端风速等瞬态事件驱动。它决定的是"会不会被某一次事件直接打坏"。

这两条线在 IEC 61400-1 的设计载荷工况(DLC)表里被严格区分:疲劳类工况要在整个风速区间上按发生频率加权积分,极限类工况则要求在最不利的瞬态下校核强度。把两者混为一谈、只盯平均风速选址,是很多存量风场后期出现叶根开裂、螺栓松动、齿轮箱早衰的隐性根源。

湍流强度:疲劳损伤的主引擎

湍流强度 TI 的定义很朴素:某个时段(标准取 10 分钟)内风速的标准差除以平均风速,TI = σ_u / U。它衡量的是风相对自身大小的抖动幅度。开阔海面 TI 常低到 0.06–0.08,平坦农田约 0.10–0.14,复杂山地或森林边缘可超过 0.20,尾流区内更高。TI 越大,叶片迎角的随机摆动越剧烈,气动力波动越大,疲劳损伤累积越快——粗略说,疲劳损伤对 TI 的敏感度远高于对平均风速的敏感度。

IEC 61400-1 把 TI 抬到了机型分级的核心位置。标准用参考风速 Vref 划分风速等级(I/II/III 类,约对应 50/42.5/37.5 m/s 的 50 年一遇极值),再用参考湍流强度 Iref 划分湍流等级(A/B/C 三档,Iref 约为 0.16/0.14/0.12,定义在 15 m/s 处)。在此基础上:

  • **正常湍流模型(NTM)**给出随平均风速变化的湍流标准差代表值,用于疲劳工况的载荷计算;
  • **极端湍流模型(ETM)**给出更高分位的湍流水平,用于校核高湍流条件下的极限与疲劳载荷。

湍流的频谱结构也很关键。载荷仿真里通常用 Kaimal 谱或 Mann 模型生成三维湍流风场——前者是经验功率谱、便于工程实现,后者基于各向异性快速畸变理论、能更好刻画湍涡的空间相关结构。它们决定了脉动能量在不同频率上的分布,而叶片、塔筒的固有频率一旦落在能量集中的频段,就会被持续激励、放大疲劳。这也是为什么"同样的平均风速、同样的 TI",换一种谱型,算出来的损伤等效载荷可能差出可观的一截。

需要诚实说明:TI 是一个亚网格、亚小时的量,再分析与数值预报的逐小时网格场并不直接给出它。要拿到真实 TI,最可靠的是测风塔或 SCADA 的高频(如 1 Hz 或 10 分钟内采样)风速序列;退而求其次,可用风切变、稳定度等可解析变量做代理(见后文)。

风切变与风向切变:让扫风面受力不均

如果说湍流是"随机的抖",切变就是"系统性的不均"。

风速垂直切变让风机扫风面上半部分的风速高于下半部分。叶片每旋转一圈,叶尖就从低风速区扫到高风速区再扫回来,于是叶根挥舞弯矩出现一次周期性起伏——这就是 1P 载荷(每转一次)。切变越陡(切变指数 α 越大),这种周期性载荷幅度越大,叶根疲劳越重。夜间稳定边界层下 α 常升到 0.3 以上,正是 1P 疲劳的高发时段;而这恰恰被只看日均风速的评估所掩盖。

**风向切变(veer)**则是风向随高度的旋转——在北半球稳定层结下,风向常随高度顺时针偏转,扫风面顶部和底部的来流方向可以差出十几度甚至更多。这会让叶片在不同方位角处的迎角发生系统性变化:叶片转到顶部和转到底部时"吃风的角度"不同,进而带来挥舞与摆振方向上额外的周期性载荷分量。对扫风直径动辄超过 150 m 的大叶轮机型,叶尖与叶根的高差上百米,切变和 veer 跨越的风况差异被显著放大,二者对叶根疲劳的贡献不能再当二阶小量忽略。

IEC 61400-1 的转子等效风速(REWS)思路正是对此的回应:与其用单点轮毂风速代表整个扫风面,不如把扫风面分层、按各层风速(必要时含风向)加权,得到一个更能反映真实受力的等效风速。对载荷而言,这意味着切变与 veer 不是发电量的小修正,而是疲劳谱的一阶输入

极端阵风:逼近极限载荷的那一拳

疲劳是慢性病,极端阵风是急性创伤。IEC 61400-1 用一组确定性的瞬态阵风/风向事件来定义极限设计工况,常见的有:

  • 极端运行阵风(EOG):在很短时间内(典型十余秒)风速先小幅下沉、再急剧拔高、随后回落的"钟形"突变,幅度与年/50 年回归期挂钩。它直接冲击叶片气动力和塔顶推力,是极限载荷工况的常客。
  • 极端风向变化(EDC):风向在短时间内大幅、单调地偏转,使机组来不及偏航对风,叶片迎角骤变、载荷骤升。
  • 极端相干阵风含风向变化(ECD):风速跃升与风向突变同时发生且空间相干,是更苛刻的组合工况。
  • 极端风切变(EWS):垂直/水平切变在短时内异常增大,扫风面上下/左右载荷严重失衡。

这些工况之所以重要,是因为它们对应的不是"发电少了",而是"零部件被一次性推到强度边界"。叶尖位移会不会打塔、叶根螺栓会不会过载、塔底弯矩会不会越过屈服——校核的就是这些瞬态。真实大气里,强对流过境的飑线、雷暴下击暴流、台风眼墙前后的风速骤变,都是 EOG/ECD 的现实对应物。它们往往与短时强降水、气压跳变、温度骤降相伴,这就给了我们用气象数据事前识别高风险时窗的抓手。

从载荷时间序列到寿命:雨流、S-N 与 Miner

有了气象驱动的载荷时间序列(无论来自实测还是气动弹性仿真),把它折成"还能活多久"要走三步,这套方法已是行业通用语言:

  1. 雨流计数(rainflow counting):把不规则的载荷/应力时间序列拆解成一组组完整的应力循环,记录每个循环的幅值与均值。它解决的是"随机波形里到底有多少次、多大的循环"这个核心问题。
  2. S-N(Wöhler)曲线:对每种材料/连接,给出"某应力幅值下能承受多少次循环才失效"的关系(双对数坐标下常近似为直线,斜率即 Wöhler 指数 m)。复合材料叶片与钢结构塔筒的 m 值不同,对载荷幅值的敏感度也不同。
  3. Miner 线性累积准则:把每个应力幅值实际发生的循环数除以该幅值下的容许循环数,得到分项损伤,再线性相加;累计损伤达到 1 即视为达到疲劳寿命。

工程上为便于横向对比,常把复杂载荷谱折算成损伤等效载荷(DEL)——一个在给定循环次数下造成相同损伤的等幅载荷。比较两个机位、两种控制策略、两段湍流条件的优劣,看 DEL 比看原始时序直观得多。把这套方法和气象统计接起来,结论就很清楚:TI 大、切变陡的机位,相同平均风速下 DEL 更高、等效寿命更短——这正是把气象数据引入选址与机型匹配的价值所在。

落地:用运梦气象 API 给机位做"载荷气象画像"

回到工程。再分析与预报不能直接给你 10 分钟 TI,但能给你做载荷风险分层最需要的两件事:长期的切变/稳定度气候态,以及未来高风险时窗的预警。运梦平台的字段口径让历史与预报一套代码复用——历史回测用 ERA5(dataSourceId="era5",运梦产品历史范围 1950 年至今;ERA5 数据集本身覆盖 1940 年至今),预报用德国气象局(dataSourceId="ger",覆盖未来约 7 天)。

下面用 ERA5 拉某机位一年的 10m 与 100m 风分量,逐时反算切变指数 α 作为稳定度/切变代理,统计强切变(疲劳高发)小时占比,并粗筛风速骤变(阵风代理)时段。响应是统一 JSON envelope,用 resp.json() 解析后按字段名取等长数组、下标对齐。

import os, requests
import numpy as np

API = "https://console.yun-meng.top/api/energy-weather/search/weather/action/downloadSync"
TOKEN = os.environ["YUNMENG_TOKEN"]

payload = {
    "dataSourceId": "era5",            # 历史回测用 ERA5;预报改 "ger"(德国气象局,未来约 7 天)
    "lat": 41.8, "lon": 109.9,
    "stime": "2023-01-01 00:00",
    "etime": "2023-12-31 23:00",
    "timezone": "8",                   # 必填,东八区
    "fields": ["uas", "vas", "u100", "v100"],  # TI 无原生字段,用切变作稳定度/载荷代理
}
r = requests.post(API, headers={"Authorization": f"Bearer {TOKEN}"},
                  json=payload, timeout=600)
r.raise_for_status()
result = r.json()                       # 统一 envelope,无 CSV/NetCDF、无 format 参数
if not result.get("success"):
    raise RuntimeError(result.get("msg", "查询失败"))
data = result["data"]

ws10  = np.hypot(np.asarray(data["uas"],  float), np.asarray(data["vas"],  float))
ws100 = np.hypot(np.asarray(data["u100"], float), np.asarray(data["v100"], float))

# 逐时反算切变指数 α = ln(ws100/ws10) / ln(100/10),作切变/稳定度代理
mask = (ws10 > 0.5) & (ws100 > 0.5)     # 避开静风,避免对数发散
alpha = np.log(ws100[mask] / ws10[mask]) / np.log(100.0 / 10.0)

strong_shear = (alpha > 0.30).mean()    # 强切变(多对应夜间稳定层结)小时占比 → 1P 疲劳高发
print(f"α 均值={alpha.mean():.3f};强切变(α>0.30)小时占比={strong_shear*100:.1f}%")

# 阵风代理:相邻小时 100m 风速跳变(再分析平滑,仅作时窗粗筛,真实阵风需高频实测/仿真)
dws = np.abs(np.diff(ws100))
gust_hours = int((dws > 6.0).sum())     # 相邻小时跳变 >6 m/s 视作疑似强突变时窗
print(f"疑似强风速突变(逐时跳变>6 m/s)时段数={gust_hours}(极限载荷事件的气象代理)")

预报场景把 dataSourceId 换成 "ger"、时间窗移到未来即可,切变与突变判据完全复用,由德国气象局预报覆盖未来约 7 天,用于提前圈出强切变与疑似阵风时窗、安排降功率或偏航策略。

要强调的边界:上面算的是代理量而非真实 TI 与真实阵风。再分析/预报是逐小时网格场,平滑掉了亚小时脉动;真正的 TI、EOG 幅值必须靠测风塔或 SCADA 高频数据,载荷谱则要靠气动弹性仿真(如 OpenFAST、Bladed)把湍流风场喂进结构模型才能得到。运梦数据在这条链里的角色是长期气候态画像与预报预警:告诉你哪个机位、哪个季节、哪个时段的切变和突变更狠,从而指导机型湍流等级匹配、载荷敏感机位识别与运行期风险预案。

常见问题

湍流强度 TI 能从 ERA5 或德国气象局预报里直接取吗?

不能。TI 是 10 分钟尺度的亚网格量,再分析与数值预报给的是逐小时网格平均场,不含原生 TI 字段。可靠来源是测风塔/SCADA 的高频或 10 分钟标准差;工程上也常用 100m 与 10m 风的切变指数 α 作稳定度/湍流代理,或按地形粗糙度与气候区用经验 TI 分类值,精度依次递减。

风切变和风向切变(veer)对载荷的影响有何不同?

风速垂直切变让叶片每转一圈经历一次载荷起伏(1P 激励),主要加重叶根挥舞方向疲劳;风向切变让叶片在不同方位角迎角不同,额外贡献挥舞与摆振分量。二者都随扫风直径增大而放大,对大叶轮机型不能当小量忽略,IEC 的转子等效风速(REWS)就是为把整个扫风面的切变纳入而设。

IEC 61400-1 里的 NTM、ETM、EOG 分别管什么?

NTM(正常湍流模型)给疲劳工况用的常规湍流水平;ETM(极端湍流模型)给高分位湍流,校核极限与高湍流疲劳;EOG(极端运行阵风)是十余秒内的钟形风速突变,属极限载荷工况。再配合 EDC/ECD/EWS 等极端风向、相干阵风、极端切变工况,共同框定结构强度校核。

疲劳寿命是怎么从载荷时间序列算出来的?

三步通用流程:先用雨流计数把不规则载荷拆成应力循环,再套该材料/连接的 S-N(Wöhler)曲线得到每种幅值的容许循环数,最后按 Miner 线性累积准则把分项损伤相加,累计到 1 即达疲劳寿命。横向对比时常折算成损伤等效载荷(DEL),比直接看原始时序更直观。

运梦气象 API 在风机载荷工作里能帮到哪一步?

它的定位是长期气候态画像与预报预警,而非替代载荷仿真。历史用 ERA5(dataSourceId="era5")反算多年切变/稳定度,识别强切变高发机位与季节;预报用德国气象局(dataSourceId="ger",约 7 天)提前圈出强切变与疑似阵风时窗。真实 TI 与极限阵风载荷仍需高频实测与气动弹性仿真,运梦数据为其提供气象输入与风险分层。

参考与延伸阅读

  • International Electrotechnical Commission (2019). IEC 61400-1:2019, Wind energy generation systems — Part 1: Design requirements (Edition 4.0). Geneva: IEC. https://webstore.iec.ch/publication/26423
  • International Electrotechnical Commission (2017). IEC 61400-12-1:2017 — Power performance measurements of electricity producing wind turbines (Edition 2.0). Geneva: IEC. https://webstore.iec.ch/en/publication/26603
  • Hersbach, H., Bell, B., Berrisford, P., et al. (2020). The ERA5 global reanalysis. Quarterly Journal of the Royal Meteorological Society, 146(730), 1999–2049. https://doi.org/10.1002/qj.3803