主要内容

太阳能电池参数的数据提取

这个例子展示了太阳能电池块的参数优化,以适应在不同温度范围内定义的数据。它使用MATLAB®优化函数fminsearch.其他可用来使s manbetx 845用Simscape电气模型进行这种类型参数拟合的产品是优化工具箱™和Simulink设计优化™。万博1manbetx这些产品提供s manbetx 845了预定义的功能来使用gui或命令行方法操作和分析块。

策略

使用2步程序拟合8参数太阳能电池的I-V输出曲线到数据:

  1. 优化太阳能电池主对话框选项卡中的参数,使输出曲线与室温下的数据匹配。

  2. 优化太阳能电池温度对话框选项卡中的参数,以匹配非室温下的输出曲线和数据。

数据和块设置

MATLAB数据文件,ee_solar_iv_data.mat,将太阳能电池数据存储为一组结构。每个结构包含3个字段:温度(当前)和v(电压)。太阳能电池块引用一个数据结构来设置设备工作温度,VPulse块的脉冲值V2,并在规定的电压下生成模拟输出电流。通过在规定的输出时间输出仿真结果来设定规定的电压。要设置输出时间,在建模选项卡上,单击模型设置;在“配置参数”中,在“数据导入/导出”类别中,单击“附加参数”并指定“输出次数”。作用域将输出电压和电流响应保存为结构数据,Io.signal.values和Vo.signal.values。

加载太阳能电池数据负载ee_solar_iv_data.mat显示太阳能电池模型模型=“ee_solar”;open_system(模型)

close_system(模型中,0);

初始参数说明

的起始值fminsearch可以使用太阳能电池块默认值,数据表值和以下公式的组合进行估计:

$$I_{ph} = I_{sc}$$

ph值$ $ I_s = {I_ {} \ / (exp (V_ {oc} / (.025 * ec)) - 1)} $ $

$$R_s = {-dV \ / dI} @V_{oc}$$

$$R_p = {-dV \ / dI} @I_{sc}$$

优化前的参数和初始值列表

ParsListMain = {“是”“Iph”“电子商务”“Rs”“记者”};InitGuessMain = [3e-7 3.8 1.5 .004 10];ParsListTemp = {“TIPH1”“如”“TXIS1”};InitGuessTemp = [.001 1.11 3];

fminsearch是一个无约束的非线性优化器,定位一个函数的局部最小值,改变初始估计将导致不同的解集。

使用初始参数绘制数据与太阳能电池输出的关系

加载8个参数太阳能电池模型并设置参数

load_system(模型);set_param([模型/太阳能电池的],人口、难民和移民事务局的“3”([ParsListMain;cellstr (num2str (InitGuessMain ') '], 1, []);set_param([模型/太阳能电池的], Pars{:}) Pars =重塑([ParsListTemp;cellstr (num2str (InitGuessTemp ') '], 1, []);set_param([模型/太阳能电池的{:})),帕尔斯生成初步模型曲线并根据数据绘制Num_lines = length(iv_data);V_model = cell(1, num_lines);I_model = cell(1, num_lines);Legend_info_data = cell(1, num_lines);Legend_info_model = cell(1, num_lines);idx_data = 1:num_lines sim(模型);v_model{idx_data} = Vo.signals.values;i_model{idx_data} = Io.signals.values;Legend_info_data {idx_data} = ['Temp = '...num2str (iv_data (idx_data)均)“\ circC、数据”];Legend_info_model {idx_data} = ['Temp = '...num2str (iv_data (idx_data)均)“\ circC模式”];结束情节([iv_data。v],[iv_data.i],' d ', [v_model{:}], [i_model{:}]) xlabel(太阳能电池输出电压(V));ylabel (太阳能电池输出电流(A));传奇([legend_info_data legend_info_model),“位置”“最佳”);标题(具有初始参数值的模型);

误差平方和计算

ee_solar_lse函数是用什么来最小化的fminsearch.该函数返回太阳能电池输出电流和数据之间的误差平方和。提供的参数值无效fminsearch,语句为错误返回一个较大的值。

优化室温下主选项卡对话框参数(步骤1)

查找室温数据索引Idx_data = find([iv_data.temperature]==25);% #好吧在太阳能电池主对话框中优化参数ParsList = ParsListMain;OptParsMain = fminsearch(@ee_solar_lse, InitGuessMain,...optimset (“TolX”1 e - 3));更新太阳能电池块优化参数Pars =重塑([ParsList;cellstr (num2str (OptParsMain ') '], 1, []);set_param([模型/太阳能电池的{:}),帕尔斯);显示优化参数显示器(sprintf ([“优化的太阳能电池主参数”...对话框标签是:\n)));显示器(sprintf ('\t%5s = %s\n'Pars {:}));
太阳能电池主对话框标签的优化参数为:Is = 3.14978e-07 Iph = 3.80137 ec = 1.39989 Rs = 0.00415132 Rp = 10.1093

优化参数控制温度依赖性(步骤2)

查找非室温数据的索引Idx_data = find([iv_data.temperature]~=25);在太阳能电池的温度对话框中优化参数ParsList = ParsListTemp;OptParsTemp = fminsearch(@ee_solar_lse, InitGuessTemp,...optimset (“TolX”1 e - 3));更新太阳能电池块优化的温度参数Pars =重塑([ParsList;cellstr (num2str (OptParsTemp ') '], 1, []);set_param([模型/太阳能电池的{:}),帕尔斯);显示优化参数显示器(sprintf ([“太阳能电池的优化参数”...'温度对话框标签是:\n')));显示器(sprintf ('\t%5s = %s\n'Pars {:}));
太阳能电池温度对话框标签的优化参数为:TIPH1 = 0.00080492 EG = 1.1384 TXIS1 = 3.3842

显示优化曲线

idx_data = 1:num_lines sim(模型);v_model{idx_data} = Vo.signals.values;i_model{idx_data} = Io.signals.values;结束情节([iv_data。v],[iv_data.i],' d ', [v_model{:}], [i_model{:}]) xlabel(太阳能电池输出电压(V));ylabel (太阳能电池输出电流(A));传奇([legend_info_data legend_info_model),“位置”“最佳”);标题(“参数值优化模型”);

bdclose(模型)