基于 MATLAB 和 App Designer 的 UI 交互框架开发的一款电力系统潮流计算工具

基于 MATLAB 和 App Designer 的 UI 交互框架开发的一款电力系统潮流计算工具

文章目录

  • 基于 MATLAB 和 App Designer 的 UI 交互框架开发的一款电力系统潮流计算工具
    • 一、软件介绍
    • 二、软件功能
      • 1、数据输入
    • 2、潮流作业设置
    • 3、 潮流结果报表及可视化
    • 三、 软件设计思路
      • 1 、牛顿拉夫逊法潮流计算
      • 2、 PQ 分解法潮流计算
      • 3、 数据预处理
      • 4、 结果可视化
      • 5、连续潮流计算分析
      • 6、UI 交互设计
    • 四、 算例及测试结果
    • 五、源程序及测试数据下载

一、软件介绍

本工具是一款面向初学者的电力系统潮流仿真工具,数据输入格式和操作方法与 PSASP 电力系统分析软件类似,但功能更加精简,专注于电力系统潮流计算。目前软件可支持常规潮流计算(PQ 分解法、牛顿拉夫逊法)功能、潮流计算结果输出报表功能和连续潮流计算分析功能。目前软件已在 WSCC9 节点系统进行测试,潮流计算结果与 PSASP 相比,误差在 1e-4~1e-5 数量级左右,此计算精度证明了软件后端代码的正确性。
软件后端基于 MATLAB 开发,自定义函数包括 PQ 分解法、牛顿拉夫逊法潮流计算函数、节点导纳矩阵生成函数、数据预处理函数等。软件前端采用 MATLAB App Designer 工具设计,利用系统控件回调函数实现 UI 互。
在这里插入图片描述

二、软件功能

1、数据输入

在软件主界面左侧栏可以输入系统数据信息,包括母线信息(母线名称、基准电压、节点类型)、交流线信息(交流线名称、I、J 两侧连接母线名称、交流线阻抗参数和对地导纳参数)、变压器信息(变压器名称、I、J 两侧连接母线名称、变压器变比、阻抗参数)、发电机信息(发电机名称、所连接母线名称、有功出力和机端电压)、负荷信息(负荷名称、所连接母线名称、有功和无功消耗)。此外,与 PSASP 软件不同的是,PowerFlower 在系统数据信息输入方面还包括转移节点信息,转移节点是一类没有注入功率的节点,一般是发电机升压变压器的高压侧母线,在 PowerFlower 的计算中视为 P=0,Q=0 的 PQ 节点。节点(母线)信息输入:在左下角输入母线名称、基准电压、节点类型,点击确定按钮,输入信息将在系统数据信息中的母线表格中呈现,可以检查输入是否正确。
在这里插入图片描述

2、潮流作业设置

在软件主界面中间侧单线图下方可定义潮流作业,设置信息有计算电压上限、计算电压下限、计算方法、最大允许误差、最大迭代上限。当计算过程中电压超过上下限时,将停止迭代。计算方法可选择 PQ_DeCoupled(PQ 分解法)或 Newton(牛顿法),PQ 分解法的计算速度较快,但所用迭代次数相比于 Newton 法更多。其中最大允许误差可控制潮流计算结果的精度,最大允许误差越小,精度越高,但计算代价更大。当程序达最大迭代次数上限时,如果计算结果仍不满足精度要求,则跳出迭代,认为此次潮流作业不收敛,数据存在较大的错误。
在这里插入图片描述

3、 潮流结果报表及可视化

完成潮流作业设置后,选择确定按钮,即可开始潮流计算。若潮流计算结果正确收敛,则跳出弹框显示潮流计算用时,如图 所示,如果潮流计算未能正常收敛,迭代次数已达到最大迭代上限,则跳出警告弹窗。
在这里插入图片描述
当潮流计算作业完成后,可选择主界面右侧结果输出报表按钮,潮流计算结果将在右侧表格中显示,目前仅设置了母线和交流线潮流报表。同时,节点(母线)电压幅值和相角计算结果将在主界面中间的系统单线图中呈现。
在这里插入图片描述

