首页 > 其他分享 >m基于simulink的负荷频率小波神经PID控制器仿真,并对比PID控制器

m基于simulink的负荷频率小波神经PID控制器仿真,并对比PID控制器

时间:2023-04-28 23:56:01浏览次数:39  
标签:控制器 sizes PID simulink b1 频率 c1 电力系统

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

       其对比仿真结果可知,原系统需要在150之后才开始收敛,PID是在50开始收敛,而采用WNN之后,系统用在经过短暂的抖动之后,迅速收敛。

 

2.算法涉及理论知识概要

        随着电力工业的市场化改革、厂网分开,跨区域 电网的互联电力系统自动控制显得更加重要。电网 的频率稳定是电力系统安全稳定运行的重要因素, 是衡量电网稳定的重要指标。频率异常或频率崩 溃,将对电力系统本身及电力用户带来极为严重的 后果。频率与有功功率相关,电力系统中有功功率 的需求和产生上的任何变化都会反映到系统频率的 变化上。在跨区域电网的互联电力系统中,频率控 制更加复杂、导致的问题更严重。

 

       频率是电力系统电能质量的三大指标之一,也是电气设备设计和制造的基本技术参数。电力系统频率超过允许的偏移值就会影响设备的安全运行,还可能造成供电设备和用电设备的损坏;频率质量的优劣直接影响电力系统的安全、稳定、经济、优质运行。电力系统频率是靠电力系统内并联运行的所有发电机机组发出的有功功率总和与系统内所有负荷消耗(包括网损)的有功功率总和之间的平衡来维持的,电力系统中有功功率的需求和产生上的任何变化都会反映到系统频率的变化上。在跨区域电网的互联电力系统中,频率控制更加复杂,导致的问题更严重。随着国民经济的不断发展和电力系统规模的不断增大,对频率质量的要求将越来越高。所谓负荷频率控制,是指通过控制系统内并联运行机组输入的总功率等于系统负荷在额定频率下所消耗的有功功率将电力系统频率控制在允许范围内的过程。

 

       常规ANN采用Sigmoid函数作激发函数,这一 类全局基函数考虑的是输入信号的时域全局特点。 它的不足就在于对于广泛输入值的敏感性,结果网 络中所有的输入值和各个神经元的激发函数都将产 生相互影响,导致大量的参数调整和太长的计算学 习时间,收敛性差。

 

       跨区域电网的互联电力系统LFC如果单纯由神 经网络等智能控制技术实现,则网络节点数将增大, 学习速度慢且不容易收敛。而区域内电网的小负荷 波动和脉动完全可以通过传统的PID控制调节平 衡。所以提出了结合WNN和传统PID的控制模型, 如图1所示。2个节点的WNN(图中虚框内)完成跨区域间的 平衡控制。a是小波函数的伸缩系数,b是平移系 数,p是输入到小波神经元的权值系数,q是小波神 经元的输出加到整个网络输出的权值系数,w是神 经元间的连接或反馈权值系数,T是小波元的时滞 常数,!是加到小波神经元的偏移参数。

 

 

 

       该LFC系统保留了传统的两级PID控制,PID 回路可以完成区域内的频率波动控制,从而减少神 经网络的节点数量。区域内的频率波动偏差信号经 PID回路控制调速器、原动机,从而控制发电机功率, 使区域内频率保持稳定。同时,区域内的频率波动 又会影响到互联的区域电网间。

 

 

3.MATLAB核心程序

 

 

%后面的函数就是文件夹中的几个子函数,这里不做进一步的注释了。
%初始化函数
function [sys,x0,str,ts] = func_initialize()
sizes                = simsizes; % 读入模板,得出默认的控制量
sizes.NumContStates  = 0; 
sizes.NumDiscStates  = 3;
sizes.NumOutputs     = 4+5*6; 
sizes.NumInputs      = 9+15*6;
sizes.DirFeedthrough = 1; 
sizes.NumSampleTimes = 1;
sys                  = simsizes(sizes); 
x0                   = zeros(3,1); 
str                  = []; 
ts                   = [0.0005 0];
 
 
%离散状态变量更新函数
function sys = func_news(u)
sys=[u(1)-u(2);u(1);u(1)+u(3)-2*u(2)];
 
 
%输出量计算函数
function sys = func_wnn_out(t,x,u,K_pid,xite);
 
c3 = reshape(u(7     : 6+3*6) ,3,6); 
c2 = reshape(u(7+5*6 : 6+8*6) ,3,6);
c1 = reshape(u(7+10*6: 6+13*6),3,6);
 
b3 = u(7+3*6 : 6+4*6); 
b2 = u(7+8*6 : 6+9*6);
b1 = u(7+13*6: 6+14*6); 
 
w3 = u(7+4*6 : 6+5*6);
w2 = u(7+9*6 : 6+10*6); 
w1 = u(7+14*6: 6+15*6);
 
xx=u([6;4;5]);
 
if t==0
    c1     = 30*ones(3,6);  
    b1     = 80*ones(6,1);
    w1     = 2*ones(6,1);  
    K_pid0 = K_pid;
else
    K_pid0=u(end-2:end); 
