Main Content

hppcTest

Create test container object for hybrid pulse power characterization test data

Since R2025a

Description

Use hppcTest to create an HPPCTest container object for hybrid pulse power characterization (HPPC) test data. Use this object to automatically extract and analyze individual current pulses from HPPC timeseries data. The HPPCTest container object tabulates and organizes all the data and metadata related to every pulse in your test and allows you to pre-process your data in preparation for the parameter estimation process. The TestSummary property contains the table with all the summarized pulse information.

You can load the test time, measured voltage, and current data into this object by setting the HPPCData property. The HPPCData property must comprise a series of constant current pulses applied to a battery at several operating points, including different states of charge, temperatures, and current values. The HPPCData property can be of type double, table, or timetable. If you specify the HPPCData property as a matrix of double, the column of the matrix must correspond to time, voltage, and current, in this order. If you specify the HPPCData property as a table or a timetable, you must provide a valid column or variable name. Optionally, to improve the accuracy for the tabulation of your test breakpoints, you can also define your measured cell temperature, calculated state of charge, initial state of charge, and battery capacity.

The HPPCTest object also allows you to manually define a matrix with the start and end indices for each individual pulse by defining the DischargePulseIndicesInternal and ChargePulseIndicesInternal properties.

To estimate the parameters of an equivalent circuit model for each pulse, use this object and an ECM object as inputs to the fitECM function. This figure shows the typical workflow to estimate the parameters of an equivalent circuit model from HPPC test data:

Creation

Description

hppcExp = hppcTest creates a default empty HPPC test container object, hppcExp, with default property values.

hppcExp = hppcTest(HPPCData,PropertyName=Value) creates a test container object for the hybrid pulse power characterization test data, HPPCData, and sets properties using one or more name-value arguments.

Input Arguments

expand all

Time, voltage, and current data measured from pulse power characterization experiments, specified as a matrix of doubles, table object, or timetable object.

If specify the HPPCData property as a matrix of doubles, the software assumes that the columns of the matrix refer to time, voltage, and current, in this order.

If you specify the HPPCData property as a table or timetable, you must specify each column or variable name by using the TimeVariable, VoltageVariable, and CurrentImpedanceVariable arguments.

This argument sets the HPPCData property.

Properties

expand all

Time, voltage, and current data measured from pulse power characterization experiments, specified as a matrix, table object, or timetable object.

If specify the HPPCData property as a matrix, the software assumes that the columns of the matrix refer to time, voltage, and current, in this order.

If you specify the HPPCData property as a table or timetable, you must specify each column or variable name by using the TimeVariable, VoltageVariable, and CurrentImpedanceVariable arguments.

Data Types: double | table

Battery temperature measured during a hybrid pulse power characterization experiment, specified as a vector, table, or timetable. If you specify this property as a table or timetable, you must define the temperature column or variable name using the TemperatureVariable property.

Data Types: double | table

State of charge of the battery measured during a hybrid pulse power characterization experiment, specified as a vector, table, or timetable. The values of this property must be in the range [0,1]. If you specify this property as a table or timetable, you must define the state-of-charge column or variable name using the StateOfChargeVariable property.

Data Types: double | table

Battery charge measured during a hybrid pulse power characterization experiment, specified as a vector, table, or timetable. If you specify this property as a table or timetable, you must define the charge column or variable name using the ChargeVariable property.

Data Types: double | table

Open-circuit voltage variable, specified as a vector, table, or timetable. If you specify this property as a table or timetable, you must define the temperature column or variable name using the OpenCircuitVoltageVariable property.

Data Types: double | table

Threshold current value, in Ampere, that indicates whether a charge or discharge is occurring, specified as a scalar.

Data Types: double

Threshold value for voltage change that indicates whether a charge or discharge is occurring, specified as a scalar.

Data Types: double

Valid pulse duration range, in seconds, that indicates if a pulse is valid, specified as a 1-by-2 vector. If the pulse is valid, the software stores it in the TestSummary property.

Decreasing the upper bound of this property to values lower than 60 seconds ensures that very long discharges, such as capacity checks, are not included in the final list of pulses for estimation. Increasing the lower bound for this property to values greater than one or two seconds ensures that the function excludes potential noise, outlier currents, or abnormally short pulses from the final list of pulses for estimation.

Data Types: double

Valid battery voltage range that indicates if a pulse is valid, specified as a 1-by-2 vector. If the pulse is valid, the software stores it in the TestSummary property.

Data Types: double

Time before a discharge pulse is added to the extracted discharge pulses, specified as a scalar.

Data Types: double

Time before a charge pulse is added to the extracted charge pulses, specified as a scalar.

Data Types: double

Number of sequential points at which the current must be greater than the CurrentOnThreshold property value to signify the presence of a charge or discharge pulse, specified as a scalar.

Data Types: double

Sign convention for the input current during a discharge, specified as "negativeDischarge" or "positiveDischarge".

Data Types: string | char

Battery capacity, in ampere-hours, used for the Coulomb counting algorithm, specified as a vector.

Data Types: double

State of charge of the battery at the start of the experiment, specified as a vector of elements in the range [0,1]. This value is used for the Coulomb counting algorithm.

Data Types: double

This property is read-only.

Indices in the HPPCData matrix or table where a discharge pulse starts, returned as a vector.

Data Types: double

This property is read-only.

Indices in the HPPCData matrix or table where a charge pulse starts, returned as a vector.

Data Types: double

Name of the time variable in the HPPCData table, specified as a string scalar or character vector.

Data Types: string | char

Name of the voltage variable in the HPPCData table, specified as a string scalar or character vector.

Data Types: string | char

Name of the current variable in the HPPCData table, specified as a string scalar or character vector.

Data Types: string | char

Name of the current variable in the Charge property table, specified as a string scalar or character vector.

Data Types: string | char

Name of the temperature variable in the Temperature property table, specified as a string scalar or character vector.

Data Types: string | char

Name of the state-of-charge variable in the StateOfCharge property table, specified as a string scalar or character vector.

Data Types: string | char

Name of the open-circuit voltage variable in the OpenCircuitVoltage property table, specified as a string scalar or character vector.

Data Types: string | char

This property is read-only.

Summary of the test that shows all identified pulses and related data, returned as a table.

Object Functions

updateTestSummaryUpdate TestSummary property table
setDischargeSOCsUpdate state-of-charge values for all discharge pulses in TestSummary property table
setChargeSOCsUpdate state-of-charge values for all charge pulses in TestSummary property table
removePulseRemove data of current pulse from HPPCTest object
addPulseDataAdd pulse data to TestSummary table
plotPlot HPPC test voltage over time
plotPulsePlot measured voltage for specific pulse index over time

Version History

Introduced in R2025a