Pandapower

Материал из Wiki Power System
Перейти к: навигация, поиск

Pandapower — это Python, BSD-лицензированный инструмент для анализа режимов работы энергосистем, предназначенный для автоматизации статических и квазистатических аналитических и оптимизационых расчётов для сбалансированных энергосистем. Данная библиотека предоставляет возможность расчетов потоков мощности, оптимизации потоков мощности, оценку состояния и расчёт токов коротких замыканий согласно стандарту IEC 60909. Дополнительные усовершенствования алгоритма решения включают в себя возможность моделирования постоянных токовых нагрузок, сетей с несколькими балансирующими узлами и проверки связности. Модель сети pandapower основана на электрических элементах, таких как линии электропередачи, трансформаторы с двумя или тремя обмотками и идеальные выключатели. Все элементы могут быть определены с помощью параметров паспортной таблицы и внутренне обработаны с использованием схем замещения моделей. Структура табличных данных, используемая для определения электрических сетей, основана на библиотеке Python-а pandas, что позволяет удобно обрабатывать входные и выходные параметры. Реализация на языке Python упрощает использование pandapower и обеспечивает удобное расширение сторонних библиотек.

Общие сведения

Основные возможности предоставляемые библиотекой:

  1. Расчёт установившегося режима.
  2. Расчёт токов короткого замыкания.
  3. Оценка состояния по данным измерений.
  4. Визуализация схем.
  5. Топологический анализ на основе библиотеки NetworkX языка Python. Например, можно найти кратчайший путь между двумя узлами, выяснить, связаны ли две области в сети друг с другом или существуют ли циклы в сети. Полный список всех алгоритмов NetworkX представлен на оффициальном сайте.

Краткий обзор pandapower

Библиотека pandapower реализована на языке Python, гарантируя свободную доступность и гибкое расширение с другими библиотеками с открытым исходным кодом. Поскольку он разработан как межплатформенная библиотека, его можно легко применять на вычислительных кластерах и распараллелить без каких-либо ограничений лицензии. Все реализации тщательно проверяются и, по возможности, проверяются путем сравнения с инструментами коммерческих программных обеспечений. pandapower была успешно применена в нескольких исследованиях сети[1],[2],[3],[4]. Благодаря обширной библиотеке моделей и удобному интерфейсу Python, pandapower имеет относительно низкий входной барьер для новых пользователей для выполнения основного анализа энергетических систем, что также делает его отличным инструментом для образовательных целей.

Инструмент pandapower для анализа режимов работы (УР и КЗ) энергосистемы с открытым исходным кодом направлен на автоматизацию статического и квазистатического анализа и оптимизации в сбалансированных трёхфазных энергосистемах. Pandapower включает в себя модели статических для электрических элементов, которые могут быть определены общими параметрами паспортной таблицы. Все модели энергосистемы тщательно протестированы на уровне коммерческих программных обеспечений и обеспечивают стандартное моделирование энергетических систем. Идеальная модель выключателя, как она реализована в pandapower, насколько нам известно, нигде в литературе не была описана или реализована в любом другом инструменте с открытым исходным кодом. Удобные функции для задания элементов, а также библиотеки стандартных типов облегчают пользователю автоматизацию создания сетей, что позволяет удобно импортировать сетевые данные из разных форматов. Структура табличных данных позволяет легко получать и анализировать входные и выходные параметры. Для исследований потока мощности pandapower использует jit ускоренную версию алгоритма PYPOWER Newton-Raphson в качестве алгоритма решения по умолчанию. Дополнительные усовершенствования были сделаны для алгоритма рещения PYPOWER, а именно возможности моделировать постоянные токовые нагрузки, асимметричные сопротивления или сети с несколькими балансирующими узлами. В дополнение к расчёту потоков мощности и оптимальных потоков мощности, pandapower является первым инструментом анализа энергосистемы с открытым исходным кодом, который включает оценку состояния, а также расчёт короткого замыкания в соответствии со стандартом IEC 60909. Кроме того, интерфейс для исследования топологии позволяет пользователю выполнять настраиваемое исследование графов в электрической сети. pandapower также включает в себя библиотеку графики для удобной визуализации энергосистем. Эта эксклюзивная функция сетевого анализа в сочетании с обширной библиотекой моделей делает pandapower ценным и инновационным вкладом в существующие инструменты с открытым исходным кодом.

