Идентификация параметра суперконденсатора

Этот пример показывает, как идентифицировать параметры суперконденсатора. Вместо того, чтобы собирать формы напряжения и тока от действительного суперконденсатора, пример генерирует форму напряжения и тока путем выполнения симуляции суперконденсатора с использованием значений параметров, которые уже известны. Затем пример применяет методологию идентификации параметров [1] к формам волны.

Чтобы оценить точность методологии, пример сравнивает идентифицированные параметры с известными значениями параметров. Пример также показывает, как дополнительно уточнить значения параметров с помощью инструмента Parameter Estimation, предоставленного Simulink ® Design Optimization™.

Чтобы идентифицировать параметры фактического суперконденсатора эмпирически, можно:

  1. Собирайте форму напряжения и тока от суперконденсатора.

  2. Идентифицируйте значения параметров с помощью данных формы волны и методологии, описанной в [1].

Чтобы идентифицировать параметры смоделированного суперконденсатора, этот пример:

  1. Генерирует форму напряжения и тока путем симуляции модели, которая конфигурирует использование известных значений для параметров суперконденсатора.

  2. Определяет значения параметров суперконденсатора, используя сгенерированные данные формы волны и методологию, описанную в [1].

  3. Конфигурирует и симулирует суперконденсатор, используя идентифицированные значения параметров суперконденсатора.

Чтобы увидеть, как работает подход для реального суперконденсатора, оцените точность методологии идентификации, сравнив:

  • данные, сгенерированные с использованием известных значений параметров, и данные, сгенерированные с использованием идентифицированных значений параметров.

  • известные значения параметров и идентифицированные значения параметров.

Если точности недостаточно, можно использовать инструмент «Оценка параметра» из Simulink Design Optimization, чтобы улучшить его. Используйте идентифицированные значения параметров в качестве начальных значений для оптимизации.

Сгенерируйте данные

Сгенерируйте форму волны напряжения и тока путем конфигурирования и симуляции модели с использованием известных значений для фиксированных сопротивлений, фиксированных емкостей и зависящих от напряжения параметров усиления конденсатора суперконденсатора. Моделируйте вход ток, конфигурируйте физические характеристики и сопротивление саморазряда суперконденсатора с помощью реалистичных значений.

Наблюдайте поведение суперконденсатора в течение трех различных фаз:

  1. Заряд с постоянным током

  2. Перераспределение сборов с немедленного на отложенную ветвь

  3. Перераспределение платежей из непосредственных и отложенных ветвей в долгосрочные ветви

% Open model
modelName = 'ee_supercapacitor_identification';
open_system(modelName);
set_param(find_system('ee_supercapacitor_identification','FindAll', 'on','type','annotation','Tag','ModelFeatures'),'Interpreter','off')

% Configure the supercapacitor using known parameter values.
%
% Supercapacitor block Cell Characteristics parameters
Kv = 190;                   % Voltage-dependent capacitor gain
R = [2.5e-3 0.9 5.2];       % Fixed resistances, [R1 R2 R3]
C = [270 100 220];          % Fixed capacitances, [C1 C2 C3]

% Store a copy of the known parameter values for an eventual comparison to
% parameter values identified using the methodology described in [1].
Kv_known = Kv;
R_known = R;
C_known = C;

% Specify input current by configuring the Step block.
%
% Step block parameters
stepTime = [40 1900 1917];  % Step time
initialValue = [28 0 0];    % Initial value
finalValue = [0 -25 25];    % Final value

% Specify the physical characteristics of the supercapacitor.
%
% Supercapacitor block Cell Characteristics and Configuration parameters
R_discharge = 9e3;          % Self-discharge resistance
N_series = 1;               % Number of series cells
N_parallel = 1;             % Number of parallel cells

% Specify the simulation duration
stopTime = 2100;

% Simulate and store voltage and current waveform data
sim(modelName);
t = simlog_ee_supercapacitor_identification.Sensing_current.It.i.series.time;
i = simlog_ee_supercapacitor_identification.Sensing_current.It.i.series.values;
v = simlog_ee_supercapacitor_identification.Sensing_voltage.V.V.series.values;

Выполните идентификацию параметра

Используя данные формы волны из симуляции, примените методологию, описанную в [1].

Немедленная идентификация параметра ветви

На первом этапе идентификации полностью разрядившийся суперконденсатор заряжается постоянным током. Метод принимает, что непосредственная ветвь сохраняет весь начальный заряд, потому что временная константа для ветви относительно небольшая.

Параметры непосредственной ветви вычисляются путем измерения характеристики заряда. Как только ток зарядки достиг устойчивого состояния, $t_1=20e^{-3} \rm{s}$измерьте$v_1$ и используйте

$R_i=\frac{v_1}{i_1}$

