13.08.2013 Views

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

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

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

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Федеральное агентство по образованию<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!