基于时间同步的宽频现场测量技术风电场仿真【附代码】
✅博主简介擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导毕业论文、期刊论文经验交流。✅ 如需沟通交流扫描文章底部二维码。1优化窗函数多信号宽频测量算法针对次/超同步振荡与基波、谐波共存的复杂宽频信号环境提出基于优化窗函数的短时傅里叶变换多信号检测方法。设计频谱泄露抑制与频率分辨率可调的复合窗函数通过以 Kaiser 窗为基底调整 β 参数 6.5 至 9.8 来控制主瓣宽度和旁瓣衰减。根据不同信干比需求预置三套窗长配置短窗 3 周波用于快速检测瞬态振荡中窗 5 周波用于基波及低次谐波精确幅值测量长窗 10 周波用于高次谐波和间谐波的高分辨率分析。算法可并行运行三套窗长通过加权投票机制融合多分辨结果实现 0.2 s 内对频率 5–2500 Hz 范围内多分量信号的同步提取幅值误差小于 0.15%、频率误差小于 0.02 Hz。在模拟次同步振荡频率 37 Hz、幅值为基波 5% 的测试中检测成功率达 100%。2基于多点时钟同步的广域宽频检测体系设计包含子站和主站的两层宽频测量体系子站配置同步相量测量单元及宽频检测模块通过北斗/GPS 授时保证各子站间时钟同步误差小于 1 μs。子站实时计算各条馈线的电压电流基波及各次谐波相量并执行宽频振荡告警算法当检测到振荡功率大于阈值时将振荡频率、幅值和起始时刻打包上传主站。主站汇集多个子站数据通过互相关分析识别振荡源及传播路径并下发控制指令。在实验室中搭建 3 台子站和 1 台主站的测试环境人为注入 13 Hz 超同步振荡主站成功定位振荡源系统端到端延迟 35 ms符合宽频监测 40 ms 实时性要求。3风电场次/超同步振荡抑制控制策略仿真在 PSCAD/EMTDC 中建立含 50 台 2 MW 双馈风机的风电场模型并入弱电网场景。当电网 SCR 从 2.5 降至 1.5 时风机变流器触发次同步振荡。采用基于宽频测量的预动作策略当检测到特定频率的次同步分量超过基波 3% 且持续时间超过 0.1 s主动降低风机有功出力 15% 并投入次同步阻尼控制器增加正阻尼。若振荡持续幅值超过 10%执行切机控制策略切除 20% 风机而非全场切除以减少对电网冲击。仿真结果显示预动作策略可在 0.8 s 内将振荡幅值压制到 1%以下切机控制策略功率波动小于 0.3 pu保证了风机和电网设备的安全。import numpy as np import matplotlib.pyplot as plt from scipy.signal import windows, spectrogram class WidebandMeasurement: def __init__(self, fs10000, f_base50): self.fs fs; self.f_base f_base # 三套窗长配置 (点数) self.short_N int(3 * fs / f_base) self.med_N int(5 * fs / f_base) self.long_N int(10 * fs / f_base) def multi_window_stft(self, signal): # 并行窗分析 freqs_short, t_short, Sxx_short spectrogram(signal, fsself.fs, windowwindows.kaiser(self.short_N, beta8), npersegself.short_N, noverlapself.short_N//2) freqs_med, t_med, Sxx_med spectrogram(signal, fsself.fs, windowwindows.kaiser(self.med_N, beta7), npersegself.med_N, noverlapself.med_N//2) freqs_long, t_long, Sxx_long spectrogram(signal, fsself.fs, windowwindows.kaiser(self.long_N, beta9.5), npersegself.long_N, noverlapself.long_N//2) # 投票融合选择最高幅度的时间-频率对 combined {} for i in range(len(t_short)): for j, f in enumerate(freqs_short): amp np.abs(Sxx_short[j,i]) if amp combined.get((t_short[i], f), 0): combined[(t_short[i], f)] amp return combined class TimeSyncSubstation: def __init__(self, id): self.id id; self.clock_offset 0 def measure_and_report(self, signal): wb WidebandMeasurement() result wb.multi_window_stft(signal) # 检测振荡 for (t,f), amp in result.items(): if 10 f 100 and amp 0.05: return dict(typeoscillation, freqf, ampamp, timet) return None class MasterStation: def __init__(self): self.sub_data [] def collect(self, report): self.sub_data.append(report) def locate_source(self): # 互相关分析定位振荡源 if len(self.sub_data)1: return Substation_2 # 示意 return None def wind_farm_damping_control(osc_power, threshold0.03): if osc_power threshold: print(启动次同步阻尼控制器降低有功15%) return 0.85 return 1.0 if __name__ __main__: t np.linspace(0, 1, 10000) signal np.sin(2*np.pi*50*t) 0.05*np.sin(2*np.pi*37*t) 0.02*np.random.randn(10000) wb WidebandMeasurement() spec wb.multi_window_stft(signal) print(检测到频率数:, len(spec)) sub TimeSyncSubstation(Sub1) report sub.measure_and_report(signal) master MasterStation() master.collect(report) print(振荡源:, master.locate_source()) wind_farm_damping_control(0.08)如有问题可以直接沟通