13.08.2013 Views

?????????????? ?????? ? ????????? ?????????? ??????? ?????

?????????????? ?????? ? ????????? ?????????? ??????? ?????

?????????????? ?????? ? ????????? ?????????? ??????? ?????

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Федеральное агентство по образованию<br />

Псковский государственный политехнический институт<br />

Ю.Н.Сохор<br />

ВЫЧИСЛИТЕЛЬНЫЕ МОДЕЛИ И АЛГОРИТМЫ<br />

ТЕНЗОРНОГО АНАЛИЗА СЕТЕЙ<br />

Учебно-методическое пособие<br />

Псков<br />

Издательство ППИ<br />

2008


Федеральное агентство по образованию<br />

Псковский государственный политехнический институт<br />

Ю.Н.Сохор<br />

ВЫЧИСЛИТЕЛЬНЫЕ МОДЕЛИ И АЛГОРИТМЫ<br />

ТЕНЗОРНОГО АНАЛИЗА СЕТЕЙ<br />

Учебно-методическое пособие<br />

для студентов специальности 140604 «Электропривод и автомати-<br />

ка промышленных установок и технологических комплексов»<br />

Рекомендовано к изданию Научно-методическим советом<br />

Псковского государственного политехнического института<br />

Псков<br />

Издательство ППИ<br />

2008<br />

3


УДК 62-83+ 621.3.01<br />

ББК 31.291-01<br />

С68<br />

Рекомендовано к изданию Научно-методическим советом<br />

Псковского государственного политехнического института<br />

Рецензенты:<br />

• А.Е. Петров, академик РАЕН, доктор технических наук,<br />

профессор кафедры Системного анализа и управления<br />

Международного университета природы, общества и человека<br />

«Дубна»<br />

• Л.П. Елисеев, к.т.н., зам.зав. кафедры теоретических основ<br />

электротехники Псковского государственного политехнического<br />

института.<br />

С68 Сохор Ю.Н. Вычислительные модели и алгоритмы тензорного<br />

анализа сетей. Учебно-методическое пособие. - Псковск. гос. политехн.<br />

ин-т. - Псков: Издательство ППИ, 2008. - 162 с.<br />

ISBN 978-5-91116-057-2<br />

В пособии приводятся основные положения тензорного<br />

анализа сетей. Изложен математический аппарат, описывающий<br />

базовые электротехнические элементы, приводятся алгоритмы<br />

формирования уравнений и их решения для произвольных схем,<br />

составленных из базовых элементов, приводятся примеры решения<br />

задач теории поля, теории цепей и систем управления.<br />

Учебное пособие предназначено для студентов специальности<br />

"Электропривод и автоматика промышленных установок",<br />

изучающих дисциплину "Теоретические основы систем автоматизированного<br />

проектирования", а так же для всех, кто интересуется<br />

методами расчета сложных технических систем.<br />

ISBN 978-5-91116-057-2<br />

© Сохор Ю.Н., 2008<br />

© Псковский государственный политехнический институт, 2008<br />

2


Оглавление.<br />

Предисловие............................................................................................................5<br />

Введение..................................................................................................................6<br />

1. Базовые понятия и основные математические соотношения....................8<br />

1.1. Система обозначений................................................................................................8<br />

1.2. Тензорные объекты в уравнениях..........................................................................10<br />

1.3. Координатные преобразования уравнений...........................................................14<br />

1.4. Тензорная методология и описание технических устройств..............................17<br />

2. Моделирование цепей......................................................................................20<br />

2.1. Обобщенная ветвь...................................................................................................20<br />

2.1.1. Разностные схемы замещения линейных емкостей и индуктивностей......22<br />

2.1.1.1. Метод Эйлера 1-го порядка......................................................................22<br />

2.1.1.2. Метод трапеций.........................................................................................33<br />

2.1.1.3. Формула дифференцирования «назад»...................................................40<br />

2.1.2. Разностно-итерационные схемы замещения нелинейных ветвей...............42<br />

2.1.2.1. Итерационные схемы замещения сопротивления..................................42<br />

2.1.2.2. Разностно-итерационная схема замещения емкости.............................45<br />

2.1.2.3. Разностно-итерационная схема замещения индуктивности.................50<br />

2.1.3. Управляемые источники..................................................................................54<br />

2.2. Топологические модели электрических схем.......................................................56<br />

2.2.1. Матричная форма законов Кирхгофа.............................................................56<br />

2.2.2. Топологическое описание схемы....................................................................58<br />

2.2.3. Координатные преобразования топологических пространств схем...........61<br />

2.3. Обобщенные уравнения электрических схем.......................................................66<br />

2.3.1. Элементарная схема.........................................................................................66<br />

2.3.2. Формирование уравнений обобщенной схемы.............................................67<br />

2.3.3. Решение уравнений обобщенной схемы. Контурная и узловая формы......68<br />

2.3.4. Преобразование мощности..............................................................................72<br />

2.3.5. Уравнения обобщенной схемы в частотной области....................................74<br />

2.3.6. Алгоритм формирования и расчета уравнений резистивной схемы..........76<br />

2.3.7. Формирование уравнений R-,L-,C- схем и расчет переходных процессов.<br />

......................................................................................................................................79<br />

2.3.8. Расчет схем в системе CAD/CAM...................................................................83<br />

2.4. Расчет по частям узловых схем..............................................................................93<br />

2.4.1. Цепь пересечений.............................................................................................96<br />

2.4.2. Циркуляционная цепь......................................................................................98<br />

2.4.3. Суммарная цепь................................................................................................99<br />

2.4.4. Расчет суммарной цепи..................................................................................101<br />

2.4.5. Получение окончательного решения в подсхемах......................................102<br />

2.4.6. Алгоритм расчета по частям.........................................................................103<br />

2.4.7. Сравнение скорости расчета при декомпозиции схемы.............................108<br />

2.5. Расчет по частям контурных схем.......................................................................110<br />

3. Моделирование электромагнитных полей................................................116<br />

3.1. Резистивная схема замещения разностного уравнения.....................................118<br />

3.2. Элементарная схема..............................................................................................122<br />

3.3. Уравнения подсхемы............................................................................................122<br />

3.4. Расчет схемы замещения электромагнитного поля...........................................125<br />

3.4.1. Расчет поля при питании от источника тока ........................................126<br />

3.4.2. Расчет поля при питании от источника напряжения..................................128<br />

3


3.5. Алгоритм расчета электромагнитного поля во временной области................131<br />

4. Моделирование систем управления............................................................135<br />

4.1. Системы управления на операционных усилителях..........................................135<br />

4.2. Резистивные модели структурных схем..............................................................136<br />

Заключение.........................................................................................................141<br />

Приложения........................................................................................................144<br />

Порядок установки Фортран-95 и среды разработки VFort.....................................144<br />

Пример программирования с библиотекой DISLIN.................................................145<br />

Список литературы..........................................................................................159<br />

4


Предисловие.<br />

Тензорный анализ сетей – это метод для исследований и проектирования<br />

таких технических устройств, которые требуют их многоаспектного<br />

и многоуровневого представления на разных фазах своего существования.<br />

Подобные устройства принято называть сложными, а методы работы<br />

с ними – системными.<br />

Проблемы, стоящие перед разработчиками сложных технических систем<br />

вызваны:<br />

• требованием постоянного расширения представлений о системе;<br />

• необходимостью синтеза многообразного описания особенностей<br />

различных конструкций;<br />

• большим числом переменных, громоздкостью уравнений,<br />

приводящих к значительным вычислительным затратам.<br />

Существуют различные системные технологии, решающие эти<br />

проблемы. В рамках этих технологий устанавливаются определенные<br />

понятия и теоретические схемы, разрабатываются модели системы и методы<br />

решения этих моделей. Общим для системного подхода является<br />

то, что основной акцент ставится в первую очередь на целостных свойствах<br />

объектов. Различные аспекты описания, отдельные части, их связи<br />

и структура призваны выявить эту целостность.<br />

Следует отметить, что в системных технологиях применяется, как<br />

правило, весьма абстрактный математический аппарат, серьезно жертвующий<br />

содержательностью. Не является исключением и тензорный анализ<br />

сетей. Цель книги – на практических примерах показать возможности<br />

тензорного анализа сетей для системных исследований, раскрыть<br />

содержательный смысл этого математического аппарата.<br />

Учебное пособие рассчитано на студентов специальности "электропривод<br />

и системы автоматизации технологических процессов", изучающих<br />

курс по теории систем автоматизированного проектирования. Автор<br />

надеется так же, что книга заинтересует всех тех, кто связан с разработкой<br />

сложных технических систем и системных технологий.<br />

5


Введение.<br />

При тензорном подходе технические устройства рассматриваются в<br />

различных пространствах и переход от одного устройства к другому на<br />

разных уровнях иерархии, переделка устройства, его сборка, разборка и<br />

другие изменения представляются как преобразование пространств.<br />

Тензорные уравнения – это такие уравнения, которые не меняются при<br />

переходе от одного пространства к другому, то есть остаются инвариантным<br />

к изменению расчетной конструкции.<br />

Наиболее важными для приложений являются следующие свойства<br />

тензорного анализа сетей:<br />

1. Язык тензорного исчисления применяется для формулировки<br />

большинства фундаментальных законов физики. Поэтому, несмотря<br />

на то, что тензорный анализ сетей, как правило, приводится в<br />

электротехнических терминах, результаты могут быть использованы<br />

для расчета устройств различной физической природы.<br />

2. Совмещение в едином математическом аппарате непрерывных дифференциальных<br />

и дискретных топологических объектов позволяет<br />

относительно просто состыковать расчетные модели с конструкторскими<br />

схемами в системах сквозного проектирования (системах<br />

CAE/CAD/CAM).<br />

3. Инвариантность математического описания технических устройств<br />

приводит к универсальности соответствующего программного<br />

обеспечения.<br />

4. Расчет по частям, разработанный в тензорном анализе сетей,<br />

позволяет сократить объем вычислений при расчете больших<br />

систем, выполнить распараллеливание вычислений.<br />

5. Результаты исследований отдельных частей могут быть<br />

использованы в разных проектах.<br />

Тензорный анализ сетей был разработан Г. Кроном для расчета сложных<br />

технических систем по частям, для ряда статистических и некоторых<br />

экономических расчетов. Им были предложены уравнения обобщенной<br />

электрической машины. Результаты основных его работ опубликованы<br />

в [1], [2], [3]. Следует так же отметить книгу Х. Хэппа [4], посвященную<br />

контурной теории цепей, работы И.П. Копылова [5] по теории<br />

обобщенной электрической машины, книги П.Г. Кузнецова [6] и<br />

А.Е. Петрова [7] , где рассматриваются возможности применения тензорного<br />

анализа сетей для развития теории систем. Идея применения<br />

тензорного анализа сетей к решению электротехнических задач оказала<br />

глубокое влияние на развитие различных разделов теоретической электротехники.<br />

Результаты этого влияния прослеживаются в многочисленных<br />

публикациях, ссылки на которые приводятся по ходу изложения.<br />

Задачи книги:<br />

1. Привести основные понятия и математические соотношения<br />

6


тензорного анализа сетей.<br />

2. Изложить математический аппарат для уравнений, описывающий<br />

базовые электрические элементы.<br />

3. Привести алгоритмы формирования уравнений и их решения для<br />

произвольных схем, составленных из базовых элементов.<br />

4. Привести примеры решения задач теории цепей, теории поля и<br />

теории автоматического управления.<br />

5. Привести пути развития и совершенствования вычислительных<br />

моделей и алгоритмов тензорного анализа сетей.<br />

В первой главе приведены основные математические соотношения<br />

тензорного анализа сетей в том объеме, который необходим для понимания<br />

работы алгоритмов и тех возможностей, которые в них заложены.<br />

Во второй главе рассмотрены вопросы построения вычислительных<br />

моделей для электрических цепей. Здесь можно выделить три раздела,<br />

относящихся к исследованию простых схем. Это построение модели<br />

обобщенной ветви, топологическое описание схем с использованием<br />

матриц преобразования, формирование обобщенных уравнений схем и<br />

их решение. Еще два раздела относятся к расчету сложных схем по частям<br />

узловым и контурным способом. Построение моделей обобщенной<br />

ветви ориентировано в основном на численный расчет переходных процессов.<br />

Это связано с тем, что особенности численных расчетов недостаточно<br />

полно отражены в основных работах по тензорному анализу<br />

сетей, в которых предполагается операторный метод расчета. Расчет<br />

сложных схем по частям рассматривается для наиболее общего случая,<br />

когда отдельные подсхемы не имеют общего узла.<br />

В третьей главе рассмотрены этапы моделирования и расчета электромагнитного<br />

поля с помощью электрических схем замещения разностных<br />

уравнений. Построения ведутся на примере одномерного поля, описываемого<br />

уравнениями в частных производных с диффузионной и конвективной<br />

составляющими. При построении модели и проверке результатов<br />

расчета использовались материалы, представленные В.А.Винокуровым<br />

и А.Т.Гореловым [8], [9], [10]. Автор выражает им так же признательность<br />

за содействие в выполнении исследований.<br />

Четвертая глава посвящена вопросам моделирования систем управления.<br />

Приводятся математические соотношения для резистивных моделей<br />

структурных схем и их решения.<br />

Для решения задач потребуется следующее свободно распространяемое<br />

программное обеспечение:<br />

математический пакет SciLab (http://www.scilab.org), компилятор Фортрана<br />

g95 (http://www.g95.org), среда программирования на Фортране<br />

Vfort (http://www.imamod.ru/~vab), пакет проектирования электронных<br />

устройств KiCAD (http://iut-tice.ujf-grenoble.fr/kicad), пакет символьной<br />

математики Maxima (http://maxima.sourceforge.net).<br />

7


1. Базовые понятия и основные математические соотношения.<br />

1.1. Система обозначений.<br />

Система обозначений математических объектов зависит от действий с<br />

этими объектами. Рассмотрим следующие формы обозначений: матричную,<br />

матрично-индексную, матрично-тензорную и тензорную. Критерием<br />

различий между ними служит правило использования индексов.<br />

Матричная форма. Это безиндексная форма. Матрица или вектор<br />

обозначаются одной буквой латинского алфавита, как правило, полужирным<br />

шрифтом, для отличия от скаляра, обозначаемого простым<br />

шрифтом, например, Z, I, i, U и т.д.<br />

Для операции транспонирования применяется нижний индекс t,<br />

например, Zt. Для обратной матрицы применяется степень -1, например,<br />

(Z) -1 или Z -1 . Обозначения матриц и векторов означают их смысл: i – вектор<br />

токов, U – вектор напряжений и т.д. Чтобы внести отличия между<br />

векторами, их снабжают дополнительными символами. Например, век-<br />

тор токов в ветвях можно обозначить ib, а вектор контурных токов ik.<br />

При преобразованиях векторов из исходной системы координат в новую<br />

систему координат, применяют обозначения со штрихами, например,<br />

i' – это новый вектор тока, i – старый вектор тока.<br />

Матричная форма наиболее лаконична. Из текста должно быть ясно, о<br />

каких координатах идет речь. Для явного указания координат, используют<br />

матрично-индексную форму.<br />

Матрично-индексная форма. В этом случае обозначение матрицы или<br />

вектора дополняется нижними индексами, при этом для матриц первый<br />

индекс обозначает строку, второй – столбец, например, матрица Crb содержит<br />

r строк и b столбцов.<br />

Вектор представляет собой матрицу с одним столбцом, единственный<br />

векторный индекс перечисляет строки этого столбца, например, вектор<br />

Ub содержит b строк. Для операции транспонирования матрицы произ-<br />

водится перестановка индексов, например, матрица Crb является транс-<br />

понированной по отношению к матрице Cbr.. Для того чтобы представить<br />

транспонированный вектор, то есть вектор в виде строки, использу-<br />

ется точка, например, вектор U.b содержит b столбцов (и одну строку).<br />

Так же, как и для матричной формы, для обратной матрицы в индексной<br />

форме применяется степень -1, например, (Zbb) -1 . При перемножении<br />

матриц в индексной форме удобно контролировать правильность расположения<br />

и размерность сомножителей. Суммирование производится по<br />

одинаковым индексам, имеющим ближнее расположение в сомножителях,<br />

например, в произведении Cbd=Сbr · Crd суммирование производится<br />

по индексу r, в произведении U·b=U.s · Csb, суммирование производится<br />

по индексу s.<br />

8


Матрично-тензорная форма. Отличие от матрично-индексной формы<br />

состоит только в том, что используются верхние и нижние индексы.<br />

Например, для токов применяют верхние индексы, для напряжений –<br />

нижние. В операциях умножения индексы проставляются так, чтобы<br />

компоненты с верхним индексом суммировались с компонентами с ниж-<br />

⋅b ⋅b<br />

ним индексом и наоборот. Например, U r =C r ⋅U b или U o = C o ⋅U b . Здесь<br />

суммируются верхний и нижний индексы, которые обозначаются одинаково.<br />

Как и для матричного обозначения, существенен порядок расположения<br />

сомножителей. Рядом стоящие сомножители имеют ближнее расположение<br />

перемножаемых индексов. Например, перемножение трех<br />

⋅b ⋅r<br />

объектов должно быть записано так: z rr = Cr ⋅zbb⋅C b , где суммирование<br />

идет по индексу b.<br />

Тензорная форма. При перемножениях используются немые индексы,<br />

которые могут иметь произвольное обозначение и свободные индексы,<br />

которые не участвуют в суммировании. Суммирование выполняется всегда<br />

по одинаковым индексам, причем компоненты с верхним индексом<br />

суммируются с компонентами с нижним индексом и наоборот.<br />

Внутреннее произведение трех тензоров второго порядка может быть<br />

записано в разных формах:<br />

⋅α β ⋅α β ⋅α β β ⋅α<br />

zδγ = zαβ⋅C δ ⋅C ⋅γ = C δ ⋅C ⋅γ⋅z<br />

αβ =C δ ⋅zαβ⋅C ⋅γ =C ⋅γ⋅z<br />

αβ⋅C δ ,<br />

это же произведение в развернутой форме с использованием знаков суммирования:<br />

n n<br />

n n<br />

n n<br />

n n<br />

⋅i j ⋅i j ⋅i j j ⋅i<br />

z km =∑ ∑ zij⋅C k ⋅C ⋅m =∑ ∑ C k⋅C<br />

⋅m⋅zij<br />

=∑ ∑ C k⋅z<br />

ij⋅C ⋅m =∑ ∑ C ⋅m⋅z<br />

ij⋅C k ,<br />

i = 1 j = 1<br />

i = 1 j = 1<br />

i = 1 j = 1<br />

i = 1 j = 1<br />

где сначала выполняется суммирование по индексу j, затем по индексу i.<br />

Индексы α, β в первом примере и индексы i, j во втором примере – это<br />

немые индексы. В обоих примерах производится суммирование компонент,<br />

имеющих одинаковые индексы.<br />

Из перечисленных 4-х форм обозначений, для тензорного анализа сетей<br />

удобна матрично-тензорная форма, введенная Х.Хэппом [4]. Дело в<br />

том, что чисто тензорное использование индексов предполагает суммирование<br />

по одинаковым индексам тогда, когда они принадлежат од-<br />

ному объекту, например, запись Zαα будет означать ∑ i =1<br />

n<br />

Z ii , то есть сум-<br />

мирование диагональных элементов, что в итоге даст скаляр. Так как в<br />

тензорном анализе сетей применяются системы координат с различным<br />

числом измерений, то каждый индекс соответствует определенному<br />

числу координат в определенном измерении. Поэтому одинаковые индексы<br />

подразумевают одинаковое число координат. В этом случае,<br />

например, запись Zαα будет означать тот факт, что строка и столбец имеют<br />

одинаковое измерение и одинаковое число координат в этом измерении.<br />

9


1.2. Тензорные объекты в уравнениях.<br />

Операции с тензорными объектами предполагают бóльшую степень<br />

общности, чем операции с векторными уравнениями. Это можно продемонстрировать<br />

следующей схемой:<br />

Численные<br />

уравнения<br />

{3,5⋅ 8,6 = 30,1<br />

3,5⋅ 2,7 = 9,45<br />

3,5⋅−1,4= 4,9<br />

...<br />

Скалярные<br />

уравнения<br />

{Z 1 ⋅I 1 = U 1<br />

Z 2 ⋅I 2 = U 2<br />

Z 3 ⋅I 3 = U 3<br />

.. .<br />

Численные уравнения могут быть представлены одним скалярным (алгебраическим)<br />

уравнением. Например, если сопротивление равно 3,5<br />

Ома, то обозначив его символом Z1, численные значения, связывающие<br />

ток и напряжение, можно выразить одним уравнением Z1·I1=U1. Для другого<br />

сопротивления Z2 уравнение будет другим Z2 ·I2=U2. Система скалярных<br />

уравнений может быть представлена одним векторным уравнением,<br />

например, Za·Ia=Ua, где Za – матрица сопротивлений. Каждое векторное<br />

(матричное) уравнение может описывать какую-то одну электрическую<br />

схему. Для нескольких схем надо составить систему векторных<br />

уравнений. Эта система может быть представлена одним тензорным<br />

уравнением, например, Zαβ·I α =Uβ, где объекты будут тензорами. Одно такое<br />

тензорное уравнение может описывать сразу несколько схем, например,<br />

для электрических машин такое уравнение носит название "уравнение<br />

обобщенной электрической машины". Получение из тензорного<br />

уравнения одной системы векторных уравнений для конкретной схемы,<br />

может быть выполнено правилами проецирования на конкретную систему<br />

координат. В этой конкретной системе тензорное уравнение становится<br />

матричным с определенными свойствами, характерными для данной<br />

схемы.<br />

Тензорные уравнения могут быть обобщены далее. В этом случае они<br />

тоже носят название тензорных уравнений, но только более высокого<br />

порядка. (Например, в последнее время на базе тензорного исчисления<br />

получила распространение мультилинейная алгебра).<br />

Рассматриваемые в последующих разделах уравнения обобщенной<br />

электрической схемы можно отнести к тензорному типу уравнений, так<br />

как они представляют все возможные схемы, состоящие из заданного<br />

числа ветвей. Переход от одной схемы к другой выполняется посредством<br />

координатных преобразований.<br />

Индексная система хорошо приспособлена для отображения законов<br />

преобразования координат. Например, если обозначить I b – вектор тока<br />

10<br />

Векторные<br />

уравнения<br />

{Z a ⋅I a = U a<br />

Z b ⋅I b = U b<br />

Z c ⋅I c = U c<br />

.. .<br />

Тензорные<br />

уравнения<br />

{Z αβ ⋅I α = U β<br />

Z δγ ⋅I δ =U γ<br />

Z λμ ⋅I λ = U μ<br />

.. .


в исходной системе координат, а I s – вектор тока в новой системе координат,<br />

то преобразование вектора I b в вектор I s осуществляется по правилу:<br />

I b = C b s · I s ,<br />

(1.2.1)<br />

где C b s – тензор преобразований координат. Состав элементов<br />

тензора преобразований зависит от характера преобразований. При<br />

топологических преобразованиях схем C b s состоит из 0, +1 и -1. При<br />

преобразовании уравнений электрических машин C b s включает<br />

тригонометрические функции (синусы и косинусы углов поворота<br />

ротора), при переходе к симметричным составляющим многофазных<br />

схем C b s состоит из комплексных чисел и т.д.<br />

Для векторов напряжений используют нижние индексы. Если Ub –<br />

вектор напряжения в исходной системе координат, а Us – вектор напряжения<br />

в новой системе координат, то преобразование вектора Ub в вектор<br />

Us осуществляется по правилу, обратному по отношению к преобразованию<br />

токов:<br />

Us = Cs b · Ub. (1.2.2)<br />

Применение в обозначениях верхних и нижних индексов в матричнотензорной<br />

и тензорной формах, является характерным для тензорных<br />

объектов. Объекты с нижними индексами называют ковариантными<br />

тензорами, тензоры с верхними индексами называют контрвариантными.<br />

Контрвариантный, означает "изменяющийся противоположным образом",<br />

ковариантный — "изменяющийся одинаковым образом". Преобразования<br />

координат можно понимать как обобщенное масштабирование,<br />

когда исходное пространство служит базой или эталоном для нового<br />

пространства. Например, вектор токов I s нового пространства измеряется<br />

в единицах вектора токов I b исходного пространства. Матрица C b s<br />

является матрицей масштабов. Из формулы (1.2.1) следует, что I s = (C b s) -1<br />

· I b , Это означает, что с увеличением масштаба, т.е. с увеличением элементов<br />

матрицы C b s, компоненты вектора тока I s будут уменьшаться.<br />

Компоненты нового вектора напряжения Us , как это следует и формулы<br />

(1.2.2), наоборот, с увеличением коэффициентов матрицы Cs b будут также<br />

увеличиваться. Поэтому вектор тока – контрвариантный, вектор<br />

напряжений – ковариантный.<br />

В технике к ковариантным векторам можно отнести напряжение, скорость,<br />

температуру, давление. Для их измерений нужна некоторая разность<br />

отсчетов. Эти переменные можно назвать продольными. К контрвариантным<br />

векторам можно отнести электрический ток, механическую<br />

силу, тепловой поток, поток массы (газовый поток, гидравлический поток<br />

и т.п.). Эти переменные измеряются в точке. Их направление пер-<br />

11


пендикулярно некоторой плоскости. Контрвариантные векторы можно<br />

назвать поперечными.<br />

Для технических приложений смысл ковариантности и контрвариантности<br />

связан с измерениями и преобразованиями результатов измерений<br />

в ту систему координат, которая наиболее удобна для вычислений или<br />

наиболее проста для аппаратной реализации.<br />

***<br />

Тензор сопротивлений можно трактовать как "метрический" тензор.<br />

Такой тензор играет фундаментальную роль в тензорном исчислении.<br />

Рассмотрим смысл метрического тензора и сопоставим его с тензором<br />

сопротивлений.<br />

Важнейшим свойством различных систем координат является расстояние<br />

между двумя близко расположенными точками - элемент длины ds.<br />

Для прямоугольной системы координат квадрат этого расстояния вычисляется<br />

по теореме Пифагора:<br />

ds 2 =dx 2 +dy 2 ,<br />

где dx и dy - соответственно расстояния между точками по оси х и у. Для<br />

криволинейной системы координат формула несколько усложняется:<br />

(ds) 2 =E(du) 2 +2Fdu·dv+G(dv) 2 ,<br />

где du и dv расстояние между точками по координатам u и v. Теорема<br />

Пифагора является частным случаем этой формулы. Исходя из формулы<br />

для элемента длины, можно построить всю геометрию для выбранной<br />

системы координат. Три коэффициента E, F, G играют фундаментальную<br />

роль для определения свойств этой геометрии. В тензорном анализе<br />

принята другая форма записи для элемента длины:<br />

(ds) 2 =g11(dx1) 2 +g12dx1dx2+g21dx2dx1+g22d(x2) 2 ,<br />

где вместо обозначений u и v используются обозначения х1 и х2. Коэффициенты<br />

g12 и g21 равны друг другу: g12=g21. Коэффициенты g в формуле для<br />

элемента длины носят название метрических коэффициентов и являются<br />

компонентами метрического тензора:<br />

gαβ= g11 g12<br />

g21 g22<br />

Формулу для элемента длины можно записать более компактно в тензорной<br />

форме:<br />

(ds) 2 =gαβ · dx α dx β . (1.2.3)<br />

Теперь обратимся к пространству электрической схемы. Если схема<br />

описывается в контурных координатах, то мощность схемы можно выразить<br />

формулой в тензорных обозначениях, используя правила внутреннего<br />

произведения:<br />

P=Rαβ·i α ·i β , (1.2.4)<br />

12


где i α , i β – вектор контурных токов, Rαβ – матрица контурных сопротивлений.<br />

Сопоставляя (1.2.3) и(1.2.4) можно заключить, что мощность является<br />

аналогом квадрата элемента длины, а матрица контурных сопротивлений<br />

сопоставима с метрическим тензором. Если ту же схему описывать<br />

в координатах других контуров, то формула (1.2.4) останется прежней.<br />

Контурные токи связаны с вектором контурных э.д.с. eβ соотношением:<br />

i α =Y αβ ·eβ ,<br />

где Y αβ – матрица контурных проводимостей. Подставляя эту формулу в<br />

(1.2.4), получим выражение для расчета мощности через ковариантные<br />

компоненты:<br />

P= Y αβ ·еα·еβ. (1.2.5)<br />

Из равенства (1.2.4) и (1.2.5) можно заключить, что метрический тензор<br />

может быть представлен в ковариантных и контрвариантных координатах.<br />

Если в электрическую схему входят индуктивно связанные катушки,<br />

то можно говорить об энергии магнитного поля этих катушек. Энергия<br />

магнитного поля индуктивно связанных контуров выражается формулой:<br />

W=1/2·Lαβ·i α ·i β ,<br />

где Lαβ – матрица индуктивностей, i α , i β – вектор токов в катушках. Сопоставляя<br />

эту формулу с (1.2.3), можно сделать вывод, что энергия магнитного<br />

поля является аналогом квадрата элемента длины.<br />

Если в электрическую схему входят емкости, то можно говорить об<br />

энергии электростатического поля этих емкостей. Из теории электрических<br />

цепей известно, что энергия электростатического поля емкостей<br />

выражается формулой:<br />

W=1/2·С αβ ·Uα·Uβ,<br />

где С αβ – матрица емкостей, Uα, Uβ – вектор напряжений на емкостях. Сопоставляя<br />

эту формулу с (1.2.3), также можно сделать вывод, что энергия<br />

электростатического поля емкостей является аналогом квадрата элемента<br />

длины.<br />

***<br />

Приведенная аналогия между математическими объектами теории<br />

электрических цепей и математическими объектами тензорного исчисления<br />

позволяет применить этот математический аппарат для построения<br />

вычислительных моделей электрических схем. Существенным отличием<br />

тензорного анализа сетей от других реализаций тензорного исчисления,<br />

является использование объектов комбинаторной топологии –<br />

контурных и узловых матриц, включение их в состав тензорных операций.<br />

Такое включение позволяет анализировать единым образом не<br />

только искривленные и деформированные пространства, но и про-<br />

13


странства, разъединенные на отдельные части, дискретные пространства.<br />

1.3. Координатные преобразования уравнений.<br />

В тензорном анализе сетей различают цепь активную и неактивную.<br />

Неактивная цепь — это просто совокупность ветвей и узловых пар (одномерных<br />

и нульмерных симплексов). В активной цепи присутствуют<br />

токи и напряжения, определяющие в ней процессы. В тензорном анализе<br />

сетей токи и напряжения отображают не только процессы, но и топологию<br />

цепи, то есть представляют собой некоторую отображающую алгебраическую<br />

систему. Например, токи ветвей отображают ветви, узловые<br />

напряжения на ветвях отображают узловые пары ветвей. Соединенная<br />

схема топологически состоит из контуров и узловых пар, соответственно<br />

в отображающую систему входят контурные токи и узловые<br />

напряжения схемы. Вектора токов и напряжений задают систему координат<br />

(реперов). Переход к разным системам координат означает переход<br />

к разной топологии цепи.<br />

В дальнейшем используются следующие обозначения:<br />

U – напряжение на узловой паре;<br />

J – источник тока на узловой паре;<br />

e – источник напряжения, действующий вдоль ветви или в контуре;<br />

i – ток ветви или контура;<br />

V – напряжение на сопротивлении;<br />

I – ток в сопротивлении;<br />

z – сопротивление ветви или контура;<br />

Y – проводимость ветви или узловой пары;<br />

C – контурный тензор преобразования;<br />

A – узловой тензор преобразования.<br />

Ветвь является основным топологическим элементом схемы. Отдельные<br />

ветви отражают то или иное физическое явление и им можно приписать<br />

некоторое электрическое сопротивление (по методу электрических<br />

аналогий это может быть гидравлическое, тепловое или иное сопротивление).<br />

Совокупность таких отдельных ветвей представляет собой<br />

элементарную схему. Токи и напряжения сопротивлений ветвей в<br />

простейшем случае связаны между собой законом Ома :<br />

V = z · I. (1.3.1)<br />

Если обозначить I' – вектор тока в новой системе координат, то его<br />

связь с вектором тока элементарной схемы I выражается уравнением:<br />

I = C · I' , (1.3.2)<br />

где С отражает топологию схемы и может представлять собой матрицу,<br />

строки которой соответствуют ветвям схемы, а столбцы контурам схемы.<br />

Состав тензора С соответствует законам Кирхгофа. В тензорном<br />

14


анализе сетей рассматриваются обобщенные контуры, включающие как<br />

открытые, так и закрытые контуры, поэтому число столбцов тензора С<br />

равно числу открытых и закрытых контуров.<br />

Подставляя (1.3.2) в (1.3.1), получаем:<br />

V = z · C · I',<br />

умножая левую и правую части на Ct :<br />

Ct · V = Ct · z · C · I'.<br />

Если обозначить:<br />

V' = Ct · V,<br />

z' = Ct · z · C,<br />

что соответствует законам преобразования напряжения и сопротивлений,<br />

получаем:<br />

V' = z' · I'. (1.3.3)<br />

Сравнивая (1.3.3) с (1.3.1), видно, что форма уравнений осталась без изменений<br />

(то есть осталась инвариантной к выполненным преобразованиям).<br />

Вместе с тем изменился компонентный состав этих уравнений.<br />

Например, матрица z' теперь содержит контурные сопротивления и сопротивления<br />

узловых пар. Система уравнений (1.3.3) может быть решена<br />

относительно контурных токов или узловых напряжений.<br />

Рассмотрим преобразование мощности. Для элементарной схемы<br />

мощность, рассеиваемая в сопротивлениях:<br />

P = Vt · I.<br />

Подставляя формулы для преобразования токов и напряжений, убеждаемся<br />

в том, что мощность остается без изменений:<br />

P = Vt · C · I' = Vt' · I' = P',<br />

где использовано правило транспонирования матричного умножения:<br />

Vt' = (Ct · V)t = Vt · C .<br />

***<br />

Уравнения элементарной схемы могут иметь более сложный вид, чем<br />

закон Ома. Например, уравнения напряжений обобщенной электрической<br />

машины:<br />

U = R · I + L · dI/dt + ω ·G ·I.<br />

Тензор преобразований С, применяемый к этим уравнениям, как правило,<br />

соответствует вращениям системы координат, поэтому его компоненты<br />

являются функциями угла поворота, который в свою очередь зависит<br />

от времени, т.е. C=f(γ), γ= γ(t).<br />

Выполнив преобразование координат в соответствии с формулой<br />

I=C·I', получим то же самое по форме уравнение:<br />

U' = R' ·I' + L' ·dI'/dt + ω· G'· I',<br />

где компоненты вычисляются по формулам тензорных преобразований:<br />

R'=Ct ·R· C, L'=Ct· L ·C, G'=Ct ·G· C + Ct· L ·dC/dγ .<br />

15


Мощность электрической машины и форма уравнений электрической<br />

машины при тензорных преобразованиях остается инвариантной. Несмотря<br />

на неизменность формы уравнений, компонентный состав при<br />

преобразованиях изменяется. Специальным выбором тензора преобразований<br />

C можно добиться желаемого состава этих компонент.<br />

Например, ввести трехфазную систему координат, получить уравнения в<br />

симметричных составляющих для полей прямой и обратной последовательности<br />

и т.д. Все эти и другие преобразования рассматриваются в<br />

теории обобщенного электромеханического преобразования энергии.<br />

***<br />

Уравнения элементарных ветвей и схем могут быть составлены не<br />

только для различных физических явлений, но и для процессов в различных<br />

"временнόй развертке": переходных и установившихся процессов,<br />

частотного анализа. Координатными преобразованиями автоматически<br />

выводятся уравнения для различных схем, составленных из элементарных<br />

ветвей. Во второй главе приводятся уравнения элементарных<br />

ветвей для основных компонент электрических схем: линейных и<br />

нелинейных R-, L-, C- ветвей и управляемых источников. Основное внимание<br />

уделено уравнениям для непосредственного анализа процессов во<br />

времени. Такие уравнения наиболее универсальны, на их основе могут<br />

быть получены уравнения для других типов анализа: частотного, по постоянному<br />

току, операторные уравнения и т.д.<br />

16


1.4. Тензорная методология и описание технических устройств.<br />

В основе описания лежит математическая модель обобщенной ветви.<br />

Эта модель может быть получена на основе обыкновенных дифференциальных<br />

уравнений или уравнений в частных производных методами разностных<br />

аппроксимаций этих уравнений.<br />

обобщенные<br />

ветви<br />

...<br />

виды ветвей:<br />

электрические,<br />

магнитные, механические,<br />

тепловые, газогидравлические<br />

схемы замещения:разностноитерационные,<br />

операторные, в<br />

частотной области<br />

уравнения<br />

элементарной схемы:<br />

U + e = z ( i + J )<br />

тензор<br />

преобразований<br />

С 1<br />

С 2<br />

...<br />

С n<br />

виды тензора<br />

преобразований:<br />

матрицы соединений,обмоточныематрицы,<br />

матрицы<br />

вращения, матрицысимметричныхсоставляющих,дифференцирующие<br />

матрицы и<br />

т.д.<br />

уравнения<br />

преобразований:<br />

i = C i'<br />

уравнения<br />

преобразований:<br />

i' = C -1 i<br />

обобщенные<br />

схемы<br />

виды уравнений<br />

схем:<br />

контурные<br />

уравнения,<br />

узловые уравнения,контурноузловыеуравнения,уравненияобобщеннойэлектрическоймашины<br />

в различныхкоординатах...<br />

уравнения схемы:<br />

U' + e' = z' ( i' + J' )<br />

17<br />

тензор<br />

преобразований<br />

С Σ1<br />

С Σ2<br />

виды тензора<br />

преобразований:<br />

матрицы цепи<br />

пересечений,<br />

матрицы суммарной<br />

схемы<br />

и т.д..<br />

уравнения<br />

преобразований:<br />

i' = C i''<br />

уравнения<br />

преобразований:<br />

i'' = C -1 i'<br />

Рис. 1.4.1.Тензорное описание устройств.<br />

обобщенные<br />

устройства<br />

виды уравнений<br />

устройств:<br />

контурные<br />

уравнения,<br />

узловые уравнения,контурноузловыеуравнения<br />

уравнения устройства:<br />

U'' + e'' = z'' ( i'' + J'' )


Кроме разностных аппроксимаций, имеют распространение методы<br />

получения обобщенных ветвей на основе интегральных уравнений [11].<br />

Для расчетов в частотной области используются линейные параметры<br />

обобщенных ветвей.<br />

Одна или несколько обобщенных ветвей могут представлять однородный<br />

физический процесс. Для учета влияния друг на друга процессов<br />

разной природы используют управляемые источники, которые так же<br />

могут быть записаны в форме обобщенных ветвей.<br />

Вся совокупность обобщенных ветвей составляет элементарную схему.<br />

Число степеней свободы элементарной схемы равно числу обобщенных<br />

ветвей. Каждая ветвь задает координатную ось. Значения токов и<br />

напряжений в ветвях может быть произвольным.<br />

Конкретная схема ограничивает значения токов в ветвях. Ограничения<br />

задаются уравнениями связи, которые в тензором анализе сетей<br />

представляются в форме преобразования координат пространства элементарной<br />

схемы в пространство новой схемы. Уравнения связи не<br />

единственный способ перехода к новой системе координат. Переход может<br />

быть выполнен с помощью матриц вращения, матриц симметричных<br />

составляющих и т.д. в зависимости от содержания задачи.<br />

В результате преобразований формируются уравнения схемы в новых<br />

координатах. Если при топологических преобразованиях новые координаты<br />

- координаты контуров и узловых пар, соответственно уравнения<br />

формируются в контурном и(или ) узловом базисах. Возможен обратный<br />

переход от новых координат к координатам ветвей. Переход выполняется<br />

с использованием обратного тензора преобразований: С -1 ,<br />

входящего в уравнение i' = C -1 ·i. Таким образом, выполнив расчеты,<br />

например, токов в контурных координатах, результаты можно пересчитать<br />

на координаты ветвей и определить токи и напряжения ветвей. Для<br />

исследований работы трехфазных электрических машин в составе<br />

преобразователей частоты, расчеты выполняются в фазных координатах,<br />

результаты могут пересчитаны на координаты эквивалентной по<br />

мощности двухфазной машины. Аппаратная реализация координатных<br />

преобразований уравнений электрических машин позволяет измеренные<br />

фазные токи пересчитать в двухфазную вращающуюся систему координат,<br />

для которой выполняется настройка регуляторов. Полученные с<br />

двухфазных регуляторов сигналы пересчитываются обратно в трехфазную<br />

систему координат и управляют длительностью ШИМ-импульсов<br />

системы управления силовым инвертором.<br />

Для расчета устройств по частям, отдельные схемы представляются в<br />

узловом базисе. Форма уравнений напряжений остается при этом неизменной,<br />

такой же как и для уравнений обобщенных ветвей. Поэтому из<br />

уравнений схем можно получить уравнения устройства, составленного<br />

из этих схем. Переход к новым координатам так же выполняется на<br />

18


основе тензоров преобразований, которые получаются из уравнений<br />

связей схем друг с другом. Контурная матрица сопротивлений устройства<br />

оказывается меньших размеров, так как в нее входят только граничные<br />

координаты схем. Внутренние контурные координаты схем исключаются<br />

из расчета устройства. При исключении внутренних координат<br />

отдельных схем выполняется вычисления их обратных контурных матриц<br />

сопротивлений, которые могут быть небольших размеров. Таким<br />

образом, общие вычислительные затраты на расчет устройства снижаются.,<br />

кроме того, расчет отдельных схем может быть выполнен на параллельных<br />

процессорах. Выполнив расчеты устройства в координатах<br />

суммарной схемы, выполняется обратный пересчет токов в координаты<br />

отдельных ветвей.<br />

Уравнения устройства при тензорном анализе сетей формируются в<br />

том же виде, что и уравнения ветвей и схем, поэтому открывается возможность<br />

дальнейшего укрупненного описания и получения уравнений<br />

для метасистем.<br />

19


2. Моделирование цепей.<br />

2.1. Обобщенная ветвь.<br />

На рис.2.1.1 показана схема обобщенной ветви.<br />

Напряжение на внешних узлах ветви U равно разности между напряжением<br />

V на сопротивлении и электродвижущей силой е:<br />

U=V- e.<br />

Ток в ветви I равен сумме тока источника J и тока i, проходящего через<br />

ветвь:<br />

Закон Ома для сопротивления z:<br />

I=i+J.<br />

V=z·I, (2.1.1)<br />

Последнее равенство выразим через ток i и напряжение U:<br />

U+e=z·(i+J). (2.1.2)<br />

Уравнение (2.1.2) есть уравнение обобщенной ветви, приведенной на<br />

рис.2.1.1.<br />

Обобщенную ветвь можно представить в двух эквивалентных формах,<br />

приведенных на рис.2.1.2. Покажем это.<br />

i<br />

Преобразуем (2.1.2):<br />

I<br />

z<br />

U<br />

J - e/z<br />

a) узловая форма<br />

обобщенной ветви.<br />

i<br />

I<br />

z<br />

V<br />

Рис. 2.1.1. Обобщенная ветвь<br />

Рис. 2.1.2. Эквивалентные формы обобщенной ветви<br />

20<br />

J<br />

U<br />

i<br />

e<br />

z<br />

V<br />

U<br />

e-z·J<br />

б) контурная форма обобщенной<br />

ветви.


U+z·e/z=z·(i+J),<br />

U= z·[i+(J - e/z)].<br />

Обозначая Jэ= J - e/z, получим:<br />

(2.1.3)<br />

U= z·(i+Jэ). (2.1.3a)<br />

На рис.2.1.2а приведено изображение ветви, соответствующее формулам<br />

(2.1.3) и (2.1.3а). Такую форму обобщенной ветви назовем узловой<br />

формой, так как с ней удобно выполнять расчеты узловыми методами.<br />

Подобным образом можно получить контурную форму обобщенной<br />

ветви, не содержащую узлового источника тока:<br />

U+e=z·i+ z·J.<br />

(2.1.4)<br />

U+(e - z·J) =z·i.<br />

Обозначая eэ= e – z · J, получим:<br />

U+eэ = z·i. (2.1.4а)<br />

На рис.2.1.2б приведено изображение ветви, соответствующее формулам<br />

(2.1.4) и (2.1.4а).<br />

Кроме обобщенной ветви, применяются так называемые примитивные<br />

ветви. Для анализа схем по методу узловых напряжений в качестве<br />

примитивной ветви используется узловая ветвь, для анализа схем по методу<br />

контурных токов используется контурная ветвь (см. Рис. 2.1.3).<br />

a) узловая примитивная<br />

ветвь J = Y·U<br />

Рис. 2.1.3. Примитивные ветви<br />

Следует обратить внимание на то, что в тензорном анализе сетей источники,<br />

как правило, не представляют собой отдельную ветвь. Они<br />

предназначены в первую очередь для представления топологии схемы<br />

— узловых пар и контуров. Поэтому изображение на схеме, например,<br />

идеального источника тока будет означать то, что на данной координате<br />

задан ток узловой пары.<br />

21<br />

б) контурная примитивная<br />

ветвь e = z · i


2.1.1. Разностные схемы замещения линейных емкостей и индуктивностей<br />

Покажем, как при анализе переходных процессов представить описание<br />

емкости и индуктивности в форме обобщенной ветви. Сначала<br />

рассмотрим простейший способ, основанный на использовании формулы<br />

Эйлера 1-го порядка.<br />

2.1.1.1. Метод Эйлера 1-го порядка<br />

Составим разностную модель для емкостной ветви. Дифференциальное<br />

уравнение ветви с линейной емкостью: i=C dU<br />

заменим разност-<br />

ным аналогом. Если непрерывный процесс изменения напряжения и<br />

тока на емкости рассматривать в дискретные моменты времени, отстоящие<br />

друг от друга на одинаковом промежутке ∆t:<br />

t0, t1, t2, …, tn-1, tn, tn+1, … ,<br />

то производную в момент tn приближенно можно представить следующим<br />

образом:<br />

in≈C ΔU<br />

Δt =C U n−U n−1<br />

Δt<br />

dt<br />

(2.1.5)<br />

где Un и Un-1 - напряжение на емкости в моменты tn и tn-1 соответственно.<br />

Полученное соотношение называется разностью «назад», поскольку для<br />

определения производной требуется знать напряжение в предыдущий<br />

момент времени. Можно видоизменить выражение (2.1.5) двумя способами.<br />

В одном случае получим:<br />

в другом:<br />

U n −U n - 1 = Δt<br />

С i n ,<br />

(2.1.6)<br />

U n = Δt<br />

С i С<br />

n Δt U n - 1 . (2.1.7)<br />

В первом случае емкость можно представить резистивной ветвью с<br />

сопротивлением ∆t/С, с последовательно включенным источником<br />

напряжения, величина которого равна напряжению на емкости в предыдущий<br />

момент времени и взятому с обратным знаком e=-Un-1. Такое представление<br />

соответствует контурной форме обобщенной ветви<br />

(рис.2.1.4а). Во втором случае емкость можно представить резистивной<br />

ветвью с таким же сопротивлением ∆t/С, но с параллельно включенным<br />

источником тока Jn=(С/∆t)·Un-1, величина которого равна напряжению на<br />

емкости в предыдущий момент времени, умноженному на С/∆t. То есть,<br />

получаем две эквивалентные ветви:<br />

22


Δt<br />

C -U n-1<br />

a) контурная форма,<br />

формула (2.1.6).<br />

i n<br />

Рис. 2.1.4. Разностные схемы замещения емкости для неявного<br />

метода Эйлера 1-го порядка.<br />

Возможна также замена производной по времени разностью<br />

«вперед»:<br />

in≈C ΔU<br />

Δt =C U n +1−U n<br />

. (2.1.8)<br />

Δt<br />

Расчеты по формулам (2.1.5) и (2.1.8) существенно различаются. Для<br />

расчета по (2.1.5) ток в емкости вычисляется на следующем шаге, а по<br />

(2.1.8) ток в емкости должен быть вычислен на начальном шаге. В обоих<br />

случаях должно быть задано напряжение на емкости в начальный момент<br />

времени. Для формулы (2.1.5) это напряжение обозначено Un-1, для<br />

формулы (2.1.8) это напряжение обозначено Un. По этим известным<br />

напряжениям вычисляются напряжения на емкости на следующем шаге.<br />

Формула (2.1.5) в левой и правой части содержит неизвестные напряжение<br />

Un и ток in, такая формула называется неявной. Формула (2.1.8) только<br />

в одной части уравнения содержит искомое напряжение, которое<br />

обозначено Un+1, такая формула называется явной.<br />

Составим разностную модель индуктивности. Дифференциальное<br />

уравнение ветви с линейной индуктивностью: U =L di<br />

заменим разност-<br />

ным аналогом. Это дифференциальное уравнение выглядит так же, как и<br />

для емкости, если напряжение и ток поменять местами. Поэтому получаем<br />

узловую:<br />

i n −i n -1 = Δt<br />

L U n<br />

и контурную форму разностной схемы замещения индуктивности:<br />

U n L<br />

Δt i L<br />

n- 1 =<br />

Δt in С<br />

Jn<br />

= Un−<br />

1<br />

Δ t<br />

dt<br />

(2.1.9)<br />

(2.1.10)<br />

Этим двум уравнениям соответствуют две эквивалентные разностные<br />

схемы замещения индуктивности, приведенные на рис.2.1.5.<br />

Таким образом, емкостные и индуктивные ветви при расчете переходных<br />

процессов можно заменить резистивными ветвями. Тогда расчет<br />

сведется к расчету на каждом шаге резистивной схемы, где кроме независимых<br />

источников будут действовать источники тока и напряжения,<br />

величина которых должна быть определена на предыдущем шаге. Оче-<br />

23<br />

Δ t<br />

C<br />

б) узловая форма,<br />

формула (2.1.7).


видно, для первого шага должны быть известными начальные значения<br />

напряжения на емкости и тока в индуктивности.<br />

L<br />

Δ t<br />

-i n-1<br />

a) узловая форма,<br />

формула (2.1.9).<br />

i n<br />

Рис. 2.1.5. Разностные схемы замещения индуктивности для<br />

неявного метода Эйлера 1-го порядка.<br />

Приведем теперь алгоритм расчета переходного процесса в схеме, содержащей<br />

последовательно соединенные R, L, C ветви и источник постоянного<br />

напряжения Е с внутренним сопротивлением R1 (рис.2.1.6).<br />

Все перечисленные параметры будем считать известными.<br />

C L R2<br />

Известны также ток в индуктивности и напряжение на емкости в начальный<br />

момент времени. Требуется найти изменение тока в схеме и<br />

напряжение на емкости.<br />

Применим неявный метод Эйлера 1-го порядка - заменим инерционные<br />

ветви L и C их разностными аналогами (Рис. 2.1.7):<br />

R1<br />

E<br />

t<br />

C<br />

Δ<br />

R1<br />

E<br />

Очевидно, ток в схеме на n-м шаге можно вычислить по следующей<br />

формуле:<br />

24<br />

L<br />

t<br />

Δ<br />

L<br />

Δ t<br />

Рис. 2.1.6. Расчетная схема.<br />

-U С(n-1)<br />

e n =(L/Δt)·i n-1<br />

б) контурная форма,<br />

формула (2.1.10).<br />

R2<br />

Рис. 2.1.7. Разностный аналог расчетной схемы.<br />

e<br />

L<br />

Δ t<br />

n = in<br />

− 1


Е−U C n−1 in =<br />

L<br />

Δt i n−1<br />

R1 Δt L<br />

<br />

C Δt R2<br />

(2.1.11)<br />

Напряжение на емкости на n-м шаге определится из рассмотренной<br />

выше разностной схемы замещения емкости:<br />

U = Сn Δt<br />

С i nU Сn−1<br />

(2.1.12)<br />

Приведем теперь алгоритм расчета, используя язык программирования<br />

SciLAB. Для оценки правильности расчета допустим, что все активные<br />

сопротивления равны нулю. В этом случае в схеме должен установиться<br />

незатухающий колебательный процесс с периодом 2⋅π⋅ L⋅C .<br />

Входные переменные: C – величина емкости; L – величина индуктивности; R1<br />

– величина сопротивления источника; R2 – величина сопротивления цепи; E – значение<br />

источника напряжения; dt – расчетный шаг по времени; Tsum – время расчета;<br />

Uc0 – начальное напряжение на емкости; iL0 – начальный ток в индуктивности;<br />

Промежуточные переменные: Nt – размерность выходных массивов; n – номер<br />

текущей расчетной точки. iL — ток в индуктивности, Uc — напряжение емкости.<br />

Выходные переменные: iLg – массив значений тока в индуктивности; Ucg –<br />

массив значений напряжения на емкости, t – массив значений времени.<br />

clear ; //очистка всех данных<br />

C=1.0e-5; L=0.1; R1=0.; R2=0; E=1.; //Ввод параметров<br />

dt=0.000001; Tsum=0.02; //Ввод расчетного шага dt и времени расчета Tsum<br />

//Вычисление числа расчетных точек Nt<br />

Nt=floor(Tsum/dt); //вычисление наибольшего целого от деления<br />

Uc0=0.; iL0=0.; //Задание начальных условий<br />

t(1)=0; Ucg(1)=Uc0; iLg(1)=iL0;<br />

for n=2 : Nt, //Задание цикла по n<br />

// Расчетные формулы<br />

iL=(E-Uc0+L/dt*iL0)/(R1+dt/C+L/dt+R2);<br />

Uc=dt/C*iL+Uc0;<br />

//присвоение новых начальных значений для напряжения и тока<br />

iL0=iL; Uc0=Uc;<br />

//формирование массивов тока и напряжения для вывода на график<br />

iLg(n)=iL; Ucg(n)=Uc; t(n)=t(n-1)+dt;<br />

end // конец цикла по n<br />

plot2d( t, [100*iLg, Ucg]) // построение графиков<br />

Ниже на рис.2.1.8 приведены результаты расчетов при различных<br />

шагах dt. Как видно на рисунке, при шаге 1мкс результаты получаются<br />

достаточно точными, чего нельзя сказать для результатов, полученных<br />

при расчетном шаге 0,1мс.<br />

U, B<br />

100·i, A<br />

2.0<br />

1.5<br />

1.0<br />

0.5<br />

0.0<br />

-0.5<br />

i (dt= 0,1мс)<br />

25<br />

Uc (dt= 0,1мс)<br />

i (dt= 1мкс)<br />

Uc (dt= 1мкс)<br />

-1.0<br />

Рис. 2.1.8. Результаты расчета схемы Рис. 2.1.6 при разных значениях расчетного<br />

0.000 0.002 0.004 0.006 0.008 0.010 0.012 0.014 0.016 0.018 0.020<br />

шага.<br />

t, c


Можно заметить, что увеличение расчетного шага вносит такую погрешность,<br />

как будто в схеме присутствуют дополнительные сопротивления,<br />

вносящие затухание. Эта особенность является характерной для<br />

неявного метода расчета. Ее можно использовать для получения результатов<br />

расчета по постоянному току, внося искусственно заведомо<br />

большой расчетный шаг Δt. Действительно, подставив в (2.1.12) ток из<br />

(2.1.11), получим выражение для расчета напряжения на емкости через<br />

начальный ток и напряжение:<br />

U = Cn<br />

<br />

Е−U Cn - 1 L<br />

Δt i n - 1<br />

R1⋅C<br />

Δt 1L⋅C<br />

R2⋅C<br />

<br />

2<br />

Δt Δt<br />

U C n - 1 (2.1.13)<br />

Из формулы (2.1.13) видно, что при Δt ->∞ напряжение UС(n) -> E. Таким<br />

образом, на первом расчетном шаге сразу вычисляется напряжение на<br />

емкости, соответствующее установившемуся режиму. В нашем случае<br />

это 1В.<br />

Рассмотрим более сложный пример расчета переходных процессов в<br />

3-х контурной схеме с линейными R, L, C компонентами (рис.2.1.9).<br />

Требуется построить графики изменения напряжения на емкости С1 и<br />

тока в индуктивности L1.<br />

Рис. 2.1.9. Расчетная схема.<br />

Для расчета следует подготовить схему и расчетные формулы. Рекомендуется<br />

следующий порядок действий:<br />

1. Обозначить ветви и выбрать направление тока в ветвях.<br />

2. Записать значения параметров схемы и начальных условий:<br />

v1=1; R1=0.05; C1=1e-3; L1=1e-6; L2=2e-6; R2=1e3; v2=0.03;<br />

C2=2e-3;<br />

Uc10=0; Uc20=0; iL10=0; iL20=0;<br />

3. Заменить емкостные и индуктивные ветви разностными схемами<br />

замещения. Ввести схемные обозначения ветвей.<br />

4. Выбрать контуры, обозначить их, выбрать направление обхода. В<br />

результате расчетная схема замещения примет следующий вид:<br />

26


5. Предварительно выбрать расчетный шаг и число расчетных точек:<br />

dt=0.1e-3; N=100;<br />

6. Записать выражения для расчета начальных условий на емкостных<br />

и индуктивных ветвях:<br />

U20=Uc10; U60=Uc20; i30=iL10; i40=iL30;<br />

7. В соответствии с выбранным методом записать выражения для<br />

расчета параметров обобщенных ветвей:<br />

а) неинерционные ветви:<br />

Z1 = R1; e1 = v1;<br />

Z5 = R2; e5 = v2;<br />

б) инерционные ветви для метода Эйлера:<br />

Z2 = dt/C1; e2 = -U20;<br />

Z3 = L1/dt; e3 = i30*Z3;<br />

Z4 = L2/dt; e4 = i40*Z4;<br />

Z6 = dt/C2; e6 = -U60;<br />

8. Составить контурную матрицу сопротивлений:<br />

1k 2k 3k<br />

1k Z1+Z2 -Z2<br />

Zk= 2k -Z2 Z2+Z3+Z4+Z5 -Z5<br />

3k -Z5 Z5+Z6<br />

На главной диагонали записывается сумма сопротивлений, входящих<br />

в контур. В остальных клетках записывается сумма взаимных<br />

сопротивлений между контурами. Если через взаимные сопротивления<br />

контурные токи протекают в противоположных направлениях,<br />

то эти сопротивления записываются со знаком минус.<br />

9. Составить вектор контурных э.д.с:<br />

1k e1-e2<br />

ek= 2k e2-e3-e4-e5<br />

3k e5-e6<br />

10. Записать выражение для расчета контурных токов:<br />

ik = (Zk) -1 *ek;<br />

11.Записать выражения для токов в емкостных и индуктивных ветвях<br />

через контурные токи<br />

i2 = ik2 - ik1; i3 = -ik2; i4 = -ik2; i6 = -ik3;<br />

12.Записать выражения для расчета напряжения на емкостных ветвях:<br />

U2 = Z2*i2 - e2; U6 = Z6*i6 - e6;<br />

27


13. Записать выражения для новых начальных условий:<br />

U20=U2; i30=i3; i40=i4; U60=U6;<br />

Теперь приведем алгоритм расчета и программную реализацию на языке<br />

SciLab.<br />

28


Ввод параметров ветвей и<br />

начальных условий, расчетного<br />

шага и числа расчетных точек<br />

Расчет сопротивлений ветвей<br />

Расчет матриц контурных<br />

сопротивлений и проводимостей<br />

Начало цикла расчета<br />

Расчет контурных э.д.с.<br />

Расчет контурных токов<br />

Расчет напряжений и токов в<br />

ветвях<br />

Расчет новых начальных условий<br />

конец<br />

цикла?<br />

Построение графиков<br />

нет<br />

Входные переменные: C1,С2 – емкости<br />

ветвей;<br />

L1,L2 – индуктивности;<br />

R1,R2 – сопротивления;<br />

v1,v2 – значение источников напряжения;<br />

dt – расчетный шаг по времени; Nt –<br />

число расчетных точек;<br />

Uc10 – начальное напряжение на емкости<br />

С1;<br />

iL10 – начальный ток в индуктивности<br />

L1;<br />

Uc20 – начальное напряжение на емкости<br />

С2;<br />

iL20 – начальный ток в индуктивности<br />

L2;<br />

Промежуточные переменные:<br />

Z1-Z6 - расчетные сопротивления ветвей;<br />

e1-e6 - расчетные э.д.с. ветвей;<br />

Zk — матрица контурных сопротивлений;<br />

Yk - матрица контурных проводимостей;<br />

ek — вектор контурных э.д.с.;<br />

ik — вектор контурных токов;<br />

n – номер текущей расчетной точки.<br />

i2,i3,i4,i6 — токи в ветвях;<br />

U2,U6 — напряжения в ветвях.<br />

m - масштаб для исследования влияния<br />

величины расчетного шага;<br />

Выходные переменные: iL1g – массив<br />

значений тока в индуктивности;<br />

Uc1g – массив значений напряжения на<br />

емкости;<br />

t – массив значений времени.<br />

clear // очистка данных<br />

// Ввод параметров и задание начальных условий<br />

v1=1; R1=0.05; C1=1e-3; L1=1e-6; L2=2e-6; R2=1e3; v2=0.03; C2=2e-3;<br />

Uc10=0; Uc20=0; iL10=0; iL20=0;<br />

//Ввод расчетного шага dt и исла расчетных точек Nt<br />

m=1; // масштаб для исследования влияния величины расчетного шага<br />

dt=0.00001*m; Nt=100/m;<br />

// запись начальных условий<br />

U20=Uc10; U60=Uc20; i30=iL10; i40=iL20;<br />

//Расчет сопротивлений ветвей<br />

Z1 = R1; Z5 = R2;<br />

Z2 = dt/C1; Z3= L1/dt; Z4= L2/dt; Z6 = dt/C2;<br />

//Расчет матриц контурных сопротивлений и проводимостей<br />

Zk=[Z1+Z2, -Z2, 0;<br />

-Z2, Z2+Z3+Z4+Z5, -Z5;<br />

0, -Z5, Z5+Z6];<br />

Yk=Zk^(- 1);<br />

29


независимые источники напряжения<br />

e1 = v1; e5 = v2;<br />

Uc1g(1)=Uc10; iL1g(1)=iL10; t(1)=0; //Объявление выходных массивов<br />

for n=2:Nt, //Задание цикла по n<br />

//расчет контурных э.д.с.<br />

e2 = -U20; e3 = i30*Z3;<br />

e4 = i40*Z4; e6 = -U60;<br />

ek=[e1-e2; e2-e3-e4-e5; e5-e6]; //ввод вектора контурных э.д.с.<br />

//расчет контурных токов<br />

ik=Yk*ek;<br />

//расчет токов во всех инерционных ветвях и напряжений на емкостях<br />

i2 = ik(2) - ik(1); i3 = -ik(2); i4 = -ik(2); i6 = -ik(3);<br />

U2 = Z2*i2 - e2; U6 = Z6*i6 - e6;<br />

//расчет новых начальных условий<br />

U20=U2; U60=U6; i30=i3; i40=i4;<br />

//формирование массивов тока и напряжения для графика<br />

Uc1g(n)=U2; iL1g(n)=i3; t(n)=t(n-1)+dt;<br />

end // конец цикла по n<br />

plot2d (t,[iL1g, 10*Uc1g],leg='i@10*U') // построение графиков<br />

xgrid(2) // задание сетки<br />

2<br />

0<br />

-2<br />

-4<br />

-6<br />

-8<br />

-10<br />

-12<br />

0.0000 0.0001 0.0002 0.0003 0.0004 0.0005 0.0006 0.0007 0.0008 0.0009 0.0010<br />

i<br />

10*U<br />

Графики при увеличении расчетного шага:<br />

в 2 раза<br />

в 3 раза<br />

30 t, c


***<br />

Приведем версию рассмотренного алгоритма расчета одноконтурной<br />

схемы Рис. 2.1.6 на Фортране. В отличие от математического пакета<br />

SciLab, в Фортран-программах необходимо предварительно объявлять<br />

размер, тип массивов и тип некоторых переменных. Кроме того, Фортран<br />

не имеет встроенных средств для отображения графиков. Большие<br />

и маленькие буквы в SciLab — это разные символы. В Фортране за исключением<br />

символьных переменных, нет разницы между большими и<br />

маленькими буквами. В остальном, как можно убедиться далее, реализация<br />

алгоритма на Фортране мало отличается от его реализации в SciLab.<br />

Входные, промежуточные и выходные переменные остаются такими<br />

же. Перечислим отличия. Программа начинается с оператора program с<br />

именем rc и заканчивается оператором end program rc. Добавлен оператор<br />

объявления переменных iL, L, iL0, которые должны иметь вещественный<br />

тип (по умолчанию, в Фортране переменные, которые начинаются<br />

с символов i, j, k, l, m, n относятся к целому типу). Добавлен оператор<br />

объявления динамических массивов t, iLg, Ucg. Конкретный размер<br />

этих массивов становится известным после вычисления числа расчетных<br />

точек Nt, выделение памяти для массивов с этим размером выполняется<br />

в операторе allocate. Формат оператора цикла do в Фортране имеет<br />

несколько другой вид, чем в SciLab. Комментарии начинаются с символа<br />

восклицательный знак !.<br />

Вывод результатов на график организован средствами библиотеки<br />

DISLIN. В данном примере используется подпрограмма быстрого отображения<br />

графика qplot, которая удобна на этапе предварительных расчетов.<br />

Подпрограмма отображает только один график, поэтому обращение<br />

к ней выполняется столько раз, сколько графиков надо отобразить. После<br />

нажатия на правую кнопку мыши окно с графиком исчезает и появляется<br />

окно со вторым графиком. Чтобы окна не исчезали следует после<br />

1-й инициализации библиотеки DISLIN добавить обращение к подпрограмме:<br />

CALL WINMOD('NOERASE'); а перед отображением графика добавить<br />

обращение к подпрограмме открытия нового окна, например: CALL<br />

OPNWIN(3). Здесь цифра 3 означает номер окна. Перед последним графиком<br />

можно не открывать окно, в этом случае график отобразится по<br />

умолчанию в 1-е окно. Нажатие правой кнопки мыши на 1-м окне вызывает<br />

автоматическую загрузку новых окон, а если все окна уже отображены,<br />

то происходит завершение работы с DISLIN.<br />

program rc<br />

real iL, L, iL0<br />

real(4), allocatable :: t(:), iLg(:), Ucg(:) !Объявление динамических массивов<br />

C=1.0e-5; L=0.1; R1=0.; R2=0; E=1. ! Ввод параметров<br />

dt=0.000001; Tsum=0.02; ! Ввод расчетного шага dt и времени расчета Tsum<br />

! Вычиcление числа расчетных точек Nt<br />

Nt=floor (tsum/dt); ! вычисление наибольшего целого от деления<br />

! выделение памяти для массивов времени, тока и напряжения<br />

allocate ( t(Nt), iLg(Nt), Ucg(Nt) )<br />

Uc0=0.; iL0=0.; ! Задание начальных условий<br />

31


Ucg(1)=Uc0; iLg(1)=iL0; t(1)=0.<br />

do n=2, Nt ! Задание цикла по n<br />

! Расчетные формулы<br />

iL=(E-Uc0+L/dt*iL0)/(R1+dt/C+L/dt+R2)<br />

Uc=dt/C*iL+Uc0<br />

! присвоение новых начальных значений для напряжения и тока<br />

iL0=iL; Uc0=Uc;<br />

! формирование массивов тока, напряжения и времени для вывода на график<br />

iLg(n)=100 * iL; Ucg(n)=Uc; t(n)=t(n-1)+dt<br />

end do ! конец цикла по n<br />

! Организация вывода результатов на график<br />

call metafl('XWIN') ; !'XWIN' - вывод в окно, 'WMF' — вывод в графический файл<br />

call disini ; ! инициализация библиотеки DISLIN<br />

call titlin ( '100*iL', 2); ! вывод заголовка<br />

call qplot ( t, iLg, Nt ); ! отображение графика<br />

call disini<br />

call titlin ( 'Uc', 1); ! вывод 2-го заголовка<br />

call qplot ( t, Ucg, Nt ); ! отображение 2-го графика<br />

call disfin ! завершение работы с DISLIN<br />

end program rc ! завершение программы<br />

В результате, после расчета появятся окна с графиками. Сначала появится<br />

окно с графиком тока в индуктивности, затем, после нажатия на<br />

правую кнопку мыши, появится окно с графиком напряжения на емкости.<br />

Вид последнего окна будет следующим:<br />

Вид окна DISLIN с графиком напряжения на емкости для варианта<br />

расчета с шагом 0,1мс.<br />

32


2.1.1.2. Метод трапеций<br />

Дифференциальное уравнение ветви с линейной емкостью заменим<br />

интегральным уравнением:<br />

U t =U t0 1<br />

C ∫ t<br />

i t ⋅dt . (2.1.14)<br />

t0<br />

Если непрерывный процесс изменения напряжения и тока на емкости<br />

рассматривать в дискретные моменты времени, отстоящие друг от друга<br />

на ∆t, то заменяя интеграл формулой трапеций, можно представить выражение<br />

(2.1.14) следующим образом:<br />

U n +1 =U n Δt<br />

C ⋅i n+1i n<br />

, (2.1.15)<br />

2<br />

где Un+1 и Un − напряжение на емкости в моменты tn+1 и tn соответственно.<br />

Полученное соотношение соответствует формуле численного интегрирования<br />

методом трапеций, когда ток и напряжение на интервале ∆t<br />

приближенно можно считать изменяющимися линейно. Емкость в этом<br />

случае можно представить резистивной ветвью с сопротивлением Δt<br />

, с<br />

последовательно включенным источником напряжения, величина которого<br />

равна напряжению на емкости в предыдущий момент времени, взятому<br />

с обратным знаком и параллельно включенным источником тока,<br />

величина которого равна току в емкости на предыдущем шаге. То есть,<br />

получаем следующую эквивалентную ветвь, изображенную на<br />

рис.2.1.10.<br />

Составим разностную модель индуктивности. Дифференциальное<br />

уравнение ветви с линейной индуктивностью: U =L di<br />

заменим инте-<br />

dt<br />

гральным уравнением<br />

i t =i t 0 1<br />

L ∫ t0<br />

i n+<br />

1<br />

Это интегральное уравнение после применения формулы численного<br />

интегрирования методом трапеций будет выглядеть так:<br />

i =i <br />

n + 1 n Δt<br />

L ⋅U n +1U n<br />

2<br />

t<br />

U t ⋅dt<br />

33<br />

in<br />

Δ t<br />

− Un<br />

2C<br />

Рис. 2.1.10. Разностная схема<br />

замещения емкости для<br />

метода трапеций.<br />

2C<br />

. (2.1.16)


Формуле (2.1.16) соответствует разностная схема замещения индуктивности,<br />

приведенная на рис.2.1.11.<br />

Применение метода трапеций требует, чтобы<br />

были заданы ток и напряжение в начальный момент<br />

времени. Как правило, для емкости задается<br />

только начальное напряжение, а для индуктивности<br />

только начальный ток. Чтобы определить<br />

недостающие начальные условия, необходимо<br />

выполнить дополнительный расчет. Этот расчет<br />

можно сделать на основе разностных схем замещения<br />

методом Эйлера 1-го порядка. Расчет делается<br />

только на 1-м шаге, на последующих шагах<br />

необходимость в нем отпадает.<br />

Рассмотрим теперь применение метода трапеций. В этом методе кроме<br />

начальных условий – тока в индуктивности и напряжения на емкости,<br />

требуется знать напряжение на индуктивности и ток в емкости. Их<br />

можно вычислить, если использовать схемы замещения емкости и индуктивности<br />

для метода Эйлера 1-го порядка. Схема замещения для на-<br />

чального шага будет следующей:<br />

Для второго и последующих шагов схема замещения усложнится:<br />

i<br />

i<br />

R1<br />

E<br />

R1<br />

E<br />

t<br />

C<br />

Δ<br />

-UС(0)<br />

C(<br />

n−<br />

1)<br />

− L(<br />

n − 1)<br />

Δ t − U 2 ⋅ L U<br />

C(<br />

n − 1)<br />

L(<br />

n−<br />

1)<br />

2 ⋅ C<br />

Δ t<br />

Очевидно, ток в схеме на 1-м шаге можно вычислить по следующей<br />

формуле:<br />

Е−U C 0 i1 =<br />

L<br />

Δt i L0 <br />

R1 Δt L<br />

R2<br />

C Δt<br />

34<br />

e<br />

L<br />

t<br />

Δ<br />

n<br />

L<br />

= i<br />

Δ t<br />

L(<br />

0)<br />

i n + 1<br />

Рис. 2.1.11. Разностная<br />

схема замещения индуктивности<br />

для метода<br />

трапеций.<br />

R2<br />

R2<br />

2L<br />

Δ t<br />

− in<br />

Un


Ток в емкости, как и ток в индуктивности будут равны найденному<br />

току, iC(1) = i(1) , iL(1) = i(1) .<br />

Напряжение на емкости на 1-м шаге определится из рассмотренной<br />

выше разностной формулы:<br />

U С 1 = Δt<br />

С i1 U С 0<br />

Напряжение на индуктивности можно определить по формуле:<br />

U L1 =<br />

Для второго и последующего шагов надо выполнять расчет по второй<br />

схеме. Ток в схеме:<br />

L<br />

Δt ⋅i L0 i 1 Е −U C n - 1U L n- 1 2⋅L<br />

Δt i Δt<br />

L n- 1 − 2⋅C iC n - 1<br />

i n =<br />

R1 Δt 2⋅L<br />

<br />

2⋅C Δt R2<br />

Напряжение на емкости: U Δt<br />

С n =<br />

2С ⋅i n iC n- 1 U С n- 1<br />

Напряжение на индуктивности: U Ln =E −i n ⋅ R1R2−U C n<br />

Теперь построим алгоритм расчета по полученным соотношениям,<br />

используя язык системы SciLAB. Приведенная ниже программа позволяет<br />

выполнять расчет, как неявным методом Эйлера, так и методом<br />

трапеций.<br />

Входные данные: C – величина емкости; L – величина индуктивности; R1 – величина<br />

сопротивления источника; R2 – величина сопротивления цепи; E – значение<br />

источника напряжения; dt – расчетный шаг по времени; Tsum – время расчета;<br />

Uc0 – начальное напряжение на емкости; iL0 – начальный ток в индуктивности; k –<br />

число, соответствующее методу расчета: k=1 для метода Эйлера или k=2 для метода<br />

трапеций.<br />

Промежуточные данные: Nt – размерность выходных массивов; n – номер текущей<br />

расчетной точки.<br />

Выходные данные: iLg – массив значений тока в индуктивности; Ucg – массив<br />

значений напряжения на емкости, t – массив значений времени.<br />

clear // очистка данных<br />

C=1.0e- 5; L=0.1; R1=0; R2=0; E=1; / / Ввод параметров<br />

// Ввод расчетного шага dt и времени расчета Tsum<br />

dt=0.0001;Tsum=0.02;<br />

// Вычисление числа расчетных точек N<br />

Nt=round(Tsum /dt); // вычисление наименьшего целого от деления<br />

Uc0=0.; iL0=0.; // Задание начальных условий<br />

Ucg(1)=Uc0; iLg(1)=iL0; t(1)=0; // Объявление массивов<br />

k=2; // Ввод метода расчета: k=1 или k=2 для метода трапеций.<br />

for n=2:Nt, // Задаем цикл по n<br />

if ([k= = 1 ] | [ n = = 2 ] ) then // если расчет для 1-го порядка или для 1-го шага,то<br />

// ввод рекуррентных формул для расчета методом Эйлера 1-го порядка<br />

iL=(E- Uc0+L/dt * iL0) / (R1 +dt /C +L / d t +R2);<br />

Uc=dt /C*iL + Uc0;<br />

35


uL=(iL+iL0) *L / d t;<br />

else // иначе расчет для метода трапеций<br />

// Ввод рекуррентных формул для расчета методом трапеций<br />

iL=(E- Uc0+uL0+2 *L / d t * iL0- dt/(2 *C) *ic0) / (R1 +dt / ( 2 *C) + 2 * L / d t + R2);<br />

Uc=dt / (2 *C) * (iL +ic0) + Uc0;<br />

uL=E- iL*R1- iL*R2- Uc;<br />

end;<br />

// присвоение новых начальных значений для напряжения и тока<br />

Uc0=Uc; ic0=iL; iL0=iL; uL0=uL;<br />

// формирование массивов тока и напряжения для графика<br />

Ucg(n)=Uc; iLg(n)=iL; t(n)= t(n- 1)+dt;<br />

end // конец цикла по n<br />

plot2d(t,[100 *iLg, Ucg]) // построение графиков<br />

При запуске программы для метода Эйлера 1-го порядка и для метода<br />

трапеций получаем результаты при одном и том же расчетном шаге<br />

∆t=0,1мс:<br />

U, B<br />

100·i, A<br />

2.0<br />

1.5<br />

1.0<br />

0.5<br />

0.0<br />

-0.5<br />

-1.0<br />

0.000 0.002 0.004 0.006 0.008 0.010 0.012 0.014 0.016 0.018 0.020<br />

Рис. 2.1.12. Результаты расчета схемы Рис. 2.1.9 методом Эйлера первого<br />

порядка и методом трапеций при шаге 0,1мс:<br />

1,3 – напряжение и ток по методу трапеций<br />

2,4 – напряжение и ток по методу Эйлера.<br />

Как видно на рис.2.1.12, при одном и том же шаге метод трапеций дает<br />

более точный результат.<br />

Рассмотрим применение метода трапеций для расчета 3-х контурной<br />

схемы Рис. 2.1.9. Составим алгоритм для расчета как методом трапеций<br />

так и методом Эйлера 1-го порядка. Подготовительные этапы практически<br />

те же, что и рассмотрены ранее:<br />

1. Записать значения параметров схемы и начальных условий:<br />

v1=1; R1=1; C1=1e-6; L1=1e-3; L2=2e-3; R2=5; v2=3; C2=2e-6;<br />

Uc10=0; Uc20=0; iL10=0; iL20=0;<br />

36<br />

3<br />

1<br />

4<br />

2


2. Заменить емкостные и индуктивные ветви разностными схемами<br />

замещения. Ввести схемные обозначения ветвей.<br />

3. Выбрать контуры, обозначить их, выбрать направление обхода. В<br />

результате расчетная схема замещения примет следующий вид:<br />

4. Предварительно выбрать расчетный шаг и число расчетных точек:<br />

dt=0.1e-3; N=100;<br />

5. Записать выражения для расчета начальных условий на емкостных<br />

и индуктивных ветвях:<br />

U20=Uc10; U60=Uc20; i30=iL10; i40=iL30;<br />

6. В соответствии с выбранным методом записать выражения для<br />

расчета параметров обобщенных ветвей:<br />

а) неинерционные ветви:<br />

Z1 = R1; e1 = v1;<br />

Z5 = R2; e5 = v2;<br />

б) инерционные ветви для метода Эйлера:<br />

Z2 = dt/C1; e2 = -U20;<br />

Z3 = L1/dt; e3 = i30*Z3;<br />

Z4 = L2/dt; e4 = i40*Z4;<br />

Z6 = dt/C2; e6 = -U60;<br />

в) инерционные ветви для метода трапеций:<br />

Z2 = dt/(2*C1); e2 = -U20 - i20*Z2;<br />

Z3 = 2*L1/dt; e3 = U30 + i30*Z3;<br />

Z4 = 2*L2/dt; e4 = U40 + i40*Z4;<br />

Z6 = dt/(2*C2); e6 = -U60 - i60*Z6;<br />

7. Составить контурную матрицу сопротивлений:<br />

1k 2k 3k<br />

1k Z1+Z2 -Z2<br />

Zk= 2k -Z2 Z2+Z3+Z4+Z5 -Z5<br />

3k -Z5 Z5+Z6<br />

8. Составить вектор контурных э.д.с:<br />

37


1k e1-e2<br />

ek= 2k e2-e3-e4-e5<br />

3k e5-e6<br />

9. Записать выражение для расчета контурных токов:<br />

ik = (Zk) -1 *ek;<br />

10.Записать выражения для токов в емкостных и индуктивных ветвях<br />

через контурные токи<br />

i2 = ik2 - ik1; i3 = -ik2; i4 = -ik2; i6 = -ik3;<br />

11.Записать выражения для расчета напряжения на емкостных и индуктивных<br />

ветвях:<br />

U2 = Z2*i2 - e2; U3 = Z3*i3 - e3; U4 = Z4*i4 - e4; U6 = Z6*i6 - e6;<br />

12. Записать выражения для новых начальных условий:<br />

i20=i2;U20=U2;i30=i3;U30=U3;i40=i4;U40=U4;i60=i6;U60=U6;<br />

Далее следует составить алгоритм, в котором установить порядок расчета<br />

по приведенным формулам.<br />

clear // очистка данных<br />

// Ввод параметров и задание начальных условий<br />

v1=1; R1=0.05; C1=1e-3; L1=1e-6; L2=2e-6; R2=1e3; v2=0.03; C2=2e-3;<br />

Uc10=0; Uc20=0; iL10=0; iL20=0;<br />

m=1; // масштаб для исследования влияния величины расчетного шага<br />

dt=0.00001*m; Nt=100/m;<br />

k=2; // Ввод метода расчета: k=1 или k=2 для метода трапеций.<br />

// ввод начальных условий<br />

U20=Uc10; U60=Uc20; i30=iL10; i40=iL20;<br />

//расчет сопротивлений и проводимостей<br />

Z1 = R1; Z5 = R2;<br />

Z2_1 = dt/C1; Z3_1= L1/dt; Z4_1= L2/dt; Z6_1 = dt/C2;<br />

Z2_2 = dt/(2*C1); Z3_2 = 2*L1/dt; Z4_2 = 2*L2/dt; Z6_2 = dt/(2*C2);<br />

// для расчета проводимостей для обоих методов составляется функция<br />

function Y=Yk(Z1,Z2,Z3,Z4,Z5,Z6)<br />

Z=[Z1+Z2, -Z2, 0;<br />

-Z2, Z2+Z3+Z4+Z5, -Z5;<br />

0, -Z5, Z5+Z6];<br />

Y=Z^(- 1);<br />

endfunction ;<br />

// вычисление контурных проводимостей<br />

Yk_1=Yk(Z1, Z2_1, Z3_1, Z4_1, Z5, Z6_1);<br />

Yk_2=Yk(Z1, Z2_2, Z3_2, Z4_2, Z5, Z6_2);<br />

e1 = v1; e5 = v2;<br />

Uc1g(1)=Uc10; iL1g(1)=iL20; t(1)=0; // Объявление массивов для графиков<br />

for n=2:Nt, // Задаем цикл по n<br />

if ([k==1]|[n==2]) then // если расчет для 1-го порядка или для 1-го шага,то<br />

// расчет э.д.с. и контурных токов для метода Эйлера 1-го порядка<br />

e2 = -U20; e3 = i30*Z3_1;<br />

e4 = i40*Z4_1; e6 = -U60;<br />

ek=[e1-e2; e2-e3-e4-e5; e5-e6];<br />

ik=Yk_1*ek;<br />

38


else //расчет э.д.с. и контурных токов для метода трапеций<br />

e2 = -U20-i20*Z2_2; e3=U30+i30*Z3_2;<br />

e4 = U40+i40*Z4_2; e6=-U60-i60*Z6_2;<br />

ek=[e1-e2;e2-e3-e4-e5;e5-e6];<br />

ik=Yk_2*ek;<br />

end;<br />

// расчет токов в ветвях инерционных компонент<br />

i2 = ik(2) - ik(1); i3 = -ik(2); i4 = -ik(2); i6 = -ik(3);<br />

// расчет напряжений в ветвях инерционных компонент<br />

if ([k==1]|[n==2]) then // если расчет для 1-го порядка или для 1-го шага,то<br />

U2 = Z2_1*i2 - e2; U3 = Z3_1*i3 - e3; U4 = Z4_1*i4 - e4; U6 = Z6_1*i6 - e6;<br />

else<br />

U2 = Z2_2*i2 - e2; U3 = Z3_2*i3 - e3; U4 = Z4_2*i4 - e4; U6 = Z6_2*i6 - e6;<br />

end;<br />

// расчет начальных условий для следующего шага<br />

i20=i2; U20=U2; i30=i3; U30=U3; i40=i4; U40=U4; i60=i6; U60=U6;<br />

// формирование массивов тока и напряжения для графика<br />

Uc1g(n)=U2; iL1g(n)=i3; t(n)= t(n- 1)+dt;<br />

end //конец цикла по n<br />

plot2d(t,[iL1g, 10*Uc1g], leg='i@10*U') // построение графиков<br />

xgrid(2) // построение сетки<br />

39


2.1.1.3. Формула дифференцирования «назад».<br />

Рассмотрим применение формулы дифференцирования «назад» к-го<br />

порядка и покажем, что она также может быть согласована с уравнением<br />

обобщенной ветви.<br />

Согласно общей формуле дифференцирования «назад», производные<br />

токов и напряжений в текущий (n+1)-й момент времени в компонентных<br />

уравнениях представляются через рассчитанные токи и напряжения в<br />

предыдущие моменты времени согласно уравнению, соответствующему<br />

неявной форме:<br />

dx n +1<br />

dt<br />

1<br />

=−<br />

Δt ⋅∑<br />

k<br />

a j⋅x n +1 - j (2.1.17)<br />

j= 0<br />

где х - ток, либо напряжение инерционной ветви, Δt - временной шаг интегрирования,<br />

к - порядок метода, аj (j=0÷к) - постоянные коэффициенты,<br />

зависящие от порядка метода и рассчитываемые для j≥1 по формуле:<br />

аj=k∙(1-k)∙(2-k)...(j-1-k)/(k!∙j). (2.1.18)<br />

Коэффициент а0 определяется при этом по формуле: a 0 =−∑ j =1<br />

Уравнение (2.1.17) определяет соответствующие выражения для расчетов<br />

источников тока, напряжения, а также сопротивления Z в уравнении<br />

обобщенной ветви (2.1.2). Получим эти выражения.<br />

Ток линейной емкости С в момент времени tn+1 :<br />

in+1=C∙(dUn+1/dt). (2.1.19)<br />

Подставляя в (2.1.19) выражение производной (2.1.17), получим:<br />

Вынося за знак суммы 1-е слагаемое:<br />

in + 1 =− C<br />

Δt ⋅∑<br />

k<br />

a j⋅U n +1- j<br />

j = 0<br />

k<br />

a j .<br />

in +1 =− C⋅a 0<br />

Δt ⋅U C<br />

n+ 1− Δt ⋅∑<br />

k<br />

a j⋅U n +1 - j (2.1.20)<br />

j =1<br />

Решая уравнение (2.1.20) относительно напряжения получаем:<br />

U n +1 1<br />

k<br />

⋅∑ a j⋅U n +1- j =−<br />

a0 j =1<br />

Δt<br />

⋅i n+1 (2.1.21)<br />

C⋅a 0<br />

Теперь, если ввести обозначения:<br />

- напряжение и ток в емкости в текущий (n+1)-й момент времени:<br />

U = Un+1; i=in+1<br />

- источник напряжения на емкости, определяемый через значения<br />

напряжения, вычисленные на предыдущих шагах:<br />

e =<br />

- алгебраизированное сопротивление емкости:<br />

1<br />

k<br />

⋅∑ a j⋅U n +1 - j<br />

a0 j =1<br />

40


Z=-Δt/(a0∙C);<br />

- источник тока J=0,<br />

получим описание емкости в форме обобщенной ветви:<br />

U + e = Z∙(i + J).<br />

Поступая аналогичным образом, можно получить выражения для расчета<br />

параметров элементарной ветви линейной индуктивности:<br />

- напряжение и ток в индуктивности в текущий (n+1)-й момент времени:<br />

U = Un+1; i=in+1<br />

- источник тока индуктивности, определяемый через значения токов,<br />

вычисленных на предыдущих шагах:<br />

J = 1<br />

k<br />

⋅∑ a j⋅i n +1 - j<br />

a0 j = 1<br />

- алгебраизированное представление индуктивности:<br />

Z=-(a0∙L)/Δt<br />

- источник напряжения е=0.<br />

Алгоритм расчета с формулой дифференцирования «назад» к-го порядка<br />

должен предусматривать постепенный переход к формулам более<br />

высокого порядка. То есть расчет начинается с формулы 1-го порядка.<br />

Через m шагов (m≥1) порядок может быть увеличен. Для к-го порядка<br />

должно быть известно к предыдущих значений переменной.<br />

Следует заметить, что на практике большое распространение получил<br />

метод дифференцирования назад второго порядка, который имеет название<br />

метод Гира. Для этого метода α0=-1,5, α1=2 и α2=-0,5. Применение формулы<br />

дифференцирования "назад" рассмотрено в разделе расчета схем с<br />

нелинейными емкостями.<br />

41


2.1.2. Разностно-итерационные схемы замещения нелинейных ветвей<br />

2.1.2.1. Итерационные схемы замещения сопротивления.<br />

Если нелинейное сопротивление описывается функциональной зависимостью<br />

U=f(i), то нелинейный резистор при численных расчетах можно<br />

представить приближенно как линейное сопротивление, равное динамическому<br />

сопротивлению Rd0=∂U/∂i при токе i=i0. Тогда схему можно<br />

рассчитать как чисто резистивную и найти ток i1 в сопротивлении Rd0.<br />

Далее надо сравнить найденный ток i1 с начальным током i0. Если разница<br />

окажется слишком большой, то расчет следует повторить, но уже с<br />

новым начальным током i1 и с новым сопротивлением Rd1=∂U/∂i при этом<br />

токе. Затем произвести сравнение найденного тока i2 с предыдущим током<br />

i1. Если сравнение окажется неудовлетворительным, то расчет опять<br />

повторяется. Можно показать, что при монотонной зависимости U=f(i)<br />

процесс достаточно быстро сойдется к устойчивому решению.<br />

При численных расчетах вольт-амперная характеристика динамического<br />

сопротивления Rd0 описывается выражением:<br />

U − U0 = Rd0 ∙ (i − i0),<br />

где i0 – начальное приближение тока в нелинейном сопротивлении,<br />

напряжение U0=f(i0) – определяется по нелинейной ВАХ сопротивления,<br />

сопротивление Rd0=∂U/∂i при i=i0.<br />

Так как процесс является итерационным, то линеаризованное уравнение<br />

сопротивления записывается в следующем виде:<br />

Uк − Uк-1 = Rdк-1 ∙ (iк − iк-1), (2.1.22)<br />

где индекс к – указывает номер текущей итерации, индекс к-1 – указывает<br />

на значения, полученные на предыдущей итерации.<br />

Рассмотренный метод расчета соответствует методу Ньютона. Уравнение<br />

(2.1.22) можно представить схемой обобщенной ветви, если принять<br />

значение источника напряжения e=-Uk-1, значение источника тока<br />

J=-ik-1, сопротивление z=Rdk-1, искомое напряжение U=Uk и искомый ток<br />

i=ik.<br />

iк<br />

Rdк<br />

− 1<br />

Uк<br />

Рис. 2.1.13. Обобщенная ветвь, «настроенная» на метод Ньютона для<br />

нелинейного сопротивления.<br />

Кроме метода Ньютона применяют метод простых итераций, отличие<br />

которого состоит в том, что вместо динамического сопротивления ис-<br />

42<br />

− iк<br />

− 1<br />

− к −1<br />

U


пользуется статическое сопротивление Rc=U/i0 = f(i0)/i0, при токе i=i0. То<br />

есть при начальном токе вычисляется статическое сопротивление. Далее<br />

выполняется расчет схемы, в результате определяется новый ток. Вычисляется<br />

новое статическое сопротивление при найденном токе и т.д.<br />

Обобщенная ветвь, настроенная на метод простых итераций, не содержит<br />

источников. Уравнение ветви:<br />

Uк = Rск-1 ∙ iк . (2.1.23)<br />

Кроме аналитического задания вольтамперной характеристики, используют<br />

кусочно-линейную форму этой характеристики. В этом случае<br />

нелинейная резистивная ветвь заменяется итерационной схемой замещения<br />

как на рис.2.1.13. Итерации заканчиваются тогда, когда новое значение<br />

тока оказывается принадлежащим предыдущему кусочно-линейному<br />

участку вольтамперной характеристики.<br />

Рассмотрим теперь построение алгоритма расчета нелинейной схемы<br />

с последовательным соединением линейной и нелинейной части рис.<br />

2.1.14а.<br />

R<br />

Е<br />

U<br />

u= f (i)<br />

Рис. 2.1.14. Пример схемы с нелинейным сопротивлением.<br />

Линейная часть схемы представлена эквивалентным двухполюсником<br />

с последовательным соединением источника Е и сопротивления R.<br />

Нелинейная часть состоит из сопротивления, падение напряжение на котором<br />

зависит от протекаемого тока. Зависимость задана в виде функции<br />

f(i).<br />

Для определенности положим R=1 Ом, функция f(i) является квадратичной,<br />

т.е. u=i 2 . Требуется найти ток и напряжение на нелинейном сопротивлении<br />

при различных значениях напряжения источника питания<br />

в пределах от 0 до 24 В. Точность расчета задается числом ε.<br />

Применим итерационный метод Ньютона. Для этого заменим исходную<br />

схему на расчетную, где нелинейность заменена итерационной схемой<br />

замещения (рис.2.1.14.б). При расчете схемы, на каждой итерации<br />

находится ток в схеме с динамическим сопротивлением (см. рис.<br />

2.1.14.б):<br />

R<br />

Е<br />

U<br />

Rd o<br />

− u o<br />

а) исходная схема б) итерационная схема<br />

замещения<br />

43<br />

− i o


i= E−u o Rd⋅i o<br />

RRd<br />

Динамическое сопротивление зависит от тока и эту зависимость можно<br />

определить в данном случае аналитически: Rd=∂u/∂i=2·i.<br />

Ниже приведен алгоритм расчета на языке SciLab. В алгоритме начальный<br />

ток обозначен i0, найденный ток обозначен i, относительная<br />

разница между найденным током и начальным током сравнивается с<br />

числом ε по формуле ∣ i−i0<br />

i ∣ ≤ε . Результаты расчета – ток и напряжение,<br />

выводятся на график в виде точек, соединенных прямыми линиями. Для<br />

наглядности на график выводится обратная вольтамперная характеристика<br />

линейной части схемы, которая выражается формулой U=E-R·i.<br />

Входные данные: R – величина сопротивления источника; Е0 – начальное значение<br />

источника напряжения; dE – приращение для значений источника напряжения;<br />

Е0 – конечное значение источника напряжения; x– массив значений тока для<br />

построения обратной ВАХ; eps – точность расчета; N – максимальное число итераций;<br />

i0 – начальное значение тока в нелинейном сопротивлении.<br />

Промежуточные данные: E – массив значений источника напряжения; М – число<br />

значений источника напряжений; m - текущая расчетная точка; n – номер итерации.<br />

Выходные данные: ig – массив значений тока в нелинейном сопротивлении ; Ug<br />

– массив значений напряжения на нелинейном сопротивлении.<br />

clear ; //очистка всех данных<br />

R=1.; // ввод линейного сопротивления<br />

Е0=0; dE=4; Ek=24; E=[Е0: dE:Ek]; //ввод диапазона изменения питания<br />

M= round (Ek/ dE); //определение числа точек значений питания<br />

x=[0 1 2 3 4 5 6 8 9]; //массив для построения обратной ВАХ<br />

eps=0.0000000001; //задание точности<br />

N=500; //максимальное число итераций<br />

i0=0; //начальное значение тока<br />

for m=1: M // цикл по напряжению питания<br />

u0= i0**2; //расчет напряжения на нелинейном сопротивлении<br />

Rd=2* i0; // расчет динамического сопротивления<br />

for n=1: N, //цикл по итерациям<br />

i=(E(m)- u0+Rd*i0) / (R +Rd); // расчет тока<br />

if i==0. then i=0.00000001; end; // предотвращение деления на ноль<br />

if abs((i- i0)/i)


16<br />

U,B<br />

14<br />

12<br />

10<br />

Рис. 2.1.15. Результат расчета схемы с нелинейным сопротивлением.<br />

Точками обозначены найденные токи и напряжения.<br />

2.1.2.2. Разностно-итерационная схема замещения емкости.<br />

Ток в емкости описывается выражением:<br />

ic = dQ/dt,<br />

где Q − заряд на емкости.<br />

Заряд на емкости при численных расчетах можно представить через<br />

статическую емкость, зависящую от напряжения:<br />

Q=C(Uc) ∙ Uc.<br />

При численных расчетах производную некоторой функции можно<br />

представить приближенно по методу Гира как сумму этих функций, вычисленных<br />

в предыдущие моменты времени. По формуле Гира 2-го порядка<br />

для производной заряда в текущий, (n+1)-й момент времени:<br />

dQ<br />

dt ∣ ≈−<br />

t =t<br />

n +1<br />

1<br />

Δt ⋅ α0⋅Q n + 1α1⋅Q nα2⋅Q n- 1 . ,<br />

где ∆t − расчетный шаг; Qn+1 – значение заряда при t=tn+1, Qn – значение<br />

заряда при t=tn, Qn-1 – значение заряда при t=tn−1. Коэффициенты α0=−1.5,<br />

α1=2, α2=−0.5.<br />

Подставляя формулу Гира в выражение для тока в емкости, получим:<br />

in1 =− C n1U n1 ⋅α 0<br />

⋅U n1− Δt<br />

или после преобразования:<br />

8<br />

6<br />

4<br />

2<br />

0<br />

0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0<br />

C nU n⋅α 1<br />

⋅U n Δt<br />

Cn−1U n−1 ⋅α 2<br />

⋅U<br />

Δt<br />

n−1 .<br />

U n1 C n U n⋅α 1<br />

⋅U n C n1 U n1⋅α 0<br />

C n−1 U n−1 ⋅α 2<br />

Δt<br />

⋅U n−1 =−<br />

⋅i n1<br />

C n1 U n1 ⋅α 0 C n1 U n1 ⋅α 0 (2.1.24)<br />

,<br />

где Cn(Un) − статическая емкость, зависящая от напряжения на ней; Un −<br />

напряжение на емкости на n-ом шаге.<br />

Формуле (2.1.24) можно поставить в соответствие обобщенную ветвь,<br />

приведенную ниже на рисунке:<br />

45<br />

i,A


i n+ 1<br />

Zc(U n+1 )<br />

U n+1<br />

На приведенной схеме замещения:<br />

Схема замещения нелинейной емкости<br />

э.д.с. ветви ec = C nU n ⋅α 1<br />

⋅U n C n1U n1 ⋅α 0<br />

C n−1U n−1 ⋅α 2<br />

⋅U n−1 ,<br />

C n1U n1 ⋅α 0<br />

сопротивление ветви Z cU Δt<br />

n1 =−<br />

⋅i n1 C n1U n1 ⋅α .<br />

0<br />

В формуле (2.1.24), на текущем, (n+1)-ом шаге значение емкости<br />

Cn+1(Un+1) не известно, поэтому для его определения требуются простые<br />

итерации. Сначала задается то значение емкости, которое было определено<br />

на предыдущем временном шаге. Затем рассчитывают схему, находят<br />

напряжение на емкости и по статической характеристике определяют<br />

новое значение емкости. То есть напряжение на j−й итерации определяется<br />

при емкости, определенной на предыдущей, (j−1)−й итерации:<br />

j Δt<br />

U n1 =− j−1<br />

α0⋅C n1<br />

⋅i n1− C n⋅α 1<br />

⋅U j−1 n− C n1⋅α0<br />

C n−1⋅α 2<br />

⋅U j−1 n−1 ,<br />

C n1⋅α0<br />

по найденному напряжению уточняется значение емкости:<br />

j j<br />

C n1 = C U n1 <br />

Расчет повторяется до тех пор, пока новое значение емкости на j−й<br />

итерации не станет отличаться от емкости на предыдущей (j−1)−й<br />

итерации на требуемое значение. Требуемое значение должно быть таким,<br />

чтобы относительная точность расчета не была больше заданной<br />

∣ точности ε. То есть должно соблюдаться условие: C j j−1<br />

n1−C<br />

∣ n1<br />

j<br />

C n1<br />

≤ε .<br />

Расчет схемы организуется по внешнему и внутреннему циклу. Во<br />

внешнем цикле задается изменение времени, во внутреннем цикле<br />

производятся итерационные уточнения нелинейных параметров. Для<br />

выхода на метод 2-го порядка требуется по крайней мере одна точка,<br />

рассчитанная методом первого порядка. Для метода первого порядка<br />

α0=−1, α1=1. Уравнение напряжений емкостной ветви в этом случае:<br />

U n1 C n U n⋅α 1<br />

Δt<br />

⋅U n =−<br />

⋅i n1 (2.1.25)<br />

C n1 U n1⋅α 0 C n1 U n1 ⋅α 0<br />

Расчет по (2.1.25) также требует итераций. Схема замещения аналогична<br />

рассмотренной выше. Формулы (2.1.24) и (2.1.25), полученные в<br />

результате разностной аппроксимации производной по времени и итера-<br />

46<br />

e c


ционных уточнений емкости, называются разностно-итерационными<br />

формулами.<br />

Приведем пример расчета схемы с нелинейной емкостью. Пусть задана<br />

схема с нелинейной емкостью рис.2.1.16.<br />

Статическая емкость зависит от напряжения на ней закону, заданному<br />

таблицей:<br />

Uc, B -3 0 3 6 10 15 25<br />

C, Ф 0.7e-3 0.6e-3 0.51e-3 0.46e-3 0.41e-3 0.385e-3 0.37e-3<br />

Вольтамперную характеристику диода представим кусочно-линейной<br />

аппроксимацией, состоящей их двух линейных участков, описываемых<br />

логическим выражением: если id


Промежуточные данные: в программе схема рассчитывается методом контурных<br />

токов, матрица контурных сопротивлений обозначена z, вектор контурных<br />

напряжений ek, вектор контурных токов ik. Итерационные приближения тока в<br />

диоде обозначены id и id0. Условия сходимости для тока в диоде считаются<br />

выполненными, если оба этих приближения находятся в одном квадранте (т.е.<br />

одного знака).<br />

Соответствие обозначений, принятых в программе с обозначениями в формулах следующее:<br />

Cn-1 =C_1, Cn=C_0, C j n+1=Cj, C j-1 n+1 =Cj_1,<br />

Un-1=U_1, Un=U_0, Un+1=uc.<br />

Выходные данные: ucg(m) – массив значений напряжения на емкости; ig(m) – массив<br />

значений тока в диоде.<br />

clear; // очистка памяти<br />

R1=12.;R2=68.; // ввод линейных сопротивлений<br />

dt=0.0001;T=0.1;t=[0:dt:T]; //ввод диапазона времени<br />

M=round(T/dt); //определение числа расчетных точек по времени<br />

eps=0.02; //задание точности<br />

N=1500; //максимальное число итераций<br />

a0=-1; a1=1; //коэффициенты для формулы 1-го порядка<br />

m_gir=2; //число точек до выхода на метод Гира<br />

//ввод табличной зависимости статической емкости<br />

xc=[-3 0 3 6 10 15 25 ];<br />

yc=[ 0.7e-3 0.6e-3 0.51e-3 0.46e-3 0.41e-3 0.385e-3 0.37e-3];<br />

dc=splin(xc,yc); // построение сплайна для статической емкости<br />

xx=[-3:3:27]; yy=interp(xx,xc,yc,dc); //отображение сплайна в массив yy<br />

xset('window',1); //задается 1-е окно для графика нелинейной емкости<br />

plot2d(xx,yy,2,rect=[-3 0 25 0.7e-3]);xgrid(1)<br />

id0=0; uc_0=0; //начальное значение тока диода и напряжения емкости<br />

C_0=interp(uc_0,xc,yc,dc); //начальная емкость<br />

ec=-uc_0 //эдс разностно-итерационной схемы емкости<br />

for m=1:M // внешний цикл по времени<br />

E(m)=21*cos(2*%pi*50*t(m)); //источник питания схемы<br />

if id0>=0. then Rd=0.001; else Rd=1000; end; / /начальное сопротивление диода<br />

Cj_1=C_0; //начальное итерационное приближение емкости<br />

if m>m_gir then //условие перехода на метод Гира<br />

a0=-1.5; a1=2; a2=-0.5; //коэффициенты α в методе Гира<br />

end;<br />

for n=1:N, //внутренний итерационный цикл<br />

ek1=E(m)+ec; ek2=E(m); ek=[ek1;ek2];<br />

z=[R1+Rd+dt/(a0*Cj_1) R1+Rd; // Расчет схемы<br />

R1+Rd R1+R2+Rd ];<br />

ik=z^(-1)*ek; id=ik(1)+ik(2); // новый ток диода<br />

if m> m_ gir then //переход на метод Гира<br />

ec=(a1*uc_0*C_0/Cj_1+a2*uc_1*C_1/Cj_1)/a0;<br />

else ec=a1*uc_0*C_0/Cj_1; end; // метод 1-го порядка<br />

uc=-dt/(a0*Cj_1)*ik(1)-ec; //расчет напряжения на емкости<br />

Cj=interp(uc,xc,yc,dc); //расчет емкости<br />

//проверка точности итераций для емкости и диода<br />

48


if abs((Cj-Cj_1)/Cj)0.&id>0)|(id0


2.1.2.3. Разностно-итерационная схема замещения индуктивности.<br />

Рассмотрим теперь «настройку» на обобщенную ветвь разностноитерационной<br />

формулы для индуктивности.<br />

Напряжение на индуктивности описывается выражением:<br />

uL = dΨ/dt,<br />

где Ψ − потокосцепление катушки индуктивности. Потокосцепление катушки<br />

индуктивности можно выразить через статическую индуктивность,<br />

зависящую от тока:<br />

Ψ=L( iL ) ∙ iL.<br />

При численных расчетах производную некоторой функции от времени<br />

можно заменить интегральным выражением, то есть для потокосцепления<br />

можно записать:<br />

t<br />

n + 1<br />

u L⋅dt ,<br />

Ψ t n+ 1 = Ψ t n ∫ t n<br />

где Ψ(tn+1) − потокосцепление в текущий, (n+1)-й момент времени, Ψ(tn) −<br />

потокосцепление в предыдущий, n-й момент времени. Интеграл приближенно<br />

можно вычислить по формуле трапеций, тогда формула для потокосцепления<br />

будет выглядеть так:<br />

u Ln<br />

Ψ t n+ 1 = Ψ t n Δt⋅ uL n+1<br />

2<br />

Из этой формулы получаем выражение для модели индуктивности на текущем<br />

(n+1)-м шаге по времени:<br />

u u Ln1 Ln = 2<br />

Δt ⋅[Ψ t n1−Ψ t n]= 2<br />

Δt ⋅ Ln1⋅i Ln1−L n⋅i Ln .<br />

Или, что то же самое:<br />

u Ln1u Ln 2⋅L n<br />

Δt ⋅i L =<br />

n 2⋅Ln1 Δt ⋅i L , (2.1.26)<br />

n1<br />

где ∆t − расчетный шаг; Ln+1 – значение индуктивности при t=tn+1, Ln –<br />

значение индуктивности при t=tn.<br />

Формуле (2.1.26) можно поставить в соответствие обобщенную ветвь,<br />

приведенную ниже на рисунке:<br />

i n+1<br />

Z L (i n+1 )<br />

U n+1<br />

Схема замещения нелинейной индуктивности<br />

На приведенной схеме замещения:<br />

50<br />

e L


э.д.с. ветви e L =u Ln 2⋅L n<br />

Δt ¿i L n<br />

сопротивление ветви Z L = 2⋅L n1<br />

Δt ⋅i L n1<br />

Как видно из формулы (2.1.26), на текущем, (n+1)−м расчетном шаге индуктивность<br />

Ln+1(in+1) не известна. Ее находят итерационным способом,<br />

задаваясь для начала тем значением, которое было определено на предыдущем<br />

временном шаге. Затем рассчитывают схему, находят ток в<br />

индуктивности и по статической характеристике определяют новое зна-<br />

j j<br />

чение индуктивности Ln +1 = Lin + 1<br />

. Расчет повторяется до тех пор, пока<br />

j<br />

новое значение индуктивности на j−й итерации Ln +1 не станет отличать-<br />

j- 1<br />

ся от индуктивности на предыдущей (j−1)−й итерации Ln +1 на требуемое<br />

значение. Требуемое значение должно быть таким, чтобы относительная<br />

точность расчета не была больше заданной точности ε. То есть<br />

∣ должно соблюдаться условие: L j j -1<br />

n + 1-<br />

L<br />

∣ n +1<br />

j<br />

Ln +1<br />

≤ε .<br />

Для расчета методом трапеций требуется знание не только начального<br />

тока в индуктивности, но и начального напряжения на ней. Это<br />

напряжение можно рассчитать другим методом, например неявным методом<br />

Эйлера. То есть надо как минимум первый шаг по времени выполнить<br />

расчет методом Эйлера, а затем перейти на метод трапеций.<br />

Уравнение напряжений нелинейной индуктивной ветви для неявного<br />

метода Эйлера:<br />

u Ln 1 = L n + 1<br />

Δt ⋅i L n1 − L n<br />

Δt ⋅i L n<br />

, (2.1.27)<br />

где Ln+1 зависит от напряжения ULn+1 и уточняется в итерационном цикле.<br />

Схема замещения такая же, как и для метода трапеций, но с другим «составом»<br />

сопротивления и источника напряжения.<br />

Приведем пример расчета. Пусть задана схема с нелинейной индуктивностью<br />

рис.2.1.17а.<br />

Рис. 2.1.17. Пример схемы с<br />

нелинейной индуктивностью.<br />

Статическая индуктивность пусть задана аналитической зависимо-<br />

стью от тока: L i = 1<br />

b⋅i<br />

E<br />

R<br />

L(i)<br />

а) исходная схема.<br />

ia<br />

ln a , где а=1/3, b=3.<br />

51<br />

Z L (i L )<br />

e L<br />

б) разностно-итерационная<br />

схема замещения.


Схема включается на постоянный источник напряжения Е. Для такой<br />

схемы известно точное аналитическое решение:<br />

a⋅RE ⋅eb⋅t⋅a⋅RE<br />

it = a⋅[<br />

−1]<br />

.<br />

b⋅t⋅a⋅RE <br />

E a⋅R⋅e<br />

Ниже приведен алгоритм численного расчета методом трапеций. Схема<br />

заменяется разностно-итерационным аналогом, приведенным на<br />

рис.2.1.17б.<br />

Входные данные: b,a – параметры нелинейной индуктивности; Е – значение источника<br />

напряжения; r – сопротивление индуктивности; dt – расчетный шаг, T – время<br />

моделирования; eps – точность расчета; N – максимальное число итераций;<br />

m_trap - число точек до выхода на метод трапеций, если m_trap присвоить число<br />

М+1, где М+1 число расчетных точек переходного процесса, то весь переходный<br />

процесс будет рассчитываться неявным методом Эйлера 1-го порядка.<br />

Формула аналитического решения введена как функция f2=tok(x), которая<br />

выводится на график через массив ietalon(m). Нелинейная индуктивность задана в<br />

виде функции LL(x). x=0.0001 – это значение вводится для предотвращения деления<br />

на ноль.<br />

Промежуточные данные: zL – алгебраизированное сопротивление индуктивности;<br />

eL - источник напряжения индуктивной ветви; iL – ток индуктивной ветви.<br />

Соответствие обозначений, принятых в программе с обозначениями в формулах<br />

следующее:<br />

Ln=L_0, L j n+1=Lj, L j-1 n+1=Lj_1,<br />

iLn=iL_0, iLn+1=iL.<br />

Выходные данные: iLg(m) – массив значений тока в индуктивности.<br />

clear ;<br />

dt=0.002;T=0.028;t=[0:dt:T]; //ввод диапазона времени<br />

M=round(T/dt); //определение числа расчетных точек по времени<br />

eps=0.000002; //задание точности<br />

N=1500; //максимальное число итераций<br />

m_trap=1; //порядок метода<br />

b=3; a=1/3; E=120; r=20; x=0.0001; //ввод параметров схемы<br />

//ввод статической индуктивности и аналитической функции эталонного решения<br />

function f=LL(x), f=log((x+a)/a)/b/x; endfunction;<br />

function f2=tok(x), f2=a*((a*r+E)*exp(b*x*(a*r+E))/(E+a*r*exp(b*x*(a*r+E)))-1.0 );<br />

endfunction;<br />

iL_0=0.0001; //начальное значение тока в индуктивности<br />

L_0=LL(iL_0); //начальная индуктивность для шага по времени<br />

for m=1:M+1 // внешний цикл по времени<br />

Lj_1=L_0; //начальная индуктивность для итераций<br />

for n=1:N, //внутренний итерационный цикл<br />

//Расчет схемы<br />

if m>m_trap then zL=2*Lj_1/dt; eL=iL_0*2*L_0/dt+uL_0;<br />

else zL=Lj_1/dt; eL=iL_0*L_0/dt; end;<br />

iL=(E+eL)/(zL+r);<br />

if iL==0. then iL=0.0000001; end; //предотвращение деления на ноль<br />

Lj=LL(iL); //новая индуктивность внутри итерации<br />

if Lj==0. then Lj=0.0000001; end; //предотвращение деления на ноль<br />

if abs((Lj-Lj_1)/Lj)


Lj_1=Lj; //новая индуктивность становится начальной внутри итерации<br />

end; //окончание цикла по итерациям<br />

uL_0=zL*iL-eL; // расчет напряжения на индуктивности<br />

iLg(m)=iL_0; // вывод тока во внешний массив<br />

iL_0=iL; //новый ток в индуктивности<br />

L_0=Lj; //индуктивность для следущего шага<br />

ietalon(m)=tok(t(m)); //запись эталонного тока во внешний массив<br />

end; //окончание внешнего цикла по времени<br />

plot2d(t',[iLg, ietalon]) //построение графиков<br />

xgrid(1); // построение сетки<br />

Результаты расчетов для эталонного решения, а также для метода Эйлера<br />

1-го порядка и метода трапеций при dt=0.002 и eps=0.000002 приведены<br />

ниже:<br />

1.0 L, Гн<br />

0.9<br />

0.8<br />

0.7<br />

0.6<br />

0.5<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

i, A<br />

0.0<br />

0 1 2 3 4 5 6 7 8 9 10<br />

зависимость индуктивности от тока<br />

i , A<br />

L 6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

t, c<br />

0.000 0.005 0.010 0.015 0.020 0.025 0.030<br />

Результаты расчета переходных процессов:<br />

Сплошная линия − аналитическое решение<br />

• − метод трапеций;<br />

▼ − неявный метод 1-го порядка.<br />

53


2.1.3. Управляемые источники<br />

Представим управляемые источники в форме обобщенной ветви<br />

(2.1.2). Рассмотрим сначала источник напряжения, управляемый током.<br />

Пусть источник напряжения ветви z2 управляется током ветви z1,то<br />

есть e2=k∙i1, где k-коэффициент передачи управляемого источника.<br />

i 1<br />

I 1<br />

J 1<br />

V 1<br />

z 1<br />

U 1<br />

e 1<br />

Уравнения, описывающие эти ветви:<br />

{ U 1e 1 = z 1⋅i 1J 1<br />

U 2e 2 = z2⋅i 2 J 2 <br />

Подставляя в 1-е уравнение вместо e2 выражение k∙i1, и производя алгебраические<br />

преобразования, получим систему уравнений, которая в<br />

матричной форме будет иметь следующий вид, который описывает<br />

источник напряжения, управляемый током e2=k∙i1:<br />

1∣ −k⋅J =∣ z1 0<br />

2∣ −k z ⋅∣ i 2∣ 1<br />

i ∣ J 2∣ 1<br />

J <br />

∣ U 1<br />

U 2∣ ∣ e 1<br />

Делая аналогичные выкладки, можно получить выражения для:<br />

- источника напряжения, управляемого напряжением e2=k·U1:<br />

z1 0<br />

2∣ z ⋅∣ i 2∣ 1<br />

i ∣ J 2∣ 1<br />

J <br />

∣ U 2∣ 1<br />

U ∣ e 1∣ 1<br />

−k⋅e =∣<br />

−k⋅z 1<br />

- источника тока, управляемого током J2=k·i1:<br />

2∣ e =∣ z1 0<br />

2∣ z ⋅∣ i 2∣ 1<br />

i ∣ J 1∣ 1<br />

−k⋅J <br />

∣ U 1<br />

U 2∣ ∣ e 1<br />

k⋅z 2<br />

- источника тока, управляемого напряжением J2=k·U1:<br />

∣ U 2∣ 1<br />

U ∣ e 2∣ 1<br />

e =∣<br />

z1 0<br />

2∣ k⋅z 1⋅z 2 z ⋅∣ i 2∣ 1<br />

i ∣ J 1∣ 1<br />

−k⋅e <br />

Рассмотрим нелинейные управляемые источники.<br />

Пусть имеем нелинейный источник тока, управляемый током: J2=J2(i1).<br />

{ U 1 e 1 =z 1 ⋅i 1 J 1<br />

U 2 e 2 =z 2 ⋅i 2 J 2 i 1 <br />

Применяя метод Ньютона, заменяем уравнения конечными разностями,<br />

вызванными итерационными приращениями. Независимые источники<br />

не получают при этом итерационных приращений. Тогда можно записать:<br />

54<br />

i 2<br />

I 2<br />

J 2<br />

z 2<br />

V 2<br />

U 2<br />

e 2 = k·i 1


{ΔU 1 = z1⋅Δi ⋅<br />

1<br />

ΔU 2 =z 2 Δi2 ∂ J 2<br />

∂i 1<br />

Δi 1<br />

В этой системе уравнений заменяем Δ на итерационные разности:<br />

{<br />

j +1 j j +1 j<br />

U 1 −U 1=z<br />

1⋅i 1 −i1 <br />

⋅ j +1 j<br />

U 2 −U 2=z<br />

2 i j +1 j ∂ J 1<br />

2 j +1 j<br />

2 −i2<br />

∂i<br />

i1 −i1<br />

1<br />

записываем в матричной форме обобщенной ветви:<br />

{∣ U j + 1<br />

1<br />

j<br />

U<br />

+1∣<br />

2 ∣<br />

−U j<br />

1<br />

j∣ −U 2 =∣<br />

z 1<br />

z 2 ⋅ ∂ J 2<br />

∂i 1<br />

0<br />

z 2∣⋅∣ i 1<br />

1∣<br />

j+ 1<br />

j +<br />

i2 ∣ −i j∣<br />

j<br />

1<br />

−i 2<br />

<br />

Аналогично можно получить выражения для:<br />

- нелинейного источника тока, управляемого током: J2=J2(U1)<br />

{∣ U j + 1<br />

1<br />

j<br />

U<br />

+1∣<br />

2 ∣<br />

−U j<br />

1<br />

j∣ −U 2 =∣<br />

z 1<br />

z 1 ⋅z 2 ⋅ ∂ J 2<br />

∂U 1<br />

0<br />

z 2∣⋅∣ i 1<br />

j +1<br />

j<br />

i<br />

+1∣<br />

2 ∣ −i j∣<br />

j<br />

1<br />

−i2 <br />

- нелинейного источника напряжения, управляемого напряжением:<br />

e2=e2(U1)<br />

{∣ U j + 1<br />

1<br />

j<br />

U<br />

+1∣<br />

2 ∣<br />

−U j<br />

1<br />

j∣ −U 2 =∣<br />

z 1<br />

−z 1⋅ ∂ e2 ∂ U 1<br />

0<br />

z 2∣⋅∣ i 1<br />

1∣<br />

j + 1<br />

j +<br />

i2 ∣ −i j∣<br />

j<br />

1<br />

−i2 <br />

- нелинейного источника напряжения, управляемого током: e2=e2(i1)<br />

{∣ U j + 1<br />

1<br />

j<br />

U<br />

+1∣<br />

2 ∣<br />

−U j<br />

1<br />

j∣ −U 2 =∣<br />

z 1<br />

− ∂ e 2<br />

∂i 1<br />

0<br />

z 2∣⋅∣ i 1<br />

j +1<br />

j<br />

i<br />

+1∣<br />

2 ∣ −i j∣<br />

j<br />

1<br />

−i2 <br />

Особенность представления всех представленных управляемых источников<br />

- они должны обладать внутренним сопротивлением - это вытекает<br />

из принятого описания схем через элементарную ветвь, которой<br />

обязательно приписывается сопротивление.<br />

Аналогичным образом можно получить выражения для источников,<br />

управляемых двумя, тремя ветвям или большим числом ветвей. Все эти<br />

выражения можно представить в форме:<br />

U+e=z·(i+J).<br />

Отличие приведенной формы от уравнения обобщенной ветви (2.1.2)<br />

только в матричной форме записи.<br />

55


2.2. Топологические модели электрических схем<br />

2.2.1. Матричная форма законов Кирхгофа<br />

Топологические модели рассмотрим на простом, но достаточно общем<br />

примере. Пусть дана схема из шести обобщенных ветвей рис.2.2.1.<br />

Это могут быть резисторы, емкости, индуктивности, источники и т.д.<br />

Положительные направления токов и напряжений соответствуют принятым<br />

на рис.2.1.1 положительным направлениям обобщенной ветви.<br />

z1<br />

Связь между токами ветвей устанавливается 1-м законом Кирхгофа:<br />

для узла 1: iz3 – iz5 – iz6 = 0,<br />

для узла 2: iz1 – iz2 – iz3 = 0,<br />

для узла 3: –iz1 + iz2 + iz4 = 0,<br />

для узла 4: –iz4 + iz5 + iz6 = 0,<br />

Если ввести вектор токов:<br />

z1 z2 z3 z4 z5 z6<br />

it = iz1 iz2 iz3 iz4 iz5 iz6<br />

2 1<br />

z2<br />

то 1-й закон Кирхгофа можно выразить в матричной форме:<br />

z1 z2 z3 z4 z5 z6 iz2<br />

1 1 -1 1 iz3<br />

2 1 -1 -1 · iz4 = At ∙ i = 0<br />

3 -1 1 1 iz5<br />

z4<br />

3 4<br />

Рис. 2.2.1. Пример схемы, состоящей из обобщенных ветвей.<br />

(2.2.1)<br />

В этом выражении матрица Аt содержит три строки, номера которых<br />

соответствуют номеру узла. Если ветвь выходит из узла, то соответствующий<br />

элемент матрицы равен 1, если ветвь входит в узел, то ставится -1.<br />

Индекс t в обозначениях матриц и векторов означает транспонирование.<br />

Матрица А называется узловой матрицей.<br />

Следует заметить, что матрица Аt не содержит строки, соответствующей<br />

4-му узлу. Это связано с тем, что потенциал одного из узлов схемы<br />

56<br />

z3<br />

iz1<br />

iz6<br />

z5 z6


считается равным нулю, поэтому этот узел в расчет не принимается. В<br />

данном случае за нулевой узел принят 4-й узел схемы.<br />

В схеме можно выделить независимые токи, например в 1-й, 2-й и 6-й<br />

ветвях и через них выразить оставшиеся токи. Тогда систему уравнений<br />

для 1-го закона Кирхгофа можно переписать:<br />

iz1 = iz1,<br />

iz2 = iz2,<br />

iz3 = iz1 − iz2,<br />

iz4 = iz1 − iz2,<br />

iz5 = iz1 − iz2 − iz6,<br />

iz6 = iz6<br />

или в матричной форме:<br />

iz1 z1 1<br />

z1 z2 z6<br />

iz2 z2 1 iz1<br />

iz3 = z3 1 -1 · iz2 = C ∙ ik<br />

iz4 z4 1 -1 iz6<br />

iz5 z5 1 -1 -1<br />

iz6 z6 1<br />

(2.2.2)<br />

В полученном матричном выражении матрица С содержит 3 столбца.<br />

Можно показать, что в каждом столбце перечисляются ветви, входящие<br />

в независимый контур. Ток этого контура равен току соответствующей<br />

независимой ветви. Матрица С называется контурной матрицей и, как<br />

мы только что видели, ее можно получить на основе 1-го закона Кирхгофа<br />

(обратите внимание – узловая матрица тоже была получена на основе<br />

1-го закона Кирхгофа). Таким образом, можно записать связь токов в<br />

ветвях с контурными токами в матричной форме:<br />

ib=C∙iк.<br />

где ib – вектор токов в ветвях.<br />

Если ввести вектор напряжений:<br />

z1 z2 z3 z4 z5 z6<br />

Ut = Uz1 Uz2 Uz3 Uz4 Uz5 Uz6<br />

то можно выразить в матричной форме 2-й закон Кирхгофа:<br />

57<br />

Uz1<br />

z1 z2 z3 z4 z5 z6 Uz2<br />

z1 1 1 1 1 Uz3<br />

z2 1 -1 -1 -1 · Uz4 = Ct·U = 0<br />

z6 -1 1 Uz5<br />

Uz6<br />

(2.2.3)<br />

(2.2.4)


В этом выражении матрица Ct содержит три строки, номера которых соответствуют<br />

контуру, образованному независимой ветвью. Направление<br />

независимых ветвей задают направление обхода контура. Если при обходе<br />

контура направление ветви, входящей в контур, совпадает с<br />

направлением обхода, то соответствующий элемент матрицы равен 1,<br />

если направление ветви не совпадает с направлением обхода, то ставится<br />

-1.<br />

2.2.2. Топологическое описание схемы.<br />

Для автоматизированного получения топологических матриц используют<br />

понятие графа. Чтобы построить граф, из схемы удаляют сопротивления,<br />

вместо них вводят линию, соединяющую узлы, между которыми<br />

располагалось сопротивление. Если в схеме есть короткозамкнутые<br />

ветви, то их объединяют в один узел, поскольку они имеют одинаковый<br />

потенциал. Полученная схема называется направленным графом,<br />

так как направление токов в ветвях схемы и в ветвях графа сохраняется.<br />

В графе выделяют дерево и хорды. Дерево – часть схемы, которая включает<br />

все узлы, но не содержит ни одного контура. Оставшаяся часть схемы<br />

образует хорды. Хорда, соединяя узлы дерева, образует из его ветвей<br />

контур. Для рассматриваемого примера граф изображен ниже на<br />

рис.2.2.2а. Рядом приведено изображение дерева и хорд. Ветви дерева<br />

выделены толстыми линиями.<br />

z1 z2<br />

2<br />

z3<br />

z4<br />

3 4<br />

Рис. 2.2.2. Топологическое описание схемы.<br />

а) ориентированный граф схемы, б) узлы и контуры.<br />

Независимые токи – это токи в ветвях<br />

хорд: iz1, iz2, и iz6. Для дальнейшего изложения<br />

обозначим контуры буквами<br />

a, b и c, а соответствующие контурные<br />

токи ia, ib и ic.<br />

Рассмотрим теперь формирование<br />

расширенной контурной матрицы С.<br />

1<br />

z5 z6<br />

a<br />

z1<br />

z2<br />

3<br />

b<br />

z3<br />

2 1<br />

а) б)<br />

58<br />

a<br />

z1 z2<br />

2<br />

3<br />

z4<br />

z3<br />

b<br />

z4<br />

z5<br />

4<br />

0<br />

1<br />

c<br />

z5<br />

c<br />

z6<br />

z6


Будем считать, что узловые пары схемы – это открытые контуры. В отличие<br />

от обычных «замкнутых» контуров, ток открытых контуров не замкнут<br />

внутри схемы, а входит и выходит из схемы через узловые пары.<br />

В дальнейшем будем рассматривать только те узловые пары, которые<br />

имеют один общий узел (нулевой). Через него узловые токи выходят из<br />

схемы. Пути прохождения узловых токов пролегают через ветви дерева.<br />

На рисунке пунктирными линиями показаны пути прохождения узловых<br />

токов i1, i2, i3.<br />

Теперь контурную матрицу С можно дополнить координатами открытых<br />

контуров – узловых пар. Колонки для открытых контуров заполняются<br />

так же, как и для обычных контуров. Будем двигаться от узла к нулевому<br />

узлу по ветвям дерева и отмечать в колонке матрицы С единицей<br />

с соответствующим знаком те строки, которые соответствуют попавшимся<br />

на этом пути ветвям. В результате получаем расширенную<br />

контурную матрицу С.<br />

(2.2.5)<br />

Сформированная матрица С несет всю информацию о соединении<br />

ветвей в схему. С помощью расширенной матрицы С можно рассчитать<br />

узловую матрицу Аt. Она равна обратной матрице С, т.е.<br />

Аt=С-1 1 2 3 a b c<br />

z1 1<br />

z2 1<br />

z3 -1 1 -1<br />

C = z4 1 1 -1<br />

z5 -1 -1 1 -1 -1<br />

z6 1<br />

,<br />

z1 z2 z3 z4 z5 z6<br />

1 1 -1 -1<br />

2 1 -1 -1<br />

(2.2.6)<br />

3 -1<br />

At = a 1<br />

1 1<br />

b 1<br />

c 1<br />

Теперь обратим внимание на структуру матрицы Аt. Сначала в ней<br />

перечисляются строки, соответствующие узловым парам – это строки 1,<br />

2 и 3, затем перечисляются координаты контуров – это строки а, b, и с.<br />

Заполнение узловых строк было рассмотрено выше. Чтобы заполнить<br />

контурные строки, надо в соответствующей строке отметить ту ветвь,<br />

которая принадлежит хорде, образующей данный контур. Так как<br />

контур а образуется ветвью z1, контур b ветвью z2 и контур c ветвью z6,<br />

поэтому в соответствующих местах матрицы установлены единицы. Поскольку<br />

контур можно трактовать, как замкнутую на один узел узловую<br />

59


пару, то в контурных строках стоит всего одна единица, напротив той<br />

ветви, ток в которой равен контурному току, то есть напротив хорды.<br />

Приведенные в (2.2.5) контурная С и в (2.2.6) узловая Аt матрицы играют<br />

ключевую роль в тензорном анализе сетей. Приведем ряд важнейших<br />

свойств этих математических объектов.<br />

Эти матрицы являются квадратными. Такое их свойство вытекает из<br />

топологического закона для линейных графов: число ветвей В графа<br />

равно числу узловых пар О плюс число контуров К.<br />

В=О+К (2.2.7)<br />

Для линейного графа число узловых пар<br />

О=У-П (2.2.8)<br />

где П – число связных подграфов. Наиболее часто встречается случай,<br />

когда рассматривается единственный связный граф, то есть П=1. В этом<br />

случае число узловых пар на единицу меньше числа узлов.<br />

Из (2.2.7) следует, что для заданного числа ветвей размер матриц будет<br />

неизменным для любых схем соединения этих ветвей.<br />

Формула (2.2.7) может быть обобщена на цепи любой размерности. В<br />

этих случаях в цепь входят не только узлы и линии, но и поверхности и<br />

объемы. В этих случаях вводится понятие симплекс. Пара узлов – это<br />

одномерный симплекс. Пара узлов всегда ограничивает ветвь, которая в<br />

этом случае является одномерным симплексом. Замкнутый набор ветвей<br />

ограничивает контур, который есть двумерный симплекс. Замкнутый набор<br />

контуров ограничивает объем – трехмерный симплекс. Теоретически<br />

возможны n-мерные симплексы, а также симплексы с дробной размерностью.<br />

Формула (2.2.7) приобретает формулировку: число симплексов<br />

размерности n равно сумме ограничивающих симплексов:<br />

Bn=On-1+Kn+1<br />

где n – размерность симплекса.<br />

В топологических матрицах С и А можно выделить блоки:<br />

(2.2.9)<br />

o k<br />

С= Сbo Сbk<br />

(2.2.10)<br />

(2.2.11)<br />

где индекс b перечисляет ветви, индекс о перечисляет узловые пары, индекс<br />

k перечисляет контуры. Произведение Сt·А равно единичной матрице:<br />

o k o k<br />

o Cob o k o Cob·Abo Cob·Abk o 1 0<br />

Сt ·А = k Ckb · Abo Abk = k Ckb·Abo Ckb·Abk = k 0 1<br />

Из (2.2.11) следует, что:<br />

o k<br />

A= Abo Abk<br />

60<br />

(2.2.12)


Cob·Abo=1; Ckb·Abk=1; Ckb·Abo=0; Cob·Abk=0. (2.2.13)<br />

Равенства (2.2.13) можно трактовать как скалярные произведения координат<br />

пространства контуров и узловых пар. В этом случае можно сказать,<br />

что пространство узловых пар ортогонально пространству контуров,<br />

так как соответствующие скалярные произведения векторов, выделенных<br />

из матриц Ckb и Abo, а также Cob и Abk равны нулю.<br />

Координатно-пространственная трактовка топологических матриц<br />

позволяет понимать выражение i=C·ik как связь пространства токов ветвей<br />

и пространства контурных токов. Вектора токов задают оси координат<br />

этих пространств.<br />

2.2.3. Координатные преобразования топологических пространств<br />

схем.<br />

С введением расширенной контурной матрицы формулу (2.2.3) можно<br />

обобщить. Если обозначить координаты соединенной схемы буквой r,<br />

где r перечисляет узловые пары о и контуры k, тогда матрица С запишется<br />

как Cbr и тогда можно записать:<br />

ib=Cbr·ir<br />

(2.2.14)<br />

Это равенство связывает координаты ветвей с координатами схемы. По<br />

формуле (2.2.14) пространство ветвей преобразуется в пространство схемы.<br />

Обратное преобразование задается расширенной узловой матрицей<br />

Аrb (в безиндексных обозначениях Arb=At):<br />

ir=(Cbr) -1 ·ib=Arb·ib<br />

(2.2.15)<br />

Рассмотрим более подробно уравнение (2.2.15). Для этого обратимся<br />

к примеру рис.2.2.2:<br />

1 -1 -1 iz1 1 - iz6 - iz5 + iz3<br />

1 -1 -1 iz2 2 - iz3 - iz2 + iz1<br />

-1 1 1 iz3 3 iz4 + iz2 - iz1<br />

ir = Arb ∙ ib = 1 iz4 = a iz1<br />

1 iz5 b iz2<br />

1 iz6 c iz6<br />

(2.2.16)<br />

Результирующий вектор содержит в первых трех строках запись 1-го<br />

закона Кирхгофа, поэтому содержимое этих трех строк должно быть<br />

равно нулю io=0. В строках, которые соответствуют контурным координатам,<br />

стоят токи хорд. Это соответствует тому, что контурный ток всегда<br />

равен току хорды. Например, ток контура с равен току ветви z6. Таким<br />

образом, из (2.2.16) следует, что:<br />

61


o io o 0<br />

ir= k ik = k ik<br />

(2.2.17)<br />

Аналогичное правило можно применить и для источников тока. Тогда,<br />

опуская промежуточные выкладки, можно записать:<br />

1 - Jz6 - Jz5 + Jz3<br />

2 - Jz3 - Jz2 + Jz1<br />

3 Jz4 + Jz2 - Jz1 Jo<br />

(2.2.18)<br />

Jr = Arb·Jb = a Jz1 = Jk<br />

b Jz2<br />

c Jz6<br />

Здесь узловые токи не обязательно равны нулю.<br />

Приведем теперь преобразования напряжений. Формулу (2.2.4), мож-<br />

но записать с использованием расширенной матрицы Сrb:<br />

- 1 Uz1 1 - Uz5<br />

- 1 - 1 Uz2 2 - Uz5 – Uz3<br />

1 Uz3 3 Uz4<br />

Ur = Crb·Ub = 1 1 1 1 Uz4 = a Uz5 + Uz4 + Uz3 + Uz1<br />

1 - 1 - 1 - 1 Uz5 b - Uz5 – Uz4 – Uz3 + Uz2<br />

- 1 1 Uz6 c Uz6 – Uz5<br />

(2.2.19)<br />

Результирующий вектор содержит в последних трех строках, которые<br />

соответствуют контурным координатам, 2-й закон Кирхгофа, поэтому<br />

эта часть вектора должна быть равна нулю: Uk=0. Формула (2.2.4) является<br />

частным случаем (2.2.19), где в формулу введены координаты<br />

узловых пар. Первые три координаты связывают напряжения на узловых<br />

парах с напряжениями ветвей. Например, напряжение на второй<br />

узловой паре равно сумме напряжений на 3-ей и 5-ой ветвях, взятыми с<br />

обратным знаком. Таким образом, из (2.2.19) следует, что<br />

o Uo o Uo<br />

Crb·Ub=Ur= k Uk = k 0<br />

(2.2.20)<br />

Формулу, аналогичную (2.2.19) можно применить и к источникам<br />

напряжений. Опуская промежуточные выкладки можно записать:<br />

62


1 -ez5<br />

2 -ez5-ez3<br />

3 ez4 eo<br />

er=Crb·eb a еz5 + еz4 + еz3 + еz1 = ek<br />

b - еz5 – еz4 – еz3 + еz2<br />

c еz6 – еz5<br />

(2.2.21)<br />

Здесь контурные э.д.с. не обязательно равны нулю.<br />

Теперь обратим внимание на законы преобразования векторов токов и<br />

векторов напряжения при переходе от пространства ветвей к пространству<br />

схемы. Если векторы, относящиеся к координатам ветвей, называть<br />

исходными или старыми координатами и обозначать без штрихов,<br />

а векторы, относящиеся к координатам схемы называть новыми<br />

координатами и обозначать штрихами, то законы преобразований будут<br />

выглядеть так:<br />

i = C ⋅i '<br />

u = C t - 1 ⋅u '<br />

i ' = C - 1 ⋅i<br />

u ' = C t ⋅u<br />

(2.2.22)<br />

Ток и напряжение преобразуются противоположным образом в том<br />

смысле, что для преобразования токов надо использовать матрицы,<br />

обратные по отношению к тем, которые используются для преобразования<br />

напряжений.<br />

Таким образом, рассмотренные формулы показывают, что узловая и<br />

контурная топологические матрицы могут рассматриваться как матрицы<br />

преобразования пространств токов и напряжений ветвей в пространство<br />

токов и напряжений соединенной схемы. Соответствующие формулы<br />

приводятся в (2.2.14)-(2.2.22). Расширенная контурная матрица несет<br />

полную информацию о соединении ветвей в схему, отражает 2-й закон<br />

Кирхгофа и может быть получена из 1-го закона Кирхгофа. Это говорит<br />

о том, что оба закона топологически взаимосвязаны.<br />

Рассмотрим применение SciLAB для обработки топологической информации.<br />

Приведенный ниже алгоритм позволяет автоматически сформировать<br />

расширенные топологические матрицы – контурную и транспонированную<br />

узловую.<br />

Исходными данными являются два списка: ta – список начальных<br />

узлов ветвей и he – список конечных узлов ветвей. Для отображения графа<br />

должны быть введены х- и у- координаты узлов.<br />

clear(); //очистка данных<br />

ta= [2 3 1 3 4 4 ]; // начальные узлы ветвей, по порядку, начиная с 1-й ветви<br />

63


he=[3 2 2 4 1 1 ]; // конечные узлы ветвей, по порядку, начиная с 1-й ветви<br />

maxv=max(ta); // определение максимального номера узла<br />

g = make_graph('cep1',1,maxv,ta,he); //создание направленного графа<br />

g1= make_graph('cep2',0,maxv,ta,he); //создание ненаправленного графа<br />

g('node_x') = [200 100 150 250 ]; //ввод х-координат узлов<br />

g('node_y') = [200 200 100 100 ]; //ввод у-координат узлов<br />

show_graph(g); //отображение графа<br />

a=graph_2_mat(g,'node−arc'); //формирование ненулевых элементов узловой матрицы<br />

A=full(a); //формирование полной формы узловой матрицы<br />

node = node_number(g); // определение числа узлов графа<br />

t=min_weight_tree(node,g1); //формирование дерева графа<br />

arc = arc_number(g); //определение числа ветвей графа<br />

at(1:node−1, 1:arc)=A(1:node−1, : ); // узловая часть расширенной матрицы Аt<br />

hord=setdiff(1:arc, t); //формирование списка хорд<br />

size_hord = size(hord); // определение числа хорд<br />

for i=1:size_hord(2) at(node−1+i,hord(i))=1; end; //формирование полной матрицы Аt<br />

at //вывод матрицы Аt в диалоговое окно Scilab<br />

c=at^(-1) //вычисление и вывод матрицы С в диалоговое окно Scilab<br />

Для введенного графа сформированные матрицы Аt и С получились следующими:<br />

2<br />

1<br />

3<br />

2<br />

3<br />

1<br />

4<br />

5<br />

6<br />

4<br />

Аt=<br />

! 0. 0. 1. 0. - 1. - 1. !<br />

! 1. - 1. - 1. 0. 0. 0. !<br />

! - 1. 1. 0. 1. 0. 0. !<br />

! 0. 1. 0. 0. 0. 0. !<br />

! 0. 0. 0. 1. 0. 0. !<br />

! 0. 0. 0. 0. 0. 1. !<br />

C=<br />

! 0. 0. - 1. 1. 1. 0. !<br />

! 0. 0. 0. 1. 0. 0. !<br />

! 0. - 1. - 1. 0. 1. 0. !<br />

! 0. 0. 0. 0. 1. 0 !<br />

! - 1. - 1. - 1. 0. 1. - 1. !<br />

! 0. 0. 0. 0. 0. 1. !<br />

Как видно из полученных результатов, программа сформировала другой<br />

состав матриц. Это связано с тем, что количество вариантов построения<br />

дерева и соответственно контуров, может быть достаточно<br />

большим. Выбор того или иного варианта определяется особенностями<br />

алгоритма, в данном случае встроенной функцией построения дерева<br />

пакета SciLab: min_weight_tree. В любом случае проверить правильность<br />

сформированных матриц можно косвенно, результат умножения С на Аt<br />

должен дать единичную матрицу: С·Аt=1.<br />

Построить дерево можно отдельным алгоритмом, приведенным ниже.<br />

Данный SciLab-алгоритм является модификацией фортрановской программы,<br />

приведенной в [12]. Исходными данными являются два списка:<br />

ta – список начальных узлов ветвей и he – список конечных узлов ветвей.<br />

clear ;<br />

ta= [2 3 1 3 4 4 ]; // начальные узлы ветвей, по порядку, начиная с 1-й ветви<br />

he=[3 2 2 4 1 1 ]; // конечные узлы ветвей, по порядку, начиная с 1-й ветви<br />

//определение размеров массивов<br />

razmer = size( ta); JKV= razmer (2);<br />

max1=max( ta); max2=max(he); KP=max(max1,max2);<br />

IW=KP+2 *JKV; NEXT(IW)=0;<br />

64


инициализация переменных<br />

PTR=0; V= KP; I = KP+1;<br />

for K=1:JKV<br />

M=ta (K); N=he(K); NEXT(I)=NEXT(M); ADJ(I) =N; NEXT(M)= I;<br />

I= I + 1 ; NEXT(I) =NEXT(N); ADJ(I) =M; NEXT(N)=I; I= I + 1 ;<br />

end;<br />

LIST(KP+1) =0; I=1; N=1; LIST(1)=V; VECTOR(V)=0; VISIT(V)=1;<br />

//поиск узлов ветвей, относящихся к дереву<br />

while 1==1,<br />

M=LIST(N); PTR=M;<br />

while 1==1,<br />

NNN=NEXT(PTR); PTR=NNN;<br />

if PTR==0 then break, end;<br />

J=ADJ(PTR);<br />

if VISIT(J)= = 0 then<br />

I= I + 1 ; LIST(I) =J; VISIT(J)= I; VECTOR(J)=M;<br />

end;<br />

end;<br />

N=N+1;<br />

if LIST(N)= =0 then break, end;<br />

end;<br />

//формирование массива с номерами ветвей дерева и хорд<br />

vet=size(VECTOR);yvet=vet(1);<br />

for m=1:JKV<br />

derevo(1,m) =m;<br />

end;<br />

for k1=1:yvet(1)<br />

if VECTOR(k1)< > 0 then, k2=VECTOR(k1); end;<br />

for m=1:JKV<br />

if ((ta(m) = = k1&he(m) = = k 2 ) | ( t a ( m) = = k 2 &he(m) = = k 1 )) then<br />

derevo(1,m) =0;break; end;<br />

end;<br />

end;<br />

derevo<br />

В результате формируется массив, в котором ненулевые элементы соответствуют<br />

ветвям хорд, номера нулевых элементов соответствуют ветвям<br />

дерева.<br />

derevo =<br />

1. 2. 0. 0. 0. 6.<br />

В данном случае 1, 2 и 6-я ветви – это ветви дерева, 3, 4 и 5-я ветви –<br />

ветви хорд.<br />

Приведенный алгоритм поиска ветвей дерева может быть использован<br />

в тех языках программирования, где нет соответствующих встроенных<br />

функций или библиотек.<br />

65


2.3. Обобщенные уравнения электрических схем.<br />

Приведенные в разделе 2.2 координатные преобразования можно применить<br />

для автоматического вывода уравнений напряжений любой схемы<br />

и их решения. Отправной точкой для составления уравнений схемы<br />

являются уравнения отдельных ветвей, подготовленные в обобщенной<br />

форме. Совокупность таких ветвей образует элементарную схему.<br />

2.3.1. Элементарная схема.<br />

Отдельные ветви описываются обобщенной формой:<br />

U+e = z∙(i+J),<br />

где U - напряжение ветви, е – источник напряжения ветви, J – источник<br />

тока ветви, i – ток ветви, z - сопротивление ветви. Для всех ветвей, входящих<br />

в рассмотренную на рис.2.16 схему, описание можно представить<br />

в развернутой матричной форме:<br />

Uz1+ez1 z1 iz1+Jz1<br />

Uz2+ez2 z2 iz2+Jz2<br />

Uz3+ez3 = z3 ∙ iz3+Jz3<br />

Uz4+ez4 z4 iz4+Jz4<br />

Uz5+ez5 z5 iz5+Jz5<br />

Uz6+ez6 z6 iz6+Jz6<br />

Эта развернутая форма в матричном и индексном обозначениях соответственно:<br />

U+e = z ∙ (i+J),<br />

(2.3.1)<br />

Ub+eb = zbb ∙ (ib+Jb).<br />

Можно сказать, что уравнение (2.3.1) представляет собой описание<br />

схемы, составленной из отдельных ветвей. Каждая ветвь схемы задает<br />

координатную ось. Совокупность осей задает пространство элементарной<br />

схемы.<br />

Если ветви имеют взаимные индуктивности или управляемые источ-<br />

ники, то матрица zbb имеет недиагональные элементы и является в общем<br />

случае несимметричной.<br />

Элементарная схема может быть представлена проводимостями ветвей:<br />

iz1+Jz1 Y1 Uz1+ez1<br />

iz2+Jz2 Y2 Uz2+ez2<br />

Y3<br />

iz3+Jz3 =<br />

∙ Uz3+ez3<br />

iz4+Jz4 Y4 Uz4+ez4<br />

iz5+Jz5 Y5 Uz5+ez5<br />

iz6+Jz6 Y6 Uz6+ez6<br />

66


или в матричной форме:<br />

i+J =Y·(U+e),<br />

ib+Jb =Ybb·(Ub+eb).<br />

Здесь Y=(Z) -1 .<br />

Весь раздел 2.1 был посвящен тому, как составить элементарную схему<br />

из ветвей, представляющих собой линейные и нелинейные R-, L-, C-<br />

ветви, взаимные индуктивности и управляемые источники.<br />

Формирование уравнений элементарной схемы является во многом не<br />

формальной задачей, так как здесь окончательно выявляются основные<br />

физические процессы в системе, степень принятых допущений – то есть<br />

на этом этапе определяется, что должно интересовать исследователя, какие<br />

результаты ориентировочно должны быть получены.<br />

2.3.2. Формирование уравнений обобщенной схемы.<br />

Вектор токов в уравнениях элементарной схемы задает исходную систему<br />

координат. В этих координатах описывается элементарная схема<br />

уравнениями (2.3.1). При переходе к новой системе координат, в которой<br />

элементарные ветви объединены в некоторую схему, задаются новые<br />

векторы тока и напряжения. Новую систему координат определяют<br />

контуры и узловые пары. Переменные, которые описывают эти координаты<br />

– контурные токи и узловые напряжения. Источники тока и напряжения<br />

в ветвях преобразуются в источники тока и напряжения в контурах<br />

и узловых парах. Если штрихами обозначать векторы в новой системе<br />

координат, то координатные преобразования векторов тока в матричных<br />

обозначениях:<br />

i=C∙i′; J=C∙J′;<br />

Подставим эти выражения в уравнение элементарной схемы (2.3.1), и<br />

далее умножим левую и правую части полученного выражения на транспонированную<br />

матрицу Сt:<br />

Сt ·U+ Сt ·e = Сt · z ∙ (С·i′+C·J)<br />

Далее, учтем, что по формулам (2.2.18) U′= Ct ∙ U и (2.2.20) e′= Сt ∙ e<br />

преобразуются напряжения и источники. В результате получим уравнение,<br />

которое по форме совпадает с исходным уравнением (2.3.1):<br />

U′+e′ = z′ ∙ (i′+J′) , (2.3.2)<br />

где<br />

z′= Сt ∙ z ∙ C. (2.3.3)<br />

Полученное в ходе преобразований выражение z′=Сt ∙ z ∙ C – это преобразование<br />

матрицы сопротивлений ветвей в матрицу сопротивлений соединенной<br />

схемы. Для рассматриваемого примера:<br />

67


-1 z1 1<br />

-1 -1 z2 1<br />

z′=Сt∙z∙C = 1 · z3 · -1 1 -1<br />

1 1 1 1 z4 1 1 -1<br />

1 -1 -1 -1 z5 -1 -1 1 -1 -1<br />

-1 1 z6 1<br />

В результате перемножений получаем:<br />

1 2 3 a b с<br />

1 z5 z5 - z5 z5 z5<br />

2 z5 z5 + z3 - z5 - z3 z5 + z3 z5<br />

z′= 3 z4 z4 - z4<br />

a - z5 - z5 - z3 z4 z5 + z4 + z3 + z1 - z5 - z4 - z3 - z5<br />

b z5 z5 + z3 - z4 - z5 - z4 - z3 z5 + z4 + z3 + z2 z5<br />

c z5 z5 - z5 z5 z6 + z5<br />

Из уравнения (2.3.3) можно получить обратное преобразование для матриц<br />

проводимостей:<br />

(Ct ) -1 ∙ z′ ∙ (C) -1 =z=A·z′·At. (2.3.3a)<br />

Если ввести индексные обозначения для контурных и узловых координат,<br />

соответственно буквами к и о, то матричное уравнение схемы<br />

(2.3.2) можно представить в блочной форме:<br />

Uo<br />

0<br />

+<br />

eo<br />

ek<br />

o k<br />

= o Zoo Zok<br />

k Zko Zkk<br />

(2.3.4)<br />

Так как напряжения ветвей в контурах и токи ветвей в узлах равны<br />

нулю, то соответствующие матричные блоки равны нулю: Uk=0 и io=0.<br />

2.3.3. Решение уравнений обобщенной схемы. Контурная и узловая<br />

формы.<br />

Если в уравнениях элементарной схемы заданы сопротивления ветвей<br />

z и векторы независимых источников ветвей J и e, то по формулам<br />

(2.3.3), (2.1.18) и (2.1.21) вычисляются:<br />

∣ матрица сопротивлений соединенной схемы z′= z oo zok ,<br />

векторы источников тока J′ = ∣ J o<br />

J k∣ и напряжений e′= ∣ e o<br />

e k∣ .<br />

Тогда два блочных уравнения (2.3.4) содержат два неизвестных вектора<br />

– вектор контурных токов ik и вектор узловых напряжений Uo. Решая<br />

(2.3.4) относительно неизвестных, получаем:<br />

ik = (Zkk) -1 ∙ek − (Zkk) -1 ∙Zko ∙Jo − Jk ,<br />

68<br />

∙(<br />

0<br />

ik<br />

+<br />

z ko<br />

Jo<br />

Jk<br />

z kk ∣<br />

)<br />

(2.3.5)


Uo = Z ~ oo ∙J o + Zok ∙(Zkk) -1 ∙ek - eo ,<br />

(2.3.6)<br />

где Z ~ oo = Zoo – Zok ∙(Zkk) -1 Zko .<br />

(2.3.7)<br />

Теперь по найденным контурным токам и узловым напряжениям<br />

можно найти токи и напряжения ветвей:<br />

Ub=Abo∙Uo , ib=Cbk∙ik ,<br />

(2.3.8)<br />

где индекс b соответствует координатам ветвей, Abo – узловая часть матрицы<br />

А; Cbk – контурная часть матрицы С.<br />

Рассмотрим полученные уравнения (2.3.5), (2.3.6) и (2.3.7).<br />

Выражение (2.3.5), если правую и левую части умножить на Zkk, можно<br />

привести к контурной форме:<br />

ek − Zko Jo − Zkk · Jk =Zkk · ik .<br />

Если ввести обозначение:<br />

то получаем<br />

e ~ k=ek − Zko·Jo – Zkk · Jk ,<br />

e ~ k =Zkk · ik .<br />

(2.3.9)<br />

(2.3.10)<br />

Полученное уравнение (2.3.10) не содержит узловых координат и, соответственно,<br />

узловых источников тока. Вместе с тем, оно описывает ту<br />

же схему, что и обобщенное уравнение (2.3.4). Математически из обобщенного<br />

уравнения были исключены переменные с координатами узловых<br />

пар. Оказалось, что ту же схему можно описать одними только<br />

контурными переменными. Получена эквивалентная схема, не содержащая<br />

ни одной узловой пары. Влияние узловых источников тока заменено<br />

эквивалентными контурными источниками напряжения Zko·Jo+Zkk·Jk,<br />

которые вычитаются из фактических источников ek . В результате в схеме<br />

действуют источники напряжения e ~ k, вычисляемые по формуле<br />

(2.3.9), но уже без источников тока. Схема, эквивалентная рассмотренной<br />

в примере рис.2.2.2, не содержащая ни одной узловой пары, изобра-<br />

жена на рис.2.3.1.<br />

z ac ;z ca<br />

e ~<br />

c<br />

z cc<br />

z aa<br />

e ~<br />

a<br />

z ;z<br />

bc cb<br />

Рис. 2.3.1. Чисто-контурная цепь, эквивалентная схеме,<br />

изображенной на рис.2.2.1.<br />

69<br />

z bb<br />

e ~<br />

b<br />

z ab ;z ba


По контурным токам, найденным в такой схеме, можно рассчитать токи<br />

в ветвях исходной схемы.<br />

Выражение (2.3.6) можно привести к узловой форме,<br />

где<br />

Uo + e ~ o = Z ~ oo J o , (2.3.11)<br />

e ~ o = eo − Zok·(Zkk) -1 ·ek.<br />

(2.3.12)<br />

Полученное уравнение (2.3.11) не содержит ни одной контурной<br />

координаты. Из обобщенного уравнения были исключены контурные<br />

переменные. В результате получена схема и ее описание, которое содержит<br />

только узловые координаты. Контурные источники напряжения заменены<br />

эквивалентными узловыми источниками напряжения<br />

Zok·(Zkk) -1 ·ek, которые вычитаются из вектора узловых источников напряжения.<br />

В результате в схеме остается только вектор узловых источников<br />

напряжения e ~ o, вычисляемый по (2.3.12).<br />

Эквивалентная схема, не содержащая ни одного контура, изображена на<br />

рис.2.3.2.<br />

J 1<br />

z ~<br />

11<br />

e ~<br />

1<br />

z ~<br />

; z~<br />

13 31<br />

z ~<br />

12 ;z~<br />

21<br />

e ~<br />

2<br />

Рис. 2.3.2. Чисто-узловая цепь, эквивалентная<br />

схеме, изображенной на рис.2.2.1.<br />

По узловым напряжениям, найденным в такой схеме можно определить<br />

напряжения на всех ветвях исходной схемы.<br />

Уравнения элементарной схемы могут быть представлены через проводимости<br />

ветвей:<br />

Y·(U+e) = i+J,<br />

(2.3.13)<br />

Ybb·(Ub+eb) = ib+Jb.<br />

Для перехода к новой системе координат воспользуемся законом<br />

преобразования напряжений и источников напряжений:<br />

U=A·U’; e=A·e’.<br />

70<br />

J 2<br />

z ~<br />

23 ;z~<br />

32<br />

z ~<br />

22<br />

z ~<br />

33<br />

e ~<br />

3<br />

J 3


Подставим эти выражения в уравнение элементарной схемы (2.3.13),<br />

и далее умножим левую и правую части полученного выражения на<br />

транспонированную матрицу Аt:<br />

Аt · Y ∙ (A·U’+A·e’) =At ·i+ At ·J<br />

Далее, учтем, что по формулам (2.2.14) i′= At ∙ i и (2.2.17) J′= At ∙ J<br />

преобразуются токи и источники тока. В результате получим уравнение,<br />

которое по форме совпадает с исходным уравнением (2.2.16):<br />

Y’·(U’+e’) = i’+J’ (2.3.14)<br />

где Y′= At ∙ Y ∙ A. (2.3.15)<br />

Полученное в ходе преобразований выражение Y′= At ∙ Y ∙ A – это<br />

преобразование матрицы проводимостей ветвей в матрицу проводимостей<br />

соединенной схемы. Для рассматриваемого примера<br />

1 -1 -1 Y1 1 -1 1<br />

1 -1 -1 Y2 -1 1 1<br />

Y′=At∙Y∙A = -1 1 1 · Y3 · 1 -1<br />

1 Y4 1<br />

1 Y5 -1<br />

1 Y6 -1 1<br />

В результате перемножений получаем:<br />

1 2 3 a b с<br />

1 Y3+Y5+Y6 -Y3 -Y6<br />

2 -Y3 Y1+Y2+Y3 -Y1-Y2 Y1 -Y2<br />

Y′= 3 -Y1-Y2 Y1+Y2+Y4 -Y1 Y2<br />

a Y1 -Y1 Y1<br />

b -Y2 Y2 Y2<br />

c -Y6 Y6<br />

Из уравнения (2.3.15) можно получить обратное преобразование для<br />

матриц проводимостей:<br />

(At ) -1 ∙ Y’ ∙ (A) -1 = Y = C · Y · Ct. (2.3.15a)<br />

Матричное уравнение напряжений схемы в блочном виде:<br />

0<br />

ik<br />

+<br />

Jo<br />

Jk<br />

o k<br />

= o Yoo Yok<br />

k Yko Ykk<br />

(2.3.16)<br />

Если считать векторы источников тока и напряжения заданными, то,<br />

решая (2.3.16) относительно неизвестных вектора узловых напряжений<br />

и контурных токов, получаем:<br />

J ~ o=Yoo·Uo<br />

(2.3.17)<br />

где J ~ o= Jo – Yoo·eo – Yok·ek ,<br />

для контурного базиса:<br />

71<br />

∙( Uo<br />

0<br />

+ eo<br />

ek<br />

)


ik+J ~ k = Y ~ kk·ek<br />

где J ~ kk=Jk-Yko·(Ykk) -1 ·Jo , Y ~ kk=Ykk-Yko·(Yoo) -1 ·Yok<br />

Сравнивая полученные формулы с теми, которые были получены<br />

для случая элементарной цепи, состоящей из сопротивлений, можно заметить<br />

их дуальность.<br />

В таблице приводится соответствие векторов и матриц для обоих случаев.<br />

Выбор между двумя методами определяется наименьшими размерами<br />

матриц Zkk и Yoo . Оба метода могут быть представлены одной программой<br />

при соответствующей замене формальных параметров на фактические.<br />

Метод контурных токов Метод узловых напряжений<br />

Jk<br />

ek<br />

Zko<br />

Jo<br />

Zkk<br />

e ~ k=ek − Zko·Jo – Zkk · Jk<br />

ik = Zkk -1 · e ~ k<br />

Zoo<br />

Zok<br />

eo<br />

Uo = Zok·( ik+Jk)+Zoo·Jo– eo<br />

Z ~ oo = Zoo – Zok (Zkk) -1 Zko<br />

e ~ o = eo − Zok·(Zkk) -1 ·ek<br />

Uo + e ~ o = Z ~ oo J o<br />

eo<br />

Jo<br />

Yok<br />

ek<br />

Yoo<br />

J ~ o= Jo – Yok·ek – Yoo·eo<br />

Uo = Yoo -1 ·J ~ o<br />

Ykk<br />

Yko<br />

Jk<br />

ik = Yko·( Uo+eo)+Ykk·ek– Jk<br />

Y ~ kk=Ykk – Yko·(Yoo) -1 ·Yok<br />

J ~ kk=Jk− Yko·(Ykk) -1 ·Jo<br />

ik+J ~ k = Y ~ kk·ek<br />

2.3.4. Преобразование мощности.<br />

Рассмотрим законы преобразования мощности при переходе от элементарной<br />

схемы к соединенной. Определим суммарную мощность ветвей<br />

как произведение<br />

P=Ut∙i. (2.3.18)<br />

Подставляя в эту формулу закон преобразования вектора токов i=C∙i′,<br />

и вектора напряжений U′=Ct∙U (или Ut′=Ut∙C), получаем:<br />

P = Ut∙C∙i′ = Ut′∙i′ = P′.<br />

Таким образом,<br />

P=P′. (2.3.19)<br />

72


Как видно из (2.3.19), при переходе от элементарной схемы к соединенной,<br />

мощность не изменилась. Рассмотренные преобразования векторов<br />

тока и напряжения называются преобразованиями с сохранением<br />

мощности (с инвариантной мощностью).<br />

Равенство (2.3.18) отражает закон сохранения мощности в схеме:<br />

мощность источников равна мощности приемников. Покажем это.<br />

Подставим в (2.3.18) U=V-e и i=I-J:<br />

P=Ut·i=(Vt-et)·( I-J)= Vt·I – et·I – (Vt-et)·J= Vt·I – et·I – Ut·J .<br />

Таким образом, получили выражение:<br />

Р=Vt·I – et·I – Ut·J .<br />

Первое слагаемое в правой части соответствует потребляемой мощности<br />

в сопротивлениях Pz= Vt·I. Последние два слагаемых – мощность, генерируемая<br />

источниками: источниками напряжения Pe=e t·I и источниками<br />

тока PJ=Ut ·J .<br />

Очевидно, потребляемая мощность должна равняться генерируемой<br />

мощности Pz=Pe+PJ. Или, что то же самое:<br />

Pz - Pe - PJ = 0 = Р.<br />

Для преобразованных токов и напряжений, можно записать:<br />

P′z - P′e - P′J = 0 = Р′= P.<br />

Иначе говоря, закон (2.3.19) выражается в форме:<br />

Р’ = P = 0.<br />

Здесь важно отметить то обстоятельство, что данный закон был получен<br />

при том условии, что вектор тока и вектор напряжения преобразуются<br />

по законам (2.2.21). Если законы преобразования будут другими,<br />

то инвариантности мощности не будет. Действительно, пусть i=C∙i′,а закон<br />

преобразования напряжений будет другим: U′=Вt∙U, или U=Ut′·(В) -1 ,<br />

получаем:<br />

P = Ut∙C∙i′ = Ut′·(В) -1 ·С∙i′ .<br />

Мощности Р′ и P будут равны в том случае, если (В) -1 ·С=1 или С= В .<br />

Рассмотрим преобразование мощности источников при их эквивалентной<br />

замене. Если в схеме действуют только источники напряжения,<br />

то можно сосчитать суммарную мощность этих источников по формуле:<br />

Pe = eb ∙ ib,<br />

(2.3.20)<br />

где ib - вектор токов ветвей, eb – вектор источников напряжений ветвей.<br />

Если поменять все источники напряжения на эквивалентные источники<br />

тока Jb=-eb/R, то мощность этих источников будет равна<br />

PJ =U′b ∙ Jb,<br />

(2.3.21)<br />

где U′b –вектор напряжений ветвей, Jb - вектор источников тока ветвей.<br />

Сдвоенной мощностью называют сумму Pe+PJ [13]. Она должна оставаться<br />

неизменной при замене источников тока на эквивалентные источ-<br />

73


ники напряжения, а источников напряжения на эквивалентные источники<br />

тока. Действительно,<br />

PJ=U′b ∙Jb= Ub ∙ (–eb/Rb)=–(Rb · ib – eb) · eb/R=–(eb∙ib– eb ∙ eb/Rb)=–Pe+ eb 2 /Rb,<br />

откуда следует<br />

Pe+PJ =eb 2 /Rb.<br />

(2.3.22)<br />

При выводе (2.3.22) деление на Rb означает поэлементное деление.<br />

Кроме того, учтен тот факт, что при замене источника напряжения на<br />

эквивалентный источник тока, напряжения и токи ветвей остаются без<br />

изменений, т.е. U′b=Ub, i′b=ib.<br />

Так как в формулу (2.3.22) входят только значения источников ветвей<br />

и их сопротивлений, то она справедлива для любого соединения этих<br />

ветвей.<br />

Как было показано, инвариантность мощности следует из топологических<br />

законов преобразования тока и напряжения. Если постулировать<br />

инвариантность мощности, то можно получить закон преобразования<br />

напряжения. Например, для мощности в координатах ветвей имеем:<br />

P = Ut∙i = Ut∙C∙i′<br />

С другой стороны Ut′∙i′ = P′. Если считать, что P=P′, то отсюда следует,<br />

что Ut′=Ut∙C<br />

или, что то же:<br />

U′=Ct∙U.<br />

Постулат инвариантности мощности используется для получения<br />

закона преобразования напряжения в тех случаях, когда производится<br />

не топологический переход к новым координатам. Например, для<br />

получения уравнений напряжений для новых координат в частотной<br />

области.<br />

2.3.5. Уравнения обобщенной схемы в частотной области.<br />

В частотной области схемы замещения двухполюсников предельно<br />

просты. Сопротивления индуктивных и емкостных ветвей выражаются<br />

формулами, соответственно:<br />

zL=j·ω·L;<br />

zC=1/(j·ω·C),<br />

где ω – частота тока в ветви, j= −1 .<br />

Уравнения элементарной схемы так же записываются в обобщенной<br />

форме:<br />

U+e = z ∙ (i+J),<br />

источники в этой формуле являются независимыми источниками, либо<br />

представляют собой компоненты управляемых источников.<br />

Уравнение преобразования вектора напряжения оказывается в общем<br />

случае другим. Это связано с тем, что вычисление мощности при расчете<br />

с комплексными числами выполняется по формуле<br />

74


P=Ut * ·i. (2.3.23)<br />

где U* - комплексно-сопряженное число.<br />

Для инвариантных по мощности преобразований, получаем:<br />

i=C·i′,<br />

Ut * ·i = Ut * ·C·i′ = Ut * ′·i′.<br />

при выводе учтено, что Ut * ·C·= C * t·U.<br />

Таким образом, закон преобразования напряжений содержит транспонированную<br />

комплексно-сопряженную матрицу:<br />

U′=C * t·U.<br />

(2.3.24)<br />

Подставляя в уравнения элементарной схемы уравнения преобразования<br />

токов и напряжений, получаем<br />

U′+e′ = z′ ∙ (i′+J′),<br />

где<br />

z′= С * t ∙ z ∙ C;<br />

e′=C * (2.3.25)<br />

t∙e.<br />

Как видно из (2.3.25) в формулах преобразования сопротивлений и<br />

источников напряжений также присутствует транспонированная<br />

комплексно-сопряженная матрица Сt*. Если эта матрица содержит только<br />

действительные числа, то формулы преобразования ничем не отличаются<br />

от рассмотренных. К таким случаям можно отнести топологические<br />

преобразования. Комплексные числа в матрицах преобразования<br />

появляются, например, при переходе к координатам токов симметричных<br />

составляющих.<br />

В методе симметричных составляющих трехфазные токи ia, ib, ic заменяются<br />

новыми токами i0, i1, i2, которые носят название соответственно<br />

токов нулевой, прямой и обратной последовательностей. Переход выполняется<br />

по формулам:<br />

ia = i0 i1 i2 ,<br />

ib = 1<br />

i0a2 ·i1a·i2 ,<br />

3<br />

ic = 1<br />

. (2.3.26)<br />

i0a· i1a2·i2<br />

3<br />

где a= e j 120 ° , a 2 = e -j120 ° - операторы, которые удовлетворяют уравнению<br />

1+a+a 2 =0 .<br />

Матрица преобразований, соответствующая уравнениям (2.3.26):<br />

0 1 2<br />

a 1 1 1<br />

C =1/√3 b 1 a 2 a<br />

c 1 a a 2<br />

Введение множителя 1/√3 связано с постулированием инвариантности<br />

мощности.<br />

75


2.3.6. Алгоритм формирования и расчета уравнений резистивной<br />

схемы.<br />

Далее приводится алгоритм, позволяющий автоматически сформировать<br />

необходимые векторы и матрицы по методу контурных токов и<br />

рассчитать токи, напряжения и мощность ветвей резистивной схемы.<br />

Исходными данными является список с информацией о каждой ветви.<br />

Каждая ветвь должна быть представлена в виде обобщенной ветви с последовательно<br />

включенным источником напряжения и параллельно<br />

включенным источником тока. Список оформляется оператором list по<br />

правилам пакета SciLab. В состав списка входит имя ветви, номер начального<br />

и номер конечного узла ветви, номинал ветви, значение источника<br />

напряжения ветви, значение источника тока ветви. Имя в данном<br />

алгоритме не обрабатывается и вводится для удобства ввода. Фактически<br />

ветви идентифицируются номерами, соответствующими порядку их<br />

ввода. Узлы должны быть пронумерованы последовательно, начиная с<br />

единицы. В алгоритме наибольший номер узла принимается за общий<br />

узел.<br />

Алгоритм переформировывает исходные данные, представленные<br />

списком соединений в массивы векторов источников тока и напряжения<br />

ветвей и матрицы сопротивлений ветвей. Далее формируются матрицы<br />

соединений и затем матрицы, необходимые для расчета токов и напряжений<br />

ветвей (в соответствии с формулами (2.3.5)-(2.3.8) ).<br />

В алгоритме применены следующие встроенные функции SciLab:<br />

size — определение размера списка или массива, zeros — обнуление<br />

массива, max — определение максимального числа из списка чисел,<br />

make_graph — создание графа, node_number — определение числа узлов<br />

графа , show _graph — отображение графа на экране, graph_2_mat — формирование<br />

упакованной матрицы инциденций графа, full — преобразование<br />

упакованной матрицы в полную матрицу, min _weight _tree — формирование<br />

дерева графа, setdiff — вычитание множеств.<br />

clear ( ); //очистка данных.<br />

// Ввод списка соединений:<br />

// имя нач. кон. парам. e J<br />

newshema= list ('r1', [2 3], 2, 0, 0,... //многоточие означает перенос строки<br />

'r2', [3 2], 3, 0, 0.33333,... //в столбце парам. задаются номиналы<br />

'r3', [1 2], 4, 0, 0,... // ветвей<br />

'r4', [3 4], 5, 0, 0,...<br />

'r5', [4 1], 6, 0, 0,...<br />

'r6', [4 1], 7, 0, 0);<br />

//определение числа ветвей - arc, объявление массива сопротивлений - Z<br />

arc=size(newshema)/5; Z=zeros(arc,arc);<br />

//Извлечение информации из списка соединений и формирование новой информации:<br />

//ta-массив начальных узлов, he-массив конечных узлов, Z-матрица сопротивлений,<br />

// e-вектор источников напряжений ветвей, J-вектор источников тока ветвей<br />

k=2;<br />

for i=1:arc<br />

ta(i)=newshema(k)(1); he(i)=newshema(k)(2);<br />

76


Z(i,i)=newshema(k+1); e(i)=newshema(k+2);<br />

J(i)=newshema(k+3); k=k+5;<br />

end;<br />

//определение числа узлов. Число узлов должно быть равно наибольшему номеру узла<br />

//наибольший номер узла принимается за общий узел<br />

yzlov1=max (ta);yzlov2=max (he);yzlov=max (yzlov1,yzlov2);<br />

//создание направленного графа g по введенной информации<br />

g = make_graph ('cep1', 1, yzlov, ta', he');<br />

//создание ненаправленного графа g0 по введенной информации<br />

g0 = make_graph ('cep1', 0, yzlov, ta', he');<br />

g('node_x')=[200 100 150 250 ]; //ввод х-координат узлов<br />

g('node_y')=[200 200 100 100 ]; //ввод у-координат узлов<br />

// show _ graph (g);<br />

yzlov = node_number (g); //определение числа узлов введенного графа<br />

//формирование матрицы инциденций "узел-ветвь" для введенного графа g<br />

A=full (graph_2_mat (g,'node-arc'));<br />

//формирование дерева графа<br />

derevo= min _ weight _ tree(yzlov,g0);<br />

//формирование расширенной узловой матрицы<br />

at=zeros(arc,arc); //объявление матрицы At;<br />

at(1:yzlov-1, 1:arc)=A(1:yzlov-1, 1:arc); //заполнение узловой части At;<br />

hord=setdiff (1:arc,derevo); //формирование массива хорд;<br />

size_hord=size(hord); //определения числа хорд;<br />

for ii=1:size_hord(2) //заполнение контурной<br />

at(yzlov-1+ii, hord(ii))=1; //части расширенной узловой<br />

end; //матрицы;<br />

c=at^(- 1); //вычисление контурной матрицы;<br />

er=c'*e; Jr=at*J; //вычисление векторов источников схемы;<br />

Zr=c'*Z*c; //вычисление матрицы сопротивлений схемы;<br />

Yk=Zr(yzlov:arc, yzlov:arc)^(- 1); //вычисление матрицы контурных проводимостей<br />

//вычисление матриц взаимных сопротивлений узловых и контурных координат<br />

zok=Zr(1:yzlov-1,yzlov:arc); zko=Zr(yzlov:arc,1:yzlov-1);<br />

//вычисление узловых матриц сопротивлений<br />

zo =Zr(1:yzlov-1,1:yzlov-1); zor=zo-zok*Yk*zko;<br />

//вычисление контурных и узловых источников напряжений<br />

ek=er(yzlov:arc); eo=er(1:yzlov-1);<br />

//вычисление контурных и узловых источников тока<br />

Jk=Jr(yzlov:arc); Jo=Jr(1:yzlov-1);<br />

//вычисление контурных токов и узловых потенциалов<br />

ik=Yk*ek−Yk*zko*Jo-Jk; Uo=zor*Jo+zok*Yk*ek−eo;<br />

//вычисление токов и напряжений ветвей<br />

iv= c(1:arc,yzlov:arc)* ik; Uv= at(1:yzlov−1,1:arc)'* Uo;<br />

//вычисление суммарной мощности источников схемы<br />

P= J'* Uv // P= e'* iv<br />

Для того, что бы вывести в диалоговое окно нужный вектор или матрицу,<br />

достаточно заменить в конце соответствующего выражения точку<br />

с запятой на запятую.<br />

В приведенном алгоритме можно выделить следующие части:<br />

(1) Ввод данных;<br />

(2) Перевод введенных данных во внутреннюю форму;<br />

(3) Вычисления;<br />

77


(4) Перевод результатов вычислений из внутренней формы во внешнюю<br />

форму;<br />

(5) Отображение данных.<br />

Ввод данных выполняется посредством списка ветвей, в котором<br />

перечислены в строго определенном порядке: имя ветви, начальный и<br />

конечный номер ветви, сопротивление ветви, источник напряжения ветви<br />

и источник тока ветви. Эти данные оформляются по правилам системы<br />

SciLab. Введенные данные представляют собой список соединений<br />

ветвей и параметров ветвей. Этого списка достаточно, чтобы выполнить<br />

расчет схемы. Перед расчетом необходимо перевести исходные данные<br />

во внутреннюю форму.<br />

Перевод введенных данных во внутреннюю форму. В данном случае<br />

это форма матриц и векторов. Если формирование векторов источников<br />

ветвей и матрицы сопротивлений ветвей не представляет особой сложности,<br />

то формирование матриц соединений требует большее количество<br />

операторов. По этой причине многие программы схемотехнического<br />

моделирования не используют матрицы соединений. Для формирования<br />

расчетных матриц и векторов используют алгоритмы, которые иногда<br />

называют алгоритмами поэлементного вклада. Один из таких алгоритмов<br />

рассматривается далее.<br />

Вычисления. В результате перевода данных во внутреннюю форму<br />

имеем следующие матрицы:<br />

матрица сопротивлений ветвей — Z;<br />

вектор источников напряжений — e;<br />

вектор источников тока — J;<br />

контурная матрица соединений — c;<br />

транспонированная узловая матрица соединений — at.<br />

Кроме этого, вычисляется число ветвей — arc, число узловых пар -<br />

yzlov.<br />

Число контуров вычисляется как разница arc и yzlov. Вычисляемые матрицы<br />

и порядок их вычислений прокомментированы в алгоритме.<br />

Обозначения матриц в алгоритме практически совпадают с обозначениями<br />

в формулах.<br />

Перевод результатов вычислений из внутренней формы во внешнюю<br />

форму. В данном алгоритме результаты вычислений представлены в<br />

форме векторов и матриц. Такой формы достаточно, что бы определить<br />

значение тока или напряжения в ветви: номер элемента в векторе соответствует<br />

номеру ветви схемы. При небольшом числе ветвей, как в<br />

рассматриваемом примере, переводить данные во внешнюю форму нет<br />

необходимости.<br />

Отображение данных. Для просмотра результатов вычислений используется<br />

диалоговое окно SciLab. Для вывода результатов в это диалого-<br />

78


вое окно достаточно, в соответствии с правилами синтаксиса SciLab,<br />

убрать точку с запятой после соответствующего оператора.<br />

2.3.7. Формирование уравнений R-,L-,C- схем и расчет переходных<br />

процессов.<br />

Рассмотрим расчет переходных процессов в схеме с линейными RLC<br />

компонентами. Ниже приводится алгоритм расчета и его описание. Далее<br />

приводится программа на языке математического пакета SciLAB.<br />

Комментарии в программе дополняют описание алгоритма.<br />

1<br />

2<br />

3<br />

4<br />

7<br />

Ввод расчетного шага, времени<br />

расчета.<br />

Ввод списка соединений<br />

да<br />

Извлечение информации из<br />

списка соединений.<br />

Формирование матриц сопротивлений<br />

и источников в<br />

координатах ветвей<br />

Формирование топологических<br />

матриц<br />

Вычисление матриц сопротивлений<br />

и проводимостей в<br />

координатах схемы<br />

5 Начало цикла расчета<br />

6<br />

8<br />

конец<br />

цикла?<br />

Расчет источников в<br />

координатах схемы<br />

Расчет откликов в координатах<br />

схемы<br />

Расчет откликов в координатах<br />

ветвей<br />

Вывод результатов расчета<br />

В первом блоке выполняется<br />

ввод расчетного шага и времени<br />

расчета. По этим данным<br />

вычисляется число расчетных<br />

точек для формирования цикла<br />

расчета. Далее вводится список<br />

соединений ветвей. Формат<br />

этого списка соответствует<br />

формату списка данных list<br />

языка SciLAB. Порядок перечисления<br />

компонент этого<br />

списка максимально приближен<br />

к стандарту списка соединений<br />

Spice-программ. Основное<br />

отличие от Spice-формата<br />

состоит в том, что источники<br />

напряжения и (или) тока вводятся<br />

как атрибуты ветви наравне<br />

с номиналом ветви. Номер<br />

ветви соответствует порядковому<br />

номеру появления описания<br />

ветви в списке list.<br />

Во втором блоке выполняется<br />

извлечение информации из<br />

списка соединений, то есть<br />

распознавание типа ветви, расчет<br />

резистивного сопротивления<br />

для инерционной ветви по<br />

методу Эйлера 1-го порядка и<br />

запись полученного значения в<br />

матрицу сопротивлений ветви.<br />

Одновременно заполняется<br />

вектор источников тока и источников напряжений ветвей. Кроме того,<br />

79


формируется массив номеров ветвей, соответствующих емкостным и<br />

индуктивным ветвям.<br />

В третьем блоке выполняется формирование топологических матриц.<br />

Для этой цели используется функция formc, написанная на SciLab<br />

и приведенная далее за основным алгоритмом. Особенность функции<br />

состоит в том, что она может сформировать топологические матрицы<br />

для несвязных схем, то есть схем, в состав которых входят топологически<br />

изолированные подсхемы.<br />

В четвертом блоке выполняется вычисление матриц сопротивлений в<br />

координатах схемы, то есть в контурном и узловом базисах. Поскольку<br />

расчет схемы соответствует методу контурных сопротивлений, то в этом<br />

блоке вычисляется матрица контурных проводимостей.<br />

В пятом блоке формируется цикл расчета переходного процесса. Так<br />

как схема линейная, то этот цикл организуется после вычисления матриц<br />

сопротивлений, проводимостей и топологических матриц. При формировании<br />

цикла производится проверка на условия окончания цикла.<br />

Если параметры цикла заданы неверно, например, число расчетных точек<br />

оказалось меньше или равно начальному значению переменной цикла,<br />

то цикл выполнятся не будет.<br />

В шестом, седьмом и восьмом блоках, выполняется расчет схемы по<br />

соотношениям, приведенным в разделе 2.3.3. В восьмом блоке для инерционных<br />

ветвей выполняется перерасчет источников тока и напряжения<br />

в соответствии с методом Эйлера 1-го порядка.<br />

clear ();<br />

//Ввод расчетного шага dt и времени расчета T<br />

dt=0.000001;T=0.0002;<br />

//Вычиcление числа расчетных точек NN<br />

NN=round (T/dt); //вычисляет наименьшее целое от деления<br />

//задание массива времени<br />

t=[0:dt:T]'; //одинарная кавычка означает транспонирование<br />

/ /Ввод списка соединений<br />

// имя нач. кон. парам. e J<br />

newshema=list ( ' r1', [2 3], 2, 1, 0,...<br />

'c1', [3 2], 10.0e-6, -0.5, 0.,...<br />

'r3', [1 2], 4, 0, 0,...<br />

'L1', [3 4], 0.10e-3, -0.00, -1.0,...<br />

'r5', [4 1], 6, 0, 0,...<br />

'r6', [4 2], 7, 0, 0);<br />

//определение числа ветвей-arc, объявл массива сопротивлений Z<br />

arc=size(newshema)/5; Z=zeros(arc,arc);<br />

/ / Извлечение информации из списка соединений<br />

k=2; kc=0; kL=0;<br />

for i=1:arc<br />

ta(i)=newshema(k)(1); he(i)=newshema(k)(2);<br />

sim(i)= convstr (newshema(k-1),'u');<br />

a=stripblanks (sim(i)); //удаление пробелов<br />

a=part ([a],[1]); //определение 1-го символа в имени ветви<br />

select a<br />

80


case 'R' then //если 'R' то резистор<br />

Z(i,i)=newshema(k+1);<br />

case 'C' then //если 'С' то емкость<br />

kc=kc+1; nomc(kc)=i; //формирование списка емкостей<br />

Z(i,i)=dt/newshema(k+1);<br />

case 'L' then //если 'L' то индуктивность<br />

kL=kL+1; nomL(kL)=i; //формирование списка индуктивностей<br />

Z(i,i)=newshema(k+1)/dt;<br />

else //если не распознана ветвь<br />

'Abort!!! There is no model '+sim(i)<br />

abort<br />

end;<br />

// формирование векторов источников ветвей<br />

e(i)=newshema(k+2); J(i)=newshema(k+3); k=k+5;<br />

end;<br />

/ / формирование топологических матриц<br />

yz1=max (ta); yz2=max (he); yzlov=max (yz1,yz2) //определение числа узлов схемы<br />

[C,A,g]= formc (ta',he');<br />

/ / в ычисление матриц сопротивлений и проводимостей схемы<br />

Zr=C'*Z*C;<br />

Yk=Zr(yzlov:arc,yzlov:arc)^(- 1);<br />

zok=Zr(1:yzlov-1,yzlov:arc); zko=Zr(yzlov:arc,1:yzlov-1);<br />

zo =Zr(1:yzlov-1,1:yzlov-1); zor=zo-zok*Yk*zko;<br />

for n=1:NN+1, / /Расчет в цикле по времени<br />

er=C'*e; Jr=A'*J;<br />

ek=er(yzlov:arc); eo=er(1:yzlov-1);<br />

Jk=Jr(yzlov:arc); Jo=Jr(1:yzlov-1);<br />

ik=Yk*ek-Yk*zko*Jo-Jk; Uo=zor*Jo+zok*Yk*ek-eo;<br />

iv=C(1:arc,yzlov:arc)*ik; Uv=A(1:arc,1:yzlov-1)*Uo;<br />

/ / начальные условия для следующего шага<br />

if kL 0 then<br />

for j=1:kL<br />

J(nomL(j))=- iv(nomL(j)); //начальные условия для индуктивностей<br />

end;<br />

end;<br />

if kc0 then<br />

for j=1:kc<br />

e(nomc(j))=- Uv(nomc(j)); //начальные условия для емкостей<br />

end;<br />

end;<br />

/ / в ывод в массивы для построения графиков<br />

ivL(n)=iv(4); uvc(n)=Uv(2);<br />

end; / / о кончание цикла по времени<br />

plot2d (t, [uvc,ivL] ) // построение графиков<br />

xgrid(2)<br />

Ниже приводится функция для расчета топологических матриц. Входными<br />

данными для функции является список начальных узлов ветвей ta<br />

и список конечных узлов ветвей he. В результате вычисляются ортогональные<br />

матрицы: контурная С и узловая А, кроме того формируется<br />

информация о топологическом графе схемы g, позволяющая отобразить<br />

граф схемы по введенному списку начальных и конечных узлов схемы.<br />

81


function [C,A,g]=formc(ta,he)<br />

maxv1=max (ta);maxv2=max (he);maxv= max (maxv1,maxv2);<br />

g = make _graph ('cep1',1,maxv,ta,he);<br />

g1=make _graph ('cep2',0,maxv,ta,he);<br />

a=graph _2_mat (g,'node-arc');<br />

A0=full (a); arc = arc_number (g); node = node_number (g);<br />

nc=connex (g);<br />

if nc==1 then<br />

t= min _weight _tree (node,g1);<br />

yzl=maxv; hordsum=setdiff (1:arc,t)<br />

at(1:node-1, 1:arc)=A0(1:node-1, 1:arc);<br />

size_hord=size(hordsum);<br />

for i=1:size_hord(2) at(node-1+i,hordsum(i))=1; end;<br />

else<br />

inow=0;kd=0;<br />

for ks=1:nc<br />

ns=con_nodes(ks,g); size_ns=size(ns); kyz=size_ns(2);<br />

for j=1:kyz-1 yz0(kd+j)=ns(j); end; kd=kd+kyz-1;<br />

k=0;vetv= zeros(arc);<br />

for i=1:kyz<br />

i1=ns(i);<br />

for j=1:arc<br />

jot=j;<br />

if A0(i1,j)==- 1. then<br />

k=k+1; vetv(k)=j;<br />

end;<br />

end;<br />

end;<br />

gpod1=subgraph (ns,'nodes',g1); node1 = node_number (gpod1);<br />

t= min _weight _tree (node1,gpod1); size_t= size(t);<br />

for ii=1:size_t(2)<br />

tnew(ii)=vetv(t(ii));<br />

end;<br />

hord=setdiff (vetv',tnew');<br />

for j=1:k-ii hordsum(inow+j)=hord(j); end; inow=inow+k-ii;<br />

end;<br />

hordsum=hordsum'; yzl=yz0'; size_yz0=size(yz0');<br />

for j=1:size_yz0(2)<br />

for i=1:node<br />

if i==yz0(j) then<br />

at(j,1:arc)=A0(i,1:arc);<br />

end;<br />

end;<br />

end;<br />

size_hord=size(hordsum); nhord=size_hord(2);<br />

for i=1:nhord at(size_yz0(2)+i,hordsum(i))=1; end;<br />

end;<br />

A=at'; C=at^(- 1);<br />

endfunction ;<br />

82


2.3.8. Расчет схем в системе CAD/CAM<br />

Для расчета схем в системах сквозного автоматизированного проектирования<br />

требуется определить схемные форматы данных этих систем.<br />

Из них надо выбрать тот формат, который наиболее близок к формату<br />

данных расчетной программы.<br />

В качестве примера рассматривается система сквозного проектирования<br />

печатных плат KiCAD. В систему входит графический редактор<br />

схем, в котором можно создать текстовый список соединений схемы в<br />

Spice-формате. Кроме этого формата, можно создавать списки соединений<br />

еще в нескольких форматах. Spice-формат является наиболее подходящим<br />

для моделирования схем. Рассмотрим кратко структуру этого<br />

формата данных. Остановимся только на той информации, которой достаточно<br />

для расчета резистивной схемы с источниками постоянного<br />

тока и напряжения. Более подробные сведения о Spice-формате можно<br />

получить, например, в [14].<br />

Информация о схеме располагается построчно. Каждая строка содержит<br />

описание ветви, которое включает записи, разделенные пробелами<br />

в следующей последовательности:<br />

имя_ветви, 1-й_узел, 2-й_узел, номинал_ветви, дополнительные_параметры.<br />

Имя ветви должно начинаться с определенного символа. Имя резистивной<br />

ветви должно начинаться с R или r, имя ветви с источником<br />

напряжения должно начинаться с V или v, имя ветви с источником тока<br />

должно начинаться с I или i. Имя ветви не должно повторяться. Для<br />

имени отведем не больше 4-х символов.<br />

Номинал ветви определяет числовое значение основного параметра<br />

ветви. В Spice-формате в числах можно применять масштабный множитель.<br />

Например, вместо 10 3 можно поставить символ к или К, но в приведенном<br />

ниже алгоритме перед степенью числа ставится символ е или<br />

Е, например 1е3 соответствует 10 3 .<br />

В качестве дополнительного параметра для источника напряжения<br />

будем использовать значение последовательного сопротивления. Это<br />

значение должно быть представлено в следующей форме: R=число или<br />

r=число. Дополнительный параметр источника тока задается так же,<br />

только сопротивление должно соответствовать параллельному сопротивлению<br />

источника. Если дополнительный параметр отсутствует, то<br />

для источника напряжения по умолчанию r=0, для источника тока<br />

r=10 10 .<br />

Дополнительными параметрами для сопротивления будем считать последовательный<br />

источник напряжения и параллельный источник тока.<br />

Схема включения этих источников соответствует схеме обобщенной<br />

ветви. Так как Spice-формат не предусматривает такого способа задания<br />

источников, то будем считать, что это расширением Spice-формата. Зна-<br />

83


чения источников должны быть заданы в следующих формах: v=число,<br />

или V=число, или i=число, или I=число. Одновременно могут быть заданы<br />

оба источника.<br />

Если строка начинается с символа '*', то эта строка игнорируется. Ее<br />

можно использовать как комментарий. Если в строке присутствует<br />

восклицательный знак '!', то строка, начиная с этого символа, игнорируется.<br />

Переносы строки не предусмотрены.<br />

Заканчивать список соединений должна строка, начинающаяся с символов<br />

'.end'.<br />

Приведем пример схемы, созданной в схемном редакторе KiCAD.<br />

Список соединений имеет следующий вид:<br />

* EESchema Netlist Version 1.1 (Spice format) creation date: 27/8 / 2006- 07:51:05<br />

v1 5 1 2 r=2<br />

R8 4 3 1<br />

R4 5 2 1<br />

R5 2 4 1<br />

R3 1 3 0.5<br />

R2 4 3 1<br />

R1 1 2 2<br />

.end<br />

Та же схема может иметь другой вид:<br />

Здесь вместо изображения с источником напряжения применено изображение<br />

резистора R7 с источником напряжения, заданным через дополнительный<br />

параметр. Список соединений для этой схемы:<br />

84


* EESchema Netlist Version 1.1 (Spice format) creation date: 27/8 / 2006- 20:12:32<br />

R7 4 2 2 v=2<br />

R8 5 3 1<br />

R4 4 1 1<br />

R5 1 5 1<br />

R3 2 3 0.5<br />

R2 5 3 1<br />

R1 2 1 2<br />

.end<br />

Список соединений системой KiCAD автоматически создается в<br />

файле с расширением *.cir.<br />

Ниже приводится программа, читающая данные из файла со списком<br />

соединений в Spice-формате и выполняющая расчет резистивных схем<br />

по постоянному току.<br />

Интерфейс программы минимален. При запуске программы появляется<br />

окно, в котором можно ввести файл, отредактировать его в блокноте<br />

и запустить расчет схемы:<br />

Результаты расчета: ток и напряжение каждой ветви записываются в<br />

исходный файл после списка соединений. Например:<br />

* EESchema Netlist Version 1.1 (Spice format) creation date: 27/8 / 2007- 07:51:05<br />

v1 5 1 2 r=2<br />

R8 4 3 1<br />

R4 5 2 1<br />

R5 2 4 1<br />

R3 1 3 0.5<br />

R2 4 3 1<br />

R1 1 2 2<br />

.end<br />

результаты расчета<br />

ветвь v1 ток = 0.4999999 напряжение = -1.000000<br />

ветвь R8 ток = -0.1250000 напряжение = -0.1250000<br />

ветвь R4 ток = -0.4999999 напряжение = -0.4999999<br />

ветвь R5 ток = -0.2499999 напряжение = -0.2499999<br />

ветвь R3 ток = 0.2499999 напряжение = 0.1250000<br />

ветвь R2 ток = -0.1250000 напряжение = -0.1250000<br />

ветвь R1 ток = 0.2500000 напряжение = 0.5000000<br />

85


После выполнения расчета появляется диалоговое окно с предложением<br />

повторить расчет.<br />

Приведем алгоритм программы:<br />

В первом блоке объявляются размеры массивов. Массивы подразделены<br />

на массивы, относящиеся к схеме и массивы, необходимые для<br />

трансляции данных из исходного файла.<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

Объявление размерностей<br />

массивов<br />

Создание интерфейса<br />

пользователя<br />

Ввод строки из входного файла,<br />

выделение слов в строке<br />

Обработка слов строки,<br />

перевод данных во внутренний<br />

формат массивов<br />

Формирование топологической<br />

матрицы<br />

Расчет напряжений и токов в<br />

ветвях<br />

Вывод результатов расчета в<br />

файл<br />

повторить<br />

расчет?<br />

Выход<br />

да<br />

Во втором блоке выполняется<br />

обнуление массивов и создается<br />

пользовательский интерфейс для<br />

ввода данных, предварительно<br />

подготовленных в графическом<br />

редакторе. Файл с данными имеет<br />

текстовый spice-формат и<br />

имеет должен иметь расширение<br />

*.cir. Для просмотра и редактирования<br />

данных можно воспользоваться<br />

текстовым редактором,<br />

например, блокнотом, входящим<br />

в систему Windiws: notepad.exe.<br />

Лучше применить текстовый редактор,<br />

читающий кириллицу в<br />

DOS кодировке, например,<br />

polyglot, Koedit и другие.<br />

В третьем блоке выполняется<br />

ввод строки из входного<br />

файла и выделение слов из строки.<br />

Эта часть алгоритма составлена<br />

на основе фортран-программы,<br />

приведенной в [15].<br />

В четвертом блоке обрабатываются<br />

слова введенной строки.<br />

Формируются исходные масси-<br />

вы источников ветвей и сопротивлений ветвей. В соответствии с тензорной<br />

технологией, основным топологическим элементом является ветвь.<br />

Источники в ветвях — источники тока и напряжения, а также сопротивление<br />

ветви являются атрибутами ветви. По умолчанию, если сопротивление<br />

источника напряжения не введено, то сопротивление приравнивается<br />

нулю. Если сопротивление источника тока не введен, ему присваивается<br />

значение 10 10 . Для резистора, кроме номинала, могут быть добавлены<br />

значения параллельного источника тока и источника напряжения<br />

(см. схему обобщенной ветви рис.2.1.1). В результате работы этой части<br />

86


алгоритма имеем матрицу сопротивлений ветвей zv, массив источников<br />

тока ветвей jv, массив источников напряжений ветвей ev.<br />

В пятом блоке формируются топологические ортогональные матрицы:<br />

контурная и узловая. Для этой цели используется подпрограмма<br />

derevo. Вычисление контурной матрицы выполняется инвертированием<br />

узловой матрицы. Для инвертирования матрицы используются подпрограммы<br />

библиотеки SLATEC : sgefa и sgedi .<br />

В шестом блоке на основе метода контурных токов вычисляются массивы<br />

напряжений ветвей uv и токов ветвей iv. Вычисления производятся<br />

по тем же формулам, что и в алгоритме на SciLAB раздела 2.3.7. Для инвертирования<br />

матрицы контурных сопротивлений использована подпрограмма<br />

inverse4, [16],текст которой приводится за основным алгоритмом.<br />

Для перемножения матриц используется встроенная Фортрановская<br />

функция matmul.<br />

В седьмом блоке выполняется вывод результатов расчета — токов и<br />

напряжений ветвей в конец входного файла.<br />

Для оценки времени счета используется обращение к встроенной<br />

Фортран-подпрограмме CPU_TIME При первом обращении в переменную<br />

rt1 записывается процессорное время прошедшее с начала загрузки<br />

программы. Следующее обращение к этой подпрограмме происходит<br />

перед формированием топологических матриц, процессорное время записывается<br />

в rt2 и последнее обращение происходит после расчетов,<br />

перед выводом результатов в файл, процессорное время записывается в<br />

rt3. Таким образом, разница rt2 и rt1 соответствует подготовке информации<br />

для расчета, разница rt3 и rt2 соответствует процессорному времени,<br />

затрачиваемому непосредственно на расчет схемы. В DOS-окно<br />

время на подготовку и время на расчет выводятся соответственно под<br />

именами time1 и time2.<br />

87


program kontur<br />

!******* 1. Объявление внутренних массивов схемы *****<br />

integer, parameter:: nv=400 ! максимальное число ветвей<br />

character (len = 4 ) namv(nv),name0 ! имена ветвей<br />

integer np1(nv),np2(nv) ! номера начала и конца ветвей<br />

character (len=8) symnp1(nv),symnp2(nv), nameyz ! имена нач. и кон. узлов<br />

integer yzpar,kp,kv ! число узловых пар, узлов и ветвей<br />

real ev(nv), jv(nv), zv(nv,nv) ! параметры ветвей<br />

real er(nv), jr(nv), zr(nv,nv) ! параметры схемы<br />

real Yr(nv,nv), Uv(nv), Iv(nv) ! узловые сопр. токи и напр. ветвей<br />

real Csoed(nv,nv),Asoed(nv,nv) ! матрицы соединений<br />

!*******объявления для транслятора****<br />

character (len = 20) words(7*nv) ! Массив слов текста<br />

character (len = 80) st,namefile ! Строка текста<br />

character (len = 20) name1 ! текст для числа<br />

integer wbegin, wend, neww, lst<br />

!объявления для интерфейса<br />

character(len=80)::CFIL1=' '<br />

character(len=50)::help='программа расчета R-цепи'<br />

integer, parameter :: units = 1 ! Номер устройства для файла<br />

!****** 2. Создание интерфейса пользователя ******<br />

ipovtor=1 ! флаг повторения расчета<br />

osnov: do while (ipovtor==1)<br />

kv=0 ! текущая ветвь<br />

zv=0;ev=0;jv=0;np1=0;np2=0;Csoed=0;Asoed=0 ! обнуление массивов<br />

er=0;jr=0;zr=0;Yr=0;Uv=0;Iv=0<br />

call swgopt('center','position')<br />

CALL SWGHLP (help)<br />

CALL SWGWTH (-30)<br />

CALL WGINI ('vert', IP)<br />

call wgcmd (IP, 'открыть блокнот','polyglot.exe',ID) ! запуск текстового редактора<br />

CALL WGLAB (IP, 'файл с данными:', ID)<br />

CALL WGFIL (IP, 'открыть файл', CFIL1, '*.cir', ID_FIL1)<br />

CALL WGOK (IP, ID_OK); CALL WGQUIT (IP, ID_Q)<br />

CALL WGFIN<br />

call GWGFIL(ID_FIL1,CFIL1)<br />

!****** 3. Ввод строки из входного файла, выделение слов в строке ******<br />

CALL CPU_TIME (rt1)<br />

! Запишем все слова строки в массив words<br />

open(units,file=trim(CFIL1))<br />

do while ( 1==1) ! Цикл обработки строк<br />

neww = 0 ! neww - число слов в строке<br />

read(units,'(a)',end=10,iostat=ios)st ! Ввод строки текста<br />

write(*, *) st ! Контрольный вывод<br />

st=adjustl(st) ! левое выравнивание<br />

if (index(st,'*')==1) cycle ! чтобы игнорировать строку начин. с "*"<br />

if (st(1:4)=='.end') exit<br />

lst = len_trim(st) ! Длина строки без хвостовых пробелов<br />

k=index(st,';') ! чтобы игнорировать часть строки начин. с ";"<br />

if (k==1) cycle<br />

if (k>=1) lst = len_trim(st(1:k-1))<br />

if (index(st(1:1),'.')/=0) cycle<br />

wbegin = 0 ! wbegin - начало текущего слова в строке<br />

do j = 1, lst ! Просмотр всех символов строки<br />

if (st(j:j) == ' ') then<br />

if (wbegin > 0) call addword( words, st, wbegin, wend, neww )<br />

88


else if (wbegin == 0) then ! Обнаружено начало слова<br />

wbegin = j; wend = j<br />

else<br />

wend = wend + 1 ! Перемещение по текущему слову<br />

endif<br />

end do<br />

if (wbegin > 0) call addword(words, st, wbegin, wend, neww)<br />

!*** 4. Обработка слов строки, перевод данных во внутренний формат массивов ***<br />

if (neww==0) cycle !если слов нет, то игнорировать обработку<br />

kv=kv+1 ! новая строка<br />

if (kv>nv) then<br />

write(name0,*)nv<br />

call DWGMSG('Слишком много ветвей: > '//name0)<br />

stop<br />

endif<br />

namv(kv)=words(1) ! запись имени ветви<br />

read(words(2),*)symnp1(kv) ! запись 1-го узла<br />

read(words(3),*)symnp2(kv) ! запись 2-го узла<br />

! запись величин<br />

if (words(1)(1:1)=='v' .or. words(1)(1:1)=='V') then<br />

read(words(4),*)ev(kv) ! запись источника напряж<br />

zv(kv,kv)=0 ! запись внутр. сопрот. по умолч.<br />

if (neww>4) then<br />

k=index(st,'=')<br />

name1=trim(st(k+1:))<br />

read(name1,*)zv(kv,kv) ! запись введенного сопротивления<br />

endif<br />

elseif (words(1)(1:1)=='i' .or. words(1)(1:1)=='I') then<br />

read(words(4),*)jv(kv) ! запись источника тока<br />

zv(kv,kv)=1.0e10 ! запись внутр. сопрот. по умолч.<br />

if (neww>4) then<br />

k=index(st,'=')<br />

name1=trim(st(k+1:))<br />

read(name1,*)zv(kv,kv) ! запись введенного сопрот.<br />

endif<br />

elseif (words(1)(1:1)=='r' .or. words(1)(1:1)=='R') then<br />

read(words(4),*)zv(kv,kv) ! запись сопротивления<br />

if (neww>4) then<br />

do j=5,neww<br />

k=index(words(j),'i')<br />

if (k/=0 .or. index(st,'I')/=0 ) then<br />

name1=trim(words(j)(3:))<br />

read(name1,*)jv(kv)<br />

endif<br />

k=index(words(j),'v')<br />

if (k/=0 .or. index(st,'V')/=0 ) then<br />

name1=trim(words(j)(3:))<br />

read(name1,*)ev(kv)<br />

endif<br />

end do<br />

endif<br />

else<br />

write(*,*) 'не могу распознать тип ветви ',trim(words(1)),' !?'<br />

stop<br />

endif<br />

10 if (ios/=0) exit<br />

end do<br />

89


!нумерация узлов<br />

k=1;m=0<br />

do i=1,kv<br />

nameyz=symnp1(i)<br />

do j=1,kv<br />

if (np1(j)==0.and.nameyz==symnp1(j)) then<br />

np1(j)=k;m=1; endif<br />

if (np2(j)==0.and.nameyz==symnp2(j)) then<br />

np2(j)=k;m=1; endif<br />

end do<br />

if (m==1) then; m=0;k=k+1; endif<br />

end do<br />

do i=1,kv<br />

nameyz=symnp2(i)<br />

do j=1,kv<br />

if (np2(j)==0.and.nameyz==symnp2(j)) then<br />

np2(j)=k;m=1; endif<br />

end do<br />

if (m==1) then; m=0;k=k+1; endif<br />

end do<br />

!maxyz=k-1<br />

!контрольный вывод введенных ветвей<br />

write(*, *) 'Число ветвей kv =', kv<br />

do j = 1, kv<br />

write(*, *) namv(j),' от ',trim(symnp1(j)),np1(j),' до ', &<br />

& trim(symnp2(j)), np2(j), ' ',zv(j,j),' ',ev(j),' ',jv(j)<br />

end do<br />

CALL CPU_TIME (rt2)<br />

!******* 5. Формирование топологической матрицы ******************<br />

m1=maxval(np1);m2=maxval(np2);KP=max(m1,m2)<br />

call derevo(KP, kv, np1, np2, Csoed(1:kv,1:kv), Asoed(1:kv,1:kv))<br />

!******* 6. Расчет напряжений и токов в ветвях ********************<br />

er(1:kv)=matmul(transpose(csoed(1:kv,1:kv)),ev(1:kv))<br />

Jr(1:kv)=matmul(transpose(Asoed(1:kv,1:kv)),jv(1:kv))<br />

Zr(1:kv,1:kv)=matmul(matmul(transpose(csoed(1:kv,1:kv)),zv(1:kv,1:kv)),csoed(1:kv,1:kv));<br />

Yr(kp:kv,kp:kv)=Zr(kp:kv,kp:kv)<br />

call inverse4(Yr(kp:kv,kp:kv),kv-kp+1)<br />

iv(kp:kv)=matmul(Yr(kp:kv,kp:kv),er(kp:kv))- & ! расчет контурных токов<br />

& matmul(Yr(kp:kv,kp:kv),matmul(Zr(kp:kv,1:kp-1),Jr(1:kp-1)))-Jr(kp:kv)<br />

iv(1:kv)=matmul(Csoed(1:kv,kp:kv),iv(kp:kv)) ! токи в ветвях<br />

Uv(1:kv)=- ev(1:kv)+matmul(zv(1:kv,1:kv),iv(1:kv))+matmul(zv(1:kv,1:kv),jv(1:kv))<br />

CALL CPU_TIME (rt3)<br />

print*, 'time1 = ',rt2-rt1,'time2 = ',rt3-rt2<br />

!********* 7. Вывод результатов расчета в файл ****************************<br />

write (units,*)'результаты расчета'<br />

! do i=1,kv ! можно вывести в файл контурную матрицу<br />

! write (units,*)(Csoed(i,j),j=1,kv)<br />

! end do<br />

do i=1,kv !вывод токов и напряжений<br />

write (units,*)'ветвь ',namv(i),' ток = ',iv(i), ' напряжение = ',Uv(i)<br />

end do<br />

close(units)<br />

!***** окончание расчета, запрос на новый расчет****************<br />

CALL DWGBUT ('повторить расчет?', ipovtor)<br />

end do osnov<br />

90


end program kontur<br />

!********** Подпрограмма расчета топологических матриц ****************<br />

subroutine derevo(yzlov,vetvey,ta,he,C,A)<br />

!ta - массив начальных узлов<br />

!he - массив коненых узлов<br />

real C(vetvey,vetvey),A(vetvey,vetvey)<br />

real workC(vetvey),det(2)<br />

integer ipvtC(vetvey),mderevo(vetvey)<br />

integer yzlov,vetvey,v,ptr,ta(vetvey),he(vetvey)<br />

integer, allocatable::ADJ(:),NEXT(:),VECTOR(:),VISIT(:),LIST(:)<br />

!определение размеров массивов<br />

MAXP1=yzlov+1;IW=MAXP1+2*vetvey<br />

allocate(ADJ(IW),NEXT(IW),VECTOR(MAXP1),VISIT(MAXP1),LIST(MAXP1))<br />

!инициализация переменных<br />

KP=yzlov<br />

ADJ=0;NEXT=0;VECTOR=0;VISIT=0;LIST=0<br />

PTR=0; V=KP; I=KP+1;<br />

do K=1,vetvey<br />

M=ta(K); N=he(K); NEXT(I)=NEXT(M); ADJ(I)=N; NEXT(M)=I;<br />

I=I+1; NEXT(I)=NEXT(N); ADJ(I)=M; NEXT(N)=I; I=I+1;<br />

end do;<br />

LIST(yzlov+1)=0; I=1; N=1; LIST(1)=V; VECTOR(V)=0; VISIT(V)=1;<br />

!поиск узлов ветвей, относящихся к дереву<br />

do while (1==1)<br />

M=LIST(N); PTR=M;<br />

do while (1==1)<br />

NNN=NEXT(PTR); PTR=NNN;<br />

if (PTR==0) exit<br />

J=ADJ(PTR);<br />

if (VISIT(J)==0) then<br />

I=I+1; LIST(I)=J; VISIT(J)=I; VECTOR(J)=M;<br />

end if<br />

end do<br />

N=N+1;<br />

if (LIST(N)==0) exit<br />

end do<br />

!формирование массива с номерами ветвей дерева и хорд<br />

do m=1,vetvey<br />

mderevo(m)=m;<br />

end do;<br />

do k1=1,vetvey<br />

if (VECTOR(k1)/=0) k2=VECTOR(k1)<br />

do m=1,vetvey<br />

if ((ta(m)==k1 .and. he(m)==k2).or.(ta(m)==k2.and.he(m)==k1)) then<br />

mderevo(m)=0;exit<br />

end if<br />

end do<br />

end do<br />

j=yzlov-1<br />

do i=1,vetvey<br />

A(i,ta(i))=1;A(i,he(i))=- 1;<br />

if (ta(i)==yzlov) A(i,ta(i))=0<br />

if (he(i)==yzlov) A(i,he(i))=0<br />

if (mderevo(i)/=0) then<br />

j=j+1;A(i,j)=1<br />

endif<br />

end do<br />

C=transpose(A)<br />

91


call sgefa(C,vetvey,vetvey,ipvtC,info)<br />

call sgedi(C,vetvey,vetvey,ipvtC,det,workC,1)<br />

deallocate(ADJ,NEXT,VECTOR,VISIT,LIST)<br />

end subroutine derevo<br />

!******* подпрограмма выделения слова в строке **************<br />

subroutine addword( words, st, wbegin, wend, neww )<br />

integer wbegin, wend, neww<br />

character (len = *) words(*) ! Перенимающий размер массив<br />

character (len = *) st ! Строка, перенимающая длину<br />

neww = neww + 1<br />

words(neww) = st(wbegin : wend)<br />

wbegin = 0<br />

end<br />

!******* подпрограмма инвертирование матрицы ***************<br />

subroutine inverse4(A,n)<br />

real:: A(n,n)<br />

do i=1,n<br />

if (A(i,i)==0.) then<br />

print*,a(i,i),n,i; stop 'деление на ноль!!!'<br />

endif<br />

A(i,i)=1.0/A(i,i)<br />

do 5 j=1,n<br />

if (j-i) 1,5,1<br />

1 A(j,i)=A(j,i)*A(i,i)<br />

do 4 k=1,n<br />

if(k-i) 2,4,2<br />

2 A(j,k)=A(j,k)-A(j,i)*A(i,k)<br />

if (j-n) 4,3,4<br />

3 A(i,k)=- A(i,i)*A(i,k)<br />

4 continue<br />

5 continue<br />

enddo<br />

do j=1,n-1<br />

A(n,j)=- A(n,n)*A(n,j)<br />

end do<br />

return<br />

end subroutine inverse4<br />

92


2.4. Расчет по частям узловых схем.<br />

Расчет больших схем состоит из 4-х основных этапов:<br />

1) разбиение схемы на подсхемы; 2) расчет изолированных подсхем; 3)<br />

расчет суммарной схемы; 4) учет соединения подсхем.<br />

Можно выделить два дуальных способа разбиения схемы на части. В<br />

простейшем случае, который продемонстрирован на рис.2.4.1, эти<br />

способы соответствуют методу эквивалентного генератора напряжения<br />

и эквивалентного генератора тока, известным так же, как теоремы Тевенина<br />

и Нортона.<br />

а) б)<br />

Рис. 2.4.1. Метод эквивалентного генератора напряжения (а) и<br />

эквивалентного генератора тока (б).<br />

В первом способе схема разъединяется удалением последовательного<br />

сопротивления из контура. Получившиеся подсхемы представляются эквивалентными<br />

узловыми подсхемами с источниками напряжений.<br />

Восстановление удаленной ветви приводит к появлению общего для<br />

подсхем контурного тока, величину которого можно рассчитать по формуле,<br />

приведенной на рис.2.4.1а. Во втором способе удаляется параллельная<br />

проводимость из узловой пары. Получившиеся подсхемы представляются<br />

эквивалентными контурными подсхемами с источниками<br />

тока. Восстановление удаленной ветви приводит к появлению общего<br />

для подсхем узлового напряжения, величину которого можно рассчитать<br />

по формуле, приведенной на рис.2.4.1б.<br />

В более сложных случаях подсхемы являются многополюсными и<br />

многоконтурными. В первом способе расчет подсхем ведется методом<br />

узловых напряжений. Полученные напряжения на узловых парах для<br />

последующего контурного объединения подсхем представляются как<br />

источники напряжений ветвей. Во втором способе расчет подсхем ведется<br />

методом контурных токов. Полученные токи в контурах для последующего<br />

объединения подсхем представляются как источники тока<br />

ветвей. Первый способ разбиения будем называть узловым, второй<br />

способ разбиения назовем контурным.<br />

Рассмотрим один из возможных способов узлового разъединения схемы<br />

на части. Отдельные подсхемы выделяются по функциональному<br />

признаку. Это могут быть источники питания, двигатели, фильтры, ком-<br />

93


мутирующие цепочки, элементы механической или иной неэлектрической<br />

природы, допускающие эквивалентирование электрическими аналогами<br />

и т.д. Все источники, действующие в исходной схеме, должны<br />

располагаться в подсхемах. Выделенные подсхемы должны быть соединены<br />

в узлах ветвями связи – двухполюсниками, которые могут в частном<br />

случае представлять собой короткозамкнутые перемычки. Схема<br />

разбивается на части удалением ветвей связи. Разбиение схемы на подсхемы<br />

и ветви связи должно быть таким, чтобы при удалении ветвей<br />

связи все подсхемы должны оказаться изолированными. Получившиеся<br />

многополюсники не должны при этом иметь негальваническую связь.<br />

Рис.2.4.2 иллюстрирует сказанное. Для упрощения изображения, источники<br />

в ветвях не показаны. Предполагается, что подсхемы могут быть<br />

описаны в ортогональном базисе. Ветви связи должны быть представлены<br />

эквивалентными ветвями без источников тока.<br />

а).<br />

б).<br />

Рис. 2.4.2. Разбиение схемы на части<br />

Отдельные подсхемы рассчитываются методом узловых потенциалов,<br />

и в итоге приводятся к эквивалентным лучевым схемам с известными<br />

узловыми напряжениями Uo и узловыми сопротивлениями Zoo<br />

(рис.2.4.3а). Восстановление схемы производится короткозамкнутыми<br />

перемычками, в результате чего образуется суммарная схема<br />

(рис.2.4.3б). Токи в суммарной схеме распределяются по подсхемам, вызывая<br />

приращение узловых потенциалов и соответственно токов. На последнем<br />

этапе расчета эти приращения добавляются к узловым потенциалам<br />

и токам изолированных подсхем, в результате чего получается<br />

окончательное решение.<br />

94


а).<br />

б).<br />

Рис. 2.4.3. Расчет подсхем (а) и получение объединенного решения (б).<br />

Наиболее объемная математическая операция при расчете схем – это<br />

вычисление обратной матрицы. При размерности матрицы равной NхN,<br />

ее обращение потребует примерно N 3 математических операций. Если<br />

расчет ведется методом контурных токов, то обращению подлежит матрица<br />

контурных сопротивлений. Схема рис.2.4.2а состоит из 10-ти<br />

контуров, поэтому вычисление обратной матрицы контурных сопротивлений<br />

потребует примерно 10 3 =1000 операций. При разбиении схемы на<br />

три части, как на рис.2.4.2б, каждая часть содержит два контура, поэтому<br />

расчет обратных матриц трех подсхем потребует примерно 3*2 3 =24<br />

операции. Суммарная схема рис.2.4.3б, содержащая еще 4 контура,<br />

займет 4 3 =64 операции. Итого имеем 24+64=88 операций против 1000 при<br />

непосредственном расчете схемы. Выигрыш в объеме вычислений составит<br />

1000/88≈11 раз. Если получаемые в результате разбиения на части<br />

подсхемы оказываются одинаковыми, число операций будет равно<br />

8+64=72 операции и выигрыш будет еще больше, так как 1000/72≈14 раз.<br />

От стратегии разбиения и метода расчета зависит скорость расчета.<br />

Если подсхемы, которые получились в результате разбиения, не имеют<br />

контуров, а имеют вид подобный рис.2.4.2а, то расчет по частям методом<br />

контурных токов только увеличит объем вычислений.<br />

У расчета по частям есть преимущества не только количественного<br />

характера, связанного со скоростью расчета больших схем, но и качественного.<br />

Описание отдельных подсхем может быть записано в базу<br />

данных и затем использовано при расчете схем различной конфигурации.<br />

Все современные программы схемотехнического моделирования используют<br />

ту или иную разновидность расчета по частям.<br />

95


2.4.1. Цепь пересечений<br />

Пусть заданы две подсхемы, соединенные 3-мя ветвями связи: s1, s2 и<br />

s3. Будем считать, без потери общности, что сопротивления связей равны<br />

нулю. Часть узлов подсхем может не участвовать в соединении<br />

(рис.2.4.4).<br />

Рис. 2.4.4. Соединение двух подсхем.<br />

В местах соединения подсхем образуется граничная цепь – цепь пересечений.<br />

Рис. 2.4.5. Образование граничной цепи.<br />

Топологию цепи пересечений можно отразить матрицей Сōs. Индексом<br />

ō обозначены граничные узлы.<br />

s1 s2 s3<br />

o1 -1<br />

o2 -1<br />

Cōs = o3 -1<br />

o4 1<br />

o5 1<br />

o6 1<br />

(2.4.1)<br />

Физически матрица Сōs отражает 1-й закон Кирхгофа для граничных<br />

узлов. Если считать положительным ток подсхемы, протекающим от<br />

граничного узла к нулевому, то есть ток, входящий в подсхему, то,<br />

например, для узла о1 можно записать: Izoo11=-Is1, для узла о4: Izo44=Is1<br />

и т.д. Поэтому в матрице Cōs каждая строка содержит только один элемент.<br />

96


Матрица приведенных узловых сопротивлений Z ~ ōō подсхем является<br />

блочной. Для объединенного решения потребуются сопротивления граничных<br />

узлов ō.<br />

o1 o2 o3 o4 o5 o6<br />

o1 zo11-1 zo12-1 zo13-1<br />

o2 zo21-1 zo22-1 zo23-1<br />

Z ~ ōō = o3 zo31-1 zo32-1 zo33-1<br />

o4 zo11-2 zo12-2 zo13-2<br />

o5 zo21-2 zo22-2 zo23-2<br />

o6 zo31-2 zo32-2 zo33-2<br />

Потребуется так же матрица сопротивлений Z ~ оō, блоки которой выделены<br />

ниже в полной матрице приведенных узловых сопротивлений Z ~ оо,<br />

вычисленных по (2.3.7)<br />

o1 o2 o3 о7 o4 o5 o6 о8<br />

o1 zo11-1 zo12-1 zo13-1 zo14-1<br />

o2 zo21-1 zo22-1 zo23-1 zo24-1<br />

Z ~ оо = o3 zo31-1 zo32-1 zo33-1 zo34-1<br />

о7 zo41-1 zo42-1 zo43-1 zo44-1<br />

o4 zo11-2 zo12-2 zo13-2 zo14-2<br />

o5 zo21-2 zo22-2 zo23-2 zo24-2<br />

o6 zo31-2 zo32-2 zo33-2 zo34-2<br />

о8 zo41-2 zo42-2 zo43-2 zo44-2<br />

Матрица сопротивлений цепи пересечений Zss вычисляется стандарт-<br />

ным преобразованием матрицы сопротивлений граничных узлов:<br />

s1 s2 s3<br />

s1 zo11-1+zo11-2 zo12-1+zo12-2 zo13-1+zo13-2<br />

Zss=Csō∙Z ~ ōō∙Cōs = s2 zo21-1+zo21-2 zo22-1+zo22-2 zo23-1+zo23-2<br />

s3 zo31-1+zo31-2 zo32-1+zo32-2 zo33-1+zo33-2<br />

(2.4.2)<br />

Анализируя содержание матрицы Zss, можно придти к выводу, что эта<br />

матрица отображает схему, приведенную на рис.2.4.6. То есть после<br />

преобразования мы имеем три сопротивления Zs1, Zs2 и Zs3, которые образуют<br />

цепь, состоящую из отдельных ветвей, образованных из сопротивлений,<br />

одновременно принадлежащих обеим подсхемам.<br />

Рис. 2.4.6. Цепь пересечений.<br />

Если ветви связи s1,s2,s3 имеют сопротивления и описываются матрицей<br />

Rss, то можно записать более общую форму расчета сопротивлений<br />

цепи пересечений:<br />

Zss=Csō∙Z ~ ōō∙Cōs+Rss (2.4.3)<br />

97


Для каждой ветви элементарной цепи пересечений можно вычислить<br />

действующий в ней источник напряжения. Этот источник образуется из<br />

узловых напряжений подсхем:<br />

es = − Csō ∙ Uō (2.4.4)<br />

2.4.2. Циркуляционная цепь<br />

Можно заметить, что любые два сопротивления цепи пересечений образуют<br />

хорды в исходной схеме рис.2.4.5, например, s1 и s2. Оставшееся<br />

сопротивление s3 образует ветвь дерева. В итоге получаем циркуляционную<br />

цепь рис.2.4.7.<br />

Рис. 2.4.7. Циркуляционная цепь.<br />

Если подсхемы были бы соединены не тремя, а четырьмя и более ветвями,<br />

то в любом случае одну какую-либо ветвь можно отнести к ветви<br />

дерева, а остальные к хордам. Ветвь дерева называется суммарной ветвью.<br />

Циркуляционную цепь можно описать топологической расширенной<br />

контурной матрицей Csa . Ветвь дерева будет всегда одна, поэтому<br />

число узловых столбцов всегда будет равно единице и напротив той<br />

строки, которая образовала ветвь дерева надо поставить единицу:<br />

s3 s1 s2<br />

s1 1<br />

Csa = s2 1<br />

s3 1 -1 -1<br />

Две соединенные подсхемы всегда образуют циркуляционную цепь,<br />

составленную из ветвей цепи пересечений. Матрица сопротивлений<br />

циркуляционной цепи рассчитывается преобразованием матрицы сопротивлений<br />

цепи пересечений:<br />

Zaa=Cas∙Zss∙Csa (2.4.5)<br />

Если число соединяемых подсхем больше, чем две, то образуется еще<br />

одна цепь, которая называется суммарной цепью.<br />

98


2.4.3. Суммарная цепь<br />

Рассмотрим случай соединения трех подсхем рис.2.4.8.<br />

Рис. 2.4.8. Соединение трех подсхем.<br />

Связи, образующие цепь пересечений, можно разделить на три группы,<br />

по три ветви в каждой группе. Матрица, описывающая цепь пересечений:<br />

s1 s2 s3 s4 s5 s6<br />

o1 -1<br />

o2 -1 1<br />

Cōs = o3 -1<br />

o4 1<br />

o5 1 1<br />

o6 1 1<br />

o7 -1<br />

o8 -1<br />

o9 -1<br />

Матрица сопротивлений цепи пересечений рассчитывается по приведенной<br />

выше формуле:<br />

Zss=Csō∙Z ~ ōō∙Cōs<br />

Между каждыми подсхемами, как было установлено, можно выбрать<br />

одну суммарную ветвь. На рис.2.4.8. эти суммарные ветви s3, s4 и s5 проведены<br />

пунктиром. Остальные ветви: s1, s2, s6 – это хорды.<br />

Матрица, описывающая циркуляционную цепь:<br />

s3 s4 s5 s1 s2 s6<br />

s1 1<br />

s2 1<br />

Csa = s3 1 -1 -1<br />

s4 1<br />

s5 1 -1<br />

s6 1<br />

99


Матрица сопротивлений циркуляционной цепи:<br />

Zaa=Cas∙Zss∙Csa<br />

Теперь, для наглядности, оставив одни суммарные ветви и удалив все<br />

остальные, мы видим, что суммарные ветви s3, s4 и s5 образуют некоторую<br />

самостоятельную схему, в которую входят как контуры, так и узловые<br />

пары рис.2.4.9.<br />

Рис. 2.4.9. Суммарная цепь.<br />

Структуру суммарной схемы легко обнаружить, если каждую подсхему<br />

обозначить узлом, а между узлами расположить суммарные ветви как<br />

на рис.2.4.10.<br />

Рис. 2.4.10. Структура суммарной цепи.<br />

Суммарная схема отражает структуру соединения подсхем, но в тоже<br />

время она намного проще полной схемы. Для суммарной схемы можно<br />

найти ветви дерева и хорд. Пусть, например, ветвями дерева будут s4 и<br />

s5 , тогда s3 – хорда. Теперь можно окончательно перечислить все ветви<br />

хорд: это s1, s2, s6, s3 и ветви дерева: это s4 и s5. Расширенная контурная<br />

матрица, отражающая соединение ветвей циркуляционной цепи в суммарную<br />

схему будет выглядеть так:<br />

100


(2.4.6)<br />

Жирной линией в матрице (2.4.6) выделена подматрица, описывающая<br />

суммарную цепь. Матрица сопротивлений суммарной схемы Zpp<br />

рассчитывается преобразованием матрица сопротивлений циркуляционной<br />

цепи:<br />

Zpp=Cpa∙Zaa∙Cap (2.4.7)<br />

Подставляя в (2.4.7) формулы (2.4.5) и (2.4.2) можно получить:<br />

Zpp = Cpa∙[Cas∙(Csō∙Z ~ ōō∙Cōs)∙Csa]∙Cap (2.4.8)<br />

Формула (2.4.8) верна, если сопротивления ветвей связи равны нулю.<br />

Если требуется учесть эти сопротивления, то матрица сопротивлений<br />

суммарной схемы должна быть вычислена с учетом (2.4.3) :<br />

Zpp = Cpa∙[Cas∙(Csō∙Z ~ s6 1<br />

ōō∙Cōs+Rss)∙Csa]∙Cap (2.4.9)<br />

Можно ввести в рассмотрение матрицу, преобразующую узловые<br />

координаты в координаты суммарной цепи:<br />

Cōp= Cōs∙Csa∙Cap (2.4.10)<br />

2.4.4. Расчет суммарной цепи<br />

Для расчета методом контурных токов из матрицы Cap (2.4.6) можно<br />

выделить подматрицу для замкнутых контуров Capk. Она включает<br />

столбцы хорд s3, s1, s2, s6:<br />

s3 s1 s2 s6<br />

s3 1<br />

s4 1<br />

Capk = s5 -1<br />

s1 1<br />

s2 1<br />

s6 1<br />

Формула (2.4.10) тогда будет выглядеть так:<br />

Cōpk= Cōs∙Csa∙Capk<br />

Контурная матрица сопротивлений полной схемы:<br />

и контурные э.д.с.:<br />

s4 s5 s3 s1 s2 s6<br />

s3 1<br />

s4 -1 1<br />

Cap = s5 -1 -1<br />

s1 1<br />

s2 1<br />

(2.4.11)<br />

Zpкpк = Сpкō ∙ Z ~ ōō ∙ Cōpк. (2.4.12)<br />

101


epk= -Cpkō ∙ Uō. (2.4.13)<br />

Вектор контурных токов находится по формуле:<br />

ipk= (Zpкpк) -1 epk. (2.4.14)<br />

По найденным контурным токам находятся токи в связях:<br />

is=Cspk∙ipk. (2.4.15)<br />

2.4.5. Получение окончательного решения в подсхемах<br />

Токи в ветвях связи распределяются по подсхемам и проявляются как<br />

дополнительные токи в граничных узлах подсхем, вызванные их соединением:<br />

ΔJō = Cōs ∙ is. (2.4.16)<br />

Дополнительные узловые токи вызывают приращение узловых напряжений<br />

в подсхемах:<br />

ΔUo= Z ~ oō∙ΔJō. (2.4.17)<br />

Дополнительные контурные токи в подсхемах:<br />

Δik = -(Zkk) -1 Zkō ΔJō (2.4.18)<br />

Окончательные узловые напряжения и контурные токи подсхем будут<br />

равны:<br />

Ũo=Uo+ΔUo. (2.4.19)<br />

ĩk=ik+Δik (2.4.20)<br />

Окончательные напряжения и токи ветвей подсхем:<br />

Ub= Аbo∙ Ũo, (2.4.21)<br />

ib=Cbo · ΔJo + Cbk ∙ (Jk+ĩk).<br />

(2.4.22)<br />

На этом расчет большой схемы по частям можно считать законченным.<br />

102


2.4.6. Алгоритм расчета по частям<br />

Основные этапы расчета можно свеcти в таблицу:<br />

Содержание этапов<br />

1 Расчет отдельных подсхем:<br />

расчет матрицы приведенных узловых сопротивлений Z ~ oo, выделение<br />

блочных матриц для граничных узлов Z ~ оō и Z ~ ōō, расчет узловых<br />

потенциалов Uo = Z ~ oo Jo - e ~ o; Выделение вектора граничных узловых<br />

потенциалов Uō<br />

2 Построение топологической матрицы Cōpk<br />

3 Расчет контурных сопротивлений суммарной схемы:<br />

Zpкpк = (Сpкō ∙ Z ~ ōō ∙ Cōpк )<br />

4 Расчет напряжений в контурных координатах суммарной схемы<br />

epk= -Cpkō ∙ Uō,<br />

5 Расчет контурных токов суммарной схемы:<br />

ipk= (Zpкpк) -1 epk<br />

6 Расчет приращений токов в подсхемах:<br />

ΔJō = Cōpk ∙ ipk<br />

7 Расчет приращений напряжений подсхем:<br />

ΔUo= Z ~ oō∙ΔJō<br />

8 Получение окончательного решения для подсхем:<br />

Ũo=Uo+ΔUo<br />

Ряд приведенных в таблице этапов можно объединить и получить одну<br />

формулу расчета по частям:<br />

Ũo=Uo – Z ~ oō∙ Cōpk ∙ (Сpкō ∙ Z ~ ōō ∙ Cōpк ) -1 Cpkō ∙ Uō (2.4.23)<br />

Для расчета по (2.4.23) требуется вектор вектор всех узловых потенциалов<br />

изолированных подсхем Uo, подвектор граничных потенциалов<br />

изолированных подсхем Uō, топологическая матрица Cōpk, матрица приведенных<br />

узловых сопротивлений граничных узлов Z ~ ōō, матрица приведенных<br />

узловых сопротивлений Z ~ oō.<br />

Основные вычислительные затраты, связанные с обращением матриц,<br />

потребуются при вычислении обратной матрицы контурных сопротивлений<br />

суммарной схемы Zpкpк, и при обращении контурных матриц<br />

отдельных подсхем Zkk .<br />

Этапы, приведенные в таблице и расчет по формуле (2.4.23)<br />

справедливы при условии, что между подсхемами нет источников<br />

напряжений и токов, то есть все источники сосредоточены внутри<br />

подсхем. Если таковые имеются в схеме, то расчет усложняется,<br />

соответствующие формулы приведены в [2].<br />

Рассмотренные соотношения для расчета по частям можно применить<br />

в качестве математического ядра расчета переходных процессов в<br />

системе с линейными и нелинейными сопротивлениями, дополнив их<br />

103


подпрограммами расчета параметров обобщенных ветвей и<br />

подпрограммами расчета логических и функциональных блоков,<br />

входящих в техническую систему. Применение алгоритма для расчет<br />

схем электропривода рассмотрено в [17]. Приведем основные элементы<br />

этого алгоритма расчета (рис.2.4.11).<br />

Блок 1.<br />

Ввод исходной информации. В соответствии с разработанным<br />

методом расчета, исходная информация должна включать в себя следующие<br />

компоненты. а). Структура соединений ветвей в подсхемы, параметры<br />

ветвей и источники, действующие в ветвях. Структура соединений<br />

подсхем в общую схему и параметры ветвей связи подсхем. б). Задание<br />

на расчет - моделирование переходных процессов или расчет в частотной<br />

области, выводимые величины. в). Интервалы времени - основной<br />

и дополнительные шаги интегрирования, шаг вывода информации.<br />

Для расчета в частотной области - частотные диапазоны: начальная и<br />

конечная частота расчета, приращение частоты.<br />

Блок 2. Поскольку исходные данные готовятся в пользовательском<br />

форме, то в этом блоке осуществляется трансляция их в машинные формы<br />

представления. После этого производится формирование структуры<br />

тензора соединений результирующей схемы Cōp (2.4.10). Весьма важным<br />

моментом здесь является то, что так как структура тензоров соединений<br />

как подсхем, так и результирующей схемы остается неизменной<br />

при любой комбинациях открытых и закрытых вентилей, то этот блок<br />

не входит в цикл переформирования уравнений при изменении структуры<br />

схемы. То есть поиска дерева и хорд результирующей схемы в дальнейшем<br />

не производится.<br />

Блок 3. Расчет сопротивлений и проводимостей подсхем. Обращение<br />

к этому блоку выполняется в тех случаях, когда происходит изменение<br />

порядка метода, изменение шага интегрирования и при итерационных<br />

расчетах нелинейностей. Здесь следует отметить, что поскольку структура<br />

внутреннего представления данных о подсхемах использует одно<br />

место оперативной памяти для одинаковых подсхем, то наибольшая эффективность<br />

алгоритма проявляется для больших схем, имеющих значительное<br />

число однотипных подсхем. В этом блоке выполняется расчет<br />

токов и напряжений в изолированных подсхемах по (2.3.6) и (2.3.7).<br />

Блок 4. Производится переопределение элементов тензоров соединений<br />

результирующей схемы Cōp при изменении состояния проводимости<br />

вентилей. Расчет соединенной схемы проводится в контурном базисе,<br />

поэтому формируется матрица контурных сопротивлений по формуле<br />

(2.4.12) и вычисляется ее обратная. Применение процедуры обращения<br />

матрицы здесь оказывается более целесообразным перед методом<br />

исключения, так как расчет во временной области требует многократного<br />

решения системы алгебраических уравнений.<br />

104


┌─┬───────────────────────┐<br />

│1│ Ввод исходных данных │<br />

└─┴───────────┬───────────┘<br />

┌─┬───────────────┴───────────────┐<br />

│2│Трансляция данных во внутреннее│<br />

│ │ представление. Формирование │<br />

│ │ матрицы соединения │<br />

│ │ результирующей схемы │<br />

└─┴─────────────┬─────────────────┘<br />

┌───────────────────────────>─────┼────────────┤ │<br />

│ │ ┌─┬────────────┴──────────────┐ │<br />

│ │ │4│ Определение проводящих │ │<br />

│ │ │ │ветвей в матрице соединений│ │<br />

│ │ │ │ результирующей схемы. │ │<br />

│ │ │ │ Расчет и обращение │ │<br />

│ │ │ │ контурной матрицы │ │<br />

│ │ │ │ сопротивлений │ │<br />

│ │ │ │ результирующей схемы │ │<br />

│ │ └─┴────────────┬──────────────┘ │<br />

│ │ ├─────────┬──┘ │<br />

│ │ │ └─┴──────────────────────┘ │<br />

│ │ ┌─┬──────────┴──────────────────┐ │<br />

│ │ │9│Расчет логической части схемы│ │<br />

│ │ │ │ Расчет состояний ключевых │ │<br />

│ │ │ │ элементов схемы. │ │<br />

│ │ └─┴─────────────┬───────────────┘ │<br />

│ │ ┌──┬────────────┴────────────────┐ │<br />

│ │ │10│Вывод и обработка результатов│ │<br />

│ ┌──┬───────┐ │ └──┴───────────────┬─────────────┘ │<br />

│ │13│Достиг-│ │ ┌──┬────────┴────────┐ │<br />

│ │ │нут за-│ │ │11│Приращение шага. │да ┌────┐ │<br />

└─┤ │данный ├─┘ │ │Выполнено условие├───>─────┤Стоп│ │<br />

нет│ │порядок│да │ │ окончания счета?│ └────┘ │<br />

│ │метода?│ └──┴────────┬────────┘ │<br />

└──┴───┬───┘ │нет │<br />

│ да┌──┬───────────┴───────────────┐нет │<br />

└───────────┤12│Изменилось состояние схемы?├──────>──────┘<br />

└──┴───────────────────────────┘<br />

Рис. 2.4.11. Алгоритм расчета схем по частям<br />

105


Блок 5. Производится расчет источников, действующих в подсхемах -<br />

независимых, управляемых и разностно-итерационных, модели которых<br />

рассмотрены во 2-й главе.Здесь же выполняется расчет токов в проводящих<br />

связях и напряжений на непроводящих, а также окончательный<br />

расчет токов и напряжений в подсхемах. В этом блоке организуется расчет<br />

схем, в которых подсхемы отличаются большим разбросом постоянных<br />

времени: так как разностные модели инерционных ветвей включают<br />

источники начальных условий для расчетного шага, то путем увеличения<br />

этого шага для ветвей с большой инерционностью, эти источники<br />

пересчитываются явным методом, с последующим выходом на установившийся<br />

внутришаговый режим.<br />

Блок 6. Проверяется наличие нелинейных подсхем.<br />

Блок 7. Переход к этому блоку происходит тогда, когда в схеме имеются<br />

нелинейные подсхемы. Здесь проверяется выполнение условий<br />

сходимости при итерациях - достижение заданной точности за допустимое<br />

число итераций. При определении условий сходимости предусматривается<br />

защита от итерационных зацикливаний, а также смена итераций<br />

с итераций по току на итерации по напряжению и обратно для нелинейностей<br />

диодного типа.<br />

Блок 8. Если сходимость не достигнута, то из этого блока расчет<br />

направляется на определение новых значений динамических сопротивлений<br />

нелинейностей в подсхемах.<br />

Блок 9. При достижении сходимости происходит переход к расчету<br />

логической и функциональной части системы управления. Для логической<br />

части схемы применен алгоритм асинхронного событийного<br />

двоичного моделирования со встроенными моделями элементов<br />

жесткой логики и триггеров, соответствующих их таблицам истинности.<br />

Для связи логической, функциональной и силовой схем применены интерфейсные<br />

компоненты. Алгоритм расчета состояний ключевых и вентильных<br />

элементов носит экспертный характер, построенный по принципу<br />

"если..., то..." и может уточняться в зависимости от задач исследований.<br />

Блок 10. Вывод и обработка результатов расчета. Этот блок имеет существенное<br />

значение для развития сервисной части программного обеспечения.<br />

Блок 11. Выполняется добавление очередного шага интегрирования<br />

или частотного шага и проверяются условия окончания счета: достижение<br />

предельных значений времени интегрирования при моделировании<br />

мгновенных процессов, частоты при расчете в частотном диапазоне и<br />

числа итераций при расчете схем с нелинейностями.<br />

Блок 12. Направляет расчет на определение новых значений источников,<br />

если не произошло изменений в состоянии схемы. Если структура<br />

соединений изменилась, то производится сброс ФДН-метода на уровень<br />

106


первого порядка для расчета разгонных точек с одновременным повышением<br />

порядка метода.<br />

Блок 13. Проверяется достижение необходимого уровня метода. При<br />

повышении порядка метода происходит перерасчет разностных сопротивлений.<br />

Если достигнут необходимый уровень метода, то перерасчета<br />

сопротивлений не производится - расчет сразу направляется на определение<br />

элементов в тензоре соединений результирующей схемы.<br />

107


2.4.7. Сравнение скорости расчета при декомпозиции схемы.<br />

Приведем сравнение скорости расчета для тестовой резистивной схемы,<br />

представленой на рис.2.4.12. Схема состоит из 265 сопротивлений 1<br />

Ом, соединенных в 122 контура. На схему воздействует единственный<br />

источник напряжения 1В.<br />

Рис. 2.4.12. Расчетная резистивная схема из 122 контуров<br />

Для сравнения скорости расчета, использовались две схемы, разбитые<br />

на блоки. Одна схема состоит из 5 блоков: 4 блока по 25 контуров и 1<br />

блок с источником напряжения (рис.2.4.13). Другая схема состоит из 17<br />

блоков: 16 блоков по 4 контура и 1 блок с источником напряжения<br />

(рис.2.4.14). Общее число контуров во всех схемах: 122, число сопротивлений:<br />

265.<br />

Рис. 2.4.13. Расчетная резистивная<br />

схема из 122 контуров:<br />

разбита на 4 блока<br />

108<br />

Рис. 2.4.14. Расчетная резистивная<br />

схема из 122 контуров:<br />

разбита на 16 блоков


Схемы блоков приведены на рис.2.4.15 и рис.2.4.16.<br />

Рис. 2.4.15. Блок из 25<br />

контуров для схемы<br />

рис.2.4.13<br />

Программа расчета по частям оттранслирована на Фортране g95 со<br />

следующими опциями транслятора:<br />

g95 -c -ffree-form -O2 -march=pentium4 -fsloppy-char -fzero -freal=zero -finteger=0<br />

Результаты времени расчета при пяти запусках программы приведены<br />

ниже в таблице. За единицу принято время 10мс.<br />

полная схема рис. 2.4.12 36 36 35 37 37 36,2<br />

4 блока рис.2.4.13 2 1 1 2 1 1,4<br />

16 блоков рис.2.4.14 3 3 2 3 3 2,8<br />

В последней колонке приведены усредненные значения. Как видно из<br />

таблицы, расчет по частям приводит к ускорению счета в среднем почти<br />

в 26 раз для схемы разбитой на 4 блока и примерно в 13 раз для схемы,<br />

разбитой на 16 блоков. В отдельные запуски время счета уменьшается в<br />

37 раз и 17,5 раз соответственно для этих схем.<br />

109<br />

Рис. 2.4.16. Блок из 4 контуров<br />

для схемы рис.2.4.14


2.5. Расчет по частям контурных схем.<br />

Рассмотрим ход расчета по частям контурных схем на примере схемы,<br />

приведенной на рис.2.5.1а. Для простоты источники в ветвях не<br />

изображены. Удаляемые ветви выделены на схеме утолщенными линиями.<br />

После удаления этих ветвей схема распадается на три подсхемы,<br />

изображенные на рис 2.5.1б. Вместо удаленных ветвей в подсхемах размещены<br />

короткозамкнутые перемычки. Если в удаляемых ветвях были<br />

источники напряжения, то эти источники из ветвей переносятся в короткозамкнутые<br />

перемычки.<br />

а) б)<br />

Рис. 2.5.1. Разбиение схемы на части.<br />

Для расчета по частям следует выполнить подготовительную работу:<br />

1. Все контуры нумеруются. Это надо сделать для однозначной идентификации<br />

контуров в целой схеме. На рис.2.5.1б нумерация контуров<br />

сквозная для всей схемы, хотя можно пронумеровать контуры для каждой<br />

подсхемы отдельно. В этом случае понадобится ввести дополнительный<br />

индекс для номера подсхемы.<br />

2. Отмечаются граничные контуры. Их номера должны храниться в<br />

отдельном списке. На рис.2.5.1б граничные контуры выделены более<br />

крупными кружочками.<br />

3. Нумеруются удаленные ветви связи.<br />

4. Выбираются направления граничных контуров и ветвей связи.<br />

Далее, последовательность расчетов выстраивается в следующем порядке:<br />

1. После подготовительных обозначений выполняется расчет изолированных<br />

подсхем для определения в них контурных токов. Если ветви<br />

подсхем описаны в форме с эквивалентным источником напряжения, то<br />

векторы контурных токов в каждой подсхеме определятся по формулам:<br />

110


ik1=ykk1 · ek1,<br />

ik2=ykk2 · ek2,<br />

ik3=ykk3 · ek3,<br />

(2.5.1)<br />

где ykk1= zkk1 -1 , ykk2 = zkk2 -1 , ykk3 = zkk3 -1 – матрицы контурных проводимостей,<br />

обратные матрицам контурных сопротивлений, ek1, ek2, ek3 – векторы<br />

контурных источников напряжений.<br />

2. Определяются векторы контурных токов в граничных контурах.<br />

Граничные контуры представляют цепь пересечений. В векторах<br />

контурных токов, определенных по (2.5.1), надо оставить только те<br />

компоненты, которые относятся к граничным контурам. Это можно выполнить<br />

с помощью матричного произведения:<br />

ik1=A1 (1) · ik1,<br />

ik1=A1 (2) · ik2,<br />

ik1=A1 (3) · ik3,<br />

(2.5.2)<br />

где<br />

3 4 6 7 8 11 12 13<br />

1 5 9<br />

A1 (1) = 2 A1 (2) = 6 1 A1 (3) = 10<br />

3 1 7 1 11 1<br />

4 1 8 1 12 1<br />

13 1<br />

3. Определяются узловые напряжения ветвей связи, которые были перенесены<br />

в контуры. Эти можно сделать посредством топологических матриц:<br />

z1 z2 z3 z1 z2 z4 z5 z3 z4 z5<br />

3 1 6 1 11 1<br />

A2 (1) = 4 1 1 A2 (2) = 7 1 A2 (3) = 12 1<br />

8 1 1 13 1<br />

Рис.(2.5.2) иллюстрирует содержание приведенных матриц. Например,<br />

строка матрицы A2 (1) , обозначенная цифрой 4 содержит единицы в<br />

столбцах z2 и z3 . Это значит, в 4-й контур перенесены напряжения 2-й и<br />

3-й ветвей связи.<br />

111


а) б)<br />

Рис. 2.5.2. Расчет подсхем (а) и получение объединенного решения (б).<br />

4. Подсхемы соединяются. Напряжения ветвей связи приравниваются<br />

напряжениям граничных ветвей подсхем.<br />

5.<br />

z1 z2 z3 z4 z5 z1 z2 z3 z4 z5 z1 z2 z3 z4 z5<br />

z1 1 z1 1 z3 1<br />

A3 (1) = z2 1 A3 (2) = z2 1 A3 (3) = z4 1<br />

z3 1 z4 1 z5 1<br />

z5 1<br />

5. Все топологические преобразования можно свести к одной матрице<br />

А:<br />

А (1) = A1 (1) · A2 (1) · A3 (1) ,<br />

А (2) = A1 (2) · A2 (2) · A3 (2) ,<br />

А (3) = A1 (3) · A2 (3) · A3 (3) ,<br />

А (1)<br />

А= А (2)<br />

А (3)<br />

(2.5.3)<br />

Выполнив все вычисления по (2.5.3), получим следующее численное выражение<br />

матрицы А:<br />

112


z1 z2 z3 z4 z5<br />

1<br />

2<br />

3 1<br />

4<br />

5<br />

1 1<br />

A = 6 1<br />

7 1<br />

8<br />

9<br />

10<br />

1 1<br />

11 1<br />

12 1<br />

13 1<br />

Как видно из содержания матрицы А, в ее столбцах, перечисляющих<br />

ветви связи, единицами отмечаются те контуры, в которые эти связи вошли.<br />

Если направление контура не совпадает с направлением ветви связи,<br />

то проставляется минус единица. С помощью матрицы А можно<br />

найти источники тока, воздействующие на граничные ветви цепи пересечений<br />

со стороны изолированных подсхем:<br />

I = -At ·ik,<br />

где ik – контурные токи изолированных подсхем.<br />

6. Вычисление матрицы проводимостей цепи пересечений так же выполняется<br />

с помощью матрицы А. Эти проводимости получаются из<br />

контурных проводимостей с добавлением проводимостей граничных<br />

ветвей связи:<br />

Y=At · ykk · A + yгр,<br />

7. Находятся напряжения на ветвях связи:<br />

U = Z · I.<br />

где Z = Y -1 . Вычисление обратной матрицы не обязательно, так как U может<br />

быть вычислено, например, методом исключения Гаусса.<br />

8. Вычисляются контурные источники напряжений, вызванные соединением<br />

подсхем:<br />

Δe = A· U.<br />

9. Вычисление приращения контурных токов, вызванные соединением<br />

подсхем:<br />

Δi=ykk · Δe.<br />

10. Вычисление окончательных контурных токов в схеме:<br />

ik ~ = ik + Δi.<br />

113


Все этапы можно свести в одну формулу для расчета по частям контурных<br />

схем:<br />

ik= (1 – ykk · A · Z · At)·ykk · ek<br />

где Z = (At · ykk · A) -1 , матрица сопротивлений цепи пересечений, ykk – матрица<br />

проводимостей контуров изолированных подсхем.<br />

Формирование топологических матриц, расчет подсхем и расчет соединенной<br />

схемы по приведенным выше формулам:<br />

clear;<br />

R1=1;R2=2;R3=3;R4=4;R5=5;R6=6;R7=7;R8=8;R9=9;R10=10;R11=11;<br />

// ввод данных для 1-ой подсхемы<br />

e1=1;<br />

ev1=[e1,0,0,0,0,0];<br />

ev2=[e1,0,0,0,0,0,0,0];<br />

ev3=[e1,0,0,0,0,0,0,0,0,0,0];<br />

z1=[R1,R2,R3,R4,R5,R6];<br />

z1=diag(z1);<br />

// контурные матрицы 1-й подсхемы<br />

C1=[1, 0, 0, 0; 0, 0, 1, 0; 1, 0,-1, 0; -1, 1, 0, 0; 0, 0,-1, 1; 0,-1, 0, 1];<br />

// расчет контурных сопротивлений и контурных э.д.с 1-й подсхемы<br />

zk1=C1'*z1*C1; ek1=C1'*ev1';<br />

// ввод данных для 2-й подсхемы<br />

z2=[R1,R2,R3,R4,R5,R6,R7,R8];<br />

z2=diag(z2);<br />

// контурные матрицы 2-й подсхемы<br />

C2=[0, 0, 1, 0; 1, 0, 0, 0; -1, 0, 1, 0; 1, 0, 0, 0; 0, 0,-1, 1; -1, 1, 0, 0; 0, -1, 0, 1; 0, 1, 0, 0];<br />

// расчет контурных сопротивлений и контурных э.д.с 2-й подсхемы<br />

zk2=C2'*z2*C2; ek2=C2'*ev2';<br />

// ввод данных для 3-й подсхемы<br />

z3=[R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11];<br />

z3=diag(z3);<br />

// контурные матрицы 3-й подсхемы<br />

C3=[0, 0, 1, 0, 0; 0, 0,-1,-1, 0; 0, 0, 0, 1,-1; 0, 0, 0, 0, 1; 1, 0, 1, 0, 0; 0, 1, 0, 1, 0;<br />

1, 0, 0, 0, 0; 1, 1, 0, 0, 0; 0, 1, 0, 0, 0; 1, 0, 0, 0, 0; 0, 1, 0, 0, 0];<br />

// расчет контурных сопротивлений и контурных э.д.с 3-й подсхемы<br />

zk3=C3'*z3*C3; ek3=C3'*ev3';<br />

// ввод матриц в соотв с п2-п4<br />

A11=[0,0; 0,0; 1,0; 0,1];<br />

A12=[0,0,0; 1,0,0; 0,1,0; 0,0,1];<br />

A13=[0,0,0; 0,0,0; 1,0,0; 0,1,0; 0,0,1];<br />

A21=[1,0,0; 0,1,1];<br />

A22=[0,0,0,1; 1,0,0,0; 0,1,1,0];<br />

A23=[1,0,0; 0,1,0; 0,0,1];<br />

A31=[1,0,0,0,0; 0,1,0,0,0; 0,0,1,0,0];<br />

A32=[1,0,0,0,0; 0,1,0,0,0; 0,0,0,1,0; 0,0,0,0,1];<br />

A33=[0,0,1,0,0; 0,0,0,1,0; 0,0,0,0,1];<br />

A1=A11*A21*A31; A2=A12*A22*A32; A3=A13*A23*A33;<br />

A=[A1;A2;A3]<br />

// расчет граничных контурных проводимостей подсхем<br />

yk1=zk1^(-1); yk2=zk2^(-1); yk3=zk3^(-1);<br />

ik1=yk1*ek1; ik2=yk2*ek2; ik3=yk3*ek3;<br />

114


y1=A1'*yk1*A1; y2=A2'*yk2*A2; y3=A3'*yk3*A3;<br />

y=y1+y2+y3;<br />

for i=1:5,y(i,i)=y(i,i)+1;end;<br />

I1=-A1'*ik1; I2=-A2'*ik2; I3=-A3'*ik3;<br />

I=I1+I2+I3;<br />

E=y^(-1)*I;<br />

e=A*E;<br />

dik1=yk1*e(1:4); dik2=yk2*e(5:8); dik3=yk3*e(9:13);<br />

i1=ik1+dik1; i2=ik2+dik2; i3=ik3+dik3;<br />

115


3. Моделирование электромагнитных полей.<br />

В главе приводится один из способов применения тензорного анализа<br />

сетей для расчета уравнений в частных производных. Идея состоит в замене<br />

уравнения в частных производных эквивалентной схемой замещения,<br />

состоящей из базовых элементов, рассмотренных во 2-й главе (линейных<br />

и нелинейных R, L, C элементов и управляемых источников).<br />

Впервые похожий метод был предложен в 1929 году С.А.Гершгориным<br />

как метод электрических сеток [18] и применен для приближенного<br />

решения уравнения Лапласа на материально реализованной резистивной<br />

сетке. В дальнейшем эта разновидность физического моделирования<br />

развивалась И.М.Тетельбаумом [19], Пуховым Г.Е. [20], Л.А.Коздобой<br />

[21] и др. Применение цифровых вычислительных машин для решения<br />

схемных моделей для уравнений Максвелла предложено Г.Кроном [2].<br />

В настоящее время в основном развивается «компьютерное» направление<br />

метода электрических сеток. Здесь можно отметить работы, начатые<br />

Б.В.Сестрорецким по расчету электромагнитных полей устройств СВЧ<br />

[22], книгу А.Г.Мадеры по моделированию теплообмена в технических<br />

системах [23], книгу М.А.Шакирова по диакоптике электромагнитных<br />

полей [11].<br />

При классификации методов численного расчета полей, выделяют<br />

два подхода: сеточный и интегральный. Сеточный метод делится на два<br />

основных метода: метод конечных разностей (МКР) и метод конечных<br />

элементов (МКЭ). Интегральный метод носит еще название «метод граничных<br />

элементов» (МГЭ) и имеет достаточно большое число разновидностей.<br />

Сеточные методы получили наибольшее распространение из-за относительной<br />

простоты получения расчетных уравнений. Наиболее простым<br />

является метод конечных разностей. Его недостаток проявляется<br />

при расчете полей со сложной формой границ. В таких случаях, как правило,<br />

используется метод конечных элементов. Различие МКР и МКЭ<br />

состоит в способах аппроксимации уравнений в частных производных.<br />

В МКР применяется разностная аппроксимация производный искомых<br />

функций, в МКЭ аппроксимируются сами функции, неопределенные коэффициенты<br />

этих функций находятся из решений вариационных задач<br />

(поэтому метод более сложный чем МКР).<br />

В отличие от сеточных методов, в МГЭ решение ищется на границах<br />

полей с применением интегральных уравнений для описания поля. Это<br />

позволяет применить интегральные теоремы (например, теорему Гаусса<br />

заменяющую интегрирование по объему интегрированием по поверхности),<br />

снизив тем самым размерность задачи на единицу. МГЭ считается<br />

наиболее точным и требующим наименьшего объема вычислительных<br />

ресурсов. Его недостатки есть продолжение его достоинств: решение<br />

116


получается только на границах, для получения расчетных уравнений<br />

требуется высокая математическая квалификация.<br />

Электрические схемы замещения могут быть построены для всех<br />

перечисленных методов. В настоящей главе приводится пример построения<br />

электрической схемы замещения для расчета поля методом конечных<br />

разностей.<br />

Рассматривается простой, но достаточно общий пример уравнения<br />

поля для одномерной задачи поиска распределения индукции вдоль зазора<br />

линейного асинхронного двигателя при относительном перемещении<br />

индуктора и вторичного элемента с некоторой произвольно заданной<br />

скоростью (задача электродинамики).<br />

Построенная электрическая схема замещения решается методами,<br />

приведенными во второй главе, в частности методом расчета по частям.<br />

При расчете поля можно выделить несколько этапов:<br />

– построение разностного уравнения для уравнения в частных производных<br />

(разностная аппроксимация);<br />

– разностное уравнение интерпретируются как закон Кирхгофа для токов:<br />

отдельные слагаемые уравнения соответствуют различным токам,<br />

инцидентным узлу разностной сетки;<br />

– магнитная индукция в узлах сетки интерпретируется как напряжение<br />

на узлах сетки, коэффициенты при индукции интерпретируются как<br />

проводимости эквивалентной схемы замещения. В результате получается<br />

схемный аналог для разностного уравнения, составленного<br />

для участка (участков) поля на длине расчетного шага;<br />

– ветви схемного аналога заменяются обобщенными (резистивными)<br />

ветвями, в результате формируется элементарная схема, выполняется<br />

переход к обобщенной схеме, расчет которой подробно рассмотрен<br />

во второй главе;<br />

– результат расчета — узловые напряжения схемы замещения численно<br />

равные значениям индукции в узлах сетки.<br />

В главе показано также, что метод может быть применен для расчета<br />

поля при питании индуктора как от источника тока, так и источника<br />

напряжения. Последний факт имеет решающее значение для включения<br />

уравнений поля в уравнения цепей питания двигателя при исследовании<br />

электромагнитных процессов в управляемых электроприводах.<br />

117


3.1. Резистивная схема замещения разностного уравнения.<br />

Моделирование поля рассмотрим на примере одномерного поля линейного<br />

асинхронного двигателя, расчетная схема которого приведена<br />

на рис.3.1.1.<br />

а<br />

Z<br />

2рτ<br />

1 2<br />

3<br />

проводящая шина<br />

вторичного элемента<br />

Рис. 3.1.1. Расчетная схема линейного асинхронного<br />

двигателя<br />

Ток индуктора на рис.3.1.1 представлен бесконечно тонким слоем с<br />

линейной плотностью J1, распределенным на участке длиной 2рτ, где τ –<br />

полюсное деление, р – число пар полюсов двигателя. Магнитная проницаемость<br />

индуктора и вторичного элемента равна бесконечности. На<br />

вторичном элементе расположена накладка из проводящего материала с<br />

удельным сопротивлением ρ и толщиной а. Немагнитный зазор δ’, включает<br />

толщину накладки и воздушный зазор и характеризуется магнитной<br />

проницаемостью μ0. Скорость вторичного элемента V направлена по оси<br />

Х, поле индуктора также перемещается в эту сторону.<br />

На рис.3.1.1 выделены три участка. Распределение магнитной индукции<br />

В на участках 1, 3 поле описывается уравнением (3.1.1) на<br />

участке (2) – уравнением (3.1.2):<br />

δ '<br />

⋅<br />

μ0 ∂2 B a<br />

− 2<br />

∂ x ρ<br />

δ '<br />

⋅<br />

μ0 ∂2 B a<br />

− 2<br />

∂ x ρ<br />

dB<br />

dt<br />

dB<br />

dt<br />

a B<br />

− ⋅V⋅∂<br />

ρ ∂ x =0<br />

a B<br />

− ⋅V⋅∂<br />

ρ ∂ x =− ∂ J 1<br />

∂ x<br />

118<br />

(3.1.1)<br />

(3.1.2)<br />

Аппроксимация на основе центральных разностей с шагом h дает следующее<br />

выражение для 2-го участка (для 1-го и 3-го участков правая<br />

часть этого выражения равна 0):<br />

Для перехода к сеточной электрической модели преобразуем разность<br />

2-го порядка для индукции и умножим правую и левую части уравнения<br />

на 4h2 δ ' B x h , t −2 B x , t B x−h ,t <br />

⋅<br />

μ0 2 h<br />

. Получаем:<br />

2<br />

− a x , tΔt −B x , t <br />

⋅B −<br />

ρ Δt<br />

− a xh ,t −B x−h ,t <br />

⋅V⋅B =−<br />

ρ 2h<br />

J 1 xh ,t −J 1 x−h ,t <br />

.<br />

2h<br />

δ’<br />

Х<br />

слой тока индуктора


2 δ'<br />

2 δ '<br />

⋅ B− B− ⋅ B−B− −<br />

μ0 μ0 4ah2<br />

где приняты следующие обозначения:<br />

B+=B(x+h,t); B=B(x,t); B-=B(x-h,t); J+=J(x+h,t); J-=J(x-h,t);<br />

Уравнению (3.1.3) можно поставить в соответствие следующую элек-<br />

трическую схему:<br />

ρ ⋅ΔB<br />

Δt<br />

2ahV<br />

( B<br />

ρ<br />

+ −<br />

2 ah<br />

−<br />

ρ ⋅V⋅ B− B−=−2 h J − J − ,<br />

B _<br />

B<br />

Рис. 3.1.2. Схемный аналог для центральных разностей.<br />

(3.1.3)<br />

Как видно на рис. 3.1.2, схемный аналог представлен Т-образной схемой,<br />

состоящей из 2-х проводимостей, одной емкости, одного источника<br />

тока, управляемого напряжением и одного независимого источника<br />

тока. Расчет схемы можно выполнить как во временной области для анализа<br />

переходных процессов, так и в частотной – для анализа установившихся<br />

режимов. Разница только в том, что при частотном анализе емкостное<br />

сопротивление Zc=jω·4a 2 /ρ, все переменные являются комплексными<br />

числами, а при расчете переходных процессов емкостное сопротивление<br />

должно соответствовать разностной схеме замещения и все<br />

переменные - вещественные числа.<br />

Источником электромагнитного поля являются токи фазной обмотки.<br />

Связь этих токов с линейной плотностью тока независимого источника<br />

рис.3.1.2 выполняется через обмоточную матрицу.<br />

Формирование обмоточной матрицы.<br />

Линейную плотность тока J можно вычислить через ток I, охватываемый<br />

участком 2h: J=I/(2h). Ток I определяется по известному току паза Ip:<br />

I=Ip/k, где k – число расчетных интервалов разбиения пазового шага. Пазовый<br />

ток, в свою очередь, связан с фазными токами через «обмоточную»<br />

матрицу Собм: Ip = Собм·Iф, где Ip – вектор пазовых токов, Iф – вектор<br />

фазных токов. Например, для варианта укладки обмотки, приведенного<br />

ниже в таблице:<br />

номер паза 1 2 3 4 5 6 7 8 9 10 11 12<br />

фаза A A Z Z B B X X C C Y Y<br />

Матрица Собм приведена справа. Строки матрицы соответствуют номерам<br />

пазов, столбцы соответствуют фазам. Например, в строках 7-й и<br />

8-й матрицы стоит -1, это соответствует тому, что в 7-м и 8-м пазах рас-<br />

119<br />

−<br />

)<br />

2δ’<br />

μ 0<br />

2<br />

4ah<br />

ρ<br />

В<br />

2δ’<br />

μ 0<br />

В +<br />

2h(J + -J - )


положен обратный провод фазы А. Если число проводников фазной обмотки<br />

в пазу не равно единице, то вместо 1 указывается это число проводников<br />

с соответствующим знаком.<br />

Далее, следует заметить, что в разностных<br />

уравнениях поля (3.1.3) в правой части<br />

имеется разность J+-J−. Связь токов J+ и J− с<br />

пазовыми токами определяется «дифференцирующей»<br />

матрицей.<br />

Дифференцирующая матрица.<br />

В приведенных соотношениях шаг сетки<br />

2h выбран равным ширине зубцовой зоны,<br />

поэтому линейные плотности J+ = I+(x+h,t)/<br />

(2h) и J− = I−(x−h,t)/(2h) можно определить через<br />

пазовые токи следующим образом. Если<br />

обозначить полные токи в соседних пазах<br />

(3.1.3) …, Iр-1, Iр, Iр+1, …, то приближенно ток I+<br />

ф<br />

п<br />

a b c<br />

1 1<br />

2 1<br />

3 -1<br />

4 -1<br />

5 1<br />

Собм = 6 1<br />

7 -1<br />

8 -1<br />

9 1<br />

10 1<br />

11 -1<br />

12 -1<br />

= (Iр+1+Iр)/(2k), ток I− = (Iр + Iр-1)/(2k), тогда независимый источник тока схемы<br />

рис. 3.2 вычисляется по формуле:<br />

Jb=J+ − J− = (Iр+1−Iр−1)/(2hk) (3.1.4)<br />

Вычисление разности пазовых токов по формуле (3.1.4) может быть<br />

автоматизировано, если воспользоваться матричным выражением:<br />

Jb = 1/(2hk) ∙ Cдифф ∙ Ip, (3.1.5)<br />

где Cдифф – матрица размером bn × pn, имеет следующий вид:<br />

пазы<br />

ветви 1 2 ... p-1 p p+1 p+2 ... pn-1 pn<br />

bo 1<br />

bo+1 1<br />

...<br />

Cдифф = b -1 +1<br />

b+1 -1 +1<br />

...<br />

bn-1 -1<br />

bn<br />

I р−1<br />

I −<br />

I р<br />

h h<br />

Рис. 3.1.3. К расчету независимого источника тока схемы замещения для<br />

центральных разностей.<br />

I +<br />

120<br />

I р+1<br />

-1<br />

(3.1.6)


Здесь приняты следующие обозначения для индексов:<br />

bn – число ветвей схемы, pn – число пазов обмотки, bo+1 – номер ветви<br />

схемы, на которую попадает 1-й паз обмотки, bn-1 – номер ветви схемы,<br />

на которую падает последний паз обмотки.<br />

Следует отдельно остановиться на элементах матрицы, отображающих<br />

крайние пазы обмотки. Рис. 3.1.4, на котором приведено относительное<br />

расположение токов в пазах обмотки и схемы замещения, поясняет<br />

распределение индексов в матрице Cдифф для первых и последних<br />

двух элементов.<br />

b 0<br />

I 1<br />

I 2<br />

Iр n−1<br />

Рис. 3.1.4. Относительное расположение токов в пазах обмотки и схемы замещения.<br />

Математически матрица Cдифф соответствует операции дифференциро-<br />

вания пазовых токов, так как J b =J p −J p− ≃ ∂ I p<br />

∂ x .<br />

Окончательная связь фазных токов с источниками тока схемы замещения.<br />

Резюмируя сказанное относительно вычисления вектора независимого<br />

источника тока Jb, действующего в схеме замещения электромагнитного<br />

поля, можно привести формулу для его вычисления, если известен вектор<br />

фазных токов Iф:<br />

Jb = 1/(2hk) ∙ Cдифф ∙ Собм ∙ I ф . (3.1.7)<br />

Схемный элемент на рис. 3.1.2 можно объединить с другими элементами<br />

в группу. На рис. 3.1.5 приведена схема, составленная из 5 элементов.<br />

1<br />

G0<br />

1<br />

Cb<br />

11<br />

3<br />

G0<br />

2 3<br />

Приведем описание схемы рис. 3.1.5.<br />

Схема состоит из 15 ветвей. На рис.3.1.5 приведена нумерация ветвей<br />

и узлов. Первый и второй узел присвоены внешним узлам схемы для<br />

упрощения индексации массивов при дальнейших вычислениях.<br />

121<br />

Ip n<br />

b 0 +1 b n –1 b n<br />

4 G0 5 G0 6<br />

G0<br />

4 5<br />

6 7<br />

Cb Cb Cb<br />

12<br />

13<br />

14<br />

7<br />

G0<br />

Рис. 3.1.5. Схема из 5 элементов.<br />

8<br />

G0<br />

9<br />

пазовые токи<br />

схема<br />

G0<br />

8<br />

10<br />

9<br />

G0<br />

Cb<br />

15<br />

11<br />

G0<br />

10<br />

2


3.2. Элементарная схема.<br />

Схема не содержит источников напряжения, поэтому уравнение, описывающее<br />

отдельные ветви можно привести в узловой форме:<br />

ib + Jb = Ybb ∙ Ub, (3.2.1)<br />

где матрица проводимостей Ybb при расчете в частотной области:<br />

в<br />

в 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />

1 G0<br />

2 G0<br />

3 G0<br />

4 G0<br />

5 G0<br />

6 G0<br />

Ybb= 7 G0<br />

8 G0<br />

9 G0<br />

10 G0<br />

11 Ki Ki YC<br />

12 Ki Ki YC<br />

13 Ki Ki YC<br />

14 Ki Ki YC<br />

15 Ki Ki YC<br />

здесь использованы следующие обозначения<br />

Для расчета в частотной области Y c = jω 1<br />

G0= 2δ'<br />

μ 0<br />

4ah 2<br />

ρ<br />

2 ah<br />

, K i =<br />

ρ ⋅V .<br />

(3.2.2)<br />

, где ω1 − угловая ча-<br />

стота питания обмоток индуктора.<br />

Для расчета во временнóй области методом Эйлера 1−го порядка емкость<br />

заменяется разностным аналогом с уравнением в узловой форме с<br />

источником тока:<br />

i n1 C b<br />

Δt U n = C b<br />

Δt U n1 .<br />

(3.2.3)<br />

Таким образом, в матрице Ybb емкостная проводимость вычисляется<br />

по формуле:<br />

Y c = 4ah2<br />

Δt⋅ρ<br />

Дополнительно к независимому источнику тока Jb, действующему на<br />

емкостной ветви надо добавить величину 4ah2<br />

Δt⋅ρ ⋅U n , где Un − напряжение,<br />

вычисленное на предыдущем расчетном шаге.<br />

3.3. Уравнения подсхемы.<br />

Сформируем уравнение в контурном базисе. Для этого потребуется матрица<br />

сопротивлений ветвей Zbb:<br />

Zbb = (Ybb) -1 .<br />

122


Для формирования уравнения подсхемы требуется ее топологическое<br />

описание посредством контурной матрицы соединений Сbr:<br />

r<br />

b 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />

1 -1<br />

2 1 1<br />

3 1<br />

4 1 1<br />

5 1<br />

6 1 1<br />

Сbr= 7 1<br />

8 1 1<br />

9 1<br />

10 1<br />

11 1 1 1 1<br />

12 1 1 -1 1<br />

13 1 1 -1 1<br />

14 1 1 -1 1<br />

15 1 1 -1<br />

Матрица Сbr соответствует топологии, в которой хордами являются<br />

3, 5, 7 и 9 ветви. Столбцы матрицы перечисляют сначала узловые пары<br />

относительно «земли»: с 1-й по 11-ю, затем контуры. Ветвям соответствуют<br />

строки матрицы. Узловую транспонированную матрицу соеди-<br />

нений можно подсчитать через обращение контурной матрицы:<br />

b<br />

r<br />

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />

1 -1<br />

2 1<br />

3 1 -1 1<br />

4 1 -1<br />

5 1 -1 1<br />

6 1 -1<br />

7 1 -1 1<br />

Arb = (Сbr ) -1 = 8 1 -1<br />

9 1 -1 1<br />

10 1 -1<br />

11 1 -1 1<br />

12 1<br />

13 1<br />

14 1<br />

15 1<br />

Столбцы матрицы Abr перечисляют ветви, строки с 1 по 11 относятся к<br />

узловым парам. Строки с 12 по 15 отмечают хорды.<br />

123


По известной топологической матрице Сbr и матрице сопротивлений<br />

Zbb вычисляется матрица сопротивлений подсхемы:<br />

Zrr = Crb ∙ Zbb ∙ Cbr<br />

Вектор источников тока, действующих в подсхеме Jr, вычисляется по<br />

формуле:<br />

Jr = Arb ∙ Jb. (3.3.1)<br />

Уравнение подсхемы:<br />

Ur = Zrr ∙ (ir + Jr),<br />

где векторы токов ir и напряжений Ur являются неизвестными.<br />

Уравнение подсхемы можно разрешить относительно неизвестных<br />

векторов − вектора узловых напряжений Uo и вектора контурных токов<br />

ik. Для этого в матрице сопротивлений Zrr выделяются блоки, относящиеся<br />

к узловым о и контурным k координатам:<br />

Zrr=<br />

o k<br />

o Zoo Zok<br />

k Zko Zkk<br />

В векторе Jr также выделяются блоки − вектор узловых источников<br />

тока Jo и вектор контурных источников тока Jk, который в данном частном<br />

случае равен 0. Вектор Jo можно найти непосредственно, если<br />

воспользоваться частным случаем формулы (3.3.1):<br />

Jо = Aоb ∙ Jb ,<br />

где Aоb − подматрица Arb.<br />

Далее, исключая контурные сопротивления из Zrr, определяются узловые<br />

сопротивления Z’oo эквивалентной лучевой подсхемы:<br />

Z’oo = Zoo − Zok ∙ (Zkk) -1 ∙ Zko (3.3.2)<br />

Теперь неизвестный вектор узловых напряжений можно вычислить по<br />

формуле:<br />

Uо = Z’оо ∙ Jо, (3.3.3)<br />

Вектор контурных токов для расчета полной схемы не нужен, но при<br />

необходимости выполнения дополнительных расчетов, можно воспользоваться<br />

соотношением:<br />

ik = Ykk ∙ J’k,<br />

где J’k = Ykk ∙ Zko ∙ Jo − вектор контурных источников тока эквивалентной<br />

контурной схемы с исключенными узловыми координатами, (Zkk) −1 = Ykk<br />

− матрица проводимостей эквивалентной контурной схемы.<br />

Соотношения (3.3.2) и (3.3.3) необходимы для расчета целой схемы,<br />

составленной из подсхем.<br />

124


3.4. Расчет схемы замещения электромагнитного поля.<br />

Из отдельных подсхем собирается полная схема замещения расчетного<br />

участка. На рис. 3.4.1 приведена схема из 11 подсхем. Подсхемы<br />

с 2-й по 9 соответствуют рис. 3.4.1. Замыкающие 1-я и 11-я подсхемы<br />

моделируют граничные условия.<br />

1<br />

s1<br />

s2 s3 s4 s5 s6 s7 s8 s9<br />

2 3 4 5 6 7 8 9 10<br />

Рис. 3.4.1. Схема замещения расчетного участка на 45 узлов сетки..<br />

В дальнейшем будем использовать следующие индексы для обозначения<br />

различных координат:<br />

о – узловые координаты подсхем; ō − узловые координаты, через которые<br />

подсхемы связываются между собой (внешние узловые пары подсхем);<br />

s – координаты связей подсхем; b – координаты ветвей.<br />

Для объединения подсхемы в схему необходимы только 2 ее внешние<br />

узловые пары. Поэтому из матрицы Z’oо выделяется подматрица<br />

узловых сопротивлений, которая соответствует внешним узловым парам<br />

− Z’ōō. Таких подматриц, размером 2х2 для рассматриваемого примера<br />

должно быть 9 (см. рис.3.4.1). Из этих подматриц собирается матрица<br />

элементарных сопротивлений цепи пересечений Zōō, к которой добавляются<br />

подматрицы сопротивлений граничных подсхем.<br />

Посредством топологической матрицы Сōs формируется контурная<br />

матрица цепи пересечений Zss:<br />

Zss = Csō ∙ Zōō ∙ Cōs, (3.4.1)<br />

где матрица Zōō является блочно-диагональной.<br />

В матрице Сōs столбцы обозначены индексом s и перечисляют<br />

контурные координаты, строки обозначены ō и перечисляют внешние<br />

узлы подсхем. Матрица Cōs для рассматриваемого примера имеет вид,<br />

приведенный далее в (3.4.2), где символ р перечисляет номера подсхем.<br />

Как видно из (3.4.2), матрица имеет ленточный вид, и ее составление<br />

легко автоматизируется.<br />

Для дальнейших расчетов требуется вычислить матрицу контурных<br />

проводимостей:<br />

Yss = Zss -1 .<br />

Если топология схемы и ее сопротивления не меняются, то вычисление<br />

Zōō и Yss производится один раз.<br />

125<br />

s10<br />

11


Матрица Cōs :<br />

p<br />

s<br />

ō 1 2 3 4 5 6 7 8 9 10<br />

1 1 1<br />

2<br />

1<br />

2<br />

-1<br />

1<br />

3<br />

1<br />

2<br />

-1<br />

1<br />

4<br />

1<br />

2<br />

-1<br />

1<br />

Cōs = 5<br />

1<br />

2<br />

-1<br />

1<br />

6<br />

1<br />

2<br />

-1<br />

1<br />

7<br />

1<br />

2<br />

-1<br />

1<br />

8<br />

1<br />

2<br />

-1<br />

1<br />

9<br />

1 -1<br />

2 1<br />

10<br />

1<br />

2<br />

-1<br />

1<br />

11 1 -1<br />

(3.4.2)<br />

3.4.1. Расчет поля при питании от источника тока<br />

Из найденного по формуле (3.3.3) вектора узловых напряжений Uo<br />

выделяются узловые напряжения на внешних узлах Uō. Эти узловые<br />

напряжения образуют вектор контурных э.д.с. цепи пересечений es, расчет<br />

этого вектора выполняется по формуле:<br />

es = − Csō · Uō,<br />

расчет контурных токов цепи пересечений:<br />

is =Yss · es,<br />

Контурные токи цепи пересечений – это результат соединения подсхем.<br />

Контурные токи распределяются по подсхемам, вызывая приращение<br />

вектора узловых токов Jo, найденного ранее. Это приращения ∆Jō<br />

находится по формуле:<br />

∆Jō = Cōs · is,<br />

Увеличение узловых потенциалов в подсхемах, вызванное их соединением<br />

находится по формуле:<br />

∆Uo = Zoō · ∆Jō ,<br />

где Zоō − блочная матрица, получающаяся выделением из Z’oo подматрицы<br />

с координатами внешних узлов ō.<br />

Окончательно узловые напряжения определяются суммированием<br />

ранее найденного вектора узловых напряжений и приращения ∆Uo:<br />

126


U’o=Uo+∆Uo.<br />

Найденные узловые напряжения в масштабе 1:1 соответствуют индукции<br />

магнитного поля.<br />

Приведенные выше расчетные этапы можно свернуть в одну формулу,<br />

связывающую фазные токи с индукцией:<br />

Bо ≡ U’o = Zoō · (1− Cōs · (Csō· Zōō· Cōs) -1 · Csō · Zōо) · Aob · Cbp · Срф · Iф,<br />

(3.4.3)<br />

где Zоō − приведенная матрица взаимных сопротивлений узловых координат<br />

подсхем и узловых координат, связывающих подсхемы, Cōs −<br />

контурная матрица, преобразования узловых координат подсхем в координаты<br />

ветвей связей подсхем, Aob − узловая матрица соединений ветвей<br />

в подсхеме, Zōō − приведенная матрица узловых сопротивлений<br />

внешних узлов подсхем, Cbp − «дифференцирующая» матрица, Срф −<br />

«обмоточная» матрица.<br />

Таким образом, зная вектор фазных токов, по параметрам схемы замещения<br />

поля и его топологии можно определить вектор индукции в<br />

узлах разностной решетки:<br />

Bo = Loф · Iф, (3.4.4)<br />

где матрица Lоф вычисляется в соответствии с (3.4.3):<br />

Lоф = Zoō · (1− Cōs · (Csō · Zōō · Cōs) -1 · Csō · Zōо) · Aob · Cbp · Срф (3.4.5)<br />

Расчет тока вторичного элемента I2 на участке длиной 2h можно<br />

найти следующим образом:<br />

I 2 = j 2⋅a⋅2h=− (3.4.6)<br />

δ'⋅2h ∂ B<br />

⋅<br />

μ0 ∂ x −I δ '⋅2h B−B− δ '<br />

1≈− −I 1 =− ⋅B −B− −I 1 .<br />

μ0 2h<br />

μ0 где I1 – ток индуктора.<br />

Сила f, действующая на элемент длиной 2h в направлении оси х равна<br />

вещественной части произведения индукции на комплексно-сопряженное<br />

значение тока индуктора:<br />

f = −1/2 ∙ Hi ∙ Re(B · I * 1), (3.4.7)<br />

где В – индукция, на середине участка длиной 2h, Hi − ширина активной<br />

зоны индуктора.<br />

При расчете переходных процессов мгновенная сила вычисляется по<br />

формуле<br />

f = Hi ∙ B · I1.<br />

Полная сила будет равна сумме сил для всех участков 2h в рамках<br />

длины индуктора:<br />

No<br />

Fэ=∑ i=1<br />

где No − количество элементов длиной 2h.<br />

f i<br />

127<br />

(3.4.8)<br />

(3.4.9)


3.4.2. Расчет поля при питании от источника напряжения.<br />

Если двигатель питается от источника напряжения, ток неизвестен, и<br />

для его расчета надо использовать электродвижущие силы фазных обмоток.<br />

Элементарная э.д.с. e, действующая в контуре длиной 2h и шириной Hi<br />

равна скорости изменения магнитного потока Ф через эту площадку:<br />

dФ dВ<br />

e =<br />

= 2h<br />

⋅ Hi<br />

⋅ ,<br />

dt<br />

dt<br />

(3.4.10)<br />

где В – индукция на длине 2h.<br />

При расчетах в частотной области:<br />

e = jω ∙ Ф = jω ∙ (2h ∙ Hi) ∙ B (3.4.11)<br />

На электрической схеме рис.3.2 индукции B соответствует напряжение<br />

U.<br />

Чтобы найти э.д.с., действующую в фазе, надо просуммировать элементарные<br />

э.д.с. еp, действующие на площадках, занимаемой фазной обмоткой.<br />

Операцию суммирования можно выполнить с помощью матричного<br />

умножения:<br />

Еф = Sф p ∙ ep , (3.4.12)<br />

где суммирующая матрица Sф p формируется на базе обмоточной матрицы<br />

Сф р , несущей информацию о том, как отдельные пазовые проводники<br />

объединены в катушки фазных обмоток. Можно воспользоваться и обмоточной<br />

матрицей, если результат умножить на j (что соответствует<br />

повороту вектора на 90˚):<br />

Еф = j ∙ Сф р ∙ ep<br />

(3.4.12a)<br />

Подставляя (3.4.11) и (3.4.4) в (3.4.12), получим выражение, связывающее<br />

вектор фазных э.д.с. с вектором фазных токов:<br />

Еф = Zфф ∙Iф (3.4.13)<br />

где<br />

Zфф = jω ∙ (2h ∙ Hi) ∙ Sф р ∙ L рф<br />

(3.4.14)<br />

Для расчета тока двигателя, можно использовать матричное уравнение<br />

напряжений фаз индуктора двигателя:<br />

Uф = Rфф∙I ф + jω∙ Lσфф∙I ф + Eф ; (3.4.15)<br />

где Uф, I ф – соответственно вектора напряжений и тока обмоток индуктора,<br />

Rфф, Lσфф – соответственно матрицы сопротивлений и индуктивностей<br />

рассеяния обмоток индуктора, Eф−вектор фазных э.д.с. индуктора. Учитывая<br />

(3.4.12), можно записать выражение, связывающее ток и напряжение<br />

двигателя:<br />

где Z’фф вычисляется по формуле:<br />

Uф = Z’фф∙Iф, (3.4.16)<br />

128


Z’фф = (Rфa + jω Lσфф + Zфф ). (3.4.17)<br />

Если индукторные обмотки соединены в звезду, треугольник или любым<br />

другим способом (например, для многомодульных конструкций) и<br />

связаны с источником напряжения по определенной схеме, то эту связь<br />

можно выразить матрицей соединения фаз в схему С ф f. Например, если<br />

обмотки соединены в звезду и связаны с источником напряжения, фазы<br />

которого тоже соединены в звезду, то:<br />

Связь векторов и матриц в контурной системе координат, которую<br />

обозначим штрихами, с фазной системой координат выражается стандартными<br />

формулами преобразований [1]:<br />

Uf = Cf ф ∙ Uф; Zff = Cf ф ∙ Z’фф ∙ C ф f ; I ф = C ф f ∙ I f ; Uf = Zff ∙ I f .<br />

Вектор токов в фазах статора тогда находится по формуле:<br />

Iф = C ф f ∙ ( Cf ф ∙ Z’фф ∙ C ф f ) -1 ∙ Cf ф ∙ Uф, (3.4.18)<br />

где Z’фф определяется по (3.30).<br />

Таким образом, задача расчета тока двигателя по заданному напряжению<br />

решена.<br />

Выражение (3.4.18) позволяет рассчитать фазные токи по заданному<br />

напряжению и одновременно по формуле (3.4.4) определить значения индукции.<br />

Топологические матрицы Сф, приведенные в этих выражениях отражают<br />

соединение фазных обмоток в схему. Шесть фазных ветвей двигателя<br />

и три ветви источника, соединенные звездой, в сумме образуют 9 ветвей,<br />

поэтому размер матриц должен быть 9 х 9.<br />

На рис.3.4.2 приводятся несколько характерных решений для двухмодульной<br />

конструкции ЛАД.<br />

1<br />

а) параллельное соединение.<br />

3<br />

2<br />

контуры<br />

ветви 1 2<br />

a 1<br />

С ф f = b 1<br />

c -1 -1<br />

1<br />

б) параллельное соединение<br />

с общей нейтралью.<br />

Рис. 3.4.2. Схемы соединения модулей линейного асинхронного двигателя.<br />

На рисунке обозначены: 1 – инвертор напряжения, 2 – модули индуктора, 3-<br />

вторичный элемент.<br />

129<br />

2<br />

3<br />

1<br />

в) последовательное<br />

соединение концентрических<br />

обмоток.<br />

2<br />

3


Для схем с параллельным соединением с общей нейтралью, изолированной<br />

нейтралью и последовательным соединением фаз индуктора матрицы<br />

Сф приведены ниже. Справа от утолщенной линии – контурная часть<br />

матрицы, слева - узловая:<br />

1 1 -1<br />

для параллельного соединения с<br />

изолированной нейтралью<br />

Сф =<br />

для параллельного соединения<br />

с общей нейтралью<br />

Сф =<br />

для последовательного соединения<br />

концентрических<br />

обмоток<br />

Сф =<br />

1 1 -1<br />

1 1 1 -1 -1 1 1<br />

1 1 -1 -1 -1<br />

1 1 -1<br />

1 1 -1<br />

1 -1 -1<br />

1<br />

1 1 -1 -1<br />

1 1<br />

1 1<br />

1 1 1 -1 -1<br />

1<br />

1<br />

1<br />

1 1 1<br />

1 1 1<br />

130<br />

1 -1 -1<br />

1<br />

1<br />

1<br />

1<br />

1<br />

-1 -1 -1<br />

1<br />

1<br />

1 -1 -1


3.5. Алгоритм расчета электромагнитного поля во временной<br />

области.<br />

Приведем алгоритм расчета одномерного поля в системе SciLab.<br />

Расчет мгновенных процессов производится в цикле по времени с шагом<br />

приращения времени dt. Порядок расчета внутри цикла следующий.<br />

• вычисление фазных токов Ia=sin(2π·f·t), Ib=sin(2π·f·t-2π/3), Iс=sin(2π·f·t+2π/<br />

3),<br />

• вычисление пазовых токов Ip=Cпф·Iф,<br />

• вычисление источников тока, действующих на емкостных ветвях:<br />

Jv=Uo·Cb + Сдиф·Ip<br />

Источники тока в ветвях схемы – это производная от пазовых токов:<br />

J v = ∂ I p<br />

∂ x ≈ I p−I p− ,<br />

2h<br />

где индексы + и – соответствуют обозначениям в формуле (3.1.4). Вычисление<br />

производной можно записать в матричной форме, связывающей<br />

источники тока в ветвях Jv с пазовыми токами Ip: Jv = 1/2h ∙ Сдиф ∙<br />

Ip, где Сдиф – «дифференцирующая» матрица размером v x p, имеющая<br />

следующий вид:<br />

пазы<br />

ветви … p-1 p p+1 p+2 …<br />

… … … … …<br />

Сдиф = v -1 +1<br />

v+1 -1 +1<br />

… … … … …<br />

• расчет источников тока Jr на узловых и контурных координатах подсхем<br />

по формуле: Jr=At·Jv,<br />

• из вектора Jr выделяются узловые источники тока Jо,<br />

• расчет узловых напряжений отдельных подсхем Uo=Zor·Jo, Из этого<br />

вектора узловых напряжений выделяются узловые напряжения на<br />

внешних узлах Uoo. Эти узловые напряжения образуют контурные<br />

э.д.с. цепи пересечений es,<br />

• расчет контурных э.д.с. цепи пересечений es= - Cos·Uoo,<br />

• расчет контурных токов цепи пересечений Is=Yss·es,<br />

• контурные токи цепи пересечений – это результат соединения подсхем.<br />

Контурные токи распределяются по подсхемам, вызывая приращения<br />

узловых токов Jo, найденных ранее. Эти приращения dIo находятся<br />

по формуле: dIo = Cos·Is,<br />

• увеличение узловых потенциалов в подсхемах, вызванное их соединением<br />

находится по формуле: dUo=Zor·dIo,<br />

131


• окончательно узловые напряжения определяются суммированием ранее<br />

найденного вектора узловых напряжений и приращения dUo:<br />

Uo ~ =Uo+dUo.<br />

Найденные узловые напряжения в масштабе 1:1 соответствуют индукции<br />

магнитного поля.<br />

Исходные данные для расчета следующие:<br />

parp – число пар полюсов; interval – число интервалов разбиения пазового<br />

шага;<br />

w – число витков фазной обмотки; chered – чередование фаз в пазах<br />

индуктора;<br />

Imax - амплитуда тока фазной обмотки; f – частота питания фазной<br />

обмотки;<br />

tau – полюсное деление фазной обмотки;aplast – толщина пластины;<br />

ro – удельная проводимость пластины; delta – воздушный зазор;<br />

h – половина расчетного пазового шага;<br />

Vd – скорость движения пластины; Nt - число расчетных точек по времени<br />

ta,he – входные и выходные узлы ветвей подсхемы;<br />

C,A – топологические матрицы подсхем; Сobm – обмоточная матрица;<br />

Сos – матрица цепи пересечений; Uo – вектор узловых напряжений<br />

схемы;<br />

B - вектор индукции в узлах решетки;<br />

clear;<br />

parp=4; interval=2; pazov=6*parp*interval; w=30/interval; chered=[2 1 3];<br />

Imax=300; f=25; tau=0.2; aplast=5e-3; ro=1/20.0e6; mu0=4.0e-7*%pi; delta=0.01;<br />

h=tau/(6*interval); Ki=2.*aplast*h/ro; v=15; o=11;<br />

Vd=7; Nt=500; // задание скорости и числа расчетных точек по времени<br />

ta= [3 4 5 6 7 8 9 10 11 2 3 5 7 9 11];<br />

he=[1 3 4 5 6 7 8 9 10 11 12 12 12 12 12];<br />

[C,A,g]=formc(ta,he);<br />

//g('node_x')=[100 1100 200 300 400 500 600 700 800 900 1000 600];<br />

//g('node_y')=[200 200 200 200 200 200 200 200 200 200 200 100];<br />

//show_graph(g);<br />

i=0;k=0;<br />

for j=1:interval:pazov<br />

k=k+1; i=i+1; if i==4 then i=1; end;<br />

m=w*(-1)^k;<br />

for n=0:interval-1<br />

Cobm(j+n,chered(i))=-m; //формирование обмоточной матрицы<br />

end;<br />

end;<br />

kp=int(2*pazov/5); oo=o*kp; ksv=kp+1;<br />

Cos(2*kp+2,ksv)=0; //объявление размера матрицы цепи пересечений<br />

dt=0.1*h/Vd; // вычисление расчетного шага по времени<br />

for i=1:ksv<br />

j=2*i; Cos(j-1,i)=-1; Cos(j,i)=1; // формирование матрицы цепи пересечений<br />

if i


end;<br />

k=0; m=0; j=1; Cdif(v,pazov,kp)=0; //объявление дифференцирующей матрицы<br />

Cdif(14,1,j)=0.5; Cdif(15,2,j)=0.5;<br />

k=0;j=j+1;<br />

for i=3:pazov+2 //формирование дифференцирующей матрицы<br />

k=k+1; if k==6 then k=1;j=j+1; end;<br />

if (i>pazov) then Cdif(10+k,i-2,j)=-0.5;<br />

else Cdif(10+k,i,j)=0.5; Cdif(10+k,i-2,j)=-0.5;<br />

end;<br />

end;<br />

for i=1:15<br />

if i=2)&(npaz


………<br />

kyzl=kyzl+1; B(kyzl,it)=Uo(j,i); Ipgr(kyzl,it)=0.;<br />

if (npaz=1) then Ipgr(kyzl,it) = Ip(npaz); end;<br />

end; end;<br />

end;<br />

xpaz(1:kyzl)=1:kyzl;<br />

kpp=xget("pixmap"); xset("pixmap",1);<br />

for i=1:Nt<br />

Bg=B(:,i);Ipgr2=Ipgr(:,i);<br />

xbasc(); xset("wwpc");<br />

plot2d(xpaz', [Bg 0.00001*Ipgr2] ,leg='b@i',rect=[0 -0.7 kyzl 0.7]); xgrid();<br />

xset("wshow");<br />

end;<br />

134


4. Моделирование систем управления<br />

4.1. Системы управления на операционных усилителях.<br />

Передаточная функция операционного усилителя, охваченного отрицательной<br />

обратной связью (рис.4.1.1а), может быть представлена формулой:<br />

W p = U вых p Z0 p <br />

=− , где Z0(p) – сопротивление цепи обрат-<br />

U вх p Z1 p <br />

ной связи усилителя, Z1(p) – сопротивление входной цепи усилителя. На<br />

рис.4.1.1б приведена схема сумматора на операционном усилителе. Выходное<br />

напряжение такой схемы:<br />

Z0 p <br />

U вых p =−<br />

Z1 p ⋅U Z0 p<br />

вх1 p −<br />

Z2 p ⋅U Z0 p <br />

вх 2 p −...−<br />

Zk p ⋅U вх p , k<br />

где Zk(p) – сопротивление k-й входной цепи усилителя.<br />

Uвх(р)<br />

Uвых(р)<br />

Uвх1(р)<br />

Uвх2(р)<br />

Uвх k (р) б)<br />

Рис. 4.1.1. Звенья на операционных усилителях.<br />

Uвых(р)<br />

Для типовых звеньев сопротивления цепей обратной связи и входной<br />

цепи:<br />

Пропорциональное звено: Z0=Ro, Z1=R1. W(p)=-Rо/R1;<br />

Интегральное звено: Z1 = R, Z0(p)=1/(pC), где С – емкость. W(p)=-1/<br />

(p·RC)=-1/pT,<br />

где Т=RC – постоянная интегрирования;<br />

Пропорционально-интегральное звено: Z1=R1, Z0=R0 + 1/(p·C0);<br />

W(p)=-[R0/R1 + 1/(p·R1·C0)]=-Kp·[(1+p·T)/(p·T)], Т=R0·С0, Kp=R0/R1<br />

Апериодическое звено 1-го порядка: Z1=R1, 1/Z0=1/R0+p·C;<br />

W(p)= - R0/R1 ·[1/(1+p·R0·C0)]=-Kp·[1/(1+p·T); T=R0·C0, Kp=R0/R1;<br />

Простейшая схемная модель звена на операционном усилителе представлена<br />

на рис.4.1.2.<br />

U1(р)<br />

а)<br />

U2(р)<br />

135<br />

U1(р)<br />

W(p)<br />

Рис.4.1.2. Схемная модель звена с передаточной функцией W(p).<br />

U2(р)


U 0<br />

4.2. Резистивные модели структурных схем.<br />

Приведем простейшую структурную схему (рис.4.2.1).<br />

-<br />

U 1<br />

U 3<br />

W 1<br />

W 2<br />

U 2<br />

Рис.4.2.1. Структурная схема.<br />

На рис.4.2.2 приведен резистивный аналог структурной схемы<br />

рис.4.2.1. Резистивный аналог построен на источниках напряжения,<br />

управляемых напряжением. Пунктирными стрелками обозначены<br />

направления действия управляющих напряжений. Положительные<br />

направления напряжений и управляемых источников напряжений показаны<br />

сплошными стрелками. Каждая ветвь имеет некоторую проводимость<br />

Y. Все ветви имеют общий узел, поэтому схема имеет лучевой<br />

вид.<br />

Описание каждой ветви схемы (после подстановки значений управляемых<br />

источников):<br />

J0 = Y0 · U0;<br />

J1 = Y1 · [U1 – (U0 – U3)];<br />

J2 = Y2 · (U2 – W1 · U1 );<br />

J3 = Y3 · (U3 – W2 · U2 ).<br />

Описание схемы в матричной форме:<br />

0 1 2 3<br />

J 0<br />

Y 0<br />

+<br />

U 0<br />

Рис. 4.2.2. Резистивный аналог<br />

структурной схемы.<br />

J0 0 Y0 U0<br />

J1 1 – Y1 Y1 Y1 U1<br />

J2 = 2 – Y2 · W1 Y2 · U2<br />

J3 3 – Y3 · W2 Y3 U3<br />

Можно заметить, что за исключением входной ветви, в схеме не протекают<br />

токи. Поэтому можно проводимостям присвоить произвольные<br />

значения. Для упрощений расчетов пусть все проводимости равны единице.<br />

Тогда описание схемы примет следующий вид:<br />

136<br />

Y 1<br />

+ U<br />

1<br />

e 1 =-(U 0 -U 3 )<br />

Y 3<br />

+<br />

U 3<br />

Y 2<br />

e 3 =-W 2 ·U 2<br />

+<br />

U 2<br />

e 2 =-W 1 ·U 1


0 1 2 3<br />

Или в матричной форме:<br />

J = Y · U<br />

В полученной системе известным является вектор входного узлового<br />

тока J0, неизвестным является вектор узловых потенциалов U. Этот вектор<br />

можно найти непосредственно из матричного уравнения:<br />

U = Y-1 J0 0 1 U0<br />

0 1 – 1 1 1 U1<br />

0 = 2 –W1 1 · U2<br />

0 3 –W2 1 U3<br />

· J.<br />

Можно уменьшить объем вычислений, если выделить матричные блоки:<br />

вх вых<br />

Jвх вх 1 0 Uвх<br />

0 = вых W21 W22 · Uвых<br />

Система уравнений распадается на две системы:<br />

Jвх = 1 · Uвх ;<br />

0 = W21 · Uвх + W22 · Uвых .<br />

Вектор выходных напряжений тогда можно найти по формуле:<br />

Uвых = – (W22) -1 · W21 · Uвх , (4.2.1)<br />

где Uвх совпадает с заданным вектором Jвх .<br />

В теории автоматического управления матрица W22 называется<br />

структурной матрицей. В данном случае она имеет следующий вид:<br />

1 2 3<br />

1 1 1<br />

W22 = 2 –W1 1<br />

3 –W2 1<br />

Координаты структурной матрицы соответствуют выходным переменным<br />

блоков структурной схемы. Матрица заполняется следующим<br />

образом. На диагонали ставятся единицы. Остальные клетки заполняются<br />

построчно. Для i-ой строки если i-ая переменная связана с j-ой переменной,<br />

то в j-ом столбце ставится коэффициент передачи с обратным<br />

знаком.<br />

Матрица W21 связывает выходы блоков с входными переменными.<br />

Входные переменные воздействуют, как правило, на сумматоры. Поэтому<br />

W21 единичная. Заполнить ее можно построчно, i-ая строка отмечает<br />

переменную на выходе сумматора, j-й столбец отмечает входную переменную.<br />

На пересечении ставится единица, если выходная переменная<br />

связана с соответствующей входной переменной.<br />

137


Метод структурных матриц позволяет автоматически формировать и<br />

решать уравнения систем управления, представленные структурными<br />

схемами.<br />

Например, для рассматриваемого случая, после выполнения вычислений<br />

по формуле (4.2.1), получаем связь выходных переменных с входной<br />

переменной:<br />

Для автоматизации получения передаточных функций в символьной<br />

форме можно воспользоваться пакетом символьной математики Maxima<br />

(http://maxima.sourceforge.net). В этом случае можно рассматривать более<br />

сложные структурные схемы, например, как на рис.4.2.3<br />

Приведем сессию в пакете wxMaxima, позволяющую получить все<br />

передаточные функции структурной схемы рис.4.2.3.<br />

Поясним некоторые особенности работы в пакете wxMaxima. Каждая<br />

команда ввода начинается с номера в скобках после знаков %i, например,<br />

(%i2) - вторая введенная команда. В каждой введенной строке приводятся<br />

комментарий, который заключен символами /* */. Результат<br />

обработки введенной команды отображается в строке, начинающейся с<br />

номера в скобках после знаков %о, например, (%o3) - результат обработки<br />

третьей команды. Обозначения векторов и переменных соответствуют<br />

рис.4.2.3.<br />

(%1) /*Ввод вектора входных переменных*/<br />

Uin: matrix(<br />

[Uo1],<br />

[Uo2])$<br />

(%i2) /*Ввод вектора выходных переменных*/<br />

Uout: matrix(<br />

138<br />

U1<br />

1<br />

U2 = 2 · U0<br />

U3 3<br />

Рис. 4.2.3. Двухканальная структурная схема с перекрестными связями<br />

0<br />

1<br />

1 +<br />

W1 ⋅ W2<br />

W1<br />

1 + W1<br />

⋅ W2<br />

W1<br />

⋅ W2<br />

1 + W1<br />

⋅ W2


[U11],<br />

[U22],<br />

[U1],<br />

[U2],<br />

[U3],<br />

[U4])$<br />

(%i3) /*Ввод структурной матрицы*/<br />

W22:matrix(<br />

[1,0,0,0,1,0],<br />

[1,1,1,0,0,0],<br />

[-W1,0,1,0,0,0],<br />

[0,0,-W2,1,0,0],<br />

[0,-W3,0,0,1,0],<br />

[0,0,0,0,-W4,1]);<br />

(%i4) /*Ввод матрицы связи входных переменных с входами блоков*/<br />

W21: matrix(<br />

[-1,0],<br />

[0,-1],<br />

[0,0],<br />

[0,0],<br />

[0,0],<br />

[0,0]<br />

);<br />

(%i5) /*Вычисление вектора выходных переменных*/<br />

Uout: ratsimp(-(W22^^-1).W21. Uin);<br />

139


(%i6) /*Отдельные компоненты выходного вектора можно выделить,*/<br />

/*например, для выходной переменной U1*/<br />

ratsimp(Uout[3]);<br />

(%i7) /*Выделенные компоненты можно представить в различной форме*/<br />

factor([(Uo2*W1*W3-Uo1*W1)/((W1+1)*W3-1)]);<br />

(%i8) expand([(Uo2*W1*W3-Uo1*W1)/((W1+1)*W3-1)]);<br />

Как видно, на пятом шаге, получен вектор всех выходных переменных<br />

структурной схемы.<br />

140


Заключение<br />

Пособие в целом посвящено вычислительным моделям расчета электрических<br />

цепей. Основное внимание уделено численному расчету переходных<br />

процессов в линейных и нелинейных схемах, так как расчет динамики<br />

поведения устройств является наиболее универсальным при<br />

оценке их технических характеристик. Существует огромное количество<br />

методов расчета дифференциальных уравнений, описывающих цепи. В<br />

книге приведены только три метода, наиболее простых и достаточно<br />

широко распространенных - метод Эйлера первого порядка, метод<br />

трапеций и метод обратного дифференцирования. Цель учебного пособия<br />

состояла в том, чтобы показать, каким образом различные методы<br />

расчета могут быть выражены в форме уравнения обобщенной ветви -<br />

одного из фундаментальных понятий тензорного анализа сетей. Одновременно<br />

в главе показано, как приведенные методы расчета алгоритмически<br />

«упаковываясь» в обобщенную ветвь, представляют базовый<br />

набор ветвей, наиболее употребительных в электротехнических<br />

расчетах: линейные и нелинейные RLC ветви, взаимные индуктивности<br />

и управляемые источники. Для расчета переходных процессов схем с<br />

нелинейными двухполюсниками приведена алгоритмическая адаптация<br />

к обобщенной ветви метода Ньютона для ветвей с нелинейными сопротивлениями<br />

и метода простых итераций для инерционных нелинейностей<br />

- емкостных и индуктивных. В результате показано, что базовый<br />

набор ветвей может быть сведен к резистивной разностно-итерационной<br />

обобщенной ветви. Более подробно о различных методах расчета электрических<br />

схем можно узнать из книг В.Н.Ильина [24], А.И.Петренко<br />

[25], И.Влаха и К.Сингхала [26] , В.Нерретера [27] и др.<br />

Во второй части второй главы приводятся топологические модели<br />

электрических схем, принятые в тензорном анализе сетей. Фундаметальное<br />

значение здесь имеют ортогональные топологические контурные и<br />

узловые матрицы. В главе приводится один из возможных алгоритмов<br />

автоматического формирования этих матриц для графов, состоящих из<br />

одномерных ветвей (линейных графов). Другие варианты построения<br />

ортогональных топологических матриц подробно рассмотрены в работе<br />

Х.Хэппа [4].<br />

В книге показано, как применить топологические матрицы в алгоритме<br />

автоматического формирования уравнений напряжения электрических<br />

схем произвольной структуры. Приведенный алгоритм автоматического<br />

формирования и расчета уравнений электрических схем демонстрирует<br />

основные этапы такого формирования на основе операций<br />

с матрицами. Организация данных в виде двумерных массивов (матриц)<br />

не является единственно возможной. При расчете больших схем могут<br />

использоваться и другие формы организации данных. Например, одномерные<br />

массивы, связные списки, всевозможные таблицы и т.д. В этом<br />

141


случае при непосредственном программировании задачи расчета электрической<br />

схемы матричные операции не применяются. Для формирования<br />

нужных структур данных используют специальные алгоритмы.<br />

Например, для формирования данных, соответствующих матрице узловых<br />

проводимостей, большое распространение получил метод поэлементного<br />

вклада [28]. Краткий обзор различных структур данных приводится<br />

в [25]. Чисто технически, ряд топологических преобразований<br />

схем может быть выполнен без непосредственного использования топологических<br />

матриц: например, при параллельном или последовательном<br />

соединении нескольких ветвей. Обобщенные алгоритмы подобных<br />

преобразований, объединенных названием схемоанализ, рассмотрены в<br />

[13].<br />

Матрицы преобразований могут иметь не только топологическое содержание.<br />

Для формирования уравнений напряжений в частной области<br />

при анализе токов прямой, обратной и нулевой последовательности,<br />

«контурная» матрица преобразования токов состоит из комплексных чисел<br />

и отражает связь вектора трехфазных токов с вектором токов в новой<br />

системе координат. В третьей части второй главы приводятся особенности,<br />

связанные с формированием уравнений напряжений для частотного<br />

анализа в координатах токов последовательностей. Универсальность<br />

матриц преобразований состоит в том, что они могут применяться<br />

как для топологических, так и нетопологических преобразований<br />

схем.<br />

В книге рассмотрен способ встраивания алгоритма формирования и<br />

расчета уравнений напряжения схем в систему CAD/CAM. В качестве<br />

примера взята свободно распространяемая полнофункциональная система<br />

сквозного проектирования печатных плат KiCAD. В состав системы<br />

входит графический редактор электрических схем и встроенная возможность<br />

автоматического формирования текстового списка соединений<br />

элементов и их параметров. Приведен алгоритм, показывающий, как<br />

применить список соединений для расчета резистивной схемы. Для расчета<br />

схем с другими типами ветвей можно использовать идеи приведенного<br />

в этой же главе алгоритма на языке SciLab.<br />

Актуальное значение в настоящее время имеет разработанный в рамках<br />

тензорного анализа сетей расчет сложных схем по частям. Актуальность<br />

определяется с одной стороны развитием сетевых технологий, с<br />

другой, переходом основных производителей микропроцессоров на<br />

многоядерные технологии. И то и другое направления требуют для повышения<br />

производительности обработки информации применять методы<br />

распараллеливания вычислений. Можно сказать, что распараллеливание<br />

«встроено» в сущность методов тензорного анализа сетей. В четвертом<br />

разделе второй главы приводится алгоритм расчета по частям в<br />

электротехнических терминах и результаты сравнения скорости расчета<br />

схемы при различных вариантах ее декомпозиции. Для однопроцессор-<br />

142


ной машины скорость расчета повышается на порядок относительно<br />

расчета той же схемы без разбиения ее на части. Приведенный алгоритм<br />

расчета может быть реализован в параллельных вычислениях. При разбиении<br />

схемы на N частей потребуется N параллельных процессов для<br />

расчета изолированных схем и один процесс для объединения решения.<br />

В настоящее время можно выделить 4 свободно распространяемые<br />

технологиии параллельных вычислений. Это кластерная (сетевая) технология<br />

на основе интерфейса MPI [29] (например, реализация mpich1.2.5<br />

для windows содержит библиотеку, линкуемую с объектными модулями<br />

фортрановских компиляторов g95 и gfortran). Вторая технология - для<br />

многоядерных процессоров на основе библиотеки OpenMP [30]. Библиотека<br />

входит в состав gfortran. Третья технология - кластерная, на базе<br />

системы PVM. Библиотека PVM входит в состав математического пакета<br />

SciLab, который поддерживает параллельные команды. Наконец, четвертая<br />

технология-чисто сетевая, на основе метакомпьютинга. Для этой<br />

технологии не требуются специальные библиотеки. Результаты расчета<br />

по частям хранятся на сетевом диске, к которому стандартными сетевыми<br />

средствами осуществляется доступ от отдельных компьютеров.<br />

Универсальная высокопроизводительная технология расчета электрических<br />

схем может найти и находит применение при проектировании<br />

неэлектрических процессов. В пособии не рассматривался применяемый<br />

для этих целей метод электрических аналогий. Соответствующие аналогии<br />

можно найти у различных авторов. Для расчета тепловых цепей<br />

можно привести, например, уже упоминавшуюся книгу [23], механические<br />

цепи рассмотрены в [2]. Обзор методов электроаналогий приводится<br />

в [31]. Актуально применение тензорного анализа сетей к анализу<br />

экономических процессов. Здесь можно отметить книги А.Е.Петрова<br />

[7], В.А.Кутергина [32]. В этих работах в то же время раскрывается значение<br />

тензорного анализа сетей для системных исследований инженерной<br />

деятельности.<br />

В третьей главе приведены некоторые принципы применения тензорного<br />

анализа сетей к решению полевых задач. Рассматривается пример<br />

построения алгоритма расчета простейшего одномерного поля. Сведение<br />

расчета поля к расчету электрической схемы позволило составить<br />

общую систему уравнений электрической машины, включающую ее<br />

цепь питания.<br />

Так как электрическая машина управляется через цепи питания, то в<br />

книгу включены некоторые задачи моделирования систем управления,<br />

решенные с помощью тензорного анализа сетей. В четвертой главе приводятся<br />

алгоритмы автоматизации формирования передаточных функций.<br />

Тензорные методы для проектирования цифровых устройств в<br />

книге не приводятся. Но публикации в этом направлении имеются,<br />

например, работы В.П.Кулагина [33] и Г.Н. Чижухина [34].<br />

143


Приложения.<br />

Порядок установки Фортран-95 и среды разработки VFort.<br />

1). Разархивировать компилятор g95, например, в папку c:\g95.<br />

2). Для переменной среды PATH добавить путь к g95.exe: c:\g95\bin;<br />

Добавить переменную среды LIBRARY_PATH, для которой указать<br />

путь к библиотекам: c:\g95\lib;<br />

3). В папку c:\g95\lib добавить библиотеки DISLIN, SLATEC и<br />

MinGW.<br />

4). Разархивировать Vfort в отдельную папку, например,<br />

c:\program files\Vfort<br />

5). Создать папку для файлов проекта. Имя папки и путь к ней не<br />

должны содержать пробелов.<br />

6). Запустить Vfort. Создать проект, нажав в главном меню Project-<br />

Create project.<br />

7). Задать опции проекта, нажав в главном меню Project-Project<br />

Options. В появившемся диалоговом окне в строке Compile command набрать<br />

команду компиляции:<br />

g95 -c -ffree-form<br />

В строке Link набрать команду линкера:<br />

g95<br />

Для подключения библиотеки DISLIN набрать в строке Addtional<br />

libraries:<br />

-ldismg7 -luser32 -lgdi32<br />

Для подключения библиотеки SLATEC добавить к подключенным<br />

библиотекам:<br />

-lslatec.<br />

В строке Output ввести имя папки для результирующих файлов (по<br />

умолчанию Output).<br />

В строке Result files ввести маску для расширений отображаемых<br />

файлов (по умолчанию *.dat)<br />

Пример окна с опциями проекта:<br />

144


Пример программирования с библиотекой DISLIN<br />

Рассмотрим пример программы для расчета переходных процессов в<br />

RC схеме, рассмотренной в разделе 2. Кроме уже рассмотренного алгоритма<br />

расчета, программа должна содержать интерфейс для ввода данных<br />

и вывода результатов расчета на график. Входной интерфейс должен<br />

также предусматривать возможность сохранения исходных данных<br />

в отдельных файлах для последующей их загрузки при вариантном счете.<br />

Средствами библиотеки DISLIN можно создавать несложные пользовательские<br />

интерфейсы. Рассмотрим пример создания GUI для<br />

рассматриваемого примера.<br />

Исходными данными в задаче являются 7 чисел: значение двух сопротивлений<br />

R1 и R2, индуктивности L, емкости C, значение источника<br />

напряжения E, значение расчетного шага dt и времени моделирования<br />

Tsum. Для отображения схемы в окне пользовательского интерфейса,<br />

предварительно должен быть создан рисунок схемы в формате bmp. Размер<br />

рисунка можно подобрать методом проб в любом графическом редакторе.<br />

Приведем исходное состояние окна ввода после запуска программы и<br />

загрузки файла:<br />

После нажатия на ОК выполняется расчет схемы, после чего сразу же<br />

отображается окно с результатами расчета:<br />

145


При нажатии на ОК появится диалоговое окно с предложением выбора:<br />

продолжить расчет или прервать его.<br />

Программы ввода данных, их обработки и вывода результатов имеют<br />

совместно используемые переменные и массивы. Перечислим их:<br />

kolpar - число исходных данных для расчета схемы. В данном случае<br />

равно семи;<br />

vhod() - массив для хранения исходных данных в форме вещественных<br />

чисел;<br />

Labl() - символьный массив для обозначений строк входных параметров<br />

в окне ввода. Длина всех элементов массива должна быть одинаковой. В<br />

данном случае она равна 6 по числу символов в самой длинной строке<br />

'Tsum=';<br />

texsts() - символьный массив для хранения введенных чисел в символьной<br />

форме;<br />

idtexst() - целочисленный массив для хранения идентификаторов окон<br />

ввода чисел;<br />

ios - переменная для хранения признака успешного чтения файла;<br />

kolgr - количество графиков;<br />

nsum - максимальное количество расчетных точек;<br />

nt - фактическое количество расчетных точек;<br />

iLgr() - массив для хранения результатов расчета тока в индуктивности;<br />

Ucgr() - массив для хранения результатов расчета напряжения в емкости;<br />

t() - массив для хранения значений времени<br />

Совместно используемые данные объявлены в модуле obmen.<br />

Порядок работы с приведенными модулями следующий.<br />

1) Запустить Vfort.<br />

2) Создать проект, ввести опции проекта.<br />

146


3) Создать новый файл в проекте. Скопировать текст главной программы<br />

с модулем общих переменных в буфер обмена и вставить в новый<br />

файл. Сохранить файл с расширением for.<br />

4) Аналогичным образом поступить с текстами подпрограмм ввода данных,<br />

расчета переходных процессов, вывода на график и модулем формирования<br />

кириллицы Convert. Всего проект будет содержать 5 файлов<br />

с исходными текстами.<br />

5) Перевести курсор в поле файлов проекта, нажать правую кнопку<br />

мыши и в появившемся меню выбрать +Add files... Ввести в проект все<br />

пять файлов.<br />

6) Запустить компиляцию файлов проекта. В результате автоматически<br />

будет создана папка Output с объектными модулями и исполняемым<br />

файлом.<br />

7) Средствами windows добавить в папку Output файл с рисунком схемы.<br />

8) Запустить программу на выполнение, ввести в окне программы исходные<br />

данные.<br />

9) В случае появления ошибок отладить программу.<br />

147


Модуль общих переменных и основная программа<br />

module obmen<br />

!общие данные для ввода<br />

integer , parameter :: kolpar=7<br />

real :: vhod(kolpar)=0.<br />

character (len=6)::Labl(kolpar)=& !Символ & - символ переноса строки.<br />

[ 'R1= ','R2= ','L= ','C= ','E= ','dt= ','Tsum= ' ]<br />

character (len=15)::texts(kolpar)='1 '<br />

integer ::idtext(kolpar)=0, ios=0<br />

!общие данные для расчета и отображения графиков<br />

integer , parameter :: kolgr=2, nsum=10000<br />

integer nt<br />

real :: iLgr(nsum)=0., Ucgr(nsum)=0., t(nsum)=0.<br />

end module obmen<br />

program rc<br />

! подключение модуля obmen ,теперь переменные этого модуля становятся<br />

! доступными в других программах.<br />

use obmen<br />

! ввод значения промежуточной переменной ipovtor =1. Пока эта переменная равна 1<br />

! будет производится повторение ввода данных для вариантного счета.<br />

ipovtor=1<br />

do while (ipovtor==1) ! цикл повторения расчета<br />

call vvod ! вызов подпрограммы ввода данных<br />

call obrabotka ! вызов подпрограммы расчета<br />

call vyvod ! вызов подпрограммы вывода результатов<br />

! подпрограмма dwgbut библиотеки DISLIN выводит окно с 2-мя кнопками: OK и NO<br />

! и надписью с вопросом 'повторить расчет?'. В зависимости от того,<br />

! какая кнопка нажата, переменной ipovtor будет присвоена 1, если нажата кнопка<br />

! ОК или 0, если нажата кнопка NO.<br />

call DWGBUT ('повторить расчет?', ipovtor)<br />

end do ! конец цикла повторения расчета<br />

end program rc<br />

Рассмотрим программу ввода данных. В ней используются подпрограммы<br />

библиотеки DISLIN. При использовании библиотеки DISLIN<br />

для создания оконного интерфейса надо обращаться к соответствующим<br />

подпрограммам этой библиотеки в определенном порядке. Основной<br />

единицей окна системы Windows (или windows-окна) является виджет<br />

(widget). Виджетом может быть надпись, кнопка, окно для ввода текста<br />

и т.п. Подпрограммы DISLIN, работающие с виджетами делятся на 4<br />

основные группы. Подпрограммы, начинающиеся с символов WG создают<br />

виджеты, начинающиеся с символов SWG устанавливают параметры<br />

виджетов, начинающиеся с символов GWG считывают параметры виджетов,<br />

начинающиеся с символов DWG создают диалоговые виджеты.<br />

Кроме того, имеются ряд дополнительных подпрограмм. Структура расположения<br />

основных подпрограмм следующая:<br />

подпрограммы диалога<br />

CALL WGINI<br />

подпрограммы установки параметров виджетов,<br />

148


подпрограммы диалога<br />

CALL WGFIN<br />

подпрограммы чтения виджетов<br />

подпрограммы диалога<br />

Как видно из приведенной структуры, установка параметров виджетов<br />

производится между обращениями к подпрограммам WGINI и<br />

WGFIN. Чтение данных из виджетов выполняется после подпрограммы<br />

WGFIN. Следует заметить, что некоторые программы, связанные с созданием<br />

виджетов, например, для задания позиционирования основного<br />

окна, могут быть введены до обращения к подпрограмме WGINI. Для<br />

создания оконного интерфейса следует предварительно (на бумаге) расположить<br />

в основном окне нужные виджеты. При этом надо учесть, что<br />

расположение виджетов библиотекой DISLIN осуществляется автоматически<br />

в по строкам и столбцам. Основное окно задается подпрограммой<br />

WGINI, которая определяет его идентификатор и расположение дочерних<br />

виджетов по строкам или столбцам. Подпрограммы WGBAS определяют<br />

имена строк или столбцов, которому принадлежит создаваемый<br />

виджет и расположение других виджетов внутри этих строк или столбцов.<br />

149


Подпрограмма ввода данных.<br />

subroutine vvod<br />

! объявление модуля obmen с общими данными.<br />

use obmen<br />

! объявление символьных переменных с именами входного и выходного файлов<br />

! CFIL1 и CFIL2. Одновременно этим переменным присваиваются начальные<br />

! значения.<br />

character (len=80)::CFIL1=' ', CFIL2='a.txt'<br />

! объявление и ввод символьной переменной help для отображения текста, который<br />

! будет выведен в отдельное окно при нажатии кнопки Help<br />

character (len=50)::help=&<br />

'программа расчета переходного процесса в RLC-цепи'<br />

! объявление внешней подпрограммы с именем ROUTINE, в которой будет<br />

! обработана информация из входного файла с данными.<br />

external ROUTINE<br />

! установка окна ввода в центре экрана.<br />

CALL SWGOPT('center','position')<br />

! вывод строки при нажатии help.<br />

CALL SWGHLP (help)<br />

! инициализация основного окна с идентификационной переменной IP. Дочерние<br />

! виджеты будут располагаться горизонтально.<br />

CALL WGINI ('HORI', IP)<br />

! установка ширины виджетов.<br />

CALL SWGWTH (25)<br />

! установка в основном окне виджета c идентификатором ip1 с возможностью<br />

! вертикального расположения дочерних виджетов.<br />

CALL WGBAS(ip,'VERT',ip1)<br />

!установка высоты виджета рисунка в долях ширины виджета<br />

CALL SWGDRW(0.6)<br />

!установка новой ширины виджетов. Отрицательное число в параметре программы<br />

! указывает на то, что ширина устанавливается в процентах ширины экрана.<br />

CALL SWGWTH (-20)<br />

!установка в основном окне новый виджет c идентификатором ip2, с вертикального<br />

! расположения дочерних виджетов.<br />

CALL WGBAS(ip,'VERT',ip2)<br />

!объявление цикла do для ввода в виджетов с данными<br />

do i=1, kolpar<br />

! вывод виджетов с надписями и текстовых виджетов для исходными данными.<br />

! Для надписей используется ранее объявленный массив Labl(7). 70% ширины<br />

! виджетов будет отведено для ввода цифр, остальные 30% для надписей.<br />

CALL WGLTXT(IP1, labl(i), texts(i), 70, idtext(i))<br />

end do<br />

! выводит виджет с надписью для открытого файла.<br />

CALL WGLAB (IP2, 'открытый файл:', ID2)<br />

! выводит надпись в главное меню при развороте кнопки File. На кнопке будет<br />

! написано 'открыть файл'. После нажатия на эту кнопку появится окно с<br />

! предложением открыть файл. При этом будет указана маска *.txt для вводимых<br />

! файлов. Имя введенного файла и путь к нему будут сохранены в<br />

! переменной CFIL1. Имя и путь будут отображены в виджете с идентификатором<br />

! ID_FIL. Этот виджет будет расположен сразу под надписью 'открытый файл'.<br />

CALL WGFIL (IP2, 'открыть файл', CFIL1, '*.txt', ID_FIL)<br />

! вызов подпрограммы вторичного вызова с именем ROUTINE. П/программа<br />

ROUTINE<br />

150


! будет обрабатывать данные виджета с идентификатором ID_FIL. То есть будет<br />

! обрабатывать имя файла с исходными данными. Необходимость использования<br />

! SWGCBK связана с тем, что обработка данных, введенных в виджетах,<br />

! производится после обращения к п/программе WGFIN. Чтобы обработать данные<br />

! до этого обращения, следует обратиться к подпрограмме SWGCBK.<br />

CALL SWGCBK (ID_FIL, ROUTINE)<br />

CALL WGLAB (IP2, 'данные записываются в файл', ID2)<br />

! вывод второй надписи в главном меню при развороте кнопки File. На<br />

! кнопке будет написано 'записать в файл'. После нажатия на эту кнопку появится<br />

! окно с предложением записать файл. При этом будет указана маска *.txt для<br />

! записываемых файлов. Имя введенного файла вместе с путем к нему будет<br />

! сохранено в переменной CFIL2. Это имя будет отображено в виджете с<br />

! идентификатором ID_FIL2. Этот виджет будет расположен сразу под надписью<br />

! 'данные записываются в файл'.<br />

CALL WGFIL (IP2, 'записать в файл', CFIL2, '*.txt', ID_FIL2)<br />

CALL WGLAB(IP2, 'Расчетная схема', ID_BUT)<br />

! объявление виджета для рисунка<br />

CALL WGDRAW(ip2, id_draw1);<br />

! задание оконного режима виджета для рисунка<br />

CALL SETXID(id_draw1, 'WIDGET'); CALL METAFL('XWIN ')<br />

! инициализация библиотеки и очистка окна рисунка<br />

CALL DISINI; CALL ERASE<br />

! задание белого фона для рисунка<br />

CALL PAGFLL(255)<br />

! вставка в виджет рисунка из текущей папки<br />

CALL INCFIL ('rc01.bmp')<br />

! закрытие библиотеки<br />

CALL DISFIN<br />

! вывод кнопки с надписью ОК для продолжения работы программы и кнопки с<br />

! надписью QUIT для отмены работы с программой.<br />

CALL WGOK (IP1, ID_OK); CALL WGQUIT (IP1, ID_Q)<br />

! завершение работы с установкой виджетов. Теперь можно получать данные с<br />

! введенной информацией.<br />

CALL WGFIN<br />

! проверка на ноль переменной ios. Эта переменная передается через общий модуль<br />

! и сообщает о правильности ввода данных из файла. Если ios равна нулю, то сбоя<br />

! не было и происходит обращение к п/программе GWGFIL для получения<br />

! информации об имени открытого файла в виджете ID_FIL. Имя было сохранено в<br />

! переменной CFIL1.<br />

if (ios==0) then ; call GWGFIL (ID_FIL, CFIL1)<br />

! иначе, если переменная ios не равна нулю,то произошел сбой при вводе. Как<br />

! правило, это пустой файл, открытый для ввода данных. Переменной CFIL1<br />

! присваивается пробел, для того чтобы при вариантном счете имя сбойного файла<br />

! не появлялось в виджете ID_FIL.<br />

else; CFIL1=' '; endif<br />

! получение информации об имени файла для записи данных в виджете ID_FIL2.<br />

! Имя было сохранено в переменной CFIL2.<br />

CALL GWGFIL(ID_FIL2,CFIL2)<br />

! объявляет цикл для записи введенных в окнах данных в массив исходных данных<br />

! vhod<br />

do i=1,kolpar<br />

! считывание данных из виджетов в текстовый массив texts(7). Теперь данные,<br />

! введенные в window-окне становятся доступными в этом текстовом массиве.<br />

151


CALL GWGTXT (idtext(i),texts(i))<br />

! перевод данных из текстовой формы в числовую. Числовые данные читаются в<br />

! массив вещественного типа vhod(i) посредством оператора чтения из texts(i).<br />

read (texts(i),*) vhod(i)<br />

end do<br />

! проверка, был ли введен текст в строку виджета с именем файла для записи<br />

! данных. Эта строка хранится в переменной CFIL2.<br />

if (CFIL2/=' ') then ! Если строка не пустая, то<br />

! открывается файл с именем, записанным в CFIL2.<br />

! Функция trim отсекает хвостовые пробелы в переменной CFIL2.<br />

open (1, file = trim (CFIL2))<br />

! вывод данных в файл<br />

write (1,'(g10.3)') (vhod(i), i=1,kolpar)<br />

close(1); ! закрывает устройство для вывода в файл.<br />

endif<br />

END subroutine vvod<br />

! подпрограмма вторичного вызова. Имя подпрограммы должно совпадать с именем,<br />

! указанным при обращении в SWGCBK. При открытии подпрограммы указывается<br />

! формальный параметр, в данном случае это переменная IDR. Фактическое<br />

! значение этой переменной равно значению переменной, указанной при обращении<br />

! к SWGCBK в данном случае это значение переменной ID_FIL. Таким образом, в<br />

! подпрограмме будет обработан виджет с именем открытого файла.<br />

SUBROUTINE ROUTINE(IDR)<br />

! подсоединение модуля obmen с общими переменными.<br />

use obmen<br />

! объявление символьной переменной CFIL длиной 80 символов для чтения имени<br />

! файла.<br />

CHARACTER*80 CFIL<br />

! чтение имени файла из виджета с идентификатором IDR (или, что то же с<br />

! идентификатором ID_FIL). Имя файла заносится в переменную CFIL.<br />

CALL GWGFIL(IDR, CFIL)<br />

! открытие файла с именем, записанным в переменной CFIL. Функция trim отсекает<br />

! хвостовые пробелы переменной CFIL.<br />

open (1,file = trim (CFIL))<br />

! чтение данные из открытого файла и запись их в массив vhod(i). При сбое чтения<br />

! переменной ios будет присвоено ненулевое значение. Кроме того, если при чтении<br />

! встретился конец файла, то выполнение программы продолжится с метки 10.<br />

read(1,*, end=10, iostat =ios) (vhod(i),i=1,kolpar)<br />

do i=1,kolpar !цикл для отображения прочитанных из фала данных в окно.<br />

! вывод числовых данных в текстовый массив texts(i)<br />

write (texts(i),*) vhod(i)<br />

! вывод данных из тестового массива в оконные виджеты. Теперь данные,<br />

! прочитанные из файла, отразятся в окне ввода.<br />

CALL SWGTXT (IDTEXT(i), texts(i))<br />

end do ! завершение цикла ввода<br />

close(1) ! закрытие устройства для чтения из файла.<br />

! Здесь проверяется состояние переменной ios.<br />

10 if (ios/=0) then ! Если она не равна 0, то<br />

! производится вывод предупреждения о том, что входной файл пустой.<br />

CALL DWGMSG ('Предупреждение:|входной файл пустой'); endif<br />

END SUBROUTINE ROUTINE ! завершение подпрограммы.<br />

152


В результате работы подпрограммы ввода будут созданы текстовые<br />

файлы с исходными данными. Структура файлов одинакова. Она представляет<br />

собой строку из семи цифр расположенных непосредственно<br />

друг за другом:<br />

0.00<br />

0.00<br />

0.100<br />

0.100E-04<br />

1.00<br />

0.100E-04<br />

0.200E-01<br />

153


Подпрограмма расчета переходного процесса<br />

subroutine obrabotka<br />

use obmen<br />

real iL, L, iL0<br />

! Ввод параметров<br />

!'R1= ','R2= ','L= ','C= ','E= ','dt= ','Tsum= '<br />

R1=vhod(1); R2=vhod(2);L=vhod(3);C=vhod(4);E=vhod(5);<br />

! Ввод расчетного шага dt и времени расчета Tsum<br />

dt=vhod(6); Tsum=vhod(7);<br />

! Вычиcление числа расчетных точек Nt<br />

Nt=floor (Tsum/dt); ! вычисление наибольшего целого от деления<br />

if (Nt>nsum) then<br />

print *,'NT= ',nt<br />

CALL DWGMSG ('Предупреждение:|&<br />

&Слишком маленький шаг|устанавливается число расчетных точек|nt=nsum');<br />

Nt=nsum-1<br />

endif<br />

Uc0=0.; iL0=0.; ! Задание начальных условий<br />

t(1)=0.<br />

iLgr(1)=iL0; Ucgr(1)=Uc0<br />

do n=2, Nt ! Задание цикла по n<br />

! Расчетные формулы<br />

iL=(E-Uc0+L/dt*iL0)/(R1+dt/C+L/dt+R2)<br />

Uc=dt/C*iL+Uc0<br />

! присвоение новых начальных значений для напряжения и тока<br />

iL0=iL; Uc0=Uc;<br />

! формирование массивов тока, напряжения и времени для вывода на график<br />

iLgr(n)=100 * iL; Ucgr(n)=Uc; t(n)=t(n-1)+dt;<br />

end do<br />

return<br />

end subroutine obrabotka<br />

154


Подпрограмма вывода результатов на график.<br />

В подпрограмме подсоединяется модуль convert, который предназначен<br />

для ввода текста на русском языке при его отображении в различных<br />

надписях на графиках. DISLIN непосредственно не поддерживает<br />

кириллицу. Для ее отображения надо обратиться к п/программе<br />

BASALF с параметром 'RUSSIAN'. После этого текстовые строки с латинскими<br />

буквами преобразуются в соответствующие русские буквы.<br />

Например, латинская v преобразуется в русскую в и т.д. Для того, чтобы<br />

непосредственно вводить текст на русском языке, используется функция<br />

conv('русский текст'), где 'русский текст' печатается в windows-кодировке.<br />

Эта функция загружается модулем convert. Текст модуля приведен<br />

после программы вывода на график.<br />

subroutine vyvod<br />

use obmen<br />

use convert<br />

! Константа dLeg соответствует максимальной длине одной надписи легенды.<br />

integer , parameter :: dLeg=10<br />

! объявление промежуточной символьной переменную Legbuf для вывода легенды.<br />

!Длина символьной переменной должна быть равной произведению констант dLeg и<br />

! kolgr. (значение kolgr объявлено в модуле obmen)<br />

character (len=dLeg*kolgr) Legbuf<br />

! объявление массива Ys, который понадобится для автоматического определения<br />

! масштабов по осям.<br />

real Ys(2*kolgr)<br />

! позиционирование окна в центре экрана<br />

CALL SWGOPT('center','position')<br />

! установка ширины окна 63% от ширины экрана, и высоты окна 71% от ширины<br />

! окна. (Здесь эти цифры определены опытным путем)<br />

CALL SWGWTH (-63); CALL SWGDRW(0.71)<br />

! инициализация виджетов с вертикальным расположением<br />

CALL WGINI ('VERT', IP)<br />

! вывод надписи<br />

CALL WGLAB (IP, 'Результаты расчета:', ID1)<br />

! вывод выджета для рисунка<br />

CALL WGDRAW(ip,id_draw2)<br />

! установка параметров виджета рисунка. Если в качестве параметра п/программы<br />

! METAFL задана символьная переменная 'XWIN', то график выводится в окно. Если<br />

! задан параметр 'WMF', то график выводится в графический файл с расширением<br />

! wmf. Возможен вывод в форматы PDF, BMP, TIFF, GIF и др. При задании параметра<br />

! 'VIRT' график выводится в виртуальный файл, сохраняемый в памяти компьютера.<br />

CALL SETXID(id_draw2,'WIDGET'); CALL METAFL('XWIN')<br />

! инициализация DISLIN, очистка окна рисунка<br />

CALL DISINI; CALL ERASE<br />

! задание отображения кириллицы в надписях графика<br />

CALL BASALF('RUSSIAN');<br />

! call chncrv('COLOR')<br />

! ввод надписей по оси Х и У соответственно.<br />

CALL name(conv('время,с'), 'X')<br />

CALL name(conv('ток, А; напряжение, В'), 'Y')<br />

! занесение в массив Ys минимальных и максимальных значений массивов тока в<br />

155


! индуктивности и напряжения на емкости, рассчитанных в основном алгоритме.<br />

Ys(1)=maxval(iLgr); Ys(2)=minval(iLgr)<br />

Ys(3)=maxval(Ucgr); Ys(4)=minval(Ucgr)<br />

! автоматическое определение масштаба по оси Y по 4-м значениям элементов<br />

! массива Ys.<br />

CALL SETSCL(Ys,4,'Y')<br />

! занесение в первые два элемента массива Ys минимального и максимального<br />

! значения переменной по оси Х — значения времени.<br />

Ys(1)=0; Ys(2)=t(Nt);<br />

! автоматическое определение масштаба по оси Х по 2-м значениям элементов<br />

! массива Ys.<br />

CALL SETSCL(Ys,2,'X')<br />

! установка белого фона для графика, надписей черного цвета и удвоенной<br />

! толщины линий и надписей<br />

CALL PAGFLL(255); CALL COLOR('BLACK'); CALL LINWID(2)<br />

CALL INCMRK(nt/20) !отмечать двадцать точек на графике<br />

CALL MARKER(kolgr) !число символов для отметки на графиках<br />

CALL HSYMBL(30) !ширина символов<br />

CALL FRAME(5) !ширина бордюров, 0- без бордюров<br />

! инициализация графика.<br />

CALL GRAF(0,0,0,0, 0,0,0,0);<br />

! вывод на график названия в 1-ю строку и отображение названия<br />

CALL TITLIN(conv('Ток в индуктивности, напряжение на ёмкости'),1); CALL title;<br />

! инициализация места, куда будут размещены легенды. Для п/программы<br />

! инициализации легенды требуется 3 параметра: рабочий массив с общей длиной<br />

! символов в легенде (в данном случае это массив Legbuf), количество графиков и<br />

! максимальный размер строки в легенде.<br />

CALL LEGINI(Legbuf, kolgr, dLeg)<br />

! вывод в поле легенды 1-й 2-й строк.<br />

CALL LEGLIN(Legbuf,conv('ток'),1)<br />

CALL LEGLIN(Legbuf,conv('напряжение'),2)<br />

! вывод сетки на график. Цифровые значения параметров соответствуют шагу сетки<br />

! по оси У и Х.<br />

CALL GRID(1,2)<br />

! установка красного цвета для 1-го графика<br />

CALL COLOR('red')<br />

! вывод 1-го графика — тока в индуктивности. П/программа рисования кривой<br />

! требует три параметра: массив значений по оси Х, массив значений по оси У и<br />

! общее число точек кривой.<br />

CALL CURVE(t, iLgr, Nt)<br />

! вывод 2-го графика — напряжения в емкости. Цвет графика - синий<br />

CALL COLOR('blue'); CALL CURVE(t, Ucgr, Nt)<br />

! установка черного цвета для текста легенды<br />

CALL COLOR('black')<br />

! вывод заголовка легенды. В данном случае это пробел<br />

CALL LEGTIT(' ')<br />

! выводит всю легенду. П/программа вывода легенды на график требует задания 2-х<br />

! параметров: имени рабочего массива легенды (в данном случае это массив Legbuf)<br />

! и места для размещения легенды. Допустимо размещение легенды в 4-х местах,<br />

! которые закодированы цифрами 1,2,3,4. Цифра 1 соответствует левому нижнему<br />

! углу, остальные цифры кодируют места против часовой стрелки.<br />

CALL LEGEND(Legbuf, 1)<br />

! завершение режима отображения графика и работы DISLIN<br />

156


CALL ENDGRF; CALL DISFIN<br />

! вывод кнопок OK и QUIT<br />

CALL WGOK (IP, ID_OK); CALL WGQUIT (IP, ID_Q)<br />

! завершение работы библиотеки вывода виджетов<br />

CALL WGFIN<br />

return ! выход из подпрограммы<br />

end subroutine vyvod ! завершение подпрограммы<br />

Рассмотренные команды библиотеки DISLIN далеко не полностью исчерпывают<br />

все ее возможности. Отметим только еще две команды. Если<br />

требуется вручную задать масштабы осей, то при обращении к п/программе<br />

GRAF требуется указать 8 параметров. Минимальное и максимальное<br />

значение по оси Х, минимальное и максимальное значение<br />

шкалы сетки по оси Х, минимальное и максимальное значение по оси У<br />

и минимальное и максимальное значение сетки по оси У. При этом рекомендуется<br />

указывать с помощью п/программы LABDIG число цифр<br />

после десятичной точки. Например:<br />

call LABDIG(3,'Y')<br />

call GRAF(Xmin, Xmax, Xmin,Xmax/5,Ymin, Ymax, Ymin,Ymax/5.),<br />

где значения Xmin Xmax Ymin Ymax должны быть определены заранее,<br />

а для оси Y будет отображаться 3 цифры после десятичной точки.<br />

Приведем теперь текст модуля для преобразования знаков латинского<br />

алфавита в русский алфавит, предназначенный для библиотеки DISLIN.<br />

Здесь следует отметить, что ряд знаков для преобразования не входят в<br />

латинский шрифт. Приведем полные списки соответствия:<br />

a b c d e f g h i j k l m n o p q r s t u v w x y z { } < > ~ | =<br />

а б э д й ф г ж и ч к л м н о п ш р с т ю в ш х у з е ц ъ ь я ё ы<br />

A B C D E F G H I J K L M N O P Q R S T U VWX Y Z [ ] $ & ^ \ %<br />

А Б Э Д Й Ф Г Ж И Ч К Л М Н О ПШ Р С Т ЮВ ШХ У З Е Ц Ъ Ь Я Ё Ы<br />

Модуль преобразования алфавита<br />

module Convert<br />

integer, private, parameter:: StrLen=400<br />

contains<br />

function conv(String)<br />

character (len=StrLen):: conv<br />

character (len=*), intent(in):: String<br />

integer, dimension (192:255):: rusm<br />

data rusm /&<br />

65, 66, 86, 71, 68, 91, 72, 90, 73, 69, 75, 76, 77, 78, 79, 80, 82, 83, 84, &<br />

89, 70, 88, 93, 74, 81, 87, 36, 37, 38, 67, 85, 94, &<br />

97, 98, 118, 103, 100, 123, 104, 122, 105, 101, 107, 108, 109, 110, 111, 112, &<br />

114, 115, 116, 121, 102, 120, 125, 106, 113, 119, 60, 61, 62, 99, 117, 126/<br />

character (len=1) Sym<br />

conv=String<br />

do i=1, len_trim (String)<br />

Sym=conv(i:i); indexs=ichar (Sym)<br />

if (indexs==184) then<br />

Sym=char(124)<br />

157


elseif (indexs==168) then<br />

Sym=char(92)<br />

elseif (indexs>=192 .and. indexs


Список литературы<br />

1. Крон Г. Применение тензорного анализа в электротехнике. – М.: Гостехиздат,<br />

1955. - 250с.<br />

2. Крон Г. Исследование сложных систем по частям - диакоптика. – М.:<br />

Наука, 1972. - 544с.<br />

3. Крон Г. Тензорный анализ сетей. – М.: Сов. радио, 1978. - 720с.<br />

4. Хэпп Х. Диакоптика и электрические цепи. – М.: Мир, 1974. - 344с.<br />

5. Копылов И.П. Электромеханические преобразователи энергии. – М.:<br />

Энергия, 1973. - 320с.<br />

6. Кузнецов О.Л., Кузнецов П.Г., Большаков Б.Г. Система природа - общество<br />

- человек: устойчивое развитие. – Государственный научный<br />

центр Российской Федерации ВНИИгеосистем; Международный университет<br />

природы, общества и человека «Дубна», 2000. - 392с.<br />

7. Петров А.Е. Тензорная методология в теории систем. – М.: Радио и<br />

связь, 1985. - 152с.<br />

8. Винокуров В.А. Высокоскоростной наземный транспорт на магнитном<br />

подвесе //Электротехника. 1997г. № 2 стр.41-45.<br />

9. Горелов А.Т. Анализ влияния параметров модулей индуктора на степень<br />

проявления краевого эффекта в линейном асинхронном двигателе<br />

//Электричество. 2001г. № 7 стр.54-58.<br />

10. Винокуров В.А., Горелов А.Т., Андрюхин Е.А. Развитие высокоскоростного<br />

наземного транспорта на новых технологических принципах.<br />

Современные проблемы энергетики, электромеханики и электротехнологии.<br />

//Вестник Уральского государственного технического<br />

университета. Электромеханика и электротехнология. ч.2.-Екатеринбург:<br />

УГТУ. 1995г. стр.145-155.<br />

11. Шакиров М.А. Декомпозиционные алгоритмы анализа электромагнитных<br />

полей. – СПб.: Изд-во С.-Петербургского университета, 1992.<br />

- 240с.<br />

12. Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов.<br />

– М.: Мир, 1981. - 368с.<br />

13. Шакиров М.А. Теоретические основы электротехники. Новые идеи<br />

и принципы. Схемоанализ и диакоптика. – СПб.: Изд-во СПбГТУ,<br />

2001. - 212с.<br />

14. Разевиг В.Д. Применение программ PCAD и PSpice для схемотехнического<br />

моделирования. – М: Наука, 1989. - 189с.<br />

15. Бартеньев О.В. Современный Фортран. – М.: Диалог-МИФИ, 2000.<br />

- 448с.<br />

159


16. Брамеллер А., Аллан Р., Хэмэм Я. Слабозаполненные матрицы: Анализ<br />

электроэнергетических систем. – М.: Энергия, 1979. - 192с.<br />

17. Сохор Ю.Н. Расчет по частям схем электропривода //Печатн. Труды<br />

Псковского политехнического института. С.Петербург-Псков: СПбГ-<br />

ТУ. 2000г. № 4. стр.226-231.<br />

18. Гершгорин С.А. Об электрических сетках для приближенного решения<br />

дифференциального уравнения Лапласа //Журнал прикладной<br />

физики. 1929г. т.6, вып.3-4. стр.3-29.<br />

19. Тетельбаум И.М. Электрическое моделирование. – М.:Физматгиз,<br />

1959. - с.320.<br />

20. Пухов Г.Е. Избранные вопросы теории математических машин. –<br />

Изд-во АН УССР, Киев, 1964.<br />

21. Коздоба Л.А. Электрическое моделирование явлений тепло- и<br />

массопереноса. – М.: "Энергия", 1972. - 296с.<br />

22. Сестрорецкий Б.В. RLC и Rt -аналоги электромагнитного пространства<br />

//Межвузовский сборник научных трудов "Машинное<br />

проектирование устройств и систем СВЧ", МИРЭА. 1977г.<br />

стр.127-158.<br />

23. Мадера А.Г. Моделирование теплообмена в технических системах.<br />

– М.: НО Научный Фонд "первая исследовательская лаборатория имени<br />

академика В.А.Мельникова", 2005. - 208с.<br />

24. Ильин В.Н. Основы автоматизации схемотехнического проектирования.<br />

– М.: Энергия, 1979. - 392 с.<br />

25. Петренко А.И. Основы автоматизации проектирования. – К.: Технiка,<br />

1982. - 295 с.<br />

26. Влах И., Сингхал К. Машинные методы анализа и проектирования<br />

электронных схем: Пер. с англ. – М.: Радио и связь, 1988. - 560 с.<br />

27. Нерретер В. Расчет электрических цепей на персональной ЭВМ:<br />

Пер. с нем. – М.: Энергоатомиздат, 1991. - 220 с.<br />

28. Демирчян К.С., Бутырин П.А. Моделирование и машинный расчет<br />

электрических цепей. – М.: Высш.шк., 1988. - 335 с.<br />

29. Антонов А.С. Параллельное программирование с использованием<br />

технологии MPI. – М.: Изд-во МГУ, 2004. - 71 c.<br />

30. Hermanns M. Parallel Programming in Fortran 95 using OpenMP. –<br />

School of Aeronautical Engineering Departamento de Motopropulsion y<br />

Termofluidodinamica Universidad Politecnica de Madrid, Spain, 2002. -<br />

75 c.<br />

31. Тарасик В.Н. Математическое моделирование технических систем.<br />

– Мн.: ДизайнПРО, 2004. - 640 с.<br />

160


32. Кутергин В.А. Конструктивные объекты и конструктивные процессы.<br />

– Ижевск: Изд-во ИПМ УрО РАН, 2007. - 551 с.<br />

33. Кулагин В.П. Разработка теоретических основ и инструментальных<br />

средств автоматизированного проектирования структур параллельных<br />

вычислительных систем на основе тензорного исчисления сетевых<br />

моделей. - Автореферат на соиск. уч.степ. д.т.н. – М.: Изд-во МГИЭМ,<br />

1995. - 35 с.<br />

34. Чижухин Г.Н. Систематизация тензорного аппарата системотехники.<br />

Часть 1 //Телекоммуникации. 2001г. № 1, стр.3-7.<br />

161


Сохор Юрий Николаевич<br />

Вычислительные модели<br />

и алгоритмы<br />

тензорного анализа сетей<br />

Учебно-методическое пособие<br />

для студентов специальности 140604 «Электропривод и автоматика<br />

промышленных установок и технологических комплексов»<br />

Технический редактор: Ю.Н.Сохор<br />

Компьютерная верстка: Ю.Н.Сохор<br />

Отпечатано с готового оригинал-макета<br />

Подписано в печать: 25.03.2008 г. Формат 60x90/16.<br />

Гарнитура Times New Roman. Усл.п.л. 10,0.<br />

Тираж 139 экз. Заказ № 2019<br />

Адрес издательства:<br />

Россия, 180000, г. Псков, ул. Л. Толстого, д.4<br />

Издательство ППИ<br />

162

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!