主要内容

本页采用了机器翻译。点击此处可查看英文原文。

mergeModelParameters

合并多个 ECM 对象的参数

自 R2025a 起

说明

mergedCircuitModel = mergeModelParameters(circuitModel,circuitModelsArray)ECM 对象数组 newCircuitModels 中的模型参数合并到原始 ECM 对象 circuitModel 中。

示例

示例

全部折叠

本示例演示了如何合并两个不同的 ECM 对象的参数。

打开 DownloadBatteryData 示例,并加载在 25 °C 条件下针对 BAK 2.9 Ah 电池电芯获取的所需 HPPC 数据。该数据由一个包含三列的表格组成。该表格的各列分别表示时间、电压和电流值。

openExample("simscapebattery/DownloadBatteryDataExample")
load("testDataBAKcells/hppcDataBAKcell25degC.mat")

使用 hppcTest 函数将 HPPC 数据存储到 HPPCTest 对象中。HPPC 数据是一个表格,因此您还必须使用 TimeVariableVoltageVariableCurrentVariable 参量来指定每一列的列名。这些名称必须与 hppcData 表中的列名一致。

hppcExp = hppcTest(hppcData,...
    TimeVariable="time (s)",...
    VoltageVariable="voltage (V)",...
    CurrentVariable="current (A)");

hppcExp 对象中的 HPPC 数据拟合到电池等效电路模型 (ECM) 中。要对数据进行拟合并创建一个 ECM 对象,请使用 fitECM 函数。

batteryEcm = fitECM(hppcExp);
disp(batteryEcm.TestParameterTables)
                TestBreakpoints: [1×1 struct]
       ChargeOpenCircuitVoltage: [3.5098 3.5695 3.6224 3.6936 3.7905 3.8751 3.9674 4.0570 4.1158]
                       ChargeR0: [0.0442 0.0431 0.0426 0.0420 0.0415 0.0412 0.0415 0.0427 0.0467]
                       ChargeR1: [0.0112 0.0104 0.0105 0.0123 0.0132 0.0124 0.0121 0.0121 0.0150]
                     ChargeTau1: [13.5612 13.5502 13.5336 13.3463 13.1510 13.2508 13.2585 13.4524 12.6611]
                       ChargeC1: [1.2079e+03 1.2973e+03 1.2843e+03 1.0826e+03 993.6645 1.0672e+03 1.0918e+03 1.1137e+03 842.2532]
                       ChargeR2: [0.0140 0.0145 0.0144 0.0138 0.0140 0.0138 0.0139 0.0138 0.0137]
                     ChargeTau2: [104.3014 102.6275 102.9727 103.6730 101.2828 103.3495 104.4130 103.4471 102.1891]
                       ChargeC2: [7.4513e+03 7.0729e+03 7.1611e+03 7.4953e+03 7.2523e+03 7.4783e+03 7.4884e+03 7.4746e+03 7.4722e+03]
                    ChargeFitPc: [6.6661e-10 8.5981e-10 9.6784e-10 7.6042e-10 3.4343e-11 2.5804e-10 7.5818e-09 7.4191e-10 9.3651e-11]
    DischargeOpenCircuitVoltage: [3.5507 3.6015 3.6500 3.7353 3.8460 3.9226 4.0132 4.0837 4.1745]
                    DischargeR0: [0.0423 0.0407 0.0399 0.0393 0.0389 0.0388 0.0388 0.0402 0.0428]
                    DischargeR1: [0.0096 0.0091 0.0089 0.0089 0.0096 0.0098 0.0090 0.0105 0.0120]
                  DischargeTau1: [12.7536 12.8370 12.5963 13.0530 12.8092 12.4682 12.4945 12.3932 12.4108]
                    DischargeC1: [1.3235e+03 1.4038e+03 1.4081e+03 1.4658e+03 1.3355e+03 1.2717e+03 1.3951e+03 1.1759e+03 1.0352e+03]
                    DischargeR2: [0.0133 0.0133 0.0135 0.0132 0.0133 0.0135 0.0135 0.0134 0.0132]
                  DischargeTau2: [111.5192 112.1673 112.9559 111.6426 111.9445 112.6992 114.3181 111.9695 109.5712]
                    DischargeC2: [8.3541e+03 8.4106e+03 8.3800e+03 8.4506e+03 8.4134e+03 8.3759e+03 8.4974e+03 8.3326e+03 8.2816e+03]
                 DischargeFitPc: [2.3846e-09 1.7385e-09 9.1796e-10 5.7450e-10 6.2766e-10 1.2186e-10 1.1128e-09 6.6898e-10 2.4574e-09]

现在对在 0 °C 下获得的 BAK 2.9 Ah 电池电芯的 HPPC 数据重复上述操作。加载数据,将其存储在 HPPCTest 对象中,并将数据拟合到 ECM 对象中。

load("testDataBAKcells/hppcDataBAKcell0degC.mat")
hppcTest0degC = hppcTest(hppcData,...
    TimeVariable="time (s)",...
    VoltageVariable="voltage (V)",...
    CurrentVariable="current (A)",...
    Temperature=zeros(numel(hppcData(:,1)),1));
ecm0degC = fitECM(hppcTest0degC);

将 0 °C 模型的参数合并到 25 °C 模型中。TestParameterTables 属性现在包含 0 °C 和 25 °C 模型的模型参数。合并之前,该属性的每个字段都是一个 1×9 的数组。合并后,每个字段现在都成为一个由 2×9 个元素组成的矩阵。

batteryEcm = mergeModelParameters(batteryEcm,ecm0degC);
disp(batteryEcm.TestParameterTables)
                       TestBreakpoints: [1×1 struct]
       ChargeOpenCircuitVoltageThermal: [2×9 double]
                       ChargeR0Thermal: [2×9 double]
                       ChargeR1Thermal: [2×9 double]
                     ChargeTau1Thermal: [2×9 double]
                       ChargeC1Thermal: [2×9 double]
                       ChargeR2Thermal: [2×9 double]
                     ChargeTau2Thermal: [2×9 double]
                       ChargeC2Thermal: [2×9 double]
                    ChargeFitPcThermal: [2×9 double]
    DischargeOpenCircuitVoltageThermal: [2×9 double]
                    DischargeR0Thermal: [2×9 double]
                    DischargeR1Thermal: [2×9 double]
                  DischargeTau1Thermal: [2×9 double]
                    DischargeC1Thermal: [2×9 double]
                    DischargeR2Thermal: [2×9 double]
                  DischargeTau2Thermal: [2×9 double]
                    DischargeC2Thermal: [2×9 double]
                 DischargeFitPcThermal: [2×9 double]

检查新的温度断点。现在有两个温度断点:0 °C 和 25 °C。

disp(batteryEcm.TestParameterTables.TestBreakpoints.ResistanceTemperatureBreakpoints)
    0
    25

输入参数

全部折叠

待修改的等效电路模型,指定为一个 ECM 对象。

包含您希望合并到另一个 ECM 对象中的参数的等效电路模型,该模型指定为一个 ECM 对象或一个 ECM 对象数组。

输出参量

全部折叠

合并后的等效电路模型,以 ECM 对象的形式返回。

版本历史记录

在 R2025a 中推出