电力系统潮流计算中的导纳矩阵计算,matlab源程序_潮流计算节点导纳矩阵-程序员宅基地

技术标签: matlab  笔记  

电力系统导纳矩阵计算,MATLAB

这学期在上大四专业选修课时,一个课后作业是写一个电力系统的导纳矩阵计算程序,我找了找资料肝了半天的程序如下图所示,希望能对大家有用。

程序说明

1.具有非标准变比的变压器处理
如果变压器阻抗归算到非标准变比的K侧,则在参数输入脚本文件data中变压器参数第五列记为0;如果归算到非标准变比的1侧,则在参数输入脚本文件data中变压器参数第五列记为1。
变压器阻抗参数归算

2.线路为双回线时,需要将两个节点之间线路阻抗减半,导纳加倍;同时,如果线路是双回线则在data线路参数中第五列记为1,否则记为0。

程序如下

程序data脚本用于输入参数,buildYbus是计算导纳矩阵函数
data.m

%-----Input Data-------输入参数脚本

%线路参数:第一、二列为母线节点编号 第三列为线路阻抗 第四列为线路对地导纳(Y)
%---------第五列(0——单回线,1——双回线)
lineData=[1 2 0.04+0.25i 0.5i 0;
    1 3 0.1+0.35i 0 0;
    2 3 0.08+0.3i 0.5i 0;];

%变压器参数:第一、二列为母线节点编号  第三列变压器阻抗 第四列变压器非标准变比(1:K) 
%---------第五列(0——变压器阻抗归算到K侧即第二列母线节点编号,1——归算到1侧即第一列节点编号) 
transData=[4 2 0.015i 1.05 1;
    5 3 0.03i 1.05 1;];

主程序buildYbus.m

function Ybus=buildYus()
    %调用data输入参数
    data;
    %变压器π型等效导纳参数
    trans=zeros(size(transData ,1),5);
    trans(:,1:2)=transData(:,1:2);
    for k=1:size(transData,1)
        if transData(k,5)   %变压器阻抗归算到1侧计算导纳矩阵
            trans(k,3)=1/(transData(k,3)*transData(k,4));
            trans(k,4)=(transData(k,4)-1)/(transData(k,3)*transData(k,4));
            trans(k,5)=(1-transData(k,4))/(transData(k,4)^2*transData(k,3));
        else   %变压器阻抗归算到K侧计算导纳矩阵
            trans(k,3)=transData(k,4)/transData(k,3);
            trans(k,4)=(transData(k,4).^2-transData(k,4))/transData(k,3);
            trans(k,5)=(1-transData(k,4))/transData(k,3);
        end
    end
    %节点数
    nodeNum=max([lineData(:,1)' lineData(:,2)' transData(:,1)' transData(:,2)']);
    %计算节点导纳矩阵
    Ybus=zeros(nodeNum);
    %根据线路参数修改节点导纳矩阵
    n1=lineData(:,1);
    n2=lineData(:,2);
    for k=1:size(lineData,1)
        %判断线路参数若为双回线,则阻抗减半,导纳加倍
        if lineData(k,5)
            lineData(k,3)=lineData(k,3)/2;
            lineData(k,4)=2*lineData(k,4);
        end
        Ybus(n1(k),n2(k))=Ybus(n1(k),n2(k))-1/lineData(k,3);
        Ybus(n2(k),n1(k))=Ybus(n2(k),n1(k))-1/lineData(k,3);
        Ybus(n1(k),n1(k))=Ybus(n1(k),n1(k))+1/lineData(k,3)+lineData(k,4)/2;%对地导纳Y/2
        Ybus(n2(k),n2(k))=Ybus(n2(k),n2(k))+1/lineData(k,3)+lineData(k,4)/2;
    end
    %根据变压器参数修改节点导纳矩阵
    n1=trans(:,1);
    n2=trans(:,2);
    for k=1:size(trans,1)
        Ybus(n1(k),n2(k))=Ybus(n1(k),n2(k))-trans(k,3);
        Ybus(n2(k),n1(k))=Ybus(n2(k),n1(k))-trans(k,3);
        Ybus(n1(k),n1(k))= Ybus(n1(k),n1(k))+trans(k,4)+trans(k,3);
        Ybus(n2(k),n2(k))= Ybus(n2(k),n2(k))+trans(k,5)+trans(k,3);
    end
