Составление уравнений сводится к записи симметричной матрицы
параметров контурных токов:
[pic]
Вектора контурных напряжений источников, составляющие которых равны
суммам напряжений источников в контурах:
[pic]
При введении вектора искомых контурных токов уравнения (3.10) в
матричной форме можно записать в виде:
[pic].
3. Алгоритм формирования узловых уравнений
Для ввода графа или соединений цепи производят последовательную
нумерацию:
1) всех узлов от 1 до п=пy-1 (опорному узлу присваивают нулевой
номер);
2) всех ветвей от 1 до nв. Как указывалось, всю информацию о структуре
графа содержит матрица соединений. Но вводить в память эту матрицу
в виде двумерного массива нерационально из-за большого числа
нулевых элементов. Поэтому структуру графа вводят с помощью таблицы
соединений – одномерного массива троек целых чисел (k, i, j), где
k—номер ветви; i—номер узла, откуда ветвь выходит; j—номер узла,
куда ветвь входит. Тройки чисел дают ненулевые элементы aik=1 и
аjk=-1 матрицы А. По заданной таблице соединений можно получить все
необходимые для формирования уравнений матрицы.
Формировать узловые уравнения на ЭВМ можно перемножив произведение
первых двух матриц па транспонированную матрицу соединений, получим матрицу
узловых проводимостей; перемножение транспонированной матрицы АТ на вектор
токов источников дает вектор узловых токов. Действия над матрицами
(транспонирование, суммирование, перемножение) легко программируется.
Упомянутые матрицы являются разреженными, т. е. содержат много нулевых
элементов. Поэтому приведенный алгоритм, включающий много действий
умножения на нулевой элемент, применять невыгодно.
Более рационально формировать матрицу Gy и вектор iy непосредственно -
по мере поступления данных составных ветвей, исходя из смысла собственной и
взаимной проводимостей. Вначале матрицу узловых проводимостей и вектор
узловых токов принимают равными нулю: Gy=0 и iy=0, затем к ним добавляют
элементы, вносимые каждой составной ветвью. Данные ветви (k, i, j) с
проводимостью Gk и током источника тока iok войдут в собственные
проводимости Gii, Gjj, узлов i, j как добавки Gk, во взаимные проводимости
Gij, Gji как добавки Gk и в элементы вектора узловых токов iyi, iyi - как
добавки ±i0k. Добавки ветви в матрицу проводимости Gy и вектор тока iy
можно представить в виде:
[pic]
Если ветвь присоединена к базисному узлу (j=0) то она внесет добавку Gk,
только в собственную проводимость Gii и добавку i0k в составляющую iiy
вектора узловых токов. Учет данных последней ветви завершает формирование
узловых проводимостей и вектора узловых токов.
Заключение
Таким образом в настоящей дипломной работе:
проведен литературный обзор по моделированию процессов в
радиотехнических цепях, методов и средств расчетов токов и направлений
в них;
построена математическая модель разветвленной цепи постоянного тока;
. на языке программирования Турбо Паскаль версии 7.0. в удобном
графическом интерфейсе разработана программа построения и анализа
электрической схемы цепи постоянного тока;
. приведены методические пояснения при работе с разработанной
программой, а также расчетов и анализа электрических цепей;
. программа допускает без принципиальных изменений расширение её
функциональных возможностей для расчетов цепей переменного тока, а
также моделирования и анализа электромагнитных полей;
. результаты настоящей дипломной работы могут быть использованы в
учебном процессе, при разработке электронной аппаратуры в научных
лабораториях и на производстве.
В заключение хочу выразить благодарность своим научным руководителям:
Цыпишка Дмитрию Ивановичу, Брагарь Луке Федеровичу и заведующиему кафедрой
кафедрой общей физики и методики преподавания физики Стамову Ивану
Григорьевичу, за методическую помощь, оказанную при написании дипломной
работы.
Использованная литература
1. К.С. Демирчан, П.А. Бутырин. Моделирование и машинный расчет
электрических цепей. М., «Высшая школа», 1988г.
2. В. Нерретер. Расчет электрических цепей на ПЭВМ. М., «Энергоатомиздат»,
1991г.
3. Пантюшин В.С. Сборник задач по электротехнике и основам электронники.
М., «Высшая школа», 1979г.
4. П.Н. Махтанов. Основы анализа электрических цепей. Линейные цепи. М.,
«Высшая школа», 1990г.
5. «Электротехника». Под редакцией проф. В.С. Пантюшина. М., «Высшая
школа», 1976г.
6. В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова. «Введение в язык Паскаль».
М., «Наука», 1988г.
7. Ж.Джонс, К. Харроу. «Решение задач в системе Турбо Паскаль». М.,
«Финансы и статистика», 1991г.
8. К. Боон. «Паскаль для всех». М., «Энергоиздат», 1988г.
9. Д. Прайс. «Программирование на языке Паскаль». Практическое руководство.
М., «Мир», 1987г.
Приложение
I. Рисунки с видами экрана при работе с программой 20
Рисунок №1. Общий вид экрана. 20
Рисунок №2. Меню – Файл. 21
Рисунок №3. Открытие файла, сохраненного на диске. 22
Рисунок №4. Вид экрана с изображением схемы. 23
Рисунок №5. Вывод результата вычисления токов в ветвях схемы. 24
Рисунок №6. Просмотр направления токов в ветвях схемы. 25
Рисунок №7. Вид экрана при сохранении схемы в файл. 26
Рисунок №8. Меню – Окно. 27
Рисунок №9. Окно помощи выводимое на экран при нажатии клавиши F1. 29
II. Листинг программы на языке Паскаль. 30
1. Основная программа 30
2. Модуль с библиотекой элементов 36
3. Модуль вычисления токов ветвей 48
I. Рисунки с видами экрана при работе с программой
Рисунок №1. Общий вид экрана.
Меню
Меню элементов
Рабочее поле
Указатель мыши
[pic]
Строка статуса
Индекатор свободной памяти
Рисунок №2. Меню – Файл.
Меню – Файл
[pic]
Рисунок №3. Открытие файла, сохраненного на диске.
Открытие файла со схемой
[pic]
Рисунок №4. Вид экрана с изображением схемы.
Изображение схемы
[pic]
Расчет схемы
Рисунок №5. Вывод результата вычисления токов в ветвях схемы.
Результаты вычислений
[pic]
Токи
Резисторы
Рисунок №6. Просмотр направления токов в ветвях схемы.
Значения токов
Направления токов
[pic]
Рисунок №7. Вид экрана при сохранении схемы в файл.
Сохранение схемы
[pic]
Рисунок №8. Меню – Окно.
Работа с окнами
[pic]
Рисунок №9. Вид экрана при закрытии всех окон.
Указатель мыши
Меню
[pic]
Строка статуса
Информация о свободной памяти
Рисунок №10. Окно помощи выводимое на экран при нажатии клавиши F1.
Закрытие окна
Окно с помощью программы
[pic]
Горизонтальный скролинг
Вертикальный скролинг
II. Листинг программы на языке Паскаль.
1. Основная программа
Program UzPotenc; {Метод узловых потенциалов}
{$F+,O+,X+,V-,R-,I-,S-}
Uses
Crt, Applic1, Objects, Drivers, Dialogs, Views, Menus, App, StdDlg,
Fonts, HelpFile, MsgBox, TxtRead, WInDows, PalObj, Grv16, DemoHlp,
Types2;
Type TNewApp=Object(TMyApp)
Procedure ReCounte; Virtual;
End;
Var MyApp:TNewApp;
Type
PMyCollection=^TMyCollection;
TMyCollection=Object(TCollection)
Procedure FreeItem(Item:poInter); Virtual;
End;
Procedure CurView; {Просмотр значений токов}
Var R,R1:TRect;
D:PDialog;
L:PListBox;
C:PMyCollection;
Sb:PScrollBar;
i:Integer;
s:String;
Begin
Sb:=Nil;
MyApp.ShemeWInDow^.GeTextentWIn(R);
R.B.X:=R.A.X+(R.B.X-R.A.X) Div 4;
D:=New(PDialog,Init(R,'Значения токов'));
D^.GeTextentWIn(R);
Inc(R.A.Y,CurrentFont^.Height*2);
R1.Copy(R);
R1.A.X:=R1.B.X-CurrentFont^.Width*2;
If RCount>(R.B.Y-R.A.Y) Div CurrentFont^.Height
Then
Begin
Sb:=D^.StAndardScrollBar(sbVertical+sbHAndleKeyBoard);
End;
C:=New(PMyCollection,Init(RCount,1));
For i:=1 To RCount Do
Begin
Str(abs(Currents[i]):9:6,s);
If i Div 10>0
Then C^.Insert(NewStr('I'+IntToStr(i)+'='+s+'A'))
Else C^.Insert(NewStr(' I'+IntToStr(i)+'='+s+'A'))
End;
L:=New(PListBox,Init(R,1,Sb));
L^.NewList(C);
D^.Insert(L);
R.B.Y:=R.A.Y;
Dec(R.A.Y,CurrentFont^.Height*2);
D^.Insert(New(PLabel,Init(R,' Токи в ветвях',L)));
DeskTop^.Insert(D);
End;
Procedure TNewApp.ReCounte;{Обсчет}
Var
i,j,k,l,m,Ii,Sizex,Index:Integer;
A:TElAr;
f1,f2:Boolean;
Ratio:Real;
Function Vetv1(Ai,Aj,Ad:Integer):Boolean;
{Функция сохраняет в A ветвь от элемента (Ai,Aj) в направлении Ad (0-Up,1-
Down,2-Left,3-Right и возвращает TRUE, если она содержит элементы}
Var i,j,k,l:Integer;
Flag1,Flag2:Boolean;
Begin
Flag1:=True;
Flag2:=False;
With A[Index] Do
Begin
Str:=Ai; Col:=Aj;
Num:=Sheme[Ai,Aj,2];
Typ:=Sheme[Ai,Aj,1];
End;
Inc(Index);
Case Ad Of
0: Begin i:=Ai+1; j:=Aj-1; End;
1: Begin i:=Ai-1; j:=Aj+1; End;
2: Begin i:=Ai-1; j:=Aj+1; End;
3: Begin i:=Ai+1; j:=Aj-1; End;
End;
While Flag1 And (i>0) And (j>0) And (iSizex) Or IsDiv(A[i]);
If i=1
Then PrevDiv:=i
Else PrevDiv:=0;
End;
Begin
For i:=1 To nS*mS Div 2 Do
For j:=1 To nS*mS Div 2 Do
Equals[i,j]:=0;
For Ii:=1 To NoDecount Do
NNum[Ii]:=Ii;
Index:=1;
For Ii:=1 To NoDecount Do
Begin
Case Sheme[Nodes[Ii,1],Nodes[Ii,2],1] Of
14:Begin
Vetv1(Nodes[Ii,1],Nodes[Ii,2],0);
Vetv1(Nodes[Ii,1],Nodes[Ii,2],1);