Matlab中算法结合Simulink求解直流微电网中功率

news/2023/6/7 1:04:33

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

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者,博主专门做了一个专栏目录,整个专栏只放了一篇文章,足见我对其重视程度:博主专栏目录。做到极度细致,方便大家进行学习!亲民!!!还有我开了一个专栏给女朋友的,很浪漫的喔,代码学累的时候去瞧一瞧,看一看:女朋友的浪漫邂逅。有问题可以私密博主,博主看到会在第一时间回复。
📝目前更新:🌟🌟🌟电力系统相关知识,期刊论文,算法,机器学习和人工智能学习。
🚀支持:🎁🎁🎁如果觉得博主的文章还不错或者您用得到的话,可以关注一下博主,如果三连收藏支持就更好啦!这就是给予我最大的支持!                   

👨‍🎓博主课外兴趣:中西方哲学,送予读者:

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。在我这个专栏记录我有空时的一些哲学思考和科研笔记:科研和哲思。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“真理”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

📋📋📋本文目录如下:⛳️⛳️⛳️

目录

1 Simulink求解直流微电网

 2 Matlab代码算法求解直流微电网

1 Simulink求解直流微电网

包括下面三个部分:

 

 2 Matlab代码算法求解直流微电网

部分代码: 

clear all
clc
format shortG
%% Verificaci algoritmo
% Paretros base
vref = 48;
Pbase = 500;rlineas = 0.05; 
rbase = vref^2/Pbase;
rpu = rlineas/rbase;step = 1;
droop = 2;
potencia = 3;
%% Datos de Lineas y Nodos
%    Lineas   i j rA = [ 4 1 rpu1 2 rpu2 3 rpu3 4 rpu];
%   nodo tipo     Potgen/gdroop  PotCarga   
B = [1   droop      rbase/0.2           02   potencia    0            466.25/Pbase3   droop      rbase/0.5           04   potencia    0             697.5/Pbase  ];NumN = max(max(A(:,1:2))); %Nero de Nodos
NumL = length(A(:,1)); %Nero de Lineas%% Separaci de variablesNstep = B(find(B(:,2)==step),1); %Nodos step
Vstep = B(find(B(:,2)==step),2); %Variable step
Ndroop = B(find(B(:,2)==droop),1);%Nodos droop
Vdroop = B(find(B(:,2)==droop),2); %Variable droop
NP = B(find(B(:,2)==potencia),1);%Nodos de Pot const
Vpotencia = B(find(B(:,2)==potencia),2); %Variable Pot const%Matriz clasificaci de variablesVar = [[Nstep; Ndroop; NP] [Vstep;Vdroop;Vpotencia]];
NumVar = length(Var);%% Matriz Ybus y declaraci J y H 
%Cculo de Ybus
Y = zeros(NumN,NumN);
for k = 1:NumLn1 = A(k,1);n2 = A(k,2);ykm = 1/A(k,3);Y(n1,n1) = Y(n1,n1) + ykm;Y(n1,n2) = Y(n1,n2) - ykm;Y(n2,n1) = Y(n2,n1) - ykm;Y(n2,n2) = Y(n2,n2) + ykm;
endv = ones(NumVar,1); %Condiciones iniciales de tensi
H=zeros(NumVar,1); %Inicializaci desajustes
J = zeros(NumVar,NumVar);%Declaraci matriz jacobiana
deltaV=zeros(NumVar,1);%Inicializaci de variaciones%% Modo Newton Raphson
tic%contador de tiempo
%inicio de iteraciones
for j=1:10%Hacer un barrido por todas las variables    
for k=1:NumVar%Si es step, aplicar ecuaciones step if Var(k,2)==steppstep = 0;pstepl = v(Var(k,1))*(Y(Var(k,1),:)*v);H(Var(k,1)) = pstep-pstepl;for i=1:NumVarif Var(k,1)==iJ(Var(k,1),i) = -v(Var(k,1))*Y(Var(k,1),Var(k,1)) - Y(Var(k,1),:)*v;elseJ(Var(k,1),i) = -v(Var(k,1))*Y(Var(k,1),i);endendelse%Si es droop, aplicar ecuaciones droopif Var(k,2)==droop%inyecciones de potencia al nodo drooppgdroop = B(Var(k,1),4);%expresi incluyendo ecuas drooppdroop = B(Var(k,1),3)*(1*v(Var(k,1))-v(Var(k,1))^2);%potencias por las lineaspdroopl = v(Var(k,1))*(Y(Var(k,1),:)*v);%ecuaci de desajusteH(Var(k,1)) = pdroop-pgdroop-pdroopl;%Cculo de las derivadas parciales para droop k espec韋icofor i=1:NumVar%si k=iif Var(k,1)==iJdroop = B(Var(k,1),3)*(1 - 2*v(Var(k,1)));Jdroopl = v(Var(k,1))*Y(Var(k,1),Var(k,1)) - Y(Var(k,1),:)*v;J(Var(k,1),i) = Jdroop - Jdroopl;else%k != iJ(Var(k,1),i) = -v(Var(k,1))*Y(Var(k,1),i);endendelse%Si es potencia, aplicar ecuaciones potencia   if Var(k,2)==potenciappot = B(Var(k,1),3)-B(Var(k,1),4); %PG-Pcargappotl = v(Var(k,1))*(Y(Var(k,1),:)*v);%PlineasH(Var(k,1)) = ppot-ppotl;%ecuaci髇 h(k) de potenciafor i=1:NumVar%si k=iif Var(k,1)==iJ(Var(k,1),i) = -v(Var(k,1))*Y(Var(k,1),Var(k,1)) - Y(Var(k,1),:)*v;else%k != iJ(Var(k,1),i) = -v(Var(k,1))*Y(Var(k,1),i);endendendendendend
deltaV=inv(J)*H;%vector de variacionv = v - deltaV;%Actalizaci髇 de variablesI = Y*v;%calculo de corrientes nodalesP = diag(v)*I;%potencias nodales%iter(j) = j;errAbs = abs(max(H));
end
%fin de iteraciones
t=toc%fin contador de tiempo%% Muestra de Resultados
disp('         nodo      v(pu)         P(pu)        v(V)        P(W)')
solucion = [B(:,1)    v        P     vref*v  Pbase*P];
disp(solucion)disp('Maximo error abs')
disp(errAbs)

