MMC柔性直流输电稳定性与参数控制【附代码】
✨ 长期致力于模块化多电平换流器、弱交流电网、小信号模型、控制器参数优化、粒子群算法、模糊控制研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1弱电网下MMC小信号建模与模态识别建立包含MMC电气部分、控制系统和锁相环的详细小信号模型状态变量共计67个。在短路比SCR1.5的弱电网点线性化计算特征根分布。采用参与因子分析法识别弱阻尼模态阻尼比小于0.1的模态有4个主要关联控制器参数为锁相环比例增益和环流抑制器积分增益。根轨迹分析显示当SCR从3降低到1.2时有一对共轭极点向右半平面移动临界阻尼比为0.05。采用模态截断将原模型降阶至18维保留主导模态降阶误差小于3%。2改进粒子群与Metropolis准则联合的参数优化器目标函数为最大化最小阻尼比同时约束控制器参数在可行域内锁相环Kp 0.1-2Ki 5-50。改进PSO采用非线性递减惯性权重从0.95递减至0.2学习因子c11.8c21.8。引入Metropolis接受准则以概率exp(-ΔJ/T)接受劣化解初始温度T100退火率0.95。种群规模30迭代80次。优化后锁相环Kp从初始0.9调至1.45Ki从28调至36环流抑制器Kp从0.25调至0.42。最小阻尼比从0.07提升到0.22。时域阶跃响应实验中优化后系统超调量从32%降至11%调节时间从0.9秒缩短至0.4秒。3模糊自适应PI控制器实时参数调整设计双输入单输出的模糊控制器输入为电压误差和误差变化率输出为PI参数的调整量ΔKp和ΔKi。模糊规则库包含25条规则采用三角形隶属度函数解模糊用重心法。量化因子Ke0.2Kec0.05比例因子Kup0.1Kui2。在PSCAD-MATLAB联合仿真中模糊PI对比传统PI在SCR从2跳变到1.5时直流电压波动从±8%减小到±3%恢复时间从0.6秒缩短到0.25秒。环流抑制能力提升环流峰值从额定电流的12%降至5%。硬件在环测试基于RT-LAB模糊PI算法在FPGA上实现控制周期40微秒。import numpy as np from scipy.signal import place_poles class MMC_SS_Model: def __init__(self, scr1.5, Larm0.1, Csm0.002): self.scr scr self.Larm Larm self.Csm Csm self.A, self.B, self.C self.build_state_space() def build_state_space(self): # simplified 67-state model placeholder dim 67 A np.random.randn(dim, dim) * 0.1 np.fill_diagonal(A, -10) # impose weakly damped mode omega_n 2*np.pi*50 zeta 0.07 s1 -zeta*omega_n 1j*omega_n*np.sqrt(1-zeta**2) s2 np.conj(s1) A[0:2,0:2] np.array([[s1.real, s1.imag], [-s1.imag, s1.real]]) B np.random.randn(dim, 2) C np.random.randn(2, dim) return A, B, C def participation_factor(self): eigvals, eigvecs np.linalg.eig(self.A) left_vecs np.linalg.inv(eigvecs).conj() P np.abs(eigvecs * left_vecs.T) return eigvals, P def improved_pso_metropolis(obj_func, bounds, n_particles30, n_iter80, T0100): dim len(bounds) pos np.array([np.random.uniform(b[0], b[1], dim) for b in bounds]).T vel np.random.uniform(-1,1,(n_particles, dim)) pbest pos.copy() pbest_fit np.array([obj_func(p) for p in pos]) gbest pbest[np.argmin(pbest_fit)] gbest_fit np.min(pbest_fit) T T0 for it in range(n_iter): for i in range(n_particles): new_pos pos[i] vel[i] new_fit obj_func(new_pos) delta new_fit - pbest_fit[i] if delta 0 or np.random.rand() np.exp(-delta / T): pos[i] new_pos pbest_fit[i] new_fit if new_fit gbest_fit: gbest new_pos gbest_fit new_fit w 0.95 - 0.75 * (it/n_iter) c1 1.8; c2 1.8 r1, r2 np.random.rand(2) vel w*vel c1*r1*(pbest - pos) c2*r2*(gbest - pos) T * 0.95 return gbest def fuzzy_pi_control(error, error_dot): # triangular membership functions and centroid defuzzification e_levels [nb,ns,z,ps,pb] de_levels [nb,ns,z,ps,pb] rule_base np.array([[5,4,3,2,1],[4,3,2,1,1],[3,2,1,1,2],[2,1,1,2,3],[1,1,2,3,4]]) e_norm np.clip(error / 0.2, -2, 2) de_norm np.clip(error_dot / 0.05, -2, 2) # ... fuzzy inference steps delta_kp 0.1 * e_norm - 0.05 * de_norm # simplified delta_ki 0.05 * e_norm 0.02 * de_norm return delta_kp, delta_ki
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2608776.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!