此示例显示了如何监视现场电动车辆电池的条件,其中Simulink®设计优化™中的参数估计的部署版本以及Simulink Compiler™。金宝app
电动汽车的电池更换费用昂贵,需要仔细监控和维护,以确保它们在预期寿命内正常工作。在这个例子中,一辆电动汽车每天上下班。在家里,汽车被插入一个智能充电器,它可以监控电流和电池电压。充电器通过分析电池数据来估计电池参数,使用Simulink Design Optimization中的参数估计部署版本,并结合Simulink编译器。金宝app充电器通过物联网(IoT)连接将这些参数传递给汽车制造商,以便制造商可以随时监控电池的健康状况。
该示例估计简单可充电电池模型的参数,sdobattery.
.输入到sdobattery.
电池电流是电池电流,型号输出是从电池充电状态计算的电池端子电压。
电池型号基于等式:
在哪里:
电池端子电压是否在伏特。
电池恒定电压是否在伏特中。
是电池偏振电阻在欧姆中。
为以安培小时为单位的最大电池容量。 是安培小时电池初始充电状态。
是电池充电状态,1个完全充电,0放电。电池充电状态从电池电流的积分计算,其具有显示放电的正电流和指示充电的负电流。
为充电时的压降,用电池恒压的分数表示。
使用以下命令打开模型。
open_system ('sdobattery')
以下是已知的电池特性:
电压, 400 v
损失因子, = 0.012
阻力, 0.32欧姆。
已知电池是新的250安培(100千瓦时)。作为电池时代, 预计将减少,并监测这是为了跟踪电池的健康。初始充电状态 和新的电池容量 需要估计。
在部署模式下运行参数估计有两个主要步骤:
做一个设置文件,设置用于部署模式的参数估计对象
做一个跑文件,这是一个用于参数估计的MATLAB函数,可以在部署模式下编译和运行
建议创建设置和跑文件通过从来自的MATLAB代码开始参数估计.复制,拆分和修改生成的代码以制作设置和跑以下部分中展示的文件。
首先生成MATLAB代码进行估计 和 在非部署模式下。使用以下命令加载预配置的估计会话:
加载sdobattery_spesession_fordeployment.spetool (SDOSessionData)
该步骤载重并绘制测量电压和电流数据并配置的实验并配置参数估计估计 和 .
导航到估计按钮,并从下拉列表中选择生成matlab功能(看生成MATLAB代码进行参数估计问题(GUI))。此步骤生成MATLAB函数,该函数被添加到MATLAB编辑器和MAT文件中parameterEstimation_sdoBattery_Data.mat
.生成的代码可用于文件中parameterestimationsdobattery.m.
.您可以使用生成的代码在非部署模式下估计参数。
建议以此生成的代码开始,拆分,拆分和修改代码以创建设置和跑以下部分中描述的文件。
要估计部署模式中的参数,可以将非部署参数估计的代码分成一个设置文件用于非部署模式,以及跑文件用于部署模式。设置文件可用为parameterestimationsdobattery_setup.m.
主要部分是:
定义参数
定义实验
准备部署并保存
参数定义在parameterestimationsdobattery_setup.m.
以与生成的matlab代码相同,parameterestimationsdobattery.m.
.使用sdo.getparameterfrommodel.
命令创建参数对象,其中包含用于参数值、最小值和最大值的字段,以及指示参数是否将在估计期间进行调优的字段(“Free”)。
在该示例中,参数信息也存储在数据库中,其中通过类似于伪车识别号(VIN)的代码来识别汽车。汽车制造商可以使用它来监控电池的健康随着时间的推移。这parameterestimationsdobattery_setup.m.
文件使用VIN数据库更新电池参数值。看看parameterestimationsdobattery_setup.m.
文件有关更多详细信息。
初始数据库是从MATLAB文件加载的sdobatteryvindatabase.mat
它具有存储在变量中的VIN数据库vinDatabase
.这是一个容器.map.
对象,和Vin键4def.
用于在此示例中查找电池的参数。
跑
Vindatabase(“4def”)
要显示下表:
实验是定义的parameterestimationsdobattery_setup.m.
以与生成的matlab代码相同,parameterestimationsdobattery.m.
.实验已经测量了与数据相关联的特定端口或信号的数据和信息。
在结束时parameterestimationsdobattery_setup.m.
文件,定义一个可以运行模型并将模型输出与测量数据进行比较的模拟器。使用准备部署
命令配置实验和模拟器,以便可以在部署模式下使用它们。将这些准备的对象保存到Mat文件中。
在另一个模型上运行这些步骤并准备部署时,系统可能会提示您保存模型以在运行后继续设置功能。保存模型以保存需要到达部署模式的日志记录设置。
这跑文件parameterestimationsdobattery_run.m.m.
使用保存的对象sdobatteryobjectstodeploy.mat.
用于部署模式下的参数估计。
这跑文件可用作parameterestimationsdobattery_run.m.m.
主要部分是:
加载预配置的部署对象
更新实验和参数
运行优化
更新参数数据库
这parameterestimationsdobattery_run.m.m.
需要一个pragma,以便Simulink编译器包括编金宝app译代码中的模型,如下所示:
加载在结尾处保存的预配置对象parameterestimationsdobattery_setup.m.
文件如下:
这parameterestimationsdobattery_run.m.m.
文件需要两个输入参数:
datafilename.
用于实验数据的数据文件名称
vin.
参数值的车辆识别号码
读取指定的CSV (comma-separated-values)文本文件中的数据datafilename.
.使用odernodata.命令用新的输入和输出数据(此模型的电流和电压数据)更新已部署的实验。由于数据来自CSV文件,因此您不需要getdata.
在生成的MATLAB代码中存在的功能,parameterestimationsdobattery.m.
.
使用VIN作为在参数数据库中查找此汽车的电池参数的键。使用数据库中的当前值以在运行新估计之前更新初始参数值。看看parameterestimationsdobattery_run.m.m.
文件有关更多详细信息。
接下来的几个步骤parameterestimationsdobattery_run.m.m.
与代码非常相似parameterestimationsdobattery.m.
(用于未部署估计)。将句柄定义为估计目标函数,指定优化选项,并使用SDO.Optimize.
功能。此步骤运行模型并将模型输出与实验数据进行比较。调整参数以在模型和数据之间实现密切匹配。
目标函数在子功能中定义sdoBattery_optFcn
这也像目标函数一样parameterestimationsdobattery.m.
.但是,需要指定信号测井变量的名称,因为在部署模式下,无法从模型中查询到它。
确定变量的名称('Logsout.
“在这种情况下),请在非部署模式下查询MATLAB的模型:
get_param('sdobattery'那“SignalLoggingName”)
或者,在Simulink中使用金宝app造型ToolStrip中的选项卡,然后单击模型设置.在“配置”对话框中,选择数据导入/导出并找到变量名称信号
记录
盒子。
后调用SDO.Optimize.
在主要功能parameterestimationsdobattery_run.m.m.
,更新VIN数据库。对于估计的每个参数,复制当前值
到了PreviousValue
然后使用新的参数估计来更新当前值
.看到parameterestimationsdobattery_run.m.m.
更多细节。
使用世纪挑战集团
命令编译parameterestimationsdobattery_run.m.m.
来自MATLAB命令窗口或DOS或UNIX命令提示符的功能。您需要安装MATLAB运行时以完成以下步骤。有关更多信息,请参阅安装和配置MATLAB运行时(Matlab编译器).
在部署模式下运行参数估计。
在matlab,跑
Vindatabase(“4def”)
要显示以下结果:
下表显示了电池参数的估计
和
随着时间的推移。文件sdobattery_data1.csv.
包含新的电池数据是新的,sdobattery_data2.csv.
当1岁时,包含电池的数据sdobattery_data3.csv.
当2岁时包含电池的数据。
观察到电池容量随时间的降低。在第一年的后期有很高的退化率降低速度降低。当电池是新的,往返通勤将电池充电状态留在61%的同时在2年后,通勤将电池充电状态为47%。如果充电状态低于40%,则该条件可降低电池可以充电的次数。通过随着时间的推移跟踪电池参数,制造商可以监控电池运行状况,并确定汽车是否需要新电池。
预备部署(实验)
|预备部署(SimulationTest)
|sdo.prestime.
|sdo.simulationtest.
|updatiodata(实验)