💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
摘要:
本文考虑通过控制分布式微发电机的无功功率注入来调节电力配电网的电压配置问题。我们定义了一个非常普遍的纯局部反馈控制器类别,其中无功功率注入是基于局部电压测量进行调整的。这个类别包括文献中提出的大部分解决方案和最新的电网规范。我们表明这些策略不能保证所需的调节,因为每一个都可能存在一个在所需电压和功率约束方面不可行的平衡态。我们随后提出了一个网络反馈定律,以表明通过在微发电机之间增加短距离通信,可以设计出可以保证收敛到可行集合的控制策略。最后通过仿真展示了这种局部和网络策略之间的基本性能差距。
未来的电力分配网格预计将承载大量分布式微发电,并为日益增长的需求提供服务,例如由电动车更广泛的普及所推动。预计这些网格将出现拥塞现象,仅仅通过基于最坏情况分析的超大尺寸网络设计(安装即忘)无法有效解决。例如,这些低压和中压网络的电压配置将受到双向有功功率流的影响,预计过压和欠压情况会越来越频繁发生。
目前研究人员和从业者正在探索的一条途径是为微发电装置提供感知和计算能力,并利用其电力接口的灵活性从电网注入(或吸收)无功功率。如果得到适当控制,这些设备可以作为一种细粒度分布的无功功率补偿器网络,为配电网提供宝贵的辅助服务,最终防止可再生能源的削减,促进广泛的电动汽车普及,并推迟电网增强。
由于缺乏对配电网的全面状态监测,大部分针对电压调节的无功功率控制工作集中于纯粹的本地(即完全分散的)反馈策略(见图1)。根据这些策略,功率逆变器的无功功率注入根据实时测量值进行调整,这些测量值可以在功率逆变器连接到电网的点进行测量[5]。已经提出了不同的变体(见[6,第IV-D节]中的综述)。在大多数情况下,无功功率注入的参考值是根据测量电压幅值的静态函数计算的,通常具有死区和/或饱和[7]。已经提出了基于数据驱动的方法,以便根据过去数据或对电网需求和发电的先前信息来调整这些静态映射[8],[9]。在某些策略中,静态反馈还另外添加了一个前馈项,这是一个关于本地有功和无功功率需求的函数[10],[11]。基于电压灵敏度矩阵分析的静态反馈的离线优化(即斜率因子和阈值),已经在[12]中提出。
IEEE123节点:
详细文章见第4部分。
📚2 运行结果
部分代码:
for k = 1:length(t)
% PV production
mpc.gen([1 2],PG) = pvproduction(k,1:2)';
% power demands
mpc.bus(1:(n-1),PD) = p(k,:)';
mpc.bus(1:(n-1),QD) = q(k,:)';
% solve PF equations
results = runpf(mpc, mpoption('VERBOSE', 0, 'OUT_ALL',0));
v_incremental(k,:) = results.bus(:,VM);
if k==length(t)
break;
end
% decentralized reactive power compensation
q_incremental(k+1,:) = q_incremental(k,:) - max(v_incremental(k,c)-params.VMAX,0);
q_incremental(k+1,:) = max(q_incremental(k+1,:), params.QMIN);
mpc.gen([1 2],QG) = q_incremental(k+1,:)';
end
%% Networked control
disp('Simulation: networked control')
K = 10; % Sample time ratio for the inner feedback loop
v_networked = zeros(length(t),n);
q_networked = zeros(length(t),2);
lambda = zeros(length(t),2);
mu = zeros(1,2);
qhat = zeros(1,2);
G = gparameters(mpc,c); % G gains
gamma = 1/(2*norm(G)); % gain of the inner feebdack loop
alpha = 10; % gain of the outer feedback loop
for k = 1:length(t)
% PV production
mpc.gen([1 2],PG) = pvproduction(k,1:2)';
% power demands
mpc.bus(1:(n-1),PD) = p(k,:)';
mpc.bus(1:(n-1),QD) = q(k,:)';
% solve PF equations
results = runpf(mpc, mpoption('VERBOSE', 0, 'OUT_ALL',0));
v_networked(k,:) = results.bus(:,VM);
if k==length(t)
break;
end
% networked reactive power compensation
lambda(k+1,:) = max(0, lambda(k,:) + alpha*(v_networked(k,c) - params.VMAX));
% inner loop
for innerk = 1:K
qhat = -lambda(k+1,:) + mu * G;
mu = max(0, mu + gamma*(params.QMIN-qhat));
end
qhat = max(qhat, params.QMIN);
q_networked(k+1,:) = qhat;
mpc.gen([1 2],QG) = q_networked(k+1,:)';
end
%% Plots
disp('Generate figures')
close all
colorone = [217,95,2]/255;
colortwo = [117,112,179]/255;
colorgrey = 200*[1,1,1]/255;
figure(1)
hold on
line([0 t(end)/60/60], [1 1], 'Color', 'black', 'LineStyle', '-')
line([0 t(end)/60/60], [params.VMAX params.VMAX], 'Color', 'black', 'LineStyle', '--')
plot(t/60/60,v_nocontrol, 'Color', colorgrey, 'LineWidth', 0.5)
plot(t/60/60,v_nocontrol(:,c(1)), 'Color', colorone, 'LineWidth', 1)
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
Saverio Bolognani , Ruggero Carli , Guido Cavraro , and Sandro Zampieri