Модели сети

Любая функция анализа электроэнергетической системы, такая как расчёт потоков мощности или короткого замыкания, основана на математической модели электрической сети. Существуют различные подходы к тому, как инструменты энергосистемы позволяют пользователю задать эту модель. Обычно используемым подходом является модель узлов и ветвей, которая определяет сеть как совокупность узлов, которые связаны между собой определенными ветвями. Ветви моделируются стандартной схемой замещения и используются для моделирования многополюсных элементов, таких как линии или трансформаторы. К узлам приписываются узловая мощность или проводимость для моделирования однополюсных элементов, таких как нагрузки, генераторы или конденсаторные батареи. Модель узлов и ветвей также может свободно параметризоваться и она не привязана к конкретным моделям электрических сетей. С другой стороны, пользователю необходимо рассчитать сопротивления для каждой ветви и суммировать узловые мощности для каждого узла вручную по данным паспортных таблиц элементов сети. Это может быть громоздким и подверженным ошибкам, особенно для сложных элементов, таких как трансформаторы с переключателями отпаек (РПН или ПБВ) или трёхобмоточных трансформаторов.

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

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

Структура данных

Рис. 1 — Схематический обзор представления элементов в pandapower

pandapower основан на табличной структуре данных, где каждый тип элемента представлен таблицей, содержащей все параметры для конкретного элемента и результирующую таблицу, которая содержит конкретные результаты для различных методов анализа. Структура табличных данных основана на библиотеке Python-a pandas[5]. Он позволяет хранить переменные любого типа данных, так что электрические параметры могут храниться вместе с параметрами состояния и метаданными, такими как имена или описания. Таблицы можно легко расширить и настроить, добавив новые столбцы, не влияя на функциональность pandapower. Все встроенные методы pandas могут использоваться для эффективного чтения, записи и анализа данных сети и результатов. Сеть pandapower (сокращенно net) представляет собой словарь Python, который содержит всю информацию о сети (см. Рис.1). Самое главное, он включает в себя элемент и результирующую таблицу для каждого типа элементов, такие как линия, трансформатор, переключатель и т. д. Таблица элементов содержит все входные параметры, заданные пользователем, тогда как таблица результатов используется функциями потокораспределения или оптимальным потокораспределением для хранения результатов. Кроме того, net включает словари, которые содержат данные стандартного типа и параметры сети, такие как частота, сетевое имя или номинальная мощность в системе о.е.

Модели электрических элементов

Библиотека pandapower включает в себя множество различных электрических моделей, некоторые из которых недоступны ни в одном другом инструменте с открытым исходным кодом. Подробные формулы для расчёта электрических параметров доступны в документации pandapower[6]. Удобное пошаговое задание каждого элемента сети производится с помощью функции create. Более подробное описание элементов представленных в библиотеке приведено здесь.

Анализ электрической сети

Рис. 2 — Анализ электрической сети в pandapower

Благодаря возможности управлять настройками расчёта установившегося режима, оптимизации потокораспределения, оценкой состояния и токов коротких замыканий, pandapower обеспечивает все наиболее часто используемые функции статического сетевого анализа. Структура данных pandapower содержит общие параметры паспортной таблицы для удобной параметризации сетевых элементов. Для проведения анализа электрической сети все элементы модели должны быть переведены в их эквивалентное электрическое представление. Этот перевод выполняется путем преобразования внутренней структуры данных на основе элементов в модель узлов и ветвей, как показано на рисунке 2.

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

Расчёт установившегося режима

Рис. 3 — Вычислительная скорость pandapower, PYPOWER и MATPOWER для файлов MATPOWER

Алгоритм расчёта установившегося режима pandapower основан на методе Ньютона-Рафсона[7]. Реализация была первоначально основана на PYPOWER, но была улучшена в отношении надёжности расчёта, времени выполнения и удобства использования. Внутренние параметры потокораспределения, такие как тип узла (база, PV или PQ узел) или преобразования в о.е., выполняются автоматически с помощью pandapower. Это улучшает удобство пользователя и снижает риск несвязных входных данных. Библиотека pandapower предлагает три разных метода для инициализации начальных приближений комплексного вектора напряжения для установившегося режима в электрической сети переменного тока:

  • результаты предыдущего расчёта установившегося режима;
  • расчёт установившегося режима для случая постоянного тока;
  • алгоритм плоского старта.

