python

Моделирование переходных процессов при коммутации электрической цепи средствами Python

  • пятница, 16 июня 2017 г. в 03:13:28
https://habrahabr.ru/post/330990/
  • Python




Зачем нужно учитывать переходные процессы


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

С другой стороны, переходные процессы находят практическое применение, например, в различные рода электронных генераторах, в схемах электроники и автоматики.

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

Учитывая хорошо развитые в библиотеке SciPy численные методы, привожу пример математического моделирования переходных процессов при коммутации в электрических цепях средствами данной библиотеки.

Как можно построить графики переходных процессов при коммутации электрических цепей


Обобщённая схема электрической цепи.


Рассмотрим цепь, содержащую источник тока — E, катушку индуктивности – L, два сопротивления — R1, R2, конденсатор — C и рубильник.

Приведём параметры электрической цепи для состояния после коммутации.

В разомкнутом состоянии приведённая на рисунке цепь соответствует условиям:



Листинг программы построения графиков переходных процессов в цепи при размыкании.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
R1=10;R2=20;L=0.02;C=0.00005;E=100;tm=0.02; #параметры электрической цепи
def f(y, t):#  дифференциальное уравнение переходного процесса.
                y1,y2 = y 
                return [y2,-(R1/L)*y2-(1/(L*C))*y1+E/(L*C)]
t = np.linspace(0,tm,1000)
y0 = [E*R2/(R1+R2),0]#начальные условия
z = odeint(f, y0, t)#решение  дифференциального уравнения
y1=z[:,0] # вектор значений решения
y2=100*C*z[:,1] # вектор значений производной
plt.title('Напряжение на конденсаторе и ток при размыкании цепи', size=12)
plt.plot(t*1000,y1,linewidth=2, label=' Uс(t)')
plt.plot(t*1000,y2,linewidth=2, label=' i3(t)=100*C*dUc(t)/dt')
plt.ylabel("Uc(t), i3(t)")
plt.xlabel("t*1000")
plt.legend(loc='best')
plt.grid(True)
plt.show()

Результат работы программы




В разомкнутой цепи i2=0, а i3=i1, поэтому на графике приведены только ток и напряжение. Характер переходных процессов – затухающие колебания.

В замкнутом состоянии приведённая на рисунке цепь соответствует условиям:



Листинг программы построения графиков переходных процессов в цепи при замыкании.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
R1=10;R2=20;L=0.02;C=0.00005;E=100;tm=0.02; # параметры электрической цепи
def f(y, t):#  дифференциальное уравнение переходного процесса.
                y1,y2 = y 
                return [y2,-((L+R1*R2*C)/(R2*L*C))*y2-((R1+R2)/(R2*L*C))*y1+E/(L*C)]
t = np.linspace(0,tm,1000)
y0 = [E,0]#начальные условия
z = odeint(f, y0, t)#решение  дифференциального уравнения
y1=z[:,0] # вектор значений решения
y2=100*(C*z[:,1]+y1/R2)
y3=100*C*z[:,1]
y4=100*y1/R2
plt.title('Напряжение на конденсаторе и токи  при замыкании цепи', size=12)
plt.plot(t*1000,y1,linewidth=2, label=' Uc(t)')
plt.plot(t*1000,y2,linewidth=2, label=' i1(t)*100')
plt.plot(t*1000,y3,linewidth=2, label='i3(t)*100')
plt.plot(t*1000,y4,linewidth=2, label=' i2*100')
plt.ylabel("Uc(t),i1(t),i2(t),i3(t)")
plt.xlabel("t*1000")
plt.legend(loc='best')
plt.grid(True)
plt.show()

Результат работы программы




В замкнутой цепи для токов выполняется соотношение i1=i2+i3. Переходные процессы апериодические. В установившимся режиме i3=0, i1=i2, что и следует из графика.

Вывод


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

Ссылки


  1. torus.pp.ua/manuals/lessons/matusko/perechodn.html
  2. electricalschool.info/spravochnik/electroteh/747-perekhodnye-processy-v-jelektricheskojj.html
  3. ru.wikipedia.org/wiki/Переходные_процессы_в_электрических_цепях