基于simulink的MPPT控制器性能仿真,MPPT使用S函数实现

简介: 基于simulink的MPPT控制器性能仿真,MPPT使用S函数实现

1.算法仿真效果
matlab2022a仿真结果如下:
228bd12545d488951ae396b17391975b_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
e3c6ae57bd4f0a6bfe60b1873d358e65_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
fbd89a3ddb6852b42ed55540e20c6a66_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
3b06ae5e8e0541802a6f0b177ca3ac7f_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

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

     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-函数的用法是默认用法的特例(如用于显示目的)。

3.MATLAB核心程序

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
相关文章
|
SQL 运维 数据库
12-TDengine数据迁移:导入与导出
12-TDengine数据迁移:导入与导出
3392 0
12-TDengine数据迁移:导入与导出
|
存储 编解码 监控
医学图像管理系统——PACS源码
医学影像归档与通信系统(picture archiving and communication systems,PACS)是应用于医院的数字医疗设备,如CT、MR(磁共振)、US(超声成像)、X线、DSA(数字减影)、CR(计算机成像)、ECT等设备所产生的数字化医学图像信息的采集、存储、管理、诊断、信息处理的综合应用系统。它集医学图像获取、大容量数据存储、图像显示和处理、数据库管理及用于传输影像的局域或广域网络等技术为一体,大大降低了医生对传统硬拷贝技术的依赖,达到更高效低价的观察存储管理回溯和传送医学影像的效果。PACS 技术是进行全数字化影像诊断及管理的重要基础。
327 0
|
前端开发 数据库 Python
Python Web 开发: 解释 Django 框架的 MVC 架构是什么?
Python Web 开发: 解释 Django 框架的 MVC 架构是什么?
501 0
|
11月前
|
人工智能 自然语言处理 API
UI-TARS:字节跳动开源专注于多平台 GUI 自动化交互的视觉语言模型
UI-TARS 是字节跳动推出的新一代原生图形用户界面(GUI)代理模型,支持跨平台自动化交互,具备强大的感知、推理、行动和记忆能力,能够通过自然语言指令完成复杂任务。
2854 16
UI-TARS:字节跳动开源专注于多平台 GUI 自动化交互的视觉语言模型
|
10月前
|
人工智能 IDE 程序员
AI程序员入场!揭秘直播吧研发效能大提升的秘密武器
对于直播吧而言,这不仅是工具升级,更是研发模式向「人与AI协同型」跃迁的战略选择。
|
数据采集 机器学习/深度学习 人工智能
云栖实录 | GenAI 时代 AI Infra 工程技术趋势与平台演进
本文根据2024云栖大会实录整理而成,演讲信息如下: 演讲人:林伟 | 阿里云智能集团研究员、阿里云人工智能平台 PAI 负责人;黄博远|阿里云智能集团资深产品专家、阿里云人工智能平台 PAI 产品负责人 活动:2024 云栖大会 - AI Infra 核心技术专场、人工智能平台 PAI 年度发布专场
|
JSON Java fastjson
HttpClient和OkHttp发送http请求
HttpClient和OkHttp发送http请求
208 0
|
存储 Linux C语言
Linux|如何安装和运行多个 glibc 库
Linux|如何安装和运行多个 glibc 库
3920 5
|
机器学习/深度学习 存储 人工智能
【机器学习】GBDT (Gradient Boosting Decision Tree) 深入解析
GBDT,全称为Gradient Boosting Decision Tree,即梯度提升决策树,是机器学习领域中一种高效且强大的集成学习方法。它通过迭代地添加决策树以逐步降低预测误差,从而在各种任务中,尤其是回归和分类问题上表现出色。本文将深入浅出地介绍GBDT的基本原理、算法流程、关键参数调整策略以及其在实际应用中的表现与优化技巧。
4002 2
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp微信小程序的医院挂号预约系统的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的医院挂号预约系统的详细设计和实现
266 0