end

程序示例

  • 一个五节点的电力系统如下图所示
    五节点电力系统示例
  • 输入为:
%-----Input Data-------输入参数脚本

%线路参数:第一、二列为母线节点编号 第三列为线路阻抗 第四列为线路对地导纳(Y)
%---------第五列(0——单回线,1——双回线)
lineData=[1 2 0.04+0.25i 0.5i 0;
    1 3 0.1+0.35i 0 0;
    2 3 0.08+0.3i 0.5i 0];

%变压器参数:第一、二列为母线节点编号(第一列1侧,第二列K侧)  第三列变压器阻抗 第四列变压器非标准变比(1:K) 
%---------第五列(0——变压器阻抗归算到K侧即第二列母线节点编号,1——归算到1侧即第一列节点编号) 
transData=[4 2 0.015i 1.05 1;
    5 3 0.03i 1.05 1];
  • 跑出的结果如下所示
>> buildYus

ans =

   1.3787 - 6.2917i  -0.6240 + 3.9002i  -0.7547 + 2.6415i   0.0000 + 0.0000i   0.0000 + 0.0000i
  -0.6240 + 3.9002i   1.4539 -66.9808i  -0.8299 + 3.1120i   0.0000 +63.4921i   0.0000 + 0.0000i
  -0.7547 + 2.6415i  -0.8299 + 3.1120i   1.5846 -35.7379i   0.0000 + 0.0000i   0.0000 +31.7460i
   0.0000 + 0.0000i   0.0000 +63.4921i   0.0000 + 0.0000i   0.0000 -66.6667i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 +31.7460i   0.0000 + 0.0000i   0.0000 -33.3333i
如有错误和改进,欢迎指正交流
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43911044/article/details/108920310

智能推荐

connect to server ip fail java.net.SocketTimeoutException: connect timed out_failed to connect to server connection timed out-程序员宅基地

文章浏览阅读725次。这个问题是在使用junit测试时出现的,就是需要关闭centos7的防火墙systemctl stop firewalld.service@SpringBootTest@RunWith(SpringRunner.class)public class TestFastDFS { //测试上传 @Test public void testUpdate() { ..._failed to connect to server connection timed out

java怎么创建局部变量_Java使用getter in for循环或创建一个局部变量?-程序员宅基地

文章浏览阅读250次。作为Rogério answered,在循环之外获取对象引用(Object object = example.getValue();)可能比在循环中调用getter更快(或至少不会更慢),因为在“最糟糕”的情况下,example.getValue()可能会在背景中做一些非常计算上昂贵的东西,尽管getter methods应该是“微不足道的”.通过分配引用一次并重新使用它,您只需执行一次昂贵的计算..._创建一个带局部变量的function java

java饮料_品尝饮料java代码-程序员宅基地

文章浏览阅读1.9k次。题目:品尝饮料时间:2018-1-5一、要求1、使用命令行参数(饮料类型),输出该饮料类型的味道,如:当命令行参数为1时,结果见如下:咖啡:苦2、如果没有该种饮料,结果见如下:对不起!没有您输入的饮料类型。二、推荐实现步骤1、建立一个Java抽象类Drink,应当:a、声明一个抽象方法taste(),该方法负责输出饮料的味道;b、声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶),如:1:咖..._三、品尝饮料 1.建立一个抽象类drink,应当: (1)声明一个抽象方法taste(),该方法负

android 弹出输入框 输入法,(转)android开发-输入法弹出遮挡编辑框问题-程序员宅基地

文章浏览阅读618次。当我们做一个发送消息布局的时候,编辑框往往是在下面,而输入法弹出的时候就会吧编辑框完全遮挡,导致看不见输入框,这样用户体验就会很差!下面9种设置,可能会解决你在输入法上碰到的一些问题android:windowSoftInputMode=“adjustPan” 在Manifest.xml 属性一共有9个取值,分别是:stateUnspecified,stateUnchanged,stateHi..._stateunchanged

