1 (Вчера 12:33:55 отредактировано aspirmk)

Тема: Модуль расчета токов КЗ в сетях любых классов напряжения на 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
+ tca

2

Re: Модуль расчета токов КЗ в сетях любых классов напряжения на Python3

Посмотрел код на гитхабе: весьма лаконично. Но все-таки не хватает docstrings для всех функций и членов классов.
И да, вы пытались верифицировать ваш модуль? В том смысле что сравнивали результаты расчета с тем же АРМ СРЗА (tkz3000), Rustab, Powerfactory, EnergyTKZ?
Не думали прикрутить какой-нибудь интерфейс? Просто заводить схему в терминале так себе удовольствие...

3 (2020-11-12 22:08:37 отредактировано zzz)

Re: Модуль расчета токов КЗ в сетях любых классов напряжения на Python3

непосредственно математику сами писали или взяли готовые модули?

4

Re: Модуль расчета токов КЗ в сетях любых классов напряжения на Python3

Постараюсь ответить на все вопросы:
1. Согласен, надо добавить ко всем классам, их методам и функциям описание по тексту модуля.
2. Провел сравнение результатов расчетов с АРМ СРЗА: по результатам расчета следующих видов КЗ - A0, BC, BC0 и A0 через переходное сопротивление 2,0 Ом получено полное совпадение расчетов - ампер в ампер, вольт в вольт...
3. Разрабатывать графический интерфейс пользователя пока не планирую, в любом случае количество строк кода в этом случае увеличится с настоящих меньше тысячи строк до нескольких десятков тысяч строк кода... Для этого есть коммерческие продукты с огромной стоимостью. Да надо быть очень внимательным при формировании модели и ничего не перепутать или не забыть.
4. Не надо набирать схему модели в командной строке интерпретатора python3, удобно набирать скрипт на языке python3 в текстовом редакторе копированием и вставкой и потом править, чтобы корректировать схему и вид и место КЗ.
5. Идея данного модуля возникла после прочтения 4-ого издания книги Теоретические основы электротехники за авторством К.С. Демирчана, Л.Р. Неймана, Н.В. Коровкина и В.Л. Чечурина. По сути дела для каждой ветви записывается 3-и уравнения по 2-ому закону Кирхгофа, соответственно для прямой, обратной и нулевой последовательностей, аналогично для каждого узла записывается 3-и уравнения по 1-ому закону Кирхгофа, а для несимметрий (КЗ или обрывов) записывается по 3-и уравнения - граничные условия, которые можно найти в любом учебнике по переходным процессам (например для однофазного КЗ А0 записывается 3-и уравнения по которым напряжение  фазы А равно 0 (Ua=0), а также равны нулю токи КЗ по неповрежденным фазам  (Ibk=0 и Iсk=0)).
6. Алгоритм формирования разряженной системы линейных алгебраических уравнений (СЛАУ) - моя разработка.
7. Для решения СЛАУ  используется широко известная и широко используемая и безусловно хорошо отлаженная библиотека python3 для научных расчетов - scipy, для которой не проблема решить разряженную  СЛАУ размерностью в несколько миллионов уравнений...

PS Если кто уже скачал с github модуль mrtkz3.py, скачайте заново, по результатам сравнения с АРМ СРЗА был выявлен и устранен один баг связанный с взаимоиндуктивностью нулевой последовательности

5

Re: Модуль расчета токов КЗ в сетях любых классов напряжения на Python3

Матрица всё же должна быть разрЕженная..

aspirmk писал(а):
2020-11-13 09:28:55

6. Алгоритм формирования разряженной системы линейных алгебраических уравнений (СЛАУ) - моя разработка

то есть не как в том же учебнике через обращение части матрицы соединений А с выходом на матрицу контуров С?

Присоединяйтесь!!! Мы в социальных сетях и на Ютуб.

6

Re: Модуль расчета токов КЗ в сетях любых классов напряжения на Python3

zigzag писал(а):
2020-11-13 09:50:53

