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

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

В статье приведено описание выполнения процедуры оценки состояния электрической сети с использованием библиотеки pandapower.

Теоретические основы

Оценка состояния может не сходиться, если измерения содержат плохие данные. Поэтому перед запуском процесса оценки необходимо удалить плохие данные. Эта проблема решена в pandapower с помощью тестирования χ2 и нормированным тестом остатков[1]. Тест χ2 способен определить вероятность того, что плохие измерения существуют в наборе измерений, или если топология электрической сети не соответствует данным измерений. Нормализованный тест остатков может принимать информацию об испытании χ2, вычислять нормированные остатки и удалять измерение с самым высоким остатком. Цикл повторяется до тех пор, пока не пройдет проверка плохих данных или никакие измерения не будут удалены.

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

[math] m_{min} = 2 n -k. [/math]

где [math]n [/math] число узлов сети; [math]k[/math] — количество базисных узлов.

Для обеспечения хорошего качества расчётов требуются избыточные каналы данных измерений. Приблизительно количество канало данных, с учётом избыточности можно оценить как:

[math] m \approx 4 \cdot n. [/math]

Каждое измеритеьное устройство имеет различную точность измерений. Поэтому при выполнении оценки состояния каждому измерению присваивается значение точности в виде стандартного отклонения. Типичные погрешности измерения составляют: 1 % для измерений напряжения и 1-3 % для измерения мощности.

Задание каналов данных измерений

В оценке состояния используются следующие типы элементов:

  • «v» измерения напряжения (in per-unit)
  • «p» измерения активной мощности, [кВт];
  • «q» измерения реактивной мощности, [квар];
  • «i» измерения тока в линиях электропередачи [А].

Типы элементов для которых можно задать каналы данных измерений:

  • «bus» узлы (шины);
  • «line» линия электропередачи;
  • «transformer» трансформаторы.
Тип элемента Тип канала данных измерений
Узел u, p, q
Линия электропередачи i, p, q
Трансформатор i, p, q

Функция «create_measurement» создания канала данных измерений определена следующим образом:

pandapower.create.create_measurement(net, meas_type, element_type, value, std_dev, bus, element=None, check_existing=True, index=None, name=None)

Обязательные входные аргументы:

  • meas_type (string) — Тип канала данных измерений. Возможные строковые значения «v», «p», «q», «i».
  • element_type (string) — Тип элемента на котором выполняется измерение. Возможные строковые значения: «bus», «line», «transformer».
  • value (float) — Численное значение измерения. Генерация в узлах задаётся с плюсом, а нагрузка с минусом.
  • std_dev (float) — Величина стандартного отклонения, в тех же единицах измерения, что и числовое значение «value».
  • bus (int) — Номер узла «index». Параметр определяет положения измерения для линий/трансформаторов (bus == from_bus: measurement at from_bus; same for to_bus). The bus can also be «from» or «to» if the element_type is «line» or «hv»/«lv» if «transformer».
  • element (int, None) — Индекс измеряемого элемента, если параметр «element_type» имеет значение «line» или «transformer».

Дополнительные, необязательные, параметры:

  • check_existing (bool) — Проверка и замена плохих данных измерений. Установка значения false повышает производительность, но может приводить к использованию в оценке состояния плохих данных.
  • name (str, None) — Название канала измерений.

Выходные аргументы:

  • (int) Номер измерения.

Запуск оценки состояния

Оценка состояния может быть использована с помощью функции-обертки «estimate», что предотвращает необходимость использования объекта и функций класса «state_estimation». Его можно импортировать из «evaluation.state_estimation» .

pandapower.estimation.estimate(net, init='flat', tolerance=1e-06, maximum_iterations=10, calculate_voltage_angles=True, ref_power=1000000.0)

Входные аргументы:

  • net — Имя сети.
  • init (string) — Выбор алгоритма оценки стартовых значений напряжений. Значение по умолчанию flat.
    1. «flat» Плоский старт устанавливает значение модуля 1.0 о.е. и угла для всех узлов.
    2. «results» используются значения из расчёта установившегося режима res_bus_est, если доступно.
    3. «slack» В качестве начальных приближений напряжений используется напряжения базисного узла.

Необязательные входные аргументы:

  • tolerance — (float) — Критерий остановки итерационного процесса. По умолчанию установлено значение 1e-6.
  • maximum_iterations — (integer) — Максимально количество итераций. По умолчанию установлено значение 10.
  • calculate_voltage_angles — (boolean) — Учитывать абсолютные углы напряжений и фазовые сдвиги в трансформаторах, если параметр init установлен в значение slack. По умолчанию True.

Результат выполнения функции:

  • successful (boolean) — Возвращает true, если оценка состояния выполнена успешно.


Пример запуска оценки состояния
pp.create_measurement(net, "v", "bus", 1.006, .004, узел1)      # V в узле 1
pp.create_measurement(net, "v", "bus", 0.968, .004, узел2)      # V в узле 2

pp.create_measurement(net, "p", "bus", -501, 10, узел2)         # P в узле 2
pp.create_measurement(net, "q", "bus", -286, 10, узел2)         # Q в узле 2

pp.create_measurement(net, "p", "line", 888, 8, bus=узел1, element=line1)    # Pline (узел 1 -> узел 2) из узла 1
pp.create_measurement(net, "p", "line", 1173, 8, bus=узел1, element=line2)   # Pline (узел 1 -> узел 3) из узла 1
pp.create_measurement(net, "q", "line", 568, 8, bus=узел1, element=line1)    # Qline (узел 1 -> узел 2) из узла 1
pp.create_measurement(net, "q", "line", 663, 8, bus=узел1, element=line2)    # Qline (узел 1 -> узел 3) из узла 1

После подготовки данных каналов измерений можно запустить расчёт оценки состояния:

success = estimate(net, init="flat")
V, delta = net.res_bus_est.vm_pu, net.res_bus_est.va_degree

Результирующие значения модулей напряжений содержаться в переменной V, углы напряжений delta, и индикатор успешносит расчёта success. Значения узловых мощностей хранятся в таблицах net.res_bus_est.p_kw и net.res_bus_est.q_kvar. Параметры по линиям доступны в таблице res_line.

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

success_rn_max = remove_bad_data(net, init="flat")
V_rn_max, delta_rn_max = net.res_bus_est.vm_pu, net.res_bus_est.va_degree

В случае, если необходимо просто знать, есть ли вероятность ошибок (возможно, вероятность неисправности может быть скорректирована), можно отдельно выполнить тест X-квадрат. Если тест обнаруживает возможность cбоях в данных, то значение переменной члена класса bad_data_present будет принимать истинное значение, которое передается в выходную переменную success_chi2:

success_chi2 = chi2_analysis(net, init="flat")

Использованные источники

  1. A. Abur and A. Exposito, ´ Power System State Estimation: Theory and Implementation, ser. Power Engineering (Willis). CRC Press, 2004.