Инициализация с использованием результатов расчёта потокораспределения для случая постоянного тока рекомендуется использовать при расчёте сложнозамкнутых сетей, где могут быть большие разности углов напряжений между шинами, что может привести к расхождению итерационного процесса в случае плоского старта. С другой стороны, в радиальных распределительных сетях опорный угол напряжения диктуется внешней сетью, так что сдвиги углов соответствующих напряжений на трансформаторах не влияют на результаты расчёта потокораспределения. Вот почему pandapower дает возможность пренебрегать углами напряжений, чтобы обеспечить более быструю и надежную сходимость в радиальных распределительных сетях. Дополнительный шаг преобразования, который необходим для преобразования модели pandapower в модель узлов и ветвей, и последующего отображения результатов. Это вызывает дополнительное потребление ресурсов по сравнению с программами, которые работают непосредственно на модели узлов и ветвей, такие как MATPOWER или PYPOWER.

С другой стороны, некоторые части алгоритма решения pandapower были ускорены с использованием оперативного компилятора (jit) numba[8]. Чтобы определить разницу вычислительного времени, на рисунке 3 показано время вычисления для разных стандартных файлов MATPOWER. Можно увидеть, что pandapower быстрее, чем PYPOWER во всех случаях из-за ускоренного jit построения матрицы Якоби и других аспектов метода [1]. Можно также заметить, что, хотя расходы на преобразование занимают более половины времени вычисления для небольших сетей, его доля значительно уменьшается для крупных сетей. В то время как pandapower медленнее, чем MATPOWER для небольших сетей, она быстрее для сетей среднего и крупного масштаба, даже включая время необходимое на преобразование в модель узлов и ветвей.

По умолчанию преобразование в модель узлов и ветвей выполняется перед каждым расчётом установившегося режима. Однако, если несколько последовательных расчётов установившихся режимов выполняются для одной и той же сети, которые отличаются только значениями узловых мощностей, то повторное преобразование становится излишним. По этой причине pandapower предлагает возможность повторно использовать модель узлов и ветвей и узловые точки матрицы проводимости из предыдущих расчётов потоков мощности. Эта функция позволяет ускорить работу приложений, таких как квазистатическое моделирование временных рядов или оптимизация эвристической мощности. В дополнение к алгоритму Newton-Raphson, применяемого по умолчанию, pandapower также обеспечивает реализацию прокрутки назад / вперед[9].

Пример расчётов установившегося режима представлен здесь.

Оптимизация потоков мощности

pandapower позволяет решать проблемы оптимальных потоков мощности с переменным и постоянным током (OPF) через сопряжение PYPOWER. Фиксированные ограничения задаются как максимальная загрузка трансформаторов и линий вместо абсолютных пределов для потоков мощности. Ограничения узлов включают в себя максимальную и минимальную величину напряжения. Пределы активной и реактивной мощности могут быть определены для PV / slack-элементов, таких как внешние сети и генераторы, но также и для PQ-элементов, таких как нагрузки и статические генераторы.

Оценка состояния

pandapower включает в себя модуль оценки состояния, который позволяет оценить электрическое состояние сети, имея дело с неточностями и ошибками в данных измерений. Метод оптимизации по методу взвешенных наименьших квадратов минимизирует разницу средневзвешанного квадрата разницы между измеренными значениями и соответствующими уравнениями потоков мощности[9]. Pandapower поддерживает измерения шины, линии и трансформатора. Измерения шины могут быть заданы для значений напряжения или активной и реактивной мощности. Измерения на линиях или трансформаторах могут быть заданы для активных и реактивных потоков мощности на обоих концах ветви. Более подробное описание приведено здесь.

Расчёт тока короткого замыкания в соответствии со стандартом IEC 60909