Матрица всё же должна быть разрЕженная..

то есть не как в том же учебнике через обращение части матрицы соединений А с выходом на матрицу контуров С?

Нет никаких обращений, только матрица Z сопротивлений прямой, обратной и нулевой последовательностей и взаимоиндуктивностей нулевой последовательностей,  матрицы узловых соединений A и At, матрица B - суммарных емкостных проводимостей линий В/2 в узле, ну и уравнения граничных условий...

7 (2020-11-13 10:25:55 отредактировано n00buK)

Re: Модуль расчета токов КЗ в сетях любых классов напряжения на Python3

aspirmk писал(а):
2020-11-13 09:28:55

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

Да не обязательно делать полноценный графический редактор.  Сделать форму с двумя QListWidget да с десятком кнопок на том же Pyqt5 + qtdesigner для ввода узлов\ветвей задача совсем не сложная (учитывая объем уже проведеланной работы). И объем кода для формы будет не больше, чем в том же C# WindowsApplication.
Имхо самому копипастить функции для добавления узлов\ветвей ну так себе задача...
PS. Судя по нику, вы аспирант (или будущий аспирант) СГТУ. По логике, группа специальностей - 05.14.00. Этот модуль как-то связан с вашей темой диссертации?

8

Re: Модуль расчета токов КЗ в сетях любых классов напряжения на Python3

Протокол сравнения результатов расчетов МРТКЗ и АРМ СРЗА
Данный контент доступен только зарегистрированным пользователям.

Добавлено: 2020-11-13 11:40:25

n00buK писал(а):
2020-11-13 10:22:27

Да не обязательно делать полноценный графический редактор.  Сделать форму с двумя QListWidget да с десятком кнопок на том же Pyqt5 + qtdesigner для ввода узлов\ветвей задача совсем не сложная (учитывая объем уже проведеланной работы). И объем кода для формы будет не больше, чем в том же C# WindowsApplication.
Имхо самому копипастить функции для добавления узлов\ветвей ну так себе задача...
PS. Судя по нику, вы аспирант (или будущий аспирант) СГТУ. По логике, группа специальностей - 05.14.00. Этот модуль как-то связан с вашей темой диссертации?

Создание подобной графической оболочки с четырьмя таблицами конечно возможно, только насколько это будет удобнее, вот вопрос, ведь надо на лету изменять схему сети (место и вид КЗ, реализация каскадов, отключения ветвей, пром КЗ и прочее прочее)...

Я был давно аспирантом СГТУ по специальности 05.09.03, сейчас уже 13 лет работаю в Центральной службе РЗиПА ПАО "Россети Волга"...

9

Re: Модуль расчета токов КЗ в сетях любых классов напряжения на Python3

aspirmk писал(а):
2020-11-13 10:02:34

Нет никаких обращений, только матрица Z сопротивлений прямой, обратной и нулевой последовательностей и взаимоиндуктивностей нулевой последовательностей,  матрицы узловых соединений A и At, матрица B - суммарных емкостных проводимостей линий В/2 в узле, ну и уравнения граничных условий...

Как формируются уравнения по 2-у закону (как ищутся независимые контура)?

10 (2020-11-13 12:02:08 отредактировано aspirmk)

Re: Модуль расчета токов КЗ в сетях любых классов напряжения на Python3

zigzag писал(а):
2020-11-13 10:48:00

Как формируются уравнения по 2-у закону (как ищутся независимые контура)?

Никаких независимых контуров, исключительно 2-ой закон Кирхгофа:
для каждой ветви p от узла q1 до узла q2 в общем случае записываются уравнения:
Z1*I1p - U1q1 + U1q2 = E1
Z2*I2p - U2q1 + U2q2 = E2
Z0*I0p + S M0_k*I0pk  - U0q1 + U0q2 = E0

