exponenta event banner

Создание интерактивного повествования с помощью редактора Live Editor

Ниже приведен пример создания интерактивного повествования в интерактивном редакторе. Интерактивное описание связывает вычисления, используемые для решения проблемы. В этом примере показано, как:

  • описывать подход с использованием форматированного текста;

  • Отображение выходных данных вместе с кодом MATLAB.

  • Опишите основную математику уравнениями.

  • Иллюстрируйте важные моменты изображениями.

  • Ссылки на фоновый материал.

  • Измените параметры и повторно выполните анализ с помощью элементов управления.

  • Постройте график данных для визуализации.

  • Предложите коллегам расширить анализ.

Общий подход

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

Оцените выходную мощность типичной установки солнечных батарей на определенную дату, время и местоположение, рассчитав следующее:

  • Солнечное время

  • Солнечное склонение и солнечная отметка

  • Воздушная масса и солнечное излучение, достигающее земной поверхности

  • Излучение на солнечной панели, учитывая ее положение, наклон и эффективность

  • Выработка электроэнергии за день и весь год

Результаты этих расчетов используются для построения диаграммы солнечного излучения и излучения панели для примера дня и местоположения. Затем постройте график ожидаемой выработки электроэнергии на панели в течение года. Для оптимизации анализа используйте две функции MATLAB, созданные для этого примера: solarCorrection и panelRadiation.

Солнечное время

Показать выходные данные вместе с кодом, который их создал. Чтобы запустить раздел кода, перейдите на вкладку Live Editor и нажмите кнопку Run Section.

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

lambda = -71.06;                              % longitude
phi = 42.36;                                  % latitude
UTCoff = '-5';                              % UTC offset 
january1  = datetime(2019,1,1);                            % January 1st
localTime = datetime(2019,6,1,12,0,0)                      % Noon on June 1
localTime = datetime
   01-Jun-2019 12:00:00

Чтобы рассчитать положение Солнца для данной даты и времени, используйте солнечное время. Двенадцать часов солнечного времени - это время, когда Солнце самое высокое на небе. Чтобы рассчитать солнечное время, примените поправку к местному времени. Эта поправка состоит из двух частей:

  • Термин, который корректирует разницу между местоположением наблюдателя и локальным меридианом.

  • Орбитальный термин, связанный с орбитальным эксцентриситетом Земли и осевым наклоном.

Расчет солнечного времени с помощью solarCorrection функция.

d = caldays(between(january1,localTime,'Day'));            % Day of year
solarCorr = solarCorrection(d,lambda,str2double(UTCoff));              % Correction to local time
solarTime = localTime + minutes(solarCorr)
solarTime = datetime
   01-Jun-2019 12:18:15

Солнечное склонение и отметка

Включить уравнения для описания основной математики. Создайте уравнения с помощью команд LaTeX. Чтобы добавить новое уравнение, перейдите на вкладку «Вставка» и нажмите кнопку «Уравнение». Дважды щелкните уравнение, чтобы отредактировать его в редакторе уравнений.

Солнечное склонение (δ) - угол Солнца относительно экваториальной плоскости Земли. Солнечное склонение 0∘ на весеннем и осеннем равноденствиях, а на летнем солнцестоянии поднимается максимум до 23.45∘. Расчет солнечного склонения для данного дня года (d) с использованием уравнения

δ = sin-1 (sin (23.45) sin (360365 (d-81)))

Затем для вычисления отметки Солнца (α) в текущее время используйте склонение (δ), широту (λ) и часовой угол (λ). Часовой угол - это число градусов вращения Земли между текущим солнечным временем и солнечным полуднем.

α = sin-1 (sinδsinstart+ cosδcosü cosλ)

delta = asind(sind(23.45)*sind(360*(d - 81)/365));         % Declination
omega = 15*(solarTime.Hour + solarTime.Minute/60 - 12);    % Hour angle
alpha = asind(sind(delta)*sind(phi) + ...                  % Elevation
     cosd(delta)*cosd(phi)*cosd(omega));