Стандарт IEC 60909[10] определяет правила для расчёта некоторых характерных значений короткого замыкания, таких как начальный ток короткого замыкания, ударный ток короткого замыкания или длительный ток короткого замыкания. В pandapower реализован расчёт начальных токов короткого замыкания для симметричных трехфазных коротких замыканий, а также двухфазных коротких замыканий. Необходимые поправочные коэффициенты реализуются в pandapower в соответствии со стандартом и автоматически применяются при преобразовании в модель узлов и ветвей. Дополнительные входные параметры, необходимые для расчёта внутренних сопротивлений внешних сетей или синхронных генераторов, определяются в таблицах элементов вместе с параметрами по умолчанию.

Описание интерфейса функций

Функция для расчёта тока короткого замыкания:

pandapower.shortcircuit.calc_sc(net, fault='3ph', case='max', lv_tol_percent=10, topology='auto', ip=False, ith=False, tk_s=1.0, kappa_method='C', r_fault_ohm=0.0, x_fault_ohm=0.0, branch_results=False)
  1. Входные аргументы
    • net (pandapowerNet) pandapower Network
    • fault (string, 3ph) — вид короткого замыкания.
      1. «3ph» — трёхфазное короткое замыкание.
      2. «2ph» — двухфазное короткое замыкание.
      3. «1ph» — однофазное короткое замыкание.
    • case (string, «max»)
      1. «max» — расчёт максимального тока.
      2. «min» — расчёт минимального тока.
    • lv_tol_percent (int, 10) — допуск по напряжению в низковольтных сетях.
      1. 6 для 6 % допуска
      2. 10 для 10 % допуска
    • ip (bool, False) — Если значение True, то выполняется расчёт апериодической составляющей тока короткого замыкания.
    • Ith (bool, False) — Если True, то выполняется расчёт теплового тока короткого замыкания.
    • topology (string, «auto») define option for meshing (only relevant for ip and ith)
      1. «meshed» — Расчёт выполняет для сложнозамкнутой сети.
      2. «radial» — Расчёт выполняет для радиальной сети.
      3. «auto» — Для каждого узла выполняется топологический анализ для оценки путей протекания тока короткого замыкания.
    • tk_s (float, 1) failure clearing time in seconds (only relevant for ith)
    • r_fault_ohm (float, 0) — Активное сопротивление в точке корокткого замыкания, [Ом].
    • x_fault_ohm (float, 0) — Реактивное сопротивление в точке корокткого замыкания, [Ом].
    • consider_sgens (bool, True) — Следует ли учитывать подпитку тока короткого замыкания от статических генераторов.
  2. Результирующие таблицы.
    • res_bus_sc — Таблица с результатми расчёта по узлам.
      1. ikss_ka — Расчётный ток короткого замыкания, [кА].
      2. ip_ka — Расчётное значение апериодической составляющей, [кА].
      3. ith_ka — Расчётное значение теплового тока короткого замыкания, [кА].
    • res_line_sc — Таблица с результатми расчёта по линиям электрпередачи. Показывает максимальный ток по линиям.
    • res_trafo_sc — Таблица с результатми расчёта по трансформаторам. Показывает максимальный ток.

Топологический анализ сети

pandapower предоставляет возможность исследования графа с использованием библиотеки Python NetworkX[11], предоставляя возможность переводить сети pandapower в графики NetworkX. Когда сеть транслируется в абстрактный граф, все анализы графов, реализованные в библиотеке NetworkX, могут использоваться для анализа структуры сети. Затем можно, например, найти подключенные компоненты или циклы в графе и перенести результаты в pandapower. Длина линии может быть преобразована как вес ребра на графе, так что можно найти кратчайший путь между двумя шинами или измерить расстояния между шинами в сети. Перевод сети в граф также можно настроить в зависимости от варианта использования. Например, строки с отключенными выключателями по умолчанию не передаются в графы, так как между этими узлами нет электрического соединения. Кроме того, pandapower также предоставляет некоторые предопределенные алгоритмы для решения общих проблем исследования графа в электрических сетях, таких как поиск всех неиспользуемых шин или поиск гальванически подключенных шин.

