如果在外部文件中管理型号数据,则可以使用脚本通过数据文件和Simulink®模型之间的数据。金宝app此示例向您展示如何将块参数数据从并将参数数据读取到Excel®数据文件。具体地,该示例提供了读写映射SI引擎参数数据的功能。您可以调整函数以读取和写入其他块的参数。
在混合动力电动车辆P2参考应用中打开映射的SI发动机块。
workDir = pwd;autoblkHevP2Start;cd (workDir);
设置一个变量等于块路径。
英国石油(bp) ='simapeengine /映射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引擎块参数。
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
在里面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
.