计算机描述不可用win10,升级win10出现的各种问题及解决办法-程序员宅基地

文章浏览阅读2.5k次。将电脑从以前版本的 Windows-如 Windows 7 或 Windows 8.1-升级到 Windows 10。本常见问题解答旨在解决有关升级到 Windows 10 的问题。本文将针对Win10的一些常见问题给出解决方案,如果你在使用Win10的过程中,遇到了无限重启、不能使用打印机和无法与Windows XP直接共享等问题,那这篇文章可能对你有帮助。升级win10出现的各种问题汇..._win10有问题

linux两个终端间通信,不同vlan间的通信简单配置(三种方式)-程序员宅基地

文章浏览阅读1k次。不同vlan间的通信简单配置1.单臂路由(图)环境:一台路由器,一台二层交换机,两台pc机二层交换机的配置一般模式:Switch>输入enable进入特权模式:Switch>enable输入configure terminal进入全局配置模式:Switch#configure terminalEnter configuration commands, one per line. En..._配置vlan使两台linux服务器互通

随便推点

android 编译完后镜像在哪个文件夹,android 镜像文件打包和解压-程序员宅基地

文章浏览阅读672次。android 源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulator的 文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator负责加载这3个映像文件后,会 把system.img和userdata.img分别加载到 ramdisk文件系统中的sys..._android rootdir 编译到哪个镜像里

在VS2013下运行VS2010的项目 错误:Building an MFC project for a non-Unicode character set is deprecated_vs的unicode错误-程序员宅基地

文章浏览阅读267次。当使用VS2013运行VS2010项目的时候,会提示升级VC++,点击确定但是运行调试的时候,还是会出错,找不到mfc100d.dll,msvcr100d.dll上网搜索,找办法安装XXX库之后,依旧不行**错误:**Building an MFC project for a non-Unicode character set is deprecated解决办法:微软解释用于多字节..._vs的unicode错误

automake生成静态库文件_visual studio lib和dll的编译生成与调用-程序员宅基地

文章浏览阅读142次。Dll在Windows下,DLL(Dynamic Link Library,动态链接库)是一个被编译过的二进制程序,但与.exe文件不同,.dll文件不能独立运行,必须由其他程序调用。为什么有这东西呢?当然有其存在的好处啦:不限语言。我们可以用自己熟悉的语言写DLL,然后由其他语言写的可执行程序来调用这些DLL。例如,可以用Python写程序的主界面,然后调用C写的实现一个具体功能的DLL模块。增..._automake,vs

python+selenium自动化软件测试(unittes)-程序员宅基地

文章浏览阅读5.1k次。1.1 unittest简介前言(python基础比较弱的,建议大家多花点时间把基础语法学好,这里有套视频,可以照着练习下:http://pan.baidu.com/s/1i44jZdb密码:92fs)熟悉java的应该都清楚常见的单元测试框架Junit和TestNG,这个招聘的需求上也是经常见到的。python里面也有单元测试框架-unittest,相当于是一个python版的junit。..._python+selenium+unittes分层

PSIM软件学习---01初识别PSIM软件-程序员宅基地

文章浏览阅读1w次,点赞14次,收藏70次。  PSIM是趋向于电力电子领域以及电机控制领域的仿真应用包软件。PSIM全称Power Simulation。PSIM是由SIMCAD 和SIMVIEM两个软件来组成的。  PSIM软件最大的特点是支持C语言模块,这样在仿真电路时,特别是数字电源或者电机驱动仿真时,可以直接编写C代码来驱动功率管,调试电路非常方便。  但是PSIM仿真软件在网上的教程比较少,学习起来比较困难,当时自己学习的时候也废了好大的功夫,于是决定写一个系列的文章,来比较全面的介绍一下PSIM软件的使用。由于自己也是刚学会不久,如_psim

odoo tree视图属性_"odoo editable=\"top"-程序员宅基地

文章浏览阅读238次。一般属性列表颜色常用判断格式:编辑属性 editableeditable=“bottom”是在行的底部创建2.editable=“top”是在行的顶部创建_"odoo editable=\"top"

推荐文章

热门文章

相关标签