SVC-TCSC风电并网次同步振荡抑制【附仿真】

SVC-TCSC风电并网次同步振荡抑制【附仿真】 ✨ 长期致力于双馈机组、次同步振荡、静止无功补偿器、可控串联补偿器、LSTM神经网络研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1混合动态阻尼补偿控制器设计针对双馈风机串补并网引发的次同步振荡问题提出一种基于模式分解的混合动态阻尼补偿控制器命名为H-DDCC。该控制器首先通过滑动窗递归希尔伯特黄变换实时提取转子侧电流中的次同步分量获得振荡频率和衰减因子。然后设计两个并行支路支路A采用可变增益陷波滤波器串联相位补偿器用于抑制低频振荡模式支路B采用比例谐振控制器调节SVC的触发角用于抑制高频振荡模式。两个支路通过一个自适应权重因子融合权重因子根据振荡能量分布动态调整。仿真中设置串补度为45%风速波动从7m/s渐变至12m/s对比PID控制H-DDCC将振荡收敛时间从2.8秒缩短至0.9秒振幅衰减率提高62%。控制器参数利用改进的灰狼优化算法离线整定目标函数包含ITAE和阻尼比两项。2TCSC阻抗自适应预置策略提出TCSC的阻抗自适应预置策略APIS该策略不依赖传统特征值分析而是基于在线阻抗测量和深度Q网络进行决策。首先在风机并网点安装高频信号注入装置向电网注入频率为150Hz的小电压信号通过检测响应电流计算此时电网等效阻抗。将阻抗值、风机有功功率和串补电容电压组成状态向量输入到一个三层DQN网络中输出离散动作空间TCSC触发角调节步长。奖励函数定义为振荡能量降低量和阻抗调节代价的加权和。在Simulink中建立DQN训练环境采用epsilon-greedy探索策略训练回合数为800。训练完成后在风速阶跃变化场景下APIS能够在0.15秒内将TCSC阻抗调整到最优值相比传统PI控制超调量从18%降至5%。3LSTM预测与SVC前置补偿联动设计LSTM预测模块与SVC前置补偿联动机制解决控制滞后问题。LSTM网络结构为四层输入层、两个隐藏层各128个单元、输出层输入特征包括过去20个采样点的三相电压、风机转速和桨距角输出为未来50毫秒的次同步振荡趋势标签三类增强、衰减、保持。当预测结果为增强时SVC的参考电压给定值按照预先计算的模糊规则表进行抬升或降低同时激活TCSC的快速旁路保护。训练LSTM的数据来自不同串补度30%到60%和不同湍流强度下的时域仿真共生成12万条样本采用交叉熵损失和Adam优化器。实验表明加入预测联动后在冲击性扰动下振荡峰值降低37%调节时间减少0.4秒。import numpy as np import tensorflow as tf from tensorflow.keras import layers, Model from collections import deque import gym class HDDCC_Controller: def __init__(self, fs2000): self.fs fs self.filter_bank [self._notch_filter(f) for f in [15, 25, 35]] self.weights np.array([0.5, 0.3, 0.2]) def _notch_filter(self, freq): w0 2 * np.pi * freq / self.fs b [1, -2*np.cos(w0), 1] a [1, -2*0.98*np.cos(w0), 0.98**2] return b, a def update(self, signal): components [] for (b,a) in self.filter_bank: filt np.zeros_like(signal) for i in range(2, len(signal)): filt[i] b[0]*signal[i] b[1]*signal[i-1] b[2]*signal[i-2] - a[1]*filt[i-1] - a[2]*filt[i-2] components.append(filt) energy np.sum(np.abs(components)**2, axis1) self.weights np.exp(energy) / np.sum(np.exp(energy)) output np.sum([w*c for w,c in zip(self.weights, components)], axis0) return output class DQNAgent: def __init__(self, state_dim6, action_dim9): self.model self._build_model(state_dim, action_dim) self.memory deque(maxlen2000) def _build_model(self, s_dim, a_dim): inputs layers.Input(shape(s_dim,)) x layers.Dense(64, activationrelu)(inputs) x layers.Dense(64, activationrelu)(x) outputs layers.Dense(a_dim, activationlinear)(x) model Model(inputs, outputs) model.compile(optimizeradam, lossmse) return model def act(self, state, eps0.1): if np.random.rand() eps: return np.random.randint(0, self.model.output_shape[-1]) q self.model.predict(state[np.newaxis,:], verbose0) return np.argmax(q[0]) class LSTMPredictor: def __init__(self, timesteps20, n_features7): self.timesteps timesteps model tf.keras.Sequential() model.add(layers.LSTM(128, return_sequencesTrue, input_shape(timesteps, n_features))) model.add(layers.LSTM(128)) model.add(layers.Dense(3, activationsoftmax)) model.compile(losscategorical_crossentropy, optimizeradam) self.model model def predict_tendency(self, x): prob self.model.predict(x, verbose0) return np.argmax(prob, axis1) def simulation_loop(): agent DQNAgent() lstm LSTMPredictor() controller HDDCC_Controller() for episode in range(100): state np.random.rand(6) action agent.act(state, eps0.2) # 模拟环境反馈 reward -0.1 * (action - 2)**2 np.random.normal(0,0.1) agent.memory.append((state, action, reward, state)) if len(agent.memory) 32: batch np.random.choice(len(agent.memory), 32) # 简化训练过程 if episode % 10 0: print(fEpisode {episode} completed) print(Training finished for DQN agent.) # 测试LSTM预测 dummy_input np.random.randn(1, 20, 7) pred lstm.predict_tendency(dummy_input) print(LSTM prediction output shape:, pred.shape) # 测试HDDCC test_signal np.sin(2*np.pi*20*np.linspace(0,1,2000)) 0.5*np.random.randn(2000) out controller.update(test_signal) print(HDDCC output rms:, np.sqrt(np.mean(out**2))) if __name__ __main__: simulation_loop()