clear all
clc
format shortG
%% Verificaci algoritmo
% Paretros base
vref = 48;
Pbase = 500;

rlineas = 0.05; 
rbase = vref^2/Pbase;
rpu = rlineas/rbase;

step = 1;
droop = 2;
potencia = 3;
%% Datos de Lineas y Nodos
%    Lineas   i j r
        A = [ 4 1 rpu
              1 2 rpu
              2 3 rpu
              3 4 rpu];
%   nodo tipo     Potgen/gdroop  PotCarga   
B = [1   droop      rbase/0.2           0
     2   potencia    0            466.25/Pbase
     3   droop      rbase/0.5           0
     4   potencia    0             697.5/Pbase  ];

NumN = max(max(A(:,1:2))); %Nero de Nodos
NumL = length(A(:,1)); %Nero de Lineas

%% Separaci de variables

Nstep = B(find(B(:,2)==step),1); %Nodos step
Vstep = B(find(B(:,2)==step),2); %Variable step
Ndroop = B(find(B(:,2)==droop),1);%Nodos droop
Vdroop = B(find(B(:,2)==droop),2); %Variable droop
NP = B(find(B(:,2)==potencia),1);%Nodos de Pot const
Vpotencia = B(find(B(:,2)==potencia),2); %Variable Pot const

%Matriz clasificaci de variables

Var = [[Nstep; Ndroop; NP] [Vstep;Vdroop;Vpotencia]];
NumVar = length(Var);

%% Matriz Ybus y declaraci J y H 
%Cculo de Ybus
Y = zeros(NumN,NumN);
for k = 1:NumL
    n1 = A(k,1);
    n2 = A(k,2);
    ykm = 1/A(k,3);
    Y(n1,n1) = Y(n1,n1) + ykm;
    Y(n1,n2) = Y(n1,n2) - ykm;
    Y(n2,n1) = Y(n2,n1) - ykm;
    Y(n2,n2) = Y(n2,n2) + ykm;
end

v = ones(NumVar,1); %Condiciones iniciales de tensi
H=zeros(NumVar,1); %Inicializaci desajustes
J = zeros(NumVar,NumVar);%Declaraci matriz jacobiana
deltaV=zeros(NumVar,1);%Inicializaci de variaciones

%% Modo Newton Raphson
tic%contador de tiempo
%inicio de iteraciones
for j=1:10
    