где:

  • $t_1$ является временем на событии идентификации параметра,$n=1$ $\rm{s}$

  • $v_1$ - напряжение на клемме,$t_1$ $\rm{V}$

  • $i_1$ заряжает ток при,$t_1$ $\rm{A}$

  • $R_i$ является фиксированным сопротивлением непосредственной ветви, $\rm{\Omega}$

Как только напряжение увеличилось от$v_1$ приблизительно, $50e^{-3} \rm{V}$измерьте$t_2$ и и$v_2$ используйте

$C_{i0}=i_1\frac{t_2-t_1}{v_2-v_1}$

где:

  • $t_2$ является временем на событии идентификации параметра,$n=2$ $\rm{s}$

  • $v_2$ - напряжение на клемме,$t_2$ $\rm{V}$

  • $C_{i0}$ является фиксированной емкостью немедленной ветви, $\rm{F}$

Как только напряжение достигло номинального напряжения, измерьте$v_3$ и, $t_3$и отключите ток зарядки. После, $20e^{-3} \rm{s}$как только ток зарядки достиг установившегося значения$0 \rm{A}$ меры и$t_4$ и$v_4$ использования

$t_4 = t_3+20e^{-3}$

$C_{i1}=\frac{2}{v_4}(\frac{i_1(t_4-t_1)}{v_4}-C_{i0})$

где:

  • $t_3$ является временем на событии идентификации параметра,$n=3$ $\rm{s}$

  • $v_3$ - напряжение на клемме,$t_3$ $\rm{V}$

  • $t_4$ является временем на событии идентификации параметра,$n=4$ $\rm{s}$

  • $v_4$ - напряжение на клемме,$t_4$ $\rm{V}$

  • $C_{i1}$ является зависимым от напряжения коэффициентом емкости, $\rm{F/V}$

% Event n=1
t1 = 20e-3;
i1 = interp1(t,i,t1);
v1 = interp1(t,v,t1);

Ri = v1/i1;

% Extract charging data that interp1 can use to find time values rather
% than voltage values
[v3, v_max_idx] = max(v);
[v_charge, v_charge_idx] = unique(v(1:v_max_idx));
t_charge = t(v_charge_idx);

% Event n=2
delta_v = 50e-3;
v2 = v1+delta_v;
t2 = interp1(v_charge,t_charge,v2);
i2 = interp1(t,i,t2);

Ci0 = i2*(t2-t1)/delta_v;

% Event n=3
t3 = t(v_max_idx);

% Event n=4
delta_t = 20e-3;
t4 = t3+delta_t;
v4 = interp1(t,v,t4);
Qtotal = i1*(t4-t1);
Cq = Qtotal/v4;

Ci1 = (2/v4)*(Cq-Ci0);

Идентификация параметра задержки ветви

На втором этапе идентификации плата перераспределяется из непосредственной ветви в задержанную ветку.

Рассчитывают параметры задержки ветви путем измерения характеристики заряда удержания.

Как только напряжение уменьшилось от$v_4$ приблизительно, $50e^{-3} \rm{V}$измерьте$t_5$ и и$v_5$ используйте

$\Delta v=v_4-v_5$

$V_{ci}=v_4-\frac{\Delta V}{2}$

$C_{diff}=C_{i0}+C_{i1}V_{ci}$

$R_d=\frac{(v_4-\frac{\Delta V}{2})(t_5-t_4)}{C_{diff}\Delta V}$

где:

  • $t_5$ является временем на событии идентификации параметра,$n=5$ $\rm{s}$

  • $v_5$ - напряжение на клемме,$t_5$ $\rm{V}$

  • $V_{ci}$ - напряжение, при котором вычисляется общая немедленная емкость, $\rm{V}$

  • $C_{diff}$ - общая немедленная емкость,$V_{ci}$ $\rm{F}$

  • $R_d$ - задержанное сопротивление ветви, $\rm{\Omega}$

Ждите 300 секунд, измерьте$t_6$ и$v_6$ используйте

$Q_{total}=i_1(t_4-t_1)$

$C_d=\frac{Q_{total}}{v_6}-(C_{i0}+\frac{C_{i1}}{2}v_6)$

где:

  • $t_6$ является временем на событии идентификации параметра,$n=6$ $\rm{s}$

  • $v_6$ - напряжение на клемме,$t_6$ $\rm{V}$

  • $Q_{total}$ - суммарный заряд, подаваемый на суперконденсатор, $\rm{C}$

  • $C_d$ - задержанная емкость ветви, $\rm{F}$

% Event n=5
v5 = v4-delta_v;
discharge_idx = find(i<-20,1,'first');
t_discharge = t(v_max_idx:discharge_idx);
v_discharge = v(v_max_idx:discharge_idx);
t5 = interp1(v_discharge,t_discharge,v5);
delta_t = t5-t4;
Vci = v4-(delta_v/2);
Cdiff = Ci0+Ci1*Vci;
Rd = (v4-(delta_v/2))*delta_t/(Cdiff*delta_v);

