close

Вход

Забыли?

вход по аккаунту

?

Отчет - 17

код для вставкиСкачать
Содержание
Введение..................................................................................4
1. Описание проблемы ...........................................................5
2. Описание метода...............................................................6
3. Описание программы.........................................................10
4. Решение контрольной задачи...............................................16
5. Решение задачи повышенной сложности.................................17
Заключение..............................................................................20
Список литературы.....................................................................21
Введение
В начале двадцать первого века продолжается процесс быстрого развития микропроцессорной техники. Подавляющее большинство устройств стали исполняться не на жёсткой логике. Это обусловлено гибкостью этих систем и возможностью их простой модернизации. Однако остаётся много областей в инженерной деятельности, где применение электронных схем не только рационально, но и существенно упрощает задачу. Рост быстродействия и сложности современных систем требует повышения качества устройств, выполняемых на реактивных элементах - увеличиваются порядки фильтров, усложняются системы питания. Массовое появление быстродействующих контроллеров в промышленности позволило рассчитывать параметры динамических процессов в реальном времени. Однако столь сложные схемы было бы невозможно рассчитывать вручную.
Современные вычислительные методы позволяют практически в полной мере на сегодняшнем этапе удовлетворить запросы инженеров и научных работников в анализе электронных схем, в том числе и в анализе реального времени.
Прорывом в области анализа электронных схем можно считать применение алгоритмов нечёткой логики, нейро-систем, операции с разреженными матрицами использование оптимизации электронных схем методом последовательного квадратичного программирования.
Можно добавить, что развитие математики и численных методов в дальнейшем может привести к развитию электроники и, возможно, к новым подходам составления электронных схем.
1. Описание проблемы В настоящее время основным является следующий еще недостаточно сформированный подход к синтезу математических моделей элементов. Математическая модель элемента создается на основе физических представлений о внутренних процессах. На основе опыта разработчиков моделей в зависимости от решаемой задачи моделирования. Иногда в модели стремятся отразить те или иные особенности характеристик элемента без изучения особенности физических процессов. Таким образом, в настоящее время синтез моделирования элементов это больше искусство, чем наука. К сожалению, нет даже общепринятых критериев, позволяющих оценить качество моделей. Задача расчёта цепей, работающих на переменном токе, является важной задачей как со стороны электроники, так и со стороны математики. Переменный ток легче поддаётся преобразованию, а следовательно более выгоден с любых позиций. Поэтому большинство реальных схем являются схемами переменного тока.
Проблема, которая рассматривается в моем курсовом проекте можно сформулировать следующим образом, моделирования линейных электронных схем постоянного тока, сопровождающаяся необходимостью расчета токов, напряжений.
2. Описание метода
Пусть имеется k узлов и l обобщенных ветвей и пусть опорным является k-ый узел.
Определим необходимые для анализа столбцы токов и напряжений, причем некоторые из них обозначаем точно также, как и скалярные величины, токи и напряжения, характеризующие обобщенную ветвь.
Столбец узловых напряжений:
;
Столбец напряжений обобщенных ветвей: ;
Столбец напряжений независимых источников напряжения:
;
Столбец токов обобщенных ветвей:
;
Столбец токов независимых источников тока: .
Легко заметить, что и для столбцов имеет место соотношение:
IОБ = I - IИС;
UОБ = U - UИС.
Можно заметить, что для схем, состоящих из указанных (описанных) обобщенных ветвей, удовлетворяющих принятым условиям, существует квадратная матрица УВ порядка l для которой I = УBU. Матрица УВ называется матрицей проводимостей ветвей. Её элементы характеризуют управляемые источники. Если в схеме используются только резисторы и нет управляемых источников, то УВ диагональная матрица, на главной диагонали которой располагаются значения проводимости ветвей.
Запишем 1-й закон Кирхгоффа
А IОБ =0;
IОБ = I - IИС ==> А I = A IИС ;
Учитывая, что I=УВU получаем:
А УВU = A IИС ;
UОБ = U - UИС ;
U = UОБ+UИС ;
А УВUОБ = А IИС - А УВUИС ;
Как известно, UОБ = AТUУЗ ;
А УВ АТUУЗ = А IИС - А УВ UИС..
Сделаем обозначения:
УУЗ = А УВ АТ ;
IУЗ = А IИС - А УВ UИС.
Тогда система узловых уравнений будет иметь следующий вид:
Матрица УУЗ называется матрицей узловых проводимостей. Столбец IУЗ называется вектором эквивалентных узловых источников тока.
.
Обратимся к вопросу формирования матрицы УУЗ и столбца IУЗ при практических расчетах. Как показано выше, УУЗ = А УВ АТ ;
IУЗ = А IИС - А УВ UИС.
В настоящее время эти выражения непосредственно обычно не используется, но, естественно, являются основой другого, более удобного алгоритма. Анализ этих выражений показывает, что если матрица УВ достаточно проста по структуре, то матрица УУЗ и столбец IУЗ могут быть получены и без непосредственного перемножения матриц и столбцов при использовании так называемого прямого формирования. Этот способ экономичен и широко используется на практике.
Прямое формирование матрицы проводимости узлов и столбца узловых источников тока
Формирование матрицы УУЗ
* Все элементы матрицы УУЗ приравнивают к нулю.
* Поочередно обращаются к обобщенным ветвям схемы. При обращении к некоторой обобщенной ветви в матрице УУЗ изменяют определенные элементы.
Пусть очередной является ветвь m с начальным узлом i и конечным узлом j. Пусть ее управляемый источник тока управляется напряжением сопротивления ветви n, которая имеет начальный узел k и конечный l. Допустимо, чтобы выполнялось равенство m = n. При этом i= k; j= l. Пусть ни один из узлов (i, j, k, l) не является опорным. Отразим эти условия в схематическом изображении произведения УУЗ= А УВ АT
УУЗ =АУВ АТ
.
Изобразим схематически результат перемножения матриц А и УВ:
Изобразим схематически результат перемножения матриц А, УВ и АТ:
Таким образом, при обращении к ветви m к элементам матрицы УУЗ в i-ой строке и k-ом столбце, а также в j-ой строке и l столбце добавляется элемент Уm, а к элементам в i-ой строке и l столбце, в j-ой строке и k-ом столбце добавляется величина -Уm.
Если какой либо из узлов является опорным, то в матрице УУЗ, естественно, изменяется меньшее количество элементов.
Формирование столбца IУЗ
* Все элементы столбца IУЗ приравнивают к нулю.
* Поочередно обращаются к обобщенным ветвям схемы. При обращении к очередной обобщенной ветви в IУЗ изменяют определенные его элементы.
Воспользуемся ранее принятыми обозначениями столбцов и ветвей. Схематически изобразим выражение А IИС - АУВUИС:
-
В столбце UИС учтено напряжение UИС n , хотя рассматривается ветвь m, т.к. UИС n проявляет себя дважды. Эта величина влияет и на ток резистора в цепи n , и на ток управляемого источника в цепи m (еще раз напряжение UИС m будет учтено при обращении к ветви n). Изобразим схематически столбец IУЗ=AIИС-- АУВUИС Таким образом, при обращении к очередной ветви m к i-му элементу столбца IУЗ добавляется величина IИсm - УmUИсn, а к j-му элементу столбца IУЗ добавляется величина -IИсm + УmUИсn.
Если один из узлов опорный, то изменится только один элемент столбца IУЗ.
Для решения узловых уравнений обычно используют метод исключения Гаусса или LU - факторизацию. Если необходимо найти несколько решений СЛАУ, соответствующих различным наперед неизвестным столбцам IИС, UИС, то метод LU - факторизации лучше (т.к. требует меньше вычислений). Если матрица УУЗ - симметричная и положительно определенная, то выбор ведущего элемента необязателен, иначе он обязателен (или по столбцу, или по строке, или по всей матрице). 3. Описание программы
Рассмотрим описание программы на примере работы программы. Ниже приведено такое описание.
Введите количество узлов схемы: 2
Введите количество ветвей схемы: 2
Ветвь № 1 :
Из какого узла выходит: 2
В какой узел входит: 1
Имеется ли в ветви источник напряжения/тока(V/I):
Имеется ли в ветви резистор(Y/N)?: y
Введите сопротивление резистора: 1000
Имеется ли в ветви управляемый источник (Y/N)?: n
Ветвь № 2 :
Из какого узла выходит: 1
В какой узел входит: 2
Имеется ли в ветви источник напряжения/тока(V/I): v
Введите напряжение источника: 5
Имеется ли в ветви резистор(Y/N)?: y
Введите сопротивление резистора: 1
Результаты работы программы представлены в виде
Источники напряжения:
0.0000000000E+00
5.0000000000E+00
Источники тока:
0.0000000000E+00
0.0000000000E+00
Матрица инциденций:
1 -1
-1 1
Матрица узловых проводимостей:
1.0010000000E+00 -1.0010000000E+00
-1.0010000000E+00 1.0010000000E+00
Столбец узловых токов:
-5.0000000000E+00
5.0000000000E+00
Столбец узловых напряжений:
-4.9950049950E+00
Текст программы приведен ниже
program MARES_17;
uses Crt;
type
Mas = array [1..60,1..60] of -1..1;
Column = array [1..60] of real;
RealMas = array [1..5,1..5] of real;
IntMas = array [1..60] of integer;
var
uzlov,vetvej,i,j,vetvU:integer;
NodeInput,NodeOutput:IntMas;
MatrIncedent:Mas;(*Матрица инцинденций*)
VSource,ISource,Uuz,Iuz:Column;(*Столбцы источников напряжений и токов*)
Yuz:RealMas;(*Матрица узловых уравнений*)
MatrYI:RealMas;(*Расширенная матрица*)
Ch,Res:char;(*Тип источника, Res - ввод резистора*)
Resister,G:column;(*Сопротивление резистора, G - проводимость*)
ResU:real;
{==========================================================================}
{Решение методом Гаусса}
procedure Gauss;
var
Diag,Prom:real;
i,j,k:integer;
Sum:real;
Max:real;
MaxNumber:integer;
begin
{Прямой ход}
for i:=1 to uzlov-1 do
begin
Max:=0;
{Поиск максимального элемента}
for j:=1 to vetvej+1 do
if MatrYI[1,j]>Max then
begin
Max:=MatrYI[1,j];
MaxNumber:=j
end;
{Перестановка столбцов}
for j:=1 to uzlov do
begin
Prom:=MatrYI[j,MaxNumber];
MatrYI[j,MaxNumber]:=MatrYI[j,1];
MatrYI[j,1]:=Prom
end;
Diag:=MatrYI[i,i];
{Если диагональный элемент = 0 выполняем перестановку строк}
if Diag=0 then
for k:=i to uzlov do
if MatrYI[k,i]<>0 then
for j:=1 to uzlov+1 do
begin
Prom:=MatrYI[k,j];
MatrYI[k,j]:=MatrYI[i,j];
MatrYI[i,j]:=Prom
end;
Diag:=MatrYI[i,i];
{Деление строки на диагональный элемент}
for j:=1 to uzlov+1 do
MatrYI[i,j]:=MatrYI[i,j]/Diag;
for k:=i+1 to uzlov do
begin
Prom:=MatrYI[k,i];
for j:=1 to uzlov+1 do
begin
{Формула Гаусса}
MatrYI[k,j]:=MatrYI[k,j]-MatrYI[i,j]*Prom
end
end
end;
{Обратный ход}
Uuz[uzlov-1]:=MatrYI[uzlov-1,uzlov];
Sum:=0;
for i:=uzlov-2 downto 1 do
begin
for j:=uzlov-1 downto i+1 do Sum:=Sum+MatrYI[i,j]*Uuz[j];
Uuz[i]:=MatrYI[i,uzlov]-Sum;
Sum:=0
end;
{Восстанавливаем последовательность решений}
Prom:=Uuz[MaxNumber];
Uuz[MaxNumber]:=Uuz[1];
Uuz[1]:=Prom
end;
BEGIN
clrscr;
write('Введите количество узлов схемы: ');
readln(uzlov);
write('Введите количество ветвей схемы: ');
readln(vetvej);
for i:=1 to vetvej do
for j:=1 to vetvej do
MatrIncedent[i,j]:=0;
for i:=1 to vetvej do
begin
writeLn('Ветвь № ',i,' :');
write('Из какого узла выходит: ');
readln(NodeOutput[i]);
MatrIncedent[NodeOutput[i],i]:=-1;
write('В какой узел входит: ');
readln(NodeInput[i]);
MatrIncedent[NodeInput[i],i]:=1;
write('Имеется ли в ветви источник напряжения/тока(V/I): ');
readln(Ch);
{Ввод параметров источника}
if (Ch = 'V') or (Ch = 'v') then
begin
write('Введите напряжение источника: ');
readln(VSource[i])
end;
if (Ch = 'I') or (Ch = 'i') then
begin
write('Введите значение тока источника: ');
readln(ISource[i])
end;
{Прямое формирование матрицы узловых уравнений}
write('Имеется ли в ветви резистор(Y/N)?: ');
readln(Res);
if (Res = 'Y') or (Res = 'y') then
begin
write('Введите сопротивление резистора: ');
readln(Resister[i]);
G[i]:=1/Resister[i];
if (Ch = 'I') or (Ch = 'i') then G[i]:=0;
Yuz[NodeInput[i],NodeInput[i]]:=Yuz[NodeInput[i],NodeInput[i]]+G[i];
Yuz[NodeOutput[i],NodeOutput[i]]:=Yuz[NodeOutput[i],NodeOutput[i]]+G[i];
Yuz[NodeInput[i],NodeOutput[i]]:=Yuz[NodeInput[i],NodeOutput[i]]-G[i];
Yuz[NodeOutput[i],NodeInput[i]]:=Yuz[NodeOutput[i],NodeInput[i]]-G[i];
end;
{Формирование столбца узловых токов}
Iuz[NodeOutput[i]]:=Iuz[NodeOutput[i]]+ISource[i]-G[i]*VSource[i];
Iuz[NodeInput[i]]:=Iuz[NodeInput[i]]-(ISource[i]-G[i]*VSource[i]);
end;
{***************************************}
clrscr;
writeln('Источники напряжения: ');
for i:=1 to vetvej do writeln(VSource[i]);
ReadKey;
WriteLn('Источники тока: ');
for i:=1 to vetvej do
writeLn(ISource[i]);
readkey;
writeLn('Матрица инциденций:');
for i:=1 to uzlov do
begin
for j:=1 to vetvej do
write(MatrIncedent[i,j],' ');
writeLn
end;
readkey;
writeLn('Матрица узловых проводимостей:');
for i:=1 to uzlov do
begin
for j:=1 to uzlov do
Write(Yuz[i,j],' ');
WriteLn
end;
ReadKey;
WriteLn('Столбец узловых токов: ');
for i:=1 to uzlov do
WriteLn(Iuz[i]);
ReadKey;
{Поиск узловых напряжений}
{Составление расширенной матрицы}
for i:=1 to uzlov-1 do
for j:=1 to uzlov-1 do
MatrYI[i,j]:=Yuz[i,j];
for i:=1 to uzlov-1 do
MatrYI[i,uzlov]:=Iuz[i];
{Используется метод исключения Гаусса}
Gauss;
WriteLn('Столбец узловых напряжений:');
for i:=1 to uzlov-1 do
writeLn(Uuz[i]);
ReadKey
end.
4. Решение контрольной задачи
Условия задачи представлены выше в пункте 3 в качестве примера.
Схема представлена на рисунке 4.1(там же отмечены результаты расчета программой MicroCap 7.0.8 узловых напряжений).
Рис. 4.1.
Результаты работы программы Столбец узловых токов:
-5.0000000000E+00
5.0000000000E+00
Столбец узловых напряжений:
-4.9950049950E+00
Видим, что результаты практически совпадают. Расхождение происходит из-за того, что в программе для правильной ее работы приходится добавлять внутреннее сопротивление источника напряжение, которое и влияет на результат.
5. Решение задачи повышенной сложности.
Схема представлена на рисунке 5.1(там же отмечены результаты расчета программой MicroCap 7.0.8 узловых напряжений).
Рис. 5.1.
Исходные данные
Введите количество узлов схемы: 4
Введите количество ветвей схемы: 5
Ветвь № 1 :
Из какого узла выходит: 4
В какой узел входит: 3
Имеется ли в ветви источник напряжения/тока(V/I): v
Введите напряжение источника: 20
Имеется ли в ветви резистор(Y/N)?: y
Введите сопротивление резистора: 4000
Ветвь № 2 :
Из какого узла выходит: 4
В какой узел входит: 2
Имеется ли в ветви источник напряжения/тока(V/I):
Имеется ли в ветви резистор(Y/N)?: y
Введите сопротивление резистора: 1000
Ветвь № 3 :
Из какого узла выходит: 2
В какой узел входит: 3
Имеется ли в ветви источник напряжения/тока(V/I):
Имеется ли в ветви резистор(Y/N)?: y
Введите сопротивление резистора: 5000
Ветвь № 4 :
Из какого узла выходит: 2
В какой узел входит: 1
Имеется ли в ветви источник напряжения/тока(V/I): v
Введите напряжение источника: -10
Имеется ли в ветви резистор(Y/N)?: y
Введите сопротивление резистора: 2000
Ветвь № 5 :
Из какого узла выходит: 1
В какой узел входит: 3
Имеется ли в ветви источник напряжения/тока(V/I): n
Имеется ли в ветви резистор(Y/N)?: y
Введите сопротивление резистора: 3000
Результаты работы программы Источники напряжения:
2.0000000000E+01
0.0000000000E+00
0.0000000000E+00
-1.0000000000E+01
0.0000000000E+00
Источники тока:
0.0000000000E+00
0.0000000000E+00
0.0000000000E+00
0.0000000000E+00
0.0000000000E+00
Матрица инциденций:
0 0 0 1 -1
0 1 -1 -1 0
1 0 1 0 1
-1 -1 0 0 0
Матрица узловых проводимостей:
8.3333333333E-04 -5.0000000000E-04 -3.3333333333E-04 0.0000000000E+00
-5.0000000000E-04 1.7000000000E-03 -2.0000000000E-04 -1.0000000000E-03
-3.3333333333E-04 -2.0000000000E-04 7.8333333333E-04 -2.5000000000E-04
0.0000000000E+00 -1.0000000000E-03 -2.5000000000E-04 1.2500000000E-03
Столбец узловых токов:
-5.0000000000E-03
5.0000000000E-03
5.0000000000E-03
-5.0000000000E-03
Столбец узловых напряжений:
-1.3333333333E+00
3.3333333333E+00
6.6666666667E+00
Видим, что результаты практически совпадают. Заключение
В результате выполненной курсовой работы была разработана программа в среде Borland Pascal 7.0, предназначенная для моделирования поведения линейной схемы на постоянном токе. Результаты работы программы были успешно сравнены с результатами работы профессионального ПО расчета электронных схем MicroCap 7.08.
В дальнейшем планируется преобразовать программу под среду программирования Delphi 6, что значительно улучшит её интерфейс.
Список литературы.
1. Лачин В.И., Савёлов Н.С. Электроника: Учеб. пособие. - Ростов н/Д: изд-во "Феникс", 2000. - 448 с.
2. Савёлов Н.С. Курс лекций по дисциплине "Методы анализа и расчёта электронных схем". 2001.
3. Фаронов В.В. Турбо Паскаль 7.0.Начальный курс. Учебное пособие. - М.: "Нолидж", 1999. - 616 с., ил.
4. Методические указания к курсовой работе по дисциплине "Математическое моделирование узлов промышленной электроники на ЭВМ" / Новочерк. гос. техн. ун - т. - Новочеркасск: НГТУ. 1995. - 23 с.
4
Документ
Категория
Рефераты
Просмотров
38
Размер файла
142 Кб
Теги
отчет
1/--страниц
Пожаловаться на содержимое документа