close

Вход

Забыли?

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

?

Курсовая работа МАРЕС 18 (2)

код для вставкиСкачать
Содержание
Введение.............................................................................. 4
1 Проблема анализа нелинейных электронных схем.........................5
2 Описание используемого метода...............................................6
3 Описание программы.............................................................14
4 Решение контрольной задачи...................................................20
Заключение.......................................................................... 22
Список литературы..................................................................23
Введение
В настоящее время широко используется математическое моделирование при анализе, расчете и проектировании электронных схем. Все это объясняется усложнением современных электронных устройств, приводящее к невозможности применения традиционных методов. Моделирование упрощает разработку устройств, позволяя инженеру проанализировать поведение модели на различные изменения, которые он сам задает. На основании полученных данных инженер получает "полную картину" о разрабатываемом устройстве. Математическое моделирование - это использование вместо реального объекта его математической модели. В свою очередь математическая модель по существу является количественным описанием объекта. Это описание отличается строгим математическим характером. Инструментом моделирования является ЭВМ, современный уровень развития которых позволяет уменьшить сроки проектирования.
Глубокая изученность процессов в электронных приборах и схемах и наличие квалифицированных специалистов приводит к более широкому применению математического моделирования.
Математическое моделирование резко увеличивает эффективность труда, и его применение необходимо в практике любого современного высококвалифицированного специалиста в области электроники.
1. Проблема анализа нелинейных электронных схем
Практически все анализируемые схемы являются нелинейными. Поэтому изучение методов анализа нелинейных схем очень важно для будущих специалистов.
Анализ нелинейной схемы постоянного тока является сложной вычислительной задачей, так как анализируемая схема может иметь несколько режимов работы. В начале рассматривается задача определения начального режима работы электронной схемы, соответствующего подключению источников питания и предполагающего отсутствие переменных сигналов подаваемых на схему. При этом предполагается, что после подключения источников питания все переходные процессы уже закончились.
Задача анализа нелинейной схемы сводится к многократному анализу линейных схем постоянного тока. Для определения режима работы линейной схемы используется узловой анализ. Анализ каждой линейной схемы соответствует одной итерации. На первом этапе необходимо задавать начальные значения, которые нужны для первой линеаризации нелинейной схемы. После анализа линейной схемы полученные значения используются для линеаризации нелинейной схемы. Важной задачей является обеспечение устойчивости используемого алгоритма вычисления. Поэтому после анализа каждой линейной схемы необходимо проверять метод на сходимость.
Таким образом, при анализе нелинейной схемы необходимо учитывать, что она может иметь несколько режимов работы, а также неустойчивость используемого алгоритма вычисления.
2. Описание используемого метода
Так как анализ нелинейной схемы сводится к анализу линейных схем, то необходимо рассмотреть методы анализа линейных схем, а затем перейти к более сложному анализу нелинейных.
Как было отмечено выше, для анализа линейных схем испольуется метод узловых потенциалов.
Обычно принимают условие, что обобщённая ветвь состоит или из двух или из трёх элементов. Ниже используем более общую точку зрения, согласно которой в обобщённой ветви три элемента.
Рис. 1. Обобщённая ветвь.
Здесь IИС - ток независимого источника тока, UИС - напряжение независимого источника напряжения.
Ромбиком обозначен элемент, который может быть или резистором, в этом случае UX  U, или источником тока, управляемым напряжением UX. Исходим из условия, что управляющее напряжение UX обязательно является напряжением на резисторе, а не на другом управляющем источнике. Легко заметить, что Управляемые источники других видов легко преобразуются в источники тока, управляемые напряжением.
Пусть в схеме имеется K узлов (опорный - K - й узел) и L обобщённых ветвей. Используем столбцы напряжений и токов, которые обозначают теми же буквами, что и скалярные величины.
, ,
, , , , .
Очевидно, что и для столбцов можно записать:
Можно заметить, что для описанных выше схем имеет место следующее соотношение:
,
где YВ - матрица проводимостей ветвей, которая является квадратной и имеет порядок L. Очевидно, что если в схеме имеются только резисторы (управляемых источников нет), то эта матрица является диагональной, причём каждый элемент главной диагонали является проводимостью соответствующего резистора. Если имеются управляемые источники, то матрица YВ не диагональная.
В соответствии с первым законом Кирхгофа (мы рассматриваем обобщённую ветвь как единое целое). Получаем:
Сделаем обозначения:
Матрица YУЗ называется матрицей узловых проводимостей, столбец 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ИС - АУВ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УЗ.
Прямое формирование позволяет резко сократить вычислительные затраты.
Рассмотрим узловой анализ нелинейных схем постоянного тока.
Обобщенная ветвь показана на рис. 2. Основное отличие этой ветви от ранее рассмотренной в том, что теперь У это не проводимость, а функция, описывающая зависимость тока I от напряжения Ux. Принимаем условие, что Ux напряжение на некотором резисторе.Теперь ромб характеризуется некоторой функцией Ux - это напряжение обязательно на резисторе, возможно нелинейном.
Рис. 2. Обобщённая ветвь.
Рассмотрим анализ нелинейных электронных схем постоянного тока без формирования системы нелинейных уравнений, на основе дискретных моделей ассоциированных с методом Ньютона-Рафсона.
Ниже рассматриваем подход к моделированию нелинейных схем широко используемый в современных программных системах схемотехнического моделирования (OrCAD 9.1, MicroCAP VI, PSpice). Именно этот подход настоятельно рекомендуется использовать при программировании микропроцессорных систем управления, осуществляющегося сложными нелинейными объектами.
Изобразим графически зависимость тока im от напряжения Un.
Касательная имеет наклон при .Показано, что если нелинейный элемент электронных схем линеаризовать в соответствии с изложенным, а затем выполнить анализ полученной линейной электронной схемы постоянного тока, то вычисленные при этом узловые напряжения будут в точности равны узловым напряжениям, рассчитанным по классическому методу Ньютона. После линеаризации каждая обобщенная ветвь приобретает следующий вид: Легко заметить, что , отсюда .
Таким образом для того, чтобы вычислить очередную итерацию столбца узловых напряжений, т.е. выполнить расчет, соответствующий первому шагу метода Ньютона, необходимо использовать ранее вычисленное значение столбца узловых напряжений, осуществляющее линеаризацию каждого нелинейного элемента, т.е. для каждой нелинейной обобщенной ветви получить эквивалентную схему называемую дискретной моделью нелинейной обобщенной ветви, а затем выполнить анализ полученной линейной схемы.
Полученный в результате анализа столбец узловых напряжений является очередной итерацией. Затем необходимо повторить все преобразования и вычисления.
Важно учитывать, что у схем может быть несколько режимов работы. Для определения других начальных режимов работы ( возможно, не существующих) рекомендуется выполнить расчет при других режимах работы. Именно поэтому современные программные средства предоставляют пользователю выбирать начальные условия.
Можно доказать, что если для заданного столбца выполнить линеаризацию каждого нелинейного элемента и заменить его дискретной моделью, а затем осуществить анализ полученной линейной схемы постоянного тока, то найденное значение узловых потенциалов будут в точности (если не учитывать погрешность округления) равны столбцу определяемому по методу Ньютона-Рафсона.
Таким образом, вместо выполнения очередной итерации по методу Ньютона-Рафсона необходимо линеаризовать каждый нелинейный элемент и проанализировать полученную линейную схему.
3. Описание программы
Программа, реализующая используемый алгоритм, написана на языке программирования Turbo - Pascal 7.0.
Program MARES_18;
uses crt;
const
Is=5.31E-12;ft=0.026;Uc=0;Rz=10;Rf=8.1;Uzen=300;
adelta=0.01;odelta=0.00001;{Is-ток насыщения ISO,ft-температурный потенциал (при 300K),
Uzen-Напряжение Зеннера}
Label iteracia,m1,m,m3;
type
mas=array[1..20,1..20] of real;
mas1=array[1..20,1..1] of real;
mas2=array[1..20,1..20] of integer;
UprSourse= record
vetka:integer;
koef:real;
end;
mas3=array[1..20] of UprSourse;
var
i,j,j1,i1,usel,betb,counter,outusel,inusel,vibor:integer;
value,Ud,Id,q,Ied,max,max1,max2,Pogr:real;
ex:Char;
Yyz,Yb:mas;
V,Uyzp,Iyz,Uyz,dUyz,SourceU,SourceUb,SourceI,SourceIb,W,Uob,Uv,Iv:mas1;
At:mas2;
USI:mas3;
S:array[1..20,1..2] of integer;{Матрица номеров узлов}
Swap:array[1..20,1..21] of real;
Swap1:array[1..21,1..1] of real;
Procedure Obnul;{Программа обнуления матриц}
Begin
i:=1;
for i:=1 to 20 do
begin
Iyz[i,1]:=0;
Swap1[i,1]:=0;
dUyz[i,1]:=0;
Iv[i,1]:=0;
Uob[i,1]:=0;
for j:=1 to 20 do At[i,j]:=0
end;
End;
Procedure Source (var count:integer);{Подрограмма независимого источника}
Begin
write('Введите Uuc: ');
read(value);
SourceU[count,1]:=value;
SourceUb[count,1]:=value;
write('Введтите Iuc: ');
read(value);
SourceI[count,1]:=value;
SourceIb[count,1]:=value;
End;
Procedure Resistor (var count:integer);{ввод значениярезистора}
Label m2;
Begin
outusel:=S[count,1];
inusel:=S[count,2];
m2:clrscr;
write('Введите значение: ');
read(value);
if value>0 then W[count,1]:=value
else goto m2;
End;
Procedure USourse( var count:integer);{ввод параметров зависимого источника}
begin
clrscr;
write('Введите ветвь, в которой находится управляющий резистор: ');
read(USI[count].vetka);
write('Введите коэффициент(См): ');
read(USI[count].koef);
end;
Procedure Diod (var count:integer);{обработка параметров диода и изменение в соответствии с этими вычислениями матриц Yуз и Iуз}
Begin
outusel:=S[count,1];
inusel:=S[count,2];
for i:=1 to betb do SourceU[i,1]:=SourceUb[i,1];
Ud:=Uyzp[outusel,1]-Uyzp[inusel,1]+SourceU[count,1];
if (Ud<=-Uzen) then
begin
Id:=-Is+(Ud+Uzen)/Rz;
q:=1/Rz
end;
if (Ud>-Uzen) and (Ud<Uc) then
begin
if (Ud<0) and (abs(Ud)>4) then
begin
Id:=-Is;
q:=0
end
else
begin
Id:=Is*(exp(Ud/ft)-1);
q:=(Is/ft)*exp(Ud/ft);
end;
end;
if Ud>=Uc then
begin
Id:=Is*(Exp(Uc/ft)-1)+(Ud-Uc)/Rf;
q:=1/Rf;
end;
Yb[count,count]:=q;
Ied:=Id-q*Ud; for i:=1 to betb do SourceI[i,1]:=SourceIb[i,1];
SourceI[count,1]:=SourceI[count,1]-Ied;
Yyz[outusel,outusel]:=Yyz[outusel,outusel]+q;
Yyz[outusel,inusel]:=Yyz[outusel,inusel]-q;
Yyz[inusel,inusel]:=Yyz[inusel,inusel]+q;
Yyz[inusel,outusel]:=Yyz[inusel,outusel]-q;
Iyz[outusel,1]:=Iyz[outusel,1]+SourceI[count,1]-SourceU[count,1]*q;
Iyz[inusel,1]:=Iyz[inusel,1]-SourceI[count,1]+SourceU[count,1]*q;
End;
Procedure Resistor1 (var count:integer);{ изменение в соответствии очередным транзистором матриц Yуз и Iуз }
Begin
value:=W[count,1];
outusel:=S[count,1];
inusel:=S[count,2];
Yb[count,count]:=1/value;
for i:=1 to betb do SourceI[i,1]:=SourceIb[i,1];
Yyz[outusel,outusel]:=Yyz[outusel,outusel]+1/value;
Yyz[outusel,inusel]:=Yyz[outusel,inusel]-1/value;
Yyz[inusel,inusel]:=Yyz[inusel,inusel]+1/value;
Yyz[inusel,outusel]:=Yyz[inusel,outusel]-1/value;
Iyz[outusel,1]:=Iyz[outusel,1]+SourceI[count,1]-SourceU[count,1]/value;
Iyz[inusel,1]:=Iyz[inusel,1]-SourceI[count,1]+SourceU[count,1]/value;
End;
Procedure USourse1 (var count:integer);{ изменение в соответствии очередным зависимым источником матриц Yуз и Iуз }
var
outuselv,inuselv:integer;
begin
value:=USI[count].koef;
outusel:=S[count,1];
inusel:=S[count,2];
outuselv:=S[USI[count].vetka,1];
inuselv:=S[USI[count].vetka,2];
Yb[USI[count].vetka,count]:=1/value;
Yyz[outusel,outuselv]:=Yyz[outusel,outuselv]+1/value;
Yyz[outusel,inuselv]:=Yyz[outusel,inuselv]-1/value;
Yyz[inusel,inuselv]:=Yyz[inusel,inuselv]+1/value;
Yyz[inusel,outuselv]:=Yyz[inusel,outuselv]-1/value;
end;
Procedure Analys;{решение системы}
Begin
for i:=1 to usel do
for j:=1 to usel do
Swap[i,j]:=Yyz[i,j];
for i:=1 to usel do
Swap[i,usel+1]:=Iyz[i,1];
{Выбор ведущего элемента по столбцу}
for i:=1 to usel do
begin
i1:=i;
max:=Swap [i, i];
for j:=i to usel do
if abs (Swap [j,i])>abs (max) then
begin
max:=Swap [j,i];
i1:=j
end;
if i<>i1 then
for j1:=1 to usel+1 do
begin
Swap1 [j1,1]:=Swap [j1,i];
Swap [j1,i]:=Swap [i1,j1];
Swap [i1,j1]:=Swap1 [j1,1];
end;
end;
{Прямой ход}
for i:=1 to usel do
begin
max:=Swap[i,i];
for j:=1 to usel+1 do
Swap[i,j]:=Swap[i,j]/max;
for i1:=i+1 to usel do
begin
max:=Swap[i1,i];
for j1:=1 to usel+1 do
Swap[i1,j1]:=Swap[i1,j1]-max*Swap[i,j1]
end;
end;
{Обратный ход}
for i:=usel downto 1 do
begin
Uyz[i,1]:=Swap[i,usel+1];
for j:=usel downto i+1 do
Uyz[i,1]:=Uyz[i,1]-Swap[i,j]*Uyz[j,1]
end;
End;
{основная программа}
BEGIN
clrscr;
Obnul;{П.п обнуления матриц}
gotoxy(8,9);
write('Математическое моделирование нелинейных электрических схем постоянного ');
gotoxy(22,11);
write('тока с управляемыми источниками');
readkey;
m1: clrscr;
{ввод данных}
writeln('Описание схемы');
write('Введите количество узлов(max=20) : ');
read(usel);
usel:=usel-1;
write(' количество ветвей (max=20): ');
read(betb);
if (usel>20) or (betb>20) or (usel<=0) then
begin
clrscr;
gotoxy(25,10);
writeln('Ошибка в исходных данных.Введите снова ');
readkey;
goto m1
end;
counter:=1;
Repeat
clrscr;
writeln('Рассмотрим -',counter,'- ветвь.');
write('Из какого узла выходит? : ');
read(outusel);
write('В какой узел входит? : ');
read(inusel);
S[counter,1]:=outusel;
S[counter,2]:=inusel;
At[counter,outusel]:=1;
At[counter,inusel]:=-1;
Source (counter);{П/П независимых источников}
clrscr;
writeln('Рассматривается -',counter,'- ветвь.');
write('Выберите элемент:спротивление/диод/ИТУН (1/2/3): ');
read(vibor);
{заполнение Yуз и Iуз}
if vibor=2 then V[counter,1]:=vibor;
if vibor=1 then
begin
V[counter,1]:=vibor;
Resistor (counter);
end;
if vibor=3 then
begin
V[counter,1]:=vibor;
USourse(counter);
end;
counter:=counter+1;
Until counter=betb+1;
clrscr;
writeln('Ввод начальных значений');
counter:=1;
for counter:=1 to usel do
begin
write('Введите Uyz[',counter,',1]: ');
read(value);
Uyzp[counter,1]:=value;
clrscr;
end;
{заполнение Yуз и Iуз}
iteracia: counter:=1;
Repeat
if V[counter,1]=2 then Diod (counter);
if V[counter,1]=1 then Resistor1 (counter);
if V[counter,1]=3 then USourse1 (counter);
counter:=counter+1;
Until counter=betb+1;
Analys;
{Проверка сходимости}
for i:=1 to usel do
dUyz[i,1]:=Uyzp[i,1]-Uyz[i,1];
max1:=dUyz[1,1];
for i:=2 to usel do
if abs(dUyz[i,1])>abs(max1) then max1:=abs(dUyz[i,1]);
max2:=Uyz[1,1];
for i:=2 to usel do
if abs(Uyz[i,1])>abs(max2) then max2:=abs(Uyz[i,1]);
Pogr:=odelta*max2+adelta;
if max1>Pogr then
begin
for i:=1 to usel do
Uyzp[i,1]:=Uyz[i,1];
Obnul;
goto iteracia
end;
{Получение Uob=At*Uyz}
for i:=1 to betb do
for j1:=1 to usel do
Uob[i,1]:=Uob[i,1]+At[i,j1]*Uyz[j1,1];
{Столбец напряжений}
for i:=1 to betb do
Uv[i,1]:=Uob[i,1]+SourceU[i,1];
{Столбец токов}
for i:=1 to betb do
for j1:=1 to betb do
Iv[i,1]:=Iv[i,1]+Yb[i,j1]*Uv[j1,1];
{вывод результатов}
clrscr;
writeln('Матрица узловых проводимостей. Yyz: ');
for i:=1 to usel do
begin
gotoXY (2+i*10, 2);
write (i,'узел : ');
gotoXY (2, i*2+1);
write (i,' узел: ');
for j:=1 to usel do
begin
gotoXY (11*j, WhereY);
write (Yyz [i,j]:8:3,' ');
end;
writeln;
end;
readkey;
writeln ('Столбец напряжений схемы:');
for i:=1 to betb do
writeln (i, ' ветвь: ', Uv[i,1]:8:8);
readkey;
writeln ('Столбец токов схемы:');
for i:=1 to betb do
writeln (i, ' ветвь: ', Iv[i,1]:8:8);
readkey;
END.
4 Решение контрольной задачи
Электронная схема контрольной задачи:
Рис. 3 Электронная схема
Описание схемы
Введите количество узлов(max=20) : 3
количество ветвей (max=20): 3
Рассмотрим -1- ветвь.
Из какого узла выходит? : 1
В какой узел входит? : 2
Введите Uuc: 5
Введтите Iuc: 0
Рассматривается -1- ветвь.
Выберите элемент:спротивление/диод/ИТУН (1/2/3): 1
Введите значение: 1
Рассмотрим -2- ветвь.
Из какого узла выходит? : 2
В какой узел входит? : 3
Введите Uuc: 0
Введтите Iuc: 0
Рассматривается -2- ветвь.
Выберите элемент:спротивление/диод/ИТУН (1/2/3): 2
Рассмотрим -3- ветвь.
Из какого узла выходит? : 3
В какой узел входит? : 1
Введите Uuc: 0
Введтите Iuc: 0
Рассматривается -3- ветвь.
Выберите элемент:спротивление/диод/ИТУН (1/2/3): 1
Введите значение: 1000
Ввод начальных значений
Введите Uyz[1,1]: 0.5
Введите Uyz[2,1]: 0.7
Вывод результатов:
Матрица узловых проводимостей. Yyz:
1узел : 2узел :
1 узел: 2.002 -2.000
2 узел: -2.000 2.247
Столбец напряжений схемы:
1 ветвь: 5.00000000
2 ветвь: 0.00000000
3 ветвь: 0.00000000
Столбец токов схемы:
1 ветвь: 5.00000000
2 ветвь: 0.00000000
3 ветвь: 0.00000000
(токи указаны в мА).
Заключение
В заключении я хотел бы отметить, что анализ нелинейных схем не ограничивается только линеаризацией, необходимо обеспечивать сходимость метода. Данная программа рассчитана на большее, чем два, число нелинейных элементов, но при трех нелинейных элементах уже сложнее обеспечить сходимость одним лишь изменением начальных условий, необходимо применять более совершенные методы для обеспечения сходимости. Однако для понимания и освоения анализа нелинейных электронных схем постоянного тока программа позволяет рассчитывать несложные нелинейные схемы, имеющие малое число нелинейных элементов. Программу можно модернизировать и добавить другие нелинейные элементы, как, например, биполярные транзисторы.
Список литературы
1. Лачин В.И., Савёлов Н.С. Электроника: Учеб. пособие. - Ростов н/Д: изд-во "Феникс", 2000. - 448 с.
2. Савёлов Н.С. Курс лекций по дисциплине "Методы анализа и расчёта электронных схем". 2005.
3. Методические указания к курсовой работе по дисциплине "Математическое моделирование узлов промышленной электроники на ЭВМ" / Новочерк. гос. техн. ун - т. - Новочеркасск: НГТУ. 1995. - 23 с.
4
Документ
Категория
Рефераты
Просмотров
77
Размер файла
286 Кб
Теги
марез, работа, курсовая
1/--страниц
Пожаловаться на содержимое документа