DATTES structure specification (release 23.05)
This document describe data structure for DATTES 23.05:
- result structure: data structuration of DATTES output
- XML structure: data structuration for XML files
result structure
- result [1x1 struct] with fields:
- profiles [1x1 struct]:
- created by extract_profiles
- modified by calcul_soc and calcul_soc_patch
- contains (mx1) vectors with main cell variables (datetime,t,U,I,mode,soc,dod_ah)
- eis [1x1 struct]:
- created by extract_profiles
- contains (px1) cells with EIS measurements, each ‘p’ contains (nx1) vectors (datetime,U,I,mode,ReZ,ImZ,f)
- metadata: [1×1 struct]:
- created by metadata_collector (extract_profiles) if any ‘.meta’ file found
- test [1x1 struct]:
- created by dattes_structure
- modified by calcul_soc_patch
- contains filenames (file_in, file_out)
- contains general values of the test initial/final values
- phases [1xq struct]:
- created by split_phases (dattes_structure)
- each phase contains general values like initial/final/average values (time, voltage, current…)
- configuration [1x1 struct]:
- created by config scripts
- modified by cfg_default, configurator
- analyse [1x1 struct]:
- created/modified by dattes_analyse
- profiles [1x1 struct]:
profiles substructure
- profiles [1x1 struct] with fields:
- datetime [mx1 double]: absolute time in seconds (seconds from 1/1/2000 00:00)
- t [mx1 double]: test time in seconds (seconds from test start time)
- U [mx1 double]: cell voltage (V)
- I [mx1 double]: current (A)
- mode [mx1 double]: cycler mode (n.u.), 1=CC, 2=CV, 3=rest, 4=EIS, 5=profile
- T [mx1 double]: cell temperature (empty if no probe found)
- dod_ah [mx1 double]: Depth of Discharge in Ah (empty if no SoC calculation)
- soc [mx1 double]: State of Charge in % (empty if no SoC calculation)
eis substructure
- eis [1x1 struct] with fields:
- datetime [px1 cell of [nx1 double]]: absolute time in seconds (seconds from 1/1/2000 00:00)
- U [px1 cell of [nx1 double]]: cell voltage (V)
- I [px1 cell of [nx1 double]]: current (A)
- mode [px1 cell of [nx1 double]]: cycler mode (n.u.), 1=CC, 2=CV, 3=rest, 4=EIS, 5=profile
- ReZ [px1 cell of [nx1 double]]: Real part of impedance (Ohm)
- ImZ [px1 cell of [nx1 double]]: Imaginary part of impedance (Ohm)
- f [px1 cell of [nx1 double]]: frecuency (Hz)
- Iavg [px1 cell of [nx1 double]]: average curent (current offset) of GEIS
- Iamp [px1 cell of [nx1 double]]: current amplitude of GEIS
metadata substructure
- metadata [1x1 struct] with fields:
- test: [1×1 struct] with fields:
- institution [string]: name of institution (e.g. university)
- laboratory [string]: name of laboratory / department
- experimenter [string]: person who made this test
- datetime [string]: date and time of the test
- temperature [1x1 double]: ambient (chamber) temperature
- purpose [string]: brief desccription of the test
- cell: [1×1 struct] with fields:
- id [string]: cell unique identifier
- brand [string]: cell manufacturer
- model [string]: cell model
- max_voltage [1x1 double]: cell max voltage (V)
- min_voltage [1x1 double]: cell min voltage (V)
- nom_voltage [1x1 double]: cell nominal voltage (V)
- nom_capacity [1x1 double]: cell nominal capacity (Ah)
- max_dis_current_cont [1x1 double]: max continuous discharge current (A)
- max_cha_current_cont [1x1 double]: max continuous charge current (A)
- min_temperature [1x1 double]: min temperature (degC)
- max_temperature [1x1 double]: max temperature (degC)
- geometry [string]: shape (e.g. ‘cylindrical’, ‘prismatic’)
- dimensions [1x2 or 1x3 double]: diameter x length or l x w x h in mm
- weight [1x1 double]: weight in g
- cathode [string]: e.g. ‘NMC’
- anode [string]: e.g. ‘graphite’
- cycler: [1×1 struct] with fields:
- brand [string]: e.g ‘Bitrode’
- model [string]: e.g ‘FTV60-250’
- voltage_resolution: voltage resolution in V
- current_resolution: currant resolution in A
- cell_voltage_name [string]: variable name for cell voltage measurement (e.g. ‘U1’)
- cell_temperature_name [string]: variable name for cell temperature measurement (e.g. ‘T1’)
- chamber: [1×1 struct] with fields:
- brand [string]: e.g ‘Friocell’
- model [string]: e.g ‘Friocell 707’
- min_temperature [1x1 double]: min temperature (degC)
- max_temperature [1x1 double]: max temperature (degC)
- regional: [1×1 struct] with fields:
- date_format [string]: e.g ‘yyyy/mm/dd’
- time_format [string]: e.g ‘HH:MM:SS.SSS’
- test: [1×1 struct] with fields:
test substructure
- test [1x1 struct] with fields:
- file_in [1xf char]: pathname of XML/CSV/JSON input file
- file_out [1xf char]: pathname of output file (MAT file)
- datetime_ini [1x1 double]: test start time in seconds from 1/1/2000 00:00
- datetime_fin [1x1 double]: test end time in seconds from 1/1/2000 00:00
- dod_ah_ini [1x1 double]: initial DoD in Ah
- soc_ini [1x1 double]: initial SoC in %
- dod_ah_fin [1x1 double]: final DoD in Ah
- soc_fin [1x1 double]: final SoC in %
phases substructure
- phases [1xq struct] with fields:
- datetime_ini [1x1 double]:phase start time in seconds from 1/1/2000 00:00
- datetime_fin [1x1 double]:phase end time in seconds from 1/1/2000 00:00
- duration [1x1 double]: phase duration
- Uini [1x1 double]: initial cell voltage
- Ufin [1x1 double]: final cell voltage
- Iini [1x1 double]: initial current
- Ifin [1x1 double]: final current
- Uavg [1x1 double]: average cell voltage
- Iavg [1x1 double]: average current
- capacity [1x1 double]: phase capacity (Ah)
- mode [1x1 double]: cycler mode
configuration substructure
- configuration [1x1 struct] with fields:
- test [1×1 struct]: general configuration
- max_voltage (1x1 double): max cell voltage
- min_voltage (1x1 double): min cell voltage
- capacity (1x1 double): cell nominal capacity (base for SoC %)
- cfg_file (string): config script name
- Uname (string): name of voltage variable (default = ‘U’)
- Tname (string): name of temperature variable (default = ‘', no probe)
- soc [1×1 struct]: configuration for soc calculation
- crate_cv_end (1x1 double): C-rate limit in CV phase (default = 1/20)
- soc100_time (nx1 double): time where SoC is set to 100 (crate_cv_end)
- soc0_time (nx1 double): time where SoC is set to 0 (crate_cv_end), unused
- dod_ah_ini (1x1 double): initial dod (Ah) if set by calcul_soc_patch
- dod_ah_fin (1x1 double): final dod (Ah) if set by calcul_soc_patch
- capacity [1×1 struct]: configuration for capacity calculation
- pCapaD (1xq logical): true for discharging capacity CC phases
- pCapaC (1xq logical): true for charging capacity CC phases
- pCapaDV (1xq logical): true for discharging capacity CV phases
- pCapaCV (1xq logical): true for charging capacity CV phases
- resistance [1×1 struct]: configuration for resistance calculation
- delta_time (1xb double): delta time in seconds for resistance calculation
- pulse_min_duration (1x1 double): minimum pulse duration in seconds (default = 9)
- pulse_max_duration (1x1 double): maximum pulse duration in seconds (default = 599)
- rest_min_duration (1x1 double): minimum rest duration before pulse in seconds (default = 9)
- pR (1xq logical): true for resistance phases
- instant_end_rest (nx1 double): start times for resistance pulses (to be removed in future)
- filter_phase_nr (1xr integer): index of phases allowed to be resistance measurements
- impedance [1×1 struct]: configuration for impedance calculation
- ident_fcn (fcn_handle): function used for impedance identificaiton (default = ident_cpe)
- pulse_min_duration (1x1 double): minimum pulse duration in seconds (default = 299)
- pulse_max_duration (1x1 double): maximum pulse duration in seconds (default = 599)
- rest_min_duration (1x1 double): minimum rest duration before pulse in seconds (default = 9)
- fixed_params (1x1 bool): if true, fix some parameters in identification (default = false)
- initial_params (1xc double): initial parameter values
- dod (1xp double): vector of dod (0 to 100), used to interpolate ocv
- ocv (1xp double): vector of ocv (0 to 100), used to separate ocv and impedance voltage drop
- pZ (1xq logical): true for impedance phases
- instant_end_rest (nx1 double): start times for resistance pulses (to be removed in future)
- filter_phase_nr (1xr integer): index of phases allowed to be impedance measurements
- ocv_points [1×1 struct]: configuration for ocv_points calculation
- rest_min_duration (1x1 double): minimum rest duration (s) after ocv pulse (default = 35)
- max_delta_dod_ah (1x1 double): maximum delta DoD (Ah) for ocv pulse (default = 0.3), unused
- min_delta_dod_ah (1x1 double): minimum delta DoD (Ah) for ocv pulse (default = 0.01), unused
- pOCVr (1xq logical): true for ocv_points phases
- ica [1×1 struct]: configuration for ica calculation
- capacity_resolution (1x1 double): delta dod in ica calculation (Ah) (default = capacity/100)
- voltage_resolution (1x1 double): delta dod in ica calculation (Ah) (default = (voltage cell range)/100)
- max_crate (1x1 double): maximum allowed C-rate to consider a phase for ICA (default = 0.2)
- filter_type (1x1 char): filter type (default ‘A’ = gaussian)
- filter_order (1x1 double): filter order (default 100)
- filter_cut (1x1 double): filter cut frequency (default 1)
- pICA (1xq logical): true for ica phases
- pseudo_ocv [1×1 struct]: configuration for pseudo_ocv calculation
- max_crate (1x1 double): maximum allowed C-rate to consider a phase for pseudo_ocv (default = 1.05)
- min_crate (1x1 double): minimum allowed C-rate to consider a phase for pseudo_ocv (default = 0)
- capacity_resolution (1x1 double): delta dod in pseud_ocv calculation (Ah) (default = capacity/100)
- pOCVpC (1xq logical): true for pseudo_ocv charging half cycles
- pOCVpD (1xq logical): true for pseudo_ocv discharging half cycles
- test [1×1 struct]: general configuration
analyse substructure
- analyse [1x1 struct] with fields:
- capacity [1x1 struct]:
- created by ident_capacity
- pseudo_ocv [1xr struct]:
- created by ident_pseudo_ocv (empty struct if error)
- ocv_by_points [1x1 struct]:
- created by ident_ocv_by_points (empty struct if error)
- resistance [1x1 struct]:
- created by ident_r (empty struct if error)
- impedance [1x1 struct]:
- created by ident_cpe, ident_rrc (empty struct if error)
- ica [1xy struct]:
- created by ident_ica (empty struct if error)
- capacity [1x1 struct]:
analyse.capacity substructure
- capacity [1x1 struct] with fields:
- cc_capacity (1xp double): capacity of CC phases
- cc_crate (1xp double): C-rate of CC phases
- cc_datetime (1xp double): datetime of CC phases
- cc_duration (1xp double): duration of CC phases
- cv_capacity (1xq double): capacity of CV phases
- cv_voltage (1xq double): voltage of CV phases
- cv_datetime (1xq double): datetime of CV phases
- cv_duration (1xq double): duration of CV phases
- cccv_capacity (1xr double): capacity of CCCV phases
- cccv_crate (1xr double): C-rate of CCCV phases
- cccv_datetime (1xr double): datetime of CCCV phases
- cccv_duration (1xr double): duration of CCCV phases
- cccv_ratio_cc_ah (1xr double): part of Ah in CC of CCCV phases
- cccv_ratio_cc_duration (1xr double): part of duration in CC of CCCV phases
analyse.pseudo_ocv substructure
- pseudo_ocv [1xr struct]:
- ocv [sx1 double]: OCV vector
- dod [sx1 double]: DoD vector (Ah)
- polarization [sx1 double]: polarization vector (u_charge - u_discharge)
- efficiency [sx1 double]: efficiency (u_discharge / u_charge)
- u_charge [sx1 double]: voltage during charging half cycle
- u_discharge [sx1 double]: voltage during discharging half cycle
- crate [1x1 double]: cycle C-rate
- datetime [1x1 double]: instant of measurement (cycle final time in seconds from 1/1/2000 00:00)
analyse.ocv_by_points substructure
- ocv_by_points [1x1 struct]:
- ocv [tx1 double]: OCV vector
- dod [tx1 double]: DoD vector (Ah)
- sign [tx1 double]: +1 if rest after partial charge, -1 if rest after partial discharge
- datetime [tx1 double]: datetime of measurement (rest final time in seconds from 1/1/2000 00:00)
- t [tx1 double]: time of measurement (rest final time in seconds from test start)
analyse.resistance substructure
- resistance [1x1 struct]:
- R [1xv double]: resistance (Ohm)
- dod [1xv double]: DoD (Ah)
- crate [1xv double]: pulse C-Rate (p.u.)
- datetime [1xv double]: datetime of measurement (pulse initial time in seconds from 1/1/2000 00:00)
- t [1xv double]: time of measurement (pulse initial time in seconds from test start)
- delta_time [1xv double]: delta time from initial pulse to calculate resistance
analyse.impedance substructure
ident_cpe/ident_rcpe (R+CPE)
- impedance [1x1 struct]:
- topology [1xg char]: ‘R0 + CPE’
- q [1xw double]: q parameter of CPE (Ohm^-1)
- alpha [1xw double]: alpha paramter of CPE (n.u.)
- r0 [1xw double]: resistance (Ohm)
- dod [1xw double]: DoD (Ah)
- crate [1xw double]: pulse C-Rate (p.u.)
- datetime [1xw double]: datetime of measuremament (pulse initial time in seconds from 1/1/2000 00:00)
iden_rrc (R+RC+RC)
- impedance [1x1 struct]:
- topology [1xg char]: ‘R0 + R1C1 + R2C2’
- r0 [1xw double]: series resistance (Ohm)
- r1 [1xw double]: first loop resistance (Ohm)
- c1 [1xw double]: first loop capacitance (F)
- r2 [1xw double]: second loop resistance (Ohm)
- c2 [1xw double]: second loop capacitance (F)
- dod [1xw double]: DoD (Ah)
- crate [1xw double]: pulse C-Rate (p.u.)
- datetime [1xw double]: datetime of measuremament (pulse initial time in seconds from 1/1/2000 00:00)
analyse.ica substructure
- ica [1xy struct]:
- dqdu [zx1 double]: derivative of capacity over voltage (Ah/V)
- dudq [zx1 double]: derivative of voltage over capacity (V/Ah)
- q [zx1 double]: filtered cell capacity vector (Ah), abscise for dudq
- u [zx1 double]: filtered cell voltage (V), abscise for dqdu
- crate [1x1 double]: half cycle C-Rate (p.u.)
- datetime [1x1 double]: datetime of measurement (final half cycle time in seconds from 1/1/2000 00:00)
XML structure specification for DATTES
XML files must be VEHLIB compatible (pass verifFomatXML4Vehlib function).
Additionnaly, tables in this xml must contain the following variables:
- tabs: time in seconds from 1/1/2000 00:00 or test time in seconds starting at 0.
- ‘Uname’ given in configuration: cell voltage measurement (V)
- I: current measurement (A)
- mode: cycler working mode (1=CC, 2=CV, 3=rest, 4=EIS, 5=profile)
- ‘Tname’ given in configuration: cell temperature measurement (degC)
Additionnaly for EIS measurments, the following variables must exist:
- freq: frequency (Hz)
- ReZ: real part of impedance (Ohm)
- ImZ: imaginary part of impedance (Ohm)
- freq: frequency (Hz)
- Iavg: average current in GEIS (A)
- Iamp: current amplitude in GEIS (A)