Где
Z1, Z2 и Z0 -  соответственно значения сопротивлений ветви прямой, обратной и нулевой последовательностей
I1p, I2p и I0p -  соответственно значения токов ветви прямой, обратной и нулевой последовательностей
S M0_k*I0pk - сумма падений напряжения нулевой последовательности от токов взаимоиндуктивно связанных ветвей
U1q1, U2q1, U0q1,  U1q2, U2q2, U0q2 - напряжения в узлах к которым подключена ветвь прямой, обратной и нулевой последовательностей
Е1, E2 и E0 - соответственно значения э.д.с. в ветви прямой, обратной и нулевой последовательностей

Или в матричной форме без учета КЗ и обрывов:
Z*Ip + At*Uq = E
A*Ip + (B/2)*Uq = 0

В результате для вышеуказанного примера расчета (4 узла, 8 ветвей и 1 КЗ) создается система из 3*(8+4+1) = 39 уравнений

11

Re: Модуль расчета токов КЗ в сетях любых классов напряжения на Python3

Спасибо. Как я понял за раз находятся сразу все токи и все напряжения узлов (по отношению к базисному). Это раньше пытались сделать матрицу как можно меньше (всякие там МУН, МКТ). А сейчас всё за раз)

12 (2020-11-18 19:36:56 отредактировано aspirmk)

Re: Модуль расчета токов КЗ в сетях любых классов напряжения на Python3

zigzag писал(а):
2020-11-13 11:57:40

Спасибо. Как я понял за раз находятся сразу все токи и все напряжения узлов (по отношению к базисному). Это раньше пытались сделать матрицу как можно меньше (всякие там МУН, МКТ). А сейчас всё за раз)

Совершенно верно, но зато при расчете простого однофазного КЗ по данному примеру в разреженной матрице 39*39 оказываются ненулевыми только 124 элемента или чуть больше 8%

Добавлено: 2020-11-18 14:36:48

Выложил новую версию МРТКЗ от 18.11.2020 г. https://github.com/aspirmk/mrtkz

Количество строк возросло с 828 до 1539, более чем на 700 строк

Основные изменения:

1. Добавлены описания к функциям, классам и методам МРТКЗ,
    в том числе дано подробное описание алгоритма метода mdl.Calc()
2. Добавлены специальные несимметрии вида:
    - КЗ по нулевой последовательности для моделирования заземления нейтрали за
      трансформатором Yg/D или за соответствующей парой обмоток тр-ра
    - Обрыв по нулевой последовательности для моделирования сети с изолированной
      нейтралью, устанавливается на ветви разделяющей сеть с глухо или эффективно
      заземленной нейтралью и сетью с изолированной нейтралью
3. Выверено моделирование ветвей с поперечной емкостной проводимостью B,
    для этого если pl62w+ или аналогичное ПО выдает (Например)
    B1 = В2 = 90 мкСм (1/Ом*10^-6), B0 = 60 мкСм (1/Ом*10^-6)
    то при создании ветви надо заполнять параметры емкостной проводимости
    B=(90e-6j,90e-6j,60e-6j)
4. Выверено моделирование трансформаторных ветвей
    T=(Ktrans,GrT) - безразмерные параметры трансформаторной ветви:
    Ktrans - коэффициент трансформации силового трансформатора, например 115/11
    GrT - группа обмоток обмотки подключенной к узлу 2 (от 0 до 11)
    Так например для трансформатора с номинальными напряжениями обмоток 115 и 10,5 кВ
    и схемой соединения обмоток Y/D-11 надо заполнять параметры трансформаторной ветви
    T=(115/10.5,11)