disp(['Solar Declination = ' num2str(delta) '   Solar Elevation = ' num2str(alpha)])
Solar Declination = 21.8155   Solar Elevation = 69.113

Вычислите время восхода и захода солнца в стандартном времени, используя склонение солнца и локальную широту.

sunrise=12-cos-1 (-tanϕtanδ) 15 ∘-TC60sunset=12+cos-1 (-tanϕtanδ) 15 ∘-TC60

midnight = dateshift(localTime,'start','day');
sr = 12 - acosd(-tand(phi)*tand(delta))/15 - solarCorr/60;
sunrise = timeofday(midnight + hours(sr));
ss = 12 + acosd(-tand(phi)*tand(delta))/15 - solarCorr/60;
sunset = timeofday(midnight + hours(ss));
disp(['Sunrise = ', datestr(sunrise,'HH:MM:SS'), '   Sunset = ', datestr(sunset,'HH:MM:ss')])
Sunrise = 04:16:06   Sunset = 19:07:22

Воздушная масса и солнечное излучение

Включите изображения, чтобы проиллюстрировать важные моменты вашей истории. Чтобы включить изображение, скопируйте и вставьте его из другого источника или перейдите на вкладку «Вставка» и нажмите кнопку «Изображение».

Когда свет от солнца проходит через земную атмосферу, часть солнечной радиации поглощается. Воздушная масса - это длина пути света через атмосферу (Y) относительно кратчайшего возможного пути (X), когда высота солнца 90∘, как показано на диаграмме ниже. Является функцией солнечного возвышения (α).

Чем больше воздушная масса, тем меньше радиации достигает земли. Расчет массы воздуха с помощью уравнения

AM = 1cos (90-α) + 0,5057 (6,0799 + α) -1,6364.

Затем рассчитайте солнечное излучение, достигающее земли (в киловаттах на квадратный метр), используя эмпирическое уравнение

sRad = 1,353 * 0 .7AM0.678.

AM = 1/(cosd(90-alpha) + 0.50572*(6.07955+alpha)^-1.6354);
solarRad = 1.353*0.7^(AM^0.678);                           % kW/m^2
disp(['Air Mass = ' num2str(AM) '   Solar Radiation = ' num2str(solarRad) ' kW/m^2'])
Air Mass = 1.0698   Solar Radiation = 0.93141 kW/m^2

Солнечное излучение на стационарных панелях

Используйте гиперссылки для ссылки на вспомогательную информацию из других источников. Чтобы добавить гиперссылку, перейдите на вкладку «Вставка» и нажмите кнопку «Гиперссылка».

Панели, установленные с солнечным трекером, могут перемещаться вместе с солнцем и получать 100% солнечного излучения при движении солнца по небу. Однако большинство установок солнечных батарей имеют панели, установленные по фиксированному азимуту и наклону. Следовательно, фактическое излучение, достигающее панели, также зависит от солнечного азимута. Солнечный азимут (γ) - направление компаса положения Солнца на небе. В солнечный полдень в северном полушарии is180∘ солнечный азимут, соответствующий направлению на юг.