三、 软件设计思路

1 、牛顿拉夫逊法潮流计算

牛顿拉夫逊法的潮流计算主要由函数 powerFlowNewtonCalcu.m 实现,其中函数的输入包括总节点数量、PQ 节点数量、PV 节点数量、Slack 节点数量、节点电压初值、节点相角初值、节点导纳矩阵的实部虚部、初始给定有功和无功功率以及容许的最大误差,输出为节点电压赋值和相角的终值以及每次迭代过程中的节点电压赋值及相角的值,反映迭代过程。

2、 PQ 分解法潮流计算

PQ 分解法的潮流计算主要由函数 powerFlowPQCalcu.m 实现,其中函数的输入包括总节点数量、PQ 节点数量、PV 节点数量、Slack 节点数量、节点电压初值、节点相角初值、节点导纳矩阵的实部虚部、初始给定有功和无功功率以及容许的最大误差,输出为节点电压赋值和相角的终值以及每次迭代过程中的节点电压赋值及相角的值,反映迭代过程。
程序设计总体思路与牛顿拉夫逊法类似,不同的是,牛顿拉夫逊法需要求解的线性方程组的系数矩阵(雅可比矩阵)是随着迭代过程而变化的,PQ 分解法需要分别求解两组系数矩阵(B’ B”)固定不变的线性方程组。由于需要反复求解系数矩阵固定的线性方程组,考虑算法速度的情况下,可以采用 LU 分解的方法提高算法度。

3、 数据预处理

数据预处理的作用是通过软件输入信息获得总节点数量、PQ 节点数量、PV 节点数量、Slack 节点数量、节点电压初值、节点相角初值信息,同时由于用户输入不能确保按照 PQ 节点、PV 节点、平衡节点的顺序输入,而在之后的潮流计算中又按照 PQ节点、PV 节点、平衡节点的顺序形成修正方程式(8)和(16),因此还需要对用户输入的节点(母线)信息进行排序。

4、 结果可视化

潮流计算结果包括节点电压幅值和相角信息、交流线上的有功潮流和无功潮流信息。可以采用报表输出和显示在单线图中两种方式进行展示。系统单线图绘制采用 graph 函数,可以通过输入节点对构造图,也就是交流线的I 侧连接母线和 J 侧连接母线的信息。在 graph 构造的图中可以对节点进行标注,从而可以用来显示节点电压幅值和相角信息。同时,可以通过 MATLAB 内置的 writematrix 函数将节点电压幅值和相角信息写入 txt 文本文件。

5、连续潮流计算分析

连续潮流计算分析包括观察调整发电机有功出力、调整负荷有功或无功消耗等措施对潮流的影响。由于单次潮流计算由函数 powerFlowPQCalcu 或 powerFlowNewtonCalcu 控制,因此只需要借助 for 循环,每次循环开始时按设置的步长更新系统参数,即可得到连续潮流结果。连续潮流结果的绘制借助 matlab 的绘图工具包完成。

6、UI 交互设计

MATLAB AppDesigner 工具可以实现由源码到 App 的设计,从而使得程序具有可交互性。AppDesigner 是一种面向对象的开发方式,其中 UI 交互界面的设计可以通过AppDesigner 软件左侧的组件以拖拽的方式形成软件主界面。当拖拽组件到主界面时,MATLAB 自动为该组件类创建了一个对象,一般会包含位置、字体和颜色、交互性等属性,可以通过编写回调函数(BackCall Function)实现交互功能。

四、 算例及测试结果

本程序中采用 WSCC9 节点系统作为测试算例,从计算精度、计算速度方面与PSASP 软件计算结果对比,并 进行 WSCC9 节点系统潮流分析。