5. Добавлены новые методы класса Model
    - AddNQ для группового добавления узлов (сечения узлов)
    mdl.AddNQ(NQ,Nname)
    где NQ - количество создаваемых узлов
        Nname - общее имя узлов, к уникальному имени узлу будет добавляться
        номер из сечения от 1 до NQ
    - AddNP для группового добавления ветвей (сечения ветвей)
    в том числе с поперечной емкостной проводимостью B и
    взаимоиндукцией нулевой последовательности
    mdl.AddNP(Nname,listq1,listq2,Z12,Z0) - без учета емкостной проводимости
    mdl.AddNP(Nname,listq1,listq2,Z12,Z0,B12,B0) - с учетом емкостной проводимости
    где listq1 и listq2 - сечения (списки) узлов
        Nname - общее имя сечения ветвей, к уникальному имени ветви будет добавляться
        номер из сечения от 1 до N, где N - количество создаваемых ветвей
        Z12 - вектор numpy.ndarray значений сопротивлений ветвей прямой/обратной последовательности
        Z0 - квадратная матрица numpy.ndarray значений сопротивлений ветвей и взаимоиндукций нулевой последовательности
        B12 - вектор numpy.ndarray значений поперечной емкостной проводимости прямой/обратной последовательности
        B0 - квадратная матрица numpy.ndarray значений поперечной емкостной проводимости нулевой последовательности
6. Предыдущая версия МРТКЗ (от 13.11.2020г.) некорректно формировала схему замещения трансформаторных ветвей и
ветвей с поперечной емкостной проводимостью, в связи с чем выдавала для них неверные результаты расчета.
После  устранения выявленных погрешностей формирования СЛАУ сравнение результатов расчетов МРТКЗ с АРМ СРЗА
в расчетных схемах с наличием трансформаторных ветвей и ветвей с поперечной емкостной проводимостью отклонений не выявило.

Добавлено: 2020-11-19 13:15:09

В заголовке темы скорректировал описание МРТКЗ и добавил краткое руководство пользователя...

Добавлено: 2020-11-28 13:49:55

28.11.2020 г.
Добавил возможность импорта результатов расчета параметров воздушных ВЛ в модель МРТКЗ с помощью метода mdl.ImportFromPVL(PVL_Sech)
   где PVL_Sech - ссылка на сечение (объект класса sech модуля PVL)

Разработал новый пример по совместному использованию МРТКЗ и PVL, в котором:
- определены, рассчитаны и импортированы параметры ВЛ 110 кВ с грозозащитными тросами, заземленными в 2-х и более точках;
- в расчетную модель добавлены трансформаторные ветви, представляющие двухобмоточные трансформаторы Y/D;
- выполнено заземление нейтралей ВН понижающих трансформаторов с помощью несимметрии вида 'N0';
- произведен расчет нескольких видов КЗ в двух разных узлах расчетной модели (на шинах ВН и на шинах НН PS1).

Произведена сверка результатов расчетов с аналогичной моделью, выполненной в АРМ СРЗА, которая показала полное совпадение результатов расчетов (Ампер в Ампер, Вольт в Вольт)

Код скрипта нового примера:

#Импортирование модуля расчета ТКЗ (mrtkz3.py) и
#модуля расчета параметров воздушных линий  PVL,
#которые должны находиться в той же папке, где и настоящий файл
import mrtkz3 as mrtkz
import PVL5 as PVL
#Создание расчетной модели
mdl=mrtkz.Model()

#Создание узлов
q1 = mrtkz.Q(mdl,'Sys1')
q2 = mrtkz.Q(mdl,'Sys2')
q3 = mrtkz.Q(mdl,'PS1 ВН')
q4 = mrtkz.Q(mdl,'PS2 ВН')
q5 = mrtkz.Q(mdl,'PS1 НН')
q6 = mrtkz.Q(mdl,'PS2 НН')

#Создание ветвей энергосистем
Sys1 = mrtkz.P(mdl,'Sys1',0,q1,(2j,2j,3j),E=(65000,0,0))
Sys2 = mrtkz.P(mdl,'Sys2',0,q2,(2j,2j,3j),E=(65000,0,0))

#Справочник проводов, тросов, изоляторов и опор воздушных ЛЭП
AC_150_24 = PVL.provod('AC-150/24', 0.198+0.000j, 17.1, 0.95)
S50=PVL.provod('С-50',3.75,9.1)
PS70D=PVL.izol('ПС-70Д',0.127)
PB110_1 = PVL.opora('ПБ110-1', [-2.0+14.5j, 3.5+14.5j, 2.0+17.5j], [0.0, 0.0, 0.0], 0.0+19.5j, 0.0+0.0j)