end
%激发函数
for j=1: 6
    h(j,1)=(1 - norm(xx-c1(:,j))^2/(b1(j)*b1(j))) * exp(-norm(xx-c1(:,j))^2/(2*b1(j)*b1(j)));
end
 
dym = u(4)-w1'*h; 
w   = w1 + xite*dym*h + 0.05*(w1-w2) + 0.05*(w2-w3);
for j=1:6
   d_bi(j,1)=xite*dym*w1(j)*h(j)*(b1(j)^(-3))*norm(xx-c1(:,j))^2;
   d_ci(:,j)=xite*dym*w1(j)*h(j)*(xx-c1(:,j))*(b1(j)^(-2));
end
bi =b1 + d_bi + 0.05 * (b1-b2) + 0.05*(b2-b3);
ci =c1 + d_ci + 0.05 * (c1-c2) + 0.05*(c2-c3);
dJac=sum(w.*h.*(-xx(1)+ci(1,:)')./bi.^2);
 
KK=K_pid0+u(1)*dJac*[0.1;0.1;0.1].*x; 
 
sys=[u(6)+KK'*x; KK; ci(:); bi(:); w(:)];

  

标签:控制器,sizes,PID,simulink,b1,频率,c1,电力系统
From: https://www.cnblogs.com/51matlab/p/17363411.html

相关文章

  • linux设备树-中断控制器驱动(二)
    一、GPIO控制器驱动xx二、引用intc中断的节点的解析xx三、引用GPIO中断的节点的解析xx 参考文章[1]基於tiny4412的Linux內核移植---实例学习中断背后的知识(1)[2]基於tiny4412的Linux內核移植---实例学习中断背后的知识(2)......
  • m十字路口多功能控制交通系统,包括基于遗传算法优化的红绿灯时长模糊控制器和基于BP神
    1.算法仿真效果matlab2022a仿真结果如下:        2.算法涉及理论知识概要单十字路口:           其中第一级控制为两个并行模块:绿灯交通强度控制模块与红灯交通强度控制模块。绿灯交通强度控制模块的输入为绿灯相位的排队长度与入口流量,......
  • m十字路口多功能控制交通系统,包括基于遗传算法优化的红绿灯时长模糊控制器和基于BP神
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要单十字路口:其中第一级控制为两个并行模块:绿灯交通强度控制模块与红灯交通强度控制模块。绿灯交通强度控制模块的输入为绿灯相位的排队长度与入口流量,输出绿灯相位的交通强度;红灯相位模块的输入为红灯相位的......
  • 重启nginx后提示nginx.pid文件丢失了
    //在执行nginx-sreload命令时遇到了错误,因为Nginx尝试在日志目录中读取pid文件,但是找不到它。//这通常是因为Nginx没有在启动时正确地生成该文件引起的。//为了解决这个问题,您可以尝试启动Nginx并手动创建pid文件。请使用以下命令启动Nginx:sudo/www/server/nginx/sbin/......
  • while循环逻辑控制器+配置元件计数器的用法
    一、在线程组下添加逻辑控制器WhileController二、在逻辑控制器WhileController下添加Sample,BeanShellSampler,三、逻辑控制器WhileController下添加配置元件,计数器四、在线程组下添加监听器,察看结果树:注意while中设置的是${__javaScript("${number}"<"4")},而请求出......
  • PVD-CH32可编程电压控制器PVD中断的使用方法
    可编程电压监视器PVD,主要被用于监控系统主电源的变化,与电源控制寄存器PWR_CTLR的PLS[2:0]所设置的门槛电压相比较,配合外部中断寄存器(EXTI)设置,可产生相关中断,以便及时通知系统进行数据保存等掉电前操作。配置方法如下:先使能PWR时钟,然后设置电压监视阈值,随后使能PVDE开......
  • pid循迹小车的实现,arduino
    帮我写一个Arduino循迹小车的程序,小车前面有并列8个红外发射接收传感器,每个红外发射接收传感器为1cm宽,地面循迹的线是大约2cm宽黑色的线,地面其他位置是白色的,要求循迹小车运行的速度快,使用pid算法控制速度实现精准的转向 首先,我们需要定义红外线传感器的引脚和变量:constint......
  • pid算法函数实现,c语言版
     #include<stdio.h>floatpid(floatsetpoint,floatprocess_variable,floatkp,floatki,floatkd,floatdt,float*integral,float*last_error){//Calculateerrorfloaterror=setpoint-process_variable;//Calculateintegral......
  • linux设备树-中断控制器驱动
    我们在linux驱动移植-中断子系统执行流程 介绍了中断的执行流程,以及在没有使用设备树的情景下,中断控制器的注册流程,其主要流程:将S3C2440中断资源抽象为一个主中断控制器、两个子中断控制器,一个用于管理外部中断源、另一个管理带有子中断的内部中断源;采用基于数组方式分配中断......
  • 采用 NXP 嵌入式ARM控制器可用于数字化工厂
    近年来,随着工业自动化水平的不断提高,越来越多的数字化工厂开始采用嵌入式控制器来实现智能化管理。而本文所介绍的嵌入式ARM控制器正是针对数字化工厂的应用场景设计而成的。首先,我们来看一下该产品的优势。作为一款高性能的嵌入式控制器,该产品具有以下几个特点:1.高性能处理器:采......