> 文章列表 > 配电网电压调节及通信联系研究(Matlab代码实现)

配电网电压调节及通信联系研究(Matlab代码实现)

配电网电压调节及通信联系研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章讲解


💥1 概述

本文考虑通过控制分布式微型发电机的无功注入来调节配电网电压曲线的问题。我们定义了一类非常通用的纯本地反馈控制器,其中无功功率注入根据本地电压测量值进行调整。此类包括文献和最新电网规范中提出的大多数解决方案。我们表明,这些策略并不能保证所需的调节,因为它们中的每一个都可以具有在所需电压和功率约束方面不可行的平衡。然后,我们提出了一个网络反馈定律,以表明通过增加微发电机之间的短程通信,可以设计出可证明收敛到可行集的控制策略。本地策略和网络策略之间的这种基本性能差距最终通过仿真得到了说明。

预计未来配电网将承载大量的分布式微型发电,并满足日益增长的需求,例如,由电动汽车的更广泛传播推动。预计这些网格将表现出拥塞现象[1]-[4],仅通过基于最坏情况分析(适合和忘记)设计超大网络无法充分解决。例如,这些低压和中压网络的电压曲线将受到双向有源潮流的影响,预计过压和欠压情况将越来越频繁地发生。

研究人员和从业人员目前正在探索的一个途径是为微型发电机提供传感和计算能力,并利用其电力电子接口的灵活性从电网注入(或提取)无功功率。如果控制得当,这些设备可以充当精细分布的无功补偿器网络,为配电网提供有价值的辅助服务,并最终防止可再生能源的削减,允许广泛的电力交通,并推迟电网加固。

由于缺乏对配电网的全面状态监测,大多数用于电压调节的无功功率控制工作都集中在纯粹的局部(即完全分散)反馈策略上(见图1)。根据这些策略,功率逆变器的无功注入根据可以在功率逆变器连接到电网[5]时执行的实时测量进行调整。已经提出了不同的变体(见[6,第IV-D节]中的审查)。在大多数情况下,无功功率注入的基准是作为测量电压幅度的静态函数计算的,通常具有死区和/或饱和[7]。已经提出了数据驱动的方法,以便根据过去的数据或电网需求和发电的先前信息来调整这些静态地图[8],[9]。在某些策略中,静态反馈由前馈项补充,该项是局部有功和无功功率需求的函数[10],[11]。[12] 中提出了基于电压敏感矩阵分析的静态反馈(即斜率因子和阈值)的离线优化。

由于这些静态反馈定律可能导致振荡行为,因此还提出了增量策略。在这种情况下,根据电压幅度和过去的无功功率设定值[13],[14]调整功率注入。 其他局部动态控制器也被提出,要么通过实现类似下垂的行为来解决一些逆向工程电压调节问题[15],[16],要么通过显式实现所需成本函数的梯度下降轨迹[17]-[20]。已经考虑了不同的成本函数和不同的下降方法,只要得到的动态更新是完全去中心化的[21]-[23]。

微发电机的纯局部无功功率控制策略已被考虑纳入一些配电网规范的最新版本[24]-[26]。然而,根据经验观察到,与“基准”解决方案相比,这些策略可能表现不佳,在“基准”解决方案中,集中式控制器可以访问整个网络状态,并且可以最佳地调度无功补偿器[27],[28]。此外,即使是最小的代理到代理通信也被证明对这种应用有益[29]-[31]。

在本文中,我们研究了纯本地电压调节策略的性能与分布式策略之间存在根本差距,其中允许代理之间的通信量最小。

我们首先制定一个纯本地控制器的一般类,其中包含上述示例。拟议的控制器类别已在初步工作[32]中提出,包括[33]中定义的较小类别,该类仅模拟从测量电压到无功功率控制的静态图。我们通过一个反例展示了如何构建所有这些控制器都不能有效地调节所需限值之间的电压的场景,即使如果正确调度,可用的无功功率资源也允许它。换句话说,局部反馈控制定律无法将系统驱动到可行的工作点,尽管这位于逆变器的无功能力区域内。

与[32]相比,在本文中,我们通过提出一种分布式无功功率控制策略来完成对这一基本性能差距的研究,该策略只需要短距离通信,使用与本地控制策略相同的测量(微发电机的电压幅度和无相量测量),不需要监视所有总线(与[34]-[38]中的分布式解决方案相反)),并可证明收敛到一个可行的工作点,保证满足电网电压限制。从应用的角度来看,这种Volt/VAR策略本身很有趣:据我们所知,文献中没有可用的协调电压调节策略符合这些规范(除了基于不同迭代优化方法的工作文件[39])。

📚2 运行结果

​ 

 

 

 

​ 

​ 

 

部分代码:

部分代码:

%% 可视化 
disp('机组可视化')

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)
    plot(t/60/60,v_nocontrol(:,c(2)), 'Color', colortwo, 'LineWidth', 1)
    xlabel('时间[h]')
    ylabel('电压[p.u.]')
    ylim([0.98 1.1])
    xlim([0 12])
    box on
    title('非受控')
    
    
figure(2)
    hold on
    line([0 t(end)/60/60], [params.VMAX params.VMAX], 'Color', 'black', 'LineStyle', '--')
    line([0 t(end)/60/60], [1 1], 'Color', 'black', 'LineStyle', '-')
    plot(t/60/60,v_static, 'Color', colorgrey, 'LineWidth', 0.5)
    plot(t/60/60,v_static(:,c(1)), 'Color', colorone, 'LineWidth', 1)
    plot(t/60/60,v_static(:,c(2)), 'Color', colortwo, 'LineWidth', 1)
    xlabel('时间[h]')
    ylabel('电压[p.u.]')
    ylim([0.98 1.1])
    xlim([0 12])
    box on
    title('完全分散控制(静态)')
    
    