#Создание ветвей ВЛ от Sys1 до PS1 и PS2
sk1=PVL.sech('Сечение ВЛ 110 кВ от Sys1 до PS1 и PS2',50.0,0.05,1000.0)
pl1 = PVL.Line(sk1,'Линия Sys1-PS1',0.0,PB110_1.C1,AC_150_24,PS70D(8),RZT=0,fpr=5.5,q=(q1,q3))
t1 = PVL.Line(sk1,'Трос Sys1-PS1',0.0,PB110_1.T1,S50,0.0,RZT=2,fpr=5.5)
pl2 = PVL.Line(sk1,'Линия Sys1-PS2',30.0,PB110_1.C1,AC_150_24,PS70D(8),RZT=0,fpr=5.5,q=(q1,q4))
t2 = PVL.Line(sk1,'Трос Sys1-PS2',30.0,PB110_1.T1,S50,0.0,RZT=2,fpr=5.5)
mdl.ImportFromPVL(sk1)

#Создание ветвей ВЛ от Sys1 до PS1 и PS2
sk2=PVL.sech('Сечение ВЛ 110 кВ от Sys2 до PS1 и PS2',50.0,0.05,1000.0)
pl3 = PVL.Line(sk2,'Линия Sys2-PS1',0.0,PB110_1.C1,AC_150_24,PS70D(8),RZT=0,fpr=5.5,q=(q2,q3))
t3 = PVL.Line(sk2,'Трос Sys2-PS1',0.0,PB110_1.T1,S50,0.0,RZT=2,fpr=5.5)
pl4 = PVL.Line(sk2,'Линия Sys2-PS2',30.0,PB110_1.C1,AC_150_24,PS70D(8),RZT=0,fpr=5.5,q=(q2,q4))
t5 = PVL.Line(sk2,'Трос Sys2-PS2',30.0,PB110_1.T1,S50,0.0,RZT=2,fpr=5.5)
mdl.ImportFromPVL(sk2)

#Создание ветвей подстанций с трансформаторами с заземленными нейтралями
T1_PS1 = mrtkz.P(mdl,'T1 PS1',q3,q5,(52.9j,52.9j,47.61j),T=(115/10.5,11))
T1_PS2 = mrtkz.P(mdl,'T1 PS2',q4,q6,(52.9j,52.9j,47.61j),T=(115/10.5,11))

#Задание заземленного режима заземления нейтрали ВН трансформаторов PS1 и PS2
N1 = mrtkz.N(mdl,'Заземленная нейтраль T1 PS1',q5,'N0')
N2 = mrtkz.N(mdl,'Заземленная нейтраль T1 PS2',q6,'N0')

#Задание сопротивления нагрузки трансформаторов подстанций
Load1 = mrtkz.P(mdl,'Нагрузка T1 PS1',q5,0,(100,50j,50j))
Load2 = mrtkz.P(mdl,'Нагрузка T1 PS2',q6,0,(100,50j,50j))

#Создание однофазного КЗ
KZ1 = mrtkz.N(mdl,'Однофазное КЗ на шинах ВН PS1',q3,'A0')
#Формирование разреженной СЛАУ и расчет электрических параметров
mdl.Calc()
#Вывод результатов расчета для короткого замыкания
KZ1.res()
print()# Пустая строка

#Очистка модели от КЗ и обрывов за исключением типа 'N0'
mdl.ClearN()

# Пакетный расчет  КЗ других видов и в других точках

KZ1 = mrtkz.N(mdl,'Однофазное КЗ на шинах ВН PS1 через Rпер=2 Ом',q3,'A0r',r=2.0)
mdl.Calc()
KZ1.res()
print()# Пустая строка

