close

Вход

Забыли?

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

?

Курсовой МАРЭС (2)

код для вставкиСкачать
Содержание
Введение........................................................................................ 4
1. Задача анализа линейных электронных схем переменного тока..................6
2 Описание проблемы математического моделирования линейных электронных схем переменного токаю.....................................................................7
3 Описание метода матричного формирования узловых уравнен...................8
4 Описание программы......................................................................10
5 Решение контрольной задачи.............................................................21
Заключение......................................................................................22
Список используемых источников .......................................................23
Введение
В настоящее время вполне определённо проявился исключительно сильный фактор, который всё более настоятельно требует глобального изменения подходов к изучению, анализу, и синтезу электронных устройств. Этим фактором является математическое моделирование устройств электроники. Современные системы схемотехнического моделирования (Micro-CAP 7 и его более ранние версии, Design Center и др.) существенно изменили характер и повысили эффективность инженерной деятельности при разработке таких устройств.
Математическое моделирование является наиболее эффективным способом получения самой разнообразной информации, характеризующей разрабатываемое электронное устройство.
Для создания электронного устройства, обладающего высокими технико-экономическими показателями, приходится рассматривать различные варианты его схемотехнической реализации и выполнять множество самых разнообразных расчётов. Например, может потребоваться определение токов и напряжений схемы, расчёт амплитудно-частотной характеристики, вычисление входного сопротивления, здесь огромную помощь (которая заключается в ускорении расчётов либо в обеспечении высокого качества проектирования, и т.д.) в выполнении этой рутинной работы может сыграть моделирование.
В современных условиях электронные вычислительные машины стали новым и очень важным инструментом для проектирования электронных схем. При использовании ЭВМ вместо имитации схемы путем ее макетирования разрабатывается вычислительная программа, предназначенная для моделирования и анализа схемы математическими методами. Машинный анализ является первым шагом к автоматическому проектированию электронных схем. В настоящее время программы моделирования:
электронных схем общепризнанны в качестве обязательного элемента при проектировании сложных электронных схем.
В данной курсовой работе рассматривается задача моделирования линейных электронных схем переменного тока с управляемыми источниками. Данная задача важна не только сама по себе (электронные схемы в большинстве случаев являются нелинейными), но и как та задача, к которой сводятся другие задачи анализа устройств электроники.
Анализ линейных электронных схем переменного тока является на сегодняшний день очень актуальной задачей.
1. Задача анализа линейных электронных схем переменного тока
Эта задача была и будет актуальной при расчете электронных схем. Расчет частотных характеристик нецелесообразно осуществлять без предварительной линеаризации схемы. Все современные программы без указания пользователя перед расчетом частотных характеристик осуществляют такую линеаризацию. При анализе электронных схем переменного тока как и при моделировании линейных схем постоянного тока очень широко используется узловой анализ, но теперь он осуществляется на основе комплексного (символического) метода расчета линейных схем переменного тока.
2 Описание проблемы математического моделирования линейных электронных схем переменного тока
В настоящее время математическое моделирование линейных электронных схем переменного тока с управляемыми источниками при матричном формировании узловых уравнений представляется прекрасным инструментом для исследования и анализа амплитудно-частотных характеристик различных электронных схем.
В наше время для определения режима линейной схемы переменного тока специалистами широко практикуется метод узловых потенциалов. Одна из главных причин его использования - это простота формирования узловых уравнений, а кроме того также то, что матрица узловых проводимостей является сильно разряженной. А ведь известно, что при учете разреженности приведенной матрицы резко уменьшаются вычислительные затраты, что само по себе является немаловажным достоинством метода.
В основу всех наиболее известных современных высокопрофессиональных пакетах положено именно прямое формирование, поскольку оно позволяет, во-первых, резко сократить время машинных вычислений и, во-вторых, дает возможность уйти от алгоритмов перемножения матриц при составлении матрицы узловых проводимостей.
3 Описание метода матричного формирования узловых уравнений
Изучение структуры матрицы узловых проводимостей и структуры столбца узловых токов позволило сформулировать следующий алгоритм формирования матрицы узловых проводимостей и столбца узловых токов.
Пусть перед началом матричного формирования выполнено обнуление матрицы узловых проводимостей (квадратная матрица размером (к-1)) и столбца узловых токов (n-1 элемент ).
При расчете цепей переменного тока вместо мгновенных значений токов и напряжений используют комплексные действующие значения этих величин. Резисторы и управляемые линейные источники описываются аналогично тому как для цепей постоянного тока. Но коэффициенты, характеризующие управляемые источники, могут быть комплексными. Например, источник тока управляемый током может характеризоваться комплексным коэффициентом k:
i=k*ix,
(в этом выражении i и ix - уже комплексные действующие значения токов). Конденсатор описывается или комплексным сопротивлением емкости или комплексной проводимостью .
Катушка индуктивности характеризуется комплексным сопротивлением индуктивности или комплексной проводимостью индуктивности .
Обратимся к описанию системы магнитосвязанных катушек. Обозначим через UL и iL столбцы комплексных действующих значений токов и напряжений всех индуктивностей схемы. Обозначим через столбец производных токов, а через L- матрицу индуктивности, описывающей всю систему магнитосвязанных катушек. Изложим подход, используемый в современных программных системах. Пусть в схеме имеется m катушек индуктивности, возможно, магнитосвязанных. Если для каждой катушки задано условно положительное направление токов и напряжений или, что эквивалентно указано начало, то такая система катушек однозначно описывается следующим матричным уравнением.
В начале обратимся к мгновенным значениям токов и напряжений. Тогда система катушек описывается выражением . Для комплексных действующих значений токов и напряжений получаем: UL=jωL*iL , . Таким образом, предполагается, что матрица индуктивности невырождена. ; L - матрица индуктивности порядка m.
Матрица L является симметричной для установившегося режима и синусоидального источника сигнала.
В соответствии с изложенным и невырожденностью матрицы L получаем следующее выражение, которое описывает схемы переменного тока (i=Yв*U).
Для узлового анализа, использующегося в современных программных пакетах характерно предположить о невырожденности матрицы. К примеру, программа ECAP требует, чтобы коэффициент связи двух катушек был не менее 0.999995. Если коэффициент связи равен единице, то матрица L вырожденна. Т.о., предпринято допущение о невырожденности матрицы L в схемах переменного тока, описывающегося совершено аналогично схеме постоянного тока.
Для решения системы узловых уравнений с комплексной матрицей и комплексным столбцом правых частей, используется LU факторизация по алгоритму Краута или Дулитла. Обратимся к алгоритму формирования столбца узловых токов, использующих прежнее обозначение:
- Все элементы столбца /уз приравнивают к нулю.
- Поочередно обращаются к обобщенным ветвям схемы. При обращении к очередной обобщенной ветви в /уд изменяют определенные его элементы.
Воспользуемся ранее принятыми обозначениями столбцов и ветвей. 4 Описание программы
Программа курсового проекта для математического моделирования линейных электронных схем переменного тока с управляемыми источниками написана на языке Turbo Pacsal 7.0. Чтобы обеспечить удобство работы с комплексными числами, которые необходимы чтобы обеспечить задание проводимостей конденсаторов и катушек индуктивности, а кроме того чтобы обеспечить задание источников переменного тока или напряжения, создан и применяется пользовательский модуль CPLX.TPU .
В главном теле программы реализуется ввод информации об исходной схеме. Процедура Ellnput используется для формирования матрицы проводимостей. Процедура Formluz используется для формирования столбца узловых токов.
После реализуется вычисление столбец узловых напряжений Uuz, происходит решение системы уравнений Yuz*Uuz=Iuz с выбором ведущего элемента по столбцу.
Столбец узловых напряжений формируется в процедуре ACForm, а при помощи процедуры ACPlot реализуется вывод АЧХ на экран дисплея в виде таблицы с использованием логарифмического масштаба.
Листинг программы приведен ниже:
uses crt, cpl;
const limit=15;
var Yuz:array[1..limit,1..limit]of complex;
luz,Uuz,koef,indepU,indepi,Siemens,helpcpi,divvv:array
[1..limit]of complex;
n,k,fr,numvet:integer;
a:array[1..limit,1..limit] of integer;
values:array[1..200] of complex;
currentelm,vetc: array[1..limit]of integer;
currentvalue: array[1..limit]of real;
managedsourse: array[1..limit]of complex;
manline: array[1..2,l..limit]of integer;
napr,tok,temp3: complex;
i,j,j1,p,vetp,kmg,Img,number,currentnumber,:integer;
kO,kl:l..5;
r,indue,cap,arnpl,phase,piphase,num,amplmod,cur:real;
wmin,wmax, final,step: longint;
procedure elinput(f:real) ;
var y_cpl:complex; io,jo:integer;
j,im,jm,km,1m:integer;
w:real;
begin{elinput} w:=2*Pi*f;
for j:=1 to k do begin
if a[j,i]=l then im:=j;
if a[j,i]=-l then jm:=j;
end;
if currentelm[i]=1 then begin
km:=im;
1m:=jm;
y_cpl.re:=l/currentvalue[i] ;
y_cpl. im: =0;
Siemens[i]:=y_cpl;
end;
if currentelm[i]=2 then begin
km:=im;
1m:=jm;
y_cpl.re:=0;
y_cpl.im:=-l/(w*currentvalue[i]);
Siemens[i]:=y_cpl;
end;
if currentelm[i]=3 then begin
km:=im;
1m:=jm;
y_cpl.re:=0;
y_cpl.im:=w*currentvalue[i]/1000000;
Siemens[i]:=y_cpl;
end;
if currentelm[i]=4 then begin
km:=manline[1,i];
lm:=manline[2,i] ;
y_cpl:=koef[i] ;
Siemens[i]:=y_cpl;
end;
if currente1m[i]=5 then begin
km:=im;
1m:=jm;
resetcpl(y cpl);
siemens[i]:=y_cpl;
end;
addcpl (Yuz [im, km] , y_cpl, Yuz [im, km] ) addcpl(Yuz[jm,1m],y_cpl,Yuz[jm,1m]) subcpl(Yuz[im,1m],y_cpl,Yuz[im,1m]) subcpl(Yuz[jm,km],y_cpl,Yuz[jm,km]) end;{elinput}
procedure incarray;
var i,j:integer;
begin{incarray} cirscr;
for j : =1 to n do begin
write ('Введите начальный узел' , j , '-Й ВЕТВИ: ') readin(i);
a[i,j]:=1;
write (' Введите конечный узел ', j , ' -Й ВЕТВИ:');
readin (i) ;
a[i,j]:=-!;
end;
end;{incarray}
procedure formiuz;
var j,im,jm,p:integer;
proizv,pos:complex;
begin{formiuz}
for i:=l to n do begin
for j:=1 to k do begin
if a[j,i]=l then im:=j;
if atj,!]^-! then jm:=j;
end;
if currentelm[i]<>4 then p: =i;
if currentelm[i]=4 then p:=vetc[i] ;
mulcpl(Siemens[i],indepU[p],proizv) ;
subcpl(indepi[i],proizv,pos) ;
addcpl(luz[im],pos,luz[im]) ;
subcpl(luz[jm],pos,luz[jm]) ;
end;
end;{formiuz}
procedure acform(uzel:complex;num:integer) ;
var g,h:integer;
begin{acform}
values[num]:=uzel;
end;{acform}
procedure acplot;
var driver,mode,q,w:integer;
forig,logarifm:real;
forplot: array[1..200]of real;
begin
for q:=l to final do begin
divcpl(values[q],temp3,values[q]);
abscpl(values[q],forig) ;
logarifm: =ln (forig)/In (10) ; forplot [q] : =logarifm*20; end;
cirscr;
for w:=l to final do begin
write (' частота: ' ) ;write(wmin+w*step-step:3,' ');
write ( ' db v(',number,'): ') ;
writein(forplot[w]:3:3); end;
readkey;
end;
procedure outy;
var io,jo:integer;
begin
for io:=l to k do begin
for jo:=l to k do begin
outcpl(Yuz[io,jo] ) ;
write ( ' ' ) ;
end;
writein end;
readkey end;
begin{main}
textbackground(black) ;
textcolor(green) ;
cirscr;
writein ( 'ПРОВЕДЕНИЕ РАСЧЕТА ЦЕПЕЙ ПЕРЕМЕННОГО TOKA');
writein;writein;
textcolor(black) ;
writein ('нажмите клавишу');
readkey;
textcolor(red) ;
textbackground(black) ;
cirscr;
write ('Введите кол-во ветвей: ');
readin(n) ;
write ('Введите кол-во узлов: ');
readin(k) ;
incarray;
cirscr;
(************* *********************** }
for i:=l to limit do
begin
for j:=l to limit do
resetcpl(Yuz[i,j]) ;
resetcpl(Uuz[j]);
resetcpl(koef[j]);
resetcpl(Siemens[j]);
currentelm[j]:=0;
currentvalue[j]:=0;
end;
{*********************************}
write ('Ввод частоты в Гц : ');
readin(fr) ;
for i:=l to n do begin
cirscr;
writein ('Выберете сопротивление',i,'-й ветви') ;writeln;
writein('1- активное') ;
writein('2- индуктивность') ;
writein('3- ёмкость') ;
writein('4- бесконечное');
readln(kO); writein;
{******** ******************}
if k0=l then begin
currentelm[i]:=k0;
write ( ' Сопротивление (OM) : ' ) ;
readin(r) ;
currentvalue[i]:=r;
end;
{************* **************}
if k0=2 then begin
currentelm[i]:=k0;
write ('Индуктивность катушки (FH) : ');
readin(indue);
currentvalue[i]:=induc;
end;
{****************************)
if k0=3 then begin
current elm[i]:=k0;
write('EMKOCTЬ KOHД (MKФ) : ');
readin(cap) ;
currentvalue[i]:=cap;
end;
if k0=5 then begin
currentelm[i]:=k0;
currentvalue[i]:=0;
end;
for j:=1 to k do begin
if a[j,vetc[i]]=1 then kmg:=j;
if a[j,vetc[i]]=-1 then lmg:=j;
end;
manline[l,i]:=kmg;
manline[2,i]:=lmg;
end;
elinput(fr) ;
end; { } cirscr;
writein ('Матрица проводимостей:');writeln;
outy;
for i:=l to k do begin
resetcpl(indepU[i]) ;
resetcpl(indepi[i]) ;
resetcpl(luz [i]) ;
end;
cirscr;
for i:=l to n do begin
writein ( ' Источник напряжения B ',i,'-й ветви: ');
writein('1 - Ecть') ;
writeln('2 - Heт') ;
readin(kl) ;
if kl=2 then esetcpl(indepU(i]);
if kl=l then begin
write ('Амплитуда (B) : ');
readin(anpl) ;
write (' <I>a3a (a flOJinx Pi): Pi*');
readin(phase) ;
piphase:=pi*phase;
exptoalg(napr,ampi,piphase) ;
equcpl(indepU[i],napr) ;
end;
end;
cirscr;
for i:=l to n do begin
writein ('Источник тока B ',i,'-й ветви: ');
writein('1 - EcTb');
writein('2 - Heт') ;
readin(kl);
if kl=2 then resetcpl(indepi[i]);
if kl=l then begin
write ( 'Амплитуда (A) : ' ) ;
readin(arnpl) ;
write ('(t>a3a (B flOJiax Pi): Pi*');
readin(phase) ;
piphase:=pi*phase;
exptoalg(tok,arnpl,piphase) ;
equcpl(indepi[i],tok) ;
end;
end;
formluz;
for i:=l to k do begin
outcpl(luz[i] ) ;
writein;
end;
readkey;
cirscr;
for i:=l to k do equcpl (Yuz [i, k] , luz [i] ) ;
for i:=l to k-1 do begin
abscpl(Yuz[i,i],max) ;
for j:=i+l to k-1 do begin
abscpl(Yuz[j,i],tempi) ;
if templ>max then begin
max:=templ;
kl: =j ;
end;
end;
if kloi then begin
for j:=1 to k do begin
helpcpl[j]:=Yuz[kl,j];
Yuz[kl,j]:=Yuz[i,j] ;
Yuz[i,j]:=helpcpl[i] ;
end;
numeric[i]:=kl;
numeric [kl] :s=i end;
for j:=k downto i do begin
divcpl(Yuz[i,j],Yuz[i,i],divvv[j]) ;
Yuz[i,j]:=divvv[j] ;
end;
for j:=i+l to k-1 do begin
for jl:=k downto i do
begin
mulcpl(Yuz[j,i],Yuz[i,j1],helpcpl[jl]);
subcpl(Yuz[j,jl],helpcpl[jl],Yuz[j,jl]) ;
end; end; end;
Uuz[k-l]:=Yuz[k-l,k] ;
f
luz[i]:=Yuz[i,k] ;
for j:=k-l downto i+1 do
begin
{Iuz[i]:=Iuz[i]-Yuz[i,j]*Uuz[j]} mulcpl(Yuz[i,j],Uuz[j],temp3 ;
subcpl(luz[i],temp3,luz[i]) ;
end;
Uuz[i]:=Iuz[i] ;
end;
cirscr;
writein ( ' ,вывод1: ' ) ;
write (i,'-n ysen: ');
outcpl(Uuz[i]) ;
abscpl(Uuz[i],amplmod) ;
write (' вывод2: ' , amplmod: 3 : 3) ;
readkey;
cirscr;
writeln('проводим анализ по переменному току '); writein;
writein(Задание источника: ');
writein;
write('ветвь, B KOTOPOM OH находится: ');
if jonumvet then
resetcpl(indepU[j]);
if j=numvet then
temp3:=indepU[j] ;
end;
cirscr;
writeln('проводим анализ по переменному току );writeln;
writein;
writein(Fмин');
write (' Fмах: ');
readin(wmin);
readin(wmax) ;
write('BBOfl mara: ');
readin(step) ;
write (Номер узла, где снимается АЧХ : ');
readin(number) ;
final:=((wmax-wmin) div step)+l;
currentnumber:=1 ;
cur:=wmin;
while cur <= wmax do begin
for i:=l to k do
begin
for j:=1 to k do
resetcpl(Yuz[i,j]) ;
end;
for i:==l to n do el
input(cur) ;
for i:=l to n do resetcpl(luz[i]) ;
for i:=l to k do equcpl(Yuz[i,k],luz [i]);
{**************} for i:=l to k-1 do
begin abscpl(Yuz[i,i],max) ;
for j:=i+l to k-1 do begin
abscpl(Yuz[j,i],tempi) ;
if templ>max then begin
max:=templ;
kl: =j ;
end;
end;
if kloi then begin
for j:=1 to do begin
helpcpl[j]:=Yuz[kl,j];
Yuz[kl,j]:=Yuz[i,j] ;
Yuz[i,j]:=helpcpl[i] ;
end;
numeric[i]:=kl;
numeric[kl]:=i end;
for j;=k downto i do begin
divcpl(Yuz[i,j],Yuz[i,i],divvv[j]);
Yuz[i,j]:=divvv[j] ;
end;
formiuz;
for j:=i+l to k-1 do begin
for jl:=k downto i do begin
mulcpl(Yuz[j,i],Yuz[i,jl],helpcpl[jl]) ;
subcpl(Yuz[j,jl],helpcpl[jl],Yuz[j,jl]);
end; end; end;
;
Uuz[k-l]:=Yuz[k-l,k] ;
for i:=k-2 downto 1 do
begin
Iuz[i]:=Yuz[i,k] ;
for j:=k-l downto i+1 do begin
{Iuz[i]:=Iuz[i]-Yuz[i,j]*Uuz[j]} mulcpl(Yuz[i,j],Uuz[j],temp3) ;
subcpl(luz[i],temp3,luz[i]) ;
end;
Uuz[i]:=Iuz[i] ;
end;
acform(Uuz[number],currentnumber) ;
inc(currentnumber);
cur:=cur+step;
end;
{=============================}
acplot;
end.{main}
5 Решение контрольной задачи
В качестве контрольной задачи возьмем схему:
Его АЧХ
Результаты, полученные программой:
Заключение
В данном курсовом проекте мы реализовали математическое моделирование линейных электронных схем переменного тока с управляемыми источниками при матричном формировании узловых уравнений. По своей структуре алгоритм использованный в программе аналогичен алгоритмам, что используются в современных высокопрофессиональных программах. Быстродействие программы является достаточно высоким, что обеспечивается тем, что матрица узловых проводимостей является разреженной.
Список используемых источников
1 Савелов Н.С. Курс лекций. 2002г.
2 Чуа Л.О., Лин Пен Мин, "Машинный анализ электронных схем", М.:
Энергоатомиздат, 1980г.
3 Нерретер В., "Расчет электрических цепей на персональной ЭВМ", М., 1991г.
1
3
Документ
Категория
Рефераты
Просмотров
83
Размер файла
466 Кб
Теги
марэс, курсовой
1/--страниц
Пожаловаться на содержимое документа