В этом примере показано, как идентифицировать параметры суперконденсатора. Вместо того, чтобы собрать напряжение и формы тока от действительного суперконденсатора, пример генерирует напряжение и формы тока путем выполнения симуляции суперконденсатора с помощью значений параметров, которые уже известны. Затем пример применяет идентификационную методологию [1] параметра к формам волны.
Чтобы оценить точность методологии, пример сравнивает идентифицированные параметры с известными значениями параметров. Пример также показывает, как далее совершенствовать значения параметров с помощью инструмента Parameter Estimation, обеспеченного Simulink® Design Optimization™.
Чтобы идентифицировать параметры фактического суперконденсатора опытным путем, вы можете:
Соберите напряжение и формы тока от суперконденсатора.
Идентифицируйте значения параметров с помощью данных о форме волны и методологии, описанной в [1].
Идентифицировать параметры смоделированного суперконденсатора, этого примера:
Генерирует напряжение и формы тока путем симуляции модели, что оно конфигурирует использующие известные значения для суперконденсаторных параметров.
Идентифицирует суперконденсаторные значения параметров с помощью сгенерированных данных о форме волны и методологии, описанной в [1].
Конфигурирует и симулирует суперконденсатор с помощью идентифицированных суперконденсаторных значений параметров.
Чтобы видеть, как подход работает на действительный суперконденсатор, оцените точность идентификационной методологии путем сравнения:
данные, сгенерированные с помощью известных значений параметров и данных, сгенерированных с помощью идентифицированных значений параметров.
известные значения параметров и идентифицированные значения параметров.
Если точность не достаточна, можно использовать инструмент Parameter Estimation от Simulink Design Optimization, чтобы улучшить ее. Используйте идентифицированные значения параметров в качестве начальных значений для оптимизации.
Сгенерируйте напряжение и формы тока путем конфигурирования и симуляции модели с помощью известных значений в фиксированных сопротивлениях, зафиксированных емкостях и зависимых напряжением конденсаторных параметрах усиления суперконденсатора. Смоделируйте текущий вход, сконфигурируйте физические характеристики и сопротивление саморазряда суперконденсатора с помощью реалистических значений.
Наблюдайте суперконденсаторное поведение во время трех отличных фаз:
Обвините в постоянном токе
Заряжайте перераспределение от мгновенного до задержанной ветви
Заряжайте перераспределение от мгновенных и задержанных ветвей до долгосрочной ветви
% 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].
Во время первой стадии идентификации полностью разряженный суперконденсатор обвинен в постоянном токе. Метод принимает, что мгновенные магазины-филиалы весь первоначальный сбор, потому что постоянная времени для ветви относительно мала.
Мгновенные параметры ветви вычисляются путем проведения измерений зарядной характеристики. Если зарядный ток достиг установившийся в, мера и использование
где:
время в идентификационном событии параметра,
терминальное напряжение в,
зарядный ток в,
зафиксированное сопротивление мгновенной ветви,
Если напряжение увеличилось с приблизительно, мера и и использование
где:
время в идентификационном событии параметра,
терминальное напряжение в,
зафиксированная емкость мгновенной ветви,
Если напряжение достигло номинального напряжения, меры и, и выключает зарядный ток. После, если зарядный ток достиг установившегося значения меры и и использование
где:
время в идентификационном событии параметра,
терминальное напряжение в,
время в идентификационном событии параметра,
терминальное напряжение в,
зависимый напряжением коэффициент емкости,
% 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);
Во время второго этапа идентификации заряд перераспределяет от мгновенной ветви до задержанной ветви.
Задержанные параметры ветви вычисляются путем проведения измерений зарядной характеристики хранения.
Если напряжение уменьшилось с приблизительно, мера и и использование
где:
время в идентификационном событии параметра,
терминальное напряжение в,
напряжение, при котором общая мгновенная емкость должна быть вычислена,
общая мгновенная емкость в,
задержанное параллельное сопротивление,
Ожидайте в течение 300 секунд, меры и и использование
где:
время в идентификационном событии параметра,
терминальное напряжение в,
общий заряд, предоставленный суперконденсатору,
задерживается емкость ветви,
% 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));
Во время третьего, и итогового, этапа идентификации заряд перераспределяет от мгновенных и задержанных ветвей до долгосрочной ветви.
Долгосрочные параметры ветви вычисляются путем проведения измерений зарядной характеристики хранения.
Если напряжение уменьшилось с приблизительно, мера и и использование
где:
время в идентификационном событии параметра,
терминальное напряжение в,
долгосрочное параллельное сопротивление,
После 30 минут от запуска процесса зарядки/разряда измерьтесь и и использование
где:
время в идентификационном событии параметра,
терминальное напряжение в,
долгосрочная емкость ветви,
% 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');
Предпосылки:
Лицензия 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.