mdl.ClearN()
KZ1 = mrtkz.N(mdl,'Двухфазное КЗ на шинах ВН PS1',q3,'BC')
mdl.Calc()
KZ1.res()
print()# Пустая строка

mdl.ClearN()
KZ1 = mrtkz.N(mdl,'Двухфазное КЗ на шинах ВН PS1 через Rпер=2 Ом',q3,'BCr',r=2.0)
mdl.Calc()
KZ1.res()
print()# Пустая строка

mdl.ClearN()
KZ1 = mrtkz.N(mdl,'Двухфазное КЗ на землю на шинах ВН PS1',q3,'BC0')
mdl.Calc()
KZ1.res()
print()# Пустая строка

mdl.ClearN()
KZ1 = mrtkz.N(mdl,'Двухфазное КЗ на шинах НН PS1',q5,'BC')
mdl.Calc()
KZ1.res()
print()# Пустая строка
T1_PS1.res1()

Результаты расчетов:

КЗ № 3 - Однофазное КЗ на шинах ВН PS1 - A0
В Узле № 3 - PS1 ВН
U1  =   47295 <    2.5 | U2  =   17954 <  173.2 | 3U0 =   89158 < -171.9
UA  =       0 <    0.0 | UB  =   76661 < -125.2 | UC  =   66712 <  131.3
UAB =   76661 <   54.8 | UBC =  112719 <  -90.1 | UCA =   66712 <  131.3
Суммарный ток КЗ в Узле № 3 - PS1 ВН
I1  =    1497 <  -72.5 | I2  =    1497 <  -72.5 | 3I0 =    4490 <  -72.5
IA  =    4490 <  -72.5 | IB  =       0 <  180.0 | IC  =       0 <   36.0
IAB =    4490 <  -72.5 | IBC =       0 < -153.4 | ICA =    4490 <  107.5
Подтекание токов по ветвям
Ветвь № 3 - Линия Sys1-PS1
I1  =     749 <  -72.3 | I2  =     747 <  -72.4 | 3I0 =    1330 <  -65.8
IA  =    1937 <  -70.9 | IB  =     310 <   98.6 | IC  =     313 <   98.0
Ветвь № 5 - Линия Sys2-PS1
I1  =     749 <  -72.3 | I2  =     747 <  -72.4 | 3I0 =    1330 <  -65.8
IA  =    1937 <  -70.9 | IB  =     310 <   98.6 | IC  =     313 <   98.0
Ветвь № 7 - T1 PS1
I1  =       4 < -177.8 | I2  =       3 <  -96.8 | 3I0 =    1873 <  -81.9
IA  =     627 <  -82.3 | IB  =     620 <  -81.4 | IC  =     626 <  -82.0

КЗ № 3 - Однофазное КЗ на шинах ВН PS1 через Rпер=2 Ом - A0r
В Узле № 3 - PS1 ВН
U1  =   47978 <   -0.2 | U2  =   17098 < -179.6 | 3U0 =   84907 < -164.7
UA  =    8553 <  -65.3 | UB  =   76720 < -123.9 | UC  =   65013 <  131.0
UAB =   72639 <   50.3 | UBC =  112714 <  -90.1 | UCA =   73262 <  129.1
Суммарный ток КЗ в Узле № 3 - PS1 ВН
I1  =    1425 <  -65.3 | I2  =    1425 <  -65.3 | 3I0 =    4276 <  -65.3
IA  =    4276 <  -65.3 | IB  =       0 < -170.1 | IC  =       0 <  170.5
IAB =    4276 <  -65.3 | IBC =       0 <  -82.9 | ICA =    4276 <  114.7
Подтекание токов по ветвям
Ветвь № 3 - Линия Sys1-PS1
I1  =     714 <  -65.1 | I2  =     711 <  -65.2 | 3I0 =    1267 <  -58.6
IA  =    1845 <  -63.7 | IB  =     295 <  105.8 | IC  =     298 <  105.2
Ветвь № 5 - Линия Sys2-PS1
I1  =     714 <  -65.1 | I2  =     711 <  -65.2 | 3I0 =    1267 <  -58.6
IA  =    1845 <  -63.7 | IB  =     295 <  105.8 | IC  =     298 <  105.2
Ветвь № 7 - T1 PS1
I1  =       4 <  179.5 | I2  =       3 <  -89.6 | 3I0 =    1783 <  -74.7
IA  =     596 <  -75.2 | IB  =     591 <  -74.2 | IC  =     596 <  -74.8