%Hacer un barrido por todas las variables    
for k=1:NumVar
 %Si es step, aplicar ecuaciones step 
  if Var(k,2)==step
      pstep = 0;
      pstepl = v(Var(k,1))*(Y(Var(k,1),:)*v);
      H(Var(k,1)) = pstep-pstepl;
      for i=1:NumVar
       if Var(k,1)==i
       J(Var(k,1),i) = -v(Var(k,1))*Y(Var(k,1),Var(k,1)) - Y(Var(k,1),:)*v;
       else
       J(Var(k,1),i) = -v(Var(k,1))*Y(Var(k,1),i);
       end
      end
  else
 %Si es droop, aplicar ecuaciones droop
  if Var(k,2)==droop
      %inyecciones de potencia al nodo droop
      pgdroop = B(Var(k,1),4);
      %expresi incluyendo ecuas droop
      pdroop = B(Var(k,1),3)*(1*v(Var(k,1))-v(Var(k,1))^2);
      %potencias por las lineas
      pdroopl = v(Var(k,1))*(Y(Var(k,1),:)*v);
      %ecuaci de desajuste
      H(Var(k,1)) = pdroop-pgdroop-pdroopl;
      %Cculo de las derivadas parciales para droop k espec韋ico
      for i=1:NumVar
        %si k=i
        if Var(k,1)==i
          Jdroop = B(Var(k,1),3)*(1 - 2*v(Var(k,1)));
          Jdroopl = v(Var(k,1))*Y(Var(k,1),Var(k,1)) - Y(Var(k,1),:)*v;
          J(Var(k,1),i) = Jdroop - Jdroopl;
        else
          %k != i
          J(Var(k,1),i) = -v(Var(k,1))*Y(Var(k,1),i);
        end
      end
  else
 %Si es potencia, aplicar ecuaciones potencia   
  if Var(k,2)==potencia
      ppot = B(Var(k,1),3)-B(Var(k,1),4); %PG-Pcarga
      ppotl = v(Var(k,1))*(Y(Var(k,1),:)*v);%Plineas
      H(Var(k,1)) = ppot-ppotl;%ecuaci髇 h(k) de potencia
      for i=1:NumVar
        %si k=i
        if Var(k,1)==i
      J(Var(k,1),i) = -v(Var(k,1))*Y(Var(k,1),Var(k,1)) - Y(Var(k,1),:)*v;
        else
        %k != i
      J(Var(k,1),i) = -v(Var(k,1))*Y(Var(k,1),i);
        end
     end
  end
  end
  end
    
end
deltaV=inv(J)*H;%vector de variacion
 v = v - deltaV;%Actalizaci髇 de variables
 I = Y*v;%calculo de corrientes nodales
 P = diag(v)*I;%potencias nodales
 %iter(j) = j;
 errAbs = abs(max(H));
end
%fin de iteraciones
t=toc%fin contador de tiempo

%% Muestra de Resultados
disp('         nodo      v(pu)         P(pu)        v(V)        P(W)')
solucion = [B(:,1)    v        P     vref*v  Pbase*P];
disp(solucion)

disp('Maximo error abs')
disp(errAbs)

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

Spring到底是什么

一、spring到底是什么 Spring 是分层的Java SE/EE应用 轻量级开源框架,ioc (控制翻转)和AOP (面向切面编程)为内核,能够整合开源世界众多著名的第三方框架和类库,逐渐成为使用醉倒的Java EE企业应用开源框架 通俗讲Spring就是一个容器,用来…

Spring中的IOC和AOP是什么意思?

(1) Spring是什么? IOC(控制反转)和AOP(面向方面编程)作为Spring框架的两个核心,很好地实现了解耦合。所以,简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。…

SpringCloud是什么?

一.springcloud是什么? 1.SpringCloud是什么? 1.Spring Cloud就是微服务系统架构的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶 2.在平时我们构建微服务的过程中需要做如服务发现注册、配置中心、负载均衡、断路器、数据监控等操作,而Sp…

Spring是什么意思?

Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序…

找不到合适好用的redis客户端工具?试试官方的客户端工具RedisInsight

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党 背景 之前使用的redis客户端工具是AnotherRedisDesktopManager AnotherRedisDesktopManager github地址: https://github.com/qishibo/AnotherRedisDesktopManag…

计算机f5键有什么作用,电脑键盘按F5的作用是什么

有时候操作win7旗舰版系统的时候,习惯按键盘F5键刷新一下桌,部分用户感觉到很疑惑,那么你知道电脑键盘按F5的作用是什么吗?下面是学习啦小编整理的一些关于电脑键盘按F5的相关资料,供你参考。电脑键盘按F5的作用是什么?作用1&am…

【Go基础】面向对象和反射机制

文章目录一、面向对象1. 面向对象的概念2. 构造函数3. 继承与重写4. 泛型二、反射1. 反射介绍2. 反射的基础数据类型3. 反射API3.1 reflect.Type①如何得到Type②指针Type转为非指针Type③获取struct成员变量的信息④获取struct成员方法的信息⑤获取函数的信息⑥判断类型是否实…

登录授权方案:JSON Web Tokens (JWT)

登录授权方案:JSON Web Tokens (JWT) JWT官方文档:https://jwt.io/introduction 1.简介: JWT 即 json web tokens,通过JSON形式作为Web应用中的令牌,用于在各方之间安全地将信息作为JSON对象传输,在数据传…