主要内容

读和写块参数到Excel

如果在外部文件中管理型号数据,则可以使用脚本通过数据文件和Simulink®模型之间的数据。金宝app此示例向您展示如何将块参数数据从并将参数数据读取到Excel®数据文件。具体地,该示例提供了读写映射SI引擎参数数据的功能。您可以调整函数以读取和写入其他块的参数。

打开映射的SI引擎模块

在混合动力电动车辆P2参考应用中打开映射的SI发动机块。

打开混合动力汽车P2参考应用

workDir = pwd;autoblkHevP2Start;cd (workDir);

设置一个变量等于块路径。

英国石油(bp) ='simapeengine /映射si发动机'%块路径

打开映射的SI引擎模块

在里面HEVP2REFERENCApplication.模型中,导航到乘用车>理想的映射引擎>SiMappedEngine.打开映射的SI引擎块。的指令扭矩的断点发动机转速输入的断点气缸数量每动力冲程曲柄转数, 和流离失所的总额参数设置为工作区变量。

示例中的函数使用数据文件中的值覆盖工作区变量。

指定数据文件配置

首先,指定文件名。此示例文件SiEngineData.xlsx包含三张床单。第一张纸包含指令扭矩断点的标量值,发动机速度输入断点的断点,圆柱数,曲柄转数和总位移量。第二片材包含制动扭矩图的表值。第三片包含燃料扭矩图的表值。

文件名='sienginedata.xlsx'

注意,文件中的第一个工作表指定柱面数,Ncyl参数,6

接下来,定义引擎子系统的配置数据。此示例为大小为标量、向量或2D数组的双变量设置配置。

  • 标量数据结构指定第一个工作表上的数据。

  • 矢量数据结构指定第二张页面上的数据。

  • 数组数据结构指定第三个工作表上的数据。

engData =结构();%引擎参数数据%标量数据engData。Ncyl =结构(“xlSheet”“主要”“xlRange”'C7:C7'“slBlockPath”,BP,'slblockparam'“Ncyl”);engData。Cps =结构(“xlSheet”“主要”“xlRange”“C8: C8”“slBlockPath”,BP,'slblockparam'Cps的);EngData.vd = struct(“xlSheet”“主要”“xlRange”制备过程:C9的“slBlockPath”,BP,'slblockparam''vd');%矢量数据engData。t_bpt =结构(“xlSheet”“主要”“xlRange”“C3: R3”“slBlockPath”,BP,'slblockparam'“f_tbrake_t_bpt”);engData。n_bpt =结构(“xlSheet”“主要”“xlRange”“C4: R4”“slBlockPath”,BP,'slblockparam'“f_tbrake_n_bpt”);% 2D数组数据engData。转矩=结构(“xlSheet”'制动扭矩'“xlRange”“B2:篮”“slBlockPath”,BP,'slblockparam''f_tbrake');engData。燃料=结构(“xlSheet”“燃料地图”“xlRange”“B2:篮”“slBlockPath”,BP,'slblockparam'“f_fuel”);

读取映射的SI引擎块参数

将映射的SI引擎块更新为数据文件中指定的值。

读取数据文件和更新参数

使用此代码读取数据文件并更新映射的SI引擎块参数。

f =字段(engData);IDX = 1:长度(f)尝试var = getfield(engData, f{idx});从Excel中读取值val = readmatrix(文件名,“表”,var.xlsheet,“范围”, var.xlRange);%打开Simu金宝applink模型mdl = fileparts (var.slBlockPath);open_system (mdl);%设置参数值并保存模型set_param(var.slblockpath,var.slblockparam,mat2str(val));save_system(mdl);返回任何错误信息DISP(GetReport(我,“扩展”“超链接”“上”)流('ncontinuing到下一个变量... \ n \ n');结束结束流(完成在Simulink中写入值\n金宝app
完成将值写入Simulink金宝app

打开映射的SI引擎模块

在里面HEVP2REFERENCApplication.模型中,导航到乘用车>理想的映射是女士e >SiMappedEngine.打开映射的SI引擎块。的指令扭矩的断点发动机转速输入的断点气缸数量每动力冲程曲柄转数, 和流离失所的总额参数设置为数据文件中指定的值。确认制动转矩映射燃料流程图参数与数据文件中指定的值相同。

将修改的参数写入数据文件

在“映射的SI引擎”块中,修改柱面数,NCyl参数取值为6 ~ 8。点击应用.保存模型。

或者,使用此代码更新参数并保存模型。

set_param(bp,“Ncyl”“8”);save_system (“SiMappedEngine”);

将参数数据写入文件

首先,创建数据文件的副本。将修改的参数数据写入数据文件的副本。

拷贝文件('sienginedata.xlsx'“SiEngineDataCopy.xlsx”“f”);文件名=“SiEngineDataCopy.xlsx”

接下来,使用此代码编写映射的SI引擎块指令扭矩的断点发动机转速输入的断点气缸数量每动力冲程曲柄转数流离失所的总额制动转矩映射, 和燃料流量图数据文件的参数。

%从Simulink模型中读取数据金宝app,然后写入Excelf =字段(engData);IDX = 1:长度(f)尝试var = getfield(engData, f{idx});%打开Simu金宝applink模型mdl = fileparts (var.slBlockPath);open_system (mdl);来自Simulink的%读取值金宝appval = str2num (get_param (var。slBlockPath var.slBlockParam));将值写入Excelwritematrix (val,文件名,“表”,var.xlsheet,“范围”, var.xlRange);返回任何错误信息DISP(GetReport(我,“扩展”“超链接”“上”)流('ncontinuing到下一个变量... \ n \ n');结束结束流('已将值写入Excel\n'
完成在Excel中写入值

打开带有修改数据的文件。确认数据文件中的气瓶数为8

另请参阅

相关话题