КЗ № 3 - Двухфазное КЗ на шинах ВН PS1 - BC
В Узле № 3 - PS1 ВН
U1  =   32527 <   -0.0 | U2  =   32527 <   -0.0 | 3U0 =       0 <    0.0
UA  =   65054 <   -0.0 | UB  =   32527 <  180.0 | UC  =   32527 <  180.0
UAB =   97581 <   -0.0 | UBC =       0 <    0.0 | UCA =   97581 <  180.0
Суммарный ток КЗ в Узле № 3 - PS1 ВН
I1  =    2712 <  -65.7 | I2  =    2712 <  114.3 | 3I0 =       0 <    0.0
IA  =       0 <    0.0 | IB  =    4697 < -155.7 | IC  =    4697 <   24.3
IAB =    4697 <   24.3 | IBC =    9394 < -155.7 | ICA =    4697 <   24.3
Подтекание токов по ветвям
Ветвь № 3 - Линия Sys1-PS1
I1  =    1356 <  -65.6 | I2  =    1353 <  114.4 | 3I0 =       0 < -180.0
IA  =       3 <  -63.3 | IB  =    2347 < -155.7 | IC  =    2347 <   24.4
Ветвь № 5 - Линия Sys2-PS1
I1  =    1356 <  -65.6 | I2  =    1353 <  114.4 | 3I0 =       0 < -180.0
IA  =       3 <  -63.3 | IB  =    2347 < -155.7 | IC  =    2347 <   24.4
Ветвь № 7 - T1 PS1
I1  =       3 <  179.7 | I2  =       5 <   90.0 | 3I0 =       0 < -180.0
IA  =       6 <  116.7 | IB  =       3 < -174.0 | IC  =       8 <  -40.1

КЗ № 3 - Двухфазное КЗ на шинах ВН PS1 через Rпер=2 Ом - BCr
В Узле № 3 - PS1 ВН
U1  =   33854 <   -3.9 | U2  =   31360 <    4.1 | 3U0 =       0 <    0.0
UA  =   65052 <   -0.1 | UB  =   36567 < -176.7 | UC  =   28630 <  175.6
UAB =  101578 <    1.2 | UBC =    9057 < -151.5 | UCA =   93625 <  178.6
Суммарный ток КЗ в Узле № 3 - PS1 ВН
I1  =    2614 <  -61.5 | I2  =    2614 <  118.5 | 3I0 =       0 <    0.0
IA  =       0 <  -90.0 | IB  =    4528 < -151.5 | IC  =    4528 <   28.5
IAB =    4528 <   28.5 | IBC =    9057 < -151.5 | ICA =    4528 <   28.5
Подтекание токов по ветвям
Ветвь № 3 - Линия Sys1-PS1
I1  =    1308 <  -61.4 | I2  =    1305 <  118.6 | 3I0 =       0 < -180.0
IA  =       3 <  -59.3 | IB  =    2263 < -151.5 | IC  =    2263 <   28.6
Ветвь № 5 - Линия Sys2-PS1
I1  =    1308 <  -61.4 | I2  =    1305 <  118.6 | 3I0 =       0 < -180.0
IA  =       3 <  -59.3 | IB  =    2263 < -151.5 | IC  =    2263 <   28.6
Ветвь № 7 - T1 PS1
I1  =       3 <  175.8 | I2  =       5 <   94.1 | 3I0 =       0 < -180.0
IA  =       6 <  120.7 | IB  =       3 < -168.0 | IC  =       8 <  -39.2

