?????????????? ?????? ? ????????? ?????????? ??????? ?????
?????????????? ?????? ? ????????? ?????????? ??????? ?????
?????????????? ?????? ? ????????? ?????????? ??????? ?????
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Федеральное агентство по образованию<br />
Псковский государственный политехнический институт<br />
Ю.Н.Сохор<br />
ВЫЧИСЛИТЕЛЬНЫЕ МОДЕЛИ И АЛГОРИТМЫ<br />
ТЕНЗОРНОГО АНАЛИЗА СЕТЕЙ<br />
Учебно-методическое пособие<br />
Псков<br />
Издательство ППИ<br />
2008
Федеральное агентство по образованию<br />
Псковский государственный политехнический институт<br />
Ю.Н.Сохор<br />
ВЫЧИСЛИТЕЛЬНЫЕ МОДЕЛИ И АЛГОРИТМЫ<br />
ТЕНЗОРНОГО АНАЛИЗА СЕТЕЙ<br />
Учебно-методическое пособие<br />
для студентов специальности 140604 «Электропривод и автомати-<br />
ка промышленных установок и технологических комплексов»<br />
Рекомендовано к изданию Научно-методическим советом<br />
Псковского государственного политехнического института<br />
Псков<br />
Издательство ППИ<br />
2008<br />
3
УДК 62-83+ 621.3.01<br />
ББК 31.291-01<br />
С68<br />
Рекомендовано к изданию Научно-методическим советом<br />
Псковского государственного политехнического института<br />
Рецензенты:<br />
• А.Е. Петров, академик РАЕН, доктор технических наук,<br />
профессор кафедры Системного анализа и управления<br />
Международного университета природы, общества и человека<br />
«Дубна»<br />
• Л.П. Елисеев, к.т.н., зам.зав. кафедры теоретических основ<br />
электротехники Псковского государственного политехнического<br />
института.<br />
С68 Сохор Ю.Н. Вычислительные модели и алгоритмы тензорного<br />
анализа сетей. Учебно-методическое пособие. - Псковск. гос. политехн.<br />
ин-т. - Псков: Издательство ППИ, 2008. - 162 с.<br />
ISBN 978-5-91116-057-2<br />
В пособии приводятся основные положения тензорного<br />
анализа сетей. Изложен математический аппарат, описывающий<br />
базовые электротехнические элементы, приводятся алгоритмы<br />
формирования уравнений и их решения для произвольных схем,<br />
составленных из базовых элементов, приводятся примеры решения<br />
задач теории поля, теории цепей и систем управления.<br />
Учебное пособие предназначено для студентов специальности<br />
"Электропривод и автоматика промышленных установок",<br />
изучающих дисциплину "Теоретические основы систем автоматизированного<br />
проектирования", а так же для всех, кто интересуется<br />
методами расчета сложных технических систем.<br />
ISBN 978-5-91116-057-2<br />
© Сохор Ю.Н., 2008<br />
© Псковский государственный политехнический институт, 2008<br />
2
Оглавление.<br />
Предисловие............................................................................................................5<br />
Введение..................................................................................................................6<br />
1. Базовые понятия и основные математические соотношения....................8<br />
1.1. Система обозначений................................................................................................8<br />
1.2. Тензорные объекты в уравнениях..........................................................................10<br />
1.3. Координатные преобразования уравнений...........................................................14<br />
1.4. Тензорная методология и описание технических устройств..............................17<br />
2. Моделирование цепей......................................................................................20<br />
2.1. Обобщенная ветвь...................................................................................................20<br />
2.1.1. Разностные схемы замещения линейных емкостей и индуктивностей......22<br />
2.1.1.1. Метод Эйлера 1-го порядка......................................................................22<br />
2.1.1.2. Метод трапеций.........................................................................................33<br />
2.1.1.3. Формула дифференцирования «назад»...................................................40<br />
2.1.2. Разностно-итерационные схемы замещения нелинейных ветвей...............42<br />
2.1.2.1. Итерационные схемы замещения сопротивления..................................42<br />
2.1.2.2. Разностно-итерационная схема замещения емкости.............................45<br />
2.1.2.3. Разностно-итерационная схема замещения индуктивности.................50<br />
2.1.3. Управляемые источники..................................................................................54<br />
2.2. Топологические модели электрических схем.......................................................56<br />
2.2.1. Матричная форма законов Кирхгофа.............................................................56<br />
2.2.2. Топологическое описание схемы....................................................................58<br />
2.2.3. Координатные преобразования топологических пространств схем...........61<br />
2.3. Обобщенные уравнения электрических схем.......................................................66<br />
2.3.1. Элементарная схема.........................................................................................66<br />
2.3.2. Формирование уравнений обобщенной схемы.............................................67<br />
2.3.3. Решение уравнений обобщенной схемы. Контурная и узловая формы......68<br />
2.3.4. Преобразование мощности..............................................................................72<br />
2.3.5. Уравнения обобщенной схемы в частотной области....................................74<br />
2.3.6. Алгоритм формирования и расчета уравнений резистивной схемы..........76<br />
2.3.7. Формирование уравнений R-,L-,C- схем и расчет переходных процессов.<br />
......................................................................................................................................79<br />
2.3.8. Расчет схем в системе CAD/CAM...................................................................83<br />
2.4. Расчет по частям узловых схем..............................................................................93<br />
2.4.1. Цепь пересечений.............................................................................................96<br />
2.4.2. Циркуляционная цепь......................................................................................98<br />
2.4.3. Суммарная цепь................................................................................................99<br />
2.4.4. Расчет суммарной цепи..................................................................................101<br />
2.4.5. Получение окончательного решения в подсхемах......................................102<br />
2.4.6. Алгоритм расчета по частям.........................................................................103<br />
2.4.7. Сравнение скорости расчета при декомпозиции схемы.............................108<br />
2.5. Расчет по частям контурных схем.......................................................................110<br />
3. Моделирование электромагнитных полей................................................116<br />
3.1. Резистивная схема замещения разностного уравнения.....................................118<br />
3.2. Элементарная схема..............................................................................................122<br />
3.3. Уравнения подсхемы............................................................................................122<br />
3.4. Расчет схемы замещения электромагнитного поля...........................................125<br />
3.4.1. Расчет поля при питании от источника тока ........................................126<br />
3.4.2. Расчет поля при питании от источника напряжения..................................128<br />
3
3.5. Алгоритм расчета электромагнитного поля во временной области................131<br />
4. Моделирование систем управления............................................................135<br />
4.1. Системы управления на операционных усилителях..........................................135<br />
4.2. Резистивные модели структурных схем..............................................................136<br />
Заключение.........................................................................................................141<br />
Приложения........................................................................................................144<br />
Порядок установки Фортран-95 и среды разработки VFort.....................................144<br />
Пример программирования с библиотекой DISLIN.................................................145<br />
Список литературы..........................................................................................159<br />
4
Предисловие.<br />
Тензорный анализ сетей – это метод для исследований и проектирования<br />
таких технических устройств, которые требуют их многоаспектного<br />
и многоуровневого представления на разных фазах своего существования.<br />
Подобные устройства принято называть сложными, а методы работы<br />
с ними – системными.<br />
Проблемы, стоящие перед разработчиками сложных технических систем<br />
вызваны:<br />
• требованием постоянного расширения представлений о системе;<br />
• необходимостью синтеза многообразного описания особенностей<br />
различных конструкций;<br />
• большим числом переменных, громоздкостью уравнений,<br />
приводящих к значительным вычислительным затратам.<br />
Существуют различные системные технологии, решающие эти<br />
проблемы. В рамках этих технологий устанавливаются определенные<br />
понятия и теоретические схемы, разрабатываются модели системы и методы<br />
решения этих моделей. Общим для системного подхода является<br />
то, что основной акцент ставится в первую очередь на целостных свойствах<br />
объектов. Различные аспекты описания, отдельные части, их связи<br />
и структура призваны выявить эту целостность.<br />
Следует отметить, что в системных технологиях применяется, как<br />
правило, весьма абстрактный математический аппарат, серьезно жертвующий<br />
содержательностью. Не является исключением и тензорный анализ<br />
сетей. Цель книги – на практических примерах показать возможности<br />
тензорного анализа сетей для системных исследований, раскрыть<br />
содержательный смысл этого математического аппарата.<br />
Учебное пособие рассчитано на студентов специальности "электропривод<br />
и системы автоматизации технологических процессов", изучающих<br />
курс по теории систем автоматизированного проектирования. Автор<br />
надеется так же, что книга заинтересует всех тех, кто связан с разработкой<br />
сложных технических систем и системных технологий.<br />
5
Введение.<br />
При тензорном подходе технические устройства рассматриваются в<br />
различных пространствах и переход от одного устройства к другому на<br />
разных уровнях иерархии, переделка устройства, его сборка, разборка и<br />
другие изменения представляются как преобразование пространств.<br />
Тензорные уравнения – это такие уравнения, которые не меняются при<br />
переходе от одного пространства к другому, то есть остаются инвариантным<br />
к изменению расчетной конструкции.<br />
Наиболее важными для приложений являются следующие свойства<br />
тензорного анализа сетей:<br />
1. Язык тензорного исчисления применяется для формулировки<br />
большинства фундаментальных законов физики. Поэтому, несмотря<br />
на то, что тензорный анализ сетей, как правило, приводится в<br />
электротехнических терминах, результаты могут быть использованы<br />
для расчета устройств различной физической природы.<br />
2. Совмещение в едином математическом аппарате непрерывных дифференциальных<br />
и дискретных топологических объектов позволяет<br />
относительно просто состыковать расчетные модели с конструкторскими<br />
схемами в системах сквозного проектирования (системах<br />
CAE/CAD/CAM).<br />
3. Инвариантность математического описания технических устройств<br />
приводит к универсальности соответствующего программного<br />
обеспечения.<br />
4. Расчет по частям, разработанный в тензорном анализе сетей,<br />
позволяет сократить объем вычислений при расчете больших<br />
систем, выполнить распараллеливание вычислений.<br />
5. Результаты исследований отдельных частей могут быть<br />
использованы в разных проектах.<br />
Тензорный анализ сетей был разработан Г. Кроном для расчета сложных<br />
технических систем по частям, для ряда статистических и некоторых<br />
экономических расчетов. Им были предложены уравнения обобщенной<br />
электрической машины. Результаты основных его работ опубликованы<br />
в [1], [2], [3]. Следует так же отметить книгу Х. Хэппа [4], посвященную<br />
контурной теории цепей, работы И.П. Копылова [5] по теории<br />
обобщенной электрической машины, книги П.Г. Кузнецова [6] и<br />
А.Е. Петрова [7] , где рассматриваются возможности применения тензорного<br />
анализа сетей для развития теории систем. Идея применения<br />
тензорного анализа сетей к решению электротехнических задач оказала<br />
глубокое влияние на развитие различных разделов теоретической электротехники.<br />
Результаты этого влияния прослеживаются в многочисленных<br />
публикациях, ссылки на которые приводятся по ходу изложения.<br />
Задачи книги:<br />
1. Привести основные понятия и математические соотношения<br />
6
тензорного анализа сетей.<br />
2. Изложить математический аппарат для уравнений, описывающий<br />
базовые электрические элементы.<br />
3. Привести алгоритмы формирования уравнений и их решения для<br />
произвольных схем, составленных из базовых элементов.<br />
4. Привести примеры решения задач теории цепей, теории поля и<br />
теории автоматического управления.<br />
5. Привести пути развития и совершенствования вычислительных<br />
моделей и алгоритмов тензорного анализа сетей.<br />
В первой главе приведены основные математические соотношения<br />
тензорного анализа сетей в том объеме, который необходим для понимания<br />
работы алгоритмов и тех возможностей, которые в них заложены.<br />
Во второй главе рассмотрены вопросы построения вычислительных<br />
моделей для электрических цепей. Здесь можно выделить три раздела,<br />
относящихся к исследованию простых схем. Это построение модели<br />
обобщенной ветви, топологическое описание схем с использованием<br />
матриц преобразования, формирование обобщенных уравнений схем и<br />
их решение. Еще два раздела относятся к расчету сложных схем по частям<br />
узловым и контурным способом. Построение моделей обобщенной<br />
ветви ориентировано в основном на численный расчет переходных процессов.<br />
Это связано с тем, что особенности численных расчетов недостаточно<br />
полно отражены в основных работах по тензорному анализу<br />
сетей, в которых предполагается операторный метод расчета. Расчет<br />
сложных схем по частям рассматривается для наиболее общего случая,<br />
когда отдельные подсхемы не имеют общего узла.<br />
В третьей главе рассмотрены этапы моделирования и расчета электромагнитного<br />
поля с помощью электрических схем замещения разностных<br />
уравнений. Построения ведутся на примере одномерного поля, описываемого<br />
уравнениями в частных производных с диффузионной и конвективной<br />
составляющими. При построении модели и проверке результатов<br />
расчета использовались материалы, представленные В.А.Винокуровым<br />
и А.Т.Гореловым [8], [9], [10]. Автор выражает им так же признательность<br />
за содействие в выполнении исследований.<br />
Четвертая глава посвящена вопросам моделирования систем управления.<br />
Приводятся математические соотношения для резистивных моделей<br />
структурных схем и их решения.<br />
Для решения задач потребуется следующее свободно распространяемое<br />
программное обеспечение:<br />
математический пакет SciLab (http://www.scilab.org), компилятор Фортрана<br />
g95 (http://www.g95.org), среда программирования на Фортране<br />
Vfort (http://www.imamod.ru/~vab), пакет проектирования электронных<br />
устройств KiCAD (http://iut-tice.ujf-grenoble.fr/kicad), пакет символьной<br />
математики Maxima (http://maxima.sourceforge.net).<br />
7
1. Базовые понятия и основные математические соотношения.<br />
1.1. Система обозначений.<br />
Система обозначений математических объектов зависит от действий с<br />
этими объектами. Рассмотрим следующие формы обозначений: матричную,<br />
матрично-индексную, матрично-тензорную и тензорную. Критерием<br />
различий между ними служит правило использования индексов.<br />
Матричная форма. Это безиндексная форма. Матрица или вектор<br />
обозначаются одной буквой латинского алфавита, как правило, полужирным<br />
шрифтом, для отличия от скаляра, обозначаемого простым<br />
шрифтом, например, Z, I, i, U и т.д.<br />
Для операции транспонирования применяется нижний индекс t,<br />
например, Zt. Для обратной матрицы применяется степень -1, например,<br />
(Z) -1 или Z -1 . Обозначения матриц и векторов означают их смысл: i – вектор<br />
токов, U – вектор напряжений и т.д. Чтобы внести отличия между<br />
векторами, их снабжают дополнительными символами. Например, век-<br />
тор токов в ветвях можно обозначить ib, а вектор контурных токов ik.<br />
При преобразованиях векторов из исходной системы координат в новую<br />
систему координат, применяют обозначения со штрихами, например,<br />
i' – это новый вектор тока, i – старый вектор тока.<br />
Матричная форма наиболее лаконична. Из текста должно быть ясно, о<br />
каких координатах идет речь. Для явного указания координат, используют<br />
матрично-индексную форму.<br />
Матрично-индексная форма. В этом случае обозначение матрицы или<br />
вектора дополняется нижними индексами, при этом для матриц первый<br />
индекс обозначает строку, второй – столбец, например, матрица Crb содержит<br />
r строк и b столбцов.<br />
Вектор представляет собой матрицу с одним столбцом, единственный<br />
векторный индекс перечисляет строки этого столбца, например, вектор<br />
Ub содержит b строк. Для операции транспонирования матрицы произ-<br />
водится перестановка индексов, например, матрица Crb является транс-<br />
понированной по отношению к матрице Cbr.. Для того чтобы представить<br />
транспонированный вектор, то есть вектор в виде строки, использу-<br />
ется точка, например, вектор U.b содержит b столбцов (и одну строку).<br />
Так же, как и для матричной формы, для обратной матрицы в индексной<br />
форме применяется степень -1, например, (Zbb) -1 . При перемножении<br />
матриц в индексной форме удобно контролировать правильность расположения<br />
и размерность сомножителей. Суммирование производится по<br />
одинаковым индексам, имеющим ближнее расположение в сомножителях,<br />
например, в произведении Cbd=Сbr · Crd суммирование производится<br />
по индексу r, в произведении U·b=U.s · Csb, суммирование производится<br />
по индексу s.<br />
8
Матрично-тензорная форма. Отличие от матрично-индексной формы<br />
состоит только в том, что используются верхние и нижние индексы.<br />
Например, для токов применяют верхние индексы, для напряжений –<br />
нижние. В операциях умножения индексы проставляются так, чтобы<br />
компоненты с верхним индексом суммировались с компонентами с ниж-<br />
⋅b ⋅b<br />
ним индексом и наоборот. Например, U r =C r ⋅U b или U o = C o ⋅U b . Здесь<br />
суммируются верхний и нижний индексы, которые обозначаются одинаково.<br />
Как и для матричного обозначения, существенен порядок расположения<br />
сомножителей. Рядом стоящие сомножители имеют ближнее расположение<br />
перемножаемых индексов. Например, перемножение трех<br />
⋅b ⋅r<br />
объектов должно быть записано так: z rr = Cr ⋅zbb⋅C b , где суммирование<br />
идет по индексу b.<br />
Тензорная форма. При перемножениях используются немые индексы,<br />
которые могут иметь произвольное обозначение и свободные индексы,<br />
которые не участвуют в суммировании. Суммирование выполняется всегда<br />
по одинаковым индексам, причем компоненты с верхним индексом<br />
суммируются с компонентами с нижним индексом и наоборот.<br />
Внутреннее произведение трех тензоров второго порядка может быть<br />
записано в разных формах:<br />
⋅α β ⋅α β ⋅α β β ⋅α<br />
zδγ = zαβ⋅C δ ⋅C ⋅γ = C δ ⋅C ⋅γ⋅z<br />
αβ =C δ ⋅zαβ⋅C ⋅γ =C ⋅γ⋅z<br />
αβ⋅C δ ,<br />
это же произведение в развернутой форме с использованием знаков суммирования:<br />
n n<br />
n n<br />
n n<br />
n n<br />
⋅i j ⋅i j ⋅i j j ⋅i<br />
z km =∑ ∑ zij⋅C k ⋅C ⋅m =∑ ∑ C k⋅C<br />
⋅m⋅zij<br />
=∑ ∑ C k⋅z<br />
ij⋅C ⋅m =∑ ∑ C ⋅m⋅z<br />
ij⋅C k ,<br />
i = 1 j = 1<br />
i = 1 j = 1<br />
i = 1 j = 1<br />
i = 1 j = 1<br />
где сначала выполняется суммирование по индексу j, затем по индексу i.<br />
Индексы α, β в первом примере и индексы i, j во втором примере – это<br />
немые индексы. В обоих примерах производится суммирование компонент,<br />
имеющих одинаковые индексы.<br />
Из перечисленных 4-х форм обозначений, для тензорного анализа сетей<br />
удобна матрично-тензорная форма, введенная Х.Хэппом [4]. Дело в<br />
том, что чисто тензорное использование индексов предполагает суммирование<br />
по одинаковым индексам тогда, когда они принадлежат од-<br />
ному объекту, например, запись Zαα будет означать ∑ i =1<br />
n<br />
Z ii , то есть сум-<br />
мирование диагональных элементов, что в итоге даст скаляр. Так как в<br />
тензорном анализе сетей применяются системы координат с различным<br />
числом измерений, то каждый индекс соответствует определенному<br />
числу координат в определенном измерении. Поэтому одинаковые индексы<br />
подразумевают одинаковое число координат. В этом случае,<br />
например, запись Zαα будет означать тот факт, что строка и столбец имеют<br />
одинаковое измерение и одинаковое число координат в этом измерении.<br />
9
1.2. Тензорные объекты в уравнениях.<br />
Операции с тензорными объектами предполагают бóльшую степень<br />
общности, чем операции с векторными уравнениями. Это можно продемонстрировать<br />
следующей схемой:<br />
Численные<br />
уравнения<br />
{3,5⋅ 8,6 = 30,1<br />
3,5⋅ 2,7 = 9,45<br />
3,5⋅−1,4= 4,9<br />
...<br />
Скалярные<br />
уравнения<br />
{Z 1 ⋅I 1 = U 1<br />
Z 2 ⋅I 2 = U 2<br />
Z 3 ⋅I 3 = U 3<br />
.. .<br />
Численные уравнения могут быть представлены одним скалярным (алгебраическим)<br />
уравнением. Например, если сопротивление равно 3,5<br />
Ома, то обозначив его символом Z1, численные значения, связывающие<br />
ток и напряжение, можно выразить одним уравнением Z1·I1=U1. Для другого<br />
сопротивления Z2 уравнение будет другим Z2 ·I2=U2. Система скалярных<br />
уравнений может быть представлена одним векторным уравнением,<br />
например, Za·Ia=Ua, где Za – матрица сопротивлений. Каждое векторное<br />
(матричное) уравнение может описывать какую-то одну электрическую<br />
схему. Для нескольких схем надо составить систему векторных<br />
уравнений. Эта система может быть представлена одним тензорным<br />
уравнением, например, Zαβ·I α =Uβ, где объекты будут тензорами. Одно такое<br />
тензорное уравнение может описывать сразу несколько схем, например,<br />
для электрических машин такое уравнение носит название "уравнение<br />
обобщенной электрической машины". Получение из тензорного<br />
уравнения одной системы векторных уравнений для конкретной схемы,<br />
может быть выполнено правилами проецирования на конкретную систему<br />
координат. В этой конкретной системе тензорное уравнение становится<br />
матричным с определенными свойствами, характерными для данной<br />
схемы.<br />
Тензорные уравнения могут быть обобщены далее. В этом случае они<br />
тоже носят название тензорных уравнений, но только более высокого<br />
порядка. (Например, в последнее время на базе тензорного исчисления<br />
получила распространение мультилинейная алгебра).<br />
Рассматриваемые в последующих разделах уравнения обобщенной<br />
электрической схемы можно отнести к тензорному типу уравнений, так<br />
как они представляют все возможные схемы, состоящие из заданного<br />
числа ветвей. Переход от одной схемы к другой выполняется посредством<br />
координатных преобразований.<br />
Индексная система хорошо приспособлена для отображения законов<br />
преобразования координат. Например, если обозначить I b – вектор тока<br />
10<br />
Векторные<br />
уравнения<br />
{Z a ⋅I a = U a<br />
Z b ⋅I b = U b<br />
Z c ⋅I c = U c<br />
.. .<br />
Тензорные<br />
уравнения<br />
{Z αβ ⋅I α = U β<br />
Z δγ ⋅I δ =U γ<br />
Z λμ ⋅I λ = U μ<br />
.. .
в исходной системе координат, а I s – вектор тока в новой системе координат,<br />
то преобразование вектора I b в вектор I s осуществляется по правилу:<br />
I b = C b s · I s ,<br />
(1.2.1)<br />
где C b s – тензор преобразований координат. Состав элементов<br />
тензора преобразований зависит от характера преобразований. При<br />
топологических преобразованиях схем C b s состоит из 0, +1 и -1. При<br />
преобразовании уравнений электрических машин C b s включает<br />
тригонометрические функции (синусы и косинусы углов поворота<br />
ротора), при переходе к симметричным составляющим многофазных<br />
схем C b s состоит из комплексных чисел и т.д.<br />
Для векторов напряжений используют нижние индексы. Если Ub –<br />
вектор напряжения в исходной системе координат, а Us – вектор напряжения<br />
в новой системе координат, то преобразование вектора Ub в вектор<br />
Us осуществляется по правилу, обратному по отношению к преобразованию<br />
токов:<br />
Us = Cs b · Ub. (1.2.2)<br />
Применение в обозначениях верхних и нижних индексов в матричнотензорной<br />
и тензорной формах, является характерным для тензорных<br />
объектов. Объекты с нижними индексами называют ковариантными<br />
тензорами, тензоры с верхними индексами называют контрвариантными.<br />
Контрвариантный, означает "изменяющийся противоположным образом",<br />
ковариантный — "изменяющийся одинаковым образом". Преобразования<br />
координат можно понимать как обобщенное масштабирование,<br />
когда исходное пространство служит базой или эталоном для нового<br />
пространства. Например, вектор токов I s нового пространства измеряется<br />
в единицах вектора токов I b исходного пространства. Матрица C b s<br />
является матрицей масштабов. Из формулы (1.2.1) следует, что I s = (C b s) -1<br />
· I b , Это означает, что с увеличением масштаба, т.е. с увеличением элементов<br />
матрицы C b s, компоненты вектора тока I s будут уменьшаться.<br />
Компоненты нового вектора напряжения Us , как это следует и формулы<br />
(1.2.2), наоборот, с увеличением коэффициентов матрицы Cs b будут также<br />
увеличиваться. Поэтому вектор тока – контрвариантный, вектор<br />
напряжений – ковариантный.<br />
В технике к ковариантным векторам можно отнести напряжение, скорость,<br />
температуру, давление. Для их измерений нужна некоторая разность<br />
отсчетов. Эти переменные можно назвать продольными. К контрвариантным<br />
векторам можно отнести электрический ток, механическую<br />
силу, тепловой поток, поток массы (газовый поток, гидравлический поток<br />
и т.п.). Эти переменные измеряются в точке. Их направление пер-<br />
11
пендикулярно некоторой плоскости. Контрвариантные векторы можно<br />
назвать поперечными.<br />
Для технических приложений смысл ковариантности и контрвариантности<br />
связан с измерениями и преобразованиями результатов измерений<br />
в ту систему координат, которая наиболее удобна для вычислений или<br />
наиболее проста для аппаратной реализации.<br />
***<br />
Тензор сопротивлений можно трактовать как "метрический" тензор.<br />
Такой тензор играет фундаментальную роль в тензорном исчислении.<br />
Рассмотрим смысл метрического тензора и сопоставим его с тензором<br />
сопротивлений.<br />
Важнейшим свойством различных систем координат является расстояние<br />
между двумя близко расположенными точками - элемент длины ds.<br />
Для прямоугольной системы координат квадрат этого расстояния вычисляется<br />
по теореме Пифагора:<br />
ds 2 =dx 2 +dy 2 ,<br />
где dx и dy - соответственно расстояния между точками по оси х и у. Для<br />
криволинейной системы координат формула несколько усложняется:<br />
(ds) 2 =E(du) 2 +2Fdu·dv+G(dv) 2 ,<br />
где du и dv расстояние между точками по координатам u и v. Теорема<br />
Пифагора является частным случаем этой формулы. Исходя из формулы<br />
для элемента длины, можно построить всю геометрию для выбранной<br />
системы координат. Три коэффициента E, F, G играют фундаментальную<br />
роль для определения свойств этой геометрии. В тензорном анализе<br />
принята другая форма записи для элемента длины:<br />
(ds) 2 =g11(dx1) 2 +g12dx1dx2+g21dx2dx1+g22d(x2) 2 ,<br />
где вместо обозначений u и v используются обозначения х1 и х2. Коэффициенты<br />
g12 и g21 равны друг другу: g12=g21. Коэффициенты g в формуле для<br />
элемента длины носят название метрических коэффициентов и являются<br />
компонентами метрического тензора:<br />
gαβ= g11 g12<br />
g21 g22<br />
Формулу для элемента длины можно записать более компактно в тензорной<br />
форме:<br />
(ds) 2 =gαβ · dx α dx β . (1.2.3)<br />
Теперь обратимся к пространству электрической схемы. Если схема<br />
описывается в контурных координатах, то мощность схемы можно выразить<br />
формулой в тензорных обозначениях, используя правила внутреннего<br />
произведения:<br />
P=Rαβ·i α ·i β , (1.2.4)<br />
12
где i α , i β – вектор контурных токов, Rαβ – матрица контурных сопротивлений.<br />
Сопоставляя (1.2.3) и(1.2.4) можно заключить, что мощность является<br />
аналогом квадрата элемента длины, а матрица контурных сопротивлений<br />
сопоставима с метрическим тензором. Если ту же схему описывать<br />
в координатах других контуров, то формула (1.2.4) останется прежней.<br />
Контурные токи связаны с вектором контурных э.д.с. eβ соотношением:<br />
i α =Y αβ ·eβ ,<br />
где Y αβ – матрица контурных проводимостей. Подставляя эту формулу в<br />
(1.2.4), получим выражение для расчета мощности через ковариантные<br />
компоненты:<br />
P= Y αβ ·еα·еβ. (1.2.5)<br />
Из равенства (1.2.4) и (1.2.5) можно заключить, что метрический тензор<br />
может быть представлен в ковариантных и контрвариантных координатах.<br />
Если в электрическую схему входят индуктивно связанные катушки,<br />
то можно говорить об энергии магнитного поля этих катушек. Энергия<br />
магнитного поля индуктивно связанных контуров выражается формулой:<br />
W=1/2·Lαβ·i α ·i β ,<br />
где Lαβ – матрица индуктивностей, i α , i β – вектор токов в катушках. Сопоставляя<br />
эту формулу с (1.2.3), можно сделать вывод, что энергия магнитного<br />
поля является аналогом квадрата элемента длины.<br />
Если в электрическую схему входят емкости, то можно говорить об<br />
энергии электростатического поля этих емкостей. Из теории электрических<br />
цепей известно, что энергия электростатического поля емкостей<br />
выражается формулой:<br />
W=1/2·С αβ ·Uα·Uβ,<br />
где С αβ – матрица емкостей, Uα, Uβ – вектор напряжений на емкостях. Сопоставляя<br />
эту формулу с (1.2.3), также можно сделать вывод, что энергия<br />
электростатического поля емкостей является аналогом квадрата элемента<br />
длины.<br />
***<br />
Приведенная аналогия между математическими объектами теории<br />
электрических цепей и математическими объектами тензорного исчисления<br />
позволяет применить этот математический аппарат для построения<br />
вычислительных моделей электрических схем. Существенным отличием<br />
тензорного анализа сетей от других реализаций тензорного исчисления,<br />
является использование объектов комбинаторной топологии –<br />
контурных и узловых матриц, включение их в состав тензорных операций.<br />
Такое включение позволяет анализировать единым образом не<br />
только искривленные и деформированные пространства, но и про-<br />
13
странства, разъединенные на отдельные части, дискретные пространства.<br />
1.3. Координатные преобразования уравнений.<br />
В тензорном анализе сетей различают цепь активную и неактивную.<br />
Неактивная цепь — это просто совокупность ветвей и узловых пар (одномерных<br />
и нульмерных симплексов). В активной цепи присутствуют<br />
токи и напряжения, определяющие в ней процессы. В тензорном анализе<br />
сетей токи и напряжения отображают не только процессы, но и топологию<br />
цепи, то есть представляют собой некоторую отображающую алгебраическую<br />
систему. Например, токи ветвей отображают ветви, узловые<br />
напряжения на ветвях отображают узловые пары ветвей. Соединенная<br />
схема топологически состоит из контуров и узловых пар, соответственно<br />
в отображающую систему входят контурные токи и узловые<br />
напряжения схемы. Вектора токов и напряжений задают систему координат<br />
(реперов). Переход к разным системам координат означает переход<br />
к разной топологии цепи.<br />
В дальнейшем используются следующие обозначения:<br />
U – напряжение на узловой паре;<br />
J – источник тока на узловой паре;<br />
e – источник напряжения, действующий вдоль ветви или в контуре;<br />
i – ток ветви или контура;<br />
V – напряжение на сопротивлении;<br />
I – ток в сопротивлении;<br />
z – сопротивление ветви или контура;<br />
Y – проводимость ветви или узловой пары;<br />
C – контурный тензор преобразования;<br />
A – узловой тензор преобразования.<br />
Ветвь является основным топологическим элементом схемы. Отдельные<br />
ветви отражают то или иное физическое явление и им можно приписать<br />
некоторое электрическое сопротивление (по методу электрических<br />
аналогий это может быть гидравлическое, тепловое или иное сопротивление).<br />
Совокупность таких отдельных ветвей представляет собой<br />
элементарную схему. Токи и напряжения сопротивлений ветвей в<br />
простейшем случае связаны между собой законом Ома :<br />
V = z · I. (1.3.1)<br />
Если обозначить I' – вектор тока в новой системе координат, то его<br />
связь с вектором тока элементарной схемы I выражается уравнением:<br />
I = C · I' , (1.3.2)<br />
где С отражает топологию схемы и может представлять собой матрицу,<br />
строки которой соответствуют ветвям схемы, а столбцы контурам схемы.<br />
Состав тензора С соответствует законам Кирхгофа. В тензорном<br />
14
анализе сетей рассматриваются обобщенные контуры, включающие как<br />
открытые, так и закрытые контуры, поэтому число столбцов тензора С<br />
равно числу открытых и закрытых контуров.<br />
Подставляя (1.3.2) в (1.3.1), получаем:<br />
V = z · C · I',<br />
умножая левую и правую части на Ct :<br />
Ct · V = Ct · z · C · I'.<br />
Если обозначить:<br />
V' = Ct · V,<br />
z' = Ct · z · C,<br />
что соответствует законам преобразования напряжения и сопротивлений,<br />
получаем:<br />
V' = z' · I'. (1.3.3)<br />
Сравнивая (1.3.3) с (1.3.1), видно, что форма уравнений осталась без изменений<br />
(то есть осталась инвариантной к выполненным преобразованиям).<br />
Вместе с тем изменился компонентный состав этих уравнений.<br />
Например, матрица z' теперь содержит контурные сопротивления и сопротивления<br />
узловых пар. Система уравнений (1.3.3) может быть решена<br />
относительно контурных токов или узловых напряжений.<br />
Рассмотрим преобразование мощности. Для элементарной схемы<br />
мощность, рассеиваемая в сопротивлениях:<br />
P = Vt · I.<br />
Подставляя формулы для преобразования токов и напряжений, убеждаемся<br />
в том, что мощность остается без изменений:<br />
P = Vt · C · I' = Vt' · I' = P',<br />
где использовано правило транспонирования матричного умножения:<br />
Vt' = (Ct · V)t = Vt · C .<br />
***<br />
Уравнения элементарной схемы могут иметь более сложный вид, чем<br />
закон Ома. Например, уравнения напряжений обобщенной электрической<br />
машины:<br />
U = R · I + L · dI/dt + ω ·G ·I.<br />
Тензор преобразований С, применяемый к этим уравнениям, как правило,<br />
соответствует вращениям системы координат, поэтому его компоненты<br />
являются функциями угла поворота, который в свою очередь зависит<br />
от времени, т.е. C=f(γ), γ= γ(t).<br />
Выполнив преобразование координат в соответствии с формулой<br />
I=C·I', получим то же самое по форме уравнение:<br />
U' = R' ·I' + L' ·dI'/dt + ω· G'· I',<br />
где компоненты вычисляются по формулам тензорных преобразований:<br />
R'=Ct ·R· C, L'=Ct· L ·C, G'=Ct ·G· C + Ct· L ·dC/dγ .<br />
15
Мощность электрической машины и форма уравнений электрической<br />
машины при тензорных преобразованиях остается инвариантной. Несмотря<br />
на неизменность формы уравнений, компонентный состав при<br />
преобразованиях изменяется. Специальным выбором тензора преобразований<br />
C можно добиться желаемого состава этих компонент.<br />
Например, ввести трехфазную систему координат, получить уравнения в<br />
симметричных составляющих для полей прямой и обратной последовательности<br />
и т.д. Все эти и другие преобразования рассматриваются в<br />
теории обобщенного электромеханического преобразования энергии.<br />
***<br />
Уравнения элементарных ветвей и схем могут быть составлены не<br />
только для различных физических явлений, но и для процессов в различных<br />
"временнόй развертке": переходных и установившихся процессов,<br />
частотного анализа. Координатными преобразованиями автоматически<br />
выводятся уравнения для различных схем, составленных из элементарных<br />
ветвей. Во второй главе приводятся уравнения элементарных<br />
ветвей для основных компонент электрических схем: линейных и<br />
нелинейных R-, L-, C- ветвей и управляемых источников. Основное внимание<br />
уделено уравнениям для непосредственного анализа процессов во<br />
времени. Такие уравнения наиболее универсальны, на их основе могут<br />
быть получены уравнения для других типов анализа: частотного, по постоянному<br />
току, операторные уравнения и т.д.<br />
16
1.4. Тензорная методология и описание технических устройств.<br />
В основе описания лежит математическая модель обобщенной ветви.<br />
Эта модель может быть получена на основе обыкновенных дифференциальных<br />
уравнений или уравнений в частных производных методами разностных<br />
аппроксимаций этих уравнений.<br />
обобщенные<br />
ветви<br />
...<br />
виды ветвей:<br />
электрические,<br />
магнитные, механические,<br />
тепловые, газогидравлические<br />
схемы замещения:разностноитерационные,<br />
операторные, в<br />
частотной области<br />
уравнения<br />
элементарной схемы:<br />
U + e = z ( i + J )<br />
тензор<br />
преобразований<br />
С 1<br />
С 2<br />
...<br />
С n<br />
виды тензора<br />
преобразований:<br />
матрицы соединений,обмоточныематрицы,<br />
матрицы<br />
вращения, матрицысимметричныхсоставляющих,дифференцирующие<br />
матрицы и<br />
т.д.<br />
уравнения<br />
преобразований:<br />
i = C i'<br />
уравнения<br />
преобразований:<br />
i' = C -1 i<br />
обобщенные<br />
схемы<br />
виды уравнений<br />
схем:<br />
контурные<br />
уравнения,<br />
узловые уравнения,контурноузловыеуравнения,уравненияобобщеннойэлектрическоймашины<br />
в различныхкоординатах...<br />
уравнения схемы:<br />
U' + e' = z' ( i' + J' )<br />
17<br />
тензор<br />
преобразований<br />
С Σ1<br />
С Σ2<br />
виды тензора<br />
преобразований:<br />
матрицы цепи<br />
пересечений,<br />
матрицы суммарной<br />
схемы<br />
и т.д..<br />
уравнения<br />
преобразований:<br />
i' = C i''<br />
уравнения<br />
преобразований:<br />
i'' = C -1 i'<br />
Рис. 1.4.1.Тензорное описание устройств.<br />
обобщенные<br />
устройства<br />
виды уравнений<br />
устройств:<br />
контурные<br />
уравнения,<br />
узловые уравнения,контурноузловыеуравнения<br />
уравнения устройства:<br />
U'' + e'' = z'' ( i'' + J'' )
Кроме разностных аппроксимаций, имеют распространение методы<br />
получения обобщенных ветвей на основе интегральных уравнений [11].<br />
Для расчетов в частотной области используются линейные параметры<br />
обобщенных ветвей.<br />
Одна или несколько обобщенных ветвей могут представлять однородный<br />
физический процесс. Для учета влияния друг на друга процессов<br />
разной природы используют управляемые источники, которые так же<br />
могут быть записаны в форме обобщенных ветвей.<br />
Вся совокупность обобщенных ветвей составляет элементарную схему.<br />
Число степеней свободы элементарной схемы равно числу обобщенных<br />
ветвей. Каждая ветвь задает координатную ось. Значения токов и<br />
напряжений в ветвях может быть произвольным.<br />
Конкретная схема ограничивает значения токов в ветвях. Ограничения<br />
задаются уравнениями связи, которые в тензором анализе сетей<br />
представляются в форме преобразования координат пространства элементарной<br />
схемы в пространство новой схемы. Уравнения связи не<br />
единственный способ перехода к новой системе координат. Переход может<br />
быть выполнен с помощью матриц вращения, матриц симметричных<br />
составляющих и т.д. в зависимости от содержания задачи.<br />
В результате преобразований формируются уравнения схемы в новых<br />
координатах. Если при топологических преобразованиях новые координаты<br />
- координаты контуров и узловых пар, соответственно уравнения<br />
формируются в контурном и(или ) узловом базисах. Возможен обратный<br />
переход от новых координат к координатам ветвей. Переход выполняется<br />
с использованием обратного тензора преобразований: С -1 ,<br />
входящего в уравнение i' = C -1 ·i. Таким образом, выполнив расчеты,<br />
например, токов в контурных координатах, результаты можно пересчитать<br />
на координаты ветвей и определить токи и напряжения ветвей. Для<br />
исследований работы трехфазных электрических машин в составе<br />
преобразователей частоты, расчеты выполняются в фазных координатах,<br />
результаты могут пересчитаны на координаты эквивалентной по<br />
мощности двухфазной машины. Аппаратная реализация координатных<br />
преобразований уравнений электрических машин позволяет измеренные<br />
фазные токи пересчитать в двухфазную вращающуюся систему координат,<br />
для которой выполняется настройка регуляторов. Полученные с<br />
двухфазных регуляторов сигналы пересчитываются обратно в трехфазную<br />
систему координат и управляют длительностью ШИМ-импульсов<br />
системы управления силовым инвертором.<br />
Для расчета устройств по частям, отдельные схемы представляются в<br />
узловом базисе. Форма уравнений напряжений остается при этом неизменной,<br />
такой же как и для уравнений обобщенных ветвей. Поэтому из<br />
уравнений схем можно получить уравнения устройства, составленного<br />
из этих схем. Переход к новым координатам так же выполняется на<br />
18
основе тензоров преобразований, которые получаются из уравнений<br />
связей схем друг с другом. Контурная матрица сопротивлений устройства<br />
оказывается меньших размеров, так как в нее входят только граничные<br />
координаты схем. Внутренние контурные координаты схем исключаются<br />
из расчета устройства. При исключении внутренних координат<br />
отдельных схем выполняется вычисления их обратных контурных матриц<br />
сопротивлений, которые могут быть небольших размеров. Таким<br />
образом, общие вычислительные затраты на расчет устройства снижаются.,<br />
кроме того, расчет отдельных схем может быть выполнен на параллельных<br />
процессорах. Выполнив расчеты устройства в координатах<br />
суммарной схемы, выполняется обратный пересчет токов в координаты<br />
отдельных ветвей.<br />
Уравнения устройства при тензорном анализе сетей формируются в<br />
том же виде, что и уравнения ветвей и схем, поэтому открывается возможность<br />
дальнейшего укрупненного описания и получения уравнений<br />
для метасистем.<br />
19
2. Моделирование цепей.<br />
2.1. Обобщенная ветвь.<br />
На рис.2.1.1 показана схема обобщенной ветви.<br />
Напряжение на внешних узлах ветви U равно разности между напряжением<br />
V на сопротивлении и электродвижущей силой е:<br />
U=V- e.<br />
Ток в ветви I равен сумме тока источника J и тока i, проходящего через<br />
ветвь:<br />
Закон Ома для сопротивления z:<br />
I=i+J.<br />
V=z·I, (2.1.1)<br />
Последнее равенство выразим через ток i и напряжение U:<br />
U+e=z·(i+J). (2.1.2)<br />
Уравнение (2.1.2) есть уравнение обобщенной ветви, приведенной на<br />
рис.2.1.1.<br />
Обобщенную ветвь можно представить в двух эквивалентных формах,<br />
приведенных на рис.2.1.2. Покажем это.<br />
i<br />
Преобразуем (2.1.2):<br />
I<br />
z<br />
U<br />
J - e/z<br />
a) узловая форма<br />
обобщенной ветви.<br />
i<br />
I<br />
z<br />
V<br />
Рис. 2.1.1. Обобщенная ветвь<br />
Рис. 2.1.2. Эквивалентные формы обобщенной ветви<br />
20<br />
J<br />
U<br />
i<br />
e<br />
z<br />
V<br />
U<br />
e-z·J<br />
б) контурная форма обобщенной<br />
ветви.
U+z·e/z=z·(i+J),<br />
U= z·[i+(J - e/z)].<br />
Обозначая Jэ= J - e/z, получим:<br />
(2.1.3)<br />
U= z·(i+Jэ). (2.1.3a)<br />
На рис.2.1.2а приведено изображение ветви, соответствующее формулам<br />
(2.1.3) и (2.1.3а). Такую форму обобщенной ветви назовем узловой<br />
формой, так как с ней удобно выполнять расчеты узловыми методами.<br />
Подобным образом можно получить контурную форму обобщенной<br />
ветви, не содержащую узлового источника тока:<br />
U+e=z·i+ z·J.<br />
(2.1.4)<br />
U+(e - z·J) =z·i.<br />
Обозначая eэ= e – z · J, получим:<br />
U+eэ = z·i. (2.1.4а)<br />
На рис.2.1.2б приведено изображение ветви, соответствующее формулам<br />
(2.1.4) и (2.1.4а).<br />
Кроме обобщенной ветви, применяются так называемые примитивные<br />
ветви. Для анализа схем по методу узловых напряжений в качестве<br />
примитивной ветви используется узловая ветвь, для анализа схем по методу<br />
контурных токов используется контурная ветвь (см. Рис. 2.1.3).<br />
a) узловая примитивная<br />
ветвь J = Y·U<br />
Рис. 2.1.3. Примитивные ветви<br />
Следует обратить внимание на то, что в тензорном анализе сетей источники,<br />
как правило, не представляют собой отдельную ветвь. Они<br />
предназначены в первую очередь для представления топологии схемы<br />
— узловых пар и контуров. Поэтому изображение на схеме, например,<br />
идеального источника тока будет означать то, что на данной координате<br />
задан ток узловой пары.<br />
21<br />
б) контурная примитивная<br />
ветвь e = z · i
2.1.1. Разностные схемы замещения линейных емкостей и индуктивностей<br />
Покажем, как при анализе переходных процессов представить описание<br />
емкости и индуктивности в форме обобщенной ветви. Сначала<br />
рассмотрим простейший способ, основанный на использовании формулы<br />
Эйлера 1-го порядка.<br />
2.1.1.1. Метод Эйлера 1-го порядка<br />
Составим разностную модель для емкостной ветви. Дифференциальное<br />
уравнение ветви с линейной емкостью: i=C dU<br />
заменим разност-<br />
ным аналогом. Если непрерывный процесс изменения напряжения и<br />
тока на емкости рассматривать в дискретные моменты времени, отстоящие<br />
друг от друга на одинаковом промежутке ∆t:<br />
t0, t1, t2, …, tn-1, tn, tn+1, … ,<br />
то производную в момент tn приближенно можно представить следующим<br />
образом:<br />
in≈C ΔU<br />
Δt =C U n−U n−1<br />
Δt<br />
dt<br />
(2.1.5)<br />
где Un и Un-1 - напряжение на емкости в моменты tn и tn-1 соответственно.<br />
Полученное соотношение называется разностью «назад», поскольку для<br />
определения производной требуется знать напряжение в предыдущий<br />
момент времени. Можно видоизменить выражение (2.1.5) двумя способами.<br />
В одном случае получим:<br />
в другом:<br />
U n −U n - 1 = Δt<br />
С i n ,<br />
(2.1.6)<br />
U n = Δt<br />
С i С<br />
n Δt U n - 1 . (2.1.7)<br />
В первом случае емкость можно представить резистивной ветвью с<br />
сопротивлением ∆t/С, с последовательно включенным источником<br />
напряжения, величина которого равна напряжению на емкости в предыдущий<br />
момент времени и взятому с обратным знаком e=-Un-1. Такое представление<br />
соответствует контурной форме обобщенной ветви<br />
(рис.2.1.4а). Во втором случае емкость можно представить резистивной<br />
ветвью с таким же сопротивлением ∆t/С, но с параллельно включенным<br />
источником тока Jn=(С/∆t)·Un-1, величина которого равна напряжению на<br />
емкости в предыдущий момент времени, умноженному на С/∆t. То есть,<br />
получаем две эквивалентные ветви:<br />
22
Δt<br />
C -U n-1<br />
a) контурная форма,<br />
формула (2.1.6).<br />
i n<br />
Рис. 2.1.4. Разностные схемы замещения емкости для неявного<br />
метода Эйлера 1-го порядка.<br />
Возможна также замена производной по времени разностью<br />
«вперед»:<br />
in≈C ΔU<br />
Δt =C U n +1−U n<br />
. (2.1.8)<br />
Δt<br />
Расчеты по формулам (2.1.5) и (2.1.8) существенно различаются. Для<br />
расчета по (2.1.5) ток в емкости вычисляется на следующем шаге, а по<br />
(2.1.8) ток в емкости должен быть вычислен на начальном шаге. В обоих<br />
случаях должно быть задано напряжение на емкости в начальный момент<br />
времени. Для формулы (2.1.5) это напряжение обозначено Un-1, для<br />
формулы (2.1.8) это напряжение обозначено Un. По этим известным<br />
напряжениям вычисляются напряжения на емкости на следующем шаге.<br />
Формула (2.1.5) в левой и правой части содержит неизвестные напряжение<br />
Un и ток in, такая формула называется неявной. Формула (2.1.8) только<br />
в одной части уравнения содержит искомое напряжение, которое<br />
обозначено Un+1, такая формула называется явной.<br />
Составим разностную модель индуктивности. Дифференциальное<br />
уравнение ветви с линейной индуктивностью: U =L di<br />
заменим разност-<br />
ным аналогом. Это дифференциальное уравнение выглядит так же, как и<br />
для емкости, если напряжение и ток поменять местами. Поэтому получаем<br />
узловую:<br />
i n −i n -1 = Δt<br />
L U n<br />
и контурную форму разностной схемы замещения индуктивности:<br />
U n L<br />
Δt i L<br />
n- 1 =<br />
Δt in С<br />
Jn<br />
= Un−<br />
1<br />
Δ t<br />
dt<br />
(2.1.9)<br />
(2.1.10)<br />
Этим двум уравнениям соответствуют две эквивалентные разностные<br />
схемы замещения индуктивности, приведенные на рис.2.1.5.<br />
Таким образом, емкостные и индуктивные ветви при расчете переходных<br />
процессов можно заменить резистивными ветвями. Тогда расчет<br />
сведется к расчету на каждом шаге резистивной схемы, где кроме независимых<br />
источников будут действовать источники тока и напряжения,<br />
величина которых должна быть определена на предыдущем шаге. Оче-<br />
23<br />
Δ t<br />
C<br />
б) узловая форма,<br />
формула (2.1.7).
видно, для первого шага должны быть известными начальные значения<br />
напряжения на емкости и тока в индуктивности.<br />
L<br />
Δ t<br />
-i n-1<br />
a) узловая форма,<br />
формула (2.1.9).<br />
i n<br />
Рис. 2.1.5. Разностные схемы замещения индуктивности для<br />
неявного метода Эйлера 1-го порядка.<br />
Приведем теперь алгоритм расчета переходного процесса в схеме, содержащей<br />
последовательно соединенные R, L, C ветви и источник постоянного<br />
напряжения Е с внутренним сопротивлением R1 (рис.2.1.6).<br />
Все перечисленные параметры будем считать известными.<br />
C L R2<br />
Известны также ток в индуктивности и напряжение на емкости в начальный<br />
момент времени. Требуется найти изменение тока в схеме и<br />
напряжение на емкости.<br />
Применим неявный метод Эйлера 1-го порядка - заменим инерционные<br />
ветви L и C их разностными аналогами (Рис. 2.1.7):<br />
R1<br />
E<br />
t<br />
C<br />
Δ<br />
R1<br />
E<br />
Очевидно, ток в схеме на n-м шаге можно вычислить по следующей<br />
формуле:<br />
24<br />
L<br />
t<br />
Δ<br />
L<br />
Δ t<br />
Рис. 2.1.6. Расчетная схема.<br />
-U С(n-1)<br />
e n =(L/Δt)·i n-1<br />
б) контурная форма,<br />
формула (2.1.10).<br />
R2<br />
Рис. 2.1.7. Разностный аналог расчетной схемы.<br />
e<br />
L<br />
Δ t<br />
n = in<br />
− 1
Е−U C n−1 in =<br />
L<br />
Δt i n−1<br />
R1 Δt L<br />
<br />
C Δt R2<br />
(2.1.11)<br />
Напряжение на емкости на n-м шаге определится из рассмотренной<br />
выше разностной схемы замещения емкости:<br />
U = Сn Δt<br />
С i nU Сn−1<br />
(2.1.12)<br />
Приведем теперь алгоритм расчета, используя язык программирования<br />
SciLAB. Для оценки правильности расчета допустим, что все активные<br />
сопротивления равны нулю. В этом случае в схеме должен установиться<br />
незатухающий колебательный процесс с периодом 2⋅π⋅ L⋅C .<br />
Входные переменные: C – величина емкости; L – величина индуктивности; R1<br />
– величина сопротивления источника; R2 – величина сопротивления цепи; E – значение<br />
источника напряжения; dt – расчетный шаг по времени; Tsum – время расчета;<br />
Uc0 – начальное напряжение на емкости; iL0 – начальный ток в индуктивности;<br />
Промежуточные переменные: Nt – размерность выходных массивов; n – номер<br />
текущей расчетной точки. iL — ток в индуктивности, Uc — напряжение емкости.<br />
Выходные переменные: iLg – массив значений тока в индуктивности; Ucg –<br />
массив значений напряжения на емкости, t – массив значений времени.<br />
clear ; //очистка всех данных<br />
C=1.0e-5; L=0.1; R1=0.; R2=0; E=1.; //Ввод параметров<br />
dt=0.000001; Tsum=0.02; //Ввод расчетного шага dt и времени расчета Tsum<br />
//Вычисление числа расчетных точек Nt<br />
Nt=floor(Tsum/dt); //вычисление наибольшего целого от деления<br />
Uc0=0.; iL0=0.; //Задание начальных условий<br />
t(1)=0; Ucg(1)=Uc0; iLg(1)=iL0;<br />
for n=2 : Nt, //Задание цикла по n<br />
// Расчетные формулы<br />
iL=(E-Uc0+L/dt*iL0)/(R1+dt/C+L/dt+R2);<br />
Uc=dt/C*iL+Uc0;<br />
//присвоение новых начальных значений для напряжения и тока<br />
iL0=iL; Uc0=Uc;<br />
//формирование массивов тока и напряжения для вывода на график<br />
iLg(n)=iL; Ucg(n)=Uc; t(n)=t(n-1)+dt;<br />
end // конец цикла по n<br />
plot2d( t, [100*iLg, Ucg]) // построение графиков<br />
Ниже на рис.2.1.8 приведены результаты расчетов при различных<br />
шагах dt. Как видно на рисунке, при шаге 1мкс результаты получаются<br />
достаточно точными, чего нельзя сказать для результатов, полученных<br />
при расчетном шаге 0,1мс.<br />
U, B<br />
100·i, A<br />
2.0<br />
1.5<br />
1.0<br />
0.5<br />
0.0<br />
-0.5<br />
i (dt= 0,1мс)<br />
25<br />
Uc (dt= 0,1мс)<br />
i (dt= 1мкс)<br />
Uc (dt= 1мкс)<br />
-1.0<br />
Рис. 2.1.8. Результаты расчета схемы Рис. 2.1.6 при разных значениях расчетного<br />
0.000 0.002 0.004 0.006 0.008 0.010 0.012 0.014 0.016 0.018 0.020<br />
шага.<br />
t, c
Можно заметить, что увеличение расчетного шага вносит такую погрешность,<br />
как будто в схеме присутствуют дополнительные сопротивления,<br />
вносящие затухание. Эта особенность является характерной для<br />
неявного метода расчета. Ее можно использовать для получения результатов<br />
расчета по постоянному току, внося искусственно заведомо<br />
большой расчетный шаг Δt. Действительно, подставив в (2.1.12) ток из<br />
(2.1.11), получим выражение для расчета напряжения на емкости через<br />
начальный ток и напряжение:<br />
U = Cn<br />
<br />
Е−U Cn - 1 L<br />
Δt i n - 1<br />
R1⋅C<br />
Δt 1L⋅C<br />
R2⋅C<br />
<br />
2<br />
Δt Δt<br />
U C n - 1 (2.1.13)<br />
Из формулы (2.1.13) видно, что при Δt ->∞ напряжение UС(n) -> E. Таким<br />
образом, на первом расчетном шаге сразу вычисляется напряжение на<br />
емкости, соответствующее установившемуся режиму. В нашем случае<br />
это 1В.<br />
Рассмотрим более сложный пример расчета переходных процессов в<br />
3-х контурной схеме с линейными R, L, C компонентами (рис.2.1.9).<br />
Требуется построить графики изменения напряжения на емкости С1 и<br />
тока в индуктивности L1.<br />
Рис. 2.1.9. Расчетная схема.<br />
Для расчета следует подготовить схему и расчетные формулы. Рекомендуется<br />
следующий порядок действий:<br />
1. Обозначить ветви и выбрать направление тока в ветвях.<br />
2. Записать значения параметров схемы и начальных условий:<br />
v1=1; R1=0.05; C1=1e-3; L1=1e-6; L2=2e-6; R2=1e3; v2=0.03;<br />
C2=2e-3;<br />
Uc10=0; Uc20=0; iL10=0; iL20=0;<br />
3. Заменить емкостные и индуктивные ветви разностными схемами<br />
замещения. Ввести схемные обозначения ветвей.<br />
4. Выбрать контуры, обозначить их, выбрать направление обхода. В<br />
результате расчетная схема замещения примет следующий вид:<br />
26
5. Предварительно выбрать расчетный шаг и число расчетных точек:<br />
dt=0.1e-3; N=100;<br />
6. Записать выражения для расчета начальных условий на емкостных<br />
и индуктивных ветвях:<br />
U20=Uc10; U60=Uc20; i30=iL10; i40=iL30;<br />
7. В соответствии с выбранным методом записать выражения для<br />
расчета параметров обобщенных ветвей:<br />
а) неинерционные ветви:<br />
Z1 = R1; e1 = v1;<br />
Z5 = R2; e5 = v2;<br />
б) инерционные ветви для метода Эйлера:<br />
Z2 = dt/C1; e2 = -U20;<br />
Z3 = L1/dt; e3 = i30*Z3;<br />
Z4 = L2/dt; e4 = i40*Z4;<br />
Z6 = dt/C2; e6 = -U60;<br />
8. Составить контурную матрицу сопротивлений:<br />
1k 2k 3k<br />
1k Z1+Z2 -Z2<br />
Zk= 2k -Z2 Z2+Z3+Z4+Z5 -Z5<br />
3k -Z5 Z5+Z6<br />
На главной диагонали записывается сумма сопротивлений, входящих<br />
в контур. В остальных клетках записывается сумма взаимных<br />
сопротивлений между контурами. Если через взаимные сопротивления<br />
контурные токи протекают в противоположных направлениях,<br />
то эти сопротивления записываются со знаком минус.<br />
9. Составить вектор контурных э.д.с:<br />
1k e1-e2<br />
ek= 2k e2-e3-e4-e5<br />
3k e5-e6<br />
10. Записать выражение для расчета контурных токов:<br />
ik = (Zk) -1 *ek;<br />
11.Записать выражения для токов в емкостных и индуктивных ветвях<br />
через контурные токи<br />
i2 = ik2 - ik1; i3 = -ik2; i4 = -ik2; i6 = -ik3;<br />
12.Записать выражения для расчета напряжения на емкостных ветвях:<br />
U2 = Z2*i2 - e2; U6 = Z6*i6 - e6;<br />
27
13. Записать выражения для новых начальных условий:<br />
U20=U2; i30=i3; i40=i4; U60=U6;<br />
Теперь приведем алгоритм расчета и программную реализацию на языке<br />
SciLab.<br />
28
Ввод параметров ветвей и<br />
начальных условий, расчетного<br />
шага и числа расчетных точек<br />
Расчет сопротивлений ветвей<br />
Расчет матриц контурных<br />
сопротивлений и проводимостей<br />
Начало цикла расчета<br />
Расчет контурных э.д.с.<br />
Расчет контурных токов<br />
Расчет напряжений и токов в<br />
ветвях<br />
Расчет новых начальных условий<br />
конец<br />
цикла?<br />
Построение графиков<br />
нет<br />
Входные переменные: C1,С2 – емкости<br />
ветвей;<br />
L1,L2 – индуктивности;<br />
R1,R2 – сопротивления;<br />
v1,v2 – значение источников напряжения;<br />
dt – расчетный шаг по времени; Nt –<br />
число расчетных точек;<br />
Uc10 – начальное напряжение на емкости<br />
С1;<br />
iL10 – начальный ток в индуктивности<br />
L1;<br />
Uc20 – начальное напряжение на емкости<br />
С2;<br />
iL20 – начальный ток в индуктивности<br />
L2;<br />
Промежуточные переменные:<br />
Z1-Z6 - расчетные сопротивления ветвей;<br />
e1-e6 - расчетные э.д.с. ветвей;<br />
Zk — матрица контурных сопротивлений;<br />
Yk - матрица контурных проводимостей;<br />
ek — вектор контурных э.д.с.;<br />
ik — вектор контурных токов;<br />
n – номер текущей расчетной точки.<br />
i2,i3,i4,i6 — токи в ветвях;<br />
U2,U6 — напряжения в ветвях.<br />
m - масштаб для исследования влияния<br />
величины расчетного шага;<br />
Выходные переменные: iL1g – массив<br />
значений тока в индуктивности;<br />
Uc1g – массив значений напряжения на<br />
емкости;<br />
t – массив значений времени.<br />
clear // очистка данных<br />
// Ввод параметров и задание начальных условий<br />
v1=1; R1=0.05; C1=1e-3; L1=1e-6; L2=2e-6; R2=1e3; v2=0.03; C2=2e-3;<br />
Uc10=0; Uc20=0; iL10=0; iL20=0;<br />
//Ввод расчетного шага dt и исла расчетных точек Nt<br />
m=1; // масштаб для исследования влияния величины расчетного шага<br />
dt=0.00001*m; Nt=100/m;<br />
// запись начальных условий<br />
U20=Uc10; U60=Uc20; i30=iL10; i40=iL20;<br />
//Расчет сопротивлений ветвей<br />
Z1 = R1; Z5 = R2;<br />
Z2 = dt/C1; Z3= L1/dt; Z4= L2/dt; Z6 = dt/C2;<br />
//Расчет матриц контурных сопротивлений и проводимостей<br />
Zk=[Z1+Z2, -Z2, 0;<br />
-Z2, Z2+Z3+Z4+Z5, -Z5;<br />
0, -Z5, Z5+Z6];<br />
Yk=Zk^(- 1);<br />
29
независимые источники напряжения<br />
e1 = v1; e5 = v2;<br />
Uc1g(1)=Uc10; iL1g(1)=iL10; t(1)=0; //Объявление выходных массивов<br />
for n=2:Nt, //Задание цикла по n<br />
//расчет контурных э.д.с.<br />
e2 = -U20; e3 = i30*Z3;<br />
e4 = i40*Z4; e6 = -U60;<br />
ek=[e1-e2; e2-e3-e4-e5; e5-e6]; //ввод вектора контурных э.д.с.<br />
//расчет контурных токов<br />
ik=Yk*ek;<br />
//расчет токов во всех инерционных ветвях и напряжений на емкостях<br />
i2 = ik(2) - ik(1); i3 = -ik(2); i4 = -ik(2); i6 = -ik(3);<br />
U2 = Z2*i2 - e2; U6 = Z6*i6 - e6;<br />
//расчет новых начальных условий<br />
U20=U2; U60=U6; i30=i3; i40=i4;<br />
//формирование массивов тока и напряжения для графика<br />
Uc1g(n)=U2; iL1g(n)=i3; t(n)=t(n-1)+dt;<br />
end // конец цикла по n<br />
plot2d (t,[iL1g, 10*Uc1g],leg='i@10*U') // построение графиков<br />
xgrid(2) // задание сетки<br />
2<br />
0<br />
-2<br />
-4<br />
-6<br />
-8<br />
-10<br />
-12<br />
0.0000 0.0001 0.0002 0.0003 0.0004 0.0005 0.0006 0.0007 0.0008 0.0009 0.0010<br />
i<br />
10*U<br />
Графики при увеличении расчетного шага:<br />
в 2 раза<br />
в 3 раза<br />
30 t, c
***<br />
Приведем версию рассмотренного алгоритма расчета одноконтурной<br />
схемы Рис. 2.1.6 на Фортране. В отличие от математического пакета<br />
SciLab, в Фортран-программах необходимо предварительно объявлять<br />
размер, тип массивов и тип некоторых переменных. Кроме того, Фортран<br />
не имеет встроенных средств для отображения графиков. Большие<br />
и маленькие буквы в SciLab — это разные символы. В Фортране за исключением<br />
символьных переменных, нет разницы между большими и<br />
маленькими буквами. В остальном, как можно убедиться далее, реализация<br />
алгоритма на Фортране мало отличается от его реализации в SciLab.<br />
Входные, промежуточные и выходные переменные остаются такими<br />
же. Перечислим отличия. Программа начинается с оператора program с<br />
именем rc и заканчивается оператором end program rc. Добавлен оператор<br />
объявления переменных iL, L, iL0, которые должны иметь вещественный<br />
тип (по умолчанию, в Фортране переменные, которые начинаются<br />
с символов i, j, k, l, m, n относятся к целому типу). Добавлен оператор<br />
объявления динамических массивов t, iLg, Ucg. Конкретный размер<br />
этих массивов становится известным после вычисления числа расчетных<br />
точек Nt, выделение памяти для массивов с этим размером выполняется<br />
в операторе allocate. Формат оператора цикла do в Фортране имеет<br />
несколько другой вид, чем в SciLab. Комментарии начинаются с символа<br />
восклицательный знак !.<br />
Вывод результатов на график организован средствами библиотеки<br />
DISLIN. В данном примере используется подпрограмма быстрого отображения<br />
графика qplot, которая удобна на этапе предварительных расчетов.<br />
Подпрограмма отображает только один график, поэтому обращение<br />
к ней выполняется столько раз, сколько графиков надо отобразить. После<br />
нажатия на правую кнопку мыши окно с графиком исчезает и появляется<br />
окно со вторым графиком. Чтобы окна не исчезали следует после<br />
1-й инициализации библиотеки DISLIN добавить обращение к подпрограмме:<br />
CALL WINMOD('NOERASE'); а перед отображением графика добавить<br />
обращение к подпрограмме открытия нового окна, например: CALL<br />
OPNWIN(3). Здесь цифра 3 означает номер окна. Перед последним графиком<br />
можно не открывать окно, в этом случае график отобразится по<br />
умолчанию в 1-е окно. Нажатие правой кнопки мыши на 1-м окне вызывает<br />
автоматическую загрузку новых окон, а если все окна уже отображены,<br />
то происходит завершение работы с DISLIN.<br />
program rc<br />
real iL, L, iL0<br />
real(4), allocatable :: t(:), iLg(:), Ucg(:) !Объявление динамических массивов<br />
C=1.0e-5; L=0.1; R1=0.; R2=0; E=1. ! Ввод параметров<br />
dt=0.000001; Tsum=0.02; ! Ввод расчетного шага dt и времени расчета Tsum<br />
! Вычиcление числа расчетных точек Nt<br />
Nt=floor (tsum/dt); ! вычисление наибольшего целого от деления<br />
! выделение памяти для массивов времени, тока и напряжения<br />
allocate ( t(Nt), iLg(Nt), Ucg(Nt) )<br />
Uc0=0.; iL0=0.; ! Задание начальных условий<br />
31
Ucg(1)=Uc0; iLg(1)=iL0; t(1)=0.<br />
do n=2, Nt ! Задание цикла по n<br />
! Расчетные формулы<br />
iL=(E-Uc0+L/dt*iL0)/(R1+dt/C+L/dt+R2)<br />
Uc=dt/C*iL+Uc0<br />
! присвоение новых начальных значений для напряжения и тока<br />
iL0=iL; Uc0=Uc;<br />
! формирование массивов тока, напряжения и времени для вывода на график<br />
iLg(n)=100 * iL; Ucg(n)=Uc; t(n)=t(n-1)+dt<br />
end do ! конец цикла по n<br />
! Организация вывода результатов на график<br />
call metafl('XWIN') ; !'XWIN' - вывод в окно, 'WMF' — вывод в графический файл<br />
call disini ; ! инициализация библиотеки DISLIN<br />
call titlin ( '100*iL', 2); ! вывод заголовка<br />
call qplot ( t, iLg, Nt ); ! отображение графика<br />
call disini<br />
call titlin ( 'Uc', 1); ! вывод 2-го заголовка<br />
call qplot ( t, Ucg, Nt ); ! отображение 2-го графика<br />
call disfin ! завершение работы с DISLIN<br />
end program rc ! завершение программы<br />
В результате, после расчета появятся окна с графиками. Сначала появится<br />
окно с графиком тока в индуктивности, затем, после нажатия на<br />
правую кнопку мыши, появится окно с графиком напряжения на емкости.<br />
Вид последнего окна будет следующим:<br />
Вид окна DISLIN с графиком напряжения на емкости для варианта<br />
расчета с шагом 0,1мс.<br />
32
2.1.1.2. Метод трапеций<br />
Дифференциальное уравнение ветви с линейной емкостью заменим<br />
интегральным уравнением:<br />
U t =U t0 1<br />
C ∫ t<br />
i t ⋅dt . (2.1.14)<br />
t0<br />
Если непрерывный процесс изменения напряжения и тока на емкости<br />
рассматривать в дискретные моменты времени, отстоящие друг от друга<br />
на ∆t, то заменяя интеграл формулой трапеций, можно представить выражение<br />
(2.1.14) следующим образом:<br />
U n +1 =U n Δt<br />
C ⋅i n+1i n<br />
, (2.1.15)<br />
2<br />
где Un+1 и Un − напряжение на емкости в моменты tn+1 и tn соответственно.<br />
Полученное соотношение соответствует формуле численного интегрирования<br />
методом трапеций, когда ток и напряжение на интервале ∆t<br />
приближенно можно считать изменяющимися линейно. Емкость в этом<br />
случае можно представить резистивной ветвью с сопротивлением Δt<br />
, с<br />
последовательно включенным источником напряжения, величина которого<br />
равна напряжению на емкости в предыдущий момент времени, взятому<br />
с обратным знаком и параллельно включенным источником тока,<br />
величина которого равна току в емкости на предыдущем шаге. То есть,<br />
получаем следующую эквивалентную ветвь, изображенную на<br />
рис.2.1.10.<br />
Составим разностную модель индуктивности. Дифференциальное<br />
уравнение ветви с линейной индуктивностью: U =L di<br />
заменим инте-<br />
dt<br />
гральным уравнением<br />
i t =i t 0 1<br />
L ∫ t0<br />
i n+<br />
1<br />
Это интегральное уравнение после применения формулы численного<br />
интегрирования методом трапеций будет выглядеть так:<br />
i =i <br />
n + 1 n Δt<br />
L ⋅U n +1U n<br />
2<br />
t<br />
U t ⋅dt<br />
33<br />
in<br />
Δ t<br />
− Un<br />
2C<br />
Рис. 2.1.10. Разностная схема<br />
замещения емкости для<br />
метода трапеций.<br />
2C<br />
. (2.1.16)
Формуле (2.1.16) соответствует разностная схема замещения индуктивности,<br />
приведенная на рис.2.1.11.<br />
Применение метода трапеций требует, чтобы<br />
были заданы ток и напряжение в начальный момент<br />
времени. Как правило, для емкости задается<br />
только начальное напряжение, а для индуктивности<br />
только начальный ток. Чтобы определить<br />
недостающие начальные условия, необходимо<br />
выполнить дополнительный расчет. Этот расчет<br />
можно сделать на основе разностных схем замещения<br />
методом Эйлера 1-го порядка. Расчет делается<br />
только на 1-м шаге, на последующих шагах<br />
необходимость в нем отпадает.<br />
Рассмотрим теперь применение метода трапеций. В этом методе кроме<br />
начальных условий – тока в индуктивности и напряжения на емкости,<br />
требуется знать напряжение на индуктивности и ток в емкости. Их<br />
можно вычислить, если использовать схемы замещения емкости и индуктивности<br />
для метода Эйлера 1-го порядка. Схема замещения для на-<br />
чального шага будет следующей:<br />
Для второго и последующих шагов схема замещения усложнится:<br />
i<br />
i<br />
R1<br />
E<br />
R1<br />
E<br />
t<br />
C<br />
Δ<br />
-UС(0)<br />
C(<br />
n−<br />
1)<br />
− L(<br />
n − 1)<br />
Δ t − U 2 ⋅ L U<br />
C(<br />
n − 1)<br />
L(<br />
n−<br />
1)<br />
2 ⋅ C<br />
Δ t<br />
Очевидно, ток в схеме на 1-м шаге можно вычислить по следующей<br />
формуле:<br />
Е−U C 0 i1 =<br />
L<br />
Δt i L0 <br />
R1 Δt L<br />
R2<br />
C Δt<br />
34<br />
e<br />
L<br />
t<br />
Δ<br />
n<br />
L<br />
= i<br />
Δ t<br />
L(<br />
0)<br />
i n + 1<br />
Рис. 2.1.11. Разностная<br />
схема замещения индуктивности<br />
для метода<br />
трапеций.<br />
R2<br />
R2<br />
2L<br />
Δ t<br />
− in<br />
Un
Ток в емкости, как и ток в индуктивности будут равны найденному<br />
току, iC(1) = i(1) , iL(1) = i(1) .<br />
Напряжение на емкости на 1-м шаге определится из рассмотренной<br />
выше разностной формулы:<br />
U С 1 = Δt<br />
С i1 U С 0<br />
Напряжение на индуктивности можно определить по формуле:<br />
U L1 =<br />
Для второго и последующего шагов надо выполнять расчет по второй<br />
схеме. Ток в схеме:<br />
L<br />
Δt ⋅i L0 i 1 Е −U C n - 1U L n- 1 2⋅L<br />
Δt i Δt<br />
L n- 1 − 2⋅C iC n - 1<br />
i n =<br />
R1 Δt 2⋅L<br />
<br />
2⋅C Δt R2<br />
Напряжение на емкости: U Δt<br />
С n =<br />
2С ⋅i n iC n- 1 U С n- 1<br />
Напряжение на индуктивности: U Ln =E −i n ⋅ R1R2−U C n<br />
Теперь построим алгоритм расчета по полученным соотношениям,<br />
используя язык системы SciLAB. Приведенная ниже программа позволяет<br />
выполнять расчет, как неявным методом Эйлера, так и методом<br />
трапеций.<br />
Входные данные: C – величина емкости; L – величина индуктивности; R1 – величина<br />
сопротивления источника; R2 – величина сопротивления цепи; E – значение<br />
источника напряжения; dt – расчетный шаг по времени; Tsum – время расчета;<br />
Uc0 – начальное напряжение на емкости; iL0 – начальный ток в индуктивности; k –<br />
число, соответствующее методу расчета: k=1 для метода Эйлера или k=2 для метода<br />
трапеций.<br />
Промежуточные данные: Nt – размерность выходных массивов; n – номер текущей<br />
расчетной точки.<br />
Выходные данные: iLg – массив значений тока в индуктивности; Ucg – массив<br />
значений напряжения на емкости, t – массив значений времени.<br />
clear // очистка данных<br />
C=1.0e- 5; L=0.1; R1=0; R2=0; E=1; / / Ввод параметров<br />
// Ввод расчетного шага dt и времени расчета Tsum<br />
dt=0.0001;Tsum=0.02;<br />
// Вычисление числа расчетных точек N<br />
Nt=round(Tsum /dt); // вычисление наименьшего целого от деления<br />
Uc0=0.; iL0=0.; // Задание начальных условий<br />
Ucg(1)=Uc0; iLg(1)=iL0; t(1)=0; // Объявление массивов<br />
k=2; // Ввод метода расчета: k=1 или k=2 для метода трапеций.<br />
for n=2:Nt, // Задаем цикл по n<br />
if ([k= = 1 ] | [ n = = 2 ] ) then // если расчет для 1-го порядка или для 1-го шага,то<br />
// ввод рекуррентных формул для расчета методом Эйлера 1-го порядка<br />
iL=(E- Uc0+L/dt * iL0) / (R1 +dt /C +L / d t +R2);<br />
Uc=dt /C*iL + Uc0;<br />
35
uL=(iL+iL0) *L / d t;<br />
else // иначе расчет для метода трапеций<br />
// Ввод рекуррентных формул для расчета методом трапеций<br />
iL=(E- Uc0+uL0+2 *L / d t * iL0- dt/(2 *C) *ic0) / (R1 +dt / ( 2 *C) + 2 * L / d t + R2);<br />
Uc=dt / (2 *C) * (iL +ic0) + Uc0;<br />
uL=E- iL*R1- iL*R2- Uc;<br />
end;<br />
// присвоение новых начальных значений для напряжения и тока<br />
Uc0=Uc; ic0=iL; iL0=iL; uL0=uL;<br />
// формирование массивов тока и напряжения для графика<br />
Ucg(n)=Uc; iLg(n)=iL; t(n)= t(n- 1)+dt;<br />
end // конец цикла по n<br />
plot2d(t,[100 *iLg, Ucg]) // построение графиков<br />
При запуске программы для метода Эйлера 1-го порядка и для метода<br />
трапеций получаем результаты при одном и том же расчетном шаге<br />
∆t=0,1мс:<br />
U, B<br />
100·i, A<br />
2.0<br />
1.5<br />
1.0<br />
0.5<br />
0.0<br />
-0.5<br />
-1.0<br />
0.000 0.002 0.004 0.006 0.008 0.010 0.012 0.014 0.016 0.018 0.020<br />
Рис. 2.1.12. Результаты расчета схемы Рис. 2.1.9 методом Эйлера первого<br />
порядка и методом трапеций при шаге 0,1мс:<br />
1,3 – напряжение и ток по методу трапеций<br />
2,4 – напряжение и ток по методу Эйлера.<br />
Как видно на рис.2.1.12, при одном и том же шаге метод трапеций дает<br />
более точный результат.<br />
Рассмотрим применение метода трапеций для расчета 3-х контурной<br />
схемы Рис. 2.1.9. Составим алгоритм для расчета как методом трапеций<br />
так и методом Эйлера 1-го порядка. Подготовительные этапы практически<br />
те же, что и рассмотрены ранее:<br />
1. Записать значения параметров схемы и начальных условий:<br />
v1=1; R1=1; C1=1e-6; L1=1e-3; L2=2e-3; R2=5; v2=3; C2=2e-6;<br />
Uc10=0; Uc20=0; iL10=0; iL20=0;<br />
36<br />
3<br />
1<br />
4<br />
2
2. Заменить емкостные и индуктивные ветви разностными схемами<br />
замещения. Ввести схемные обозначения ветвей.<br />
3. Выбрать контуры, обозначить их, выбрать направление обхода. В<br />
результате расчетная схема замещения примет следующий вид:<br />
4. Предварительно выбрать расчетный шаг и число расчетных точек:<br />
dt=0.1e-3; N=100;<br />
5. Записать выражения для расчета начальных условий на емкостных<br />
и индуктивных ветвях:<br />
U20=Uc10; U60=Uc20; i30=iL10; i40=iL30;<br />
6. В соответствии с выбранным методом записать выражения для<br />
расчета параметров обобщенных ветвей:<br />
а) неинерционные ветви:<br />
Z1 = R1; e1 = v1;<br />
Z5 = R2; e5 = v2;<br />
б) инерционные ветви для метода Эйлера:<br />
Z2 = dt/C1; e2 = -U20;<br />
Z3 = L1/dt; e3 = i30*Z3;<br />
Z4 = L2/dt; e4 = i40*Z4;<br />
Z6 = dt/C2; e6 = -U60;<br />
в) инерционные ветви для метода трапеций:<br />
Z2 = dt/(2*C1); e2 = -U20 - i20*Z2;<br />
Z3 = 2*L1/dt; e3 = U30 + i30*Z3;<br />
Z4 = 2*L2/dt; e4 = U40 + i40*Z4;<br />
Z6 = dt/(2*C2); e6 = -U60 - i60*Z6;<br />
7. Составить контурную матрицу сопротивлений:<br />
1k 2k 3k<br />
1k Z1+Z2 -Z2<br />
Zk= 2k -Z2 Z2+Z3+Z4+Z5 -Z5<br />
3k -Z5 Z5+Z6<br />
8. Составить вектор контурных э.д.с:<br />
37
1k e1-e2<br />
ek= 2k e2-e3-e4-e5<br />
3k e5-e6<br />
9. Записать выражение для расчета контурных токов:<br />
ik = (Zk) -1 *ek;<br />
10.Записать выражения для токов в емкостных и индуктивных ветвях<br />
через контурные токи<br />
i2 = ik2 - ik1; i3 = -ik2; i4 = -ik2; i6 = -ik3;<br />
11.Записать выражения для расчета напряжения на емкостных и индуктивных<br />
ветвях:<br />
U2 = Z2*i2 - e2; U3 = Z3*i3 - e3; U4 = Z4*i4 - e4; U6 = Z6*i6 - e6;<br />
12. Записать выражения для новых начальных условий:<br />
i20=i2;U20=U2;i30=i3;U30=U3;i40=i4;U40=U4;i60=i6;U60=U6;<br />
Далее следует составить алгоритм, в котором установить порядок расчета<br />
по приведенным формулам.<br />
clear // очистка данных<br />
// Ввод параметров и задание начальных условий<br />
v1=1; R1=0.05; C1=1e-3; L1=1e-6; L2=2e-6; R2=1e3; v2=0.03; C2=2e-3;<br />
Uc10=0; Uc20=0; iL10=0; iL20=0;<br />
m=1; // масштаб для исследования влияния величины расчетного шага<br />
dt=0.00001*m; Nt=100/m;<br />
k=2; // Ввод метода расчета: k=1 или k=2 для метода трапеций.<br />
// ввод начальных условий<br />
U20=Uc10; U60=Uc20; i30=iL10; i40=iL20;<br />
//расчет сопротивлений и проводимостей<br />
Z1 = R1; Z5 = R2;<br />
Z2_1 = dt/C1; Z3_1= L1/dt; Z4_1= L2/dt; Z6_1 = dt/C2;<br />
Z2_2 = dt/(2*C1); Z3_2 = 2*L1/dt; Z4_2 = 2*L2/dt; Z6_2 = dt/(2*C2);<br />
// для расчета проводимостей для обоих методов составляется функция<br />
function Y=Yk(Z1,Z2,Z3,Z4,Z5,Z6)<br />
Z=[Z1+Z2, -Z2, 0;<br />
-Z2, Z2+Z3+Z4+Z5, -Z5;<br />
0, -Z5, Z5+Z6];<br />
Y=Z^(- 1);<br />
endfunction ;<br />
// вычисление контурных проводимостей<br />
Yk_1=Yk(Z1, Z2_1, Z3_1, Z4_1, Z5, Z6_1);<br />
Yk_2=Yk(Z1, Z2_2, Z3_2, Z4_2, Z5, Z6_2);<br />
e1 = v1; e5 = v2;<br />
Uc1g(1)=Uc10; iL1g(1)=iL20; t(1)=0; // Объявление массивов для графиков<br />
for n=2:Nt, // Задаем цикл по n<br />
if ([k==1]|[n==2]) then // если расчет для 1-го порядка или для 1-го шага,то<br />
// расчет э.д.с. и контурных токов для метода Эйлера 1-го порядка<br />
e2 = -U20; e3 = i30*Z3_1;<br />
e4 = i40*Z4_1; e6 = -U60;<br />
ek=[e1-e2; e2-e3-e4-e5; e5-e6];<br />
ik=Yk_1*ek;<br />
38
else //расчет э.д.с. и контурных токов для метода трапеций<br />
e2 = -U20-i20*Z2_2; e3=U30+i30*Z3_2;<br />
e4 = U40+i40*Z4_2; e6=-U60-i60*Z6_2;<br />
ek=[e1-e2;e2-e3-e4-e5;e5-e6];<br />
ik=Yk_2*ek;<br />
end;<br />
// расчет токов в ветвях инерционных компонент<br />
i2 = ik(2) - ik(1); i3 = -ik(2); i4 = -ik(2); i6 = -ik(3);<br />
// расчет напряжений в ветвях инерционных компонент<br />
if ([k==1]|[n==2]) then // если расчет для 1-го порядка или для 1-го шага,то<br />
U2 = Z2_1*i2 - e2; U3 = Z3_1*i3 - e3; U4 = Z4_1*i4 - e4; U6 = Z6_1*i6 - e6;<br />
else<br />
U2 = Z2_2*i2 - e2; U3 = Z3_2*i3 - e3; U4 = Z4_2*i4 - e4; U6 = Z6_2*i6 - e6;<br />
end;<br />
// расчет начальных условий для следующего шага<br />
i20=i2; U20=U2; i30=i3; U30=U3; i40=i4; U40=U4; i60=i6; U60=U6;<br />
// формирование массивов тока и напряжения для графика<br />
Uc1g(n)=U2; iL1g(n)=i3; t(n)= t(n- 1)+dt;<br />
end //конец цикла по n<br />
plot2d(t,[iL1g, 10*Uc1g], leg='i@10*U') // построение графиков<br />
xgrid(2) // построение сетки<br />
39
2.1.1.3. Формула дифференцирования «назад».<br />
Рассмотрим применение формулы дифференцирования «назад» к-го<br />
порядка и покажем, что она также может быть согласована с уравнением<br />
обобщенной ветви.<br />
Согласно общей формуле дифференцирования «назад», производные<br />
токов и напряжений в текущий (n+1)-й момент времени в компонентных<br />
уравнениях представляются через рассчитанные токи и напряжения в<br />
предыдущие моменты времени согласно уравнению, соответствующему<br />
неявной форме:<br />
dx n +1<br />
dt<br />
1<br />
=−<br />
Δt ⋅∑<br />
k<br />
a j⋅x n +1 - j (2.1.17)<br />
j= 0<br />
где х - ток, либо напряжение инерционной ветви, Δt - временной шаг интегрирования,<br />
к - порядок метода, аj (j=0÷к) - постоянные коэффициенты,<br />
зависящие от порядка метода и рассчитываемые для j≥1 по формуле:<br />
аj=k∙(1-k)∙(2-k)...(j-1-k)/(k!∙j). (2.1.18)<br />
Коэффициент а0 определяется при этом по формуле: a 0 =−∑ j =1<br />
Уравнение (2.1.17) определяет соответствующие выражения для расчетов<br />
источников тока, напряжения, а также сопротивления Z в уравнении<br />
обобщенной ветви (2.1.2). Получим эти выражения.<br />
Ток линейной емкости С в момент времени tn+1 :<br />
in+1=C∙(dUn+1/dt). (2.1.19)<br />
Подставляя в (2.1.19) выражение производной (2.1.17), получим:<br />
Вынося за знак суммы 1-е слагаемое:<br />
in + 1 =− C<br />
Δt ⋅∑<br />
k<br />
a j⋅U n +1- j<br />
j = 0<br />
k<br />
a j .<br />
in +1 =− C⋅a 0<br />
Δt ⋅U C<br />
n+ 1− Δt ⋅∑<br />
k<br />
a j⋅U n +1 - j (2.1.20)<br />
j =1<br />
Решая уравнение (2.1.20) относительно напряжения получаем:<br />
U n +1 1<br />
k<br />
⋅∑ a j⋅U n +1- j =−<br />
a0 j =1<br />
Δt<br />
⋅i n+1 (2.1.21)<br />
C⋅a 0<br />
Теперь, если ввести обозначения:<br />
- напряжение и ток в емкости в текущий (n+1)-й момент времени:<br />
U = Un+1; i=in+1<br />
- источник напряжения на емкости, определяемый через значения<br />
напряжения, вычисленные на предыдущих шагах:<br />
e =<br />
- алгебраизированное сопротивление емкости:<br />
1<br />
k<br />
⋅∑ a j⋅U n +1 - j<br />
a0 j =1<br />
40
Z=-Δt/(a0∙C);<br />
- источник тока J=0,<br />
получим описание емкости в форме обобщенной ветви:<br />
U + e = Z∙(i + J).<br />
Поступая аналогичным образом, можно получить выражения для расчета<br />
параметров элементарной ветви линейной индуктивности:<br />
- напряжение и ток в индуктивности в текущий (n+1)-й момент времени:<br />
U = Un+1; i=in+1<br />
- источник тока индуктивности, определяемый через значения токов,<br />
вычисленных на предыдущих шагах:<br />
J = 1<br />
k<br />
⋅∑ a j⋅i n +1 - j<br />
a0 j = 1<br />
- алгебраизированное представление индуктивности:<br />
Z=-(a0∙L)/Δt<br />
- источник напряжения е=0.<br />
Алгоритм расчета с формулой дифференцирования «назад» к-го порядка<br />
должен предусматривать постепенный переход к формулам более<br />
высокого порядка. То есть расчет начинается с формулы 1-го порядка.<br />
Через m шагов (m≥1) порядок может быть увеличен. Для к-го порядка<br />
должно быть известно к предыдущих значений переменной.<br />
Следует заметить, что на практике большое распространение получил<br />
метод дифференцирования назад второго порядка, который имеет название<br />
метод Гира. Для этого метода α0=-1,5, α1=2 и α2=-0,5. Применение формулы<br />
дифференцирования "назад" рассмотрено в разделе расчета схем с<br />
нелинейными емкостями.<br />
41
2.1.2. Разностно-итерационные схемы замещения нелинейных ветвей<br />
2.1.2.1. Итерационные схемы замещения сопротивления.<br />
Если нелинейное сопротивление описывается функциональной зависимостью<br />
U=f(i), то нелинейный резистор при численных расчетах можно<br />
представить приближенно как линейное сопротивление, равное динамическому<br />
сопротивлению Rd0=∂U/∂i при токе i=i0. Тогда схему можно<br />
рассчитать как чисто резистивную и найти ток i1 в сопротивлении Rd0.<br />
Далее надо сравнить найденный ток i1 с начальным током i0. Если разница<br />
окажется слишком большой, то расчет следует повторить, но уже с<br />
новым начальным током i1 и с новым сопротивлением Rd1=∂U/∂i при этом<br />
токе. Затем произвести сравнение найденного тока i2 с предыдущим током<br />
i1. Если сравнение окажется неудовлетворительным, то расчет опять<br />
повторяется. Можно показать, что при монотонной зависимости U=f(i)<br />
процесс достаточно быстро сойдется к устойчивому решению.<br />
При численных расчетах вольт-амперная характеристика динамического<br />
сопротивления Rd0 описывается выражением:<br />
U − U0 = Rd0 ∙ (i − i0),<br />
где i0 – начальное приближение тока в нелинейном сопротивлении,<br />
напряжение U0=f(i0) – определяется по нелинейной ВАХ сопротивления,<br />
сопротивление Rd0=∂U/∂i при i=i0.<br />
Так как процесс является итерационным, то линеаризованное уравнение<br />
сопротивления записывается в следующем виде:<br />
Uк − Uк-1 = Rdк-1 ∙ (iк − iк-1), (2.1.22)<br />
где индекс к – указывает номер текущей итерации, индекс к-1 – указывает<br />
на значения, полученные на предыдущей итерации.<br />
Рассмотренный метод расчета соответствует методу Ньютона. Уравнение<br />
(2.1.22) можно представить схемой обобщенной ветви, если принять<br />
значение источника напряжения e=-Uk-1, значение источника тока<br />
J=-ik-1, сопротивление z=Rdk-1, искомое напряжение U=Uk и искомый ток<br />
i=ik.<br />
iк<br />
Rdк<br />
− 1<br />
Uк<br />
Рис. 2.1.13. Обобщенная ветвь, «настроенная» на метод Ньютона для<br />
нелинейного сопротивления.<br />
Кроме метода Ньютона применяют метод простых итераций, отличие<br />
которого состоит в том, что вместо динамического сопротивления ис-<br />
42<br />
− iк<br />
− 1<br />
− к −1<br />
U
пользуется статическое сопротивление Rc=U/i0 = f(i0)/i0, при токе i=i0. То<br />
есть при начальном токе вычисляется статическое сопротивление. Далее<br />
выполняется расчет схемы, в результате определяется новый ток. Вычисляется<br />
новое статическое сопротивление при найденном токе и т.д.<br />
Обобщенная ветвь, настроенная на метод простых итераций, не содержит<br />
источников. Уравнение ветви:<br />
Uк = Rск-1 ∙ iк . (2.1.23)<br />
Кроме аналитического задания вольтамперной характеристики, используют<br />
кусочно-линейную форму этой характеристики. В этом случае<br />
нелинейная резистивная ветвь заменяется итерационной схемой замещения<br />
как на рис.2.1.13. Итерации заканчиваются тогда, когда новое значение<br />
тока оказывается принадлежащим предыдущему кусочно-линейному<br />
участку вольтамперной характеристики.<br />
Рассмотрим теперь построение алгоритма расчета нелинейной схемы<br />
с последовательным соединением линейной и нелинейной части рис.<br />
2.1.14а.<br />
R<br />
Е<br />
U<br />
u= f (i)<br />
Рис. 2.1.14. Пример схемы с нелинейным сопротивлением.<br />
Линейная часть схемы представлена эквивалентным двухполюсником<br />
с последовательным соединением источника Е и сопротивления R.<br />
Нелинейная часть состоит из сопротивления, падение напряжение на котором<br />
зависит от протекаемого тока. Зависимость задана в виде функции<br />
f(i).<br />
Для определенности положим R=1 Ом, функция f(i) является квадратичной,<br />
т.е. u=i 2 . Требуется найти ток и напряжение на нелинейном сопротивлении<br />
при различных значениях напряжения источника питания<br />
в пределах от 0 до 24 В. Точность расчета задается числом ε.<br />
Применим итерационный метод Ньютона. Для этого заменим исходную<br />
схему на расчетную, где нелинейность заменена итерационной схемой<br />
замещения (рис.2.1.14.б). При расчете схемы, на каждой итерации<br />
находится ток в схеме с динамическим сопротивлением (см. рис.<br />
2.1.14.б):<br />
R<br />
Е<br />
U<br />
Rd o<br />
− u o<br />
а) исходная схема б) итерационная схема<br />
замещения<br />
43<br />
− i o
i= E−u o Rd⋅i o<br />
RRd<br />
Динамическое сопротивление зависит от тока и эту зависимость можно<br />
определить в данном случае аналитически: Rd=∂u/∂i=2·i.<br />
Ниже приведен алгоритм расчета на языке SciLab. В алгоритме начальный<br />
ток обозначен i0, найденный ток обозначен i, относительная<br />
разница между найденным током и начальным током сравнивается с<br />
числом ε по формуле ∣ i−i0<br />
i ∣ ≤ε . Результаты расчета – ток и напряжение,<br />
выводятся на график в виде точек, соединенных прямыми линиями. Для<br />
наглядности на график выводится обратная вольтамперная характеристика<br />
линейной части схемы, которая выражается формулой U=E-R·i.<br />
Входные данные: R – величина сопротивления источника; Е0 – начальное значение<br />
источника напряжения; dE – приращение для значений источника напряжения;<br />
Е0 – конечное значение источника напряжения; x– массив значений тока для<br />
построения обратной ВАХ; eps – точность расчета; N – максимальное число итераций;<br />
i0 – начальное значение тока в нелинейном сопротивлении.<br />
Промежуточные данные: E – массив значений источника напряжения; М – число<br />
значений источника напряжений; m - текущая расчетная точка; n – номер итерации.<br />
Выходные данные: ig – массив значений тока в нелинейном сопротивлении ; Ug<br />
– массив значений напряжения на нелинейном сопротивлении.<br />
clear ; //очистка всех данных<br />
R=1.; // ввод линейного сопротивления<br />
Е0=0; dE=4; Ek=24; E=[Е0: dE:Ek]; //ввод диапазона изменения питания<br />
M= round (Ek/ dE); //определение числа точек значений питания<br />
x=[0 1 2 3 4 5 6 8 9]; //массив для построения обратной ВАХ<br />
eps=0.0000000001; //задание точности<br />
N=500; //максимальное число итераций<br />
i0=0; //начальное значение тока<br />
for m=1: M // цикл по напряжению питания<br />
u0= i0**2; //расчет напряжения на нелинейном сопротивлении<br />
Rd=2* i0; // расчет динамического сопротивления<br />
for n=1: N, //цикл по итерациям<br />
i=(E(m)- u0+Rd*i0) / (R +Rd); // расчет тока<br />
if i==0. then i=0.00000001; end; // предотвращение деления на ноль<br />
if abs((i- i0)/i)
16<br />
U,B<br />
14<br />
12<br />
10<br />
Рис. 2.1.15. Результат расчета схемы с нелинейным сопротивлением.<br />
Точками обозначены найденные токи и напряжения.<br />
2.1.2.2. Разностно-итерационная схема замещения емкости.<br />
Ток в емкости описывается выражением:<br />
ic = dQ/dt,<br />
где Q − заряд на емкости.<br />
Заряд на емкости при численных расчетах можно представить через<br />
статическую емкость, зависящую от напряжения:<br />
Q=C(Uc) ∙ Uc.<br />
При численных расчетах производную некоторой функции можно<br />
представить приближенно по методу Гира как сумму этих функций, вычисленных<br />
в предыдущие моменты времени. По формуле Гира 2-го порядка<br />
для производной заряда в текущий, (n+1)-й момент времени:<br />
dQ<br />
dt ∣ ≈−<br />
t =t<br />
n +1<br />
1<br />
Δt ⋅ α0⋅Q n + 1α1⋅Q nα2⋅Q n- 1 . ,<br />
где ∆t − расчетный шаг; Qn+1 – значение заряда при t=tn+1, Qn – значение<br />
заряда при t=tn, Qn-1 – значение заряда при t=tn−1. Коэффициенты α0=−1.5,<br />
α1=2, α2=−0.5.<br />
Подставляя формулу Гира в выражение для тока в емкости, получим:<br />
in1 =− C n1U n1 ⋅α 0<br />
⋅U n1− Δt<br />
или после преобразования:<br />
8<br />
6<br />
4<br />
2<br />
0<br />
0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0<br />
C nU n⋅α 1<br />
⋅U n Δt<br />
Cn−1U n−1 ⋅α 2<br />
⋅U<br />
Δt<br />
n−1 .<br />
U n1 C n U n⋅α 1<br />
⋅U n C n1 U n1⋅α 0<br />
C n−1 U n−1 ⋅α 2<br />
Δt<br />
⋅U n−1 =−<br />
⋅i n1<br />
C n1 U n1 ⋅α 0 C n1 U n1 ⋅α 0 (2.1.24)<br />
,<br />
где Cn(Un) − статическая емкость, зависящая от напряжения на ней; Un −<br />
напряжение на емкости на n-ом шаге.<br />
Формуле (2.1.24) можно поставить в соответствие обобщенную ветвь,<br />
приведенную ниже на рисунке:<br />
45<br />
i,A
i n+ 1<br />
Zc(U n+1 )<br />
U n+1<br />
На приведенной схеме замещения:<br />
Схема замещения нелинейной емкости<br />
э.д.с. ветви ec = C nU n ⋅α 1<br />
⋅U n C n1U n1 ⋅α 0<br />
C n−1U n−1 ⋅α 2<br />
⋅U n−1 ,<br />
C n1U n1 ⋅α 0<br />
сопротивление ветви Z cU Δt<br />
n1 =−<br />
⋅i n1 C n1U n1 ⋅α .<br />
0<br />
В формуле (2.1.24), на текущем, (n+1)-ом шаге значение емкости<br />
Cn+1(Un+1) не известно, поэтому для его определения требуются простые<br />
итерации. Сначала задается то значение емкости, которое было определено<br />
на предыдущем временном шаге. Затем рассчитывают схему, находят<br />
напряжение на емкости и по статической характеристике определяют<br />
новое значение емкости. То есть напряжение на j−й итерации определяется<br />
при емкости, определенной на предыдущей, (j−1)−й итерации:<br />
j Δt<br />
U n1 =− j−1<br />
α0⋅C n1<br />
⋅i n1− C n⋅α 1<br />
⋅U j−1 n− C n1⋅α0<br />
C n−1⋅α 2<br />
⋅U j−1 n−1 ,<br />
C n1⋅α0<br />
по найденному напряжению уточняется значение емкости:<br />
j j<br />
C n1 = C U n1 <br />
Расчет повторяется до тех пор, пока новое значение емкости на j−й<br />
итерации не станет отличаться от емкости на предыдущей (j−1)−й<br />
итерации на требуемое значение. Требуемое значение должно быть таким,<br />
чтобы относительная точность расчета не была больше заданной<br />
∣ точности ε. То есть должно соблюдаться условие: C j j−1<br />
n1−C<br />
∣ n1<br />
j<br />
C n1<br />
≤ε .<br />
Расчет схемы организуется по внешнему и внутреннему циклу. Во<br />
внешнем цикле задается изменение времени, во внутреннем цикле<br />
производятся итерационные уточнения нелинейных параметров. Для<br />
выхода на метод 2-го порядка требуется по крайней мере одна точка,<br />
рассчитанная методом первого порядка. Для метода первого порядка<br />
α0=−1, α1=1. Уравнение напряжений емкостной ветви в этом случае:<br />
U n1 C n U n⋅α 1<br />
Δt<br />
⋅U n =−<br />
⋅i n1 (2.1.25)<br />
C n1 U n1⋅α 0 C n1 U n1 ⋅α 0<br />
Расчет по (2.1.25) также требует итераций. Схема замещения аналогична<br />
рассмотренной выше. Формулы (2.1.24) и (2.1.25), полученные в<br />
результате разностной аппроксимации производной по времени и итера-<br />
46<br />
e c
ционных уточнений емкости, называются разностно-итерационными<br />
формулами.<br />
Приведем пример расчета схемы с нелинейной емкостью. Пусть задана<br />
схема с нелинейной емкостью рис.2.1.16.<br />
Статическая емкость зависит от напряжения на ней закону, заданному<br />
таблицей:<br />
Uc, B -3 0 3 6 10 15 25<br />
C, Ф 0.7e-3 0.6e-3 0.51e-3 0.46e-3 0.41e-3 0.385e-3 0.37e-3<br />
Вольтамперную характеристику диода представим кусочно-линейной<br />
аппроксимацией, состоящей их двух линейных участков, описываемых<br />
логическим выражением: если id
Промежуточные данные: в программе схема рассчитывается методом контурных<br />
токов, матрица контурных сопротивлений обозначена z, вектор контурных<br />
напряжений ek, вектор контурных токов ik. Итерационные приближения тока в<br />
диоде обозначены id и id0. Условия сходимости для тока в диоде считаются<br />
выполненными, если оба этих приближения находятся в одном квадранте (т.е.<br />
одного знака).<br />
Соответствие обозначений, принятых в программе с обозначениями в формулах следующее:<br />
Cn-1 =C_1, Cn=C_0, C j n+1=Cj, C j-1 n+1 =Cj_1,<br />
Un-1=U_1, Un=U_0, Un+1=uc.<br />
Выходные данные: ucg(m) – массив значений напряжения на емкости; ig(m) – массив<br />
значений тока в диоде.<br />
clear; // очистка памяти<br />
R1=12.;R2=68.; // ввод линейных сопротивлений<br />
dt=0.0001;T=0.1;t=[0:dt:T]; //ввод диапазона времени<br />
M=round(T/dt); //определение числа расчетных точек по времени<br />
eps=0.02; //задание точности<br />
N=1500; //максимальное число итераций<br />
a0=-1; a1=1; //коэффициенты для формулы 1-го порядка<br />
m_gir=2; //число точек до выхода на метод Гира<br />
//ввод табличной зависимости статической емкости<br />
xc=[-3 0 3 6 10 15 25 ];<br />
yc=[ 0.7e-3 0.6e-3 0.51e-3 0.46e-3 0.41e-3 0.385e-3 0.37e-3];<br />
dc=splin(xc,yc); // построение сплайна для статической емкости<br />
xx=[-3:3:27]; yy=interp(xx,xc,yc,dc); //отображение сплайна в массив yy<br />
xset('window',1); //задается 1-е окно для графика нелинейной емкости<br />
plot2d(xx,yy,2,rect=[-3 0 25 0.7e-3]);xgrid(1)<br />
id0=0; uc_0=0; //начальное значение тока диода и напряжения емкости<br />
C_0=interp(uc_0,xc,yc,dc); //начальная емкость<br />
ec=-uc_0 //эдс разностно-итерационной схемы емкости<br />
for m=1:M // внешний цикл по времени<br />
E(m)=21*cos(2*%pi*50*t(m)); //источник питания схемы<br />
if id0>=0. then Rd=0.001; else Rd=1000; end; / /начальное сопротивление диода<br />
Cj_1=C_0; //начальное итерационное приближение емкости<br />
if m>m_gir then //условие перехода на метод Гира<br />
a0=-1.5; a1=2; a2=-0.5; //коэффициенты α в методе Гира<br />
end;<br />
for n=1:N, //внутренний итерационный цикл<br />
ek1=E(m)+ec; ek2=E(m); ek=[ek1;ek2];<br />
z=[R1+Rd+dt/(a0*Cj_1) R1+Rd; // Расчет схемы<br />
R1+Rd R1+R2+Rd ];<br />
ik=z^(-1)*ek; id=ik(1)+ik(2); // новый ток диода<br />
if m> m_ gir then //переход на метод Гира<br />
ec=(a1*uc_0*C_0/Cj_1+a2*uc_1*C_1/Cj_1)/a0;<br />
else ec=a1*uc_0*C_0/Cj_1; end; // метод 1-го порядка<br />
uc=-dt/(a0*Cj_1)*ik(1)-ec; //расчет напряжения на емкости<br />
Cj=interp(uc,xc,yc,dc); //расчет емкости<br />
//проверка точности итераций для емкости и диода<br />
48
if abs((Cj-Cj_1)/Cj)0.&id>0)|(id0
2.1.2.3. Разностно-итерационная схема замещения индуктивности.<br />
Рассмотрим теперь «настройку» на обобщенную ветвь разностноитерационной<br />
формулы для индуктивности.<br />
Напряжение на индуктивности описывается выражением:<br />
uL = dΨ/dt,<br />
где Ψ − потокосцепление катушки индуктивности. Потокосцепление катушки<br />
индуктивности можно выразить через статическую индуктивность,<br />
зависящую от тока:<br />
Ψ=L( iL ) ∙ iL.<br />
При численных расчетах производную некоторой функции от времени<br />
можно заменить интегральным выражением, то есть для потокосцепления<br />
можно записать:<br />
t<br />
n + 1<br />
u L⋅dt ,<br />
Ψ t n+ 1 = Ψ t n ∫ t n<br />
где Ψ(tn+1) − потокосцепление в текущий, (n+1)-й момент времени, Ψ(tn) −<br />
потокосцепление в предыдущий, n-й момент времени. Интеграл приближенно<br />
можно вычислить по формуле трапеций, тогда формула для потокосцепления<br />
будет выглядеть так:<br />
u Ln<br />
Ψ t n+ 1 = Ψ t n Δt⋅ uL n+1<br />
2<br />
Из этой формулы получаем выражение для модели индуктивности на текущем<br />
(n+1)-м шаге по времени:<br />
u u Ln1 Ln = 2<br />
Δt ⋅[Ψ t n1−Ψ t n]= 2<br />
Δt ⋅ Ln1⋅i Ln1−L n⋅i Ln .<br />
Или, что то же самое:<br />
u Ln1u Ln 2⋅L n<br />
Δt ⋅i L =<br />
n 2⋅Ln1 Δt ⋅i L , (2.1.26)<br />
n1<br />
где ∆t − расчетный шаг; Ln+1 – значение индуктивности при t=tn+1, Ln –<br />
значение индуктивности при t=tn.<br />
Формуле (2.1.26) можно поставить в соответствие обобщенную ветвь,<br />
приведенную ниже на рисунке:<br />
i n+1<br />
Z L (i n+1 )<br />
U n+1<br />
Схема замещения нелинейной индуктивности<br />
На приведенной схеме замещения:<br />
50<br />
e L
э.д.с. ветви e L =u Ln 2⋅L n<br />
Δt ¿i L n<br />
сопротивление ветви Z L = 2⋅L n1<br />
Δt ⋅i L n1<br />
Как видно из формулы (2.1.26), на текущем, (n+1)−м расчетном шаге индуктивность<br />
Ln+1(in+1) не известна. Ее находят итерационным способом,<br />
задаваясь для начала тем значением, которое было определено на предыдущем<br />
временном шаге. Затем рассчитывают схему, находят ток в<br />
индуктивности и по статической характеристике определяют новое зна-<br />
j j<br />
чение индуктивности Ln +1 = Lin + 1<br />
. Расчет повторяется до тех пор, пока<br />
j<br />
новое значение индуктивности на j−й итерации Ln +1 не станет отличать-<br />
j- 1<br />
ся от индуктивности на предыдущей (j−1)−й итерации Ln +1 на требуемое<br />
значение. Требуемое значение должно быть таким, чтобы относительная<br />
точность расчета не была больше заданной точности ε. То есть<br />
∣ должно соблюдаться условие: L j j -1<br />
n + 1-<br />
L<br />
∣ n +1<br />
j<br />
Ln +1<br />
≤ε .<br />
Для расчета методом трапеций требуется знание не только начального<br />
тока в индуктивности, но и начального напряжения на ней. Это<br />
напряжение можно рассчитать другим методом, например неявным методом<br />
Эйлера. То есть надо как минимум первый шаг по времени выполнить<br />
расчет методом Эйлера, а затем перейти на метод трапеций.<br />
Уравнение напряжений нелинейной индуктивной ветви для неявного<br />
метода Эйлера:<br />
u Ln 1 = L n + 1<br />
Δt ⋅i L n1 − L n<br />
Δt ⋅i L n<br />
, (2.1.27)<br />
где Ln+1 зависит от напряжения ULn+1 и уточняется в итерационном цикле.<br />
Схема замещения такая же, как и для метода трапеций, но с другим «составом»<br />
сопротивления и источника напряжения.<br />
Приведем пример расчета. Пусть задана схема с нелинейной индуктивностью<br />
рис.2.1.17а.<br />
Рис. 2.1.17. Пример схемы с<br />
нелинейной индуктивностью.<br />
Статическая индуктивность пусть задана аналитической зависимо-<br />
стью от тока: L i = 1<br />
b⋅i<br />
E<br />
R<br />
L(i)<br />
а) исходная схема.<br />
ia<br />
ln a , где а=1/3, b=3.<br />
51<br />
Z L (i L )<br />
e L<br />
б) разностно-итерационная<br />
схема замещения.
Схема включается на постоянный источник напряжения Е. Для такой<br />
схемы известно точное аналитическое решение:<br />
a⋅RE ⋅eb⋅t⋅a⋅RE<br />
it = a⋅[<br />
−1]<br />
.<br />
b⋅t⋅a⋅RE <br />
E a⋅R⋅e<br />
Ниже приведен алгоритм численного расчета методом трапеций. Схема<br />
заменяется разностно-итерационным аналогом, приведенным на<br />
рис.2.1.17б.<br />
Входные данные: b,a – параметры нелинейной индуктивности; Е – значение источника<br />
напряжения; r – сопротивление индуктивности; dt – расчетный шаг, T – время<br />
моделирования; eps – точность расчета; N – максимальное число итераций;<br />
m_trap - число точек до выхода на метод трапеций, если m_trap присвоить число<br />
М+1, где М+1 число расчетных точек переходного процесса, то весь переходный<br />
процесс будет рассчитываться неявным методом Эйлера 1-го порядка.<br />
Формула аналитического решения введена как функция f2=tok(x), которая<br />
выводится на график через массив ietalon(m). Нелинейная индуктивность задана в<br />
виде функции LL(x). x=0.0001 – это значение вводится для предотвращения деления<br />
на ноль.<br />
Промежуточные данные: zL – алгебраизированное сопротивление индуктивности;<br />
eL - источник напряжения индуктивной ветви; iL – ток индуктивной ветви.<br />
Соответствие обозначений, принятых в программе с обозначениями в формулах<br />
следующее:<br />
Ln=L_0, L j n+1=Lj, L j-1 n+1=Lj_1,<br />
iLn=iL_0, iLn+1=iL.<br />
Выходные данные: iLg(m) – массив значений тока в индуктивности.<br />
clear ;<br />
dt=0.002;T=0.028;t=[0:dt:T]; //ввод диапазона времени<br />
M=round(T/dt); //определение числа расчетных точек по времени<br />
eps=0.000002; //задание точности<br />
N=1500; //максимальное число итераций<br />
m_trap=1; //порядок метода<br />
b=3; a=1/3; E=120; r=20; x=0.0001; //ввод параметров схемы<br />
//ввод статической индуктивности и аналитической функции эталонного решения<br />
function f=LL(x), f=log((x+a)/a)/b/x; endfunction;<br />
function f2=tok(x), f2=a*((a*r+E)*exp(b*x*(a*r+E))/(E+a*r*exp(b*x*(a*r+E)))-1.0 );<br />
endfunction;<br />
iL_0=0.0001; //начальное значение тока в индуктивности<br />
L_0=LL(iL_0); //начальная индуктивность для шага по времени<br />
for m=1:M+1 // внешний цикл по времени<br />
Lj_1=L_0; //начальная индуктивность для итераций<br />
for n=1:N, //внутренний итерационный цикл<br />
//Расчет схемы<br />
if m>m_trap then zL=2*Lj_1/dt; eL=iL_0*2*L_0/dt+uL_0;<br />
else zL=Lj_1/dt; eL=iL_0*L_0/dt; end;<br />
iL=(E+eL)/(zL+r);<br />
if iL==0. then iL=0.0000001; end; //предотвращение деления на ноль<br />
Lj=LL(iL); //новая индуктивность внутри итерации<br />
if Lj==0. then Lj=0.0000001; end; //предотвращение деления на ноль<br />
if abs((Lj-Lj_1)/Lj)
Lj_1=Lj; //новая индуктивность становится начальной внутри итерации<br />
end; //окончание цикла по итерациям<br />
uL_0=zL*iL-eL; // расчет напряжения на индуктивности<br />
iLg(m)=iL_0; // вывод тока во внешний массив<br />
iL_0=iL; //новый ток в индуктивности<br />
L_0=Lj; //индуктивность для следущего шага<br />
ietalon(m)=tok(t(m)); //запись эталонного тока во внешний массив<br />
end; //окончание внешнего цикла по времени<br />
plot2d(t',[iLg, ietalon]) //построение графиков<br />
xgrid(1); // построение сетки<br />
Результаты расчетов для эталонного решения, а также для метода Эйлера<br />
1-го порядка и метода трапеций при dt=0.002 и eps=0.000002 приведены<br />
ниже:<br />
1.0 L, Гн<br />
0.9<br />
0.8<br />
0.7<br />
0.6<br />
0.5<br />
0.4<br />
0.3<br />
0.2<br />
0.1<br />
i, A<br />
0.0<br />
0 1 2 3 4 5 6 7 8 9 10<br />
зависимость индуктивности от тока<br />
i , A<br />
L 6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
0<br />
t, c<br />
0.000 0.005 0.010 0.015 0.020 0.025 0.030<br />
Результаты расчета переходных процессов:<br />
Сплошная линия − аналитическое решение<br />
• − метод трапеций;<br />
▼ − неявный метод 1-го порядка.<br />
53
2.1.3. Управляемые источники<br />
Представим управляемые источники в форме обобщенной ветви<br />
(2.1.2). Рассмотрим сначала источник напряжения, управляемый током.<br />
Пусть источник напряжения ветви z2 управляется током ветви z1,то<br />
есть e2=k∙i1, где k-коэффициент передачи управляемого источника.<br />
i 1<br />
I 1<br />
J 1<br />
V 1<br />
z 1<br />
U 1<br />
e 1<br />
Уравнения, описывающие эти ветви:<br />
{ U 1e 1 = z 1⋅i 1J 1<br />
U 2e 2 = z2⋅i 2 J 2 <br />
Подставляя в 1-е уравнение вместо e2 выражение k∙i1, и производя алгебраические<br />
преобразования, получим систему уравнений, которая в<br />
матричной форме будет иметь следующий вид, который описывает<br />
источник напряжения, управляемый током e2=k∙i1:<br />
1∣ −k⋅J =∣ z1 0<br />
2∣ −k z ⋅∣ i 2∣ 1<br />
i ∣ J 2∣ 1<br />
J <br />
∣ U 1<br />
U 2∣ ∣ e 1<br />
Делая аналогичные выкладки, можно получить выражения для:<br />
- источника напряжения, управляемого напряжением e2=k·U1:<br />
z1 0<br />
2∣ z ⋅∣ i 2∣ 1<br />
i ∣ J 2∣ 1<br />
J <br />
∣ U 2∣ 1<br />
U ∣ e 1∣ 1<br />
−k⋅e =∣<br />
−k⋅z 1<br />
- источника тока, управляемого током J2=k·i1:<br />
2∣ e =∣ z1 0<br />
2∣ z ⋅∣ i 2∣ 1<br />
i ∣ J 1∣ 1<br />
−k⋅J <br />
∣ U 1<br />
U 2∣ ∣ e 1<br />
k⋅z 2<br />
- источника тока, управляемого напряжением J2=k·U1:<br />
∣ U 2∣ 1<br />
U ∣ e 2∣ 1<br />
e =∣<br />
z1 0<br />
2∣ k⋅z 1⋅z 2 z ⋅∣ i 2∣ 1<br />
i ∣ J 1∣ 1<br />
−k⋅e <br />
Рассмотрим нелинейные управляемые источники.<br />
Пусть имеем нелинейный источник тока, управляемый током: J2=J2(i1).<br />
{ U 1 e 1 =z 1 ⋅i 1 J 1<br />
U 2 e 2 =z 2 ⋅i 2 J 2 i 1 <br />
Применяя метод Ньютона, заменяем уравнения конечными разностями,<br />
вызванными итерационными приращениями. Независимые источники<br />
не получают при этом итерационных приращений. Тогда можно записать:<br />
54<br />
i 2<br />
I 2<br />
J 2<br />
z 2<br />
V 2<br />
U 2<br />
e 2 = k·i 1
{ΔU 1 = z1⋅Δi ⋅<br />
1<br />
ΔU 2 =z 2 Δi2 ∂ J 2<br />
∂i 1<br />
Δi 1<br />
В этой системе уравнений заменяем Δ на итерационные разности:<br />
{<br />
j +1 j j +1 j<br />
U 1 −U 1=z<br />
1⋅i 1 −i1 <br />
⋅ j +1 j<br />
U 2 −U 2=z<br />
2 i j +1 j ∂ J 1<br />
2 j +1 j<br />
2 −i2<br />
∂i<br />
i1 −i1<br />
1<br />
записываем в матричной форме обобщенной ветви:<br />
{∣ U j + 1<br />
1<br />
j<br />
U<br />
+1∣<br />
2 ∣<br />
−U j<br />
1<br />
j∣ −U 2 =∣<br />
z 1<br />
z 2 ⋅ ∂ J 2<br />
∂i 1<br />
0<br />
z 2∣⋅∣ i 1<br />
1∣<br />
j+ 1<br />
j +<br />
i2 ∣ −i j∣<br />
j<br />
1<br />
−i 2<br />
<br />
Аналогично можно получить выражения для:<br />
- нелинейного источника тока, управляемого током: J2=J2(U1)<br />
{∣ U j + 1<br />
1<br />
j<br />
U<br />
+1∣<br />
2 ∣<br />
−U j<br />
1<br />
j∣ −U 2 =∣<br />
z 1<br />
z 1 ⋅z 2 ⋅ ∂ J 2<br />
∂U 1<br />
0<br />
z 2∣⋅∣ i 1<br />
j +1<br />
j<br />
i<br />
+1∣<br />
2 ∣ −i j∣<br />
j<br />
1<br />
−i2 <br />
- нелинейного источника напряжения, управляемого напряжением:<br />
e2=e2(U1)<br />
{∣ U j + 1<br />
1<br />
j<br />
U<br />
+1∣<br />
2 ∣<br />
−U j<br />
1<br />
j∣ −U 2 =∣<br />
z 1<br />
−z 1⋅ ∂ e2 ∂ U 1<br />
0<br />
z 2∣⋅∣ i 1<br />
1∣<br />
j + 1<br />
j +<br />
i2 ∣ −i j∣<br />
j<br />
1<br />
−i2 <br />
- нелинейного источника напряжения, управляемого током: e2=e2(i1)<br />
{∣ U j + 1<br />
1<br />
j<br />
U<br />
+1∣<br />
2 ∣<br />
−U j<br />
1<br />
j∣ −U 2 =∣<br />
z 1<br />
− ∂ e 2<br />
∂i 1<br />
0<br />
z 2∣⋅∣ i 1<br />
j +1<br />
j<br />
i<br />
+1∣<br />
2 ∣ −i j∣<br />
j<br />
1<br />
−i2 <br />
Особенность представления всех представленных управляемых источников<br />
- они должны обладать внутренним сопротивлением - это вытекает<br />
из принятого описания схем через элементарную ветвь, которой<br />
обязательно приписывается сопротивление.<br />
Аналогичным образом можно получить выражения для источников,<br />
управляемых двумя, тремя ветвям или большим числом ветвей. Все эти<br />
выражения можно представить в форме:<br />
U+e=z·(i+J).<br />
Отличие приведенной формы от уравнения обобщенной ветви (2.1.2)<br />
только в матричной форме записи.<br />
55
2.2. Топологические модели электрических схем<br />
2.2.1. Матричная форма законов Кирхгофа<br />
Топологические модели рассмотрим на простом, но достаточно общем<br />
примере. Пусть дана схема из шести обобщенных ветвей рис.2.2.1.<br />
Это могут быть резисторы, емкости, индуктивности, источники и т.д.<br />
Положительные направления токов и напряжений соответствуют принятым<br />
на рис.2.1.1 положительным направлениям обобщенной ветви.<br />
z1<br />
Связь между токами ветвей устанавливается 1-м законом Кирхгофа:<br />
для узла 1: iz3 – iz5 – iz6 = 0,<br />
для узла 2: iz1 – iz2 – iz3 = 0,<br />
для узла 3: –iz1 + iz2 + iz4 = 0,<br />
для узла 4: –iz4 + iz5 + iz6 = 0,<br />
Если ввести вектор токов:<br />
z1 z2 z3 z4 z5 z6<br />
it = iz1 iz2 iz3 iz4 iz5 iz6<br />
2 1<br />
z2<br />
то 1-й закон Кирхгофа можно выразить в матричной форме:<br />
z1 z2 z3 z4 z5 z6 iz2<br />
1 1 -1 1 iz3<br />
2 1 -1 -1 · iz4 = At ∙ i = 0<br />
3 -1 1 1 iz5<br />
z4<br />
3 4<br />
Рис. 2.2.1. Пример схемы, состоящей из обобщенных ветвей.<br />
(2.2.1)<br />
В этом выражении матрица Аt содержит три строки, номера которых<br />
соответствуют номеру узла. Если ветвь выходит из узла, то соответствующий<br />
элемент матрицы равен 1, если ветвь входит в узел, то ставится -1.<br />
Индекс t в обозначениях матриц и векторов означает транспонирование.<br />
Матрица А называется узловой матрицей.<br />
Следует заметить, что матрица Аt не содержит строки, соответствующей<br />
4-му узлу. Это связано с тем, что потенциал одного из узлов схемы<br />
56<br />
z3<br />
iz1<br />
iz6<br />
z5 z6
считается равным нулю, поэтому этот узел в расчет не принимается. В<br />
данном случае за нулевой узел принят 4-й узел схемы.<br />
В схеме можно выделить независимые токи, например в 1-й, 2-й и 6-й<br />
ветвях и через них выразить оставшиеся токи. Тогда систему уравнений<br />
для 1-го закона Кирхгофа можно переписать:<br />
iz1 = iz1,<br />
iz2 = iz2,<br />
iz3 = iz1 − iz2,<br />
iz4 = iz1 − iz2,<br />
iz5 = iz1 − iz2 − iz6,<br />
iz6 = iz6<br />
или в матричной форме:<br />
iz1 z1 1<br />
z1 z2 z6<br />
iz2 z2 1 iz1<br />
iz3 = z3 1 -1 · iz2 = C ∙ ik<br />
iz4 z4 1 -1 iz6<br />
iz5 z5 1 -1 -1<br />
iz6 z6 1<br />
(2.2.2)<br />
В полученном матричном выражении матрица С содержит 3 столбца.<br />
Можно показать, что в каждом столбце перечисляются ветви, входящие<br />
в независимый контур. Ток этого контура равен току соответствующей<br />
независимой ветви. Матрица С называется контурной матрицей и, как<br />
мы только что видели, ее можно получить на основе 1-го закона Кирхгофа<br />
(обратите внимание – узловая матрица тоже была получена на основе<br />
1-го закона Кирхгофа). Таким образом, можно записать связь токов в<br />
ветвях с контурными токами в матричной форме:<br />
ib=C∙iк.<br />
где ib – вектор токов в ветвях.<br />
Если ввести вектор напряжений:<br />
z1 z2 z3 z4 z5 z6<br />
Ut = Uz1 Uz2 Uz3 Uz4 Uz5 Uz6<br />
то можно выразить в матричной форме 2-й закон Кирхгофа:<br />
57<br />
Uz1<br />
z1 z2 z3 z4 z5 z6 Uz2<br />
z1 1 1 1 1 Uz3<br />
z2 1 -1 -1 -1 · Uz4 = Ct·U = 0<br />
z6 -1 1 Uz5<br />
Uz6<br />
(2.2.3)<br />
(2.2.4)
В этом выражении матрица Ct содержит три строки, номера которых соответствуют<br />
контуру, образованному независимой ветвью. Направление<br />
независимых ветвей задают направление обхода контура. Если при обходе<br />
контура направление ветви, входящей в контур, совпадает с<br />
направлением обхода, то соответствующий элемент матрицы равен 1,<br />
если направление ветви не совпадает с направлением обхода, то ставится<br />
-1.<br />
2.2.2. Топологическое описание схемы.<br />
Для автоматизированного получения топологических матриц используют<br />
понятие графа. Чтобы построить граф, из схемы удаляют сопротивления,<br />
вместо них вводят линию, соединяющую узлы, между которыми<br />
располагалось сопротивление. Если в схеме есть короткозамкнутые<br />
ветви, то их объединяют в один узел, поскольку они имеют одинаковый<br />
потенциал. Полученная схема называется направленным графом,<br />
так как направление токов в ветвях схемы и в ветвях графа сохраняется.<br />
В графе выделяют дерево и хорды. Дерево – часть схемы, которая включает<br />
все узлы, но не содержит ни одного контура. Оставшаяся часть схемы<br />
образует хорды. Хорда, соединяя узлы дерева, образует из его ветвей<br />
контур. Для рассматриваемого примера граф изображен ниже на<br />
рис.2.2.2а. Рядом приведено изображение дерева и хорд. Ветви дерева<br />
выделены толстыми линиями.<br />
z1 z2<br />
2<br />
z3<br />
z4<br />
3 4<br />
Рис. 2.2.2. Топологическое описание схемы.<br />
а) ориентированный граф схемы, б) узлы и контуры.<br />
Независимые токи – это токи в ветвях<br />
хорд: iz1, iz2, и iz6. Для дальнейшего изложения<br />
обозначим контуры буквами<br />
a, b и c, а соответствующие контурные<br />
токи ia, ib и ic.<br />
Рассмотрим теперь формирование<br />
расширенной контурной матрицы С.<br />
1<br />
z5 z6<br />
a<br />
z1<br />
z2<br />
3<br />
b<br />
z3<br />
2 1<br />
а) б)<br />
58<br />
a<br />
z1 z2<br />
2<br />
3<br />
z4<br />
z3<br />
b<br />
z4<br />
z5<br />
4<br />
0<br />
1<br />
c<br />
z5<br />
c<br />
z6<br />
z6
Будем считать, что узловые пары схемы – это открытые контуры. В отличие<br />
от обычных «замкнутых» контуров, ток открытых контуров не замкнут<br />
внутри схемы, а входит и выходит из схемы через узловые пары.<br />
В дальнейшем будем рассматривать только те узловые пары, которые<br />
имеют один общий узел (нулевой). Через него узловые токи выходят из<br />
схемы. Пути прохождения узловых токов пролегают через ветви дерева.<br />
На рисунке пунктирными линиями показаны пути прохождения узловых<br />
токов i1, i2, i3.<br />
Теперь контурную матрицу С можно дополнить координатами открытых<br />
контуров – узловых пар. Колонки для открытых контуров заполняются<br />
так же, как и для обычных контуров. Будем двигаться от узла к нулевому<br />
узлу по ветвям дерева и отмечать в колонке матрицы С единицей<br />
с соответствующим знаком те строки, которые соответствуют попавшимся<br />
на этом пути ветвям. В результате получаем расширенную<br />
контурную матрицу С.<br />
(2.2.5)<br />
Сформированная матрица С несет всю информацию о соединении<br />
ветвей в схему. С помощью расширенной матрицы С можно рассчитать<br />
узловую матрицу Аt. Она равна обратной матрице С, т.е.<br />
Аt=С-1 1 2 3 a b c<br />
z1 1<br />
z2 1<br />
z3 -1 1 -1<br />
C = z4 1 1 -1<br />
z5 -1 -1 1 -1 -1<br />
z6 1<br />
,<br />
z1 z2 z3 z4 z5 z6<br />
1 1 -1 -1<br />
2 1 -1 -1<br />
(2.2.6)<br />
3 -1<br />
At = a 1<br />
1 1<br />
b 1<br />
c 1<br />
Теперь обратим внимание на структуру матрицы Аt. Сначала в ней<br />
перечисляются строки, соответствующие узловым парам – это строки 1,<br />
2 и 3, затем перечисляются координаты контуров – это строки а, b, и с.<br />
Заполнение узловых строк было рассмотрено выше. Чтобы заполнить<br />
контурные строки, надо в соответствующей строке отметить ту ветвь,<br />
которая принадлежит хорде, образующей данный контур. Так как<br />
контур а образуется ветвью z1, контур b ветвью z2 и контур c ветвью z6,<br />
поэтому в соответствующих местах матрицы установлены единицы. Поскольку<br />
контур можно трактовать, как замкнутую на один узел узловую<br />
59
пару, то в контурных строках стоит всего одна единица, напротив той<br />
ветви, ток в которой равен контурному току, то есть напротив хорды.<br />
Приведенные в (2.2.5) контурная С и в (2.2.6) узловая Аt матрицы играют<br />
ключевую роль в тензорном анализе сетей. Приведем ряд важнейших<br />
свойств этих математических объектов.<br />
Эти матрицы являются квадратными. Такое их свойство вытекает из<br />
топологического закона для линейных графов: число ветвей В графа<br />
равно числу узловых пар О плюс число контуров К.<br />
В=О+К (2.2.7)<br />
Для линейного графа число узловых пар<br />
О=У-П (2.2.8)<br />
где П – число связных подграфов. Наиболее часто встречается случай,<br />
когда рассматривается единственный связный граф, то есть П=1. В этом<br />
случае число узловых пар на единицу меньше числа узлов.<br />
Из (2.2.7) следует, что для заданного числа ветвей размер матриц будет<br />
неизменным для любых схем соединения этих ветвей.<br />
Формула (2.2.7) может быть обобщена на цепи любой размерности. В<br />
этих случаях в цепь входят не только узлы и линии, но и поверхности и<br />
объемы. В этих случаях вводится понятие симплекс. Пара узлов – это<br />
одномерный симплекс. Пара узлов всегда ограничивает ветвь, которая в<br />
этом случае является одномерным симплексом. Замкнутый набор ветвей<br />
ограничивает контур, который есть двумерный симплекс. Замкнутый набор<br />
контуров ограничивает объем – трехмерный симплекс. Теоретически<br />
возможны n-мерные симплексы, а также симплексы с дробной размерностью.<br />
Формула (2.2.7) приобретает формулировку: число симплексов<br />
размерности n равно сумме ограничивающих симплексов:<br />
Bn=On-1+Kn+1<br />
где n – размерность симплекса.<br />
В топологических матрицах С и А можно выделить блоки:<br />
(2.2.9)<br />
o k<br />
С= Сbo Сbk<br />
(2.2.10)<br />
(2.2.11)<br />
где индекс b перечисляет ветви, индекс о перечисляет узловые пары, индекс<br />
k перечисляет контуры. Произведение Сt·А равно единичной матрице:<br />
o k o k<br />
o Cob o k o Cob·Abo Cob·Abk o 1 0<br />
Сt ·А = k Ckb · Abo Abk = k Ckb·Abo Ckb·Abk = k 0 1<br />
Из (2.2.11) следует, что:<br />
o k<br />
A= Abo Abk<br />
60<br />
(2.2.12)
Cob·Abo=1; Ckb·Abk=1; Ckb·Abo=0; Cob·Abk=0. (2.2.13)<br />
Равенства (2.2.13) можно трактовать как скалярные произведения координат<br />
пространства контуров и узловых пар. В этом случае можно сказать,<br />
что пространство узловых пар ортогонально пространству контуров,<br />
так как соответствующие скалярные произведения векторов, выделенных<br />
из матриц Ckb и Abo, а также Cob и Abk равны нулю.<br />
Координатно-пространственная трактовка топологических матриц<br />
позволяет понимать выражение i=C·ik как связь пространства токов ветвей<br />
и пространства контурных токов. Вектора токов задают оси координат<br />
этих пространств.<br />
2.2.3. Координатные преобразования топологических пространств<br />
схем.<br />
С введением расширенной контурной матрицы формулу (2.2.3) можно<br />
обобщить. Если обозначить координаты соединенной схемы буквой r,<br />
где r перечисляет узловые пары о и контуры k, тогда матрица С запишется<br />
как Cbr и тогда можно записать:<br />
ib=Cbr·ir<br />
(2.2.14)<br />
Это равенство связывает координаты ветвей с координатами схемы. По<br />
формуле (2.2.14) пространство ветвей преобразуется в пространство схемы.<br />
Обратное преобразование задается расширенной узловой матрицей<br />
Аrb (в безиндексных обозначениях Arb=At):<br />
ir=(Cbr) -1 ·ib=Arb·ib<br />
(2.2.15)<br />
Рассмотрим более подробно уравнение (2.2.15). Для этого обратимся<br />
к примеру рис.2.2.2:<br />
1 -1 -1 iz1 1 - iz6 - iz5 + iz3<br />
1 -1 -1 iz2 2 - iz3 - iz2 + iz1<br />
-1 1 1 iz3 3 iz4 + iz2 - iz1<br />
ir = Arb ∙ ib = 1 iz4 = a iz1<br />
1 iz5 b iz2<br />
1 iz6 c iz6<br />
(2.2.16)<br />
Результирующий вектор содержит в первых трех строках запись 1-го<br />
закона Кирхгофа, поэтому содержимое этих трех строк должно быть<br />
равно нулю io=0. В строках, которые соответствуют контурным координатам,<br />
стоят токи хорд. Это соответствует тому, что контурный ток всегда<br />
равен току хорды. Например, ток контура с равен току ветви z6. Таким<br />
образом, из (2.2.16) следует, что:<br />
61
o io o 0<br />
ir= k ik = k ik<br />
(2.2.17)<br />
Аналогичное правило можно применить и для источников тока. Тогда,<br />
опуская промежуточные выкладки, можно записать:<br />
1 - Jz6 - Jz5 + Jz3<br />
2 - Jz3 - Jz2 + Jz1<br />
3 Jz4 + Jz2 - Jz1 Jo<br />
(2.2.18)<br />
Jr = Arb·Jb = a Jz1 = Jk<br />
b Jz2<br />
c Jz6<br />
Здесь узловые токи не обязательно равны нулю.<br />
Приведем теперь преобразования напряжений. Формулу (2.2.4), мож-<br />
но записать с использованием расширенной матрицы Сrb:<br />
- 1 Uz1 1 - Uz5<br />
- 1 - 1 Uz2 2 - Uz5 – Uz3<br />
1 Uz3 3 Uz4<br />
Ur = Crb·Ub = 1 1 1 1 Uz4 = a Uz5 + Uz4 + Uz3 + Uz1<br />
1 - 1 - 1 - 1 Uz5 b - Uz5 – Uz4 – Uz3 + Uz2<br />
- 1 1 Uz6 c Uz6 – Uz5<br />
(2.2.19)<br />
Результирующий вектор содержит в последних трех строках, которые<br />
соответствуют контурным координатам, 2-й закон Кирхгофа, поэтому<br />
эта часть вектора должна быть равна нулю: Uk=0. Формула (2.2.4) является<br />
частным случаем (2.2.19), где в формулу введены координаты<br />
узловых пар. Первые три координаты связывают напряжения на узловых<br />
парах с напряжениями ветвей. Например, напряжение на второй<br />
узловой паре равно сумме напряжений на 3-ей и 5-ой ветвях, взятыми с<br />
обратным знаком. Таким образом, из (2.2.19) следует, что<br />
o Uo o Uo<br />
Crb·Ub=Ur= k Uk = k 0<br />
(2.2.20)<br />
Формулу, аналогичную (2.2.19) можно применить и к источникам<br />
напряжений. Опуская промежуточные выкладки можно записать:<br />
62
1 -ez5<br />
2 -ez5-ez3<br />
3 ez4 eo<br />
er=Crb·eb a еz5 + еz4 + еz3 + еz1 = ek<br />
b - еz5 – еz4 – еz3 + еz2<br />
c еz6 – еz5<br />
(2.2.21)<br />
Здесь контурные э.д.с. не обязательно равны нулю.<br />
Теперь обратим внимание на законы преобразования векторов токов и<br />
векторов напряжения при переходе от пространства ветвей к пространству<br />
схемы. Если векторы, относящиеся к координатам ветвей, называть<br />
исходными или старыми координатами и обозначать без штрихов,<br />
а векторы, относящиеся к координатам схемы называть новыми<br />
координатами и обозначать штрихами, то законы преобразований будут<br />
выглядеть так:<br />
i = C ⋅i '<br />
u = C t - 1 ⋅u '<br />
i ' = C - 1 ⋅i<br />
u ' = C t ⋅u<br />
(2.2.22)<br />
Ток и напряжение преобразуются противоположным образом в том<br />
смысле, что для преобразования токов надо использовать матрицы,<br />
обратные по отношению к тем, которые используются для преобразования<br />
напряжений.<br />
Таким образом, рассмотренные формулы показывают, что узловая и<br />
контурная топологические матрицы могут рассматриваться как матрицы<br />
преобразования пространств токов и напряжений ветвей в пространство<br />
токов и напряжений соединенной схемы. Соответствующие формулы<br />
приводятся в (2.2.14)-(2.2.22). Расширенная контурная матрица несет<br />
полную информацию о соединении ветвей в схему, отражает 2-й закон<br />
Кирхгофа и может быть получена из 1-го закона Кирхгофа. Это говорит<br />
о том, что оба закона топологически взаимосвязаны.<br />
Рассмотрим применение SciLAB для обработки топологической информации.<br />
Приведенный ниже алгоритм позволяет автоматически сформировать<br />
расширенные топологические матрицы – контурную и транспонированную<br />
узловую.<br />
Исходными данными являются два списка: ta – список начальных<br />
узлов ветвей и he – список конечных узлов ветвей. Для отображения графа<br />
должны быть введены х- и у- координаты узлов.<br />
clear(); //очистка данных<br />
ta= [2 3 1 3 4 4 ]; // начальные узлы ветвей, по порядку, начиная с 1-й ветви<br />
63
he=[3 2 2 4 1 1 ]; // конечные узлы ветвей, по порядку, начиная с 1-й ветви<br />
maxv=max(ta); // определение максимального номера узла<br />
g = make_graph('cep1',1,maxv,ta,he); //создание направленного графа<br />
g1= make_graph('cep2',0,maxv,ta,he); //создание ненаправленного графа<br />
g('node_x') = [200 100 150 250 ]; //ввод х-координат узлов<br />
g('node_y') = [200 200 100 100 ]; //ввод у-координат узлов<br />
show_graph(g); //отображение графа<br />
a=graph_2_mat(g,'node−arc'); //формирование ненулевых элементов узловой матрицы<br />
A=full(a); //формирование полной формы узловой матрицы<br />
node = node_number(g); // определение числа узлов графа<br />
t=min_weight_tree(node,g1); //формирование дерева графа<br />
arc = arc_number(g); //определение числа ветвей графа<br />
at(1:node−1, 1:arc)=A(1:node−1, : ); // узловая часть расширенной матрицы Аt<br />
hord=setdiff(1:arc, t); //формирование списка хорд<br />
size_hord = size(hord); // определение числа хорд<br />
for i=1:size_hord(2) at(node−1+i,hord(i))=1; end; //формирование полной матрицы Аt<br />
at //вывод матрицы Аt в диалоговое окно Scilab<br />
c=at^(-1) //вычисление и вывод матрицы С в диалоговое окно Scilab<br />
Для введенного графа сформированные матрицы Аt и С получились следующими:<br />
2<br />
1<br />
3<br />
2<br />
3<br />
1<br />
4<br />
5<br />
6<br />
4<br />
Аt=<br />
! 0. 0. 1. 0. - 1. - 1. !<br />
! 1. - 1. - 1. 0. 0. 0. !<br />
! - 1. 1. 0. 1. 0. 0. !<br />
! 0. 1. 0. 0. 0. 0. !<br />
! 0. 0. 0. 1. 0. 0. !<br />
! 0. 0. 0. 0. 0. 1. !<br />
C=<br />
! 0. 0. - 1. 1. 1. 0. !<br />
! 0. 0. 0. 1. 0. 0. !<br />
! 0. - 1. - 1. 0. 1. 0. !<br />
! 0. 0. 0. 0. 1. 0 !<br />
! - 1. - 1. - 1. 0. 1. - 1. !<br />
! 0. 0. 0. 0. 0. 1. !<br />
Как видно из полученных результатов, программа сформировала другой<br />
состав матриц. Это связано с тем, что количество вариантов построения<br />
дерева и соответственно контуров, может быть достаточно<br />
большим. Выбор того или иного варианта определяется особенностями<br />
алгоритма, в данном случае встроенной функцией построения дерева<br />
пакета SciLab: min_weight_tree. В любом случае проверить правильность<br />
сформированных матриц можно косвенно, результат умножения С на Аt<br />
должен дать единичную матрицу: С·Аt=1.<br />
Построить дерево можно отдельным алгоритмом, приведенным ниже.<br />
Данный SciLab-алгоритм является модификацией фортрановской программы,<br />
приведенной в [12]. Исходными данными являются два списка:<br />
ta – список начальных узлов ветвей и he – список конечных узлов ветвей.<br />
clear ;<br />
ta= [2 3 1 3 4 4 ]; // начальные узлы ветвей, по порядку, начиная с 1-й ветви<br />
he=[3 2 2 4 1 1 ]; // конечные узлы ветвей, по порядку, начиная с 1-й ветви<br />
//определение размеров массивов<br />
razmer = size( ta); JKV= razmer (2);<br />
max1=max( ta); max2=max(he); KP=max(max1,max2);<br />
IW=KP+2 *JKV; NEXT(IW)=0;<br />
64
инициализация переменных<br />
PTR=0; V= KP; I = KP+1;<br />
for K=1:JKV<br />
M=ta (K); N=he(K); NEXT(I)=NEXT(M); ADJ(I) =N; NEXT(M)= I;<br />
I= I + 1 ; NEXT(I) =NEXT(N); ADJ(I) =M; NEXT(N)=I; I= I + 1 ;<br />
end;<br />
LIST(KP+1) =0; I=1; N=1; LIST(1)=V; VECTOR(V)=0; VISIT(V)=1;<br />
//поиск узлов ветвей, относящихся к дереву<br />
while 1==1,<br />
M=LIST(N); PTR=M;<br />
while 1==1,<br />
NNN=NEXT(PTR); PTR=NNN;<br />
if PTR==0 then break, end;<br />
J=ADJ(PTR);<br />
if VISIT(J)= = 0 then<br />
I= I + 1 ; LIST(I) =J; VISIT(J)= I; VECTOR(J)=M;<br />
end;<br />
end;<br />
N=N+1;<br />
if LIST(N)= =0 then break, end;<br />
end;<br />
//формирование массива с номерами ветвей дерева и хорд<br />
vet=size(VECTOR);yvet=vet(1);<br />
for m=1:JKV<br />
derevo(1,m) =m;<br />
end;<br />
for k1=1:yvet(1)<br />
if VECTOR(k1)< > 0 then, k2=VECTOR(k1); end;<br />
for m=1:JKV<br />
if ((ta(m) = = k1&he(m) = = k 2 ) | ( t a ( m) = = k 2 &he(m) = = k 1 )) then<br />
derevo(1,m) =0;break; end;<br />
end;<br />
end;<br />
derevo<br />
В результате формируется массив, в котором ненулевые элементы соответствуют<br />
ветвям хорд, номера нулевых элементов соответствуют ветвям<br />
дерева.<br />
derevo =<br />
1. 2. 0. 0. 0. 6.<br />
В данном случае 1, 2 и 6-я ветви – это ветви дерева, 3, 4 и 5-я ветви –<br />
ветви хорд.<br />
Приведенный алгоритм поиска ветвей дерева может быть использован<br />
в тех языках программирования, где нет соответствующих встроенных<br />
функций или библиотек.<br />
65
2.3. Обобщенные уравнения электрических схем.<br />
Приведенные в разделе 2.2 координатные преобразования можно применить<br />
для автоматического вывода уравнений напряжений любой схемы<br />
и их решения. Отправной точкой для составления уравнений схемы<br />
являются уравнения отдельных ветвей, подготовленные в обобщенной<br />
форме. Совокупность таких ветвей образует элементарную схему.<br />
2.3.1. Элементарная схема.<br />
Отдельные ветви описываются обобщенной формой:<br />
U+e = z∙(i+J),<br />
где U - напряжение ветви, е – источник напряжения ветви, J – источник<br />
тока ветви, i – ток ветви, z - сопротивление ветви. Для всех ветвей, входящих<br />
в рассмотренную на рис.2.16 схему, описание можно представить<br />
в развернутой матричной форме:<br />
Uz1+ez1 z1 iz1+Jz1<br />
Uz2+ez2 z2 iz2+Jz2<br />
Uz3+ez3 = z3 ∙ iz3+Jz3<br />
Uz4+ez4 z4 iz4+Jz4<br />
Uz5+ez5 z5 iz5+Jz5<br />
Uz6+ez6 z6 iz6+Jz6<br />
Эта развернутая форма в матричном и индексном обозначениях соответственно:<br />
U+e = z ∙ (i+J),<br />
(2.3.1)<br />
Ub+eb = zbb ∙ (ib+Jb).<br />
Можно сказать, что уравнение (2.3.1) представляет собой описание<br />
схемы, составленной из отдельных ветвей. Каждая ветвь схемы задает<br />
координатную ось. Совокупность осей задает пространство элементарной<br />
схемы.<br />
Если ветви имеют взаимные индуктивности или управляемые источ-<br />
ники, то матрица zbb имеет недиагональные элементы и является в общем<br />
случае несимметричной.<br />
Элементарная схема может быть представлена проводимостями ветвей:<br />
iz1+Jz1 Y1 Uz1+ez1<br />
iz2+Jz2 Y2 Uz2+ez2<br />
Y3<br />
iz3+Jz3 =<br />
∙ Uz3+ez3<br />
iz4+Jz4 Y4 Uz4+ez4<br />
iz5+Jz5 Y5 Uz5+ez5<br />
iz6+Jz6 Y6 Uz6+ez6<br />
66
или в матричной форме:<br />
i+J =Y·(U+e),<br />
ib+Jb =Ybb·(Ub+eb).<br />
Здесь Y=(Z) -1 .<br />
Весь раздел 2.1 был посвящен тому, как составить элементарную схему<br />
из ветвей, представляющих собой линейные и нелинейные R-, L-, C-<br />
ветви, взаимные индуктивности и управляемые источники.<br />
Формирование уравнений элементарной схемы является во многом не<br />
формальной задачей, так как здесь окончательно выявляются основные<br />
физические процессы в системе, степень принятых допущений – то есть<br />
на этом этапе определяется, что должно интересовать исследователя, какие<br />
результаты ориентировочно должны быть получены.<br />
2.3.2. Формирование уравнений обобщенной схемы.<br />
Вектор токов в уравнениях элементарной схемы задает исходную систему<br />
координат. В этих координатах описывается элементарная схема<br />
уравнениями (2.3.1). При переходе к новой системе координат, в которой<br />
элементарные ветви объединены в некоторую схему, задаются новые<br />
векторы тока и напряжения. Новую систему координат определяют<br />
контуры и узловые пары. Переменные, которые описывают эти координаты<br />
– контурные токи и узловые напряжения. Источники тока и напряжения<br />
в ветвях преобразуются в источники тока и напряжения в контурах<br />
и узловых парах. Если штрихами обозначать векторы в новой системе<br />
координат, то координатные преобразования векторов тока в матричных<br />
обозначениях:<br />
i=C∙i′; J=C∙J′;<br />
Подставим эти выражения в уравнение элементарной схемы (2.3.1), и<br />
далее умножим левую и правую части полученного выражения на транспонированную<br />
матрицу Сt:<br />
Сt ·U+ Сt ·e = Сt · z ∙ (С·i′+C·J)<br />
Далее, учтем, что по формулам (2.2.18) U′= Ct ∙ U и (2.2.20) e′= Сt ∙ e<br />
преобразуются напряжения и источники. В результате получим уравнение,<br />
которое по форме совпадает с исходным уравнением (2.3.1):<br />
U′+e′ = z′ ∙ (i′+J′) , (2.3.2)<br />
где<br />
z′= Сt ∙ z ∙ C. (2.3.3)<br />
Полученное в ходе преобразований выражение z′=Сt ∙ z ∙ C – это преобразование<br />
матрицы сопротивлений ветвей в матрицу сопротивлений соединенной<br />
схемы. Для рассматриваемого примера:<br />
67
-1 z1 1<br />
-1 -1 z2 1<br />
z′=Сt∙z∙C = 1 · z3 · -1 1 -1<br />
1 1 1 1 z4 1 1 -1<br />
1 -1 -1 -1 z5 -1 -1 1 -1 -1<br />
-1 1 z6 1<br />
В результате перемножений получаем:<br />
1 2 3 a b с<br />
1 z5 z5 - z5 z5 z5<br />
2 z5 z5 + z3 - z5 - z3 z5 + z3 z5<br />
z′= 3 z4 z4 - z4<br />
a - z5 - z5 - z3 z4 z5 + z4 + z3 + z1 - z5 - z4 - z3 - z5<br />
b z5 z5 + z3 - z4 - z5 - z4 - z3 z5 + z4 + z3 + z2 z5<br />
c z5 z5 - z5 z5 z6 + z5<br />
Из уравнения (2.3.3) можно получить обратное преобразование для матриц<br />
проводимостей:<br />
(Ct ) -1 ∙ z′ ∙ (C) -1 =z=A·z′·At. (2.3.3a)<br />
Если ввести индексные обозначения для контурных и узловых координат,<br />
соответственно буквами к и о, то матричное уравнение схемы<br />
(2.3.2) можно представить в блочной форме:<br />
Uo<br />
0<br />
+<br />
eo<br />
ek<br />
o k<br />
= o Zoo Zok<br />
k Zko Zkk<br />
(2.3.4)<br />
Так как напряжения ветвей в контурах и токи ветвей в узлах равны<br />
нулю, то соответствующие матричные блоки равны нулю: Uk=0 и io=0.<br />
2.3.3. Решение уравнений обобщенной схемы. Контурная и узловая<br />
формы.<br />
Если в уравнениях элементарной схемы заданы сопротивления ветвей<br />
z и векторы независимых источников ветвей J и e, то по формулам<br />
(2.3.3), (2.1.18) и (2.1.21) вычисляются:<br />
∣ матрица сопротивлений соединенной схемы z′= z oo zok ,<br />
векторы источников тока J′ = ∣ J o<br />
J k∣ и напряжений e′= ∣ e o<br />
e k∣ .<br />
Тогда два блочных уравнения (2.3.4) содержат два неизвестных вектора<br />
– вектор контурных токов ik и вектор узловых напряжений Uo. Решая<br />
(2.3.4) относительно неизвестных, получаем:<br />
ik = (Zkk) -1 ∙ek − (Zkk) -1 ∙Zko ∙Jo − Jk ,<br />
68<br />
∙(<br />
0<br />
ik<br />
+<br />
z ko<br />
Jo<br />
Jk<br />
z kk ∣<br />
)<br />
(2.3.5)
Uo = Z ~ oo ∙J o + Zok ∙(Zkk) -1 ∙ek - eo ,<br />
(2.3.6)<br />
где Z ~ oo = Zoo – Zok ∙(Zkk) -1 Zko .<br />
(2.3.7)<br />
Теперь по найденным контурным токам и узловым напряжениям<br />
можно найти токи и напряжения ветвей:<br />
Ub=Abo∙Uo , ib=Cbk∙ik ,<br />
(2.3.8)<br />
где индекс b соответствует координатам ветвей, Abo – узловая часть матрицы<br />
А; Cbk – контурная часть матрицы С.<br />
Рассмотрим полученные уравнения (2.3.5), (2.3.6) и (2.3.7).<br />
Выражение (2.3.5), если правую и левую части умножить на Zkk, можно<br />
привести к контурной форме:<br />
ek − Zko Jo − Zkk · Jk =Zkk · ik .<br />
Если ввести обозначение:<br />
то получаем<br />
e ~ k=ek − Zko·Jo – Zkk · Jk ,<br />
e ~ k =Zkk · ik .<br />
(2.3.9)<br />
(2.3.10)<br />
Полученное уравнение (2.3.10) не содержит узловых координат и, соответственно,<br />
узловых источников тока. Вместе с тем, оно описывает ту<br />
же схему, что и обобщенное уравнение (2.3.4). Математически из обобщенного<br />
уравнения были исключены переменные с координатами узловых<br />
пар. Оказалось, что ту же схему можно описать одними только<br />
контурными переменными. Получена эквивалентная схема, не содержащая<br />
ни одной узловой пары. Влияние узловых источников тока заменено<br />
эквивалентными контурными источниками напряжения Zko·Jo+Zkk·Jk,<br />
которые вычитаются из фактических источников ek . В результате в схеме<br />
действуют источники напряжения e ~ k, вычисляемые по формуле<br />
(2.3.9), но уже без источников тока. Схема, эквивалентная рассмотренной<br />
в примере рис.2.2.2, не содержащая ни одной узловой пары, изобра-<br />
жена на рис.2.3.1.<br />
z ac ;z ca<br />
e ~<br />
c<br />
z cc<br />
z aa<br />
e ~<br />
a<br />
z ;z<br />
bc cb<br />
Рис. 2.3.1. Чисто-контурная цепь, эквивалентная схеме,<br />
изображенной на рис.2.2.1.<br />
69<br />
z bb<br />
e ~<br />
b<br />
z ab ;z ba
По контурным токам, найденным в такой схеме, можно рассчитать токи<br />
в ветвях исходной схемы.<br />
Выражение (2.3.6) можно привести к узловой форме,<br />
где<br />
Uo + e ~ o = Z ~ oo J o , (2.3.11)<br />
e ~ o = eo − Zok·(Zkk) -1 ·ek.<br />
(2.3.12)<br />
Полученное уравнение (2.3.11) не содержит ни одной контурной<br />
координаты. Из обобщенного уравнения были исключены контурные<br />
переменные. В результате получена схема и ее описание, которое содержит<br />
только узловые координаты. Контурные источники напряжения заменены<br />
эквивалентными узловыми источниками напряжения<br />
Zok·(Zkk) -1 ·ek, которые вычитаются из вектора узловых источников напряжения.<br />
В результате в схеме остается только вектор узловых источников<br />
напряжения e ~ o, вычисляемый по (2.3.12).<br />
Эквивалентная схема, не содержащая ни одного контура, изображена на<br />
рис.2.3.2.<br />
J 1<br />
z ~<br />
11<br />
e ~<br />
1<br />
z ~<br />
; z~<br />
13 31<br />
z ~<br />
12 ;z~<br />
21<br />
e ~<br />
2<br />
Рис. 2.3.2. Чисто-узловая цепь, эквивалентная<br />
схеме, изображенной на рис.2.2.1.<br />
По узловым напряжениям, найденным в такой схеме можно определить<br />
напряжения на всех ветвях исходной схемы.<br />
Уравнения элементарной схемы могут быть представлены через проводимости<br />
ветвей:<br />
Y·(U+e) = i+J,<br />
(2.3.13)<br />
Ybb·(Ub+eb) = ib+Jb.<br />
Для перехода к новой системе координат воспользуемся законом<br />
преобразования напряжений и источников напряжений:<br />
U=A·U’; e=A·e’.<br />
70<br />
J 2<br />
z ~<br />
23 ;z~<br />
32<br />
z ~<br />
22<br />
z ~<br />
33<br />
e ~<br />
3<br />
J 3
Подставим эти выражения в уравнение элементарной схемы (2.3.13),<br />
и далее умножим левую и правую части полученного выражения на<br />
транспонированную матрицу Аt:<br />
Аt · Y ∙ (A·U’+A·e’) =At ·i+ At ·J<br />
Далее, учтем, что по формулам (2.2.14) i′= At ∙ i и (2.2.17) J′= At ∙ J<br />
преобразуются токи и источники тока. В результате получим уравнение,<br />
которое по форме совпадает с исходным уравнением (2.2.16):<br />
Y’·(U’+e’) = i’+J’ (2.3.14)<br />
где Y′= At ∙ Y ∙ A. (2.3.15)<br />
Полученное в ходе преобразований выражение Y′= At ∙ Y ∙ A – это<br />
преобразование матрицы проводимостей ветвей в матрицу проводимостей<br />
соединенной схемы. Для рассматриваемого примера<br />
1 -1 -1 Y1 1 -1 1<br />
1 -1 -1 Y2 -1 1 1<br />
Y′=At∙Y∙A = -1 1 1 · Y3 · 1 -1<br />
1 Y4 1<br />
1 Y5 -1<br />
1 Y6 -1 1<br />
В результате перемножений получаем:<br />
1 2 3 a b с<br />
1 Y3+Y5+Y6 -Y3 -Y6<br />
2 -Y3 Y1+Y2+Y3 -Y1-Y2 Y1 -Y2<br />
Y′= 3 -Y1-Y2 Y1+Y2+Y4 -Y1 Y2<br />
a Y1 -Y1 Y1<br />
b -Y2 Y2 Y2<br />
c -Y6 Y6<br />
Из уравнения (2.3.15) можно получить обратное преобразование для<br />
матриц проводимостей:<br />
(At ) -1 ∙ Y’ ∙ (A) -1 = Y = C · Y · Ct. (2.3.15a)<br />
Матричное уравнение напряжений схемы в блочном виде:<br />
0<br />
ik<br />
+<br />
Jo<br />
Jk<br />
o k<br />
= o Yoo Yok<br />
k Yko Ykk<br />
(2.3.16)<br />
Если считать векторы источников тока и напряжения заданными, то,<br />
решая (2.3.16) относительно неизвестных вектора узловых напряжений<br />
и контурных токов, получаем:<br />
J ~ o=Yoo·Uo<br />
(2.3.17)<br />
где J ~ o= Jo – Yoo·eo – Yok·ek ,<br />
для контурного базиса:<br />
71<br />
∙( Uo<br />
0<br />
+ eo<br />
ek<br />
)
ik+J ~ k = Y ~ kk·ek<br />
где J ~ kk=Jk-Yko·(Ykk) -1 ·Jo , Y ~ kk=Ykk-Yko·(Yoo) -1 ·Yok<br />
Сравнивая полученные формулы с теми, которые были получены<br />
для случая элементарной цепи, состоящей из сопротивлений, можно заметить<br />
их дуальность.<br />
В таблице приводится соответствие векторов и матриц для обоих случаев.<br />
Выбор между двумя методами определяется наименьшими размерами<br />
матриц Zkk и Yoo . Оба метода могут быть представлены одной программой<br />
при соответствующей замене формальных параметров на фактические.<br />
Метод контурных токов Метод узловых напряжений<br />
Jk<br />
ek<br />
Zko<br />
Jo<br />
Zkk<br />
e ~ k=ek − Zko·Jo – Zkk · Jk<br />
ik = Zkk -1 · e ~ k<br />
Zoo<br />
Zok<br />
eo<br />
Uo = Zok·( ik+Jk)+Zoo·Jo– eo<br />
Z ~ oo = Zoo – Zok (Zkk) -1 Zko<br />
e ~ o = eo − Zok·(Zkk) -1 ·ek<br />
Uo + e ~ o = Z ~ oo J o<br />
eo<br />
Jo<br />
Yok<br />
ek<br />
Yoo<br />
J ~ o= Jo – Yok·ek – Yoo·eo<br />
Uo = Yoo -1 ·J ~ o<br />
Ykk<br />
Yko<br />
Jk<br />
ik = Yko·( Uo+eo)+Ykk·ek– Jk<br />
Y ~ kk=Ykk – Yko·(Yoo) -1 ·Yok<br />
J ~ kk=Jk− Yko·(Ykk) -1 ·Jo<br />
ik+J ~ k = Y ~ kk·ek<br />
2.3.4. Преобразование мощности.<br />
Рассмотрим законы преобразования мощности при переходе от элементарной<br />
схемы к соединенной. Определим суммарную мощность ветвей<br />
как произведение<br />
P=Ut∙i. (2.3.18)<br />
Подставляя в эту формулу закон преобразования вектора токов i=C∙i′,<br />
и вектора напряжений U′=Ct∙U (или Ut′=Ut∙C), получаем:<br />
P = Ut∙C∙i′ = Ut′∙i′ = P′.<br />
Таким образом,<br />
P=P′. (2.3.19)<br />
72
Как видно из (2.3.19), при переходе от элементарной схемы к соединенной,<br />
мощность не изменилась. Рассмотренные преобразования векторов<br />
тока и напряжения называются преобразованиями с сохранением<br />
мощности (с инвариантной мощностью).<br />
Равенство (2.3.18) отражает закон сохранения мощности в схеме:<br />
мощность источников равна мощности приемников. Покажем это.<br />
Подставим в (2.3.18) U=V-e и i=I-J:<br />
P=Ut·i=(Vt-et)·( I-J)= Vt·I – et·I – (Vt-et)·J= Vt·I – et·I – Ut·J .<br />
Таким образом, получили выражение:<br />
Р=Vt·I – et·I – Ut·J .<br />
Первое слагаемое в правой части соответствует потребляемой мощности<br />
в сопротивлениях Pz= Vt·I. Последние два слагаемых – мощность, генерируемая<br />
источниками: источниками напряжения Pe=e t·I и источниками<br />
тока PJ=Ut ·J .<br />
Очевидно, потребляемая мощность должна равняться генерируемой<br />
мощности Pz=Pe+PJ. Или, что то же самое:<br />
Pz - Pe - PJ = 0 = Р.<br />
Для преобразованных токов и напряжений, можно записать:<br />
P′z - P′e - P′J = 0 = Р′= P.<br />
Иначе говоря, закон (2.3.19) выражается в форме:<br />
Р’ = P = 0.<br />
Здесь важно отметить то обстоятельство, что данный закон был получен<br />
при том условии, что вектор тока и вектор напряжения преобразуются<br />
по законам (2.2.21). Если законы преобразования будут другими,<br />
то инвариантности мощности не будет. Действительно, пусть i=C∙i′,а закон<br />
преобразования напряжений будет другим: U′=Вt∙U, или U=Ut′·(В) -1 ,<br />
получаем:<br />
P = Ut∙C∙i′ = Ut′·(В) -1 ·С∙i′ .<br />
Мощности Р′ и P будут равны в том случае, если (В) -1 ·С=1 или С= В .<br />
Рассмотрим преобразование мощности источников при их эквивалентной<br />
замене. Если в схеме действуют только источники напряжения,<br />
то можно сосчитать суммарную мощность этих источников по формуле:<br />
Pe = eb ∙ ib,<br />
(2.3.20)<br />
где ib - вектор токов ветвей, eb – вектор источников напряжений ветвей.<br />
Если поменять все источники напряжения на эквивалентные источники<br />
тока Jb=-eb/R, то мощность этих источников будет равна<br />
PJ =U′b ∙ Jb,<br />
(2.3.21)<br />
где U′b –вектор напряжений ветвей, Jb - вектор источников тока ветвей.<br />
Сдвоенной мощностью называют сумму Pe+PJ [13]. Она должна оставаться<br />
неизменной при замене источников тока на эквивалентные источ-<br />
73
ники напряжения, а источников напряжения на эквивалентные источники<br />
тока. Действительно,<br />
PJ=U′b ∙Jb= Ub ∙ (–eb/Rb)=–(Rb · ib – eb) · eb/R=–(eb∙ib– eb ∙ eb/Rb)=–Pe+ eb 2 /Rb,<br />
откуда следует<br />
Pe+PJ =eb 2 /Rb.<br />
(2.3.22)<br />
При выводе (2.3.22) деление на Rb означает поэлементное деление.<br />
Кроме того, учтен тот факт, что при замене источника напряжения на<br />
эквивалентный источник тока, напряжения и токи ветвей остаются без<br />
изменений, т.е. U′b=Ub, i′b=ib.<br />
Так как в формулу (2.3.22) входят только значения источников ветвей<br />
и их сопротивлений, то она справедлива для любого соединения этих<br />
ветвей.<br />
Как было показано, инвариантность мощности следует из топологических<br />
законов преобразования тока и напряжения. Если постулировать<br />
инвариантность мощности, то можно получить закон преобразования<br />
напряжения. Например, для мощности в координатах ветвей имеем:<br />
P = Ut∙i = Ut∙C∙i′<br />
С другой стороны Ut′∙i′ = P′. Если считать, что P=P′, то отсюда следует,<br />
что Ut′=Ut∙C<br />
или, что то же:<br />
U′=Ct∙U.<br />
Постулат инвариантности мощности используется для получения<br />
закона преобразования напряжения в тех случаях, когда производится<br />
не топологический переход к новым координатам. Например, для<br />
получения уравнений напряжений для новых координат в частотной<br />
области.<br />
2.3.5. Уравнения обобщенной схемы в частотной области.<br />
В частотной области схемы замещения двухполюсников предельно<br />
просты. Сопротивления индуктивных и емкостных ветвей выражаются<br />
формулами, соответственно:<br />
zL=j·ω·L;<br />
zC=1/(j·ω·C),<br />
где ω – частота тока в ветви, j= −1 .<br />
Уравнения элементарной схемы так же записываются в обобщенной<br />
форме:<br />
U+e = z ∙ (i+J),<br />
источники в этой формуле являются независимыми источниками, либо<br />
представляют собой компоненты управляемых источников.<br />
Уравнение преобразования вектора напряжения оказывается в общем<br />
случае другим. Это связано с тем, что вычисление мощности при расчете<br />
с комплексными числами выполняется по формуле<br />
74
P=Ut * ·i. (2.3.23)<br />
где U* - комплексно-сопряженное число.<br />
Для инвариантных по мощности преобразований, получаем:<br />
i=C·i′,<br />
Ut * ·i = Ut * ·C·i′ = Ut * ′·i′.<br />
при выводе учтено, что Ut * ·C·= C * t·U.<br />
Таким образом, закон преобразования напряжений содержит транспонированную<br />
комплексно-сопряженную матрицу:<br />
U′=C * t·U.<br />
(2.3.24)<br />
Подставляя в уравнения элементарной схемы уравнения преобразования<br />
токов и напряжений, получаем<br />
U′+e′ = z′ ∙ (i′+J′),<br />
где<br />
z′= С * t ∙ z ∙ C;<br />
e′=C * (2.3.25)<br />
t∙e.<br />
Как видно из (2.3.25) в формулах преобразования сопротивлений и<br />
источников напряжений также присутствует транспонированная<br />
комплексно-сопряженная матрица Сt*. Если эта матрица содержит только<br />
действительные числа, то формулы преобразования ничем не отличаются<br />
от рассмотренных. К таким случаям можно отнести топологические<br />
преобразования. Комплексные числа в матрицах преобразования<br />
появляются, например, при переходе к координатам токов симметричных<br />
составляющих.<br />
В методе симметричных составляющих трехфазные токи ia, ib, ic заменяются<br />
новыми токами i0, i1, i2, которые носят название соответственно<br />
токов нулевой, прямой и обратной последовательностей. Переход выполняется<br />
по формулам:<br />
ia = i0 i1 i2 ,<br />
ib = 1<br />
i0a2 ·i1a·i2 ,<br />
3<br />
ic = 1<br />
. (2.3.26)<br />
i0a· i1a2·i2<br />
3<br />
где a= e j 120 ° , a 2 = e -j120 ° - операторы, которые удовлетворяют уравнению<br />
1+a+a 2 =0 .<br />
Матрица преобразований, соответствующая уравнениям (2.3.26):<br />
0 1 2<br />
a 1 1 1<br />
C =1/√3 b 1 a 2 a<br />
c 1 a a 2<br />
Введение множителя 1/√3 связано с постулированием инвариантности<br />
мощности.<br />
75
2.3.6. Алгоритм формирования и расчета уравнений резистивной<br />
схемы.<br />
Далее приводится алгоритм, позволяющий автоматически сформировать<br />
необходимые векторы и матрицы по методу контурных токов и<br />
рассчитать токи, напряжения и мощность ветвей резистивной схемы.<br />
Исходными данными является список с информацией о каждой ветви.<br />
Каждая ветвь должна быть представлена в виде обобщенной ветви с последовательно<br />
включенным источником напряжения и параллельно<br />
включенным источником тока. Список оформляется оператором list по<br />
правилам пакета SciLab. В состав списка входит имя ветви, номер начального<br />
и номер конечного узла ветви, номинал ветви, значение источника<br />
напряжения ветви, значение источника тока ветви. Имя в данном<br />
алгоритме не обрабатывается и вводится для удобства ввода. Фактически<br />
ветви идентифицируются номерами, соответствующими порядку их<br />
ввода. Узлы должны быть пронумерованы последовательно, начиная с<br />
единицы. В алгоритме наибольший номер узла принимается за общий<br />
узел.<br />
Алгоритм переформировывает исходные данные, представленные<br />
списком соединений в массивы векторов источников тока и напряжения<br />
ветвей и матрицы сопротивлений ветвей. Далее формируются матрицы<br />
соединений и затем матрицы, необходимые для расчета токов и напряжений<br />
ветвей (в соответствии с формулами (2.3.5)-(2.3.8) ).<br />
В алгоритме применены следующие встроенные функции SciLab:<br />
size — определение размера списка или массива, zeros — обнуление<br />
массива, max — определение максимального числа из списка чисел,<br />
make_graph — создание графа, node_number — определение числа узлов<br />
графа , show _graph — отображение графа на экране, graph_2_mat — формирование<br />
упакованной матрицы инциденций графа, full — преобразование<br />
упакованной матрицы в полную матрицу, min _weight _tree — формирование<br />
дерева графа, setdiff — вычитание множеств.<br />
clear ( ); //очистка данных.<br />
// Ввод списка соединений:<br />
// имя нач. кон. парам. e J<br />
newshema= list ('r1', [2 3], 2, 0, 0,... //многоточие означает перенос строки<br />
'r2', [3 2], 3, 0, 0.33333,... //в столбце парам. задаются номиналы<br />
'r3', [1 2], 4, 0, 0,... // ветвей<br />
'r4', [3 4], 5, 0, 0,...<br />
'r5', [4 1], 6, 0, 0,...<br />
'r6', [4 1], 7, 0, 0);<br />
//определение числа ветвей - arc, объявление массива сопротивлений - Z<br />
arc=size(newshema)/5; Z=zeros(arc,arc);<br />
//Извлечение информации из списка соединений и формирование новой информации:<br />
//ta-массив начальных узлов, he-массив конечных узлов, Z-матрица сопротивлений,<br />
// e-вектор источников напряжений ветвей, J-вектор источников тока ветвей<br />
k=2;<br />
for i=1:arc<br />
ta(i)=newshema(k)(1); he(i)=newshema(k)(2);<br />
76
Z(i,i)=newshema(k+1); e(i)=newshema(k+2);<br />
J(i)=newshema(k+3); k=k+5;<br />
end;<br />
//определение числа узлов. Число узлов должно быть равно наибольшему номеру узла<br />
//наибольший номер узла принимается за общий узел<br />
yzlov1=max (ta);yzlov2=max (he);yzlov=max (yzlov1,yzlov2);<br />
//создание направленного графа g по введенной информации<br />
g = make_graph ('cep1', 1, yzlov, ta', he');<br />
//создание ненаправленного графа g0 по введенной информации<br />
g0 = make_graph ('cep1', 0, yzlov, ta', he');<br />
g('node_x')=[200 100 150 250 ]; //ввод х-координат узлов<br />
g('node_y')=[200 200 100 100 ]; //ввод у-координат узлов<br />
// show _ graph (g);<br />
yzlov = node_number (g); //определение числа узлов введенного графа<br />
//формирование матрицы инциденций "узел-ветвь" для введенного графа g<br />
A=full (graph_2_mat (g,'node-arc'));<br />
//формирование дерева графа<br />
derevo= min _ weight _ tree(yzlov,g0);<br />
//формирование расширенной узловой матрицы<br />
at=zeros(arc,arc); //объявление матрицы At;<br />
at(1:yzlov-1, 1:arc)=A(1:yzlov-1, 1:arc); //заполнение узловой части At;<br />
hord=setdiff (1:arc,derevo); //формирование массива хорд;<br />
size_hord=size(hord); //определения числа хорд;<br />
for ii=1:size_hord(2) //заполнение контурной<br />
at(yzlov-1+ii, hord(ii))=1; //части расширенной узловой<br />
end; //матрицы;<br />
c=at^(- 1); //вычисление контурной матрицы;<br />
er=c'*e; Jr=at*J; //вычисление векторов источников схемы;<br />
Zr=c'*Z*c; //вычисление матрицы сопротивлений схемы;<br />
Yk=Zr(yzlov:arc, yzlov:arc)^(- 1); //вычисление матрицы контурных проводимостей<br />
//вычисление матриц взаимных сопротивлений узловых и контурных координат<br />
zok=Zr(1:yzlov-1,yzlov:arc); zko=Zr(yzlov:arc,1:yzlov-1);<br />
//вычисление узловых матриц сопротивлений<br />
zo =Zr(1:yzlov-1,1:yzlov-1); zor=zo-zok*Yk*zko;<br />
//вычисление контурных и узловых источников напряжений<br />
ek=er(yzlov:arc); eo=er(1:yzlov-1);<br />
//вычисление контурных и узловых источников тока<br />
Jk=Jr(yzlov:arc); Jo=Jr(1:yzlov-1);<br />
//вычисление контурных токов и узловых потенциалов<br />
ik=Yk*ek−Yk*zko*Jo-Jk; Uo=zor*Jo+zok*Yk*ek−eo;<br />
//вычисление токов и напряжений ветвей<br />
iv= c(1:arc,yzlov:arc)* ik; Uv= at(1:yzlov−1,1:arc)'* Uo;<br />
//вычисление суммарной мощности источников схемы<br />
P= J'* Uv // P= e'* iv<br />
Для того, что бы вывести в диалоговое окно нужный вектор или матрицу,<br />
достаточно заменить в конце соответствующего выражения точку<br />
с запятой на запятую.<br />
В приведенном алгоритме можно выделить следующие части:<br />
(1) Ввод данных;<br />
(2) Перевод введенных данных во внутреннюю форму;<br />
(3) Вычисления;<br />
77
(4) Перевод результатов вычислений из внутренней формы во внешнюю<br />
форму;<br />
(5) Отображение данных.<br />
Ввод данных выполняется посредством списка ветвей, в котором<br />
перечислены в строго определенном порядке: имя ветви, начальный и<br />
конечный номер ветви, сопротивление ветви, источник напряжения ветви<br />
и источник тока ветви. Эти данные оформляются по правилам системы<br />
SciLab. Введенные данные представляют собой список соединений<br />
ветвей и параметров ветвей. Этого списка достаточно, чтобы выполнить<br />
расчет схемы. Перед расчетом необходимо перевести исходные данные<br />
во внутреннюю форму.<br />
Перевод введенных данных во внутреннюю форму. В данном случае<br />
это форма матриц и векторов. Если формирование векторов источников<br />
ветвей и матрицы сопротивлений ветвей не представляет особой сложности,<br />
то формирование матриц соединений требует большее количество<br />
операторов. По этой причине многие программы схемотехнического<br />
моделирования не используют матрицы соединений. Для формирования<br />
расчетных матриц и векторов используют алгоритмы, которые иногда<br />
называют алгоритмами поэлементного вклада. Один из таких алгоритмов<br />
рассматривается далее.<br />
Вычисления. В результате перевода данных во внутреннюю форму<br />
имеем следующие матрицы:<br />
матрица сопротивлений ветвей — Z;<br />
вектор источников напряжений — e;<br />
вектор источников тока — J;<br />
контурная матрица соединений — c;<br />
транспонированная узловая матрица соединений — at.<br />
Кроме этого, вычисляется число ветвей — arc, число узловых пар -<br />
yzlov.<br />
Число контуров вычисляется как разница arc и yzlov. Вычисляемые матрицы<br />
и порядок их вычислений прокомментированы в алгоритме.<br />
Обозначения матриц в алгоритме практически совпадают с обозначениями<br />
в формулах.<br />
Перевод результатов вычислений из внутренней формы во внешнюю<br />
форму. В данном алгоритме результаты вычислений представлены в<br />
форме векторов и матриц. Такой формы достаточно, что бы определить<br />
значение тока или напряжения в ветви: номер элемента в векторе соответствует<br />
номеру ветви схемы. При небольшом числе ветвей, как в<br />
рассматриваемом примере, переводить данные во внешнюю форму нет<br />
необходимости.<br />
Отображение данных. Для просмотра результатов вычислений используется<br />
диалоговое окно SciLab. Для вывода результатов в это диалого-<br />
78
вое окно достаточно, в соответствии с правилами синтаксиса SciLab,<br />
убрать точку с запятой после соответствующего оператора.<br />
2.3.7. Формирование уравнений R-,L-,C- схем и расчет переходных<br />
процессов.<br />
Рассмотрим расчет переходных процессов в схеме с линейными RLC<br />
компонентами. Ниже приводится алгоритм расчета и его описание. Далее<br />
приводится программа на языке математического пакета SciLAB.<br />
Комментарии в программе дополняют описание алгоритма.<br />
1<br />
2<br />
3<br />
4<br />
7<br />
Ввод расчетного шага, времени<br />
расчета.<br />
Ввод списка соединений<br />
да<br />
Извлечение информации из<br />
списка соединений.<br />
Формирование матриц сопротивлений<br />
и источников в<br />
координатах ветвей<br />
Формирование топологических<br />
матриц<br />
Вычисление матриц сопротивлений<br />
и проводимостей в<br />
координатах схемы<br />
5 Начало цикла расчета<br />
6<br />
8<br />
конец<br />
цикла?<br />
Расчет источников в<br />
координатах схемы<br />
Расчет откликов в координатах<br />
схемы<br />
Расчет откликов в координатах<br />
ветвей<br />
Вывод результатов расчета<br />
В первом блоке выполняется<br />
ввод расчетного шага и времени<br />
расчета. По этим данным<br />
вычисляется число расчетных<br />
точек для формирования цикла<br />
расчета. Далее вводится список<br />
соединений ветвей. Формат<br />
этого списка соответствует<br />
формату списка данных list<br />
языка SciLAB. Порядок перечисления<br />
компонент этого<br />
списка максимально приближен<br />
к стандарту списка соединений<br />
Spice-программ. Основное<br />
отличие от Spice-формата<br />
состоит в том, что источники<br />
напряжения и (или) тока вводятся<br />
как атрибуты ветви наравне<br />
с номиналом ветви. Номер<br />
ветви соответствует порядковому<br />
номеру появления описания<br />
ветви в списке list.<br />
Во втором блоке выполняется<br />
извлечение информации из<br />
списка соединений, то есть<br />
распознавание типа ветви, расчет<br />
резистивного сопротивления<br />
для инерционной ветви по<br />
методу Эйлера 1-го порядка и<br />
запись полученного значения в<br />
матрицу сопротивлений ветви.<br />
Одновременно заполняется<br />
вектор источников тока и источников напряжений ветвей. Кроме того,<br />
79
формируется массив номеров ветвей, соответствующих емкостным и<br />
индуктивным ветвям.<br />
В третьем блоке выполняется формирование топологических матриц.<br />
Для этой цели используется функция formc, написанная на SciLab<br />
и приведенная далее за основным алгоритмом. Особенность функции<br />
состоит в том, что она может сформировать топологические матрицы<br />
для несвязных схем, то есть схем, в состав которых входят топологически<br />
изолированные подсхемы.<br />
В четвертом блоке выполняется вычисление матриц сопротивлений в<br />
координатах схемы, то есть в контурном и узловом базисах. Поскольку<br />
расчет схемы соответствует методу контурных сопротивлений, то в этом<br />
блоке вычисляется матрица контурных проводимостей.<br />
В пятом блоке формируется цикл расчета переходного процесса. Так<br />
как схема линейная, то этот цикл организуется после вычисления матриц<br />
сопротивлений, проводимостей и топологических матриц. При формировании<br />
цикла производится проверка на условия окончания цикла.<br />
Если параметры цикла заданы неверно, например, число расчетных точек<br />
оказалось меньше или равно начальному значению переменной цикла,<br />
то цикл выполнятся не будет.<br />
В шестом, седьмом и восьмом блоках, выполняется расчет схемы по<br />
соотношениям, приведенным в разделе 2.3.3. В восьмом блоке для инерционных<br />
ветвей выполняется перерасчет источников тока и напряжения<br />
в соответствии с методом Эйлера 1-го порядка.<br />
clear ();<br />
//Ввод расчетного шага dt и времени расчета T<br />
dt=0.000001;T=0.0002;<br />
//Вычиcление числа расчетных точек NN<br />
NN=round (T/dt); //вычисляет наименьшее целое от деления<br />
//задание массива времени<br />
t=[0:dt:T]'; //одинарная кавычка означает транспонирование<br />
/ /Ввод списка соединений<br />
// имя нач. кон. парам. e J<br />
newshema=list ( ' r1', [2 3], 2, 1, 0,...<br />
'c1', [3 2], 10.0e-6, -0.5, 0.,...<br />
'r3', [1 2], 4, 0, 0,...<br />
'L1', [3 4], 0.10e-3, -0.00, -1.0,...<br />
'r5', [4 1], 6, 0, 0,...<br />
'r6', [4 2], 7, 0, 0);<br />
//определение числа ветвей-arc, объявл массива сопротивлений Z<br />
arc=size(newshema)/5; Z=zeros(arc,arc);<br />
/ / Извлечение информации из списка соединений<br />
k=2; kc=0; kL=0;<br />
for i=1:arc<br />
ta(i)=newshema(k)(1); he(i)=newshema(k)(2);<br />
sim(i)= convstr (newshema(k-1),'u');<br />
a=stripblanks (sim(i)); //удаление пробелов<br />
a=part ([a],[1]); //определение 1-го символа в имени ветви<br />
select a<br />
80
case 'R' then //если 'R' то резистор<br />
Z(i,i)=newshema(k+1);<br />
case 'C' then //если 'С' то емкость<br />
kc=kc+1; nomc(kc)=i; //формирование списка емкостей<br />
Z(i,i)=dt/newshema(k+1);<br />
case 'L' then //если 'L' то индуктивность<br />
kL=kL+1; nomL(kL)=i; //формирование списка индуктивностей<br />
Z(i,i)=newshema(k+1)/dt;<br />
else //если не распознана ветвь<br />
'Abort!!! There is no model '+sim(i)<br />
abort<br />
end;<br />
// формирование векторов источников ветвей<br />
e(i)=newshema(k+2); J(i)=newshema(k+3); k=k+5;<br />
end;<br />
/ / формирование топологических матриц<br />
yz1=max (ta); yz2=max (he); yzlov=max (yz1,yz2) //определение числа узлов схемы<br />
[C,A,g]= formc (ta',he');<br />
/ / в ычисление матриц сопротивлений и проводимостей схемы<br />
Zr=C'*Z*C;<br />
Yk=Zr(yzlov:arc,yzlov:arc)^(- 1);<br />
zok=Zr(1:yzlov-1,yzlov:arc); zko=Zr(yzlov:arc,1:yzlov-1);<br />
zo =Zr(1:yzlov-1,1:yzlov-1); zor=zo-zok*Yk*zko;<br />
for n=1:NN+1, / /Расчет в цикле по времени<br />
er=C'*e; Jr=A'*J;<br />
ek=er(yzlov:arc); eo=er(1:yzlov-1);<br />
Jk=Jr(yzlov:arc); Jo=Jr(1:yzlov-1);<br />
ik=Yk*ek-Yk*zko*Jo-Jk; Uo=zor*Jo+zok*Yk*ek-eo;<br />
iv=C(1:arc,yzlov:arc)*ik; Uv=A(1:arc,1:yzlov-1)*Uo;<br />
/ / начальные условия для следующего шага<br />
if kL 0 then<br />
for j=1:kL<br />
J(nomL(j))=- iv(nomL(j)); //начальные условия для индуктивностей<br />
end;<br />
end;<br />
if kc0 then<br />
for j=1:kc<br />
e(nomc(j))=- Uv(nomc(j)); //начальные условия для емкостей<br />
end;<br />
end;<br />
/ / в ывод в массивы для построения графиков<br />
ivL(n)=iv(4); uvc(n)=Uv(2);<br />
end; / / о кончание цикла по времени<br />
plot2d (t, [uvc,ivL] ) // построение графиков<br />
xgrid(2)<br />
Ниже приводится функция для расчета топологических матриц. Входными<br />
данными для функции является список начальных узлов ветвей ta<br />
и список конечных узлов ветвей he. В результате вычисляются ортогональные<br />
матрицы: контурная С и узловая А, кроме того формируется<br />
информация о топологическом графе схемы g, позволяющая отобразить<br />
граф схемы по введенному списку начальных и конечных узлов схемы.<br />
81
function [C,A,g]=formc(ta,he)<br />
maxv1=max (ta);maxv2=max (he);maxv= max (maxv1,maxv2);<br />
g = make _graph ('cep1',1,maxv,ta,he);<br />
g1=make _graph ('cep2',0,maxv,ta,he);<br />
a=graph _2_mat (g,'node-arc');<br />
A0=full (a); arc = arc_number (g); node = node_number (g);<br />
nc=connex (g);<br />
if nc==1 then<br />
t= min _weight _tree (node,g1);<br />
yzl=maxv; hordsum=setdiff (1:arc,t)<br />
at(1:node-1, 1:arc)=A0(1:node-1, 1:arc);<br />
size_hord=size(hordsum);<br />
for i=1:size_hord(2) at(node-1+i,hordsum(i))=1; end;<br />
else<br />
inow=0;kd=0;<br />
for ks=1:nc<br />
ns=con_nodes(ks,g); size_ns=size(ns); kyz=size_ns(2);<br />
for j=1:kyz-1 yz0(kd+j)=ns(j); end; kd=kd+kyz-1;<br />
k=0;vetv= zeros(arc);<br />
for i=1:kyz<br />
i1=ns(i);<br />
for j=1:arc<br />
jot=j;<br />
if A0(i1,j)==- 1. then<br />
k=k+1; vetv(k)=j;<br />
end;<br />
end;<br />
end;<br />
gpod1=subgraph (ns,'nodes',g1); node1 = node_number (gpod1);<br />
t= min _weight _tree (node1,gpod1); size_t= size(t);<br />
for ii=1:size_t(2)<br />
tnew(ii)=vetv(t(ii));<br />
end;<br />
hord=setdiff (vetv',tnew');<br />
for j=1:k-ii hordsum(inow+j)=hord(j); end; inow=inow+k-ii;<br />
end;<br />
hordsum=hordsum'; yzl=yz0'; size_yz0=size(yz0');<br />
for j=1:size_yz0(2)<br />
for i=1:node<br />
if i==yz0(j) then<br />
at(j,1:arc)=A0(i,1:arc);<br />
end;<br />
end;<br />
end;<br />
size_hord=size(hordsum); nhord=size_hord(2);<br />
for i=1:nhord at(size_yz0(2)+i,hordsum(i))=1; end;<br />
end;<br />
A=at'; C=at^(- 1);<br />
endfunction ;<br />
82
2.3.8. Расчет схем в системе CAD/CAM<br />
Для расчета схем в системах сквозного автоматизированного проектирования<br />
требуется определить схемные форматы данных этих систем.<br />
Из них надо выбрать тот формат, который наиболее близок к формату<br />
данных расчетной программы.<br />
В качестве примера рассматривается система сквозного проектирования<br />
печатных плат KiCAD. В систему входит графический редактор<br />
схем, в котором можно создать текстовый список соединений схемы в<br />
Spice-формате. Кроме этого формата, можно создавать списки соединений<br />
еще в нескольких форматах. Spice-формат является наиболее подходящим<br />
для моделирования схем. Рассмотрим кратко структуру этого<br />
формата данных. Остановимся только на той информации, которой достаточно<br />
для расчета резистивной схемы с источниками постоянного<br />
тока и напряжения. Более подробные сведения о Spice-формате можно<br />
получить, например, в [14].<br />
Информация о схеме располагается построчно. Каждая строка содержит<br />
описание ветви, которое включает записи, разделенные пробелами<br />
в следующей последовательности:<br />
имя_ветви, 1-й_узел, 2-й_узел, номинал_ветви, дополнительные_параметры.<br />
Имя ветви должно начинаться с определенного символа. Имя резистивной<br />
ветви должно начинаться с R или r, имя ветви с источником<br />
напряжения должно начинаться с V или v, имя ветви с источником тока<br />
должно начинаться с I или i. Имя ветви не должно повторяться. Для<br />
имени отведем не больше 4-х символов.<br />
Номинал ветви определяет числовое значение основного параметра<br />
ветви. В Spice-формате в числах можно применять масштабный множитель.<br />
Например, вместо 10 3 можно поставить символ к или К, но в приведенном<br />
ниже алгоритме перед степенью числа ставится символ е или<br />
Е, например 1е3 соответствует 10 3 .<br />
В качестве дополнительного параметра для источника напряжения<br />
будем использовать значение последовательного сопротивления. Это<br />
значение должно быть представлено в следующей форме: R=число или<br />
r=число. Дополнительный параметр источника тока задается так же,<br />
только сопротивление должно соответствовать параллельному сопротивлению<br />
источника. Если дополнительный параметр отсутствует, то<br />
для источника напряжения по умолчанию r=0, для источника тока<br />
r=10 10 .<br />
Дополнительными параметрами для сопротивления будем считать последовательный<br />
источник напряжения и параллельный источник тока.<br />
Схема включения этих источников соответствует схеме обобщенной<br />
ветви. Так как Spice-формат не предусматривает такого способа задания<br />
источников, то будем считать, что это расширением Spice-формата. Зна-<br />
83
чения источников должны быть заданы в следующих формах: v=число,<br />
или V=число, или i=число, или I=число. Одновременно могут быть заданы<br />
оба источника.<br />
Если строка начинается с символа '*', то эта строка игнорируется. Ее<br />
можно использовать как комментарий. Если в строке присутствует<br />
восклицательный знак '!', то строка, начиная с этого символа, игнорируется.<br />
Переносы строки не предусмотрены.<br />
Заканчивать список соединений должна строка, начинающаяся с символов<br />
'.end'.<br />
Приведем пример схемы, созданной в схемном редакторе KiCAD.<br />
Список соединений имеет следующий вид:<br />
* EESchema Netlist Version 1.1 (Spice format) creation date: 27/8 / 2006- 07:51:05<br />
v1 5 1 2 r=2<br />
R8 4 3 1<br />
R4 5 2 1<br />
R5 2 4 1<br />
R3 1 3 0.5<br />
R2 4 3 1<br />
R1 1 2 2<br />
.end<br />
Та же схема может иметь другой вид:<br />
Здесь вместо изображения с источником напряжения применено изображение<br />
резистора R7 с источником напряжения, заданным через дополнительный<br />
параметр. Список соединений для этой схемы:<br />
84
* EESchema Netlist Version 1.1 (Spice format) creation date: 27/8 / 2006- 20:12:32<br />
R7 4 2 2 v=2<br />
R8 5 3 1<br />
R4 4 1 1<br />
R5 1 5 1<br />
R3 2 3 0.5<br />
R2 5 3 1<br />
R1 2 1 2<br />
.end<br />
Список соединений системой KiCAD автоматически создается в<br />
файле с расширением *.cir.<br />
Ниже приводится программа, читающая данные из файла со списком<br />
соединений в Spice-формате и выполняющая расчет резистивных схем<br />
по постоянному току.<br />
Интерфейс программы минимален. При запуске программы появляется<br />
окно, в котором можно ввести файл, отредактировать его в блокноте<br />
и запустить расчет схемы:<br />
Результаты расчета: ток и напряжение каждой ветви записываются в<br />
исходный файл после списка соединений. Например:<br />
* EESchema Netlist Version 1.1 (Spice format) creation date: 27/8 / 2007- 07:51:05<br />
v1 5 1 2 r=2<br />
R8 4 3 1<br />
R4 5 2 1<br />
R5 2 4 1<br />
R3 1 3 0.5<br />
R2 4 3 1<br />
R1 1 2 2<br />
.end<br />
результаты расчета<br />
ветвь v1 ток = 0.4999999 напряжение = -1.000000<br />
ветвь R8 ток = -0.1250000 напряжение = -0.1250000<br />
ветвь R4 ток = -0.4999999 напряжение = -0.4999999<br />
ветвь R5 ток = -0.2499999 напряжение = -0.2499999<br />
ветвь R3 ток = 0.2499999 напряжение = 0.1250000<br />
ветвь R2 ток = -0.1250000 напряжение = -0.1250000<br />
ветвь R1 ток = 0.2500000 напряжение = 0.5000000<br />
85
После выполнения расчета появляется диалоговое окно с предложением<br />
повторить расчет.<br />
Приведем алгоритм программы:<br />
В первом блоке объявляются размеры массивов. Массивы подразделены<br />
на массивы, относящиеся к схеме и массивы, необходимые для<br />
трансляции данных из исходного файла.<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
Объявление размерностей<br />
массивов<br />
Создание интерфейса<br />
пользователя<br />
Ввод строки из входного файла,<br />
выделение слов в строке<br />
Обработка слов строки,<br />
перевод данных во внутренний<br />
формат массивов<br />
Формирование топологической<br />
матрицы<br />
Расчет напряжений и токов в<br />
ветвях<br />
Вывод результатов расчета в<br />
файл<br />
повторить<br />
расчет?<br />
Выход<br />
да<br />
Во втором блоке выполняется<br />
обнуление массивов и создается<br />
пользовательский интерфейс для<br />
ввода данных, предварительно<br />
подготовленных в графическом<br />
редакторе. Файл с данными имеет<br />
текстовый spice-формат и<br />
имеет должен иметь расширение<br />
*.cir. Для просмотра и редактирования<br />
данных можно воспользоваться<br />
текстовым редактором,<br />
например, блокнотом, входящим<br />
в систему Windiws: notepad.exe.<br />
Лучше применить текстовый редактор,<br />
читающий кириллицу в<br />
DOS кодировке, например,<br />
polyglot, Koedit и другие.<br />
В третьем блоке выполняется<br />
ввод строки из входного<br />
файла и выделение слов из строки.<br />
Эта часть алгоритма составлена<br />
на основе фортран-программы,<br />
приведенной в [15].<br />
В четвертом блоке обрабатываются<br />
слова введенной строки.<br />
Формируются исходные масси-<br />
вы источников ветвей и сопротивлений ветвей. В соответствии с тензорной<br />
технологией, основным топологическим элементом является ветвь.<br />
Источники в ветвях — источники тока и напряжения, а также сопротивление<br />
ветви являются атрибутами ветви. По умолчанию, если сопротивление<br />
источника напряжения не введено, то сопротивление приравнивается<br />
нулю. Если сопротивление источника тока не введен, ему присваивается<br />
значение 10 10 . Для резистора, кроме номинала, могут быть добавлены<br />
значения параллельного источника тока и источника напряжения<br />
(см. схему обобщенной ветви рис.2.1.1). В результате работы этой части<br />
86
алгоритма имеем матрицу сопротивлений ветвей zv, массив источников<br />
тока ветвей jv, массив источников напряжений ветвей ev.<br />
В пятом блоке формируются топологические ортогональные матрицы:<br />
контурная и узловая. Для этой цели используется подпрограмма<br />
derevo. Вычисление контурной матрицы выполняется инвертированием<br />
узловой матрицы. Для инвертирования матрицы используются подпрограммы<br />
библиотеки SLATEC : sgefa и sgedi .<br />
В шестом блоке на основе метода контурных токов вычисляются массивы<br />
напряжений ветвей uv и токов ветвей iv. Вычисления производятся<br />
по тем же формулам, что и в алгоритме на SciLAB раздела 2.3.7. Для инвертирования<br />
матрицы контурных сопротивлений использована подпрограмма<br />
inverse4, [16],текст которой приводится за основным алгоритмом.<br />
Для перемножения матриц используется встроенная Фортрановская<br />
функция matmul.<br />
В седьмом блоке выполняется вывод результатов расчета — токов и<br />
напряжений ветвей в конец входного файла.<br />
Для оценки времени счета используется обращение к встроенной<br />
Фортран-подпрограмме CPU_TIME При первом обращении в переменную<br />
rt1 записывается процессорное время прошедшее с начала загрузки<br />
программы. Следующее обращение к этой подпрограмме происходит<br />
перед формированием топологических матриц, процессорное время записывается<br />
в rt2 и последнее обращение происходит после расчетов,<br />
перед выводом результатов в файл, процессорное время записывается в<br />
rt3. Таким образом, разница rt2 и rt1 соответствует подготовке информации<br />
для расчета, разница rt3 и rt2 соответствует процессорному времени,<br />
затрачиваемому непосредственно на расчет схемы. В DOS-окно<br />
время на подготовку и время на расчет выводятся соответственно под<br />
именами time1 и time2.<br />
87
program kontur<br />
!******* 1. Объявление внутренних массивов схемы *****<br />
integer, parameter:: nv=400 ! максимальное число ветвей<br />
character (len = 4 ) namv(nv),name0 ! имена ветвей<br />
integer np1(nv),np2(nv) ! номера начала и конца ветвей<br />
character (len=8) symnp1(nv),symnp2(nv), nameyz ! имена нач. и кон. узлов<br />
integer yzpar,kp,kv ! число узловых пар, узлов и ветвей<br />
real ev(nv), jv(nv), zv(nv,nv) ! параметры ветвей<br />
real er(nv), jr(nv), zr(nv,nv) ! параметры схемы<br />
real Yr(nv,nv), Uv(nv), Iv(nv) ! узловые сопр. токи и напр. ветвей<br />
real Csoed(nv,nv),Asoed(nv,nv) ! матрицы соединений<br />
!*******объявления для транслятора****<br />
character (len = 20) words(7*nv) ! Массив слов текста<br />
character (len = 80) st,namefile ! Строка текста<br />
character (len = 20) name1 ! текст для числа<br />
integer wbegin, wend, neww, lst<br />
!объявления для интерфейса<br />
character(len=80)::CFIL1=' '<br />
character(len=50)::help='программа расчета R-цепи'<br />
integer, parameter :: units = 1 ! Номер устройства для файла<br />
!****** 2. Создание интерфейса пользователя ******<br />
ipovtor=1 ! флаг повторения расчета<br />
osnov: do while (ipovtor==1)<br />
kv=0 ! текущая ветвь<br />
zv=0;ev=0;jv=0;np1=0;np2=0;Csoed=0;Asoed=0 ! обнуление массивов<br />
er=0;jr=0;zr=0;Yr=0;Uv=0;Iv=0<br />
call swgopt('center','position')<br />
CALL SWGHLP (help)<br />
CALL SWGWTH (-30)<br />
CALL WGINI ('vert', IP)<br />
call wgcmd (IP, 'открыть блокнот','polyglot.exe',ID) ! запуск текстового редактора<br />
CALL WGLAB (IP, 'файл с данными:', ID)<br />
CALL WGFIL (IP, 'открыть файл', CFIL1, '*.cir', ID_FIL1)<br />
CALL WGOK (IP, ID_OK); CALL WGQUIT (IP, ID_Q)<br />
CALL WGFIN<br />
call GWGFIL(ID_FIL1,CFIL1)<br />
!****** 3. Ввод строки из входного файла, выделение слов в строке ******<br />
CALL CPU_TIME (rt1)<br />
! Запишем все слова строки в массив words<br />
open(units,file=trim(CFIL1))<br />
do while ( 1==1) ! Цикл обработки строк<br />
neww = 0 ! neww - число слов в строке<br />
read(units,'(a)',end=10,iostat=ios)st ! Ввод строки текста<br />
write(*, *) st ! Контрольный вывод<br />
st=adjustl(st) ! левое выравнивание<br />
if (index(st,'*')==1) cycle ! чтобы игнорировать строку начин. с "*"<br />
if (st(1:4)=='.end') exit<br />
lst = len_trim(st) ! Длина строки без хвостовых пробелов<br />
k=index(st,';') ! чтобы игнорировать часть строки начин. с ";"<br />
if (k==1) cycle<br />
if (k>=1) lst = len_trim(st(1:k-1))<br />
if (index(st(1:1),'.')/=0) cycle<br />
wbegin = 0 ! wbegin - начало текущего слова в строке<br />
do j = 1, lst ! Просмотр всех символов строки<br />
if (st(j:j) == ' ') then<br />
if (wbegin > 0) call addword( words, st, wbegin, wend, neww )<br />
88
else if (wbegin == 0) then ! Обнаружено начало слова<br />
wbegin = j; wend = j<br />
else<br />
wend = wend + 1 ! Перемещение по текущему слову<br />
endif<br />
end do<br />
if (wbegin > 0) call addword(words, st, wbegin, wend, neww)<br />
!*** 4. Обработка слов строки, перевод данных во внутренний формат массивов ***<br />
if (neww==0) cycle !если слов нет, то игнорировать обработку<br />
kv=kv+1 ! новая строка<br />
if (kv>nv) then<br />
write(name0,*)nv<br />
call DWGMSG('Слишком много ветвей: > '//name0)<br />
stop<br />
endif<br />
namv(kv)=words(1) ! запись имени ветви<br />
read(words(2),*)symnp1(kv) ! запись 1-го узла<br />
read(words(3),*)symnp2(kv) ! запись 2-го узла<br />
! запись величин<br />
if (words(1)(1:1)=='v' .or. words(1)(1:1)=='V') then<br />
read(words(4),*)ev(kv) ! запись источника напряж<br />
zv(kv,kv)=0 ! запись внутр. сопрот. по умолч.<br />
if (neww>4) then<br />
k=index(st,'=')<br />
name1=trim(st(k+1:))<br />
read(name1,*)zv(kv,kv) ! запись введенного сопротивления<br />
endif<br />
elseif (words(1)(1:1)=='i' .or. words(1)(1:1)=='I') then<br />
read(words(4),*)jv(kv) ! запись источника тока<br />
zv(kv,kv)=1.0e10 ! запись внутр. сопрот. по умолч.<br />
if (neww>4) then<br />
k=index(st,'=')<br />
name1=trim(st(k+1:))<br />
read(name1,*)zv(kv,kv) ! запись введенного сопрот.<br />
endif<br />
elseif (words(1)(1:1)=='r' .or. words(1)(1:1)=='R') then<br />
read(words(4),*)zv(kv,kv) ! запись сопротивления<br />
if (neww>4) then<br />
do j=5,neww<br />
k=index(words(j),'i')<br />
if (k/=0 .or. index(st,'I')/=0 ) then<br />
name1=trim(words(j)(3:))<br />
read(name1,*)jv(kv)<br />
endif<br />
k=index(words(j),'v')<br />
if (k/=0 .or. index(st,'V')/=0 ) then<br />
name1=trim(words(j)(3:))<br />
read(name1,*)ev(kv)<br />
endif<br />
end do<br />
endif<br />
else<br />
write(*,*) 'не могу распознать тип ветви ',trim(words(1)),' !?'<br />
stop<br />
endif<br />
10 if (ios/=0) exit<br />
end do<br />
89
!нумерация узлов<br />
k=1;m=0<br />
do i=1,kv<br />
nameyz=symnp1(i)<br />
do j=1,kv<br />
if (np1(j)==0.and.nameyz==symnp1(j)) then<br />
np1(j)=k;m=1; endif<br />
if (np2(j)==0.and.nameyz==symnp2(j)) then<br />
np2(j)=k;m=1; endif<br />
end do<br />
if (m==1) then; m=0;k=k+1; endif<br />
end do<br />
do i=1,kv<br />
nameyz=symnp2(i)<br />
do j=1,kv<br />
if (np2(j)==0.and.nameyz==symnp2(j)) then<br />
np2(j)=k;m=1; endif<br />
end do<br />
if (m==1) then; m=0;k=k+1; endif<br />
end do<br />
!maxyz=k-1<br />
!контрольный вывод введенных ветвей<br />
write(*, *) 'Число ветвей kv =', kv<br />
do j = 1, kv<br />
write(*, *) namv(j),' от ',trim(symnp1(j)),np1(j),' до ', &<br />
& trim(symnp2(j)), np2(j), ' ',zv(j,j),' ',ev(j),' ',jv(j)<br />
end do<br />
CALL CPU_TIME (rt2)<br />
!******* 5. Формирование топологической матрицы ******************<br />
m1=maxval(np1);m2=maxval(np2);KP=max(m1,m2)<br />
call derevo(KP, kv, np1, np2, Csoed(1:kv,1:kv), Asoed(1:kv,1:kv))<br />
!******* 6. Расчет напряжений и токов в ветвях ********************<br />
er(1:kv)=matmul(transpose(csoed(1:kv,1:kv)),ev(1:kv))<br />
Jr(1:kv)=matmul(transpose(Asoed(1:kv,1:kv)),jv(1:kv))<br />
Zr(1:kv,1:kv)=matmul(matmul(transpose(csoed(1:kv,1:kv)),zv(1:kv,1:kv)),csoed(1:kv,1:kv));<br />
Yr(kp:kv,kp:kv)=Zr(kp:kv,kp:kv)<br />
call inverse4(Yr(kp:kv,kp:kv),kv-kp+1)<br />
iv(kp:kv)=matmul(Yr(kp:kv,kp:kv),er(kp:kv))- & ! расчет контурных токов<br />
& matmul(Yr(kp:kv,kp:kv),matmul(Zr(kp:kv,1:kp-1),Jr(1:kp-1)))-Jr(kp:kv)<br />
iv(1:kv)=matmul(Csoed(1:kv,kp:kv),iv(kp:kv)) ! токи в ветвях<br />
Uv(1:kv)=- ev(1:kv)+matmul(zv(1:kv,1:kv),iv(1:kv))+matmul(zv(1:kv,1:kv),jv(1:kv))<br />
CALL CPU_TIME (rt3)<br />
print*, 'time1 = ',rt2-rt1,'time2 = ',rt3-rt2<br />
!********* 7. Вывод результатов расчета в файл ****************************<br />
write (units,*)'результаты расчета'<br />
! do i=1,kv ! можно вывести в файл контурную матрицу<br />
! write (units,*)(Csoed(i,j),j=1,kv)<br />
! end do<br />
do i=1,kv !вывод токов и напряжений<br />
write (units,*)'ветвь ',namv(i),' ток = ',iv(i), ' напряжение = ',Uv(i)<br />
end do<br />
close(units)<br />
!***** окончание расчета, запрос на новый расчет****************<br />
CALL DWGBUT ('повторить расчет?', ipovtor)<br />
end do osnov<br />
90
end program kontur<br />
!********** Подпрограмма расчета топологических матриц ****************<br />
subroutine derevo(yzlov,vetvey,ta,he,C,A)<br />
!ta - массив начальных узлов<br />
!he - массив коненых узлов<br />
real C(vetvey,vetvey),A(vetvey,vetvey)<br />
real workC(vetvey),det(2)<br />
integer ipvtC(vetvey),mderevo(vetvey)<br />
integer yzlov,vetvey,v,ptr,ta(vetvey),he(vetvey)<br />
integer, allocatable::ADJ(:),NEXT(:),VECTOR(:),VISIT(:),LIST(:)<br />
!определение размеров массивов<br />
MAXP1=yzlov+1;IW=MAXP1+2*vetvey<br />
allocate(ADJ(IW),NEXT(IW),VECTOR(MAXP1),VISIT(MAXP1),LIST(MAXP1))<br />
!инициализация переменных<br />
KP=yzlov<br />
ADJ=0;NEXT=0;VECTOR=0;VISIT=0;LIST=0<br />
PTR=0; V=KP; I=KP+1;<br />
do K=1,vetvey<br />
M=ta(K); N=he(K); NEXT(I)=NEXT(M); ADJ(I)=N; NEXT(M)=I;<br />
I=I+1; NEXT(I)=NEXT(N); ADJ(I)=M; NEXT(N)=I; I=I+1;<br />
end do;<br />
LIST(yzlov+1)=0; I=1; N=1; LIST(1)=V; VECTOR(V)=0; VISIT(V)=1;<br />
!поиск узлов ветвей, относящихся к дереву<br />
do while (1==1)<br />
M=LIST(N); PTR=M;<br />
do while (1==1)<br />
NNN=NEXT(PTR); PTR=NNN;<br />
if (PTR==0) exit<br />
J=ADJ(PTR);<br />
if (VISIT(J)==0) then<br />
I=I+1; LIST(I)=J; VISIT(J)=I; VECTOR(J)=M;<br />
end if<br />
end do<br />
N=N+1;<br />
if (LIST(N)==0) exit<br />
end do<br />
!формирование массива с номерами ветвей дерева и хорд<br />
do m=1,vetvey<br />
mderevo(m)=m;<br />
end do;<br />
do k1=1,vetvey<br />
if (VECTOR(k1)/=0) k2=VECTOR(k1)<br />
do m=1,vetvey<br />
if ((ta(m)==k1 .and. he(m)==k2).or.(ta(m)==k2.and.he(m)==k1)) then<br />
mderevo(m)=0;exit<br />
end if<br />
end do<br />
end do<br />
j=yzlov-1<br />
do i=1,vetvey<br />
A(i,ta(i))=1;A(i,he(i))=- 1;<br />
if (ta(i)==yzlov) A(i,ta(i))=0<br />
if (he(i)==yzlov) A(i,he(i))=0<br />
if (mderevo(i)/=0) then<br />
j=j+1;A(i,j)=1<br />
endif<br />
end do<br />
C=transpose(A)<br />
91
call sgefa(C,vetvey,vetvey,ipvtC,info)<br />
call sgedi(C,vetvey,vetvey,ipvtC,det,workC,1)<br />
deallocate(ADJ,NEXT,VECTOR,VISIT,LIST)<br />
end subroutine derevo<br />
!******* подпрограмма выделения слова в строке **************<br />
subroutine addword( words, st, wbegin, wend, neww )<br />
integer wbegin, wend, neww<br />
character (len = *) words(*) ! Перенимающий размер массив<br />
character (len = *) st ! Строка, перенимающая длину<br />
neww = neww + 1<br />
words(neww) = st(wbegin : wend)<br />
wbegin = 0<br />
end<br />
!******* подпрограмма инвертирование матрицы ***************<br />
subroutine inverse4(A,n)<br />
real:: A(n,n)<br />
do i=1,n<br />
if (A(i,i)==0.) then<br />
print*,a(i,i),n,i; stop 'деление на ноль!!!'<br />
endif<br />
A(i,i)=1.0/A(i,i)<br />
do 5 j=1,n<br />
if (j-i) 1,5,1<br />
1 A(j,i)=A(j,i)*A(i,i)<br />
do 4 k=1,n<br />
if(k-i) 2,4,2<br />
2 A(j,k)=A(j,k)-A(j,i)*A(i,k)<br />
if (j-n) 4,3,4<br />
3 A(i,k)=- A(i,i)*A(i,k)<br />
4 continue<br />
5 continue<br />
enddo<br />
do j=1,n-1<br />
A(n,j)=- A(n,n)*A(n,j)<br />
end do<br />
return<br />
end subroutine inverse4<br />
92
2.4. Расчет по частям узловых схем.<br />
Расчет больших схем состоит из 4-х основных этапов:<br />
1) разбиение схемы на подсхемы; 2) расчет изолированных подсхем; 3)<br />
расчет суммарной схемы; 4) учет соединения подсхем.<br />
Можно выделить два дуальных способа разбиения схемы на части. В<br />
простейшем случае, который продемонстрирован на рис.2.4.1, эти<br />
способы соответствуют методу эквивалентного генератора напряжения<br />
и эквивалентного генератора тока, известным так же, как теоремы Тевенина<br />
и Нортона.<br />
а) б)<br />
Рис. 2.4.1. Метод эквивалентного генератора напряжения (а) и<br />
эквивалентного генератора тока (б).<br />
В первом способе схема разъединяется удалением последовательного<br />
сопротивления из контура. Получившиеся подсхемы представляются эквивалентными<br />
узловыми подсхемами с источниками напряжений.<br />
Восстановление удаленной ветви приводит к появлению общего для<br />
подсхем контурного тока, величину которого можно рассчитать по формуле,<br />
приведенной на рис.2.4.1а. Во втором способе удаляется параллельная<br />
проводимость из узловой пары. Получившиеся подсхемы представляются<br />
эквивалентными контурными подсхемами с источниками<br />
тока. Восстановление удаленной ветви приводит к появлению общего<br />
для подсхем узлового напряжения, величину которого можно рассчитать<br />
по формуле, приведенной на рис.2.4.1б.<br />
В более сложных случаях подсхемы являются многополюсными и<br />
многоконтурными. В первом способе расчет подсхем ведется методом<br />
узловых напряжений. Полученные напряжения на узловых парах для<br />
последующего контурного объединения подсхем представляются как<br />
источники напряжений ветвей. Во втором способе расчет подсхем ведется<br />
методом контурных токов. Полученные токи в контурах для последующего<br />
объединения подсхем представляются как источники тока<br />
ветвей. Первый способ разбиения будем называть узловым, второй<br />
способ разбиения назовем контурным.<br />
Рассмотрим один из возможных способов узлового разъединения схемы<br />
на части. Отдельные подсхемы выделяются по функциональному<br />
признаку. Это могут быть источники питания, двигатели, фильтры, ком-<br />
93
мутирующие цепочки, элементы механической или иной неэлектрической<br />
природы, допускающие эквивалентирование электрическими аналогами<br />
и т.д. Все источники, действующие в исходной схеме, должны<br />
располагаться в подсхемах. Выделенные подсхемы должны быть соединены<br />
в узлах ветвями связи – двухполюсниками, которые могут в частном<br />
случае представлять собой короткозамкнутые перемычки. Схема<br />
разбивается на части удалением ветвей связи. Разбиение схемы на подсхемы<br />
и ветви связи должно быть таким, чтобы при удалении ветвей<br />
связи все подсхемы должны оказаться изолированными. Получившиеся<br />
многополюсники не должны при этом иметь негальваническую связь.<br />
Рис.2.4.2 иллюстрирует сказанное. Для упрощения изображения, источники<br />
в ветвях не показаны. Предполагается, что подсхемы могут быть<br />
описаны в ортогональном базисе. Ветви связи должны быть представлены<br />
эквивалентными ветвями без источников тока.<br />
а).<br />
б).<br />
Рис. 2.4.2. Разбиение схемы на части<br />
Отдельные подсхемы рассчитываются методом узловых потенциалов,<br />
и в итоге приводятся к эквивалентным лучевым схемам с известными<br />
узловыми напряжениями Uo и узловыми сопротивлениями Zoo<br />
(рис.2.4.3а). Восстановление схемы производится короткозамкнутыми<br />
перемычками, в результате чего образуется суммарная схема<br />
(рис.2.4.3б). Токи в суммарной схеме распределяются по подсхемам, вызывая<br />
приращение узловых потенциалов и соответственно токов. На последнем<br />
этапе расчета эти приращения добавляются к узловым потенциалам<br />
и токам изолированных подсхем, в результате чего получается<br />
окончательное решение.<br />
94
а).<br />
б).<br />
Рис. 2.4.3. Расчет подсхем (а) и получение объединенного решения (б).<br />
Наиболее объемная математическая операция при расчете схем – это<br />
вычисление обратной матрицы. При размерности матрицы равной NхN,<br />
ее обращение потребует примерно N 3 математических операций. Если<br />
расчет ведется методом контурных токов, то обращению подлежит матрица<br />
контурных сопротивлений. Схема рис.2.4.2а состоит из 10-ти<br />
контуров, поэтому вычисление обратной матрицы контурных сопротивлений<br />
потребует примерно 10 3 =1000 операций. При разбиении схемы на<br />
три части, как на рис.2.4.2б, каждая часть содержит два контура, поэтому<br />
расчет обратных матриц трех подсхем потребует примерно 3*2 3 =24<br />
операции. Суммарная схема рис.2.4.3б, содержащая еще 4 контура,<br />
займет 4 3 =64 операции. Итого имеем 24+64=88 операций против 1000 при<br />
непосредственном расчете схемы. Выигрыш в объеме вычислений составит<br />
1000/88≈11 раз. Если получаемые в результате разбиения на части<br />
подсхемы оказываются одинаковыми, число операций будет равно<br />
8+64=72 операции и выигрыш будет еще больше, так как 1000/72≈14 раз.<br />
От стратегии разбиения и метода расчета зависит скорость расчета.<br />
Если подсхемы, которые получились в результате разбиения, не имеют<br />
контуров, а имеют вид подобный рис.2.4.2а, то расчет по частям методом<br />
контурных токов только увеличит объем вычислений.<br />
У расчета по частям есть преимущества не только количественного<br />
характера, связанного со скоростью расчета больших схем, но и качественного.<br />
Описание отдельных подсхем может быть записано в базу<br />
данных и затем использовано при расчете схем различной конфигурации.<br />
Все современные программы схемотехнического моделирования используют<br />
ту или иную разновидность расчета по частям.<br />
95
2.4.1. Цепь пересечений<br />
Пусть заданы две подсхемы, соединенные 3-мя ветвями связи: s1, s2 и<br />
s3. Будем считать, без потери общности, что сопротивления связей равны<br />
нулю. Часть узлов подсхем может не участвовать в соединении<br />
(рис.2.4.4).<br />
Рис. 2.4.4. Соединение двух подсхем.<br />
В местах соединения подсхем образуется граничная цепь – цепь пересечений.<br />
Рис. 2.4.5. Образование граничной цепи.<br />
Топологию цепи пересечений можно отразить матрицей Сōs. Индексом<br />
ō обозначены граничные узлы.<br />
s1 s2 s3<br />
o1 -1<br />
o2 -1<br />
Cōs = o3 -1<br />
o4 1<br />
o5 1<br />
o6 1<br />
(2.4.1)<br />
Физически матрица Сōs отражает 1-й закон Кирхгофа для граничных<br />
узлов. Если считать положительным ток подсхемы, протекающим от<br />
граничного узла к нулевому, то есть ток, входящий в подсхему, то,<br />
например, для узла о1 можно записать: Izoo11=-Is1, для узла о4: Izo44=Is1<br />
и т.д. Поэтому в матрице Cōs каждая строка содержит только один элемент.<br />
96
Матрица приведенных узловых сопротивлений Z ~ ōō подсхем является<br />
блочной. Для объединенного решения потребуются сопротивления граничных<br />
узлов ō.<br />
o1 o2 o3 o4 o5 o6<br />
o1 zo11-1 zo12-1 zo13-1<br />
o2 zo21-1 zo22-1 zo23-1<br />
Z ~ ōō = o3 zo31-1 zo32-1 zo33-1<br />
o4 zo11-2 zo12-2 zo13-2<br />
o5 zo21-2 zo22-2 zo23-2<br />
o6 zo31-2 zo32-2 zo33-2<br />
Потребуется так же матрица сопротивлений Z ~ оō, блоки которой выделены<br />
ниже в полной матрице приведенных узловых сопротивлений Z ~ оо,<br />
вычисленных по (2.3.7)<br />
o1 o2 o3 о7 o4 o5 o6 о8<br />
o1 zo11-1 zo12-1 zo13-1 zo14-1<br />
o2 zo21-1 zo22-1 zo23-1 zo24-1<br />
Z ~ оо = o3 zo31-1 zo32-1 zo33-1 zo34-1<br />
о7 zo41-1 zo42-1 zo43-1 zo44-1<br />
o4 zo11-2 zo12-2 zo13-2 zo14-2<br />
o5 zo21-2 zo22-2 zo23-2 zo24-2<br />
o6 zo31-2 zo32-2 zo33-2 zo34-2<br />
о8 zo41-2 zo42-2 zo43-2 zo44-2<br />
Матрица сопротивлений цепи пересечений Zss вычисляется стандарт-<br />
ным преобразованием матрицы сопротивлений граничных узлов:<br />
s1 s2 s3<br />
s1 zo11-1+zo11-2 zo12-1+zo12-2 zo13-1+zo13-2<br />
Zss=Csō∙Z ~ ōō∙Cōs = s2 zo21-1+zo21-2 zo22-1+zo22-2 zo23-1+zo23-2<br />
s3 zo31-1+zo31-2 zo32-1+zo32-2 zo33-1+zo33-2<br />
(2.4.2)<br />
Анализируя содержание матрицы Zss, можно придти к выводу, что эта<br />
матрица отображает схему, приведенную на рис.2.4.6. То есть после<br />
преобразования мы имеем три сопротивления Zs1, Zs2 и Zs3, которые образуют<br />
цепь, состоящую из отдельных ветвей, образованных из сопротивлений,<br />
одновременно принадлежащих обеим подсхемам.<br />
Рис. 2.4.6. Цепь пересечений.<br />
Если ветви связи s1,s2,s3 имеют сопротивления и описываются матрицей<br />
Rss, то можно записать более общую форму расчета сопротивлений<br />
цепи пересечений:<br />
Zss=Csō∙Z ~ ōō∙Cōs+Rss (2.4.3)<br />
97
Для каждой ветви элементарной цепи пересечений можно вычислить<br />
действующий в ней источник напряжения. Этот источник образуется из<br />
узловых напряжений подсхем:<br />
es = − Csō ∙ Uō (2.4.4)<br />
2.4.2. Циркуляционная цепь<br />
Можно заметить, что любые два сопротивления цепи пересечений образуют<br />
хорды в исходной схеме рис.2.4.5, например, s1 и s2. Оставшееся<br />
сопротивление s3 образует ветвь дерева. В итоге получаем циркуляционную<br />
цепь рис.2.4.7.<br />
Рис. 2.4.7. Циркуляционная цепь.<br />
Если подсхемы были бы соединены не тремя, а четырьмя и более ветвями,<br />
то в любом случае одну какую-либо ветвь можно отнести к ветви<br />
дерева, а остальные к хордам. Ветвь дерева называется суммарной ветвью.<br />
Циркуляционную цепь можно описать топологической расширенной<br />
контурной матрицей Csa . Ветвь дерева будет всегда одна, поэтому<br />
число узловых столбцов всегда будет равно единице и напротив той<br />
строки, которая образовала ветвь дерева надо поставить единицу:<br />
s3 s1 s2<br />
s1 1<br />
Csa = s2 1<br />
s3 1 -1 -1<br />
Две соединенные подсхемы всегда образуют циркуляционную цепь,<br />
составленную из ветвей цепи пересечений. Матрица сопротивлений<br />
циркуляционной цепи рассчитывается преобразованием матрицы сопротивлений<br />
цепи пересечений:<br />
Zaa=Cas∙Zss∙Csa (2.4.5)<br />
Если число соединяемых подсхем больше, чем две, то образуется еще<br />
одна цепь, которая называется суммарной цепью.<br />
98
2.4.3. Суммарная цепь<br />
Рассмотрим случай соединения трех подсхем рис.2.4.8.<br />
Рис. 2.4.8. Соединение трех подсхем.<br />
Связи, образующие цепь пересечений, можно разделить на три группы,<br />
по три ветви в каждой группе. Матрица, описывающая цепь пересечений:<br />
s1 s2 s3 s4 s5 s6<br />
o1 -1<br />
o2 -1 1<br />
Cōs = o3 -1<br />
o4 1<br />
o5 1 1<br />
o6 1 1<br />
o7 -1<br />
o8 -1<br />
o9 -1<br />
Матрица сопротивлений цепи пересечений рассчитывается по приведенной<br />
выше формуле:<br />
Zss=Csō∙Z ~ ōō∙Cōs<br />
Между каждыми подсхемами, как было установлено, можно выбрать<br />
одну суммарную ветвь. На рис.2.4.8. эти суммарные ветви s3, s4 и s5 проведены<br />
пунктиром. Остальные ветви: s1, s2, s6 – это хорды.<br />
Матрица, описывающая циркуляционную цепь:<br />
s3 s4 s5 s1 s2 s6<br />
s1 1<br />
s2 1<br />
Csa = s3 1 -1 -1<br />
s4 1<br />
s5 1 -1<br />
s6 1<br />
99
Матрица сопротивлений циркуляционной цепи:<br />
Zaa=Cas∙Zss∙Csa<br />
Теперь, для наглядности, оставив одни суммарные ветви и удалив все<br />
остальные, мы видим, что суммарные ветви s3, s4 и s5 образуют некоторую<br />
самостоятельную схему, в которую входят как контуры, так и узловые<br />
пары рис.2.4.9.<br />
Рис. 2.4.9. Суммарная цепь.<br />
Структуру суммарной схемы легко обнаружить, если каждую подсхему<br />
обозначить узлом, а между узлами расположить суммарные ветви как<br />
на рис.2.4.10.<br />
Рис. 2.4.10. Структура суммарной цепи.<br />
Суммарная схема отражает структуру соединения подсхем, но в тоже<br />
время она намного проще полной схемы. Для суммарной схемы можно<br />
найти ветви дерева и хорд. Пусть, например, ветвями дерева будут s4 и<br />
s5 , тогда s3 – хорда. Теперь можно окончательно перечислить все ветви<br />
хорд: это s1, s2, s6, s3 и ветви дерева: это s4 и s5. Расширенная контурная<br />
матрица, отражающая соединение ветвей циркуляционной цепи в суммарную<br />
схему будет выглядеть так:<br />
100
(2.4.6)<br />
Жирной линией в матрице (2.4.6) выделена подматрица, описывающая<br />
суммарную цепь. Матрица сопротивлений суммарной схемы Zpp<br />
рассчитывается преобразованием матрица сопротивлений циркуляционной<br />
цепи:<br />
Zpp=Cpa∙Zaa∙Cap (2.4.7)<br />
Подставляя в (2.4.7) формулы (2.4.5) и (2.4.2) можно получить:<br />
Zpp = Cpa∙[Cas∙(Csō∙Z ~ ōō∙Cōs)∙Csa]∙Cap (2.4.8)<br />
Формула (2.4.8) верна, если сопротивления ветвей связи равны нулю.<br />
Если требуется учесть эти сопротивления, то матрица сопротивлений<br />
суммарной схемы должна быть вычислена с учетом (2.4.3) :<br />
Zpp = Cpa∙[Cas∙(Csō∙Z ~ s6 1<br />
ōō∙Cōs+Rss)∙Csa]∙Cap (2.4.9)<br />
Можно ввести в рассмотрение матрицу, преобразующую узловые<br />
координаты в координаты суммарной цепи:<br />
Cōp= Cōs∙Csa∙Cap (2.4.10)<br />
2.4.4. Расчет суммарной цепи<br />
Для расчета методом контурных токов из матрицы Cap (2.4.6) можно<br />
выделить подматрицу для замкнутых контуров Capk. Она включает<br />
столбцы хорд s3, s1, s2, s6:<br />
s3 s1 s2 s6<br />
s3 1<br />
s4 1<br />
Capk = s5 -1<br />
s1 1<br />
s2 1<br />
s6 1<br />
Формула (2.4.10) тогда будет выглядеть так:<br />
Cōpk= Cōs∙Csa∙Capk<br />
Контурная матрица сопротивлений полной схемы:<br />
и контурные э.д.с.:<br />
s4 s5 s3 s1 s2 s6<br />
s3 1<br />
s4 -1 1<br />
Cap = s5 -1 -1<br />
s1 1<br />
s2 1<br />
(2.4.11)<br />
Zpкpк = Сpкō ∙ Z ~ ōō ∙ Cōpк. (2.4.12)<br />
101
epk= -Cpkō ∙ Uō. (2.4.13)<br />
Вектор контурных токов находится по формуле:<br />
ipk= (Zpкpк) -1 epk. (2.4.14)<br />
По найденным контурным токам находятся токи в связях:<br />
is=Cspk∙ipk. (2.4.15)<br />
2.4.5. Получение окончательного решения в подсхемах<br />
Токи в ветвях связи распределяются по подсхемам и проявляются как<br />
дополнительные токи в граничных узлах подсхем, вызванные их соединением:<br />
ΔJō = Cōs ∙ is. (2.4.16)<br />
Дополнительные узловые токи вызывают приращение узловых напряжений<br />
в подсхемах:<br />
ΔUo= Z ~ oō∙ΔJō. (2.4.17)<br />
Дополнительные контурные токи в подсхемах:<br />
Δik = -(Zkk) -1 Zkō ΔJō (2.4.18)<br />
Окончательные узловые напряжения и контурные токи подсхем будут<br />
равны:<br />
Ũo=Uo+ΔUo. (2.4.19)<br />
ĩk=ik+Δik (2.4.20)<br />
Окончательные напряжения и токи ветвей подсхем:<br />
Ub= Аbo∙ Ũo, (2.4.21)<br />
ib=Cbo · ΔJo + Cbk ∙ (Jk+ĩk).<br />
(2.4.22)<br />
На этом расчет большой схемы по частям можно считать законченным.<br />
102
2.4.6. Алгоритм расчета по частям<br />
Основные этапы расчета можно свеcти в таблицу:<br />
Содержание этапов<br />
1 Расчет отдельных подсхем:<br />
расчет матрицы приведенных узловых сопротивлений Z ~ oo, выделение<br />
блочных матриц для граничных узлов Z ~ оō и Z ~ ōō, расчет узловых<br />
потенциалов Uo = Z ~ oo Jo - e ~ o; Выделение вектора граничных узловых<br />
потенциалов Uō<br />
2 Построение топологической матрицы Cōpk<br />
3 Расчет контурных сопротивлений суммарной схемы:<br />
Zpкpк = (Сpкō ∙ Z ~ ōō ∙ Cōpк )<br />
4 Расчет напряжений в контурных координатах суммарной схемы<br />
epk= -Cpkō ∙ Uō,<br />
5 Расчет контурных токов суммарной схемы:<br />
ipk= (Zpкpк) -1 epk<br />
6 Расчет приращений токов в подсхемах:<br />
ΔJō = Cōpk ∙ ipk<br />
7 Расчет приращений напряжений подсхем:<br />
ΔUo= Z ~ oō∙ΔJō<br />
8 Получение окончательного решения для подсхем:<br />
Ũo=Uo+ΔUo<br />
Ряд приведенных в таблице этапов можно объединить и получить одну<br />
формулу расчета по частям:<br />
Ũo=Uo – Z ~ oō∙ Cōpk ∙ (Сpкō ∙ Z ~ ōō ∙ Cōpк ) -1 Cpkō ∙ Uō (2.4.23)<br />
Для расчета по (2.4.23) требуется вектор вектор всех узловых потенциалов<br />
изолированных подсхем Uo, подвектор граничных потенциалов<br />
изолированных подсхем Uō, топологическая матрица Cōpk, матрица приведенных<br />
узловых сопротивлений граничных узлов Z ~ ōō, матрица приведенных<br />
узловых сопротивлений Z ~ oō.<br />
Основные вычислительные затраты, связанные с обращением матриц,<br />
потребуются при вычислении обратной матрицы контурных сопротивлений<br />
суммарной схемы Zpкpк, и при обращении контурных матриц<br />
отдельных подсхем Zkk .<br />
Этапы, приведенные в таблице и расчет по формуле (2.4.23)<br />
справедливы при условии, что между подсхемами нет источников<br />
напряжений и токов, то есть все источники сосредоточены внутри<br />
подсхем. Если таковые имеются в схеме, то расчет усложняется,<br />
соответствующие формулы приведены в [2].<br />
Рассмотренные соотношения для расчета по частям можно применить<br />
в качестве математического ядра расчета переходных процессов в<br />
системе с линейными и нелинейными сопротивлениями, дополнив их<br />
103
подпрограммами расчета параметров обобщенных ветвей и<br />
подпрограммами расчета логических и функциональных блоков,<br />
входящих в техническую систему. Применение алгоритма для расчет<br />
схем электропривода рассмотрено в [17]. Приведем основные элементы<br />
этого алгоритма расчета (рис.2.4.11).<br />
Блок 1.<br />
Ввод исходной информации. В соответствии с разработанным<br />
методом расчета, исходная информация должна включать в себя следующие<br />
компоненты. а). Структура соединений ветвей в подсхемы, параметры<br />
ветвей и источники, действующие в ветвях. Структура соединений<br />
подсхем в общую схему и параметры ветвей связи подсхем. б). Задание<br />
на расчет - моделирование переходных процессов или расчет в частотной<br />
области, выводимые величины. в). Интервалы времени - основной<br />
и дополнительные шаги интегрирования, шаг вывода информации.<br />
Для расчета в частотной области - частотные диапазоны: начальная и<br />
конечная частота расчета, приращение частоты.<br />
Блок 2. Поскольку исходные данные готовятся в пользовательском<br />
форме, то в этом блоке осуществляется трансляция их в машинные формы<br />
представления. После этого производится формирование структуры<br />
тензора соединений результирующей схемы Cōp (2.4.10). Весьма важным<br />
моментом здесь является то, что так как структура тензоров соединений<br />
как подсхем, так и результирующей схемы остается неизменной<br />
при любой комбинациях открытых и закрытых вентилей, то этот блок<br />
не входит в цикл переформирования уравнений при изменении структуры<br />
схемы. То есть поиска дерева и хорд результирующей схемы в дальнейшем<br />
не производится.<br />
Блок 3. Расчет сопротивлений и проводимостей подсхем. Обращение<br />
к этому блоку выполняется в тех случаях, когда происходит изменение<br />
порядка метода, изменение шага интегрирования и при итерационных<br />
расчетах нелинейностей. Здесь следует отметить, что поскольку структура<br />
внутреннего представления данных о подсхемах использует одно<br />
место оперативной памяти для одинаковых подсхем, то наибольшая эффективность<br />
алгоритма проявляется для больших схем, имеющих значительное<br />
число однотипных подсхем. В этом блоке выполняется расчет<br />
токов и напряжений в изолированных подсхемах по (2.3.6) и (2.3.7).<br />
Блок 4. Производится переопределение элементов тензоров соединений<br />
результирующей схемы Cōp при изменении состояния проводимости<br />
вентилей. Расчет соединенной схемы проводится в контурном базисе,<br />
поэтому формируется матрица контурных сопротивлений по формуле<br />
(2.4.12) и вычисляется ее обратная. Применение процедуры обращения<br />
матрицы здесь оказывается более целесообразным перед методом<br />
исключения, так как расчет во временной области требует многократного<br />
решения системы алгебраических уравнений.<br />
104
┌─┬───────────────────────┐<br />
│1│ Ввод исходных данных │<br />
└─┴───────────┬───────────┘<br />
┌─┬───────────────┴───────────────┐<br />
│2│Трансляция данных во внутреннее│<br />
│ │ представление. Формирование │<br />
│ │ матрицы соединения │<br />
│ │ результирующей схемы │<br />
└─┴─────────────┬─────────────────┘<br />
┌───────────────────────────>─────┼────────────┤ │<br />
│ │ ┌─┬────────────┴──────────────┐ │<br />
│ │ │4│ Определение проводящих │ │<br />
│ │ │ │ветвей в матрице соединений│ │<br />
│ │ │ │ результирующей схемы. │ │<br />
│ │ │ │ Расчет и обращение │ │<br />
│ │ │ │ контурной матрицы │ │<br />
│ │ │ │ сопротивлений │ │<br />
│ │ │ │ результирующей схемы │ │<br />
│ │ └─┴────────────┬──────────────┘ │<br />
│ │ ├─────────┬──┘ │<br />
│ │ │ └─┴──────────────────────┘ │<br />
│ │ ┌─┬──────────┴──────────────────┐ │<br />
│ │ │9│Расчет логической части схемы│ │<br />
│ │ │ │ Расчет состояний ключевых │ │<br />
│ │ │ │ элементов схемы. │ │<br />
│ │ └─┴─────────────┬───────────────┘ │<br />
│ │ ┌──┬────────────┴────────────────┐ │<br />
│ │ │10│Вывод и обработка результатов│ │<br />
│ ┌──┬───────┐ │ └──┴───────────────┬─────────────┘ │<br />
│ │13│Достиг-│ │ ┌──┬────────┴────────┐ │<br />
│ │ │нут за-│ │ │11│Приращение шага. │да ┌────┐ │<br />
└─┤ │данный ├─┘ │ │Выполнено условие├───>─────┤Стоп│ │<br />
нет│ │порядок│да │ │ окончания счета?│ └────┘ │<br />
│ │метода?│ └──┴────────┬────────┘ │<br />
└──┴───┬───┘ │нет │<br />
│ да┌──┬───────────┴───────────────┐нет │<br />
└───────────┤12│Изменилось состояние схемы?├──────>──────┘<br />
└──┴───────────────────────────┘<br />
Рис. 2.4.11. Алгоритм расчета схем по частям<br />
105
Блок 5. Производится расчет источников, действующих в подсхемах -<br />
независимых, управляемых и разностно-итерационных, модели которых<br />
рассмотрены во 2-й главе.Здесь же выполняется расчет токов в проводящих<br />
связях и напряжений на непроводящих, а также окончательный<br />
расчет токов и напряжений в подсхемах. В этом блоке организуется расчет<br />
схем, в которых подсхемы отличаются большим разбросом постоянных<br />
времени: так как разностные модели инерционных ветвей включают<br />
источники начальных условий для расчетного шага, то путем увеличения<br />
этого шага для ветвей с большой инерционностью, эти источники<br />
пересчитываются явным методом, с последующим выходом на установившийся<br />
внутришаговый режим.<br />
Блок 6. Проверяется наличие нелинейных подсхем.<br />
Блок 7. Переход к этому блоку происходит тогда, когда в схеме имеются<br />
нелинейные подсхемы. Здесь проверяется выполнение условий<br />
сходимости при итерациях - достижение заданной точности за допустимое<br />
число итераций. При определении условий сходимости предусматривается<br />
защита от итерационных зацикливаний, а также смена итераций<br />
с итераций по току на итерации по напряжению и обратно для нелинейностей<br />
диодного типа.<br />
Блок 8. Если сходимость не достигнута, то из этого блока расчет<br />
направляется на определение новых значений динамических сопротивлений<br />
нелинейностей в подсхемах.<br />
Блок 9. При достижении сходимости происходит переход к расчету<br />
логической и функциональной части системы управления. Для логической<br />
части схемы применен алгоритм асинхронного событийного<br />
двоичного моделирования со встроенными моделями элементов<br />
жесткой логики и триггеров, соответствующих их таблицам истинности.<br />
Для связи логической, функциональной и силовой схем применены интерфейсные<br />
компоненты. Алгоритм расчета состояний ключевых и вентильных<br />
элементов носит экспертный характер, построенный по принципу<br />
"если..., то..." и может уточняться в зависимости от задач исследований.<br />
Блок 10. Вывод и обработка результатов расчета. Этот блок имеет существенное<br />
значение для развития сервисной части программного обеспечения.<br />
Блок 11. Выполняется добавление очередного шага интегрирования<br />
или частотного шага и проверяются условия окончания счета: достижение<br />
предельных значений времени интегрирования при моделировании<br />
мгновенных процессов, частоты при расчете в частотном диапазоне и<br />
числа итераций при расчете схем с нелинейностями.<br />
Блок 12. Направляет расчет на определение новых значений источников,<br />
если не произошло изменений в состоянии схемы. Если структура<br />
соединений изменилась, то производится сброс ФДН-метода на уровень<br />
106
первого порядка для расчета разгонных точек с одновременным повышением<br />
порядка метода.<br />
Блок 13. Проверяется достижение необходимого уровня метода. При<br />
повышении порядка метода происходит перерасчет разностных сопротивлений.<br />
Если достигнут необходимый уровень метода, то перерасчета<br />
сопротивлений не производится - расчет сразу направляется на определение<br />
элементов в тензоре соединений результирующей схемы.<br />
107
2.4.7. Сравнение скорости расчета при декомпозиции схемы.<br />
Приведем сравнение скорости расчета для тестовой резистивной схемы,<br />
представленой на рис.2.4.12. Схема состоит из 265 сопротивлений 1<br />
Ом, соединенных в 122 контура. На схему воздействует единственный<br />
источник напряжения 1В.<br />
Рис. 2.4.12. Расчетная резистивная схема из 122 контуров<br />
Для сравнения скорости расчета, использовались две схемы, разбитые<br />
на блоки. Одна схема состоит из 5 блоков: 4 блока по 25 контуров и 1<br />
блок с источником напряжения (рис.2.4.13). Другая схема состоит из 17<br />
блоков: 16 блоков по 4 контура и 1 блок с источником напряжения<br />
(рис.2.4.14). Общее число контуров во всех схемах: 122, число сопротивлений:<br />
265.<br />
Рис. 2.4.13. Расчетная резистивная<br />
схема из 122 контуров:<br />
разбита на 4 блока<br />
108<br />
Рис. 2.4.14. Расчетная резистивная<br />
схема из 122 контуров:<br />
разбита на 16 блоков
Схемы блоков приведены на рис.2.4.15 и рис.2.4.16.<br />
Рис. 2.4.15. Блок из 25<br />
контуров для схемы<br />
рис.2.4.13<br />
Программа расчета по частям оттранслирована на Фортране g95 со<br />
следующими опциями транслятора:<br />
g95 -c -ffree-form -O2 -march=pentium4 -fsloppy-char -fzero -freal=zero -finteger=0<br />
Результаты времени расчета при пяти запусках программы приведены<br />
ниже в таблице. За единицу принято время 10мс.<br />
полная схема рис. 2.4.12 36 36 35 37 37 36,2<br />
4 блока рис.2.4.13 2 1 1 2 1 1,4<br />
16 блоков рис.2.4.14 3 3 2 3 3 2,8<br />
В последней колонке приведены усредненные значения. Как видно из<br />
таблицы, расчет по частям приводит к ускорению счета в среднем почти<br />
в 26 раз для схемы разбитой на 4 блока и примерно в 13 раз для схемы,<br />
разбитой на 16 блоков. В отдельные запуски время счета уменьшается в<br />
37 раз и 17,5 раз соответственно для этих схем.<br />
109<br />
Рис. 2.4.16. Блок из 4 контуров<br />
для схемы рис.2.4.14
2.5. Расчет по частям контурных схем.<br />
Рассмотрим ход расчета по частям контурных схем на примере схемы,<br />
приведенной на рис.2.5.1а. Для простоты источники в ветвях не<br />
изображены. Удаляемые ветви выделены на схеме утолщенными линиями.<br />
После удаления этих ветвей схема распадается на три подсхемы,<br />
изображенные на рис 2.5.1б. Вместо удаленных ветвей в подсхемах размещены<br />
короткозамкнутые перемычки. Если в удаляемых ветвях были<br />
источники напряжения, то эти источники из ветвей переносятся в короткозамкнутые<br />
перемычки.<br />
а) б)<br />
Рис. 2.5.1. Разбиение схемы на части.<br />
Для расчета по частям следует выполнить подготовительную работу:<br />
1. Все контуры нумеруются. Это надо сделать для однозначной идентификации<br />
контуров в целой схеме. На рис.2.5.1б нумерация контуров<br />
сквозная для всей схемы, хотя можно пронумеровать контуры для каждой<br />
подсхемы отдельно. В этом случае понадобится ввести дополнительный<br />
индекс для номера подсхемы.<br />
2. Отмечаются граничные контуры. Их номера должны храниться в<br />
отдельном списке. На рис.2.5.1б граничные контуры выделены более<br />
крупными кружочками.<br />
3. Нумеруются удаленные ветви связи.<br />
4. Выбираются направления граничных контуров и ветвей связи.<br />
Далее, последовательность расчетов выстраивается в следующем порядке:<br />
1. После подготовительных обозначений выполняется расчет изолированных<br />
подсхем для определения в них контурных токов. Если ветви<br />
подсхем описаны в форме с эквивалентным источником напряжения, то<br />
векторы контурных токов в каждой подсхеме определятся по формулам:<br />
110
ik1=ykk1 · ek1,<br />
ik2=ykk2 · ek2,<br />
ik3=ykk3 · ek3,<br />
(2.5.1)<br />
где ykk1= zkk1 -1 , ykk2 = zkk2 -1 , ykk3 = zkk3 -1 – матрицы контурных проводимостей,<br />
обратные матрицам контурных сопротивлений, ek1, ek2, ek3 – векторы<br />
контурных источников напряжений.<br />
2. Определяются векторы контурных токов в граничных контурах.<br />
Граничные контуры представляют цепь пересечений. В векторах<br />
контурных токов, определенных по (2.5.1), надо оставить только те<br />
компоненты, которые относятся к граничным контурам. Это можно выполнить<br />
с помощью матричного произведения:<br />
ik1=A1 (1) · ik1,<br />
ik1=A1 (2) · ik2,<br />
ik1=A1 (3) · ik3,<br />
(2.5.2)<br />
где<br />
3 4 6 7 8 11 12 13<br />
1 5 9<br />
A1 (1) = 2 A1 (2) = 6 1 A1 (3) = 10<br />
3 1 7 1 11 1<br />
4 1 8 1 12 1<br />
13 1<br />
3. Определяются узловые напряжения ветвей связи, которые были перенесены<br />
в контуры. Эти можно сделать посредством топологических матриц:<br />
z1 z2 z3 z1 z2 z4 z5 z3 z4 z5<br />
3 1 6 1 11 1<br />
A2 (1) = 4 1 1 A2 (2) = 7 1 A2 (3) = 12 1<br />
8 1 1 13 1<br />
Рис.(2.5.2) иллюстрирует содержание приведенных матриц. Например,<br />
строка матрицы A2 (1) , обозначенная цифрой 4 содержит единицы в<br />
столбцах z2 и z3 . Это значит, в 4-й контур перенесены напряжения 2-й и<br />
3-й ветвей связи.<br />
111
а) б)<br />
Рис. 2.5.2. Расчет подсхем (а) и получение объединенного решения (б).<br />
4. Подсхемы соединяются. Напряжения ветвей связи приравниваются<br />
напряжениям граничных ветвей подсхем.<br />
5.<br />
z1 z2 z3 z4 z5 z1 z2 z3 z4 z5 z1 z2 z3 z4 z5<br />
z1 1 z1 1 z3 1<br />
A3 (1) = z2 1 A3 (2) = z2 1 A3 (3) = z4 1<br />
z3 1 z4 1 z5 1<br />
z5 1<br />
5. Все топологические преобразования можно свести к одной матрице<br />
А:<br />
А (1) = A1 (1) · A2 (1) · A3 (1) ,<br />
А (2) = A1 (2) · A2 (2) · A3 (2) ,<br />
А (3) = A1 (3) · A2 (3) · A3 (3) ,<br />
А (1)<br />
А= А (2)<br />
А (3)<br />
(2.5.3)<br />
Выполнив все вычисления по (2.5.3), получим следующее численное выражение<br />
матрицы А:<br />
112
z1 z2 z3 z4 z5<br />
1<br />
2<br />
3 1<br />
4<br />
5<br />
1 1<br />
A = 6 1<br />
7 1<br />
8<br />
9<br />
10<br />
1 1<br />
11 1<br />
12 1<br />
13 1<br />
Как видно из содержания матрицы А, в ее столбцах, перечисляющих<br />
ветви связи, единицами отмечаются те контуры, в которые эти связи вошли.<br />
Если направление контура не совпадает с направлением ветви связи,<br />
то проставляется минус единица. С помощью матрицы А можно<br />
найти источники тока, воздействующие на граничные ветви цепи пересечений<br />
со стороны изолированных подсхем:<br />
I = -At ·ik,<br />
где ik – контурные токи изолированных подсхем.<br />
6. Вычисление матрицы проводимостей цепи пересечений так же выполняется<br />
с помощью матрицы А. Эти проводимости получаются из<br />
контурных проводимостей с добавлением проводимостей граничных<br />
ветвей связи:<br />
Y=At · ykk · A + yгр,<br />
7. Находятся напряжения на ветвях связи:<br />
U = Z · I.<br />
где Z = Y -1 . Вычисление обратной матрицы не обязательно, так как U может<br />
быть вычислено, например, методом исключения Гаусса.<br />
8. Вычисляются контурные источники напряжений, вызванные соединением<br />
подсхем:<br />
Δe = A· U.<br />
9. Вычисление приращения контурных токов, вызванные соединением<br />
подсхем:<br />
Δi=ykk · Δe.<br />
10. Вычисление окончательных контурных токов в схеме:<br />
ik ~ = ik + Δi.<br />
113
Все этапы можно свести в одну формулу для расчета по частям контурных<br />
схем:<br />
ik= (1 – ykk · A · Z · At)·ykk · ek<br />
где Z = (At · ykk · A) -1 , матрица сопротивлений цепи пересечений, ykk – матрица<br />
проводимостей контуров изолированных подсхем.<br />
Формирование топологических матриц, расчет подсхем и расчет соединенной<br />
схемы по приведенным выше формулам:<br />
clear;<br />
R1=1;R2=2;R3=3;R4=4;R5=5;R6=6;R7=7;R8=8;R9=9;R10=10;R11=11;<br />
// ввод данных для 1-ой подсхемы<br />
e1=1;<br />
ev1=[e1,0,0,0,0,0];<br />
ev2=[e1,0,0,0,0,0,0,0];<br />
ev3=[e1,0,0,0,0,0,0,0,0,0,0];<br />
z1=[R1,R2,R3,R4,R5,R6];<br />
z1=diag(z1);<br />
// контурные матрицы 1-й подсхемы<br />
C1=[1, 0, 0, 0; 0, 0, 1, 0; 1, 0,-1, 0; -1, 1, 0, 0; 0, 0,-1, 1; 0,-1, 0, 1];<br />
// расчет контурных сопротивлений и контурных э.д.с 1-й подсхемы<br />
zk1=C1'*z1*C1; ek1=C1'*ev1';<br />
// ввод данных для 2-й подсхемы<br />
z2=[R1,R2,R3,R4,R5,R6,R7,R8];<br />
z2=diag(z2);<br />
// контурные матрицы 2-й подсхемы<br />
C2=[0, 0, 1, 0; 1, 0, 0, 0; -1, 0, 1, 0; 1, 0, 0, 0; 0, 0,-1, 1; -1, 1, 0, 0; 0, -1, 0, 1; 0, 1, 0, 0];<br />
// расчет контурных сопротивлений и контурных э.д.с 2-й подсхемы<br />
zk2=C2'*z2*C2; ek2=C2'*ev2';<br />
// ввод данных для 3-й подсхемы<br />
z3=[R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11];<br />
z3=diag(z3);<br />
// контурные матрицы 3-й подсхемы<br />
C3=[0, 0, 1, 0, 0; 0, 0,-1,-1, 0; 0, 0, 0, 1,-1; 0, 0, 0, 0, 1; 1, 0, 1, 0, 0; 0, 1, 0, 1, 0;<br />
1, 0, 0, 0, 0; 1, 1, 0, 0, 0; 0, 1, 0, 0, 0; 1, 0, 0, 0, 0; 0, 1, 0, 0, 0];<br />
// расчет контурных сопротивлений и контурных э.д.с 3-й подсхемы<br />
zk3=C3'*z3*C3; ek3=C3'*ev3';<br />
// ввод матриц в соотв с п2-п4<br />
A11=[0,0; 0,0; 1,0; 0,1];<br />
A12=[0,0,0; 1,0,0; 0,1,0; 0,0,1];<br />
A13=[0,0,0; 0,0,0; 1,0,0; 0,1,0; 0,0,1];<br />
A21=[1,0,0; 0,1,1];<br />
A22=[0,0,0,1; 1,0,0,0; 0,1,1,0];<br />
A23=[1,0,0; 0,1,0; 0,0,1];<br />
A31=[1,0,0,0,0; 0,1,0,0,0; 0,0,1,0,0];<br />
A32=[1,0,0,0,0; 0,1,0,0,0; 0,0,0,1,0; 0,0,0,0,1];<br />
A33=[0,0,1,0,0; 0,0,0,1,0; 0,0,0,0,1];<br />
A1=A11*A21*A31; A2=A12*A22*A32; A3=A13*A23*A33;<br />
A=[A1;A2;A3]<br />
// расчет граничных контурных проводимостей подсхем<br />
yk1=zk1^(-1); yk2=zk2^(-1); yk3=zk3^(-1);<br />
ik1=yk1*ek1; ik2=yk2*ek2; ik3=yk3*ek3;<br />
114
y1=A1'*yk1*A1; y2=A2'*yk2*A2; y3=A3'*yk3*A3;<br />
y=y1+y2+y3;<br />
for i=1:5,y(i,i)=y(i,i)+1;end;<br />
I1=-A1'*ik1; I2=-A2'*ik2; I3=-A3'*ik3;<br />
I=I1+I2+I3;<br />
E=y^(-1)*I;<br />
e=A*E;<br />
dik1=yk1*e(1:4); dik2=yk2*e(5:8); dik3=yk3*e(9:13);<br />
i1=ik1+dik1; i2=ik2+dik2; i3=ik3+dik3;<br />
115
3. Моделирование электромагнитных полей.<br />
В главе приводится один из способов применения тензорного анализа<br />
сетей для расчета уравнений в частных производных. Идея состоит в замене<br />
уравнения в частных производных эквивалентной схемой замещения,<br />
состоящей из базовых элементов, рассмотренных во 2-й главе (линейных<br />
и нелинейных R, L, C элементов и управляемых источников).<br />
Впервые похожий метод был предложен в 1929 году С.А.Гершгориным<br />
как метод электрических сеток [18] и применен для приближенного<br />
решения уравнения Лапласа на материально реализованной резистивной<br />
сетке. В дальнейшем эта разновидность физического моделирования<br />
развивалась И.М.Тетельбаумом [19], Пуховым Г.Е. [20], Л.А.Коздобой<br />
[21] и др. Применение цифровых вычислительных машин для решения<br />
схемных моделей для уравнений Максвелла предложено Г.Кроном [2].<br />
В настоящее время в основном развивается «компьютерное» направление<br />
метода электрических сеток. Здесь можно отметить работы, начатые<br />
Б.В.Сестрорецким по расчету электромагнитных полей устройств СВЧ<br />
[22], книгу А.Г.Мадеры по моделированию теплообмена в технических<br />
системах [23], книгу М.А.Шакирова по диакоптике электромагнитных<br />
полей [11].<br />
При классификации методов численного расчета полей, выделяют<br />
два подхода: сеточный и интегральный. Сеточный метод делится на два<br />
основных метода: метод конечных разностей (МКР) и метод конечных<br />
элементов (МКЭ). Интегральный метод носит еще название «метод граничных<br />
элементов» (МГЭ) и имеет достаточно большое число разновидностей.<br />
Сеточные методы получили наибольшее распространение из-за относительной<br />
простоты получения расчетных уравнений. Наиболее простым<br />
является метод конечных разностей. Его недостаток проявляется<br />
при расчете полей со сложной формой границ. В таких случаях, как правило,<br />
используется метод конечных элементов. Различие МКР и МКЭ<br />
состоит в способах аппроксимации уравнений в частных производных.<br />
В МКР применяется разностная аппроксимация производный искомых<br />
функций, в МКЭ аппроксимируются сами функции, неопределенные коэффициенты<br />
этих функций находятся из решений вариационных задач<br />
(поэтому метод более сложный чем МКР).<br />
В отличие от сеточных методов, в МГЭ решение ищется на границах<br />
полей с применением интегральных уравнений для описания поля. Это<br />
позволяет применить интегральные теоремы (например, теорему Гаусса<br />
заменяющую интегрирование по объему интегрированием по поверхности),<br />
снизив тем самым размерность задачи на единицу. МГЭ считается<br />
наиболее точным и требующим наименьшего объема вычислительных<br />
ресурсов. Его недостатки есть продолжение его достоинств: решение<br />
116
получается только на границах, для получения расчетных уравнений<br />
требуется высокая математическая квалификация.<br />
Электрические схемы замещения могут быть построены для всех<br />
перечисленных методов. В настоящей главе приводится пример построения<br />
электрической схемы замещения для расчета поля методом конечных<br />
разностей.<br />
Рассматривается простой, но достаточно общий пример уравнения<br />
поля для одномерной задачи поиска распределения индукции вдоль зазора<br />
линейного асинхронного двигателя при относительном перемещении<br />
индуктора и вторичного элемента с некоторой произвольно заданной<br />
скоростью (задача электродинамики).<br />
Построенная электрическая схема замещения решается методами,<br />
приведенными во второй главе, в частности методом расчета по частям.<br />
При расчете поля можно выделить несколько этапов:<br />
– построение разностного уравнения для уравнения в частных производных<br />
(разностная аппроксимация);<br />
– разностное уравнение интерпретируются как закон Кирхгофа для токов:<br />
отдельные слагаемые уравнения соответствуют различным токам,<br />
инцидентным узлу разностной сетки;<br />
– магнитная индукция в узлах сетки интерпретируется как напряжение<br />
на узлах сетки, коэффициенты при индукции интерпретируются как<br />
проводимости эквивалентной схемы замещения. В результате получается<br />
схемный аналог для разностного уравнения, составленного<br />
для участка (участков) поля на длине расчетного шага;<br />
– ветви схемного аналога заменяются обобщенными (резистивными)<br />
ветвями, в результате формируется элементарная схема, выполняется<br />
переход к обобщенной схеме, расчет которой подробно рассмотрен<br />
во второй главе;<br />
– результат расчета — узловые напряжения схемы замещения численно<br />
равные значениям индукции в узлах сетки.<br />
В главе показано также, что метод может быть применен для расчета<br />
поля при питании индуктора как от источника тока, так и источника<br />
напряжения. Последний факт имеет решающее значение для включения<br />
уравнений поля в уравнения цепей питания двигателя при исследовании<br />
электромагнитных процессов в управляемых электроприводах.<br />
117
3.1. Резистивная схема замещения разностного уравнения.<br />
Моделирование поля рассмотрим на примере одномерного поля линейного<br />
асинхронного двигателя, расчетная схема которого приведена<br />
на рис.3.1.1.<br />
а<br />
Z<br />
2рτ<br />
1 2<br />
3<br />
проводящая шина<br />
вторичного элемента<br />
Рис. 3.1.1. Расчетная схема линейного асинхронного<br />
двигателя<br />
Ток индуктора на рис.3.1.1 представлен бесконечно тонким слоем с<br />
линейной плотностью J1, распределенным на участке длиной 2рτ, где τ –<br />
полюсное деление, р – число пар полюсов двигателя. Магнитная проницаемость<br />
индуктора и вторичного элемента равна бесконечности. На<br />
вторичном элементе расположена накладка из проводящего материала с<br />
удельным сопротивлением ρ и толщиной а. Немагнитный зазор δ’, включает<br />
толщину накладки и воздушный зазор и характеризуется магнитной<br />
проницаемостью μ0. Скорость вторичного элемента V направлена по оси<br />
Х, поле индуктора также перемещается в эту сторону.<br />
На рис.3.1.1 выделены три участка. Распределение магнитной индукции<br />
В на участках 1, 3 поле описывается уравнением (3.1.1) на<br />
участке (2) – уравнением (3.1.2):<br />
δ '<br />
⋅<br />
μ0 ∂2 B a<br />
− 2<br />
∂ x ρ<br />
δ '<br />
⋅<br />
μ0 ∂2 B a<br />
− 2<br />
∂ x ρ<br />
dB<br />
dt<br />
dB<br />
dt<br />
a B<br />
− ⋅V⋅∂<br />
ρ ∂ x =0<br />
a B<br />
− ⋅V⋅∂<br />
ρ ∂ x =− ∂ J 1<br />
∂ x<br />
118<br />
(3.1.1)<br />
(3.1.2)<br />
Аппроксимация на основе центральных разностей с шагом h дает следующее<br />
выражение для 2-го участка (для 1-го и 3-го участков правая<br />
часть этого выражения равна 0):<br />
Для перехода к сеточной электрической модели преобразуем разность<br />
2-го порядка для индукции и умножим правую и левую части уравнения<br />
на 4h2 δ ' B x h , t −2 B x , t B x−h ,t <br />
⋅<br />
μ0 2 h<br />
. Получаем:<br />
2<br />
− a x , tΔt −B x , t <br />
⋅B −<br />
ρ Δt<br />
− a xh ,t −B x−h ,t <br />
⋅V⋅B =−<br />
ρ 2h<br />
J 1 xh ,t −J 1 x−h ,t <br />
.<br />
2h<br />
δ’<br />
Х<br />
слой тока индуктора
2 δ'<br />
2 δ '<br />
⋅ B− B− ⋅ B−B− −<br />
μ0 μ0 4ah2<br />
где приняты следующие обозначения:<br />
B+=B(x+h,t); B=B(x,t); B-=B(x-h,t); J+=J(x+h,t); J-=J(x-h,t);<br />
Уравнению (3.1.3) можно поставить в соответствие следующую элек-<br />
трическую схему:<br />
ρ ⋅ΔB<br />
Δt<br />
2ahV<br />
( B<br />
ρ<br />
+ −<br />
2 ah<br />
−<br />
ρ ⋅V⋅ B− B−=−2 h J − J − ,<br />
B _<br />
B<br />
Рис. 3.1.2. Схемный аналог для центральных разностей.<br />
(3.1.3)<br />
Как видно на рис. 3.1.2, схемный аналог представлен Т-образной схемой,<br />
состоящей из 2-х проводимостей, одной емкости, одного источника<br />
тока, управляемого напряжением и одного независимого источника<br />
тока. Расчет схемы можно выполнить как во временной области для анализа<br />
переходных процессов, так и в частотной – для анализа установившихся<br />
режимов. Разница только в том, что при частотном анализе емкостное<br />
сопротивление Zc=jω·4a 2 /ρ, все переменные являются комплексными<br />
числами, а при расчете переходных процессов емкостное сопротивление<br />
должно соответствовать разностной схеме замещения и все<br />
переменные - вещественные числа.<br />
Источником электромагнитного поля являются токи фазной обмотки.<br />
Связь этих токов с линейной плотностью тока независимого источника<br />
рис.3.1.2 выполняется через обмоточную матрицу.<br />
Формирование обмоточной матрицы.<br />
Линейную плотность тока J можно вычислить через ток I, охватываемый<br />
участком 2h: J=I/(2h). Ток I определяется по известному току паза Ip:<br />
I=Ip/k, где k – число расчетных интервалов разбиения пазового шага. Пазовый<br />
ток, в свою очередь, связан с фазными токами через «обмоточную»<br />
матрицу Собм: Ip = Собм·Iф, где Ip – вектор пазовых токов, Iф – вектор<br />
фазных токов. Например, для варианта укладки обмотки, приведенного<br />
ниже в таблице:<br />
номер паза 1 2 3 4 5 6 7 8 9 10 11 12<br />
фаза A A Z Z B B X X C C Y Y<br />
Матрица Собм приведена справа. Строки матрицы соответствуют номерам<br />
пазов, столбцы соответствуют фазам. Например, в строках 7-й и<br />
8-й матрицы стоит -1, это соответствует тому, что в 7-м и 8-м пазах рас-<br />
119<br />
−<br />
)<br />
2δ’<br />
μ 0<br />
2<br />
4ah<br />
ρ<br />
В<br />
2δ’<br />
μ 0<br />
В +<br />
2h(J + -J - )
положен обратный провод фазы А. Если число проводников фазной обмотки<br />
в пазу не равно единице, то вместо 1 указывается это число проводников<br />
с соответствующим знаком.<br />
Далее, следует заметить, что в разностных<br />
уравнениях поля (3.1.3) в правой части<br />
имеется разность J+-J−. Связь токов J+ и J− с<br />
пазовыми токами определяется «дифференцирующей»<br />
матрицей.<br />
Дифференцирующая матрица.<br />
В приведенных соотношениях шаг сетки<br />
2h выбран равным ширине зубцовой зоны,<br />
поэтому линейные плотности J+ = I+(x+h,t)/<br />
(2h) и J− = I−(x−h,t)/(2h) можно определить через<br />
пазовые токи следующим образом. Если<br />
обозначить полные токи в соседних пазах<br />
(3.1.3) …, Iр-1, Iр, Iр+1, …, то приближенно ток I+<br />
ф<br />
п<br />
a b c<br />
1 1<br />
2 1<br />
3 -1<br />
4 -1<br />
5 1<br />
Собм = 6 1<br />
7 -1<br />
8 -1<br />
9 1<br />
10 1<br />
11 -1<br />
12 -1<br />
= (Iр+1+Iр)/(2k), ток I− = (Iр + Iр-1)/(2k), тогда независимый источник тока схемы<br />
рис. 3.2 вычисляется по формуле:<br />
Jb=J+ − J− = (Iр+1−Iр−1)/(2hk) (3.1.4)<br />
Вычисление разности пазовых токов по формуле (3.1.4) может быть<br />
автоматизировано, если воспользоваться матричным выражением:<br />
Jb = 1/(2hk) ∙ Cдифф ∙ Ip, (3.1.5)<br />
где Cдифф – матрица размером bn × pn, имеет следующий вид:<br />
пазы<br />
ветви 1 2 ... p-1 p p+1 p+2 ... pn-1 pn<br />
bo 1<br />
bo+1 1<br />
...<br />
Cдифф = b -1 +1<br />
b+1 -1 +1<br />
...<br />
bn-1 -1<br />
bn<br />
I р−1<br />
I −<br />
I р<br />
h h<br />
Рис. 3.1.3. К расчету независимого источника тока схемы замещения для<br />
центральных разностей.<br />
I +<br />
120<br />
I р+1<br />
-1<br />
(3.1.6)
Здесь приняты следующие обозначения для индексов:<br />
bn – число ветвей схемы, pn – число пазов обмотки, bo+1 – номер ветви<br />
схемы, на которую попадает 1-й паз обмотки, bn-1 – номер ветви схемы,<br />
на которую падает последний паз обмотки.<br />
Следует отдельно остановиться на элементах матрицы, отображающих<br />
крайние пазы обмотки. Рис. 3.1.4, на котором приведено относительное<br />
расположение токов в пазах обмотки и схемы замещения, поясняет<br />
распределение индексов в матрице Cдифф для первых и последних<br />
двух элементов.<br />
b 0<br />
I 1<br />
I 2<br />
Iр n−1<br />
Рис. 3.1.4. Относительное расположение токов в пазах обмотки и схемы замещения.<br />
Математически матрица Cдифф соответствует операции дифференциро-<br />
вания пазовых токов, так как J b =J p −J p− ≃ ∂ I p<br />
∂ x .<br />
Окончательная связь фазных токов с источниками тока схемы замещения.<br />
Резюмируя сказанное относительно вычисления вектора независимого<br />
источника тока Jb, действующего в схеме замещения электромагнитного<br />
поля, можно привести формулу для его вычисления, если известен вектор<br />
фазных токов Iф:<br />
Jb = 1/(2hk) ∙ Cдифф ∙ Собм ∙ I ф . (3.1.7)<br />
Схемный элемент на рис. 3.1.2 можно объединить с другими элементами<br />
в группу. На рис. 3.1.5 приведена схема, составленная из 5 элементов.<br />
1<br />
G0<br />
1<br />
Cb<br />
11<br />
3<br />
G0<br />
2 3<br />
Приведем описание схемы рис. 3.1.5.<br />
Схема состоит из 15 ветвей. На рис.3.1.5 приведена нумерация ветвей<br />
и узлов. Первый и второй узел присвоены внешним узлам схемы для<br />
упрощения индексации массивов при дальнейших вычислениях.<br />
121<br />
Ip n<br />
b 0 +1 b n –1 b n<br />
4 G0 5 G0 6<br />
G0<br />
4 5<br />
6 7<br />
Cb Cb Cb<br />
12<br />
13<br />
14<br />
7<br />
G0<br />
Рис. 3.1.5. Схема из 5 элементов.<br />
8<br />
G0<br />
9<br />
пазовые токи<br />
схема<br />
G0<br />
8<br />
10<br />
9<br />
G0<br />
Cb<br />
15<br />
11<br />
G0<br />
10<br />
2
3.2. Элементарная схема.<br />
Схема не содержит источников напряжения, поэтому уравнение, описывающее<br />
отдельные ветви можно привести в узловой форме:<br />
ib + Jb = Ybb ∙ Ub, (3.2.1)<br />
где матрица проводимостей Ybb при расчете в частотной области:<br />
в<br />
в 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />
1 G0<br />
2 G0<br />
3 G0<br />
4 G0<br />
5 G0<br />
6 G0<br />
Ybb= 7 G0<br />
8 G0<br />
9 G0<br />
10 G0<br />
11 Ki Ki YC<br />
12 Ki Ki YC<br />
13 Ki Ki YC<br />
14 Ki Ki YC<br />
15 Ki Ki YC<br />
здесь использованы следующие обозначения<br />
Для расчета в частотной области Y c = jω 1<br />
G0= 2δ'<br />
μ 0<br />
4ah 2<br />
ρ<br />
2 ah<br />
, K i =<br />
ρ ⋅V .<br />
(3.2.2)<br />
, где ω1 − угловая ча-<br />
стота питания обмоток индуктора.<br />
Для расчета во временнóй области методом Эйлера 1−го порядка емкость<br />
заменяется разностным аналогом с уравнением в узловой форме с<br />
источником тока:<br />
i n1 C b<br />
Δt U n = C b<br />
Δt U n1 .<br />
(3.2.3)<br />
Таким образом, в матрице Ybb емкостная проводимость вычисляется<br />
по формуле:<br />
Y c = 4ah2<br />
Δt⋅ρ<br />
Дополнительно к независимому источнику тока Jb, действующему на<br />
емкостной ветви надо добавить величину 4ah2<br />
Δt⋅ρ ⋅U n , где Un − напряжение,<br />
вычисленное на предыдущем расчетном шаге.<br />
3.3. Уравнения подсхемы.<br />
Сформируем уравнение в контурном базисе. Для этого потребуется матрица<br />
сопротивлений ветвей Zbb:<br />
Zbb = (Ybb) -1 .<br />
122
Для формирования уравнения подсхемы требуется ее топологическое<br />
описание посредством контурной матрицы соединений Сbr:<br />
r<br />
b 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />
1 -1<br />
2 1 1<br />
3 1<br />
4 1 1<br />
5 1<br />
6 1 1<br />
Сbr= 7 1<br />
8 1 1<br />
9 1<br />
10 1<br />
11 1 1 1 1<br />
12 1 1 -1 1<br />
13 1 1 -1 1<br />
14 1 1 -1 1<br />
15 1 1 -1<br />
Матрица Сbr соответствует топологии, в которой хордами являются<br />
3, 5, 7 и 9 ветви. Столбцы матрицы перечисляют сначала узловые пары<br />
относительно «земли»: с 1-й по 11-ю, затем контуры. Ветвям соответствуют<br />
строки матрицы. Узловую транспонированную матрицу соеди-<br />
нений можно подсчитать через обращение контурной матрицы:<br />
b<br />
r<br />
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />
1 -1<br />
2 1<br />
3 1 -1 1<br />
4 1 -1<br />
5 1 -1 1<br />
6 1 -1<br />
7 1 -1 1<br />
Arb = (Сbr ) -1 = 8 1 -1<br />
9 1 -1 1<br />
10 1 -1<br />
11 1 -1 1<br />
12 1<br />
13 1<br />
14 1<br />
15 1<br />
Столбцы матрицы Abr перечисляют ветви, строки с 1 по 11 относятся к<br />
узловым парам. Строки с 12 по 15 отмечают хорды.<br />
123
По известной топологической матрице Сbr и матрице сопротивлений<br />
Zbb вычисляется матрица сопротивлений подсхемы:<br />
Zrr = Crb ∙ Zbb ∙ Cbr<br />
Вектор источников тока, действующих в подсхеме Jr, вычисляется по<br />
формуле:<br />
Jr = Arb ∙ Jb. (3.3.1)<br />
Уравнение подсхемы:<br />
Ur = Zrr ∙ (ir + Jr),<br />
где векторы токов ir и напряжений Ur являются неизвестными.<br />
Уравнение подсхемы можно разрешить относительно неизвестных<br />
векторов − вектора узловых напряжений Uo и вектора контурных токов<br />
ik. Для этого в матрице сопротивлений Zrr выделяются блоки, относящиеся<br />
к узловым о и контурным k координатам:<br />
Zrr=<br />
o k<br />
o Zoo Zok<br />
k Zko Zkk<br />
В векторе Jr также выделяются блоки − вектор узловых источников<br />
тока Jo и вектор контурных источников тока Jk, который в данном частном<br />
случае равен 0. Вектор Jo можно найти непосредственно, если<br />
воспользоваться частным случаем формулы (3.3.1):<br />
Jо = Aоb ∙ Jb ,<br />
где Aоb − подматрица Arb.<br />
Далее, исключая контурные сопротивления из Zrr, определяются узловые<br />
сопротивления Z’oo эквивалентной лучевой подсхемы:<br />
Z’oo = Zoo − Zok ∙ (Zkk) -1 ∙ Zko (3.3.2)<br />
Теперь неизвестный вектор узловых напряжений можно вычислить по<br />
формуле:<br />
Uо = Z’оо ∙ Jо, (3.3.3)<br />
Вектор контурных токов для расчета полной схемы не нужен, но при<br />
необходимости выполнения дополнительных расчетов, можно воспользоваться<br />
соотношением:<br />
ik = Ykk ∙ J’k,<br />
где J’k = Ykk ∙ Zko ∙ Jo − вектор контурных источников тока эквивалентной<br />
контурной схемы с исключенными узловыми координатами, (Zkk) −1 = Ykk<br />
− матрица проводимостей эквивалентной контурной схемы.<br />
Соотношения (3.3.2) и (3.3.3) необходимы для расчета целой схемы,<br />
составленной из подсхем.<br />
124
3.4. Расчет схемы замещения электромагнитного поля.<br />
Из отдельных подсхем собирается полная схема замещения расчетного<br />
участка. На рис. 3.4.1 приведена схема из 11 подсхем. Подсхемы<br />
с 2-й по 9 соответствуют рис. 3.4.1. Замыкающие 1-я и 11-я подсхемы<br />
моделируют граничные условия.<br />
1<br />
s1<br />
s2 s3 s4 s5 s6 s7 s8 s9<br />
2 3 4 5 6 7 8 9 10<br />
Рис. 3.4.1. Схема замещения расчетного участка на 45 узлов сетки..<br />
В дальнейшем будем использовать следующие индексы для обозначения<br />
различных координат:<br />
о – узловые координаты подсхем; ō − узловые координаты, через которые<br />
подсхемы связываются между собой (внешние узловые пары подсхем);<br />
s – координаты связей подсхем; b – координаты ветвей.<br />
Для объединения подсхемы в схему необходимы только 2 ее внешние<br />
узловые пары. Поэтому из матрицы Z’oо выделяется подматрица<br />
узловых сопротивлений, которая соответствует внешним узловым парам<br />
− Z’ōō. Таких подматриц, размером 2х2 для рассматриваемого примера<br />
должно быть 9 (см. рис.3.4.1). Из этих подматриц собирается матрица<br />
элементарных сопротивлений цепи пересечений Zōō, к которой добавляются<br />
подматрицы сопротивлений граничных подсхем.<br />
Посредством топологической матрицы Сōs формируется контурная<br />
матрица цепи пересечений Zss:<br />
Zss = Csō ∙ Zōō ∙ Cōs, (3.4.1)<br />
где матрица Zōō является блочно-диагональной.<br />
В матрице Сōs столбцы обозначены индексом s и перечисляют<br />
контурные координаты, строки обозначены ō и перечисляют внешние<br />
узлы подсхем. Матрица Cōs для рассматриваемого примера имеет вид,<br />
приведенный далее в (3.4.2), где символ р перечисляет номера подсхем.<br />
Как видно из (3.4.2), матрица имеет ленточный вид, и ее составление<br />
легко автоматизируется.<br />
Для дальнейших расчетов требуется вычислить матрицу контурных<br />
проводимостей:<br />
Yss = Zss -1 .<br />
Если топология схемы и ее сопротивления не меняются, то вычисление<br />
Zōō и Yss производится один раз.<br />
125<br />
s10<br />
11
Матрица Cōs :<br />
p<br />
s<br />
ō 1 2 3 4 5 6 7 8 9 10<br />
1 1 1<br />
2<br />
1<br />
2<br />
-1<br />
1<br />
3<br />
1<br />
2<br />
-1<br />
1<br />
4<br />
1<br />
2<br />
-1<br />
1<br />
Cōs = 5<br />
1<br />
2<br />
-1<br />
1<br />
6<br />
1<br />
2<br />
-1<br />
1<br />
7<br />
1<br />
2<br />
-1<br />
1<br />
8<br />
1<br />
2<br />
-1<br />
1<br />
9<br />
1 -1<br />
2 1<br />
10<br />
1<br />
2<br />
-1<br />
1<br />
11 1 -1<br />
(3.4.2)<br />
3.4.1. Расчет поля при питании от источника тока<br />
Из найденного по формуле (3.3.3) вектора узловых напряжений Uo<br />
выделяются узловые напряжения на внешних узлах Uō. Эти узловые<br />
напряжения образуют вектор контурных э.д.с. цепи пересечений es, расчет<br />
этого вектора выполняется по формуле:<br />
es = − Csō · Uō,<br />
расчет контурных токов цепи пересечений:<br />
is =Yss · es,<br />
Контурные токи цепи пересечений – это результат соединения подсхем.<br />
Контурные токи распределяются по подсхемам, вызывая приращение<br />
вектора узловых токов Jo, найденного ранее. Это приращения ∆Jō<br />
находится по формуле:<br />
∆Jō = Cōs · is,<br />
Увеличение узловых потенциалов в подсхемах, вызванное их соединением<br />
находится по формуле:<br />
∆Uo = Zoō · ∆Jō ,<br />
где Zоō − блочная матрица, получающаяся выделением из Z’oo подматрицы<br />
с координатами внешних узлов ō.<br />
Окончательно узловые напряжения определяются суммированием<br />
ранее найденного вектора узловых напряжений и приращения ∆Uo:<br />
126
U’o=Uo+∆Uo.<br />
Найденные узловые напряжения в масштабе 1:1 соответствуют индукции<br />
магнитного поля.<br />
Приведенные выше расчетные этапы можно свернуть в одну формулу,<br />
связывающую фазные токи с индукцией:<br />
Bо ≡ U’o = Zoō · (1− Cōs · (Csō· Zōō· Cōs) -1 · Csō · Zōо) · Aob · Cbp · Срф · Iф,<br />
(3.4.3)<br />
где Zоō − приведенная матрица взаимных сопротивлений узловых координат<br />
подсхем и узловых координат, связывающих подсхемы, Cōs −<br />
контурная матрица, преобразования узловых координат подсхем в координаты<br />
ветвей связей подсхем, Aob − узловая матрица соединений ветвей<br />
в подсхеме, Zōō − приведенная матрица узловых сопротивлений<br />
внешних узлов подсхем, Cbp − «дифференцирующая» матрица, Срф −<br />
«обмоточная» матрица.<br />
Таким образом, зная вектор фазных токов, по параметрам схемы замещения<br />
поля и его топологии можно определить вектор индукции в<br />
узлах разностной решетки:<br />
Bo = Loф · Iф, (3.4.4)<br />
где матрица Lоф вычисляется в соответствии с (3.4.3):<br />
Lоф = Zoō · (1− Cōs · (Csō · Zōō · Cōs) -1 · Csō · Zōо) · Aob · Cbp · Срф (3.4.5)<br />
Расчет тока вторичного элемента I2 на участке длиной 2h можно<br />
найти следующим образом:<br />
I 2 = j 2⋅a⋅2h=− (3.4.6)<br />
δ'⋅2h ∂ B<br />
⋅<br />
μ0 ∂ x −I δ '⋅2h B−B− δ '<br />
1≈− −I 1 =− ⋅B −B− −I 1 .<br />
μ0 2h<br />
μ0 где I1 – ток индуктора.<br />
Сила f, действующая на элемент длиной 2h в направлении оси х равна<br />
вещественной части произведения индукции на комплексно-сопряженное<br />
значение тока индуктора:<br />
f = −1/2 ∙ Hi ∙ Re(B · I * 1), (3.4.7)<br />
где В – индукция, на середине участка длиной 2h, Hi − ширина активной<br />
зоны индуктора.<br />
При расчете переходных процессов мгновенная сила вычисляется по<br />
формуле<br />
f = Hi ∙ B · I1.<br />
Полная сила будет равна сумме сил для всех участков 2h в рамках<br />
длины индуктора:<br />
No<br />
Fэ=∑ i=1<br />
где No − количество элементов длиной 2h.<br />
f i<br />
127<br />
(3.4.8)<br />
(3.4.9)
3.4.2. Расчет поля при питании от источника напряжения.<br />
Если двигатель питается от источника напряжения, ток неизвестен, и<br />
для его расчета надо использовать электродвижущие силы фазных обмоток.<br />
Элементарная э.д.с. e, действующая в контуре длиной 2h и шириной Hi<br />
равна скорости изменения магнитного потока Ф через эту площадку:<br />
dФ dВ<br />
e =<br />
= 2h<br />
⋅ Hi<br />
⋅ ,<br />
dt<br />
dt<br />
(3.4.10)<br />
где В – индукция на длине 2h.<br />
При расчетах в частотной области:<br />
e = jω ∙ Ф = jω ∙ (2h ∙ Hi) ∙ B (3.4.11)<br />
На электрической схеме рис.3.2 индукции B соответствует напряжение<br />
U.<br />
Чтобы найти э.д.с., действующую в фазе, надо просуммировать элементарные<br />
э.д.с. еp, действующие на площадках, занимаемой фазной обмоткой.<br />
Операцию суммирования можно выполнить с помощью матричного<br />
умножения:<br />
Еф = Sф p ∙ ep , (3.4.12)<br />
где суммирующая матрица Sф p формируется на базе обмоточной матрицы<br />
Сф р , несущей информацию о том, как отдельные пазовые проводники<br />
объединены в катушки фазных обмоток. Можно воспользоваться и обмоточной<br />
матрицей, если результат умножить на j (что соответствует<br />
повороту вектора на 90˚):<br />
Еф = j ∙ Сф р ∙ ep<br />
(3.4.12a)<br />
Подставляя (3.4.11) и (3.4.4) в (3.4.12), получим выражение, связывающее<br />
вектор фазных э.д.с. с вектором фазных токов:<br />
Еф = Zфф ∙Iф (3.4.13)<br />
где<br />
Zфф = jω ∙ (2h ∙ Hi) ∙ Sф р ∙ L рф<br />
(3.4.14)<br />
Для расчета тока двигателя, можно использовать матричное уравнение<br />
напряжений фаз индуктора двигателя:<br />
Uф = Rфф∙I ф + jω∙ Lσфф∙I ф + Eф ; (3.4.15)<br />
где Uф, I ф – соответственно вектора напряжений и тока обмоток индуктора,<br />
Rфф, Lσфф – соответственно матрицы сопротивлений и индуктивностей<br />
рассеяния обмоток индуктора, Eф−вектор фазных э.д.с. индуктора. Учитывая<br />
(3.4.12), можно записать выражение, связывающее ток и напряжение<br />
двигателя:<br />
где Z’фф вычисляется по формуле:<br />
Uф = Z’фф∙Iф, (3.4.16)<br />
128
Z’фф = (Rфa + jω Lσфф + Zфф ). (3.4.17)<br />
Если индукторные обмотки соединены в звезду, треугольник или любым<br />
другим способом (например, для многомодульных конструкций) и<br />
связаны с источником напряжения по определенной схеме, то эту связь<br />
можно выразить матрицей соединения фаз в схему С ф f. Например, если<br />
обмотки соединены в звезду и связаны с источником напряжения, фазы<br />
которого тоже соединены в звезду, то:<br />
Связь векторов и матриц в контурной системе координат, которую<br />
обозначим штрихами, с фазной системой координат выражается стандартными<br />
формулами преобразований [1]:<br />
Uf = Cf ф ∙ Uф; Zff = Cf ф ∙ Z’фф ∙ C ф f ; I ф = C ф f ∙ I f ; Uf = Zff ∙ I f .<br />
Вектор токов в фазах статора тогда находится по формуле:<br />
Iф = C ф f ∙ ( Cf ф ∙ Z’фф ∙ C ф f ) -1 ∙ Cf ф ∙ Uф, (3.4.18)<br />
где Z’фф определяется по (3.30).<br />
Таким образом, задача расчета тока двигателя по заданному напряжению<br />
решена.<br />
Выражение (3.4.18) позволяет рассчитать фазные токи по заданному<br />
напряжению и одновременно по формуле (3.4.4) определить значения индукции.<br />
Топологические матрицы Сф, приведенные в этих выражениях отражают<br />
соединение фазных обмоток в схему. Шесть фазных ветвей двигателя<br />
и три ветви источника, соединенные звездой, в сумме образуют 9 ветвей,<br />
поэтому размер матриц должен быть 9 х 9.<br />
На рис.3.4.2 приводятся несколько характерных решений для двухмодульной<br />
конструкции ЛАД.<br />
1<br />
а) параллельное соединение.<br />
3<br />
2<br />
контуры<br />
ветви 1 2<br />
a 1<br />
С ф f = b 1<br />
c -1 -1<br />
1<br />
б) параллельное соединение<br />
с общей нейтралью.<br />
Рис. 3.4.2. Схемы соединения модулей линейного асинхронного двигателя.<br />
На рисунке обозначены: 1 – инвертор напряжения, 2 – модули индуктора, 3-<br />
вторичный элемент.<br />
129<br />
2<br />
3<br />
1<br />
в) последовательное<br />
соединение концентрических<br />
обмоток.<br />
2<br />
3
Для схем с параллельным соединением с общей нейтралью, изолированной<br />
нейтралью и последовательным соединением фаз индуктора матрицы<br />
Сф приведены ниже. Справа от утолщенной линии – контурная часть<br />
матрицы, слева - узловая:<br />
1 1 -1<br />
для параллельного соединения с<br />
изолированной нейтралью<br />
Сф =<br />
для параллельного соединения<br />
с общей нейтралью<br />
Сф =<br />
для последовательного соединения<br />
концентрических<br />
обмоток<br />
Сф =<br />
1 1 -1<br />
1 1 1 -1 -1 1 1<br />
1 1 -1 -1 -1<br />
1 1 -1<br />
1 1 -1<br />
1 -1 -1<br />
1<br />
1 1 -1 -1<br />
1 1<br />
1 1<br />
1 1 1 -1 -1<br />
1<br />
1<br />
1<br />
1 1 1<br />
1 1 1<br />
130<br />
1 -1 -1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
-1 -1 -1<br />
1<br />
1<br />
1 -1 -1
3.5. Алгоритм расчета электромагнитного поля во временной<br />
области.<br />
Приведем алгоритм расчета одномерного поля в системе SciLab.<br />
Расчет мгновенных процессов производится в цикле по времени с шагом<br />
приращения времени dt. Порядок расчета внутри цикла следующий.<br />
• вычисление фазных токов Ia=sin(2π·f·t), Ib=sin(2π·f·t-2π/3), Iс=sin(2π·f·t+2π/<br />
3),<br />
• вычисление пазовых токов Ip=Cпф·Iф,<br />
• вычисление источников тока, действующих на емкостных ветвях:<br />
Jv=Uo·Cb + Сдиф·Ip<br />
Источники тока в ветвях схемы – это производная от пазовых токов:<br />
J v = ∂ I p<br />
∂ x ≈ I p−I p− ,<br />
2h<br />
где индексы + и – соответствуют обозначениям в формуле (3.1.4). Вычисление<br />
производной можно записать в матричной форме, связывающей<br />
источники тока в ветвях Jv с пазовыми токами Ip: Jv = 1/2h ∙ Сдиф ∙<br />
Ip, где Сдиф – «дифференцирующая» матрица размером v x p, имеющая<br />
следующий вид:<br />
пазы<br />
ветви … p-1 p p+1 p+2 …<br />
… … … … …<br />
Сдиф = v -1 +1<br />
v+1 -1 +1<br />
… … … … …<br />
• расчет источников тока Jr на узловых и контурных координатах подсхем<br />
по формуле: Jr=At·Jv,<br />
• из вектора Jr выделяются узловые источники тока Jо,<br />
• расчет узловых напряжений отдельных подсхем Uo=Zor·Jo, Из этого<br />
вектора узловых напряжений выделяются узловые напряжения на<br />
внешних узлах Uoo. Эти узловые напряжения образуют контурные<br />
э.д.с. цепи пересечений es,<br />
• расчет контурных э.д.с. цепи пересечений es= - Cos·Uoo,<br />
• расчет контурных токов цепи пересечений Is=Yss·es,<br />
• контурные токи цепи пересечений – это результат соединения подсхем.<br />
Контурные токи распределяются по подсхемам, вызывая приращения<br />
узловых токов Jo, найденных ранее. Эти приращения dIo находятся<br />
по формуле: dIo = Cos·Is,<br />
• увеличение узловых потенциалов в подсхемах, вызванное их соединением<br />
находится по формуле: dUo=Zor·dIo,<br />
131
• окончательно узловые напряжения определяются суммированием ранее<br />
найденного вектора узловых напряжений и приращения dUo:<br />
Uo ~ =Uo+dUo.<br />
Найденные узловые напряжения в масштабе 1:1 соответствуют индукции<br />
магнитного поля.<br />
Исходные данные для расчета следующие:<br />
parp – число пар полюсов; interval – число интервалов разбиения пазового<br />
шага;<br />
w – число витков фазной обмотки; chered – чередование фаз в пазах<br />
индуктора;<br />
Imax - амплитуда тока фазной обмотки; f – частота питания фазной<br />
обмотки;<br />
tau – полюсное деление фазной обмотки;aplast – толщина пластины;<br />
ro – удельная проводимость пластины; delta – воздушный зазор;<br />
h – половина расчетного пазового шага;<br />
Vd – скорость движения пластины; Nt - число расчетных точек по времени<br />
ta,he – входные и выходные узлы ветвей подсхемы;<br />
C,A – топологические матрицы подсхем; Сobm – обмоточная матрица;<br />
Сos – матрица цепи пересечений; Uo – вектор узловых напряжений<br />
схемы;<br />
B - вектор индукции в узлах решетки;<br />
clear;<br />
parp=4; interval=2; pazov=6*parp*interval; w=30/interval; chered=[2 1 3];<br />
Imax=300; f=25; tau=0.2; aplast=5e-3; ro=1/20.0e6; mu0=4.0e-7*%pi; delta=0.01;<br />
h=tau/(6*interval); Ki=2.*aplast*h/ro; v=15; o=11;<br />
Vd=7; Nt=500; // задание скорости и числа расчетных точек по времени<br />
ta= [3 4 5 6 7 8 9 10 11 2 3 5 7 9 11];<br />
he=[1 3 4 5 6 7 8 9 10 11 12 12 12 12 12];<br />
[C,A,g]=formc(ta,he);<br />
//g('node_x')=[100 1100 200 300 400 500 600 700 800 900 1000 600];<br />
//g('node_y')=[200 200 200 200 200 200 200 200 200 200 200 100];<br />
//show_graph(g);<br />
i=0;k=0;<br />
for j=1:interval:pazov<br />
k=k+1; i=i+1; if i==4 then i=1; end;<br />
m=w*(-1)^k;<br />
for n=0:interval-1<br />
Cobm(j+n,chered(i))=-m; //формирование обмоточной матрицы<br />
end;<br />
end;<br />
kp=int(2*pazov/5); oo=o*kp; ksv=kp+1;<br />
Cos(2*kp+2,ksv)=0; //объявление размера матрицы цепи пересечений<br />
dt=0.1*h/Vd; // вычисление расчетного шага по времени<br />
for i=1:ksv<br />
j=2*i; Cos(j-1,i)=-1; Cos(j,i)=1; // формирование матрицы цепи пересечений<br />
if i
end;<br />
k=0; m=0; j=1; Cdif(v,pazov,kp)=0; //объявление дифференцирующей матрицы<br />
Cdif(14,1,j)=0.5; Cdif(15,2,j)=0.5;<br />
k=0;j=j+1;<br />
for i=3:pazov+2 //формирование дифференцирующей матрицы<br />
k=k+1; if k==6 then k=1;j=j+1; end;<br />
if (i>pazov) then Cdif(10+k,i-2,j)=-0.5;<br />
else Cdif(10+k,i,j)=0.5; Cdif(10+k,i-2,j)=-0.5;<br />
end;<br />
end;<br />
for i=1:15<br />
if i=2)&(npaz
………<br />
kyzl=kyzl+1; B(kyzl,it)=Uo(j,i); Ipgr(kyzl,it)=0.;<br />
if (npaz=1) then Ipgr(kyzl,it) = Ip(npaz); end;<br />
end; end;<br />
end;<br />
xpaz(1:kyzl)=1:kyzl;<br />
kpp=xget("pixmap"); xset("pixmap",1);<br />
for i=1:Nt<br />
Bg=B(:,i);Ipgr2=Ipgr(:,i);<br />
xbasc(); xset("wwpc");<br />
plot2d(xpaz', [Bg 0.00001*Ipgr2] ,leg='b@i',rect=[0 -0.7 kyzl 0.7]); xgrid();<br />
xset("wshow");<br />
end;<br />
134
4. Моделирование систем управления<br />
4.1. Системы управления на операционных усилителях.<br />
Передаточная функция операционного усилителя, охваченного отрицательной<br />
обратной связью (рис.4.1.1а), может быть представлена формулой:<br />
W p = U вых p Z0 p <br />
=− , где Z0(p) – сопротивление цепи обрат-<br />
U вх p Z1 p <br />
ной связи усилителя, Z1(p) – сопротивление входной цепи усилителя. На<br />
рис.4.1.1б приведена схема сумматора на операционном усилителе. Выходное<br />
напряжение такой схемы:<br />
Z0 p <br />
U вых p =−<br />
Z1 p ⋅U Z0 p<br />
вх1 p −<br />
Z2 p ⋅U Z0 p <br />
вх 2 p −...−<br />
Zk p ⋅U вх p , k<br />
где Zk(p) – сопротивление k-й входной цепи усилителя.<br />
Uвх(р)<br />
Uвых(р)<br />
Uвх1(р)<br />
Uвх2(р)<br />
Uвх k (р) б)<br />
Рис. 4.1.1. Звенья на операционных усилителях.<br />
Uвых(р)<br />
Для типовых звеньев сопротивления цепей обратной связи и входной<br />
цепи:<br />
Пропорциональное звено: Z0=Ro, Z1=R1. W(p)=-Rо/R1;<br />
Интегральное звено: Z1 = R, Z0(p)=1/(pC), где С – емкость. W(p)=-1/<br />
(p·RC)=-1/pT,<br />
где Т=RC – постоянная интегрирования;<br />
Пропорционально-интегральное звено: Z1=R1, Z0=R0 + 1/(p·C0);<br />
W(p)=-[R0/R1 + 1/(p·R1·C0)]=-Kp·[(1+p·T)/(p·T)], Т=R0·С0, Kp=R0/R1<br />
Апериодическое звено 1-го порядка: Z1=R1, 1/Z0=1/R0+p·C;<br />
W(p)= - R0/R1 ·[1/(1+p·R0·C0)]=-Kp·[1/(1+p·T); T=R0·C0, Kp=R0/R1;<br />
Простейшая схемная модель звена на операционном усилителе представлена<br />
на рис.4.1.2.<br />
U1(р)<br />
а)<br />
U2(р)<br />
135<br />
U1(р)<br />
W(p)<br />
Рис.4.1.2. Схемная модель звена с передаточной функцией W(p).<br />
U2(р)
U 0<br />
4.2. Резистивные модели структурных схем.<br />
Приведем простейшую структурную схему (рис.4.2.1).<br />
-<br />
U 1<br />
U 3<br />
W 1<br />
W 2<br />
U 2<br />
Рис.4.2.1. Структурная схема.<br />
На рис.4.2.2 приведен резистивный аналог структурной схемы<br />
рис.4.2.1. Резистивный аналог построен на источниках напряжения,<br />
управляемых напряжением. Пунктирными стрелками обозначены<br />
направления действия управляющих напряжений. Положительные<br />
направления напряжений и управляемых источников напряжений показаны<br />
сплошными стрелками. Каждая ветвь имеет некоторую проводимость<br />
Y. Все ветви имеют общий узел, поэтому схема имеет лучевой<br />
вид.<br />
Описание каждой ветви схемы (после подстановки значений управляемых<br />
источников):<br />
J0 = Y0 · U0;<br />
J1 = Y1 · [U1 – (U0 – U3)];<br />
J2 = Y2 · (U2 – W1 · U1 );<br />
J3 = Y3 · (U3 – W2 · U2 ).<br />
Описание схемы в матричной форме:<br />
0 1 2 3<br />
J 0<br />
Y 0<br />
+<br />
U 0<br />
Рис. 4.2.2. Резистивный аналог<br />
структурной схемы.<br />
J0 0 Y0 U0<br />
J1 1 – Y1 Y1 Y1 U1<br />
J2 = 2 – Y2 · W1 Y2 · U2<br />
J3 3 – Y3 · W2 Y3 U3<br />
Можно заметить, что за исключением входной ветви, в схеме не протекают<br />
токи. Поэтому можно проводимостям присвоить произвольные<br />
значения. Для упрощений расчетов пусть все проводимости равны единице.<br />
Тогда описание схемы примет следующий вид:<br />
136<br />
Y 1<br />
+ U<br />
1<br />
e 1 =-(U 0 -U 3 )<br />
Y 3<br />
+<br />
U 3<br />
Y 2<br />
e 3 =-W 2 ·U 2<br />
+<br />
U 2<br />
e 2 =-W 1 ·U 1
0 1 2 3<br />
Или в матричной форме:<br />
J = Y · U<br />
В полученной системе известным является вектор входного узлового<br />
тока J0, неизвестным является вектор узловых потенциалов U. Этот вектор<br />
можно найти непосредственно из матричного уравнения:<br />
U = Y-1 J0 0 1 U0<br />
0 1 – 1 1 1 U1<br />
0 = 2 –W1 1 · U2<br />
0 3 –W2 1 U3<br />
· J.<br />
Можно уменьшить объем вычислений, если выделить матричные блоки:<br />
вх вых<br />
Jвх вх 1 0 Uвх<br />
0 = вых W21 W22 · Uвых<br />
Система уравнений распадается на две системы:<br />
Jвх = 1 · Uвх ;<br />
0 = W21 · Uвх + W22 · Uвых .<br />
Вектор выходных напряжений тогда можно найти по формуле:<br />
Uвых = – (W22) -1 · W21 · Uвх , (4.2.1)<br />
где Uвх совпадает с заданным вектором Jвх .<br />
В теории автоматического управления матрица W22 называется<br />
структурной матрицей. В данном случае она имеет следующий вид:<br />
1 2 3<br />
1 1 1<br />
W22 = 2 –W1 1<br />
3 –W2 1<br />
Координаты структурной матрицы соответствуют выходным переменным<br />
блоков структурной схемы. Матрица заполняется следующим<br />
образом. На диагонали ставятся единицы. Остальные клетки заполняются<br />
построчно. Для i-ой строки если i-ая переменная связана с j-ой переменной,<br />
то в j-ом столбце ставится коэффициент передачи с обратным<br />
знаком.<br />
Матрица W21 связывает выходы блоков с входными переменными.<br />
Входные переменные воздействуют, как правило, на сумматоры. Поэтому<br />
W21 единичная. Заполнить ее можно построчно, i-ая строка отмечает<br />
переменную на выходе сумматора, j-й столбец отмечает входную переменную.<br />
На пересечении ставится единица, если выходная переменная<br />
связана с соответствующей входной переменной.<br />
137
Метод структурных матриц позволяет автоматически формировать и<br />
решать уравнения систем управления, представленные структурными<br />
схемами.<br />
Например, для рассматриваемого случая, после выполнения вычислений<br />
по формуле (4.2.1), получаем связь выходных переменных с входной<br />
переменной:<br />
Для автоматизации получения передаточных функций в символьной<br />
форме можно воспользоваться пакетом символьной математики Maxima<br />
(http://maxima.sourceforge.net). В этом случае можно рассматривать более<br />
сложные структурные схемы, например, как на рис.4.2.3<br />
Приведем сессию в пакете wxMaxima, позволяющую получить все<br />
передаточные функции структурной схемы рис.4.2.3.<br />
Поясним некоторые особенности работы в пакете wxMaxima. Каждая<br />
команда ввода начинается с номера в скобках после знаков %i, например,<br />
(%i2) - вторая введенная команда. В каждой введенной строке приводятся<br />
комментарий, который заключен символами /* */. Результат<br />
обработки введенной команды отображается в строке, начинающейся с<br />
номера в скобках после знаков %о, например, (%o3) - результат обработки<br />
третьей команды. Обозначения векторов и переменных соответствуют<br />
рис.4.2.3.<br />
(%1) /*Ввод вектора входных переменных*/<br />
Uin: matrix(<br />
[Uo1],<br />
[Uo2])$<br />
(%i2) /*Ввод вектора выходных переменных*/<br />
Uout: matrix(<br />
138<br />
U1<br />
1<br />
U2 = 2 · U0<br />
U3 3<br />
Рис. 4.2.3. Двухканальная структурная схема с перекрестными связями<br />
0<br />
1<br />
1 +<br />
W1 ⋅ W2<br />
W1<br />
1 + W1<br />
⋅ W2<br />
W1<br />
⋅ W2<br />
1 + W1<br />
⋅ W2
[U11],<br />
[U22],<br />
[U1],<br />
[U2],<br />
[U3],<br />
[U4])$<br />
(%i3) /*Ввод структурной матрицы*/<br />
W22:matrix(<br />
[1,0,0,0,1,0],<br />
[1,1,1,0,0,0],<br />
[-W1,0,1,0,0,0],<br />
[0,0,-W2,1,0,0],<br />
[0,-W3,0,0,1,0],<br />
[0,0,0,0,-W4,1]);<br />
(%i4) /*Ввод матрицы связи входных переменных с входами блоков*/<br />
W21: matrix(<br />
[-1,0],<br />
[0,-1],<br />
[0,0],<br />
[0,0],<br />
[0,0],<br />
[0,0]<br />
);<br />
(%i5) /*Вычисление вектора выходных переменных*/<br />
Uout: ratsimp(-(W22^^-1).W21. Uin);<br />
139
(%i6) /*Отдельные компоненты выходного вектора можно выделить,*/<br />
/*например, для выходной переменной U1*/<br />
ratsimp(Uout[3]);<br />
(%i7) /*Выделенные компоненты можно представить в различной форме*/<br />
factor([(Uo2*W1*W3-Uo1*W1)/((W1+1)*W3-1)]);<br />
(%i8) expand([(Uo2*W1*W3-Uo1*W1)/((W1+1)*W3-1)]);<br />
Как видно, на пятом шаге, получен вектор всех выходных переменных<br />
структурной схемы.<br />
140
Заключение<br />
Пособие в целом посвящено вычислительным моделям расчета электрических<br />
цепей. Основное внимание уделено численному расчету переходных<br />
процессов в линейных и нелинейных схемах, так как расчет динамики<br />
поведения устройств является наиболее универсальным при<br />
оценке их технических характеристик. Существует огромное количество<br />
методов расчета дифференциальных уравнений, описывающих цепи. В<br />
книге приведены только три метода, наиболее простых и достаточно<br />
широко распространенных - метод Эйлера первого порядка, метод<br />
трапеций и метод обратного дифференцирования. Цель учебного пособия<br />
состояла в том, чтобы показать, каким образом различные методы<br />
расчета могут быть выражены в форме уравнения обобщенной ветви -<br />
одного из фундаментальных понятий тензорного анализа сетей. Одновременно<br />
в главе показано, как приведенные методы расчета алгоритмически<br />
«упаковываясь» в обобщенную ветвь, представляют базовый<br />
набор ветвей, наиболее употребительных в электротехнических<br />
расчетах: линейные и нелинейные RLC ветви, взаимные индуктивности<br />
и управляемые источники. Для расчета переходных процессов схем с<br />
нелинейными двухполюсниками приведена алгоритмическая адаптация<br />
к обобщенной ветви метода Ньютона для ветвей с нелинейными сопротивлениями<br />
и метода простых итераций для инерционных нелинейностей<br />
- емкостных и индуктивных. В результате показано, что базовый<br />
набор ветвей может быть сведен к резистивной разностно-итерационной<br />
обобщенной ветви. Более подробно о различных методах расчета электрических<br />
схем можно узнать из книг В.Н.Ильина [24], А.И.Петренко<br />
[25], И.Влаха и К.Сингхала [26] , В.Нерретера [27] и др.<br />
Во второй части второй главы приводятся топологические модели<br />
электрических схем, принятые в тензорном анализе сетей. Фундаметальное<br />
значение здесь имеют ортогональные топологические контурные и<br />
узловые матрицы. В главе приводится один из возможных алгоритмов<br />
автоматического формирования этих матриц для графов, состоящих из<br />
одномерных ветвей (линейных графов). Другие варианты построения<br />
ортогональных топологических матриц подробно рассмотрены в работе<br />
Х.Хэппа [4].<br />
В книге показано, как применить топологические матрицы в алгоритме<br />
автоматического формирования уравнений напряжения электрических<br />
схем произвольной структуры. Приведенный алгоритм автоматического<br />
формирования и расчета уравнений электрических схем демонстрирует<br />
основные этапы такого формирования на основе операций<br />
с матрицами. Организация данных в виде двумерных массивов (матриц)<br />
не является единственно возможной. При расчете больших схем могут<br />
использоваться и другие формы организации данных. Например, одномерные<br />
массивы, связные списки, всевозможные таблицы и т.д. В этом<br />
141
случае при непосредственном программировании задачи расчета электрической<br />
схемы матричные операции не применяются. Для формирования<br />
нужных структур данных используют специальные алгоритмы.<br />
Например, для формирования данных, соответствующих матрице узловых<br />
проводимостей, большое распространение получил метод поэлементного<br />
вклада [28]. Краткий обзор различных структур данных приводится<br />
в [25]. Чисто технически, ряд топологических преобразований<br />
схем может быть выполнен без непосредственного использования топологических<br />
матриц: например, при параллельном или последовательном<br />
соединении нескольких ветвей. Обобщенные алгоритмы подобных<br />
преобразований, объединенных названием схемоанализ, рассмотрены в<br />
[13].<br />
Матрицы преобразований могут иметь не только топологическое содержание.<br />
Для формирования уравнений напряжений в частной области<br />
при анализе токов прямой, обратной и нулевой последовательности,<br />
«контурная» матрица преобразования токов состоит из комплексных чисел<br />
и отражает связь вектора трехфазных токов с вектором токов в новой<br />
системе координат. В третьей части второй главы приводятся особенности,<br />
связанные с формированием уравнений напряжений для частотного<br />
анализа в координатах токов последовательностей. Универсальность<br />
матриц преобразований состоит в том, что они могут применяться<br />
как для топологических, так и нетопологических преобразований<br />
схем.<br />
В книге рассмотрен способ встраивания алгоритма формирования и<br />
расчета уравнений напряжения схем в систему CAD/CAM. В качестве<br />
примера взята свободно распространяемая полнофункциональная система<br />
сквозного проектирования печатных плат KiCAD. В состав системы<br />
входит графический редактор электрических схем и встроенная возможность<br />
автоматического формирования текстового списка соединений<br />
элементов и их параметров. Приведен алгоритм, показывающий, как<br />
применить список соединений для расчета резистивной схемы. Для расчета<br />
схем с другими типами ветвей можно использовать идеи приведенного<br />
в этой же главе алгоритма на языке SciLab.<br />
Актуальное значение в настоящее время имеет разработанный в рамках<br />
тензорного анализа сетей расчет сложных схем по частям. Актуальность<br />
определяется с одной стороны развитием сетевых технологий, с<br />
другой, переходом основных производителей микропроцессоров на<br />
многоядерные технологии. И то и другое направления требуют для повышения<br />
производительности обработки информации применять методы<br />
распараллеливания вычислений. Можно сказать, что распараллеливание<br />
«встроено» в сущность методов тензорного анализа сетей. В четвертом<br />
разделе второй главы приводится алгоритм расчета по частям в<br />
электротехнических терминах и результаты сравнения скорости расчета<br />
схемы при различных вариантах ее декомпозиции. Для однопроцессор-<br />
142
ной машины скорость расчета повышается на порядок относительно<br />
расчета той же схемы без разбиения ее на части. Приведенный алгоритм<br />
расчета может быть реализован в параллельных вычислениях. При разбиении<br />
схемы на N частей потребуется N параллельных процессов для<br />
расчета изолированных схем и один процесс для объединения решения.<br />
В настоящее время можно выделить 4 свободно распространяемые<br />
технологиии параллельных вычислений. Это кластерная (сетевая) технология<br />
на основе интерфейса MPI [29] (например, реализация mpich1.2.5<br />
для windows содержит библиотеку, линкуемую с объектными модулями<br />
фортрановских компиляторов g95 и gfortran). Вторая технология - для<br />
многоядерных процессоров на основе библиотеки OpenMP [30]. Библиотека<br />
входит в состав gfortran. Третья технология - кластерная, на базе<br />
системы PVM. Библиотека PVM входит в состав математического пакета<br />
SciLab, который поддерживает параллельные команды. Наконец, четвертая<br />
технология-чисто сетевая, на основе метакомпьютинга. Для этой<br />
технологии не требуются специальные библиотеки. Результаты расчета<br />
по частям хранятся на сетевом диске, к которому стандартными сетевыми<br />
средствами осуществляется доступ от отдельных компьютеров.<br />
Универсальная высокопроизводительная технология расчета электрических<br />
схем может найти и находит применение при проектировании<br />
неэлектрических процессов. В пособии не рассматривался применяемый<br />
для этих целей метод электрических аналогий. Соответствующие аналогии<br />
можно найти у различных авторов. Для расчета тепловых цепей<br />
можно привести, например, уже упоминавшуюся книгу [23], механические<br />
цепи рассмотрены в [2]. Обзор методов электроаналогий приводится<br />
в [31]. Актуально применение тензорного анализа сетей к анализу<br />
экономических процессов. Здесь можно отметить книги А.Е.Петрова<br />
[7], В.А.Кутергина [32]. В этих работах в то же время раскрывается значение<br />
тензорного анализа сетей для системных исследований инженерной<br />
деятельности.<br />
В третьей главе приведены некоторые принципы применения тензорного<br />
анализа сетей к решению полевых задач. Рассматривается пример<br />
построения алгоритма расчета простейшего одномерного поля. Сведение<br />
расчета поля к расчету электрической схемы позволило составить<br />
общую систему уравнений электрической машины, включающую ее<br />
цепь питания.<br />
Так как электрическая машина управляется через цепи питания, то в<br />
книгу включены некоторые задачи моделирования систем управления,<br />
решенные с помощью тензорного анализа сетей. В четвертой главе приводятся<br />
алгоритмы автоматизации формирования передаточных функций.<br />
Тензорные методы для проектирования цифровых устройств в<br />
книге не приводятся. Но публикации в этом направлении имеются,<br />
например, работы В.П.Кулагина [33] и Г.Н. Чижухина [34].<br />
143
Приложения.<br />
Порядок установки Фортран-95 и среды разработки VFort.<br />
1). Разархивировать компилятор g95, например, в папку c:\g95.<br />
2). Для переменной среды PATH добавить путь к g95.exe: c:\g95\bin;<br />
Добавить переменную среды LIBRARY_PATH, для которой указать<br />
путь к библиотекам: c:\g95\lib;<br />
3). В папку c:\g95\lib добавить библиотеки DISLIN, SLATEC и<br />
MinGW.<br />
4). Разархивировать Vfort в отдельную папку, например,<br />
c:\program files\Vfort<br />
5). Создать папку для файлов проекта. Имя папки и путь к ней не<br />
должны содержать пробелов.<br />
6). Запустить Vfort. Создать проект, нажав в главном меню Project-<br />
Create project.<br />
7). Задать опции проекта, нажав в главном меню Project-Project<br />
Options. В появившемся диалоговом окне в строке Compile command набрать<br />
команду компиляции:<br />
g95 -c -ffree-form<br />
В строке Link набрать команду линкера:<br />
g95<br />
Для подключения библиотеки DISLIN набрать в строке Addtional<br />
libraries:<br />
-ldismg7 -luser32 -lgdi32<br />
Для подключения библиотеки SLATEC добавить к подключенным<br />
библиотекам:<br />
-lslatec.<br />
В строке Output ввести имя папки для результирующих файлов (по<br />
умолчанию Output).<br />
В строке Result files ввести маску для расширений отображаемых<br />
файлов (по умолчанию *.dat)<br />
Пример окна с опциями проекта:<br />
144
Пример программирования с библиотекой DISLIN<br />
Рассмотрим пример программы для расчета переходных процессов в<br />
RC схеме, рассмотренной в разделе 2. Кроме уже рассмотренного алгоритма<br />
расчета, программа должна содержать интерфейс для ввода данных<br />
и вывода результатов расчета на график. Входной интерфейс должен<br />
также предусматривать возможность сохранения исходных данных<br />
в отдельных файлах для последующей их загрузки при вариантном счете.<br />
Средствами библиотеки DISLIN можно создавать несложные пользовательские<br />
интерфейсы. Рассмотрим пример создания GUI для<br />
рассматриваемого примера.<br />
Исходными данными в задаче являются 7 чисел: значение двух сопротивлений<br />
R1 и R2, индуктивности L, емкости C, значение источника<br />
напряжения E, значение расчетного шага dt и времени моделирования<br />
Tsum. Для отображения схемы в окне пользовательского интерфейса,<br />
предварительно должен быть создан рисунок схемы в формате bmp. Размер<br />
рисунка можно подобрать методом проб в любом графическом редакторе.<br />
Приведем исходное состояние окна ввода после запуска программы и<br />
загрузки файла:<br />
После нажатия на ОК выполняется расчет схемы, после чего сразу же<br />
отображается окно с результатами расчета:<br />
145
При нажатии на ОК появится диалоговое окно с предложением выбора:<br />
продолжить расчет или прервать его.<br />
Программы ввода данных, их обработки и вывода результатов имеют<br />
совместно используемые переменные и массивы. Перечислим их:<br />
kolpar - число исходных данных для расчета схемы. В данном случае<br />
равно семи;<br />
vhod() - массив для хранения исходных данных в форме вещественных<br />
чисел;<br />
Labl() - символьный массив для обозначений строк входных параметров<br />
в окне ввода. Длина всех элементов массива должна быть одинаковой. В<br />
данном случае она равна 6 по числу символов в самой длинной строке<br />
'Tsum=';<br />
texsts() - символьный массив для хранения введенных чисел в символьной<br />
форме;<br />
idtexst() - целочисленный массив для хранения идентификаторов окон<br />
ввода чисел;<br />
ios - переменная для хранения признака успешного чтения файла;<br />
kolgr - количество графиков;<br />
nsum - максимальное количество расчетных точек;<br />
nt - фактическое количество расчетных точек;<br />
iLgr() - массив для хранения результатов расчета тока в индуктивности;<br />
Ucgr() - массив для хранения результатов расчета напряжения в емкости;<br />
t() - массив для хранения значений времени<br />
Совместно используемые данные объявлены в модуле obmen.<br />
Порядок работы с приведенными модулями следующий.<br />
1) Запустить Vfort.<br />
2) Создать проект, ввести опции проекта.<br />
146
3) Создать новый файл в проекте. Скопировать текст главной программы<br />
с модулем общих переменных в буфер обмена и вставить в новый<br />
файл. Сохранить файл с расширением for.<br />
4) Аналогичным образом поступить с текстами подпрограмм ввода данных,<br />
расчета переходных процессов, вывода на график и модулем формирования<br />
кириллицы Convert. Всего проект будет содержать 5 файлов<br />
с исходными текстами.<br />
5) Перевести курсор в поле файлов проекта, нажать правую кнопку<br />
мыши и в появившемся меню выбрать +Add files... Ввести в проект все<br />
пять файлов.<br />
6) Запустить компиляцию файлов проекта. В результате автоматически<br />
будет создана папка Output с объектными модулями и исполняемым<br />
файлом.<br />
7) Средствами windows добавить в папку Output файл с рисунком схемы.<br />
8) Запустить программу на выполнение, ввести в окне программы исходные<br />
данные.<br />
9) В случае появления ошибок отладить программу.<br />
147
Модуль общих переменных и основная программа<br />
module obmen<br />
!общие данные для ввода<br />
integer , parameter :: kolpar=7<br />
real :: vhod(kolpar)=0.<br />
character (len=6)::Labl(kolpar)=& !Символ & - символ переноса строки.<br />
[ 'R1= ','R2= ','L= ','C= ','E= ','dt= ','Tsum= ' ]<br />
character (len=15)::texts(kolpar)='1 '<br />
integer ::idtext(kolpar)=0, ios=0<br />
!общие данные для расчета и отображения графиков<br />
integer , parameter :: kolgr=2, nsum=10000<br />
integer nt<br />
real :: iLgr(nsum)=0., Ucgr(nsum)=0., t(nsum)=0.<br />
end module obmen<br />
program rc<br />
! подключение модуля obmen ,теперь переменные этого модуля становятся<br />
! доступными в других программах.<br />
use obmen<br />
! ввод значения промежуточной переменной ipovtor =1. Пока эта переменная равна 1<br />
! будет производится повторение ввода данных для вариантного счета.<br />
ipovtor=1<br />
do while (ipovtor==1) ! цикл повторения расчета<br />
call vvod ! вызов подпрограммы ввода данных<br />
call obrabotka ! вызов подпрограммы расчета<br />
call vyvod ! вызов подпрограммы вывода результатов<br />
! подпрограмма dwgbut библиотеки DISLIN выводит окно с 2-мя кнопками: OK и NO<br />
! и надписью с вопросом 'повторить расчет?'. В зависимости от того,<br />
! какая кнопка нажата, переменной ipovtor будет присвоена 1, если нажата кнопка<br />
! ОК или 0, если нажата кнопка NO.<br />
call DWGBUT ('повторить расчет?', ipovtor)<br />
end do ! конец цикла повторения расчета<br />
end program rc<br />
Рассмотрим программу ввода данных. В ней используются подпрограммы<br />
библиотеки DISLIN. При использовании библиотеки DISLIN<br />
для создания оконного интерфейса надо обращаться к соответствующим<br />
подпрограммам этой библиотеки в определенном порядке. Основной<br />
единицей окна системы Windows (или windows-окна) является виджет<br />
(widget). Виджетом может быть надпись, кнопка, окно для ввода текста<br />
и т.п. Подпрограммы DISLIN, работающие с виджетами делятся на 4<br />
основные группы. Подпрограммы, начинающиеся с символов WG создают<br />
виджеты, начинающиеся с символов SWG устанавливают параметры<br />
виджетов, начинающиеся с символов GWG считывают параметры виджетов,<br />
начинающиеся с символов DWG создают диалоговые виджеты.<br />
Кроме того, имеются ряд дополнительных подпрограмм. Структура расположения<br />
основных подпрограмм следующая:<br />
подпрограммы диалога<br />
CALL WGINI<br />
подпрограммы установки параметров виджетов,<br />
148
подпрограммы диалога<br />
CALL WGFIN<br />
подпрограммы чтения виджетов<br />
подпрограммы диалога<br />
Как видно из приведенной структуры, установка параметров виджетов<br />
производится между обращениями к подпрограммам WGINI и<br />
WGFIN. Чтение данных из виджетов выполняется после подпрограммы<br />
WGFIN. Следует заметить, что некоторые программы, связанные с созданием<br />
виджетов, например, для задания позиционирования основного<br />
окна, могут быть введены до обращения к подпрограмме WGINI. Для<br />
создания оконного интерфейса следует предварительно (на бумаге) расположить<br />
в основном окне нужные виджеты. При этом надо учесть, что<br />
расположение виджетов библиотекой DISLIN осуществляется автоматически<br />
в по строкам и столбцам. Основное окно задается подпрограммой<br />
WGINI, которая определяет его идентификатор и расположение дочерних<br />
виджетов по строкам или столбцам. Подпрограммы WGBAS определяют<br />
имена строк или столбцов, которому принадлежит создаваемый<br />
виджет и расположение других виджетов внутри этих строк или столбцов.<br />
149
Подпрограмма ввода данных.<br />
subroutine vvod<br />
! объявление модуля obmen с общими данными.<br />
use obmen<br />
! объявление символьных переменных с именами входного и выходного файлов<br />
! CFIL1 и CFIL2. Одновременно этим переменным присваиваются начальные<br />
! значения.<br />
character (len=80)::CFIL1=' ', CFIL2='a.txt'<br />
! объявление и ввод символьной переменной help для отображения текста, который<br />
! будет выведен в отдельное окно при нажатии кнопки Help<br />
character (len=50)::help=&<br />
'программа расчета переходного процесса в RLC-цепи'<br />
! объявление внешней подпрограммы с именем ROUTINE, в которой будет<br />
! обработана информация из входного файла с данными.<br />
external ROUTINE<br />
! установка окна ввода в центре экрана.<br />
CALL SWGOPT('center','position')<br />
! вывод строки при нажатии help.<br />
CALL SWGHLP (help)<br />
! инициализация основного окна с идентификационной переменной IP. Дочерние<br />
! виджеты будут располагаться горизонтально.<br />
CALL WGINI ('HORI', IP)<br />
! установка ширины виджетов.<br />
CALL SWGWTH (25)<br />
! установка в основном окне виджета c идентификатором ip1 с возможностью<br />
! вертикального расположения дочерних виджетов.<br />
CALL WGBAS(ip,'VERT',ip1)<br />
!установка высоты виджета рисунка в долях ширины виджета<br />
CALL SWGDRW(0.6)<br />
!установка новой ширины виджетов. Отрицательное число в параметре программы<br />
! указывает на то, что ширина устанавливается в процентах ширины экрана.<br />
CALL SWGWTH (-20)<br />
!установка в основном окне новый виджет c идентификатором ip2, с вертикального<br />
! расположения дочерних виджетов.<br />
CALL WGBAS(ip,'VERT',ip2)<br />
!объявление цикла do для ввода в виджетов с данными<br />
do i=1, kolpar<br />
! вывод виджетов с надписями и текстовых виджетов для исходными данными.<br />
! Для надписей используется ранее объявленный массив Labl(7). 70% ширины<br />
! виджетов будет отведено для ввода цифр, остальные 30% для надписей.<br />
CALL WGLTXT(IP1, labl(i), texts(i), 70, idtext(i))<br />
end do<br />
! выводит виджет с надписью для открытого файла.<br />
CALL WGLAB (IP2, 'открытый файл:', ID2)<br />
! выводит надпись в главное меню при развороте кнопки File. На кнопке будет<br />
! написано 'открыть файл'. После нажатия на эту кнопку появится окно с<br />
! предложением открыть файл. При этом будет указана маска *.txt для вводимых<br />
! файлов. Имя введенного файла и путь к нему будут сохранены в<br />
! переменной CFIL1. Имя и путь будут отображены в виджете с идентификатором<br />
! ID_FIL. Этот виджет будет расположен сразу под надписью 'открытый файл'.<br />
CALL WGFIL (IP2, 'открыть файл', CFIL1, '*.txt', ID_FIL)<br />
! вызов подпрограммы вторичного вызова с именем ROUTINE. П/программа<br />
ROUTINE<br />
150
! будет обрабатывать данные виджета с идентификатором ID_FIL. То есть будет<br />
! обрабатывать имя файла с исходными данными. Необходимость использования<br />
! SWGCBK связана с тем, что обработка данных, введенных в виджетах,<br />
! производится после обращения к п/программе WGFIN. Чтобы обработать данные<br />
! до этого обращения, следует обратиться к подпрограмме SWGCBK.<br />
CALL SWGCBK (ID_FIL, ROUTINE)<br />
CALL WGLAB (IP2, 'данные записываются в файл', ID2)<br />
! вывод второй надписи в главном меню при развороте кнопки File. На<br />
! кнопке будет написано 'записать в файл'. После нажатия на эту кнопку появится<br />
! окно с предложением записать файл. При этом будет указана маска *.txt для<br />
! записываемых файлов. Имя введенного файла вместе с путем к нему будет<br />
! сохранено в переменной CFIL2. Это имя будет отображено в виджете с<br />
! идентификатором ID_FIL2. Этот виджет будет расположен сразу под надписью<br />
! 'данные записываются в файл'.<br />
CALL WGFIL (IP2, 'записать в файл', CFIL2, '*.txt', ID_FIL2)<br />
CALL WGLAB(IP2, 'Расчетная схема', ID_BUT)<br />
! объявление виджета для рисунка<br />
CALL WGDRAW(ip2, id_draw1);<br />
! задание оконного режима виджета для рисунка<br />
CALL SETXID(id_draw1, 'WIDGET'); CALL METAFL('XWIN ')<br />
! инициализация библиотеки и очистка окна рисунка<br />
CALL DISINI; CALL ERASE<br />
! задание белого фона для рисунка<br />
CALL PAGFLL(255)<br />
! вставка в виджет рисунка из текущей папки<br />
CALL INCFIL ('rc01.bmp')<br />
! закрытие библиотеки<br />
CALL DISFIN<br />
! вывод кнопки с надписью ОК для продолжения работы программы и кнопки с<br />
! надписью QUIT для отмены работы с программой.<br />
CALL WGOK (IP1, ID_OK); CALL WGQUIT (IP1, ID_Q)<br />
! завершение работы с установкой виджетов. Теперь можно получать данные с<br />
! введенной информацией.<br />
CALL WGFIN<br />
! проверка на ноль переменной ios. Эта переменная передается через общий модуль<br />
! и сообщает о правильности ввода данных из файла. Если ios равна нулю, то сбоя<br />
! не было и происходит обращение к п/программе GWGFIL для получения<br />
! информации об имени открытого файла в виджете ID_FIL. Имя было сохранено в<br />
! переменной CFIL1.<br />
if (ios==0) then ; call GWGFIL (ID_FIL, CFIL1)<br />
! иначе, если переменная ios не равна нулю,то произошел сбой при вводе. Как<br />
! правило, это пустой файл, открытый для ввода данных. Переменной CFIL1<br />
! присваивается пробел, для того чтобы при вариантном счете имя сбойного файла<br />
! не появлялось в виджете ID_FIL.<br />
else; CFIL1=' '; endif<br />
! получение информации об имени файла для записи данных в виджете ID_FIL2.<br />
! Имя было сохранено в переменной CFIL2.<br />
CALL GWGFIL(ID_FIL2,CFIL2)<br />
! объявляет цикл для записи введенных в окнах данных в массив исходных данных<br />
! vhod<br />
do i=1,kolpar<br />
! считывание данных из виджетов в текстовый массив texts(7). Теперь данные,<br />
! введенные в window-окне становятся доступными в этом текстовом массиве.<br />
151
CALL GWGTXT (idtext(i),texts(i))<br />
! перевод данных из текстовой формы в числовую. Числовые данные читаются в<br />
! массив вещественного типа vhod(i) посредством оператора чтения из texts(i).<br />
read (texts(i),*) vhod(i)<br />
end do<br />
! проверка, был ли введен текст в строку виджета с именем файла для записи<br />
! данных. Эта строка хранится в переменной CFIL2.<br />
if (CFIL2/=' ') then ! Если строка не пустая, то<br />
! открывается файл с именем, записанным в CFIL2.<br />
! Функция trim отсекает хвостовые пробелы в переменной CFIL2.<br />
open (1, file = trim (CFIL2))<br />
! вывод данных в файл<br />
write (1,'(g10.3)') (vhod(i), i=1,kolpar)<br />
close(1); ! закрывает устройство для вывода в файл.<br />
endif<br />
END subroutine vvod<br />
! подпрограмма вторичного вызова. Имя подпрограммы должно совпадать с именем,<br />
! указанным при обращении в SWGCBK. При открытии подпрограммы указывается<br />
! формальный параметр, в данном случае это переменная IDR. Фактическое<br />
! значение этой переменной равно значению переменной, указанной при обращении<br />
! к SWGCBK в данном случае это значение переменной ID_FIL. Таким образом, в<br />
! подпрограмме будет обработан виджет с именем открытого файла.<br />
SUBROUTINE ROUTINE(IDR)<br />
! подсоединение модуля obmen с общими переменными.<br />
use obmen<br />
! объявление символьной переменной CFIL длиной 80 символов для чтения имени<br />
! файла.<br />
CHARACTER*80 CFIL<br />
! чтение имени файла из виджета с идентификатором IDR (или, что то же с<br />
! идентификатором ID_FIL). Имя файла заносится в переменную CFIL.<br />
CALL GWGFIL(IDR, CFIL)<br />
! открытие файла с именем, записанным в переменной CFIL. Функция trim отсекает<br />
! хвостовые пробелы переменной CFIL.<br />
open (1,file = trim (CFIL))<br />
! чтение данные из открытого файла и запись их в массив vhod(i). При сбое чтения<br />
! переменной ios будет присвоено ненулевое значение. Кроме того, если при чтении<br />
! встретился конец файла, то выполнение программы продолжится с метки 10.<br />
read(1,*, end=10, iostat =ios) (vhod(i),i=1,kolpar)<br />
do i=1,kolpar !цикл для отображения прочитанных из фала данных в окно.<br />
! вывод числовых данных в текстовый массив texts(i)<br />
write (texts(i),*) vhod(i)<br />
! вывод данных из тестового массива в оконные виджеты. Теперь данные,<br />
! прочитанные из файла, отразятся в окне ввода.<br />
CALL SWGTXT (IDTEXT(i), texts(i))<br />
end do ! завершение цикла ввода<br />
close(1) ! закрытие устройства для чтения из файла.<br />
! Здесь проверяется состояние переменной ios.<br />
10 if (ios/=0) then ! Если она не равна 0, то<br />
! производится вывод предупреждения о том, что входной файл пустой.<br />
CALL DWGMSG ('Предупреждение:|входной файл пустой'); endif<br />
END SUBROUTINE ROUTINE ! завершение подпрограммы.<br />
152
В результате работы подпрограммы ввода будут созданы текстовые<br />
файлы с исходными данными. Структура файлов одинакова. Она представляет<br />
собой строку из семи цифр расположенных непосредственно<br />
друг за другом:<br />
0.00<br />
0.00<br />
0.100<br />
0.100E-04<br />
1.00<br />
0.100E-04<br />
0.200E-01<br />
153
Подпрограмма расчета переходного процесса<br />
subroutine obrabotka<br />
use obmen<br />
real iL, L, iL0<br />
! Ввод параметров<br />
!'R1= ','R2= ','L= ','C= ','E= ','dt= ','Tsum= '<br />
R1=vhod(1); R2=vhod(2);L=vhod(3);C=vhod(4);E=vhod(5);<br />
! Ввод расчетного шага dt и времени расчета Tsum<br />
dt=vhod(6); Tsum=vhod(7);<br />
! Вычиcление числа расчетных точек Nt<br />
Nt=floor (Tsum/dt); ! вычисление наибольшего целого от деления<br />
if (Nt>nsum) then<br />
print *,'NT= ',nt<br />
CALL DWGMSG ('Предупреждение:|&<br />
&Слишком маленький шаг|устанавливается число расчетных точек|nt=nsum');<br />
Nt=nsum-1<br />
endif<br />
Uc0=0.; iL0=0.; ! Задание начальных условий<br />
t(1)=0.<br />
iLgr(1)=iL0; Ucgr(1)=Uc0<br />
do n=2, Nt ! Задание цикла по n<br />
! Расчетные формулы<br />
iL=(E-Uc0+L/dt*iL0)/(R1+dt/C+L/dt+R2)<br />
Uc=dt/C*iL+Uc0<br />
! присвоение новых начальных значений для напряжения и тока<br />
iL0=iL; Uc0=Uc;<br />
! формирование массивов тока, напряжения и времени для вывода на график<br />
iLgr(n)=100 * iL; Ucgr(n)=Uc; t(n)=t(n-1)+dt;<br />
end do<br />
return<br />
end subroutine obrabotka<br />
154
Подпрограмма вывода результатов на график.<br />
В подпрограмме подсоединяется модуль convert, который предназначен<br />
для ввода текста на русском языке при его отображении в различных<br />
надписях на графиках. DISLIN непосредственно не поддерживает<br />
кириллицу. Для ее отображения надо обратиться к п/программе<br />
BASALF с параметром 'RUSSIAN'. После этого текстовые строки с латинскими<br />
буквами преобразуются в соответствующие русские буквы.<br />
Например, латинская v преобразуется в русскую в и т.д. Для того, чтобы<br />
непосредственно вводить текст на русском языке, используется функция<br />
conv('русский текст'), где 'русский текст' печатается в windows-кодировке.<br />
Эта функция загружается модулем convert. Текст модуля приведен<br />
после программы вывода на график.<br />
subroutine vyvod<br />
use obmen<br />
use convert<br />
! Константа dLeg соответствует максимальной длине одной надписи легенды.<br />
integer , parameter :: dLeg=10<br />
! объявление промежуточной символьной переменную Legbuf для вывода легенды.<br />
!Длина символьной переменной должна быть равной произведению констант dLeg и<br />
! kolgr. (значение kolgr объявлено в модуле obmen)<br />
character (len=dLeg*kolgr) Legbuf<br />
! объявление массива Ys, который понадобится для автоматического определения<br />
! масштабов по осям.<br />
real Ys(2*kolgr)<br />
! позиционирование окна в центре экрана<br />
CALL SWGOPT('center','position')<br />
! установка ширины окна 63% от ширины экрана, и высоты окна 71% от ширины<br />
! окна. (Здесь эти цифры определены опытным путем)<br />
CALL SWGWTH (-63); CALL SWGDRW(0.71)<br />
! инициализация виджетов с вертикальным расположением<br />
CALL WGINI ('VERT', IP)<br />
! вывод надписи<br />
CALL WGLAB (IP, 'Результаты расчета:', ID1)<br />
! вывод выджета для рисунка<br />
CALL WGDRAW(ip,id_draw2)<br />
! установка параметров виджета рисунка. Если в качестве параметра п/программы<br />
! METAFL задана символьная переменная 'XWIN', то график выводится в окно. Если<br />
! задан параметр 'WMF', то график выводится в графический файл с расширением<br />
! wmf. Возможен вывод в форматы PDF, BMP, TIFF, GIF и др. При задании параметра<br />
! 'VIRT' график выводится в виртуальный файл, сохраняемый в памяти компьютера.<br />
CALL SETXID(id_draw2,'WIDGET'); CALL METAFL('XWIN')<br />
! инициализация DISLIN, очистка окна рисунка<br />
CALL DISINI; CALL ERASE<br />
! задание отображения кириллицы в надписях графика<br />
CALL BASALF('RUSSIAN');<br />
! call chncrv('COLOR')<br />
! ввод надписей по оси Х и У соответственно.<br />
CALL name(conv('время,с'), 'X')<br />
CALL name(conv('ток, А; напряжение, В'), 'Y')<br />
! занесение в массив Ys минимальных и максимальных значений массивов тока в<br />
155
! индуктивности и напряжения на емкости, рассчитанных в основном алгоритме.<br />
Ys(1)=maxval(iLgr); Ys(2)=minval(iLgr)<br />
Ys(3)=maxval(Ucgr); Ys(4)=minval(Ucgr)<br />
! автоматическое определение масштаба по оси Y по 4-м значениям элементов<br />
! массива Ys.<br />
CALL SETSCL(Ys,4,'Y')<br />
! занесение в первые два элемента массива Ys минимального и максимального<br />
! значения переменной по оси Х — значения времени.<br />
Ys(1)=0; Ys(2)=t(Nt);<br />
! автоматическое определение масштаба по оси Х по 2-м значениям элементов<br />
! массива Ys.<br />
CALL SETSCL(Ys,2,'X')<br />
! установка белого фона для графика, надписей черного цвета и удвоенной<br />
! толщины линий и надписей<br />
CALL PAGFLL(255); CALL COLOR('BLACK'); CALL LINWID(2)<br />
CALL INCMRK(nt/20) !отмечать двадцать точек на графике<br />
CALL MARKER(kolgr) !число символов для отметки на графиках<br />
CALL HSYMBL(30) !ширина символов<br />
CALL FRAME(5) !ширина бордюров, 0- без бордюров<br />
! инициализация графика.<br />
CALL GRAF(0,0,0,0, 0,0,0,0);<br />
! вывод на график названия в 1-ю строку и отображение названия<br />
CALL TITLIN(conv('Ток в индуктивности, напряжение на ёмкости'),1); CALL title;<br />
! инициализация места, куда будут размещены легенды. Для п/программы<br />
! инициализации легенды требуется 3 параметра: рабочий массив с общей длиной<br />
! символов в легенде (в данном случае это массив Legbuf), количество графиков и<br />
! максимальный размер строки в легенде.<br />
CALL LEGINI(Legbuf, kolgr, dLeg)<br />
! вывод в поле легенды 1-й 2-й строк.<br />
CALL LEGLIN(Legbuf,conv('ток'),1)<br />
CALL LEGLIN(Legbuf,conv('напряжение'),2)<br />
! вывод сетки на график. Цифровые значения параметров соответствуют шагу сетки<br />
! по оси У и Х.<br />
CALL GRID(1,2)<br />
! установка красного цвета для 1-го графика<br />
CALL COLOR('red')<br />
! вывод 1-го графика — тока в индуктивности. П/программа рисования кривой<br />
! требует три параметра: массив значений по оси Х, массив значений по оси У и<br />
! общее число точек кривой.<br />
CALL CURVE(t, iLgr, Nt)<br />
! вывод 2-го графика — напряжения в емкости. Цвет графика - синий<br />
CALL COLOR('blue'); CALL CURVE(t, Ucgr, Nt)<br />
! установка черного цвета для текста легенды<br />
CALL COLOR('black')<br />
! вывод заголовка легенды. В данном случае это пробел<br />
CALL LEGTIT(' ')<br />
! выводит всю легенду. П/программа вывода легенды на график требует задания 2-х<br />
! параметров: имени рабочего массива легенды (в данном случае это массив Legbuf)<br />
! и места для размещения легенды. Допустимо размещение легенды в 4-х местах,<br />
! которые закодированы цифрами 1,2,3,4. Цифра 1 соответствует левому нижнему<br />
! углу, остальные цифры кодируют места против часовой стрелки.<br />
CALL LEGEND(Legbuf, 1)<br />
! завершение режима отображения графика и работы DISLIN<br />
156
CALL ENDGRF; CALL DISFIN<br />
! вывод кнопок OK и QUIT<br />
CALL WGOK (IP, ID_OK); CALL WGQUIT (IP, ID_Q)<br />
! завершение работы библиотеки вывода виджетов<br />
CALL WGFIN<br />
return ! выход из подпрограммы<br />
end subroutine vyvod ! завершение подпрограммы<br />
Рассмотренные команды библиотеки DISLIN далеко не полностью исчерпывают<br />
все ее возможности. Отметим только еще две команды. Если<br />
требуется вручную задать масштабы осей, то при обращении к п/программе<br />
GRAF требуется указать 8 параметров. Минимальное и максимальное<br />
значение по оси Х, минимальное и максимальное значение<br />
шкалы сетки по оси Х, минимальное и максимальное значение по оси У<br />
и минимальное и максимальное значение сетки по оси У. При этом рекомендуется<br />
указывать с помощью п/программы LABDIG число цифр<br />
после десятичной точки. Например:<br />
call LABDIG(3,'Y')<br />
call GRAF(Xmin, Xmax, Xmin,Xmax/5,Ymin, Ymax, Ymin,Ymax/5.),<br />
где значения Xmin Xmax Ymin Ymax должны быть определены заранее,<br />
а для оси Y будет отображаться 3 цифры после десятичной точки.<br />
Приведем теперь текст модуля для преобразования знаков латинского<br />
алфавита в русский алфавит, предназначенный для библиотеки DISLIN.<br />
Здесь следует отметить, что ряд знаков для преобразования не входят в<br />
латинский шрифт. Приведем полные списки соответствия:<br />
a b c d e f g h i j k l m n o p q r s t u v w x y z { } < > ~ | =<br />
а б э д й ф г ж и ч к л м н о п ш р с т ю в ш х у з е ц ъ ь я ё ы<br />
A B C D E F G H I J K L M N O P Q R S T U VWX Y Z [ ] $ & ^ \ %<br />
А Б Э Д Й Ф Г Ж И Ч К Л М Н О ПШ Р С Т ЮВ ШХ У З Е Ц Ъ Ь Я Ё Ы<br />
Модуль преобразования алфавита<br />
module Convert<br />
integer, private, parameter:: StrLen=400<br />
contains<br />
function conv(String)<br />
character (len=StrLen):: conv<br />
character (len=*), intent(in):: String<br />
integer, dimension (192:255):: rusm<br />
data rusm /&<br />
65, 66, 86, 71, 68, 91, 72, 90, 73, 69, 75, 76, 77, 78, 79, 80, 82, 83, 84, &<br />
89, 70, 88, 93, 74, 81, 87, 36, 37, 38, 67, 85, 94, &<br />
97, 98, 118, 103, 100, 123, 104, 122, 105, 101, 107, 108, 109, 110, 111, 112, &<br />
114, 115, 116, 121, 102, 120, 125, 106, 113, 119, 60, 61, 62, 99, 117, 126/<br />
character (len=1) Sym<br />
conv=String<br />
do i=1, len_trim (String)<br />
Sym=conv(i:i); indexs=ichar (Sym)<br />
if (indexs==184) then<br />
Sym=char(124)<br />
157
elseif (indexs==168) then<br />
Sym=char(92)<br />
elseif (indexs>=192 .and. indexs
Список литературы<br />
1. Крон Г. Применение тензорного анализа в электротехнике. – М.: Гостехиздат,<br />
1955. - 250с.<br />
2. Крон Г. Исследование сложных систем по частям - диакоптика. – М.:<br />
Наука, 1972. - 544с.<br />
3. Крон Г. Тензорный анализ сетей. – М.: Сов. радио, 1978. - 720с.<br />
4. Хэпп Х. Диакоптика и электрические цепи. – М.: Мир, 1974. - 344с.<br />
5. Копылов И.П. Электромеханические преобразователи энергии. – М.:<br />
Энергия, 1973. - 320с.<br />
6. Кузнецов О.Л., Кузнецов П.Г., Большаков Б.Г. Система природа - общество<br />
- человек: устойчивое развитие. – Государственный научный<br />
центр Российской Федерации ВНИИгеосистем; Международный университет<br />
природы, общества и человека «Дубна», 2000. - 392с.<br />
7. Петров А.Е. Тензорная методология в теории систем. – М.: Радио и<br />
связь, 1985. - 152с.<br />
8. Винокуров В.А. Высокоскоростной наземный транспорт на магнитном<br />
подвесе //Электротехника. 1997г. № 2 стр.41-45.<br />
9. Горелов А.Т. Анализ влияния параметров модулей индуктора на степень<br />
проявления краевого эффекта в линейном асинхронном двигателе<br />
//Электричество. 2001г. № 7 стр.54-58.<br />
10. Винокуров В.А., Горелов А.Т., Андрюхин Е.А. Развитие высокоскоростного<br />
наземного транспорта на новых технологических принципах.<br />
Современные проблемы энергетики, электромеханики и электротехнологии.<br />
//Вестник Уральского государственного технического<br />
университета. Электромеханика и электротехнология. ч.2.-Екатеринбург:<br />
УГТУ. 1995г. стр.145-155.<br />
11. Шакиров М.А. Декомпозиционные алгоритмы анализа электромагнитных<br />
полей. – СПб.: Изд-во С.-Петербургского университета, 1992.<br />
- 240с.<br />
12. Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов.<br />
– М.: Мир, 1981. - 368с.<br />
13. Шакиров М.А. Теоретические основы электротехники. Новые идеи<br />
и принципы. Схемоанализ и диакоптика. – СПб.: Изд-во СПбГТУ,<br />
2001. - 212с.<br />
14. Разевиг В.Д. Применение программ PCAD и PSpice для схемотехнического<br />
моделирования. – М: Наука, 1989. - 189с.<br />
15. Бартеньев О.В. Современный Фортран. – М.: Диалог-МИФИ, 2000.<br />
- 448с.<br />
159
16. Брамеллер А., Аллан Р., Хэмэм Я. Слабозаполненные матрицы: Анализ<br />
электроэнергетических систем. – М.: Энергия, 1979. - 192с.<br />
17. Сохор Ю.Н. Расчет по частям схем электропривода //Печатн. Труды<br />
Псковского политехнического института. С.Петербург-Псков: СПбГ-<br />
ТУ. 2000г. № 4. стр.226-231.<br />
18. Гершгорин С.А. Об электрических сетках для приближенного решения<br />
дифференциального уравнения Лапласа //Журнал прикладной<br />
физики. 1929г. т.6, вып.3-4. стр.3-29.<br />
19. Тетельбаум И.М. Электрическое моделирование. – М.:Физматгиз,<br />
1959. - с.320.<br />
20. Пухов Г.Е. Избранные вопросы теории математических машин. –<br />
Изд-во АН УССР, Киев, 1964.<br />
21. Коздоба Л.А. Электрическое моделирование явлений тепло- и<br />
массопереноса. – М.: "Энергия", 1972. - 296с.<br />
22. Сестрорецкий Б.В. RLC и Rt -аналоги электромагнитного пространства<br />
//Межвузовский сборник научных трудов "Машинное<br />
проектирование устройств и систем СВЧ", МИРЭА. 1977г.<br />
стр.127-158.<br />
23. Мадера А.Г. Моделирование теплообмена в технических системах.<br />
– М.: НО Научный Фонд "первая исследовательская лаборатория имени<br />
академика В.А.Мельникова", 2005. - 208с.<br />
24. Ильин В.Н. Основы автоматизации схемотехнического проектирования.<br />
– М.: Энергия, 1979. - 392 с.<br />
25. Петренко А.И. Основы автоматизации проектирования. – К.: Технiка,<br />
1982. - 295 с.<br />
26. Влах И., Сингхал К. Машинные методы анализа и проектирования<br />
электронных схем: Пер. с англ. – М.: Радио и связь, 1988. - 560 с.<br />
27. Нерретер В. Расчет электрических цепей на персональной ЭВМ:<br />
Пер. с нем. – М.: Энергоатомиздат, 1991. - 220 с.<br />
28. Демирчян К.С., Бутырин П.А. Моделирование и машинный расчет<br />
электрических цепей. – М.: Высш.шк., 1988. - 335 с.<br />
29. Антонов А.С. Параллельное программирование с использованием<br />
технологии MPI. – М.: Изд-во МГУ, 2004. - 71 c.<br />
30. Hermanns M. Parallel Programming in Fortran 95 using OpenMP. –<br />
School of Aeronautical Engineering Departamento de Motopropulsion y<br />
Termofluidodinamica Universidad Politecnica de Madrid, Spain, 2002. -<br />
75 c.<br />
31. Тарасик В.Н. Математическое моделирование технических систем.<br />
– Мн.: ДизайнПРО, 2004. - 640 с.<br />
160
32. Кутергин В.А. Конструктивные объекты и конструктивные процессы.<br />
– Ижевск: Изд-во ИПМ УрО РАН, 2007. - 551 с.<br />
33. Кулагин В.П. Разработка теоретических основ и инструментальных<br />
средств автоматизированного проектирования структур параллельных<br />
вычислительных систем на основе тензорного исчисления сетевых<br />
моделей. - Автореферат на соиск. уч.степ. д.т.н. – М.: Изд-во МГИЭМ,<br />
1995. - 35 с.<br />
34. Чижухин Г.Н. Систематизация тензорного аппарата системотехники.<br />
Часть 1 //Телекоммуникации. 2001г. № 1, стр.3-7.<br />
161
Сохор Юрий Николаевич<br />
Вычислительные модели<br />
и алгоритмы<br />
тензорного анализа сетей<br />
Учебно-методическое пособие<br />
для студентов специальности 140604 «Электропривод и автоматика<br />
промышленных установок и технологических комплексов»<br />
Технический редактор: Ю.Н.Сохор<br />
Компьютерная верстка: Ю.Н.Сохор<br />
Отпечатано с готового оригинал-макета<br />
Подписано в печать: 25.03.2008 г. Формат 60x90/16.<br />
Гарнитура Times New Roman. Усл.п.л. 10,0.<br />
Тираж 139 экз. Заказ № 2019<br />
Адрес издательства:<br />
Россия, 180000, г. Псков, ул. Л. Толстого, д.4<br />
Издательство ППИ<br />
162