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

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

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

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

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

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

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

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

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

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

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

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

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

Если точность не достаточна, можно использовать инструмент Parameter Estimation от 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;
Warning: The file containing block diagram 'ee_supercapacitor_identification'
is shadowed by a file of the same name higher on the MATLAB path. This can
cause unexpected behavior. For more information see <a
href="matlab:helpview([docroot '/toolbox/simulink/helptargets.map'],
'shadowing')">"Avoiding Problems with Shadowed Files"</a> in the Simulink
documentation.

The file containing the block diagram is:
/mathworks/devel/bat/BR2020ad/build/matlab/toolbox/physmod/elec/eedemos/ee_supercapacitor_identification.slx.
The file higher on the MATLAB path is:
/mathworks/devel/bat/BR2020ad/build/matlab/toolbox/physmod/elec/eedemos/html/ee_supercapacitor_identification.m 
Warning: The file containing block diagram 'ee_supercapacitor_identification'
is shadowed by a file of the same name higher on the MATLAB path. This can
cause unexpected behavior. For more information see <a
href="matlab:helpview([docroot '/toolbox/simulink/helptargets.map'],
'shadowing')">"Avoiding Problems with Shadowed Files"</a> in the Simulink
documentation.

The file containing the block diagram is:
/mathworks/devel/bat/BR2020ad/build/matlab/toolbox/physmod/elec/eedemos/ee_supercapacitor_identification.slx.
The file higher on the MATLAB path is:
/mathworks/devel/bat/BR2020ad/build/matlab/toolbox/physmod/elec/eedemos/html/ee_supercapacitor_identification.m 
Warning: The file containing block diagram 'ee_supercapacitor_identification'
is shadowed by a file of the same name higher on the MATLAB path. This can
cause unexpected behavior. For more information see <a
href="matlab:helpview([docroot '/toolbox/simulink/helptargets.map'],
'shadowing')">"Avoiding Problems with Shadowed Files"</a> in the Simulink
documentation.

The file containing the block diagram is:
/mathworks/devel/bat/BR2020ad/build/matlab/toolbox/physmod/elec/eedemos/ee_supercapacitor_identification.slx.
The file higher on the MATLAB path is:
/mathworks/devel/bat/BR2020ad/build/matlab/toolbox/physmod/elec/eedemos/html/ee_supercapacitor_identification.m 

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

Используя данные о форме волны из симуляции, примените методологию, описанную в [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');
Warning: The file containing block diagram 'ee_supercapacitor_identification'
is shadowed by a file of the same name higher on the MATLAB path. This can
cause unexpected behavior. For more information see <a
href="matlab:helpview([docroot '/toolbox/simulink/helptargets.map'],
'shadowing')">"Avoiding Problems with Shadowed Files"</a> in the Simulink
documentation.

The file containing the block diagram is:
/mathworks/devel/bat/BR2020ad/build/matlab/toolbox/physmod/elec/eedemos/ee_supercapacitor_identification.slx.
The file higher on the MATLAB path is:
/mathworks/devel/bat/BR2020ad/build/matlab/toolbox/physmod/elec/eedemos/html/ee_supercapacitor_identification.m 

Оптимизация

Предпосылки:

  1. Лицензия Simulink Design Optimization

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

  • spetool ('ee_supercapacitor_spesession');

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

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

openfig('ee_supercapacitor_speresults');

Ссылки

[1] Zubieta, L. и Р. Бонерт. "Характеристика Конденсаторов Двойного Слоя для Приложений Силовой электроники". Транзакции IEEE на Промышленных Приложениях, Издании 36, № 1, 2000, стр 199-205.