КЗ № 3 - Двухфазное КЗ на землю на шинах ВН PS1 - BC0
В Узле № 3 - PS1 ВН
U1  =   25129 <    3.4 | U2  =   25129 <    3.4 | 3U0 =   75388 <    3.4
UA  =   75388 <    3.4 | UB  =       0 <  -90.0 | UC  =       0 <   67.2
UAB =   75388 <    3.4 | UBC =       0 < -108.4 | UCA =   75388 < -176.6
Суммарный ток КЗ в Узле № 3 - PS1 ВН
I1  =    3334 <  -67.8 | I2  =    2095 <  117.8 | 3I0 =    3797 <  102.9
IA  =       0 <  -18.4 | IB  =    4703 < -179.0 | IC  =    5404 <   44.5
IAB =    4703 <    1.0 | IBC =    9393 < -155.7 | ICA =    5404 <   44.5
Подтекание токов по ветвям
Ветвь № 3 - Линия Sys1-PS1
I1  =    1667 <  -67.8 | I2  =    1046 <  117.8 | 3I0 =    1125 <  109.5
IA  =     266 <  -86.4 | IB  =    2354 < -172.6 | IC  =    2536 <   40.0
Ветвь № 5 - Линия Sys2-PS1
I1  =    1667 <  -67.8 | I2  =    1046 <  117.8 | 3I0 =    1125 <  109.5
IA  =     266 <  -86.4 | IB  =    2354 < -172.6 | IC  =    2536 <   40.0
Ветвь № 7 - T1 PS1
I1  =       2 < -176.8 | I2  =       4 <   93.4 | 3I0 =    1583 <   93.4
IA  =     532 <   93.6 | IB  =     528 <   93.7 | IC  =     524 <   92.9

КЗ № 3 - Двухфазное КЗ на шинах НН PS1 - BC
В Узле № 5 - PS1 НН
U1  =    2957 <   29.8 | U2  =    2957 <   29.8 | 3U0 =       0 <  180.0
UA  =    5914 <   29.8 | UB  =    2957 < -150.2 | UC  =    2957 < -150.2
UAB =    8870 <   29.8 | UBC =       0 <    0.0 | UCA =    8870 < -150.2
Суммарный ток КЗ в Узле № 5 - PS1 НН
I1  =    5598 <  -55.8 | I2  =    5598 <  124.2 | 3I0 =       0 <    0.0
IA  =       0 <    0.0 | IB  =    9696 < -145.8 | IC  =    9696 <   34.2
IAB =    9696 <   34.2 | IBC =   19391 < -145.8 | ICA =    9696 <   34.2
Подтекание токов по ветвям
Ветвь № 7 - T1 PS1
I1  =    5600 <  -55.5 | I2  =    5539 <  124.3 | 3I0 =       0 < -180.0
IA  =      66 <  -33.6 | IB  =    9659 < -145.8 | IC  =    9634 <   34.6
Ветвь № 9 - Нагрузка T1 PS1
I1  =      30 < -150.2 | I2  =      59 <  119.8 | 3I0 =       0 < -180.0
IA  =      66 <  146.4 | IB  =      37 < -144.0 | IC  =      86 <  -10.1

Ветвь № 7 - T1 PS1
Значения токов по ветви со стороны узла №3 - PS1 ВН

I1  =     511 <  -85.5 | I2  =     506 <  154.3 | 3I0 =       0 <    0.0
IA  =     507 < -145.0 | IB  =     510 < -146.1 | IC  =    1017 <   34.4
IAB =      10 <  -33.6 | IBC =    1528 < -145.8 | ICA =    1524 <   34.6
Значения напряжения в узле №3 - PS1 ВН

U1  =   59383 <    2.0 | U2  =    6077 <   39.9 | 3U0 =       0 < -180.0
UA  =   64287 <    5.3 | UB  =   60519 < -123.7 | UC  =   53801 <  124.4
UAB =  112677 <   30.0 | UBC =   94770 <  -91.9 | UCA =  101943 <  157.8