太阳能电池参数的数据提取
这个例子展示了太阳能电池块的参数优化,以适应在不同温度范围内定义的数据。它使用MATLAB®优化函数fminsearch
.其他可用来使s manbetx 845用Simscape电气模型进行这种类型参数拟合的产品是优化工具箱™和Simulink设计优化™。万博1manbetx这些产品提供s manbetx 845了预定义的功能来使用gui或命令行方法操作和分析块。
策略
使用2步程序拟合8参数太阳能电池的I-V输出曲线到数据:
优化太阳能电池主对话框选项卡中的参数,使输出曲线与室温下的数据匹配。
优化太阳能电池温度对话框选项卡中的参数,以匹配非室温下的输出曲线和数据。
数据和块设置
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
可以使用太阳能电池块默认值,数据表值和以下公式的组合进行估计:
优化前的参数和初始值列表
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(模型)