基于simulink的MPPT控制器性能仿真,MPPT使用S函数实现
目录
1.算法仿真效果
matlab2022a仿真结果如下:
2.MATLAB核心程序
function [sys,x0,str,ts] = MPPTsfun(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
%case 1,
%sys=mdlDerivatives(t,x,u);
%case 2,
%sys=mdlUpdate(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
%case 4,
%sys=mdlGetTimeOfNextVarHit(t,x,u);
case {1,2,4,9} %unused flag value
sys=[];
%sys=mdlTerminate(t,x,u);
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 2;
sizes.NumInputs = 7;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
.........................................................................
function sys=mdlOutputs(t,x,u)
%I=u(4)*(1-u(6)*(exp((u(7)-u(2))/(u(5)*u(1)))-1))+u(3);
k1=0.001; % voltage search step size
u1=0;
% u1=u(7); %init voltage
p1=u1*(u(4)*(1-u(6)*(exp((u1-u(2))/(u(5)*u(1)))-1))+u(3));
u2=u1+k1;
p2=u2*(u(4)*(1-u(6)*(exp((u2-u(2))/(u(5)*u(1)))-1))+u(3));
k2=(p2-p1)/(u2-u1);
U=(u1+u2)/2 ;
k=abs(k2);
while k>0.001 % xie liu "k<=0.1,(5.7 du)" shi, stop search
% if "k" selected too small ,it will take a lot of time to search
if k2>0
u1=u1+k1;
p1=u1*(u(4)*(1-u(6)*(exp((u1-u(2))/(u(5)*u(1)))-1))+u(3));
u2=u1+k1;
p2=u2*(u(4)*(1-u(6)*(exp((u2-u(2))/(u(5)*u(1)))-1))+u(3));
k2=(p2-p1)/(u2-u1);
U=(u1+u2)/2;
k=abs(k2);
else
u1=u1-k1;
p1=u1*(u(4)*(1-u(6)*(exp((u1-u(2))/(u(5)*u(1)))-1))+u(3));
u2=u1-k1;
p2=u2*(u(4)*(1-u(6)*(exp((u2-u(2))/(u(5)*u(1)))-1))+u(3));
k2=(p2-p1)/(u2-u1);
U=(u1+u2)/2;
k=abs(k2);
end
end
if U>=320 % Voc=44.2V
sys=[0;320]; % Imax=0;Umax=44.2;
else
sys=[U;u(4)*(1-u(6)*(exp((u2-u(2))/(u(5)*u(1)))-1))+u(3)];
end
A372
3.算法涉及理论知识概要
MPPT控制器的全称是“最大功率点跟踪”(Maximum Power Point Tracking)太阳能控制器,是传统太阳能充放电控制器的升级换代产品。MPPT控制器能够实时侦测太阳能板的发电电压,并追踪最高电压电流值(VI),使系统以最大功率输出对蓄电池充电。应用于太阳能光伏系统中,协调太阳能电池板、蓄电池、负载的工作,是光伏系统的大脑。
最大功率点跟踪系统是一种通过调节电气模块的工作状态,使光伏板能够输出更多电能的电气系统能够将太阳能电池板发出的直流电有效地贮存在蓄电池中,可有效地解决常规电网不能覆盖的偏远地区及旅游地区的生活和工业用电,不产生环境污染。
目前,光伏阵列的最大功率点跟踪(MPPT)技术,国内外已有了一定的研究,发展出各种控制方法常,常用的有一下几种:恒电压跟踪法(ConstantVoltageTracking简称CVT)、干扰观察法(PerturbationAndObservationmethod简称P&O)、增量电导法(IncrementalConductancemethod简称INC)、基于梯度变步长的电导增量法等等。(这些算法只能用在无遮挡的条件下)
1)单峰值功率输出的MPPT的算法
目前,在无遮挡条件下,光伏阵列的最大功率点跟踪(MPPT)的控制方法常用的有以下几种:
l恒电压跟踪法(ConstantVoltageTracking简称CVT)
l干扰观察法(PerturbationAndObservationmethod简称P&O)
l增量电导法(IncrementalConductancemethod简称INC)
l基于梯度变步长的电导增量法,等等。
2)多峰值功率输出MPPT算法
普通的最大功率跟踪算法,如扰动观测发和电导增量法在一片云彩的遮挡下就有可能失效,不能实现真正意义的最大功率跟踪。
————————————————
S-函数是系统函数(System Function)的简称,是指采用非图形化的方式(即计算机语言,区别于Simulink的系统模块)描述的一个功能块。用户可以采用MATLAB代码,C,C++,FORTRAN等语言编写S-函数。S-函数由一种特定的语法构成,用来描述并实现连续系统、离散系统以及复合系统等动态系统;S-函数能够接受来自Simulink求解器的相关信息,并对求解器发出的命令作出适当的响应,这种交互作用非常类似于Simulink系统模块与求解器的交互作用。一个结构体系完整的S-函数包含了描述动态系统所需的全部能力,所有其他的使用情况都是这个结构体系的特例。往往S-函数模块是整个Simulink动态系统的核心。
S-函数作为与其他语言相结合的接口,可以使用这个语言所提供的强大能力。例如,Matlab语言编写的S-函数可以充分利用MATLAB所提供的丰富资源,方便地调用各种工具箱函数和图形函数;使用C语言编写的S-函数可以实现对操作系统的访问,如实现与其他进程的通信和同步等。
用户可以从如下的几个角度来理解S-函数:
(1) S-函数为Simulink的“系统”函数。
(2)能够响应Simulink为求解器命令的函数。
(3)采用非图形化的方法实现一个动态系统。
(4)可以开发新的Simulink模块。
(5)可以与已有的代码相结合进行仿真。
(6)采用文本方式输入复杂的系统方程。
(7)扩展Simulink功能。M文件S-函数可以扩展图形能力,C MEX S-函数可以提供与操作系统的接口。
(8)S-函数的语法结构是为实现一个动态系统而设计的(默认用法),其他S-函数的用法是默认用法的特例(如用于显示目的)。
4.完整MATLAB
V
相关文章
- 浏览器性能优化
- 【MySQL】性能优化之 order by (一)
- three.js之性能监视器
- 【HIBERNATE框架开发之九】HIBERNATE 性能优化笔记!(遍历、一级/二级/查询/缓存、乐观悲观锁等优化算法)
- 基于live555实现的RTSPServer对底层进行性能优化的方法
- MySQL内核月报 2014.11-MySQL· 性能优化·hash_scan 算法的实现解析
- 系统性能检测工具之sar
- MySQL性能优化(五)undo log是如何实现MVCC的?
- 各种ABAP调用的性能比较,附详细参数
- SAP CRM Fiori My Task后台实现的性能优化前后数据比较
- 解密 Oracle 数据库 SQL 执行历史:掌握多种实现方式,轻松实现 SQL 监控与性能优化
- 车辆纵向动力学、加速性能和燃料消耗研究(Matlab代码实现)
- 【信号处理】天线分集与空时编码技术——瑞利衰落信道下MRC性能(matlab代码实现)
- 基于Fabric的性能测试与调优实践
- 【华为云技术分享】A-Tune:基于AI的自优化能力,让应用发挥极致性能
- Tomcat性能调优
- 性能测试如何入门?阿里月薪30k的测试开发是这样说的....
- 一文7000字从0到1教你基于Jmeter的性能压测平台实现
- Python几种并发实现方案的性能比较
- 用于到达方向估计的增强PUMA及其性能分析(Matlab代码实现)
- python工具方法35 实现SWA,再一次提升模型的性能
- Cache存储系统详解(全相联映射、直接映射、组相联映射、替换策略和性能计算)
- Linux系统通过Shell脚本实现一个全方面的系统性能分析系统