close

Вход

Забыли?

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

?

КУРСОВОЙ

код для вставкиСкачать

Содержание
Введение4
1. Проблема анализа линейных электронных схем постоянного тока............5
2. Описание метода5
2.1. Обобщенная ветвь схемы...........................................................5
2.2. Формирование узловых уравнений на основе матричных выражений........................................................................................6 2.3. Прямое формирование узловых уравнений.....................................6 2.4. Управляемые источники............................................................8
2.5. Вычисление остальных неизвестных токов и напряжений.................8
3. Алгоритм программы....................................................................10
4. Решение контрольной задачи.Ошибка! Закладка не определена.
5. Решение задачи повышенной сложности............................................12
Заключение.14
Список используемой литературы17
Приложение 1................................................................................18
Введение
Около полувека назад, когда ЭВМ были доступны не всем, вычислительные методы использовались при анализе и проектировании цепей крайне незначительно. Инженеры могли синтезировать простые цепи, пользуясь минимумом вычислений. Но в результате научно-технического прогресса электронные схемы стали усложняться. В связи с этим появилась необходимость упрощать схемы, получать эквивалентные им, но более простые. А если схема оказывалась очень сложной, то упрощение требовало очень больших временных затрат. В случае необходимости произвести более точные вычисления, вставала проблема ограниченности возможностей в области вычислений низкого уровня.
Но с течением времени так же развивались и ЭВМ, которые становились все более доступными. Интегральные схемы сделали возможным производство более совершенных и дешевых ЭВМ, а те, в свою очередь, облегчили проектирование новых интегральных схем и постепенно устранили проблему большого количества манипуляций с цифрами.
В связи с этим стали развиваться и усовершенствоваться вычислительные методы. В настоящее время профессиональные методы анализа электронных схем широко используются и позволяют рассчитывать и анализировать схемы практически любой сложности. Именно эти методы, хорошо себя зарекомендовавшие, используются в современных автоматизированных системах. И именно они настоятельно рекомендуются к программному обеспечению вычислительных устройств.
1. Проблема анализа линейных электронных схем постоянного тока
На практике линейные электронные схемы встречаются довольно редко, однако многие задачи анализа, в том числе нелинейных схем, сводятся к многократному анализу электронных схем постоянного тока.
В настоящее время в большинстве случаев для анализа линейных схем постоянного тока используется метод узловых потенциалов (который будет рассмотрен ниже), но в специфической форме, ориентированной, естественно, и на машинное формирование, и на машинное решение систем уравнений. Основным достоинством узлового анализа является:
1) простота алгоритмов формирования систем уравнений;
2) большая разреженность матрицы систем уравнений для большинства схем, встречающихся на практике.
По существу при формировании системы узловых уравнений нет необходимости определять дерево графа, матрицы сечений и контуров. Но, естественно, в методе реализованы соотношения для токов и напряжений, соответствующие топологии схемы.
В дальнейшем будем рассматривать в качестве единственного метода анализа цепей метод узловых потенциалов. Решающее преимущество этого метода состоит в том, что он практически не требует предварительной подготовки. Кроме того, метод узловых потенциалов достаточно просто программировать.
2. Описание метода
2.1. Обобщенная ветвь схемы
В узловом анализе удобно, и поэтому принято, использовать обобщенные ветви электронных схем. Применение обобщенных ветвей сокращает, и объем памяти, и объем машинного времени. На практике используют различные обобщенные ветви. Наиболее общим случаем обобщенной ветви является ветвь, состоящая из трех элементов.
В обобщенной ветви используется независимый источник напряжения (Uис), независимый источник тока (iис) и элемент, обозначенный ромбом, который может быть линейным резистором, но может быть и источником тока, управляемым напряжением (ИТУН) на некотором элементе схемы (рисунок 1).
В любом случае элемент, обозначенный ромбом, характеризуется проводимостью Y:
,
где Ux - некоторое напряжение схемы.
Рис.1. Обобщенная ветвь
Если Ux ≡ U, то элемент - линейный резистор с проводимостью Y. Практически все программы требуют от пользователя определить величину сопротивления, а не проводимости, так как это удобно пользователю. 2.2. Формирование узловых уравнений на основе матричных выражений
При выполнении, узлового анализа на цифровых вычислительных
машинах мы не строим матрицы инциденции и полных проводимостей и не выполняем матричное умножение. Такой путь привел бы к чрезмерному увеличению требуемой памяти машины и времени счёта, потому что матрицы инциденции и полных проводимостей обычно весьма разреженные. Вместо этого мы используем правила прямого формирования узловых уравнений.
Естественно, метод прямого формирования соответствует матричным выражениям и дает те же матрицы, но требует значительно меньших затрат машинного времени. Именно прямое формирование используется в современных пакетах.
2.3. Прямое формирование узловых уравнений
Рассмотрим схему, имеющую ℓ обобщенных ветвей и k узлов. Тогда столбцы напряжения и токов будут иметь вид, показанный ниже.
Столбец напряжений обобщенных ветвей : Uоб = .
Столбец напряжений резисторов или управляемых источников: U = .
Столбец напряжений независимых источников напряжения: Uис = .
Столбец узловых потенциалов: Uуз = .
Столбец токов обобщенных ветвей: iоб = .
Столбец токов резисторов или управляемых источников: i = .
Столбец токов независимых источников токов:
iис = .
Из вышеизложенного можно сделать вывод, что
iоб = i - iис, Uоб = U - Uис.
Для принятого условия относительно управляющих напряжений
I = YВ*U,
где YB - квадратная матрица порядка ℓ проводимости ветвей.
Матрица YB является диагональной при условии, что в схеме нет управляемых источников. В противном случае матрица YB не диагональная.
Получим систему узловых уравнений. В соответствии с I законом Кирхгофа для обобщенных ветвей:
, : , : ;
: ;
.
Сделав замену , получим:
.
Используем обозначения ≡ Yуз, ≡ .
В результате получим систему узловых уравнений в компактной форме:
.
Алгоритм прямого формирования характерен тем, что вначале матрица Yуз и столбец обнуляют. Затем при поочередном обращении к отдельным обобщенным ветвям модифицируют отдельные элементы матрицы-столбца. Модификация осуществляется путем прибавления к уже полученным значениям элементов определенных чисел.
2.4. Управляемые источники В некоторых программах ранних версий в анализируемой схеме допускалось использовать только источники тока, управляемые напряжением. В современных версиях используются все виды управляемых источников.
В зависимости от вида источника и управляющего параметра различают четыре основных типа управляемых источников.
Собственный параметр линейно управляемого источника, благодаря постоянному коэффициенту управления, зависит от управляющего параметра линейно. Преобразовать один управляемый источник в другой не представляет труда.
Пусть имеется источник тока, управляемый током:
i = k*ix,
где ix - ток резистора.
Нетрудно получить
i = k*ix = k*Gx*Ux,
i = y*Ux, y = k*Gx.
Рис.2
2.5. Вычисление остальных неизвестных токов и напряжений
Для решения узловых уравнений используются наиболее эффективные методы, изучаемые в курсе " Вычислительные методы ". При этом необходимо учитывать следующие особенности схемы: 1) если схема не содержит управляемых источников и все проводимости положительны, то матрица Yуз является симметричной и положительно определенной. В этом случае применяют LU-факторизацию или другие модификации метода исключения Гаусса, причем выбор ведущего элемента можно не производить;
2) в общем случае матрица YB оказывается не диагональной, а матрица Yуз - не симметричной. В этом случае выбор ведущего элемента необходим.
На практике, в том числе в современных программных системах, используется LU-факторизация с частичным выбором ведущего элемента.
После вычисления столбца Uуз можно определить
Uоб = АТ*Uуз, Uоб = U - Uис.
Тогда
U = Uоб + Uис,
I = YB*U.
Таким образом, определение всех токов и напряжений не представляет затруднений.
Однако при практических расчетах, как с помощью собственной программы, так и с помощью наиболее совершенных программных систем, обязательно следует учитывать вероятность следующих трех случаев:
1) задача имеет единственное решение;
2) задача не имеет решения;
3) задача имеет множество решений.
Признаками отсутствия единственного решения, то есть наличие бесконечного множества решений или некорректности задачи, является отсутствие ведущего элемента на некотором шаге прямого хода, существенно отличающегося от нуля.
3. Построение алгоритма программы
Рис.3. Общий алгоритм программы
Разработанная программа приведена в приложении 1.
4. Решение контрольной задачи
В качестве контрольной схемы рассмотрим следующую схему:
Рис.4. Схема контрольной задачи
Вводим параметры схемы в программу расчета:
Рис.5. Ввод данных контрольной задачи
После нажатия "Вычисление" получаем результат:
Рис.6. Результат контрольной задачи
Отсюда делаем вывод, что программа работает правильно.
5. Решение задач повышенной сложности
Задача 1:
Рис. 7. Задача №1 повышенной сложности Вводим параметры схемы в программу расчета:
Рис.8. Ввод данных задачи №1
После нажатия "Вычисление" получаем результат:
Рис.9. Результаты задачи №1
Задача 2:
Рис.10. Задача №2 повышенной сложности
Вводим параметры схемы в программу расчета:
Рис.11. Ввод данных задачи №2
После нажатия "Вычисление" получаем результат:
Рис.12. Результаты задачи №2
Заключение.
В настоящее время профессиональные методы анализа электронных схем пользуются большим спросом. Современные вычислительные методы позволяют инженеру проектировать и анализировать задачи практически любой сложности без больших усилий. Кроме того они позволили значительно сократить затраты времени, ощутимо повысили точность расчетов. При расчете схем с большим количеством элементов методы анализа и расчета помогают избежать многих ошибок.
Но прогресс не стоит на месте, и будем надеяться, что это еще не предел возможностей вычислительных методов анализа и расчета электронных схем. Список используемой литературы
1. Влах Н., Сингхал К. Машинные методы анализа и проектирования электронных схем.М.: Радио и связь, 1988 - 560 стр.
2. Нерретер В, Вольфганг С. Расчет электронных цепей на ПЭВМ. М.: ЭнергоАтомИздат, 1990 - 220 стр.
3. Савелов Н. С. Методы анализа и расчета электронных схем (курс лекций).
Приложение 1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label2: TLabel;
Label3: TLabel;
procedure formirovanieMatric(ny,nv:integer);
procedure Smewenie(nv:integer);
procedure Vichislenie(w:integer);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
vetv=record
IsxodYzel:integer;
Rezistor:real;
Naprejenie:real;
Tok:real;
VxodYzel:integer;
end;
var
Form1: TForm1;
i,j,ii,fgh,r,net,uu,ny,nv:integer;
s:real ;
yyz,y1,a,at,Yv1,y,nyll0:array[0..100,0..100] of real;
uyz,iyz,Ig,Ug,ist,nyll1:array[0..100] of real;
ky,Iic,Uic,nyll2:array[0..100] of real;
obobvetbvi,nyll3:array[0..1000] of vetv;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var i,j:integer;
begin
Form1.StringGrid1.Cells[1,0]:= 'ветвь исходит из узла№';
Form1.StringGrid1.Cells[3,0]:='R';
Form1.StringGrid1.Cells[4,0]:='Uн';
Form1.StringGrid1.Cells[5,0]:='Iт';
Form1.StringGrid1.Cells[2,0]:=''ветвь входит в узел№';
For i:=1 to 20 do
Form1.StringGrid1.Cells[0,i]:=inttostr(i);
end;
procedure TForm1.Smewenie(nv:integer);
var i,j:integer;
a2,at2,yv2,y2:array[0..100,0..100] of real;
Uic2,Iic2:array[0..100] of real;
ngvv:real;
begin
j:=0;
repeat
j:=j+1;i:=0;
repeat
i:=i+1;
A2[i,j]:=A[i,j];
At2[i,j]:=At[i,j];
until i=99;
until j=99;
j:=0;
repeat
j:=j+1;i:=0;
repeat
i:=i+1;
A[i-1,j]:=A2[i,j];
At[i,j-1]:=At2[i,j];
until i=99;
until j=99;
end;
procedure TForm1.formirovanieMatric(ny,nv:integer);
begin
for I:=1 to 100 do
begin
for J:=1 to 100 do
begin
A[i,j]:=0;Yyz[i,j]:=0;At[i,j]:=0;
Yv1[i,j]:=0; Y[i,j]:=0;
end;
Iic[i]:=0;Uyz[i]:=0;Iyz[i]:=0;
Uic[i]:=0;Ky[i]:=0;Ig[i]:=0;Ug[i]:=0;
ist[i]:=0;
end;
&&&& zadanie matric
i:=0;
repeat
i:=i+1;
if (obobvetbvi[i].Naprejenie>0) and (obobvetbvi[i].Rezistor=0) then obobvetbvi[i].Rezistor:=10000000;
A[obobvetbvi[i].IsxodYzel,i]:=1;
A[obobvetbvi[i].VxodYzel,i]:=-1;
At[i,obobvetbvi[i].IsxodYzel]:=1;
At[i,obobvetbvi[i].VxodYzel]:=-1;
Yv1[i,i]:=obobvetbvi[i].Rezistor;
Uic[i]:=obobvetbvi[i].Naprejenie;
Iic[i]:=obobvetbvi[i].Tok;
until i=nv;
&&&& Smewenie matr
Smewenie(nv);
&&& a*y
uu:=0;
repeat
uu:=uu+1; J:=0;
repeat
j:=j+1;i:=0;s:=0;
repeat
i:=i+1;
s:=s+A[uu,i]*Yv1[i,j];
until i=nv;
Yyz[uu,j]:=s
until j=nv;
until uu=ny-1;
&&& Yyz*at
uu:=0;
repeat
uu:=uu+1; J:=0;
repeat
j:=j+1;i:=0; s:=0;s:=0;
repeat
i:=i+1;
s:=s+Yyz[uu,i]*At[i,j];
until i=nv;
Y[uu-1,j-1]:=s;
until j=ny-1;
until uu=ny-1;
&&&& A*I
uu:=0;
repeat
uu:=uu+1; J:=0;
repeat
j:=j+1;i:=0;s:=0;
repeat
i:=i+1;
s:=s+A[uu,i]*Iic[i];
until i=nv;
Ig[uu]:=s
until j=1;
until uu=ny-1;
&&&& Yyz*Uic
uu:=0;
repeat
uu:=uu+1; J:=0;
repeat
j:=j+1;i:=0; s:=0;
repeat
i:=i+1;
s:=s+Yyz[uu,i]*Uic[i];
until i=nv;
Ug[uu]:=s
until j=1;
until uu=ny-1;
&&& I-U
i:=0;
repeat
i:=i+1;
ist[i]:=Ig[i]-Ug[i];
until i=ny-1;
i:=0;
repeat
i:=i+1;
Y[i-1,ny-1]:=ist[i];
until i=ny-1;
end;
&&&& gordan
procedure TForm1.Vichislenie(w:integer);
var a,s,m,v:real;
i,j,p,o:integer;
begin
i:=0;
for p:=0 to w-1 do
begin
m:=0;
for i:=w-1 downto p do
if abs(Y[i,p])>abs(m) then
begin
m:=Y[i,p];o:=i;
end;
if abs(m)=0 then
begin
Label1.Caption:= 'Исходные данные заданы неправильно. ';
end;
for j:=w downto p do
begin
m:=Y[o,j]; Y[o,j]:=Y[p,j]; Y[p,j]:=m;
end;
i:=p;
for j:=w downto p do
Y[i,j]:=Y[i,j]/Y[i,i];
for I :=p+1 to w-1 do
for J :=w downto p do
Y[i,j]:=Y[i,j]-Y[p,j]*Y[i,p];
if p>=1 then
for I :=p-1 downto 0 do
for J :=w downto p do
Y[i,j]:=Y[i,j]-Y[p,j]*Y[i,p];
end;
end;
&&& konec
&&& raschet
procedure TForm1.Button1Click(Sender: TObject);
begin
&&& obnylenie massivov
yyz:=nyll0;
y1:=nyll0;
a:=nyll0;
at:=nyll0;
yv1:=nyll0;
uyz:=nyll1;
iyz:=nyll1;
Ig:=nyll1;
Ug:=nyll1;
ist:=nyll1;
ky:=nyll2;
Iic:=nyll2;
Uic:=nyll2;
obobvetbvi:=nyll3;
&&& schitivanie dannix
ny:=strtoint(Edit1.Text);
nv:=strtoint(Edit2.Text);
i:=0;
repeat
i:=i+1;
obobvetbvi[i].IsxodYzel:=strtoint(Form1.StringGrid1.Cells[1,i]);
obobvetbvi[i].Rezistor:=1/strtofloat(Form1.StringGrid1.Cells[3,i]);
obobvetbvi[i].Naprejenie:=-strtofloat(Form1.StringGrid1.Cells[4,i]);
obobvetbvi[i].Tok:=strtofloat(Form1.StringGrid1.Cells[5,i]);
obobvetbvi[i].VxodYzel:=strtoint(Form1.StringGrid1.Cells[2,i]);
until Form1.StringGrid1.Cells[1,i+1]='';
&&& rschet
formirovanieMatric(ny,nv);
Vichislenie(ny-1);
form2.Show;
&&& vivod znacheniy
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label12: TLabel;
Label11: TLabel;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Edit16: TEdit;
Edit17: TEdit;
Edit18: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18:integer;
begin
e1:=StrToInt(Form2.Edit3.Text);
e2:=StrToint(Form2.Edit4.Text);
e3:=StrToint(Form2.Edit5.Text);
e4:=StrToint(Form2.Edit6.Text);
e5:=StrToint(Form2.Edit7.Text);
e6:=StrToint(Form2.Edit8.Text);
e7:=StrToint(Form2.Edit9.Text);
e8:=StrToint(Form2.Edit10.Text);
e9:=StrToint(Form2.Edit11.Text);
e10:=StrToint(Form2.Edit1.Text);
e11:=StrToint(Form2.Edit2.Text);
e12:=StrToint(Form2.Edit12.Text);
e13:=StrToint(Form2.Edit13.Text);
e14:=StrToint(Form2.Edit14.Text);
e15:=StrToint(Form2.Edit15.Text);
e16:=StrToint(Form2.Edit16.Text);
e17:=StrToint(Form2.Edit17.Text);
e18:=StrToint(Form2.Edit18.Text);
Form2.Label4.Caption:=FloatToStr(e1);
Form2.Label5.Caption:=FloatToStr(e2);
Form2.Label6.Caption:=FloatToStr(e3);
Form2.Label7.Caption:=FloatToStr(e4);
Form2.Label8.Caption:=FloatToStr(e5);
Form2.Label9.Caption:=FloatToStr(e6);
Form2.Label10.Caption:=FloatToStr(e7);
Form2.Label11.Caption:=FloatToStr(e8);
Form2.Label12.Caption:=FloatToStr(e9);
Form2.Label1.Caption:=FloatToStr(e10);
Form2.Label2.Caption:=FloatToStr(e11);
Form2.Label3.Caption:=FloatToStr(e12);
Form2.Label13.Caption:=FloatToStr(e13);
Form2.Label14.Caption:=FloatToStr(e14);
Form2.Label15.Caption:=FloatToStr(e15);
Form2.Label16.Caption:=FloatToStr(e16);
Form2.Label17.Caption:=FloatToStr(e17);
Form2.Label18.Caption:=FloatToStr(e18);
Form2.Edit3.Text:=FloatToStr(Y[e1-2,ny-1]);
Form2.Edit4.Text:=FloatToStr(Y[e2-2,ny-1]);
Form2.Edit5.Text:=FloatToStr(Y[e3-2,ny-1]);
Form2.Edit6.Text:=FloatToStr(Y[e4-2,ny-1]);
Form2.Edit7.Text:=FloatToStr(Y[e5-2,ny-1]);
Form2.Edit8.Text:=FloatToStr(Y[e6-2,ny-1]);
Form2.Edit9.Text:=FloatToStr(Y[e7-2,ny-1]);
Form2.Edit10.Text:=FloatToStr(Y[e8-2,ny-1]);
Form2.Edit11.Text:=FloatToStr(Y[e9-2,ny-1]);
Form2.Edit1.Text:=FloatToStr(Y[e10-2,ny-1]);
Form2.Edit2.Text:=FloatToStr(Y[e11-2,ny-1]);
Form2.Edit12.Text:=FloatToStr(Y[e12-2,ny-1]);
Form2.Edit13.Text:=FloatToStr(Y[e13-2,ny-1]);
Form2.Edit14.Text:=FloatToStr(Y[e14-2,ny-1]);
Form2.Edit15.Text:=FloatToStr(Y[e15-2,ny-1]);
Form2.Edit16.Text:=FloatToStr(Y[e16-2,ny-1]);
Form2.Edit17.Text:=FloatToStr(Y[e17-2,ny-1]);
Form2.Edit18.Text:=FloatToStr(Y[e18-2,ny-1]);
end;
end.
1
Документ
Категория
Рефераты
Просмотров
44
Размер файла
505 Кб
Теги
курсовой
1/--страниц
Пожаловаться на содержимое документа