γ = {cos-1 (sinδcosstart-cosδsinsystemcoscosα) для  солнечного времени ≤12360∘-cos-1 ( sinδcosü-cosδsinsystemcoscosα) для  солнечного времени > 12

gamma = acosd((sind(delta)*cosd(phi) - cosd(delta)*sind(phi)*cosd(omega))/cosd(alpha));
if (hour(solarTime) >= 12) && (omega >= 0)
    gamma = 360 - gamma;
end
disp(['Solar Azimuth = ' num2str(gamma)])
Solar Azimuth = 191.7888

В северном полушарии типичная установка солнечных панелей имеет панели, ориентированные к югу с азимутом панели (β) 180∘. В северных широтах 35∘ типичный угол наклона (start). Расчет излучения панели для фиксированных панелей по общему солнечному излучению с помощью уравнения

pRad = sRad [cos ) sin (

beta = 180;                                                % Panel azimuth
tau = 35;                                                  % Panel tilt
panelRad = solarRad*max(0,(cosd(alpha)*sind(tau)*cosd(beta-gamma) + sind(alpha)*cosd(tau)));
disp(['Panel Radiation = ' num2str(panelRad) ' kW/m^2'])
Panel Radiation = 0.89928 kW/m^2

Панельное излучение и выработка электроэнергии за один день

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

Панельное излучение

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

selectedMonth = 6;
selectedDay = 1;   
selectedDate = datetime(2019,selectedMonth,selectedDay); 
[times,solarRad,panelRad] = panelRadiation(selectedDate,lambda,phi,UTCoff,tau,beta) ;

plot(times,solarRad,times,panelRad)
title(['Solar and Panel Radiation for ' datestr(selectedDate,'mmmm dd yyyy')])
xlabel('Hour of Day');
ylabel('Radiation, kW/m^2')
legend('Available Solar Radiation','Solar Radiation on Panel', 'Location','South')

Figure contains an axes. The axes with title Solar and Panel Radiation for June 01 2019 contains 2 objects of type line. These objects represent Available Solar Radiation, Solar Radiation on Panel.

Производство электроэнергии

Пока расчеты предполагают, что все излучение, достигающее панели, доступно для выработки энергии. Однако солнечные батареи не преобразуют 100% имеющейся солнечной радиации в электричество. Эффективность солнечной панели - это доля доступного излучения, которая преобразуется. Эффективность солнечной панели зависит от конструкции и материалов элемента.

Обычно жилая установка включает в себя 20м2 солнечных батарей с КПД 25%. Измените приведенные ниже параметры, чтобы увидеть, как эффективность и размер влияют на выработку электроэнергии на панели.

eff = 0.25;                         % Panel efficiency
pSize = 20;                         % Panel size in m^2
radiation = sum(panelRad(1:end-1)+panelRad(2:end))/2;
dayPower = eff*pSize*radiation;                            % Panel electric output in kW
disp(['Expected daily electical output for ' datestr(selectedDate) ' = ' num2str(dayPower) ' kW-hrs'])
Expected daily electical output for 01-Jun-2019 = 33.4223 kW-hrs

Производство электроэнергии за весь год

Наведите курсор на график для взаимодействия с ним. При взаимодействии с графиком в интерактивном редакторе создается код, который затем можно добавить в сценарий.

Повторите расчет для оценки выработки электроэнергии за каждый день года.

yearDates = datetime(2019,1,1:365);                        % Create a vector of days in the year
dailyPower = zeros(1,365);
for i = 1:365
    [times,solarRad,panelRad] = panelRadiation(yearDates(i),lambda,phi,UTCoff,tau,beta) ;
    radiation = sum(panelRad(1:end-1)+panelRad(2:end))/2;
    dailyPower(i) = eff*pSize*radiation; 
end

plot(yearDates,dailyPower)
title('Yearly Power Generation')
xlabel('Date');
ylabel('Power Generation, kW-hrs')

Figure contains an axes. The axes with title Yearly Power Generation contains an object of type line.

yearlyPower = sum(dailyPower);
disp(['Expected annual power output = ' num2str(yearlyPower) ' kW-hrs'])
Expected annual power output = 9954.3272 kW-hrs

Наклон и широта панели

Используйте тепловую карту, чтобы определить, как наклон панели влияет на выработку электроэнергии. Схема нагрева ниже показывает, что оптимальный наклон панели для любого местоположения примерно 5∘ меньше широты.

load LatitudeVsTilt.mat
heatmap(powerTbl,'Tilt','Latitude',...
    'ColorVariable','Power');
xlabel('Panel Tilt')
ylabel('Latitude')
title('Normalized Power Output')

Figure contains an object of type heatmap. The chart of type heatmap has title Normalized Power Output.

Расширение анализа

Поделитесь своим анализом с коллегами. Предложите им воспроизвести или расширить анализ. Совместная работа с помощью редактора Live Editor.

В действительности на истинную мощность солнечной установки существенно влияют местные погодные условия. Интересным расширением этого анализа было бы изучение влияния облачности на результаты. В США можно использовать данные с этих государственных веб-сайтов.

Связанные темы