当前位置: 首页 > news >正文

配电网电压调节及通信联系研究(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代码、数据、文章讲解

相关文章:

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

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

stegano(图片隐写、摩斯密码)

附件是PDF,我们在选择内容时发现光标溢出了文本 说明这里还存在一些我们看不到的内容 直接CtrlA全选,CtrlC复制后新建一个纯文本文件 将复制的东西粘贴过去 粘贴后发现果然多出来了一些东西,提取出来 BABA BBB BA BBA ABA AB B AAB ABAA A…...

wsl安装torch_geometric

在官网选择需要的版本 选择安装途径,选择runfile 执行第一行,会下载一个文件到目录下 需要降低C的版本,否则 执行sudo sh cuda_11.1.0_455.23.05_linux.run,会出现 查看对应的文件,会有 可以加上override参数之后,…...

ASP.NET Core - 依赖注入(二)

2,NET Core 依赖注入的基本用法 话接上篇,这一章介绍 .NET Core 框架自带的轻量级 Ioc 容器下服务使用的一些知识点,大家可以先看看上一篇文章 [ASP.NET Core - 依赖注入(一)] 2.3 服务解析 通过 IServiceCollection 注册了服务之后&#xf…...

Scala之集合(1)

目录 ​​​​​​​集合介绍: 不可变集合继承图:​编辑 可变集合继承图 数组: 不可变数组: 样例代码: 遍历集合的方法: 1.for循环 2.迭代器 3.转换成List列表: 4.使用foreach()函数&a…...

公网使用SSH远程登录macOS服务器【内网穿透】

文章目录前言1. macOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接macOS3.1 macOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接macOS4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址5. 使用固定TCP端口地址ssh远程前言…...

PVE相关的各种一键脚本(一键安装PVE)(一键开设KVM虚拟化的NAT服务器-自带内外网端口转发)

PVE 原始仓库:https://github.com/spiritLHLS/pve 前言 建议debian在使用前尽量使用最新的系统 非debian11可使用 debian一键升级 来升级系统 当然不使用最新的debian系统也没问题,只不过得不到官方支持 请确保使用前机器可以重装系统,…...

CSDN目录博客(zhaoshuangjian)

总目录 一、Java1.1 高并发1.2 多线程1.3 集合1.4 I/O1.5 异常1.6 事务1.7 锁机制1.8 JVM 二、数据库2.1 mysql2.1.1 mysql索引2.1.1 mysql锁2.1.1 mysql事务2.1.1 2.2 oracle2.3 postgresql2.4 达梦2.5 人大金仓kingbase 三、设计模式四、中间件4.1 缓存中间件-redis4.2 缓存中…...

uniapp人脸识别解决方案

APP端: 因为APP端无法使用uni的camera组件,最开始考虑使用内嵌webview的方式,通过原生dom调用video渲染画面然后通过canvas截图。但是此方案兼容性在ios几乎为0,如果app只考虑安卓端的话可以采用此方案。后面又想用live-pusher组件…...

hashlib模块

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 hashlib模块专栏:《python从入门到实战》 哈希算法,也叫摘要算法。 加密&…...

NC65合并报表如何取消上报并退回以及注意事项和相关问题总结

NC65合并报表如何取消上报并退回? 在【企业绩效管理】-【合并报表】-【合并】-【合并执行】节点中,点击〖数据中心〗按钮,在弹出的〖合并报表数据中心〗界面中,点击〖报送管理〗-〖合并方案请求退回〗,然后到【合并综…...

28岁,终于从字节退休了...

大厂一直是每个程序员都向往职业目标,大厂意味着薪资高、福利好、倍有面儿,而且发展空间也大。甚至有人调侃不想进大厂的程序员不是好程序员。 而在网上,也有各个网友分享自己在大厂的经历,在某平台还有一个近2600万浏览的话题&a…...

数据的表示和存储——

目录 浮点数的编码表示 浮点数类型 ​编辑 浮点数的表示 (1)浮点数(Float Point)的表示范围 (2)规格化数形式 (3)IEEE 754标准 其他形式的机器数表示 个人总结 浮点数的编码表…...

springboot零基础到项目实战

推荐教程: springboot零基础到项目实战 SpringBoot这门技术课程所包含的技术点其实并不是很多,但是围绕着SpringBoot的周边知识,也就是SpringBoot整合其他技术,这样的知识量很大,例如SpringBoot整合MyBatis等等。因此…...

自媒体都在用的5个素材网站,视频、音效、图片全部免费下载~

推荐几个自媒体必备的素材库,免费可商用,建议收藏! 1、菜鸟图库 视频素材下载_mp4视频大全 - 菜鸟图库 国内超大的素材库,在这里你可以找到设计、办公、图片、视频、音频等各种素材。视频素材就有上千个,全部都很高清…...

开放式耳机新巅峰!南卡OE Pro兼备澎湃音质、舒适佩戴、创新设计

众所周知,当初苹果带来TWS耳机新时代以后,后面有许多的蓝牙耳机相继跟随和模仿,但NANK南卡却独辟蹊径,将在近日重磅推出首款0压无感全开放无线耳机——南卡OE Pro,走向开放式TWS耳机的新时代。 31度黄金倾斜受力面&…...

1700页,卷S人的 Java《八股文》PDF手册,涨薪跳槽拿高薪就靠它了

大家好,最近有不少小伙伴在后台留言,又得准备面试了,不知道从何下手! 不论是跳槽涨薪,还是学习提升!先给自己定一个小目标,然后再朝着目标去努力就完事儿了! 为了帮大家节约时间&a…...

普通人是否能从ChatGPT中分一杯羹?

ChatGPT3.0刚刚推出,最开始的时候,人们只是将ChatGPT看作一个很会聊天的机器人,无论问题多么天马行空,它的答案看上去都有理有据。后来,像打开潘多拉魔盒一样,很多人开始拿它编大纲、撰写文案、编代码、创作…...

SpringBoot自动装配原理(附面试快速答法)

文章目录SpringBoot自动装配原理1. 从调用SpringApplication构造器方法开始2. 解析启动类4.按需装配4.1 分析dubbo自动装配5. 如果定义自己的starter6. 面试答法SpringBoot自动装配原理 之前面试被问到这个题目,只会答一些spi、AutoConfigration注解、Import之类的&…...

如何在大厂做好架构演进?

1 架构演进的定义 1.1 定义 通过设计新的系统架构(4R),来应对业务和技术的发展变化。 1.2 关键点 新架构新的复杂度 1.3 目的 应对业务和技术的发展变化后带来新的复杂度。 案例 淘宝去IOE,是因为业务发展大了后,IOE的成本和可控性难…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...