此示例显示了如何监视现场电动车辆电池的条件,其中Simulink®设计优化™中的参数估计的部署版本以及Simulink Compiler™。金宝app
电动汽车中的电池更换昂贵,需要仔细监控和维护,以确保它们适用于预期寿命。在这个例子中,电动车被驱动到每天上的通勤时工作并重新开始。在家里,汽车插入智能充电器,监控电流和电池电压。充电器通过Simulink设计优化中的参数估计分析为估计电池参数的电池数据,以及Simulink编译器。金宝app充电器通过物联网(物联网)连接,将这些参数转移到汽车制造商,因此制造商可以随着时间的推移监控电池健康。
该示例估计简单可充电电池模型的参数,sdobattery.
.的输入sdobattery.
电池电流是电池电流,型号输出是从电池充电状态计算的电池端子电压。
电池型号基于等式:
在哪里:
为电池端电压,单位为伏特。
电池恒定电压是否在伏特中。
是电池偏振电阻在欧姆中。
是安培小时的最大电池容量。 为电池的初始充电状态,单位为安培小时。
为电池充电状态,1充满电,0放电。电池的充电状态是由电池电流的积分,一个正电流表示放电,一个负电流表示充电。
充电时电压降是否表示为电池恒压的一部分。
使用以下命令打开模型。
Open_System(“sdoBattery”)
以下电池特性是已知的:
电压, 400V.
损失因子, = 0.012
抵抗性, 0.32欧姆。
已知是250安培小时(100千瓦时)当电池是新的。随着电池的老化, 预计会减少,这是监测跟踪电池的健康状况。电荷的初始状态 以及新的电池容量 需要估计。
在部署模式下运行参数估计主要有两个步骤:
做一个设置文件,设置用于部署模式的参数估计对象
做一个跑步文件,它是可以在部署模式下编译和运行的参数估计的MATLAB函数
建议创建设置和跑步文件通过从来自的MATLAB代码开始参数估计.复制、分割和修改生成的代码以使设置和跑步文件如下面的部分所示。
首先生成matlab代码来估计 和 在非部署模式下。使用以下命令加载预配置的估计会话:
负载sdoBattery_spesession_forDeploymentSpetool(SdosessionData)
这一步负载和绘制实验与测量的电压和电流数据和配置参数估计估计 和 .
导航到估计在ToolStrip和下拉列表中的按钮,选择生成matlab功能(见生成MATLAB代码进行参数估计问题(GUI))。此步骤生成MATLAB函数,该函数被添加到MATLAB编辑器和MAT文件中parameterestimation_sdobattery_data.mat.
.生成的代码可用于文件中parameterestimationsdobattery.m.
.您可以使用生成的代码来估计非部署模式中的参数。
建议从生成的代码开始,复制、拆分和修改代码以创建设置和跑步以下部分中描述的文件。
要估计部署模式中的参数,可以将非部署参数估计的代码分成一个设置文件用于非部署模式,以及跑步文件用于部署模式。设置文件可用为parameterestimationsdobattery_setup.m.
主要部分是:
定义参数
定义实验
准备部署和保存
参数定义为parameterestimationsdobattery_setup.m.
以与生成的matlab代码相同,parameterestimationsdobattery.m.
.使用sdo.getparameterfrommodel.
命令创建参数对象,包含参数值,最小值和最大值的字段,以及指示是否在估计期间调整参数的字段(“免费”)。
在该示例中,参数信息也存储在数据库中,其中通过类似于伪车识别号(VIN)的代码来识别汽车。汽车制造商可以使用它来监控电池的健康随着时间的推移。这parameterestimationsdobattery_setup.m.
文件使用VIN数据库更新电池参数值。看看parameterestimationsdobattery_setup.m.
文件有关更多详细信息。
初始数据库从MATLAB文件加载sdobatteryvindatabase.mat
它具有存储在变量中的VIN数据库vindatabase.
.这是一个容器.map.
对象,以及VIN键4 def
用于查找本例中电池的参数。
跑步
vinDatabase (“4 def”)
显示如下表格。
实验定义在parameterestimationsdobattery_setup.m.
以与生成的matlab代码相同,parameterestimationsdobattery.m.
.实验测量了与数据相关的模型中特定端口或信号的数据和信息。
在结束时parameterestimationsdobattery_setup.m.
文件,定义一个模拟器,可以运行模型并比较模型输出到测量数据。使用prepareToDeploy
命令配置实验和模拟器,使它们可以在部署模式下使用。将这些准备好的对象保存到mat文件中。
在另一个模型上运行这些步骤并准备部署时,可能会提示您保存模型以在运行设置功能。保存模型以保存需要到达部署模式的日志记录设置。
这跑步文件parameterEstimationSdoBattery_run.m
使用保存的对象sdobatteryobjectstodeploy.mat.
用于部署模式中的参数估计。
这跑步文件可用作parameterEstimationSdoBattery_run.m
主要部分是:
加载预配置的部署对象
更新实验和参数
运行优化
更新参数数据库
这parameterEstimationSdoBattery_run.m
需要一个pragma,以便Simulink编译器包括编金宝app译代码中的模型,如下所示:
加载在结束时保存的预配置对象parameterestimationsdobattery_setup.m.
文件如下:
这parameterEstimationSdoBattery_run.m
File接受两个输入参数:
datafilename.
实验数据的数据文件名
vin.
参数值的车辆识别号码
从指定的逗号分隔值(CSV)文本文件中读取数据datafilename.
.使用updateIOData命令用新的输入和输出数据(此模型的电流和电压数据)更新已部署的实验。由于数据来自CSV文件,因此您不需要getData
在生成的MATLAB代码中存在的功能,parameterestimationsdobattery.m.
.
使用VIN作为在参数数据库中查找此汽车的电池参数的键。使用数据库中的当前值以在运行新估计之前更新初始参数值。看看parameterEstimationSdoBattery_run.m
文件有关更多详细信息。
接下来的几个步骤parameterEstimationSdoBattery_run.m
与代码中非常相似吗parameterestimationsdobattery.m.
(用于未部署估计)。将句柄定义为估计目标函数,指定优化选项,并使用sdo.optimize
功能。此步骤运行模型并将模型输出与实验数据进行比较。调整参数以在模型和数据之间实现密切匹配。
目标函数定义在子函数中sdobattery_optfcn.
这也类似于目标函数parameterestimationsdobattery.m.
.但是,需要指定信号日志记录变量的名称,因为它无法从部署模式中从模型中查询。
确定变量的名称('logsout
“在这种情况下),请在非部署模式下查询MATLAB的模型:
get_param (“sdoBattery”那'signalloggingname')
或者,在Simulink中使用金宝app建模选项卡中的工具条,并单击模型设置.在配置对话框中选择数据导入/导出中找到变量名信号
日志记录
盒子。
召唤后sdo.optimize
在的主要功能parameterEstimationSdoBattery_run.m
,更新VIN数据库。对于估计的每个参数,复制CurrentValue
到inverionvalue.
然后利用新的参数估计来更新CurrentValue
.看parameterEstimationSdoBattery_run.m
为更多的细节。
使用MCC.
命令编译parameterEstimationSdoBattery_run.m
来自MATLAB命令窗口或DOS或UNIX命令提示符的功能。您需要安装MATLAB运行时以完成以下步骤。有关更多信息,请参阅安装和配置MATLAB运行时(Matlab编译器).
在部署模式下执行参数估计。
在MATLAB中,运行
vinDatabase (“4 def”)
要显示以下结果:
下表是对电池参数的估计
和
随着时间的推移。该文件sdobattery_data1.csv.
包含电池新电池时的数据,sdobattery_data2.csv.
当1岁时,包含电池的数据sdoBattery_Data3.csv
当2岁时包含电池的数据。
观察电池容量随着时间的推移而下降。第一年的降解率很高,之后降解率降低。当电池是新的时,往返通勤的电池充电状态为61%,而2年后,往返通勤的电池充电状态为47%。如果充电状态下降到40%以下,这种情况下减少了电池可充电的次数。通过长期跟踪电池参数,制造商可以监测电池的健康状况,并确定汽车是否需要一个新的电池。
prepareToDeploy(实验)
|预备部署(SimulationTest)
|sdo。E.xperiment
|sdo。模拟
|updatiodata(实验)