МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САМАРСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ ИМЕНИ АКАДЕМИКА С.П. КОРОЛЕВА» Институт информатики, математики и электроники Факультет информатики Кафедра технической кибернетики Выпускная квалификационная работа бакалавра на тему Исследование модели системы питания наноспутников Выпускник _____________________________ А.А. Кумарин (подпись) Научный руководитель ___________________ И.А. Кудрявцев (подпись) Нормоконтролёр ________________________ С.В. Суханов (подпись) Рецензент ______________________________ (подпись) Самара 2017 2 РЕФЕРАТ Выпускная квалификационная работа бакалавра: 70 с, 28 рисунков, 6 таблиц, 32 источника, одно приложение. Презентация: 12 слайдов Microsoft PowerPoint СИСТЕМА СОЛНЕЧНЫЕ ЭНЕРГОСНАБЖЕНИЯ, БАТАРЕИ, МОДЕЛЬ, АККУМУЛЯТОР, СИМУЛЯЦИЯ, НАНОСПУТНИК, ДВУХСЛОЙНЫЙ КОНДЕНСАТОР, БОЛЬШАЯ ПИКОВАЯ НАГРУЗКА, БЛОК МАНЕВРИРОВАНИЯ. Разработана комплексная модель системы питания наноспутника, предназначенная для оценочной симуляции. Реализованы вспомогательные модели для солнечных батарей, литий-ионных батарей, суперконденсаторов, нагрузки и описаны способы получения их параметров. Разработана модель системы питания блока маневрирования наноспутника. На ее примере проведена верификация. В ходе верификации выявлено, что отклонение результатов симуляции от экспериментальных составляет не более 10%, что приемлемо для оценочного моделирования. Модель может быть использована для симуляции различных перспективных систем питания на этапе концептуального проектирования и на начальных стадиях разработки. Кроме того, модель может быть применена в образовательных целях. 3 СОДЕРЖАНИЕ Определения, обозначения и сокращения ............................................ 6 Введение ................................................................................................... 7 1 Обзор систем питания .......................................................................... 9 1.1 Источники энергии...................................................................... 9 1.2 Аккумуляторные батареи ........................................................... 12 1.3 Суперконденсаторы .................................................................... 15 1.4 Модели систем питания .............................................................. 16 2 Модель СЭП .......................................................................................... 19 2.1 Разработка модели абстрактного уровня .................................. 19 2.2 Интерфейсное представление .................................................... 23 2.3 Базовые классы ............................................................................ 27 2.4 Модели подсистем....................................................................... 29 2.4.1 Модель СБ ........................................................................... 29 2.4.2 Модель ЛИБ ........................................................................ 32 2.4.3 Модель суперконденсатора ............................................... 35 2.5 Служебные процессы .................................................................. 41 2.6 Отдельное моделирование сложных подсистем ...................... 42 3 Блок маневрирования наноспутника .................................................. 45 3.1 Общее описание блока маневрирования .................................. 45 3.2 Выбор суперконденсатора .......................................................... 46 3.3 Реализация системы питания ..................................................... 49 3.4 Постановка эксперимента .......................................................... 51 3.5 Результаты эксперимента ........................................................... 53 4 3.6 Моделирование ............................................................................ 54 4 Результаты и верификация .................................................................. 55 Заключение............................................................................................... 57 Список использованных источников .................................................... 58 Приложение А Исходные коды модели ............................................... 62 5 ОПРЕДЕЛЕНИЯ, ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ АКБ – Аккумуляторная батарея. АЦП – Аналого-цифровой преобразователь. БМН – Блок маневрирования наноспутника. ВАХ – Вольт-Амперная характеристика. КА – Космический аппарат. ЛИБ – Литий-ионная батарея. МК – Микроконтроллер. ОУ – Операционный усилитель. ПК – Персональный компьютер. СБ – Солнечная батарея. СК – Суперконденсатор. СУ – Система управления. СЭП – Система электропитания. ТЭГ – Термоэлектрический генератор. COTS – Component of the shelf. MPPT – Maximum power point tracking. 6 ВВЕДЕНИЕ Развитие современной электронной компонентной базы позволяет создавать все более легкие классы космических аппаратов (КА). Все большее распространение получает класс аппаратов, называемый наноспутниками. Это аппараты с массой от 1 до 10 кг. В значительной степени популярность обусловлена внедрением платформы CubeSat, призванной унифицировать требования к массогабаритным характеристикам аппаратов для того, чтобы использовать однотипные пусковые контейнеры. Данная особенность позволяет существенно снизить стоимость запусков за счет отсутствия необходимости разработки нового контейнера. Стандарт CubeSat подразумевает форму аппарата в виде куба со стороной 10 см. Возможно объединение нескольких модулей в один. Так, часто встречаются аппараты 2U и 3U, являющиеся объединением двух и трех кубов соответственно. Одной из критических систем любого КА является система электропитания (СЭП). Обычно на этом классе аппаратов она состоит из солнечной батареи (СБ), аккумуляторных батарей (АКБ) и системы управления (СУ). СБ и АКБ, используемые в наноспутниках, выпускаются серийно, причем далеко не всегда специализированы под космическое применение. В то же время, системы управления достаточно уникальны и часто проектируются под конкретный аппарат. Строгие ограничения на массу и габариты создают сложности для разработчиков СЭП. Основные задачи, возникающие при проектировании: обеспечить питание заданной полезной нагрузки и обеспечить баланс электрических и массогабаритных характеристик. Для этой задачи целесообразно первоначально использовать модель системы. Модель может не предсказывать поведение системы с высокой точностью, но тем не менее позволяет на ранних этапах проектирования выявить сильные и слабые стороны СЭП и скорректировать проект. При этом уменьшаются затраты на разработку и отладку конечной СЭП. 7 В данной работе анализируется модель СЭП наноспутника. Модель должна быть гибкой для того, чтобы можно было корректировать структуру СЭП с минимальными изменениями в модели. Модель состоит из математической и программной компонент. Особенности программной модели позволяют рассматривать подсистемы СЭП как независимые элементы. Это позволяет строить математические модели этих подсистем раздельно. Разрабатываемая модель строится на основе системы питания наноспутника с блоком маневрирования. Данный блок предназначен для коррекции орбиты аппарата и для обеспечения группового полета. Основной проблемой является большая пиковая мощность, которую практически невозможно обеспечить с помощью основных батарей спутника. Поэтому используется буферные накопители на базе суперконденсаторов (СК). 8 1 ОБЗОР СИСТЕМ ПИТАНИЯ Система питания типичного наноспутника состоит из солнечной батареи, аккумулятора электрической энергии и системы управления питанием. Поскольку большинство аппаратов этого класса создаются университетами и частными организациями, используются доступные в открытой продаже компоненты, часто обозначаемые Components of the Shelf (COTS) [1]. В этой работе рассматриваются только такие компоненты. 1.1 Источники энергии Каждая полноценная система питания должна содержать источник энергии. Для наноспутников это в большинстве случаев солнечные батареи (СБ) и/или термоэлектрические генераторы (ТЭГ). ТЭГ редко используются самостоятельно, а чаще совместно с СБ. Принцип действия ТЭГ основан на термоэлектрическом эффекте Зеебека. На борту спутника естественным образом возникают области с разными температурами. В частности, освещенные СБ нагреваются, и их температура может на несколько десятков градусов превышать температуру неосвещенных СБ [2]. Однако, ТЭГ имеют существенно большую массу и габариты, чем СБ [3], поэтому на этом классе аппаратов их применение ограничено. СБ преобразуют энергию излучения Солнца напрямую в электрическую энергию. В виду малой доступной площади, используют максимально эффективные из доступных СБ. Наибольшей эффективностью на данный момент обладают гетероструктурные полупроводниковые панели. Одним из наиболее эффективных представителей этого класса являются панели на основе GaInP/GaAs; GaInAsP/GaInAs, эффективность которого при определенных условиях может достигать 46% [4]. Однако, этот тип батарей не всегда доступен на рынке, поэтому часто используются батареи с элементами на основе GaAs с эффективностью порядка 28. Иногда также используются СБ 9 на основе GaAs, но с другими дополнительными слоями, например, InGaP/GaAs/Ge [5]. Поскольку моделирование ведется на основе вольтамперной характеристики, снимаемой с конкретной панели, материал СБ не играет существенной роли в модели. СБ обладает нелинейной вольт-амперной характеристикой (ВАХ). В качестве примера приведена ВАХ, полученная в рамках данной работы – Рисунок 1 (верхняя кривая). Характеристика снималась при облучении имитатором Солнца ИС-100 компании ЛОМО, с достаточной точностью симулирующей интенсивность и спектр излучения на околоземной орбите. Рисунок 1 – ВАХ СБ спутника SamSat-218 На рисунке также в условном масштабе показана кривая мощности (нижняя кривая). Видно, что присутствует максимум мощности при определенном соотношении тока и напряжения внешней цепи. Точка, где мощность максимальна называется точкой максимальной мощности, а методы ее достижения – поиском точки максимальной мощности (maximum power point tracking – MPPT) [6]. Большинство реализаций MPPT основано на импульсных преобразователях напряжения постоянного тока в постоянный ток (DC/DC преобразователь). Используются повышающие (Boost) [7], 10 понижающие (buck), инвертирующие (inverter), обратноходовые (fly-back) преобразователи. Параметры СБ значительно ухудшаются при увеличении температуры. Делаются попытки улучшить эффективность с помощью фильтрации спектра падающего излучения преимущественно в [8]. Однако наземных этот установках, метод пока поэтому в применяется модели не рассматривается. Особенностью СБ также является зависимость характеристик от спектра излучения [9]. Поскольку на орбите при прямом освещении спектр не меняется, не целесообразно рассматривать эту зависимость при разработке модели. Для моделирования СБ часто используется схема замещения, показанная на Рисунок 2 [10]. Рисунок 2 – Схема замещения СБ ВАХ можно описать следующей формулой [10]: VC где AkTC I ph I 0 I C ln RS I C , e I0 A – коэффициент аппроксимации; k – постоянная Больцмана; TC – температура панели; e – заряд электрона; 11 (1.1) I ph – фототок; I 0 – тепловой ток; I C – ток нагрузки; RS – внутреннее сопротивление СБ. Зависимость от температуры линейна, поэтому можно ввести температурный коэффициент TV : VC (T ) (1 TV (T0 T ))VC (T0 ) . (1.2) Фототок по закону фотоэффекта пропорционален освещенности. Отсюда следует зависимость от угла падения: I ph ( ) I ph (0)cos( ) I ph 0 cos , где (1.3) – угол падения. 1.2 Аккумуляторные батареи На КА устанавливаются аккумуляторные батареи (АКБ) для питания аппарата на неосвещенной части орбиты. Для КА класса наноспутник характерны следующие типы используемых АКБ: Ni-Cd, Ni-MH [11], Li-Ion и Li-Polymer [12]. Никелевые АКБ использовались в космической индустрии длительное время [13]. Зарядное устройство представляет собой простой источник постоянного тока. Однако одной из проблем при эксплуатации никелевых батарей – так называемый эффект памяти. Он заключался в снижении емкости при длительной эксплуатации в режиме неполных циклов заряда/разряда, т.е. когда не происходит полного разряда перед началом заряда. Этот эффект частично обратим. Для восстановления емкости использовали несколько циклов глубокого разряда с последующим полным зарядом. 12 Тенденции в выборе АКБ изменилась с появлением литиевых батарей. Они превосходят никелевые по ряду ключевых характеристик (см. Таблица 1 [14]). Таблица 1 – Основные характеристики популярных типов АКБ Номинальное Ni-Cd Ni-Mh Li-FePO4 Li-CoO2 Li-Po 1,2 1,2 3,2 3,6 3,7 140 180 220 250-670 250-730 50 55 90-110 100-265 100-265 15-20 20-30 3 1 1 0,25-1 1 2 1,5 1,5 0 – +45 0 – +45 0 – +45 0 – +60 0 – +60 напряжение, В Объемная плотность энергии, Вт*ч/л Массовая плотность энергии, Вт*ч/кг Саморазряд %/месяц Время быстрого заряда, ч Температурный диапазон при заряде, оС Температурный -20 – +65 -20 – +65 -20 – +60 -20 – +60 -20 – +60 диапазон при разряде, оС Ресурс, циклы 2000 300-1000 заряда/разряда Эффект памяти 2000- 500 300-400 мал мал 7000 есть есть 13 мал Это в первую очередь массовая и объемная плотности энергии. Кроме того, литиевые батареи обладают более высоким номинальным напряжением. Также литиевые батареи практически не страдают от эффекта памяти. Однако, у наиболее распространенных литий-кобальтовых батарей, которые обычно обозначают называют литий-ионными батареями (ЛИБ), есть свой ряд недостатков. В первую очередь, ЛИБ нельзя заряжать при отрицательных температурах. Кроме того, процесс заряда ЛИБ сложнее, чем у никелевых батарей. При низком заряде производится заряд постоянным током, а затем происходит переключение в режим постоянного напряжения (Рисунок 3) [15]. Для случая глубокого разряда существует также предварительная процедура заряда – капельная зарядка. Это заряд постоянным током меньшей величины, чем в основном заряде. Рисунок 3 – Профиль заряда ЛИБ Еще одним недостатком ЛИБ является относительно малый ресурс: порядка 500 циклов заряда/разряда. Этот показатель может быть увеличен при определенном подходе к эксплуатации [16]: если заряд/разряд ведется не полными циклами, а частичными, то потенциальный ресурс батареи увеличивается. Например, при использовании циклов в 30% энергии, число циклов увеличивается более чем в 5 раз. Таким образом эффективное число полных циклов увеличится не менее, чем в 1,5 раза. Если же используется 20%, то эффект уже в 2,5 раза [16]. Однако этот метод не смотря на продление срока 14 эксплуатации батареи не всегда целесообразен, т.к. требует увеличения емкости батареи. Схожие характеристики демонстрируют литий-полимерные батареи. Общей проблемой всех типов батарей также является ограничение на ток разряда. Так для ЛИБ разряд током, превышающим 2С, где С обозначают емкость, выраженную в А ч , приводит к ускоренной деградации батареи, приводящей к быстрой потере емкости. Таким образом, ресурс АКБ при эксплуатации в таком режиме значительно снижается. Таким образом, в работе будут рассматриваться только литиевые АКБ в связи с тем, что никелевые батареи в перспективе будут практически полностью вытеснены за счет отсутствия веских преимуществ. 1.3 Суперконденсаторы Для бортовой аппаратуры современных наноспутников часто ставятся задачи, реализация которых предполагает значительное потребление энергии, раннее реализуемое только на более тяжелых классах аппаратов. Штатные батареи не всегда способны обеспечить достаточный импульсный ток. Поэтому важной задачей, задачей становится выбор накопителя энергии, способного без серьезного снижения ресурса обеспечивать достаточный ток. Существует тип конденсаторов, известных как суперконденсаторы (СК) или электролитические конденсаторы с двойным слоем (electrical double layer capacitors ‒ EDLC), которые обладают приемлемым ограничением по току. Плотность энергии в таких конденсаторах существенно ниже, чем у Li-Ion, но выше, чем у обычных электролитических конденсаторов. Например, BCAP350, который использовался в данной работе, обладает емкостью 350 Ф, максимальным напряжением 2,7 В, внутренним сопротивлением порядка 4 мОм и ограничением постоянного тока порядка 30А [17]. Таким образом, максимальная мощность одной ячейки составляет 81 Вт, хотя она и не может обеспечиваться в течении длительного времени. Максимальная величина 15 запасаемой энергии достигает значения 1,3 кДж. В данной работе суперконденсаторы используются в блоке маневрирования наноспутника. В области контакта электрода и электролита в СК возникает так называемый двойной слой. Это слой ионов с зарядом противоположным заряду электрода. В слое между этими двумя зарядами (слой Гельмгольца [18]) содержится большое количество энергии, т.к. по сути это конденсатор с расстоянием между обкладками порядка размера молекулы. Поскольку толщина слоя ионов меняется с напряжением, емкость также меняется. Зависимость сложна, но зачастую может быть аппроксимирована линейной функцией (см. п.4.2.3). Еще одной особенностью реальных СК является инерционность процессов заряда и разряда. В большинстве современных СК в качестве электрода используется активированный уголь, т.к. он имеет большую площадь поверхности за счет большого количества пор. Однако, наличие этих пор усложняет распределение ионов двойного слоя [19]. Для получения равновесного распределения ионов внутри пор при изменении напряжения требуется некоторое время релаксации. Поэтому при достаточно быстром заряде емкость может претерпевать флуктуации. Таким образом, аппроксимация значения емкости в модели становится более целесообразной, чем табличное задание. 1.4 Модели систем питания В процессе моделирование. В разработки начале СЭП КА важным проектирования этапом проводится является оценочное моделирование, цель которого – выявить основные проблемы, которые необходимо будет решить в ходе проектирования. Обзор публикаций [1, 5, 7, 8, 13, 19, 20] показал, что большинство разработчиков придерживаются одного из подходов, которые можно условно схемотехническим и упрощенным. 16 назвать аналитическим, Под упрощенным подходом в этой работе подразумевается использование для подсистем одного единственного параметра – КПД. При таком подходе оценивается только количество энергии, которое может и должна обеспечить СЭП для бортовых потребителей. Расчет ведется для наихудшего случая [12]. Под аналитическим подходом подразумевается вывод решения для искомой величины в виде математической формулы или ряда. Такие решения позволяют при знании параметров системы получить значение некоторой интересующей разработчика величины [20]. Например, зависимость напряжения на АКБ от времени. При необходимости получить значение другой величины потребуется вывод соответствующего выражения. Кроме того, при изменении системы потребуется выводить выражения заново. Таким образом, этот подход является узконаправленным и работает для получения конкретной величины для конкретной системы, т.е. не является ни гибким, ни универсальным. Зачастую малое изменение структуры системы может привести к неприменимости использованных математических методов. Под схемотехническим методом подразумевается моделирование электрических схем. В основном моделирование ведется с помощью различных симуляторов электронных схем [21]. Одними из самых популярных являются SPICE-подобные. SPICE – симулятор электронных схем общего назначения с открытым исходным кодом [22]. На сегодняшний день принцип моделирования, используемый в SPICE используется в множестве открытых и коммерческих программных комплексов. Многие производители интегральных микросхем создали свои версии симуляторов. Например, LtSPICE от Linear Technology, Tina от Texas Instruments, ADIsimPE от Analog Devices. Кроме того, SPICE модели используются для симуляции схем в крупных пакетах для проектирования электроники, таких как OrCAD (PSpice), Proteus (ISIS), Altium Designer. 17 Преимущества SPICE моделирования заключаются в слабых ограничениях на моделируемый объект. Однако с другой стороны, такое моделирование обладает рядом недостатков. Во-первых, симуляция схемы требует значительных вычислительных ресурсов. Это обусловлено сложностью поиска решения систем нелинейных уравнений [23]. Во-вторых, если система имеет несколько решений, то SPICE найдет только одно из них. Причем зачастую при наличии устойчивого и неустойчивого решения находится неустойчивое, а значит не реализуемое в реальности. Таким образом использование компонентов с такими системами уравнений должно быть либо ограничено, либо должны быть применены дополнительные меры по проверке правильности нахождения решения и нахождения другого решения при необходимости. Еще одним инструментом для моделирования является Matlab/Simulink. Этот программный комплекс позволяет создавать собственные модели на скриптовом языке Matlab и симулировать их в реальном времени в пакете Simulink. Этот пакет имеет множество стандартных блоков для симуляции. К недостаткам этих пакетов можно отнести достаточно высокую стоимость, меньшую гибкость языка Matlab по сравнению с языками программирования, а также сложности при работе с аппаратной частью, что усложняет проведение полунатурных испытаний. Таким образом, наиболее гибким средством создания модели является язык программирования общего назначения, а методом моделирования – комбинирование трех описанных. Такой подход позволяет воспользоваться преимуществами каждого отдельного метода частично обходя при этом недостатки. 18 2 МОДЕЛЬ СЭП 2.1 Разработка модели абстрактного уровня Систему питания целесообразно разбить на подсистемы и/или на компоненты. Таким образом, модель системы оперирует с моделями подсистем, о которых у нее есть лишь ограниченный набор знаний. Такой подход позволяет снять целый ряд ограничений на модели подсистем. Например, состояние элемента может включать в себя любые физические величины, в том числе и неэлектрические. Исходя из этих требований и анализа структур систем, упомянутых в обзоре, была разработана структурная схема системы (Рисунок 4), позволяющая моделировать множество различных систем. Рисунок 4 – Обобщенная структура системы питания Энергия генерируется фотопреобразователем. Если присутствуют отдельные элементы, например – диоды, то их можно внести как отдельный элемент или внести напрямую в модель ФП. Далее энергия через преобразователь(и) поступает в некоторый узел коммутации. Преобразователь может быть одноканальным, многоканальным, а может и отсутствовать вовсе. Таким образом получается, что ФП может быть связанным с узлом 19 коммутации через произвольное число разнородных промежуточных узлов. Аналогично связана с узлом коммутации нагрузка. Задание такой схемы порождает следующее ограничение: моделируемая система должна соответствовать схеме. Примером является модель системы питания, описанная в п.3. Примером системы, не соответствующей схеме представлен на Рисунок 5. Рисунок 5 – Пример системы, не соответствующей обобщенной схеме Однако, многие из таких неподходящих схем можно представить в таком виде, чтобы они не противоречили обобщенной схеме. В приведенном примере это возможно объединением зарядного устройства и аккумулятора. Обзор литературы показал, что большинство применяемых на практике схем либо изначально согласуются с описанной в данной работе схемой, либо приводятся к ней. Преимущество схемы заключается в том, что энергия движется в такой схеме в заведомо известном направлении. Исключением являются накопители энергии, где возможны оба направления. Однако, для них вводится предположение об известном напряжении, наличие которого позволяет реализовать явный алгоритм расчета вместо неявного метода узловых потенциалов, реализованного в SPICE симуляторах (см. п. 1.4). Таким образом, вторым ограничением модели является требование известного напряжения накопителей. На практике такое редко возможно в точности, т.к. напряжение меняется с нагрузкой. Однако во многих случаях, например, в модели СК, вводится коррекция напряжения накопителя на основе данных о токе на предшествующем шаге по времени. Такой подход работает для малых зависимостей напряжения от тока, однако в случае сильной 20 зависимости может приводить к неустойчивости численного расчета. В этих случаях требуется дополнительное исследование устойчивости. В результате исследования налагаются ограничения на размер шага по времени. Из схемы видно, что все элементы можно по функциональной роли разделить на три группы: потребитель, производитель, накопитель. В Таблица 2 приведено описание этих групп: Таблица 2 – параметры групп элементов Направление Производитель Потребитель Накопитель К накопителю От накопителя В любую из движения сторон энергии Состояние в Известно/ Известно/ Известно момент времени Неизвестно Неизвестно Направление От накопителя От накопителя – Не обязательно Не обязательно Обязательно обхода при подсчете нового состояния Наличие внутреннего состояния Система в начальный момент времени находится в заданном состоянии. Далее производится вычисление состояния системы через шаг по времени. Переход к новым состояниям происходит, пока не будет достигнуто предварительно заданное время Т. 21 Для ускорения расчетов было принято решение сделать шаг по времени переменной величиной, т.к. требуется меньше итераций на расчет одного и того же виртуального времени. Он был определен как: t min ti ( ) , (2.1) i 1.. N где ti ( ) – шаг по времени подсистемы i; – требуемый максимум погрешности; N – число подсистем. Каждый элемент имеет собственные математическую и программную модели, о которых основной модели ничего не известно, поэтому вычисление максимального шага по времени для достижения заданной точности моделирования элемента возлагается на сам этот элемент. На основании изложенного был создан общий алгоритм работы, представленный на Рисунок 6. Рисунок 6 – Общий алгоритм модели Вычисление нового состояния происходит на основании данных от предыдущего элемента начиная с накопителя. Тип данных зависит от типа соединения между элементами. Самыми первыми рассчитываются накопители. Далее производится переход к непосредственно присоединенным к ним потребителям и производителям. В подавляющем большинстве случаев 22 это напряжение, однако для гибкости оставляется возможность использовать другие параметры. Алгоритм расчета нового состояния системы представлен на Рисунок 7. Рисунок 7 – Алгоритм расчета нового состояния Зачастую для расчета необходимо знать ток потребления или иной параметр, который зависит от всей ветви. Для вычисления таких параметров используется аналогичный алгоритм. 2.2 Интерфейсное представление При реализации модели была поставлена задача обеспечения наглядности и структурированности исходного кода для возможности использования его сторонними разработчиками. Кроме того, оставляется возможность связи с внешними устройствами для проведения полунатурных испытаний. Matlab/Simulink был исключен из рассмотрения в виду проблем со связью с внешними устройствами, а также из-за несовместимости по 23 синтаксису с языками С группы, используемых в микроконтроллерах (МК). В качестве языка написания модели использовался C#, а в качестве среды разработки – Microsoft Visual Studio. В п. 2.1 были введены три группы элементов: производитель, потребитель, накопитель. Эти группы представлены в программной модели интерфейсами. Т.к. есть свойства, присущие всем компонентам, был также введен базовый интерфейс, от которого наследуются все остальные (Рисунок 8). Рисунок 8 – Диаграмма интерфейсов На рисунке 8 показаны три основных интерфейса и их родитель с указанием методов. Общие для всех возможных элементов методы – получить количество потерянной за все время энергии, рассчитать работу элемента на заданном интервале времени в заданном режиме, вычислить максимально допустимый шаг по времени. Последнее необходимо т.к. используется динамический подбор шага. Интерфейс потребителя и производителя позволяет получить информацию о токе или напряжении при заданном напряжении или токе соответственно. Производитель также представляет информацию о произведенной энергии, а потребитель – о потребленной, причем значение определяется не только самим узлом, но и всеми последующими. Поэтому для вычисления всей потребленной энергии, например, достаточно запросить ее у непосредственно присоединенных к центральному узлу элементов, причем эти элементы могут сами и не 24 производить энергию, но интерфейсный подход позволяет абстрагироваться от этого. Накопитель предоставляет информацию о доступной энергии, напряжении и утечках. Для расчета создается экземпляр специального класса Calculator. В этом классе хранятся списки потребителей, производителей и накопителей, подключенных к центральному узлу коммутации, а также содержит класс, отвечающий за управление. Этот класс моделирует систему управления СЭП: вносятся алгоритмы включения, выключения или иного управления на уровне алгоритмов или даже на уровне реального программного кода для МК. В последнем случае может потребоваться адаптация кода нижнего уровня для взаимодействия с моделью. Поскольку все объекты обрабатываются по интерфейсам, ограничения на модель исходят только из вида этих интерфейсов. На Рисунок 9 представлено видоизменение алгоритма расчета применительно к программной модели. Добавляются служебные действия по выводу информации, а также обработка ошибок. Алгоритм расчета нового состояния, приведенный в предыдущем пункте применительно к программной модели значительно не меняется. В первую очередь вычисляется шаг времени. Эта задача возлагается на классы, представляющие узлы системы. Каждый класс вычисляет максимально допустимый шаг по времени, при котором ошибка расчета не должна превышать заранее заданного значения. Некоторые элементы могут быть нечувствительны к размеру шага, например – резистивная постоянная нагрузка, в то время как для АКБ шаг по времени важен, т.к. напряжение при разряде/заряде значительно меняется. Вычисляющий класс опрашивает непосредственно присоединенные к центральному узлу элементы, которые в свою очередь опрашивают присоединенные к ним. Таким образом опрашивается каждый элемент, а в качестве итогового значения шага по времени выбирается минимальный из вычисленных. Таким образом существенно ускоряется работа программы: 25 если, например, шаг определяется преимущественно АКБ, то он будет увеличиваться в те моменты, когда нагрузка на АКБ уменьшается, а, значит, потребуется меньше итераций для расчета необходимого виртуального времени. Рисунок 9 – Алгоритм работы программы Как только шаг вычислен, производится принятие решений системой управления на основании текущего состояния. Далее вызывается метод расчета у всех подключенных к коммутационному узлу элементов. Режим – заданное напряжение. В качестве значения напряжения берется напряжение на АКБ, к которому подключен данный элемент. Все элементы производят расчет нового своего состояния исходя из текущего собственного состояния, а также на основании запроса потребления/генерации у присоединенных элементов. 26 Далее каждый элемент вызывает метод расчета у всех присоединенных элементов, передавая необходимые данные в соответствии с режимом. По умолчанию предусмотрены режим заданного тока и заданного напряжения, но возможно добавление других режимов с произвольным набором параметров. Параметры передаются через не типизированный аргумент, поэтому они могут быть как одним числом, так и целым классом. Помимо метода расчета вызывается метод вывода данных. Данный метод производит отбор необходимых параметров состояния системы, иногда вычисляет дополнительные значения на их основе и записывает эти данные в заданный поток вывода. Данные могут посылаться, например, в консоль, Microsoft Excel или текстовый файл. Данная последовательность действий повторяется, пока не будет достигнуто заданное виртуальное время или пока не возникнет ошибка. В случае ошибки выводится соответствующее сообщение. В зависимости от предварительно заданного условия работа прерывается или продолжается. 2.3 Базовые классы Не смотря на то, что расчет в программе и ведется с помощью интерфейсов, каждый интерфейс является представителем некоторого конкретного класса. Для представления разнообразных подсистем необходимо наличие максимально абстрактной основы. Ядром системы классов в программе является набор абстрактных классов, являющихся потомком главного класса – «элемента». Данный класс содержит такие поля, которые необходимы вне зависимости от того, какую подсистему будет моделировать класс-наследник: внешние условия (температура, освещенность и т.д.), суммарные потери, т.к. потери энергии есть в любой подсистеме; возможность включать и выключать элемент, а также текущее состояние ‒ для взаимодействия с системой управления; время последнего отчета; имя элемента – для того, чтобы различать сходные подсистемы в общем отчете. 27 Также в базовый класс встроены статические поля для служебной информации: рабочая директория для сохранения отчетов, а также общие константы, в частности, целевая точность, используемая классами при расчете максимально допустимого шага. Рисунок 10 – Иерархия классов На Рисунок 10 показана иерархия классов в программе. Использованы следующие обозначения: PV – Photovoltaic – СБ; EDLC – electric double layer capacitor – электролитический конденсатор с двойным слоем; ACB – АКБ. Для лучшей структуризации все абстракции разбиты на три уровня. С каждым уровнем добавляются специфические особенности, присущие моделируемой группе объектов. Первый уровень представляет роль объекта в структуре (Рисунок 4): накопитель, нагрузка, производитель, промежуточный элемент соответственно. Непосредственно в классы закладывается самое основное: подключается интерфейс, переменные с общей информацией (например, о сгенерированной или потребленной энергии). На втором уровне производится деление на крупные направления в возможных представителях, например, роль транзитного элемента может играть стабилизатор напряжения или модуль поиска максимальной мощности для солнечной батареи. На третьем 28 уровне определяется конкретный представитель. Последний уровень ‒ реализации абстракций, собранных на уровнях выше. Один и тот же объект реального мира может иметь несколько программных реализаций: отличия могут быть как в программной-, так и в математической моделях. 2.4 Модели подсистем Абстрактная модель оперирует моделями подсистем. Они представляют собой классы, унаследованные от соответствующих базовых классов. Ниже представлено развернутое описание классов-моделей СБ, ЛИБ и СК. Кроме того, имеется модель нагрузки, которая моделируется электрическим сопротивлением. В упрощенном случае оно постоянно, но при необходимости добавляется зависимость от времени или других параметров. Также разработана модель MPPT-преобразователя и регулятора напряжения. Эти модели основаны на таблично или функционально заданной зависимости КПД от напряжения (см. п 3.1). Кроме того, моделируется система управления. Здесь может исполняться код управляющего МК, написанный на Ссовместимом языке или некоторый алгоритм. В рамках данной работы роль системы управления сводилась к включению и выключению нагрузки и СБ в определенное время. Исходные коды моделей подсистем представлены в приложении А. 2.4.1 Модель СБ Согласно п 1.1 характеристики СБ в общем случае зависят от температуры, интенсивности и спектра падающего излучения. Рассматривать зависимость от спектра в рамках данной модели нецелесообразно, т.к. спектр прямого излучения на околоземной орбите практически неизменен. Интенсивность излучения на орбите меняется слабо ввиду того, что радиус орбиты пренебрежимо мал по сравнению с расстоянием до Солнца. Тем не менее, интенсивность значительно меняется за счет угла падения лучей на СБ. 29 Температурная зависимость важна при детальном моделировании и может быть опущена только в оценочном приближении. Таким образом, для модели необходимы следующие параметры внешней среды: угол падения света на панель и температура. ВАХ получается экспериментально, поэтому можно упростить уравнение (1.1), также введя в него температурный коэффициент (1.2), зависимость от угла (1.3) и учтя также, что тепловой ток мал по сравнению с фототоком, получаем выражение (2.2). VC 1 TV (T T0 ) ( AkTC I ph 0 cos I 0 I C ln RI C ) . (2.2) e I 0 Экспериментальными данными являются пары значений Ui и Ii. Значения неизвестных коэффициентов I0, Iph0, A, R подбираются методом Монте-Карло (ММК) с условием (2.3). Этот метод используется потому, что метод наименьших квадратов для данного уравнения не позволяет найти достаточно простые аналитические выражения. ММК заключается в численном подборе коэффициентов за счет случайных изменений поочередно каждого из них. Если значения функционала (2.3) уменьшается с совершенным изменением, то данное изменение принимается, иначе – происходит возврат к предыдущему значению. Так через некоторое количество изменений можно достичь значение функционала меньше наперед заданного числа – погрешности. 2 B cos I i A ln RI U i D i i min . (2.3) Для нахождения температурного коэффициента необходимо получить экспериментальные значения ВАХ для двух разных температур. Тогда коэффициент можно найти по следующей формуле: 30 TV Для получения ВАХ 1 V1 1 . T1 T0 V0 СБ была применена (2.4) следующая схема эксперимента: исследуемая СБ помещается под имитатором Солнца, включается имитатор. В течение короткого промежутка времени снимаются показания с помощью приборов. Быстрое снятие данных необходимо для того, чтобы точки ВАХ с достаточной точностью относились к одной температуре. Для модели с температурной зависимостью производятся те же действия, но во время измерений электрических величин также фиксируется температура панели с помощью термодатчика. Далее имитатор остается включенным, за счет чего происходит нагрев панели. При достижении температуры, превышающей начальную на 20оС производится повторное измерение электрических величин. Использовались два типа экспериментальных установок в зависимости от мощности СБ. Для маломощных панелей использовалась простая схема (Рисунок 11), основанная на переменном резисторе. Рисунок 11 – Схема измерения ВАХ СБ на переменном резисторе Для мощностей более 0,5 Вт такая схема становится плохо применимой, т.к. переменный резистор не рассчитан на такую рассеиваемую тепловую мощность. В этом случае вместо переменного резистора используется полевой транзистор. Тепловая энергия рассеивается на радиаторе с пассивным воздушным охлаждением. Для использования транзистора в качестве переменного сопротивления используется источник тока на операционном 31 усилителе (ОУ) с переменным резистором R1 для задания уровня тока и токоизмерительным шунтом R2 (Рисунок 12). Рисунок 12 – Схема переменного сопротивления на полевом транзисторе СБ подключается к клемме SB, сигнал с которой подается напрямую на внешний измеритель напряжения V. Измерение напряжения на R2 позволяет вычислить ток по закону Ома: I где U R2 , R2 (2.5) U R 2 – напряжение на R2; R2 – сопротивление R2/ Пример измеренной ВАХ приведен на Рисунок 1. 2.4.2 Модель ЛИБ Основным накопителем энергии в СЭП является ЛИБ. Она может состоять как из одного, так и из нескольких аккумуляторов. Часто для повышения рабочего напряжения, а также для уменьшения тока при сохранении мощности, используются последовательные включения аккумуляторов. Для простоты заряда и использования целесообразно использование в батарее одинаковых аккумуляторов. Также, для оценочного моделирования целесообразно рассматривать только один аккумулятор, 32 экстраполируя результаты на всю батарею. Однако, данный подход не применим в случае, если необходимо моделировать систему балансировки батареи. Одни из наиболее точных электрических моделей строятся с помощью данных импедансной спектроскопии [24]. Однако, данные модели имеют существенные преимущества перед другими в моделировании переходных процессов. В случае, когда переходными процессами можно пренебрегать, можно использовать более простые модели, такие как представленные в [25]: Рисунок 13 – Схема замещения ЛИБ На схеме замещения (Рисунок 13) опущены индуктивность, присущая более подробным моделям. На практике R1 велико, даже у плохих экземпляров ЛИБ утечка не превышает 10% в месяц, поэтому ей целесообразно пренебречь в модели. Таким образом, по схеме видно, что запасенная энергия батареи и напряжение на выводах за вычетом падения на внутреннем сопротивлении связаны. Поэтому можно для конкретной модели или конкретного экземпляра батареи ввести характеристику. В данной работе вместо энергии используется энергетический уровень заряда (state of charge – SoC) SoCe где E E0 , Emax E0 E – энергия текущего состояния; E0 –энергия состояния, принятого за нулевое; Emax – максимальная энергия. 33 (2.6) Данная величина удобна тем, что лежит в диапазоне от 0 до 1 и показывает долю доступной энергии. Кроме того, выход данной величины за пределы диапазона [0,1] эксплуатации. показывает выход из допустимого режима Зависимость от SoCe напряжения получается экспериментально. Для этого производится процесс заряда аккумулятора. Производится замер зависимости тока и напряжения от времени. Энергия, накопленная в ЛИБ вычисляется по закону Джоуля-Ленца. Сопоставлением энергии и напряжения и дальнейшим преобразованием величины энергии в SoC получаем необходимую табличную зависимость. В данной работе в качестве образца была взята ЛИБ с номинальной емкостью 400 мА ч . Рабочий диапазон напряжений был взят в виде 3,5 В – 4,2 В, что соответствует неполному циклу работы, преимущество которых было описано в п 1.2. Тогда зависимость энергетического уровня заряда от напряжения выглядит как показано на Рисунок 14. 1 y = -0,9408x2 + 8,6619x - 18,765 SOC 0,8 0,6 0,4 0,2 0 3,4 3,5 3,6 3,7 3,8 3,9 4 4,1 4,2 Напряжение, В Рисунок 14 – Зависимость SoC от напряжения ЛИБ Таким образом, из эксперимента получено, что эта зависимость может быть аппроксимирована уравнением 2 порядка вида: SoCe AU 2 BU C , где (2.7) U – напряжение на ЛИБ без учета падения на внутреннем сопротивлении; A, B, C – коэффициенты аппроксимации. 34 Для расчетов требуются также параметры E0 и Emax . Для простоты E0 был принят за ноль. Это всегда можно сделать, т.к. энергия аддитивна. Тогда Emax легко определить интегрированием мощности в эксперименте. Т.к. данные в эксперименте дискретны, интегрирование заменяется суммированием: Emax I i (U i rI i )ti . (2.8) i На каждой итерации по времени происходит выполнение следующего алгоритма: 1. Вычисляется значение тока заряда: I I Pi I Cj , i (2.9) j где I Pi – ток i-го производителя, I Cj – ток j-го потребителя. Полученное значение может быть положительным, что соответствует заряду, или отрицательным, что соответствует разряду. 2. Вычисляется новое значение уровня заряда: SoCe (t t ) SoCe (t ) I U ( SoCe (t )) t . Emax (2.10) 3. Вычисляются потери для дальнейшего использования при оценке КПД: EL (t t ) EL (t ) I 2r t . (2.11) 2.4.3 Модель суперконденсатора Ключевой характеристикой СК является зависимость емкости от напряжения. В модели используется дифференциальная емкость, поэтому именно она измеряется в эксперименте. Для проведения эксперимента было разработано измерительное устройство [26]. Оно основано на импульсном 35 источнике тока. Данный источник заряжает СК постоянным током, одновременно ведется запись зависимости напряжения от времени. Источник тока построен на основе микросхемы LM46000 [27]. Это микросхема импульсного источника напряжения. В качестве обратной связи используется сигнал с датчика тока (Рисунок 15). Рисунок 15 – Структурная схема обратной связи источника тока Микросхема LM46000 представляет собой понижающий преобразователь напряжения. Основные характеристики представлены в таблице: Таблица 3 – Параметры микросхемы LM46000 Параметр Значение Входное напряжение, В 3,5 – 60 Выходное напряжение, В 1 – 28 Порог обратной связи, В 1 Ограничитель тока, А 1,05-1,56 Сопротивление внутренних ключей в 419, 231 открытом состоянии, мОм Частота преобразования, кГц 200 – 2200 36 Из таблицы видно, что схема имеет физическое ограничение по току в 1,5 А, при котором срабатывает защита внутри микросхемы. Целесообразно ограничиться средним током 1 А, т.к. импульсы тока существенно превышают среднее значение. В качестве датчика тока используется микросхема AD8211 [28], усиливающая напряжение на шунтирующем сопротивлении 0,1 Ом. Микросхема имеет фиксированный коэффициент усиления 20 В/В. Напряжение с датчика тока и с вывода под СК поступает на аналого-цифровой преобразователь (АЦП) управляющего МК ATmega128. Разрядность АЦП составляет 10 бит, а опорное напряжение 5 В. Оцифрованное напряжение пересылается на ПК с помощью модуля UART МК и преобразователя UARTUSB. Программа приема данных считывает поступающие данные и формирует CSV файл с зависимостью напряжения от времени. Полученный файл затем обрабатывается в специально написанной программе. Эта программа выделяет из файла значения напряжения и времени. Затем производится вычисление производной по времени. Емкость вычисляется из следующих соображений: дифференциальная емкость по определению: С где dq , dU (2.12) q – заряд; U – напряжение. Из определения электрического тока получаем: I dq dU C . dt dt (2.13) Тогда емкость можно вычислять по формуле: C I dU 37 . dt (2.14) Ток в эксперименте поддерживается постоянным, поэтому в эксперименте получаются значения производной по времени. Поскольку для СК характерна зависимость емкости от напряжения, производная усредняется по небольшим участкам, где ее еще можно считать постоянной. Для получения значения производной используется линейная регрессия по методу наименьших квадратов: du dt где N U i ti U i t i i i i N U i2 U i i i 2 , (2.15) N – число точек. В результате обработки экспериментальных данных получаются результаты, показанные на Рисунок 16. По оценкам случайная погрешность не превышает 1%. 500 Емкость, Ф 400 300 200 100 0 0,5 1 1,5 2 2,5 Напряжение, В Рисунок 16 – Результаты измерения емкости СК Многократное повторение эксперимента показало, что зависимость близка к линейной. В каждом эксперименте наблюдаются случайные отклонения, которые скорее всего связаны с проникновением ионов в поры электрода (см п. 1.3). Таким образом, целесообразно проводить усреднение полученных в нескольких экспериментах результатов. Также целесообразно провести линейную регрессию. 38 Таким образом, в данной работе зависимость емкости от напряжения моделируется линейной функцией вида: С АCU BC , где (2.16) Ас , BC – коэффициенты аппроксимации; U – напряжение на конденсаторе. В качестве величины, являющейся функцией состояния, выбрано напряжение. Подразумевается, что это напряжение идеального конденсатора, имеющего чисто реактивное сопротивление. Активное сопротивление моделируется отдельным резистором, включенным последовательно. Падение напряжения на активном сопротивлении при прохождении через СК тока моделируется отдельным резистором. Схема замещения СК представлена на Рисунок 17. Рисунок 17 – Схема замещения СК Эта схема не описывает реального поведения СК в процессах с быстро меняющимся током, однако подходит для описания установившихся процессов. Более точное моделирование возможно на основе эквивалентных схем, полученных методом импедансной спектроскопии [24]. Однако, данный подход требует существенных временных затрат и специальное оборудование для проведения эксперимента. Поэтому в рамках оценочного моделирования он не целесообразен. Для вывода данных, а также для получения нижней оценки ошибки моделирования (см. п. 3.4) требуется вычислять количество запасенной энергии. Для его нахождения воспользуемся выражением для приращения энергии: 39 1 2 E (U ) C (U U ) U U C (U )U 2 . 2 (2.17) Раскладывая это выражение в ряд Тейлора по U, опуская члены степени выше 1 и считая зависимость емкости от напряжения медленной получаем: dE (U ) C (U )UdU . (2.18) Интегрированием получаем: U U 0 0 E (U ) dE АCU ' BC U 'dU ' АC 3 BC 2 U U . 3 2 (2.19) Еще одним явлением является саморазряд. Она моделируются с помощью задания кривой мощности саморазряда: Pl Al exp BU l , (2.20) где Al и Bl – коэффициенты аппроксимации, а U – напряжение на конденсаторе. Итак, на каждом временном шаге происходит следующая последовательность действий: 1. Вычисляется значение тока заряда по формуле аналогичной (2.9). Полученное значение может быть положительным, что соответствует заряду, или отрицательным, что соответствует разряду. 2. Вычисляется новое значение напряжения: I Pl U (t t ) U (t ) t . C (U ) U C (U ) (2.21) 3. Вычисляются суммарные потери СК, которые хранятся для итоговой оценки КПД (см. п. 3.4): EL (t t ) EL (t ) Pl I 2r t . 40 (2.22) 2.5 Служебные процессы Помимо процессов моделирования осуществляются также вспомогательные процессы. К ним относятся операции ввода-вывода данных, взаимодействие с пользователем, если таковое необходимо, проверки закона сохранения энергии (ЗСЭ). Задача ввода-вывода информации возлагается на классы подсистем. Имеется общая папка, имя которой генерируется на основе даты и времени, для сохранения файлов отчетов. Отчеты могут представлять собой текстовые данные, CSV файлы, файлы Microsoft Excel или иные файлы. В реализованных в п. 3.3 классах используется работа с Excel таблицами, т.к. это позволяет создавать отчет, содержащий одновременно данные и наглядный материал (графики, диаграммы и т.п.). По окончанию расчета происходит проверка соблюдения ЗСЭ. Он сформулирован в следующем виде: E Es 2i Es1i Egi Eci Eli , i где i i (2.23) i Es1i – энергия в i-м накопителе в начале процесса; Es 2i – энергия в i-м накопителе в конце процесса; E gi – энергия, сгенерированная i-м производителем; Eci – энергия, потребленная i-м потребителем; Eli – энергия, потерянная в i-м узле. Относительная погрешность соблюдения ЗСЭ показывает, соблюдается ли указанная в требованиях планка погрешности, а также позволяет выявить наличие ошибок во вновь написанных подсистемах. 41 2.6 Отдельное моделирование сложных подсистем Зачастую возникает необходимость оценить параметры сложных подсистем. Расчет этих подсистем в рамках основной модели нецелесообразен, т.к. снижает скорость работы основной модели, поэтому они симулируются отдельно. Для этого используют SPICE модели или численно решают уравнения. В данной работе был рассчитан преобразователь, используемый для получения максимальной мощности. Ко входу преобразователя подключена СБ моделируемая в соответствии с п. 1.1. На выходе стоит конденсатор, напряжение на котором поддерживается постоянным. Задача моделирования – определить зависимость КПД преобразователя от напряжения на выходе. Так вместо расчета подсистемы в основной модели будет использоваться значение КПД для расчета мощности потребления от источника при известной мощности потребления подключенной ветви схемы. Схема преобразователя представлена на Рисунок 18. При замыкании ключа ток поступает от источника напряжения Vin, при размыкании ток продолжает течь за счет энергии, накопленной в индуктивности. Рисунок 18 – Схема понижающего импульсного преобразователя напряжения Система уравнений для схемы с замкнутым ключом по законам Кирхгофа имеет вид: q(t dt ) q(t ) I in I (t ) dt ; 1 q I ( t dt ) I ( t ) V I ( t )( R R ) out k L dt . L C 1 Для разомкнутого ключа: 42 (2.24) q(t ) q(t dt ) q(t ) I in dt ; C 1 1 I (t dt ) I (t ) L ( Rd RL ) I (t ) Vout dt. (2.25) Здесь q – заряд конденсатора С1; I – ток через дроссель с индуктивностью L; I in – ток СБ, полученный из ВАХ для напряжения на C1; Rd – сопротивление диода при заданном токе; RL – активное сопротивление индуктивного элемента. Для расчета вводится период Т управляющего сигнала и коэффициент заполнения k . Тогда В течение времени ton kT (2.26) происходит работа схемы с замкнутым ключом, поэтому расчет ведется по системе уравнений (2.24). Затем в течении времени toff (1 k )T (2.27) расчет ведется по системе (2.25). Далее цикл повторяется. При нулевых начальных условиях системе требуется некоторое время для выхода в установившийся режим. После этого КПД преобразования получается усреднением по периоду следующей величины: Eout IVout C1 . Ein I in q (2.28) Для получения наибольшего КПД для каждого конкретного выходного напряжения были посчитаны различные коэффициенты заполнения. Результаты представлены на Рисунок 19. По максимальным значениям КПД для каждого коэффициента заполнения построена кривая преобразователя в зависимости от выходного напряжения (Рисунок 20). 43 КПД Рисунок 19 – Рассчитанный КПД преобразователя Рисунок 20 – Зависимость КПД преобразователя от напряжения на выходе Из данного графика сделан вывод, что имеет смысл использовать буферный накопитель, на котором удерживать напряжение в диапазоне от 6 В до 14 В [29]. Для упрощенного моделирования этого преобразователя в дальнейшем можно использовать полученную характеристику. Таким образом, вместо моделирования переходных процессов, требующего существенного количества вычислительных ресурсов задача сводится к использованию табличной функции или ее аппроксимации, представляющей КПД для каждого выходного напряжения. 44 3 БЛОК МАНЕВРИРОВАНИЯ НАНОСПУТНИКА 3.1 Общее описание блока маневрирования В рамках данной работы разработана модель блока маневрирования наноспутника (БМН), разрабатываемого на кафедре космических исследований Самарского университета. БМН – двигательная установка, предназначенная для использования на борту наноспутника. Он используется для коррекции орбиты и для принудительного сведения аппарата с орбиты. Принцип действия БМН заключается в выбросе рабочего тела (вода или смесь воды и спирта) через одно из сопел. Рабочее тело находится в баке при давлении не более 3 атмосфер, что недостаточно для создания приемлемой тяги. Поэтому рабочее тело пропускается через испаритель. Это электрический нагреватель в виде медной трубки, по которой пропускается электрический ток. В нем рабочее тело частично испаряется, за счет чего происходит повышение давления, а в последствии и создаваемой БМН тяги. Основные требования к системе питания следующие: энергия – не менее 4, время работы – не более 30 с. Они обусловлены термодинамическими свойствами системы, а также особенностями процесса тестирования и принимаются в данной работе за данное. Одной из проблем БМН является система питания. Она должна выдавать суммарно необходимую энергию за промежуток не более максимального. Из таблицы видно, что средняя мощность источника питания данного нагревателя должна быть не менее 133 Вт. Для штатных ЛИБ с номинальным напряжением 3,6 В это соответствует току 37 А для параллельной батареи, 18,5 А – для батареи с двумя аккумуляторами последовательно и 9,2 А для четырех аккумуляторов последовательно. Такое большое импульсное значение тока приведет к значительному снижению ресурса АКБ [30]. Одним из возможных решений данной проблемы является использование буферного накопителя энергии [29]. В качестве такого накопителя в данной работе выступает СК. 45 Данный тип накопителей не имеет специфических требований к заряду, как, например, ЛИБ (см п. 1.2), что упрощает процесс разработки зарядного устройства. Полный цикл заряда можно провести за время нахождения на освещенной части орбиты, что обычно составляет порядка 30-50 минут. В этом случае средняя мощность потребления системы питания БМН от бортовой сети составит порядка 1,3-2,2 Вт, что является приемлемой нагрузкой. 3.2 Выбор суперконденсатора Для системы питания БМН был проведен анализ существующих СК. Выбор делался на основе следующих факторов: массовая плотность энергии, объемная плотность энергии, максимальный ток и количество ячеек в батарее. Большинство производителей делят СК на серии с различным назначением: питание малопотребляющей электроники и для силовых устройств. Первый тип оптимизирован для длительного хранения энергии и не рассчитан на большие значения тока потребления, а также имеют емкость не более 100 Ф (365 Дж энергии при максимальном напряжении), поэтому в данной работе они не рассматривались. Второй тип имеет меньшие ограничения по току, а также большие значения емкости: от 100 Ф до 3,5 кФ. Использование СК с емкостью более 2 кФ нецелесообразно из-за их большой массы. В Таблица 4 приведены характеристики СК, подпадающих под указанные требования. Максимальное напряжение у всех моделей равно 2,7 В. По указанным данным были рассчитаны величины энергии, которыая запасается в СК, количество СК для обеспечения заданной энергии, а также массы и объемы батарей. Нагрузкой является нагреватель, сопротивление которого мало меняется с течением процесса разряда, т.к. температурный коэффициент сопротивления меди составляет 3,8 103 K 1 , а температура меняется в пределах 100 К. СК нецелесообразно продолжать разряжать при низком напряжении, т.к. ток падает пропорционально напряжению, а мощность – квадратично. За нижнюю границу напряжения взято значение 1 В. 46 Таблица 4 – Характеристики доступных СК Наименование Емкость, Ток, Ф А BCAP350 350 34 BCAP650 650 BCAP1200 Длина, Диаметр, мм мм 63 61 33 88 160 52 61 1200 110 260 74 61 BCAP1500 1500 140 280 85 61 BCAP2000 2000 170 360 102 61 BCAP150 150 40 32 50 25 SCCV60B107MRB 100 53 20 60 18 SCCX50B207VSB 200 96 40 50 22 SCCY62B307VSB 300 104 77 62 35 SCCY68B407VSB 400 174 87 68 35 Таким образом, доступная Масса, г энергия может быть оценена по приближенной формуле: E где C 2 2 U max U min , 2 (3.1) U max – максимальное напряжение, равное в данном случае 2,7 В; U min – минимальное напряжение. Число СК в батарее определяется следующим выражением: E n , Ecap 47 (3.2) где E – требуемая энергия, равная в данном случае 4 кДж; Ecap – энергия одного СК. Результаты расчетов представлены в Таблица 5. Таблица 5 – Энергетические характеристики батарей СК Наименование Запасенная Доступная Число СК Масса, Объем, энергия, Дж энергия, Дж в батарее г см3 BCAP350 1276 1101 4 252 209 BCAP650 2369 2044 2 320 320 BCAP1200 4374 3774 2 520 520 BCAP1500 5468 4718 1 280 280 BCAP2000 7290 6290 1 360 360 BCAP150 547 472 9 288 288 SCCV60B107 365 314 13 260 260 SCCX50B207 729 629 7 280 280 SCCY62B307 1094 943 5 385 385 SCCY68B407 1458 1258 4 348 348 Кроме того, на основе данных об энергии, массе и объеме получены значения объемной плотности энергии: V где E , V (3.3) V – суммарный объем батареи. Также получена массовая плотность энергии: m 48 E , m (3.4) где m – суммарная масса батареи. Результаты вычислений представлены в Таблица 6 Таблица 6 – Плотности энергии СК Наименование Объемная плотность Массовая плотность энергии, Дж/см3 энергии, Дж/г BCAP350 21,1 17,5 BCAP650 13,7 12,8 BCAP1200 17,6 14,5 BCAP1500 19,1 16,8 BCAP2000 21,3 17,5 BCAP150 19,2 14,7 SCCV60B107 20,6 15,7 SCCX50B207 33,1 15,7 SCCY62B307 15,8 12,3 SCCY68B407 19,2 14,5 Из таблиц видно, что разные модели близки по характеристикам. СК с малой емкостью становятся нецелесообразными из-за большого числа ячеек в батарее, что создает сложности с размещением в корпусе наноспутника. СК с большой также нецелесообразны, т.к. их габариты не позволяют размещать их рядом с баком или на платах. Таким образом, были выбраны конденсаторы BCAP350. В батарее имеет смысл использовать 4-5 штук. 3.3 Реализация системы питания Система питания БМН должна обеспечивать заряд батареи СК. Источником энергии является основные АКБ аппарата или в случае 49 нахождения на освещенной части орбиты нагрузку берет на себя зарядное устройство АКБ. Поскольку напряжение СК меняется в широких пределах (от практически нуля до 2,7 В на СК), заряд должен вестись с регулированием тока. Кроме того, для выравнивания нагрузки на бортовую сеть необходимо снижать уровень тока при высоком напряжении СК, чтобы снизить потребляемую мощность. Например, при напряжении 2 В на каждом СК и зарядном токе 1 А батарея из 5 СК будет потреблять 10 Вт, что неприемлемо. Поэтому зарядное устройство представляет собой импульсный источник тока с регулируемым значением тока. Он основан на микросхеме импульсного понижающего источника напряжения LM46000. Для регулирования тока вместо напряжения обратная связь была модифицирована так же, как и в измерительном устройстве, описанном в п. 2.4.3. Для заряда СК в последовательной батарее в реальном устройстве необходимо учитывать, что емкости и саморазряд отдельных ячеек батареи различны. Это связанно с неидеальностью производства. Разница может составлять порядка 5%, что невелико для одного цикла заряда-разряда, однако за счет различий саморазряда разница может накапливаться и достигать существенных значений. Поэтому необходима балансировка. Существуют различные методы балансировки: пассивные и активные [31]. Пассивные заключаются в сбросе лишней энергии на сопротивление, подключенное параллельно каждому СК. Данный метод нецелесообразен на борту наноспутника, т.к. приводит к потере энергии. Активная балансировка подразумевает детектирование превышения напряжения на одной или нескольких ячейках батареи. В этом случае излишки тока также сбрасываются через параллельное сопротивление. Данный подход приводит к потере энергии только в момент балансировки, а не постоянно, как в пассивном подходе. В данной работе была применена модификация активной схемы. В данном случае при значительном различии напряжений на ячейках выбирается ячейка с наибольшим напряжением и ток заряда обводится сразу на 50 следующую ячейку. Схема данной системы показана на примере батареи из двух СК на Рисунок 21. В штатном режиме заряда замкнут ключ SW2, а SW1 и SW3 разомкнуты. Таким образом ток течет последовательно через оба конденсатора. Если напряжение на C1 превышает напряжение на C2, то включается режим балансировки: замыкается ключ SW1. Ток течет от источника питания PWR сразу к С2. Если же напряжение выше на С2, то балансировка происходит следующим образом: замыкается SW3, а SW2 и SW1 размыкаются. Так ток течет через C1 и далее сразу на общий провод. SW2 на позволяет C2 разряжаться. Таким образом минимизируются потери: они есть только на активном сопротивлении ключей, которое мало, а также на диоде. Диод можно заменить на еще один ключ с малым сопротивлением, однако это не целесообразно, т.к. величина тока заряда не велика: максимальный ток 1 А достигается только в случае заряда в состоянии глубокого разряда (0 В – 0,5 В). В качестве ключей используются МДП транзисторы. Для управления используются вспомогательные транзисторы и логические схемы, предотвращающие одновременное открытие SW2 и SW3. Рисунок 21 – Схема балансировки батареи СК 3.4 Постановка эксперимента Поскольку главной задачей системы питания БМН является обеспечение питания нагревательного элемента испарителя, основной эксперимент заключается в разряде уже заряженной батареи СК на нагреватель. Схема 51 экспериментального исследования процесса разряда приведена на Рисунок 22. Главной целью эксперимента является подтверждение правильности расчетов. Рисунок 22 – Схема эксперимента по разряду батареи СК на нагревательный элемент В эксперименте батарея СК C1-C5 разряжается на нагреватель Rн. Последовательно с цепью включен датчик тока DA1. В качестве датчика тока используется микросхема ACS756SCA-050B [32]. Принцип действия данной микросхемы основан на эффекте Холла. Выходной сигнал – напряжение – линейно зависит от протекающего тока. Коэффициент указанной зависимости 40 мВ/А. В схеме также присутствуют сопротивления линий подводящих проводов, показанных в виде Rл. Показанное на схеме включение измерительного прибора позволяет уменьшить влияние наличия сопротивления линии на результаты измерений. В качестве измерительного устройства выступает регистрирующий осциллограф GDS-72304. Данный прибор позволяет сохранять диаграмму напряжении на двух каналах с временем процесса до 100 с. Поскольку измеряемые величины имеют достаточно большие амплитуды (10 В для напряжения и 2 В для тока), не использовался предусилитель. 52 3.5 Результаты эксперимента С помощью описанной в п. 6.4 установки было проведено экспериментальное исследование работы системы. Все конденсаторы в батарее были заряжены до 2,7 В, затем было произведено замыкание ключа. Полученные зависимости напряжения и тока от времени показаны на Рисунок 23 и Рисунок 24 соответственно. 12 Напряжение, В 11 10 9 8 7 6 5 4 0 5 10 15 20 25 30 Время, с Рисунок 23 – Напряжение при разряде батареи СК на нагреватель 30 Ток, А 25 20 15 10 5 0 5 10 15 20 25 30 Время, с Рисунок 24 – Ток при разряде батареи СК на нагреватель Полученные данные использованы в п. 7 для верификации модели. 53 3.6 Моделирование На основе схемы, изображенной на Рисунок 22 построена модель, состоящая из батареи СК, сопротивления соединительных проводов, дополнительного к внутреннему сопротивлению, а также нагревателя. Для нагревателя используется модель нагрузки в виде постоянного сопротивления. Для моделирования процесса заряда используется модель источника постоянного тока. Практические исследования показали, что моделирование схемы балансировки нецелесообразно, т.к. моделируется один цикл, начинающийся с низкого, но уже сбалансированного напряжения. Параметры СК принимаются одинаковыми. За основу модели батареи принята модель, реализованная в п. 2.4.3. Характеристики, которые были введены в этом пункте, остаются неизменными. К ним добавляется число СК в батарее. Для расчета мощности утечки, напряжения и внутреннего сопротивления производится умножение полученных выражений на число СК в батарее. Сопротивление использованного в БМН нагревателя составляет 0,428 Ом. Кроме того, для демонстрации возможностей разработанного программного комплекса, было дополнительно выполнено моделирование расширенной системы питания блока маневрирования. Для этого к описанной выше модели была добавлена СБ с мощностью 6 Вт, MPPT преобразователь, описанный в п. 2.6, ЛИБ, описанная в п. 2.4.2. ЛИБ также была преобразована в батарею из четырех ячеек последовательно. Ток заряда батареи СК был установлен 0,5 А. 54 4 РЕЗУЛЬТАТЫ И ВЕРИФИКАЦИЯ В расширенной модели (п. 3.6) наибольший интерес представляют собой напряжения на двух батареях. Полученная зависимость напряжения от времени для ЛИБ представлена на Рисунок 25, для батареи СК – на Рисунок 26. Напряжение, В 14,9 14,85 14,8 14,75 14,7 14,65 0 200 400 600 800 1000 1200 1400 1600 1800 Время, с Напряжение, В Рисунок 25 – Результаты моделирования ЛИБ 14 12 10 8 6 4 2 0 0 200 400 600 800 1000 Время, с 1200 1400 1600 1800 Рисунок 26 – Результаты моделирования СК Из рисунков видно, что при низком напряжении на СК СБ способна обеспечивать заряд обеих батарей. Однако, при увеличении напряжения растет и потребляемая мощность, поэтому СБ становится недостаточно и начинает тратиться энергия АКБ. В конце расчета модели была осуществлена проверка ЗСЭ (см. п. 2.5). Отклонение составило 2,45 Вт. Учитывая, что от СБ было получено 10,16 кДж, относительное отклонение составляет 2,4 104 . Это совпадает по порядку с заданной величиной порядка, исходя из которой вычисляется шаг по времени. 55 Проведение эксперимента для сравнения с данной моделью не представляется возможным в рамках данной работы в связи с отсутствием оборудования. Верификация модели велась на основе данных системы питания БМН, полученных в экспериментах (п. 2.4.3 и п. 3.5) и расчетами по основной модели (п. 3.6). Относительна разница результатов эксперимента и модели для зависимости напряжения батареи от времени при процессе заряда и разряда батареи СК на нагреватель с приведены на Рисунок 27 и Рисунок 28 Относительная разница соответственно. 0,06 0,05 0,04 0,03 0,02 0,01 0 0 100 200 300 400 Время, с 500 600 Рисунок 27 – Относительная разница результатов эксперимента и модели для заряда батареи СК Относительная разница 0,1 0,08 0,06 0,04 0,02 0 0 5 10 15 Время, с 20 25 30 35 Рисунок 28 – Относительная разница результатов эксперимента и модели для разряда батареи СК на нагреватель Видно, что данные расходятся не более чем на 10%. Основными источниками погрешности являются предположительно неточное совпадение начальных условий, а также зависимость сопротивления от температуры, не учтенная в модели. 56 ЗАКЛЮЧЕНИЕ Разработана модель системы питания наноспутника, предназначенная для оценочной симуляции. Она состоит из абстрактного уровня и уровня моделей компонентов. Абстрактный уровень включает алгоритмы, позволяющие симулировать систему питания с минимальными априорными знаниями об этой системе. На уровне компонентов находятся модели каждого компонента системы по отдельности. Они не обладают информацией о других компонентах, поэтому могут быть легко заменены без изменения остальных моделей. Модель обладает достаточно слабыми ограничениями, что позволяет симулировать с ее помощью большинство существующих и перспективных систем питания. Модель реализована на языке C# для увеличения гибкости и обеспечения совместимости с программным кодом для микроконтроллеров, если симуляция такового потребуется. В рамках работы реализованы модели для солнечных батарей, литий-ионных батарей, суперконденсаторов, нагрузки. Также описаны способы получения параметров модели. В рамках данной работы построена модель реально существующей системы питания блока маневрирования наноспутника. На ее примере проведена верификация. В ходе верификации выявлено, что отклонение результатов симуляции от эксперимента составляет не более 10% для упрощенной модели нагрузки, не учитывающей изменение параметров со временем. Данная модель может быть использована для симуляции различных перспективных систем питания на этапе концептуального проектирования и на начальных стадиях разработки. Кроме того, модель может быть применена в образовательных целях. 57 СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 1 Joshi R. A modular, efficient, low cost power system for pico-satellite applications [Text] // 63rd International Astronautical Congress. – Naples, Italy, 2012. – P. 1-10. 2 Small satellite thermal design, test, and analysis [Text] / M.F. Diaz-Aguado [et al.] // Proc. of SPIE. – 2006. – Vol. 6221. – P. 1-12. 3 Detailed analysis of the energy yield of systems with covered sheet-andtube PVT collectors [Text] / R. Santbergen [et al.] // Solar Energy. – 2010. – Vol. 84(5). – P. 867-878. 4 Solar cell efficiency tables (Version 45) [Text] / M.A. Green [et al.] // Progress in Photovoltaics: Research and Applications. – 2015. – Vol. 23. – P. 1-9. 5 Dahbi S. Design and sizing of electrical power source for a nanosatellite using photovoltaic cells [Text] / S. Dahbi, A. Aziz, S. Zouggar // 3rd International Renewable and Sustainable Energy Conference. – Marrakech, Morocco, 2015. –P. 1-6. 6 Esram T. Comparison of Photovoltaic Array Maximum Power Point Tracking Techiques [Text] / T. Esram, P.L.Chapman // IEEE Transactions on Energy Conversion. – 2007. – Vol.2(22). – P. 439-449. 7 Abdi B. EMB Charger and MPPT Merging in Micro-Satellites [Text] / B. Abdi, S.M.M. Mirtalaei, R. Ghasem // International Journal of Machine Learning and Computing. – 2013. – Vol. 4(3). – P. 318-321. 8 Schoeman R.M. Negating temperature on photovoltaic panels [Text] / R.M. Schoeman, A.J. Swart, C. Pienaar // Africon. – Pointe-Aux-Piments, Mauritius, 2013. – P. 1-5. 9 Тимченко С.Л. Влияние спектра излучения на характеристические кривые солнечной батареи [Текст] / С.Л. Тимченко, О.Ю. Дементьева, Н.А. 58 Задорожный // Физическое образование в ВУЗах. – 2015. – Т. 21, вып. 1. – С. 3-13. 10 Gowdiperi K. Modelling and Dynamic Analysis of Solar Photovoltaic Generation [Text] / K. Gowdiperi, G. Ramu // International Journal of Engineering Research & Technology. – 2013. –Vol.2(10). – P. 3035-339. 11 Design Considerations and Ground Testing of Electric Double-Layer Capacitors as Energy Storage Components for Nanosatellites [Text] / M. Alkali [et al.] // Journal of Small Satellites. – 2015. – Vol. 2(4). – P. 387-405. 12 Проектирование системы электропитания наноспутников семейства SamSat [Текст] / Д.Д. Давыдов [и др.] // Известия ВУЗов. Приборостроение. – 2016. – Т. 59, вып. 6. – С. 459-464. 13 Автоматизация испытаний аккумуляторных химических батарей [Текст] / С. Губин [и др.] // Современные технологии автоматизации. – 1998. – Вып. 1 – С. 92-93. 14 Characteristics of Rechargeable Batteries [Электронный ресурс] // Texas Instruments. – Электрон. дан., 2012. – URL: http://www.ti.com/lit/an/snva533/ snva533.pdf (дата обращения: 01.06.2017). 15 Компактные решения для систем подзарядки Li-Ion [Электронный ресурс] // Compel. – Электрон. дан., 2016. – URL: http://www.compel.ru/lib/ne/ 2008/6/9-kompaktnoe-reshenie-dlya-sistem-podzaryadki-li-ion-i-li-polimernyihakkumulyatorov (дата обращения: 01.06.2017). 16 Lithium-ion battery life [Электронный ресурс] // SAFT batteries. – Электрон. дан. – URL: http://www.saftbatteries.com/force_download/ li_ion_battery_life__TechnicalSheet_en_0514_Protected.pdf (дата обращения: 01.06.2017). 17 Техническая документация на BCAP350 [Электронный ресурс] // Maxwell technologies. – Электрон. дан. – URL: http:// www.maxwell.com/images/ documents/bcseries_ds_1017105-4.pdf (дата обращения: 01.06.2017). 59 18 Двойной слой и электродная кинетика [Текст] / А.Н. Фрумкин [и др.]. – М.: Наука, 1981. – 376 с. 19 Ilakkiya A. Power Production in Satellites by utilising Solar Energy using Ultracapacitors [Text] / A. Ilakkiya , J. Suganya // International Conference on Innovative trends in Electronics Communication and Applications. – 2014. – P. 163168. 20 Ortiz-Rivera E.I. Maximum power point tracking using the optimal duty ratio for DC-DC converters and load matching in photovoltaic applications [Text] // Applied Power Electronics Conference and Exposition. – Austin, TX, USA, 2008. – P. 987-991. 21 Electronic Circuit & System Simulation Methods [Text] / L. Pillage. – McGraw-Hill Inc., 1999. – 328 p. 22 Nagel L.W. The Life of SPICE [Text] // Joint Meeting of the Princeton ACM and IEEE Computer Society. – 2004. – P. 1-8. 23 Biolek D. Computer Simulation of Continuous-Time and Switched Circuits: Limitations of SPICE-Family Programs and Pending Issues [Text] / D. Biolek, J. Dobes // Radioelektronika, 2007. 17th International Conference. – Brno, Czech Republic, 2007. – P. 1-11. 24 Impedance-Based Simulation Models of Supercapacitors and Li-Ion Batteries for Power Electronic Applications [Text] / S. Buller [et al.] // IEEE transactions on industry applications. – 2005. – Vol. 3(41). – P. 742-747. 25 Jin F. Comparison Study of Equivalent Circuit Model of Li-Ion Battery for Electrical Vehicles [Text] / F. Jin, H. Yongling, W. Guofu // Research Journal of Applied Sciences, Engineering and Technology. – 2013. – Vol. 6(20). – P. 37563759. 26 Кумарин А.А. Применение суперконденсаторов в качестве промежуточного хранилища энерии в системе энергоснабжения наноспутника [Текст] // Материалы секции "Промышленная 60 электроника" 53-й международной научной студенсечкой конференции. – Новосибирск, Россия, 2015. – С. 15. 27 Техническая документация на LM46000 [Электронный ресурс] // Texas Instruments. – Электрон. дан. – URL: http:// www.ti.com/lit/ds/symlink/ lm46000.pdf (дата обращения: 01.06.2017). 28 Техническая документация на AD8211 [Электронный ресурс] // Analog Devices. – Электрон. дан. – URL: http:// www.analog.com/media/en/ technical-documentation/data-sheets/AD8211.pdf (дата обращения: 01.06.2017). 29 Кумарин А.А. Измерение параметров электролитических двухслойных конденсаторов [Текст] // Материалы секции "Инструментальные методы и техника экспериментальной физики" 55-й международной научной студенческой конференции. – Новосибирск, Россия, 2017. – С. 37. 30 Impact of Periodic Current Pulses on Li-Ion Battery Performance [Text] / F. Savoye [et al.] // IEEE Transactions on Industrial Electronics. – 2012. – Vol. 9(59). – P. 3481-3488. 31 Ionescu C. Investigations on Balancing Circuits for Supercapacitor Modules [Text] / C. Ionescu, A. Vasile, R. Negroiu // 39th International Spring Seminar on Electronics Technology. – 2016. – P. 521-526. 32 Техническая документация на ACS756SCA-050B [Электронный ресурс] // Allegro. – Электрон. дан. – URL: http://media.digikey.com/pdf/ Data%20Sheets/Allegro%20PDFs/ACS754xCB-130.pdf 01.06.2017). 61 (дата обращения: ПРИЛОЖЕНИЕ А Исходные коды модели public void calculate(double t) { double local_time = 0; double period = t / 200; long iteration_counter = 0; while (local_time < t) { iteration_counter++; double maxdt = 1; if (critical_consumers != null) { foreach (var e in critical_consumers) { double tmp = e.get_max_dt(work_mode.cv, storages[0].get_u()); if (tmp < maxdt) maxdt = tmp; } } if (noncritical_consumers != null) { foreach (var e in noncritical_consumers){ double tmp = e.get_max_dt(work_mode.cv, storages[0].get_u()); if (tmp < maxdt) maxdt = tmp; } } if (produsers != null) { foreach (var e in produsers) { double tmp = e.get_max_dt(work_mode.cv, storages[0].get_u()); if (tmp < maxdt) maxdt = tmp; } } if (storages != null) { foreach (var e in storages) { double tmp = e.get_max_dt(work_mode.cc, produsers[0].get_i(storages[0].get_u())); if (tmp < maxdt) maxdt = tmp; } } double tmpp = pwr_manager.get_max_dt(); if (tmpp < maxdt) maxdt = tmpp; try { pwr_manager.control(local_time); if (critical_consumers != null) { foreach (var e in critical_consumers) { e.calc(work_mode.cv, storages[0].get_u(), maxdt); e.report(local_time,period); } } if (noncritical_consumers != null) { foreach (var e in noncritical_consumers) { 62 e.calc(work_mode.cv, storages[0].get_u(), maxdt); e.report(local_time, period); } } if (produsers != null) { foreach (var e in produsers) { e.calc(work_mode.cv, storages[0].get_u(), maxdt); e.report(local_time, period); } } if (storages != null) { foreach (var e in storages) { e.calc(work_mode.cc, null, maxdt); e.report(local_time, period); } } } catch (Warning_out_of_limits e) { … } local_time += maxdt; } if(produsers!=null) foreach(var e in produsers)e.finish_report(local_time); if(critical_consumers!=null) foreach (var e in critical_consumers) e.finish_report(local_time); if (noncritical_consumers != null) foreach (var e in noncritical_consumers) e.finish_report(local_time); if (storages != null) foreach (var e in storages) e.finish_report(local_time); } public static calculator create_diploma_charge_calc() { cc_power_source ccps = new cc_power_source(1); Produser pr = ccps; EDLC_v3_battery.EDLC_v3_param p = new EDLC_v3_battery.EDLC_v3_param(100, 2.7, 0.3, 0.004, 2.331E-14, 10.42,62,269); EDLC_v3_battery edlc = new EDLC_v3_battery(5,0.4, p, new Produser[] { pr }, null); edlc.name = "EDLC battery"; edlc.do_reports = true; Storage st = edlc; ccps.s = st; return new calculator(null, null, new Produser[] { pr }, new Storage[] { st }, new power_manager()); } public class simple_load : Load { 63 double resistanse; public simple_load(double np, double nv){ this.nominal_power = np; this.nominal_voltage = nv; resistanse = nv * nv / np; } public simple_load(double r) { this.nominal_power = 0; this.nominal_voltage = 0; resistanse = r; } public override double get_i(double u) { if ((switchable==false) || enabled) return u / resistanse; else return 0; } public override void calc(work_mode wm, object parameters, double dt) { switch (wm) { case work_mode.cc: //param: current total_consumed += resistanse * (Double)(parameters) * (Double)(parameters) * dt; last_current = (Double)(parameters); last_voltage = (Double)(parameters) * resistanse; return; case work_mode.cv://param: voltage total_consumed += (Double)(parameters) * (Double)(parameters) / resistanse * dt; last_current = (Double)(parameters)/resistanse; last_voltage = (Double)(parameters); return; } throw new Error_unhandled_mode(String.Format("Unhandled mode: {0}", wm.ToString())); } public override double get_max_dt(work_mode wm, object param) { return Double.PositiveInfinity; } public override double get_lost() { return 0; } public override double get_u(double cur) { if ((switchable == false) || enabled) return resistanse * cur; else throw new Warning_inapropriate_mode("..."); } public override double get_consumed() { return total_consumed; } } 64 public class EDLC_v3 : ACB { public class EDLC_v3_param { public double maxi, maxu, minu, esr, L_A, L_B, C_A, C_B; public EDLC_v3_param(double mi, double mu, double miu, double esr, double L_A, double L_B, double C_A, double C_B) { maxi = mi; maxu = mu; minu = miu; this.esr = esr; this.L_A = L_A; this.L_B = L_B; this.C_A = C_A; this.C_B = C_B; } public double getC(double u) { return C_A * u + C_B; } } double u, u_init; double last_cur = 0, last_lose_power = 0; double leaked = 0; private Excel.Application excel_object; private Excel.Worksheet work_sheet; private Excel.Workbook book; private int w_index; EDLC_v3_param p; public EDLC_v3(double initial_voltage, EDLC_v3_param p, Produser[] connected_produsers, Consumer[] connected_consumers) { last_report_time = -1; u = initial_voltage; this.p = p; this.u_init = initial_voltage; this.connected_consumers = connected_consumers; this.connected_produsers = connected_produsers; } public double get_u(double I) { throw new Exception(); } public override double get_u() { return u + last_cur * p.esr; } public override double max_pwr() { return p.maxi * u; } public override void calc(work_mode wm, object parameters, double dt) { switch (wm) { case work_mode.cv: throw new NotImplementedException(); case work_mode.cc: double cur_in = 0, cur_out = 0; 65 if (connected_produsers != null) foreach (var e in connected_produsers) cur_in += e.get_i(get_u()); if (connected_consumers != null) foreach (var e in connected_consumers) cur_out += e.get_i(get_u()); last_cur = cur_in - cur_out; input_e += cur_in * get_u() * dt; output_e += cur_out * get_u() * dt; double leak = get_leak_power(); u += (last_cur / p.getC(u) - leak / u / p.getC(u)) * dt; last_lose_power = (leak + last_cur * last_cur * p.esr); total_lost += last_lose_power * dt; leaked += leak * dt; if (get_u() < p.minu) throw new Warning_no_energy_in_storage("Too low voltage to continue"); if (Math.Abs(last_cur) > p.maxi) throw new Warning_out_of_limits("Too high current thrugh EDLC!"); break; default: throw new Error_unhandled_mode(String.Format("Unhandled mode: {0}", wm.ToString())); } if (u > p.maxu) { throw new Warning_out_of_limits("Capacitor overvoltage"); } else if (u < 0) throw new Warning_out_of_limits("Negative voltage!!!"); else if (u < p.minu) throw new Warning_no_energy_in_storage("Voltage too low"); } public override double get_max_dt(work_mode wm, object param) { if (wm == work_mode.cc) if (last_cur == 0) { if (total_lost != 0) return 5; return p.getC(u) * u * 1E-8 / p.maxi; } else return Math.Abs(p.getC(u) * u * 0.001 / last_cur); if (wm == work_mode.cv) throw new Warning_inapropriate_mode(""); throw new Exception();//todo ... } public override double max_pwr(double i) { throw new NotImplementedException(); } public override double get_stored() { return p.C_A * Math.Pow(u, 3) / 3 + p.C_B / 2 * u * u; } public override double get_initial_stored() { return p.C_A * Math.Pow(u_init, 3) / 3 + p.C_B / 2 * u_init * u_init; } 66 public override double get_lost() { return total_lost; } double get_leak_power() { return p.L_A * Math.Exp(p.L_B * u); } public override double get_leaked() { return leaked; } public override void report(double time, double period) { if (do_reports == false) return; if (work_sheet == null) { try { excel_object = new Excel.Application(); book = excel_object.Workbooks.Add(); work_sheet = book.ActiveSheet; w_index = 2; work_sheet.Cells[1, 1].Value = "time"; work_sheet.Cells[1, 2].Value = "voltage"; work_sheet.Cells[1, 3].Value = "lose power"; } catch (Exception e) { Console.WriteLine(e.Message); } } if ((time - last_report_time > period) || ((time > 45 * 60) && ((time - last_report_time > 1/*period/10*/)))) { last_report_time = time; work_sheet.Cells[w_index, 1].Value = time; work_sheet.Cells[w_index, 2].Value = get_u(); work_sheet.Cells[w_index++, 3].Value = last_lose_power; if (get_u() > 2.64) { get_u(); } } } public override void finish_report(double time) { if (do_reports == false) return; Excel.ChartObjects chart = work_sheet.ChartObjects(Type.Missing); Excel.ChartObject[] chartObj = { chart.Add(10, 70, 400, 150), chart.Add(10, 230, 400, 150) }; Excel.Chart Chart1 = chartObj[0].Chart; chartObj[0].Select(); Chart1.ChartType = Excel.XlChartType.xlXYScatter; Excel.SeriesCollection seriesCollection1 = Chart1.SeriesCollection(); Excel.Series series1 = seriesCollection1.NewSeries(); series1.XValues = work_sheet.Range["A2:A" + w_index.ToString()]; series1.Values = work_sheet.Range["B2:B" + w_index.ToString()]; 67 series1.ChartType = Excel.XlChartType.xlXYScatter; Excel.Axis Axis1 = Chart1.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary); Axis1.HasTitle = true; Axis1.AxisTitle.Text = "voltage"; Axis1 = Chart1.Axes(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary); Axis1.HasTitle = true; Axis1.AxisTitle.Text = "time"; Excel.Chart Chart2 = chartObj[1].Chart; chartObj[1].Select(); Chart2.ChartType = Excel.XlChartType.xlXYScatter; Excel.SeriesCollection seriesCollection2 = Chart2.SeriesCollection(); Excel.Series series2 = seriesCollection2.NewSeries(); series2.XValues = work_sheet.Range["A2:A" + w_index.ToString()]; series2.Values = work_sheet.Range["C2:C" + w_index.ToString()]; series2.ChartType = Excel.XlChartType.xlXYScatter; Axis1 = Chart2.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary); Axis1.HasTitle = true; Axis1.AxisTitle.Text = "loses"; Axis1 = Chart2.Axes(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary); Axis1.HasTitle = true; Axis1.AxisTitle.Text = "time"; string path_excel = Element.main_dir + "\\" + name + ".xlsx"; if (System.IO.Directory.Exists(Element.main_dir) == false) System.IO.Directory.CreateDirectory(Element.main_dir); book.SaveAs(Filename: path_excel, AccessMode: Excel.XlSaveAsAccessMode.xlNoChange); System.Threading.Thread.Sleep(10); excel_object.Visible = true; } } public class LI_ION_V1 : ACB { public LI_ION_PARAMS param; double soc, soc0, last_cur; public class LI_ION_PARAMS { public double rint; public double minu, maxu, maxi, minsoc; public double A, B, C; public double E0; public double soc_by_u(double u) { return A * u * u + B * u + C; } 68 public double u_by_soc(double soc) { double v2 = (-B + Math.Sqrt(B * B - 4 * A * (C-soc))) / 2 / A; if (v2 > 0) return v2; throw new Exception(); } public LI_ION_PARAMS(double r, double A, double B, double C, double E0) { rint = r; this.A = A; this.B = B; this.C = C; this.E0 = E0; maxi = 2 * E0 / 3600 / 3.6; maxu = 4.3; minsoc = 0.1; minu = u_by_soc(minsoc); } } public LI_ION_V1(LI_ION_PARAMS p, double init_voltage, Produser[] connected_produsers, Consumer[] connected_consumers) { this.connected_consumers = connected_consumers; this.connected_produsers = connected_produsers; param = p; soc0 = param.soc_by_u(init_voltage); if (soc0 > 1) soc0 = 1; soc = soc0; last_cur = 0; } public override void calc(work_mode wm, object parameters, double dt) { switch (wm) { case work_mode.cv: throw new NotImplementedException(); case work_mode.cc: double cur_in = 0, cur_out = 0; foreach (var e in connected_produsers) cur_in += e.get_i(get_u()); foreach (var e in connected_consumers) cur_out += e.get_i(get_u()); last_cur = cur_in - cur_out; input_e += cur_in * get_u() * dt; output_e += cur_out * get_u() * dt; soc += last_cur * param.u_by_soc(soc) * dt / param.E0; total_lost += last_cur * last_cur * param.rint * dt; if (soc < param.minsoc) throw new Warning_no_energy_in_storage("Too deep discharge"); if (Math.Abs(last_cur) > param.maxi) throw new Warning_out_of_limits("Too high current thrugh battery!"); 69 break; default: throw new Error_unhandled_mode(String.Format("Unhandled mode: {0}", wm.ToString())); } if (soc > 1) { throw new Error_out_of_range_param("Battery overvoltage"); } else if (soc < 0) { throw new Error_out_of_range_param("Negative voltage!!!"); } else { if (soc < param.minsoc) { throw new Warning_no_energy_in_storage("Voltage too low"); } } } public override double get_initial_stored() { return soc0 * param.E0; } public override double get_leaked() { return 0; } public override double get_lost() { return total_lost; } public override double get_max_dt(work_mode wm, object param) { if (last_cur == 0) return 0.001; else return Math.Abs(delta * this.param.E0 * (2 * this.param.A * this.param.u_by_soc(soc) + this.param.B) / last_cur); } public override double get_stored() { return soc * param.E0; } public override double get_u() { return param.u_by_soc(soc) + last_cur * param.rint; } public override double max_pwr() { throw new NotImplementedException(); } public override double max_pwr(double i) { throw new NotImplementedException(); } } 70