五、源程序及测试数据下载

源程序及测试数据下载地址:基于 MATLAB 和 App Designer 的 UI 交互框架开发的一款电力系统潮流计算工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/808637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue3语法单文件——自用】

1. Vue3基础语法 <script setup> import { ref,computed } from vue// 定义响应式的变量 const count ref(0) const author ref({name: John Doe,books: [Vue 2 - Advanced Guide,Vue 3 - Basic Guide,Vue 4 - The Mystery] }) //定义props const props defineProps(…

[RK3399 Linux] 移植Linux 5.2.8内核详解

背景是在RK3399上面移植Rockchip官方提供的u-boot 2017.09 一、linux内核 1.1 源码下载 内核源码下载地址为:《https://www.kernel.org/》: 也可以到内核镜像网址下载https://mirrors.edge.kernel.org/pub/linux/kernel/,这里下载速度更快。 如果下载速度太慢,无法下载,…

蓝牙app设计(方案二) E4A (时钟 优缺点)

例程改的! 主界面 虽然上面有搜索功能,但是本人建议先自行配对在使用,这样更好用,把要使用的设备收藏一下更好找哦(这样就是橙色的了,只需要点对应蓝牙左边) 代码修改部分 原版是不停向下滚动显示,这样个人觉得不太好看,所以加了个时钟,到对应时钟周期清空(达到刷…

BGP小实验

光只是知道理论还不行&#xff0c;还是要多动手练练&#xff0c;就练一个bgp实验吧&#xff0c;梳理一下做题思路 实验要求&#xff1a; 大体要求就是&#xff1a;R1的环回可以ping通R2-R5的环回&#xff0c;R5同理 思路&#xff1a; 基础配置&#xff1a; 第一步先把地址环…

二叉树练习day.7

530.二叉搜索树的最小绝对差 链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 示例 1&…

【记录】Prompt模板|作为甲方怎么清晰专业地描述自己的需求(又名“乙方,给你的甲方扔个GPT解放自己吧”)

这篇Prompt摘抄并修改自朋友送给我的书的第49页5.2.3让ChatGPT构建提示&#xff0c;质量挺不错&#xff0c;支持一下她的博客&#xff1a;【好书推荐2】AI提示工程实战&#xff1a;从零开始利用提示工程学习应用大语言模型。 书长这样&#xff1a; 不啰嗦了&#xff0c;正文如…

多张图如何制作一图一码?图片批量转二维码的制作方法

二维码现在经常被用来作为图片的载体&#xff0c;将图片生成二维码之后通过扫描二维码的方式来查看图片信息&#xff0c;那么如果遇到需要将几十张图片分别单独制作二维码的需求时&#xff0c;有什么方法能够一次性批量建码呢&#xff0c;相信有很多的小伙伴对这个问题的解决方…

arm64位系统中编译ffmpeg

大致过程仍然和x86平台一致&#xff1a; ./configure xxxxmakemake install 所需要变化的是需要在 ./configure xxxx 后面多加几个编译选项 cd ffmpeg ./configure (x64下的依赖配置&#xff1a;......)--prefixbin --archaarch64 --target-oslinux --enable-cross-compile …

高并发高性能接口中,异步打印并采集业务日志的实现方案

一、背景 高并发接口中&#xff0c;为了提高接口的高性能&#xff0c;在需要保存审计及操作记录的时候&#xff0c;往往有以下常见方案&#xff1a; 保存到redis数据库异步保存到mysql/mongodb/es等数据库logger打印业务日志&#xff0c;采集与展示则交由elk模块 对于第一种…

OpenLayers6实战,OpenLayers实现鼠标拖拽方式绘制平行四边形

专栏目录: OpenLayers实战进阶专栏目录 前言 本章介绍如何使用OpenLayers在地图上使用实现鼠标拖拽方式绘制平行四边形。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖npm install ol@6.15.1使用Yarn安装依赖yarn add olvue中如何使用: vue项目…

初学SSRF总结

什么是SSRF SSRF是由攻击者构造通过服务端发起请求的安全漏洞。通常情况下&#xff0c;SSRF的攻击对象是外部无法访问的内网&#xff08;因为是由服务端发起的请求所以攻击能够访问到内部系统&#xff09; 由于服务端提供了从其它服务器获取数据的功能&#xff0c;但是有没有…

SPLD论文笔记

SLPD论文笔记 题目&#xff1a;SLPD: Slide-Level Prototypical Distillation for WSIs 摘要 提高特征表示能力是许多全玻片病理图像 &#xff08;WSI&#xff09; 任务的基础。最近的工作在病理特异性自我监督学习&#xff08;SSL&#xff09;方面取得了巨大成功。然而&…

C++初阶:反向迭代器

reverse_iterator的封装实现 Reverse_Iterator.h namespace xx {// 所有容器的反向迭代器// 迭代器适配器template<class Iterator, class Ref, class Ptr>struct Reverse_iterator{Iterator _it;typedef Reverse_iterator<Iterator, Ref, Ptr> Self;Reverse_iter…

Vue中如何使用Tailwind CSS样式?多次引用不成功?具体步骤怎么做?

一、安装Tailwind CSS和依赖 在你的Vue项目中安装Tailwind CSS及其依赖。你可以使用npm或yarn来安装。 npm install tailwindcsslatest postcsslatest autoprefixerlatest # 或者yarn add tailwindcsslatest postcsslatest autoprefixerlatest 二、初始化Tailwind CSS np…

Linux系统中MySQL数据库大小写敏感

问题描述 最近把网站向一台新的CentOS服务器中做迁移&#xff0c;把MySQL数据库和前后端站点全都部署完成后&#xff0c;网站启动之后一直在报表名不存在的错误。 开始略微疑惑&#xff0c;以为是做数据库备份的时候漏了表&#xff0c;检查后发现并不是这么回事。 略一思索&a…

ETL工具-nifi干货系列 第九讲 处理器EvaluateJsonPath,根据JsonPath提取字段

1、其实这一节课本来按照计划一起学习RouteOnAttribute处理器&#xff08;相当于java中的ifelse&#xff0c;switch case 控制语句&#xff09;&#xff0c;但是在学习的过程中遇到了一些问题。RouteOnAttribute 需要依赖处理器EvaluateJsonPath&#xff0c;所以本节课我们一起…

一天300收入打底,​一个适合任何人的创业项目!

共享旅游卡项目&#xff0c;一天300收入打底&#xff0c;一个适合任何人的创业项目&#xff01; 只要你不懒&#xff0c;生活总过得不会太差。只要你不贪&#xff0c;就算不能大富大贵&#xff0c;至少不会负债累累。 人性最难戒掉的两个字&#xff1a;一个是懒&#xff0c;另…

编译原理 学习笔记

1、代码&#xff1a; (1 2) * 3 2、词法解析&#xff1a; 3、抽象语法树&#xff1a; 4、语法树递归下降求值&#xff1a; 先Current_Node是根节点乘号&#xff0c;乘号&#xff0c;是中缀运算符&#xff0c;找左子节点&#xff0c;是加号&#xff0c;加号是中缀表达式&…

220 基于matlab的考虑直齿轮热弹耦合的动力学分析

基于matlab的考虑直齿轮热弹耦合的动力学分析&#xff0c;输入主动轮、从动轮各类参数&#xff0c;考虑润滑油温度、润滑油粘度系数等参数&#xff0c;输出接触压力、接触点速度、摩擦系数、对流传热系数等结果。程序已调通&#xff0c;可直接运行。 220直齿轮热弹耦合 接触压力…

MATLAB有限元结构动力学分析与工程应用-徐斌|【PDF电子书+配套Matlab源码】

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…