此示例显示了如何使用Simulink®Design Optimization中部署的参数估计版本在现场监控电动汽车电池的状况™, 与Simulink编译器一起使用™.万博1manbetx
电动汽车的电池更换费用昂贵,需要仔细监控和维护,以确保它们在预期寿命内正常工作。在这个例子中,一辆电动汽车每天上下班。在家里,汽车被插入一个智能充电器,它可以监控电流和电池电压。充电器通过分析电池数据来估计电池参数,使用Simulink Design Optimization中的参数估计部署版本,并结合Simulink编译器。万博1manbetx充电器通过物联网(IoT)连接将这些参数传递给汽车制造商,以便制造商可以随时监控电池的健康状况。
本例估计了简单可充电电池模型的参数,斯多巴特里
.的输入斯多巴特里
是蓄电池电流,模型输出是根据蓄电池充电状态计算得出的蓄电池端子电压。
电池模型基于以下等式:
地点:
为电池端电压,单位为伏特。
是以伏特为单位的蓄电池恒定电压。
是以欧姆为单位的蓄电池极化电阻。
为以安培小时为单位的最大电池容量。 为电池以安培小时为单位的初始充电状态。
为电池充电状态,1为充满,0为放电。电池的充电状态是由电池电流的积分计算得出的,电池电流为正,表示放电,电流为负,表示充电。
为充电时的压降,用电池恒压的分数表示。
使用以下命令打开模型。
open_system (“sdoBattery”)
以下是已知的电池特性:
电压, 400 v
损失系数, = 0.012
阻力, 0.32欧姆。
据悉,新电池的功率为250安培小时(100千瓦时)。随着电池的老化, 预计会减少,这将被监控以跟踪电池的健康状况。电荷的初始状态 以及新的电池容量 需要估计。
在部署模式下运行参数估计有两个主要步骤:
制造设置文件,以设置参数估计对象以在部署模式下使用
制造跑文件,这是一个用于参数估计的MATLAB函数,可以在部署模式下编译和运行
建议创建设置和跑文件由MATLAB代码开始生成,由参数估计器.复制、分割和修改生成的代码以生成设置和跑文件,在下一节中演示。
首先生成MATLAB代码进行估计 和 在非部署模式下。使用以下命令加载预配置的估算会话:
负载sdoBattery_spesession_forDeploymentspetool (SDOSessionData)
这个步骤用测量的电压和电流数据加载和绘制实验图,并配置参数估计器估计 和 .
导航到估计按钮,并从下拉列表中选择生成MATLAB函数(见生成参数估计问题的MATLAB代码(GUI))。此步骤生成一个添加到MATLAB编辑器的MATLAB函数和一个MAT文件parameterEstimation_sdoBattery_Data.mat
. 生成的代码可以在文件中找到参数估计数据库.m
.您可以使用生成的代码在非部署模式下估计参数。
建议从生成的代码开始,复制、分割和修改代码以创建设置和跑以下各节中描述的文件。
要在部署模式下估计参数,可将非部署参数估计代码拆分为设置要在非部署模式下使用的文件,以及跑要在部署模式下使用的文件。安装文件可作为参数估计数据库设置.m
主要部分包括:
定义参数
定义实验
准备部署和保存
参数定义在参数估计数据库设置.m
与生成的MATLAB代码相同,参数估计数据库.m
. 使用sdo.getParameterFromModel
命令创建参数对象,其中包含用于参数值、最小值和最大值的字段,以及指示参数是否将在估计期间进行调优的字段(“Free”)。
在此示例中,参数信息也存储在数据库中,在该数据库中,车辆通过类似于伪车辆识别号(VIN)的代码进行识别。汽车制造商可以使用它来监测电池的健康状况。这个参数估计数据库设置.m
文件使用VIN数据库更新电池参数值。看到参数估计数据库设置.m
文件以获取更多详细信息。
初始数据库是从MATLAB文件加载的sdoBatteryVinDatabase.mat
其中VIN数据库存储在变量中vinDatabase
.这是一个集装箱。地图
对象和VIN键4 def
用于在本例中查找电池的参数。
跑
vinDatabase (“4 def”)
显示如下表所示:
实验定义在参数估计数据库设置.m
与生成的MATLAB代码相同,参数估计数据库.m
.实验测量了模型中与数据相关的特定端口或信号的数据和信息。
最后参数估计数据库设置.m
文件,定义一个可以运行模型并将模型输出与测量数据进行比较的模拟器。使用prepareToDeploy
命令来配置实验和模拟器,以便它们可以在部署模式下使用。将这些准备好的对象保存到mat文件中。
在另一个模型上运行这些步骤并准备部署时,可能会提示您保存模型以在运行设置作用保存模型以保留部署模式需要的日志记录设置。
这个跑文件parameterEstimationSdoBattery_run.m
使用中保存的对象sdoBatteryObjectsToDeploy.mat
用于部署模式下的参数估计。
这个跑该文件可作为parameterEstimationSdoBattery_run.m
主要部分包括:
加载预配置的部署对象
更新实验和参数
运行优化
更新参数数据库
这个parameterEstimationSdoBattery_run.m
需要pragma,以便Simulink编译器在编译的代万博1manbetx码中包含模型,如下所示:
加载在末尾保存的预配置对象参数估计数据库设置.m
文件如下:
这个parameterEstimationSdoBattery_run.m
File有两个输入参数:
数据文件名
用于实验数据的数据文件名称
vin
参数值的车辆识别号
读取指定的CSV (comma-separated-values)文本文件中的数据数据文件名
. 使用updateIOData命令使用新的输入和输出数据(此模型的电流和电压数据)更新已部署的实验。由于数据来自CSV文件,因此不需要getData
生成的MATLAB代码中存在的函数,参数估计数据库.m
.
使用VIN作为键,在参数数据库中查找此车的蓄电池参数。在运行新估算之前,使用数据库中的当前值更新初始参数值。见parameterEstimationSdoBattery_run.m
文件以获取更多详细信息。
接下来的几个步骤parameterEstimationSdoBattery_run.m
非常相似的代码在参数估计数据库.m
(对于未部署的估算)。定义估算目标函数的句柄,指定优化选项,并使用sdo.optimize
作用此步骤运行模型并将模型输出与实验数据进行比较。调整参数以实现模型和数据之间的紧密匹配。
目标函数在子函数中定义sdoBattery_optFcn
这和目标函数是一样的参数估计数据库.m
.但是,需要指定信号测井变量的名称,因为在部署模式下,无法从模型中查询到它。
要确定变量的名称('logsout
'在这种情况下),在非部署模式下从MATLAB查询模型:
get_param (“sdoBattery”,“SignalLoggingName”)
或者,在Simulink中使用万博1manbetx建模选项卡,然后单击模型设置.在配置对话框中,选择数据导入/导出找到变量名信号
日志记录
盒子。
后调用sdo.optimize
在主要功能parameterEstimationSdoBattery_run.m
,更新VIN数据库。对于每个估计的参数,复制CurrentValue
到PreviousValue
然后用新的参数估计来更新CurrentValue
.看到parameterEstimationSdoBattery_run.m
为更多的细节。
使用世纪挑战集团
命令编译parameterEstimationSdoBattery_run.m
从MATLAB命令窗口或DOS或UNIX命令提示符中调用函数。您需要安装MATLAB Runtime来完成以下步骤。有关更多信息,请参见安装和配置MATLAB运行时(MATLAB编译器).
在部署模式下运行参数估计。
在MATLAB中,运行
vinDatabase (“4 def”)
要显示以下结果:
下表显示了电池参数的估计
和
随着时间的推移。该文件sdoBattery_Data1.csv
包含电池新时的数据,sdoBattery_Data2.csv
包含电池使用1年时的数据,以及sdoBattery_Data3.csv
包含电池使用2年时的数据。
观察电池容量随时间的变化而下降。在第一年降解率很高,之后降解率降低。当电池是新的时,往返换向以61%的电量离开电池状态,2年后,换向以47%的电量离开电池状态。如果充电状态低于40%,则会减少电池可充电的次数。通过长期跟踪电池参数,制造商可以监控电池的健康状况,并确定汽车是否需要新电池。
prepareToDeploy(实验)
|准备部署(模拟测试)
|更新数据(实验)
|sdo。Experiment
|sdo。模拟