Тема: Модуль расчета токов КЗ в сетях любых классов напряжения на Python3
Модуль расчета токов КЗ в сетях любых классов напряжения на Python3
Уважаемые коллеги!
Предлагаю Вашему вниманию разработанный на интерпретируемом языке высокого уровня Python 3 Модуль расчета токов КЗ в сетях любых классов напряжения (МРТКЗ)
МРТКЗ можно скачать по ссылке:
https://github.com/aspirmk/mrtkz
Удобнее всего скачать и использовать Python3 из Anaconda
https://www.anaconda.com/products/individual
64-битная версия для Windows (последняя версия на конец ноября 2020)
https://repo.anaconda.com/archive/Anaco … x86_64.exe
Вводное описание МРТКЗ:
- Реализован на языке высокого уровня Python 3.7 и выше.
- В модуле применяются математические библиотеки numpy и scipy, в том числе используются разреженные матрицы и алгоритмы решения разреженных систем линейных алгебраических уравнений.
- Нахождение электрических параметров токов и напряжений в расчетной схеме модели осуществляется путем решения разреженной системы линейных алгебраических уравнений, которая формируется на основании 1-ого и 2-ого законов Кирхгофа.
- Методы узловых потенциалов, метод контурных токов не применяются.
- Размерность СЛАУ составляет 3*(nq+np+nn), где nq,np и nn - соответственно количество узлов, ветвей и несимметрий в модели: для каждого узла, ветви записываются по 3 уравнения для прямой, обратной и нулевой последовательности, а для несимметрий записывается по 3 уравнения - граничные условия. C учетом использования алгоритмов решения разреженных СЛАУ большая размерность СЛАУ не приводит к существенному падению производительности и повышенному потреблению оперативной памяти.
- Формирование расчетной модели сети, целесообразно оформлять в виде скриптов python3, например в среде Spyder (The Scientific Python Development Environment).
Основные возможности:
- Расчет электрических величин токов и напряжений при КЗ и обрывах в сетях любых классов напряжения и любой сложности, ограничения по количеству узлов, ветвей отсутствуют.
- Поддержка сложных повреждений, осуществляется путем совокупности нескольких КЗ и обрывов, но в одном узле может быть только одно КЗ, а на ветви только один обрыв.
- Поддержка простых ветвей с возможностью независимого задания Z1,Z2,Z0
- Поддержка ветвей с Э.Д.С. и возможностью независимого задания E1,E2,E0 (помимо Z1,Z2,Z0)
- Поддержка ветвей с поперечной емкостной проводимостью B1,B2,B0 (помимо Z1,Z2,Z0)
- Поддержка трансформаторных ветвей для которых необходимо задать (помимо Z1,Z2,Z0) коэф.трансформации и группу соединения обмоток стороны 2 (от 0 до 11), для стороны 1 предусматривается группа соединения обмоток Y или Yg. При этом правильно считаются токи и напряжения при КЗ за трансформатором Y/D.
- Поддержка взаимоиндукций нулевой последовательности между ветвями с возможностью независимого задания M12,M21
- Поддержка следующих видов КЗ и обрывов:
'A0','B0','C0' - металлические однофазные КЗ на землю или обрыв соответствующей фазы;
'A0r','B0r','C0r' - однофазные КЗ на землю через переходное сопротивление;
'AB','BC','CA' - металлические двухфазные КЗ или обрыв соответствующих фаз;
'ABr','BCr','CAr' - двухфазные КЗ через переходное сопротивление;
'AB0','BC0','CA0' - металлические двухфазные КЗ на землю;
'ABC' - трехфазное КЗ без земли или обрыв трех фаз;
'ABC0' - трехфазное КЗ на землю;
'N0' - Заземление в узле в схеме нулевой последовательности или обрыв по нулевой последовательности на ветви.
- Псевдотабличный вывод результатов расчетов по узлам, ветвям и несимметриям.
- Возможность получения конкретного параметра напряжения, тока по по узлам, ветвям и несимметриям с целью его дальнейшего использования в расчетах.
- На данный момент отсутствует возможность изменения расчетной схемы модели с помощью команд (Каскады, пром КЗ, отключения с или без заземления необходимо реализовывать корректировкой скрипта модели). Изменение электрических параметров ветвей, взаимоиндукций и несимметрий можно изменять с помощью методов edit, реализованных в соответствующих классах ветвей, взаимоиндукций и несимметрий.
Краткое руководство пользователя
1. Формирование модели.
1.1 Импорт Модуля МРТКЗ для использования реализованных в нем классов, методов и функций
import mrtkz3 as mrtkz
1.2 Создание (инициализация) модели, в которой будут хранится узлы, ветви, взаимоиндукции и несимметрии и взаимосвязь между ними
mdl=mrtkz.Model()
1.3 Создание узлов (не должны создаваться лишние узлы, в этом случае СЛАУ не будет решаться)
q1 = mrtkz.Q(mdl,'Название узла')
q2 = mrtkz.Q(mdl,'Название узла')
q3 = mrtkz.Q(mdl,'Название узла')
1.4 Создание ветвей
- Ветви источников питания (систем, генераторов станций и т.п.)
E1 = mrtkz.P(mdl,'Название ветви',0,q1,(Z1,Z2,Z0),E=(E1,E2,E0))
- Простые ветви
Z1 = mrtkz.P(mdl,'Название ветви',q1,q2,(Z1,Z2,Z0))
- Ветви с поперечной емкостной проводимостью
ZB1 = mrtkz.P(mdl,'Название ветви',q1,q2,(Z1,Z2,Z0),B=(B1,B2,B0))
- Трансформаторные ветви
T1 = mrtkz.P(mdl,'Название ветви',q2,q3,(Z1,Z2,Z0),T=(Ktr,GrT))
1.5 Создание взимоиндукций нулевой последовательности
M12 = mrtkz.M(mdl,'Название взимоиндукции',Z1,ZB1,M12,M21)
1.6 Создание несимметрий
- Заземление нейтрали трансформатора T1 Yg/D (например для пары обмоток 110/10)
NT1 = mrtkz.N(mdl,'Заземление нейтрали',q3,'N0')
- Обрыв трансформаторной ветви по нулевой последовательности (например для пары обмоток 110/35)
NT2 = mrtkz.N(mdl,'Обрыв нейтрали',T1,'N0')
- КЗ в узле
KZ1 = mrtkz.N(mdl,'Название КЗ',q2,'A0')
KZ2 = mrtkz.N(mdl,'Название КЗ',q3,'BCr',r=1.0)
- Обрыв ветви
O1 = mrtkz.N(mdl,'Название Oбрыва',Z1,'BC')
2. Расчет электрических величин токов и напряжений.
mdl.Calc()
3. Получение результатов.
3.1 Псевдотабличный вывод результатов расчета
- для узла
q1.res()
- для ветви со стороны 1-ого узла
ZB1.res1()
- для ветви со стороны 2-ого узла
ZB1.res2()
- для несимметрии
KZ1.res()
3.2 Получение конкретного параметра результата расчета в виде комплексного числа
KZ1.res('IA')
KZ1.res('U1')
KZ1.res('3I0')
3.3 Получение конкретного параметра результата расчета в требуемом виде
(Модуль - 'M', угол - '<f', активная составляющая - 'R', реактивная составляющая - 'X', строки 'R+jX' или 'M<f')
KZ1.res('IA','M')
KZ1.res('U1','M<f')
KZ1.res('ZAB','X')
Вопросы и предложения или описания найденных багов прошу оставлять в данной теме
Пример модели сети для двумя энергосистемами связанными двухцепной линией, в середине которых есть отпаечные ПС.
Предусматривается расчет однофазного переходного КЗ "на землю" А0 на шинах ВН PS1 через переходное сопротивление дуги 2,0 Ом.
#Импортирование модуля расчета ТКЗ (mrtkz3.py),
#который должен находиться в той же папке, где и настоящий файл
import mrtkz3 as mrtkz
#Создание расчетной модели
mdl=mrtkz.Model()
#Создание узлов
q1 = mrtkz.Q(mdl,'Sys1')
q2 = mrtkz.Q(mdl,'Sys2')
q3 = mrtkz.Q(mdl,'PS1')
q4 = mrtkz.Q(mdl,'PS2')
#Создание ветвей энергосистем
Sys1 = mrtkz.P(mdl,'Sys1',0,q1,(2j,2j,3j),E=(65000,0,0))
Sys2 = mrtkz.P(mdl,'Sys1',0,q2,(2j,2j,3j),E=(65000,0,0))
#Создание ветвей Воздушных линий
Line1 = mrtkz.P(mdl,'Sys1-PS1',q1,q3,(10j,10j,30j))
Line2 = mrtkz.P(mdl,'Sys1-PS2',q1,q4,(10j,10j,30j))
Line3 = mrtkz.P(mdl,'Sys2-PS1',q2,q3,(10j,10j,30j))
Line4 = mrtkz.P(mdl,'Sys2-PS2',q2,q4,(10j,10j,30j))
#Создание взаимоиндукций нулевой последовательности между Воздушными линиями
M12 = mrtkz.M(mdl,'L1-L2',Line1,Line2,15j,15j)
M34 = mrtkz.M(mdl,'L3-L4',Line3,Line4,15j,15j)
#Создание ветвей подстанций с трансформаторами с заземленными нейтралями
PS1 = mrtkz.P(mdl,'PS1',0,q3,(500,200j,30j))
PS2 = mrtkz.P(mdl,'PS2',0,q4,(500,200j,30j))
#Создание КЗ
KZ1 = mrtkz.N(mdl,'KZ',q3,'A0r',r=2.0)
#Формирование разряженной СЛАУ и расчет электрических параметров
mdl.Calc()
#Вывод результатов расчета для короткого замыкания
KZ1.res()
В результате расчета по вышеуказанной программе выводятся результаты расчета для точки КЗ, которые содержат симметричные, фазные и междуфазные значжения напряжений и токов в месте КЗ, а также значения токов по ветвям...
runfile('K:/work/mrtkzpy/mrtkz3test.py', wdir='K:/work/mrtkzpy')
Reloaded modules: mrtkz3
КЗ № 1 - KZ - A0r
В Узле № 3 - PS1
U1 = 48486 < -6.1 | U2 = 16780 < -165.2 | 3U0 = 85549 < -165.2
UA = 17297 < -75.2 | UB = 73284 < -127.2 | UC = 68318 < 128.8
UAB = 64103 < 40.5 | UBC = 111615 < -90.7 | UCA = 84412 < 124.1
Суммарный ток КЗ в Узле № 3 - PS1
I1 = 2883 < -75.2 | I2 = 2883 < -75.2 | 3I0 = 8648 < -75.2
IA = 8648 < -75.2 | IB = 0 < 141.3 | IC = 0 < 150.3
IAB = 8648 < -75.2 | IBC = 0 < 0.0 | ICA = 8648 < 104.8
Подтекание токов по ветвям
Ветвь № 3 - Sys1-PS1
I1 = 1459 < -73.4 | I2 = 1399 < -75.2 | 3I0 = 2898 < -75.2
IA = 3825 < -74.5 | IB = 430 < 114.7 | IC = 503 < 101.6
Ветвь № 5 - Sys2-PS1
I1 = 1459 < -73.4 | I2 = 1399 < -75.2 | 3I0 = 2898 < -75.2
IA = 3825 < -74.5 | IB = 430 < 114.7 | IC = 503 < 101.6
Ветвь № 7 - PS1
I1 = 97 < 173.9 | I2 = 84 < -75.2 | 3I0 = 2852 < -75.2
IA = 1004 < -80.3 | IB = 860 < -65.3 | IC = 1006 < -78.4