figure(3)
    hold on
    line([0 t(end)/60/60], [params.QMIN(1) params.QMIN(1)], 'Color', colorone, 'LineStyle', '--')
    line([0 t(end)/60/60], [params.QMIN(2) params.QMIN(2)], 'Color', colortwo, 'LineStyle', '--')
    line([0 t(end)/60/60], [0 0], 'Color', 'black', 'LineStyle', '-')
    plot(t/60/60,q_static(:,1), 'Color', colorone, 'LineWidth', 1)
    plot(t/60/60,q_static(:,2), 'Color', colortwo, 'LineWidth', 1)
    xlabel('时间[h]')
    ylabel('无功功率[MVAR]')
    ylim([min(params.QMIN)-0.1 0.1])
    xlim([0 12])
    box on
    title('完全分散控制(静态)')
    
    
figure(4)
    hold on
    line([0 t(end)/60/60], [params.VMAX params.VMAX], 'Color', 'black', 'LineStyle', '--')
    line([0 t(end)/60/60], [1 1], 'Color', 'black', 'LineStyle', '-')
    plot(t/60/60,v_incremental, 'Color', colorgrey, 'LineWidth', 0.5)
    plot(t/60/60,v_incremental(:,c(1)), 'Color', colorone, 'LineWidth', 1)
    plot(t/60/60,v_incremental(:,c(2)), 'Color', colortwo, 'LineWidth', 1)
    xlabel('时间[h]')
    ylabel('电压[p.u.]')
    ylim([0.98 1.1])
    xlim([0 12])
    box on
    title('完全分散控制(增量)')
    
    
figure(5)
    hold on
    line([0 t(end)/60/60], [params.QMIN(1) params.QMIN(1)], 'Color', colorone, 'LineStyle', '--')
    line([0 t(end)/60/60], [params.QMIN(2) params.QMIN(2)], 'Color', colortwo, 'LineStyle', '--')
    line([0 t(end)/60/60], [0 0], 'Color', 'black', 'LineStyle', '-')
    plot(t/60/60,q_incremental(:,1), 'Color', colorone, 'LineWidth', 1)
    plot(t/60/60,q_incremental(:,2), 'Color', colortwo, 'LineWidth', 1)
    xlabel('时间[h]')
    ylabel('无功功率[MVAR]')
    ylim([min(params.QMIN)-0.1 0.1])
    xlim([0 12])
    box on
    title('完全分散控制(增量)')
    
figure(6)
    hold on
    line([0 t(end)/60/60], [params.VMAX params.VMAX], 'Color', 'black', 'LineStyle', '--')
    line([0 t(end)/60/60], [1 1], 'Color', 'black', 'LineStyle', '-')
    plot(t/60/60,v_networked, 'Color', colorgrey, 'LineWidth', 0.5)
    plot(t/60/60,v_networked(:,c(1)), 'Color', colorone, 'LineWidth', 1)
    plot(t/60/60,v_networked(:,c(2)), 'Color', colortwo, 'LineWidth', 1)
    xlabel('时间[h]')
    ylabel('电压[p.u.]')
    ylim([0.98 1.1])
    xlim([0 12])
    box on
    title('网络控制(DVS)')
    
figure(7)
    hold on
    line([0 t(end)/60/60], [params.QMIN(1) params.QMIN(1)], 'Color', colorone, 'LineStyle', '--')
    line([0 t(end)/60/60], [params.QMIN(2) params.QMIN(2)], 'Color', colortwo, 'LineStyle', '--')
    line([0 t(end)/60/60], [0 0], 'Color', 'black', 'LineStyle', '-')
    plot(t/60/60,q_networked(:,1), 'Color', colorone, 'LineWidth', 1)
    plot(t/60/60,q_networked(:,2), 'Color', colortwo, 'LineWidth', 1)
    xlabel('时间[h]')
    ylabel('无功功率 [MVAR]')
    ylim([min(params.QMIN)-0.1 0.1])
    xlim([0 12])
    box on
    title('网络控制(DVS)')
    
figure(8)
    hold on
    line([0 t(end)/60/60], [0 0], 'Color', 'black', 'LineStyle', '-')
    plot(t/60/60,pvproduction(:,1), 'Color', colorone, 'LineWidth', 1)
    plot(t/60/60,pvproduction(:,2), 'Color', colortwo, 'LineWidth', 1)
    xlabel('时间[h]')
    ylabel('有功功率[MW]')
    xlim([0 12])
    box on
    title('发电')
    
    
figure(9)
    hold on
    line([0 t(end)/60/60], [0 0], 'Color', 'black', 'LineStyle', '-')
    plot(t/60/60,p, 'Color', colorgrey)
    plot(t/60/60,p(:,15), 'Color', 'black', 'LineWidth', 1)
    xlabel('时间[h]')
    ylabel('-负荷[MW]')
    xlim([0 12])
    box on
    title('功率需求')

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]S. Bolognani, R. Carli, G. Cavraro, and S. Zampieri
"On the need for communication for voltage regulation of power distribution grids"
Transactions on Control of Network Systems, vol. 6, no. 3, pp. 1111-1123, Sept. 2019.

🌈4 Matlab代码、数据、文章讲解