% Event n=6
TypicallyRdTimesCd = 100;
t6 = t5 + 3*TypicallyRdTimesCd;
v6 = interp1(t,v,t6);
Cd = (Qtotal/v6)-(Ci0+((Ci1/2)*v6));

Идентификация параметра долгосрочной ветви

На третьем, и завершающем, этапе идентификации плата перераспределяется из ближайших и отложенных ветвей в долгосрочную ветвь.

Рассчитывают параметры долгосрочной ветви путем измерения характеристики заряда удержания.

Как только напряжение уменьшилось от$v_6$ приблизительно, $50e^{-3} \rm{V}$измерьте$t_7$ и и$v_7$ используйте

$\Delta v=v_6-v_7$

$R_l=\frac{(v_6-\frac{\Delta V}{2})(t7-t_6)}{C_{diff}\Delta V}$

где:

  • $t_7$ является временем на событии идентификации параметра,$n=7$ $\rm{s}$

  • $v_7$ - напряжение на клемме,$t_7$ $\rm{V}$

  • $R_l$ - долгосрочное сопротивление ветви, $\rm{\Omega}$

Через 30 минут от начала процесса зарядки/разгрузки, измерьте$t_8$ и$v_8$ и используйте

$C_l=\frac{Q_{total}}{v_8}-(C_{i0}+\frac{C_{i1}}{2}v_8)-C_d$

где:

  • $t_8$ является временем на событии идентификации параметра,$n=8$ $\rm{s}$

  • $v_8$ - напряжение на клемме,$t_8$ $\rm{V}$

  • $C_l$ - емкость долгосрочной ветви, $\rm{F}$

% Event n=7
v7 = v6-delta_v;
t7 = interp1(v_discharge,t_discharge,v7);
delta_t = t7-t6;
Vci = v6-(delta_v/2);
Cdiff = Ci0+Ci1*Vci;
Rl = (v6-(delta_v/2))*delta_t/(Cdiff*delta_v); % Rl value large

% Event n=8
t8 = 30*60;
v8 = interp1(t,v,t8);
Cl = (Qtotal/v8)-(Ci0+(v8*Ci1/2))-Cd; % Cl value too large

Сопоставление данных времени и напряжения

Соберите данные времени и напряжения для каждого события идентификации параметра в таблице MATLAB ®:

DataTable = table((1:8)',...
    [t1 t2 t3 t4 t5 t6 t7 t8]',...
    [v1 v2 v3 v4 v5 v6 v7 v8]',...
    'VariableNames',{'Event','Time','Voltage'}) %#ok<NOPTS>
DataTable =

  8x3 table

    Event     Time      Voltage 
    _____    _______    ________

      1         0.02    0.071799
      2      0.51803      0.1218
      3           40      2.2717
      4        40.02      2.2019
      5       56.675      2.1519
      6       356.67      1.8473
      7       499.28      1.7973
      8         1800      1.5865

Оценка точности идентифицированных параметров

Сконфигурируйте и симулируйте модель с помощью идентифицированных параметров суперконденсатора. Затем, чтобы оценить точность идентифицированных значений параметров, сравните выход формы волны с данными, сгенерированными симуляцией, которая использует известные параметры.

% Create parameters for supercapacitor block using identified values and
% create copies for easy reference.
Kv = Ci1;
R = [Ri Rd Rl];
C = [Ci0 Cd Cl];
Kv_identified = Kv;
R_identified = R;
C_identified = C;

% Simulate the model and store voltage and current waveforms.
sim(modelName);
t_ = simlog_ee_supercapacitor_identification.Sensing_current.It.i.series.time;
v_ = simlog_ee_supercapacitor_identification.Sensing_voltage.V.V.series.values;

% Plot the data generated from simulating with known parameters on the
% same axis as the data generated from simulating with identified
% parameters.
figure;
plot(t,v,DataTable.Time,DataTable.Voltage,'o',t_,v_);
grid('on');
legend('Known parameters simulation',...
    'Measurements for parameter identification',...
    'Identified parameters simulation');

Оптимизация

Необходимые условия:

  1. Simulink Design Optimization

Если трассировки недостаточно похожи, чтобы соответствовать требованиям, идентифицированные значения параметров могут служить начальными значениями параметров для инструмента оценки параметра из Simulink Design Optimization.

  • spetool ('ee _ supercapactor _ spesession');

Результаты оптимизации

Отобразите траекторию параметра, созданную с помощью функции Sum Квадратичная невязка и Нелинейного метода оптимизации методом наименьших квадратов.

openfig('ee_supercapacitor_speresults');

Ссылки

[1] Зубета, Л. и Р. Бонерт. «Характеристика двухслойных конденсаторов для Степени электроники». Транзакции IEEE по отраслевым приложениям, том 36, № 1, 2000, стр. 199-205.