Алгоритмы топологического анализа, включённые в pandapower:

  1. calc_distance_to_bus — Алгоритм расчёта кратчайшего расстояние между шиной источника и всеми подключенными к ней шинами.
  2. connected_component — Находит все шины в графике NetworkX, которые подключены к определенной шине.
  3. connected_components — Находит все связанные острова в электрической сети.
  4. unsupplied_buses — Находит все шины не подключенные к базисному узлу (внешней сети).
Описание интерфейса функций
pandapower.topology.calc_distance_to_bus(net, bus, respect_switches=True, nogobuses=None, notravbuses=None)
  1. Входные аргументы:
    • net (pandapowerNet) — Анализируемая электрчиеская сеть.
    • bus (integer) — Индекс в таблице bus стартовой шины.
    • respect_switches (boolean, True) — Опционально. Если значение True, то Рассматриваются только влюченные ветви.
  2. Выходные аргументы
    • dist — Возвращает pandas series которая содержит все расстояния от стартовой шины до всех подключенных шин.
pandapower.topology.connected_component(mg, bus, notravbuses=[])
  1. Входные аргументы
    • mg (NetworkX graph) — NetworkX граф или MultiGraph, который представляет электрическую сеть.
    • notravbuses (set) — Опционально. Индексы линий, которые не учитыаются при анализе.
  2. Выходные аргументы
    • cc (generator) — Возвращает генератор, который содержит все группы узлов соединённых между собой.
pandapower.topology.connected_components(mg, notravbuses=set([]))
pandapower.topology.unsupplied_buses(net, mg=None, in_service_only=False, slacks=None, respect_switches=True)
  1. Входные аргументы
    • net (pandapowerNet) — Электрчиеская сеть.
    • mg (NetworkX graph) — Опционально. Граф NetworkX представляющий электрическую сеть.
    • in_service_only (boolean, False) — Опционально. Учитываются только включенные узлы.
    • slacks (set, None) — Опционально. Список узлов, которые считаются базисными узлами. Если нет, то учитываются только узлы отмеченные как внешняя сеть ext_grid.
    • respect_switches (boolean, True) — Опционально. Как рассматривать выключатели, только в случае отсутствия графа NetworkX в переменной mg.
  2. Выходные аргументы
    • ub (set) — Возвращает pandas series которая содержит все неподключенные шины к базисному узлу.

Список использованных источников

  1. A. Scheidler, L. Thurner, and M. Braun, "Heuristic optimisation for automated distribution system planning in network integration studies, " IET Renewable Power Generation, vol. 12, no. 5, pp. 530—538, April 2018.
  2. J.-H. Menke, J. Hegemann, S. Gehler, and M. Braun, "Heuristic monitoring method for sparsely measured distribution grids, " International Journal of Electrical Power & Energy Systems, vol. 95
  3. H. Wang, M. Kraiczy, S. Wende-von Berg et al., "Reactive power coordination on strategies with distributed generators in distribution networks, " in . 1st International Conference on Large-Scale Grid Integration of Renewable Energy in India, September 2017
  4. W. McKinney, "pandas: a foundational python library for data analysis and statistics, " Python for High Performance and Scientific Computing, 2011.
  5. Оффициальный сайт pandapower.
  6. "IEEE recommended practice for industrial and commercial power systems analysis (brown book), " IEEE Std 399—1997, Aug 1998.
  7. S. K. Lam, A. Pitrou, and S. Seibert, "Numba: a LLVM-based Python JIT compiler, " 2015.
  8. J.-H. Teng, "A direct approach for distribution system load flow solutions, " IEEE Transactions on Power Delivery, vol. 18, no. 3, pp. 882—887, July 2003.
  9. 9,0 9,1 A. Abur and A. Exposito, ´ Power System State Estimation: Theory and Implementation, ser. Power Engineering (Willis). CRC Press, 2004.
  10. "IEC 60909-0:2016: Short-circuit currents in three-phase a.c. systems — part 0: Calculation of currents, " International Standard, 2016.
  11. A. A. Hagberg, D. A. Schult, and P. J. Swart, «Exploring network structure, dynamics, and function using NetworkX,» in Proceedings of the 7th Python in Science Conference (SciPy2008), Pasadena, CA USA, Aug. 2008, pp. 11-15.