Проектирование электрической цепи

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    134,66 kb
  • Опубликовано:
    2012-02-21
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Проектирование электрической цепи

Содержание

Введение

. Задание на курсовой проект

. Формирование математической модели

3. Поиск периодического решения

4. Параметрическая оптимизация электрической цепи

. Результаты работы программы

Список используемой литературы

Листинг программы

математика электрический цепь программа

Введение

Цель курсового проектирования состоит в приобретении навыков применения математического моделирования, методов вычислительной математики, теории оптимизации и средств вычислительной техники при анализе и проектировании электрических цепей.

1. Задание на курсовой проект

Исходные данные

(t) = E0+ECcos(2πt/T)+ESsin(2πt/T)

Значения не варьируемых параметров:

Е0=110В, ЕС=50В, ЕS=50В, R1=R2=R3=1Ом,R4=R5=100Ом, Т=0,01с,

Диапазоны варьируемых параметров:

 [10-4; 10-1](Гн), C [10-6; 10-2](Ф).

Искомая выходная переменная UR5

Метод интегрирования: трапеций

Метод оптимизации: координатного спуска

Определение Кр: непосредственный

Переменные состояния: IL, UC.

2. Формирование математической модели

Для формирования математической модели заданной электрической цепи воспользуемся методом переменных состояний.

Математическая модель представляет собой систему двух дифференциальных уравнений первого порядка с постоянными коэффициентами


где - fi(R) - функции от сопротивлений

Представим данную систему уравнений в матричной форме:


или, учитывая характер задающего напряжения:


где X(t) = [xt(t), x2(t)] = [iL(t), uC(t)] - вектор переменных состояния;

 - квадратная матрица

второго порядка постоянных коэффициентов при переменных состояния в уравнения модели;

- векторы внешнего воздействия

Выражение для определения заданной выходной переменной через переменные состояния имеет вид:

= UR5 = f1(R)*iL + f2(R)*uC

Запишем систему уравнений описываемых схему

Исходная система уравнений по законам Кирхгофа

Количество узлов: Nузл = 4

Количество ветвей: Nв = 6

Количество ветвей, содержащих только идеальные источники ЭДС: NЕ=1,

Количество ветвей, содержащих источники тока: NJ=0,

Переменными состояния являются переменные iL и uC.

По первому закону Кирхгофа

1ур= Nузл -NE -1 = 4 - 1 - 1 = 2


По второму закону Кирхгофа

2ур= Nв -Nузл +1 = 6 - 4 + 1 = 3


Компонентные соотношения для элементов схемы:


Найдем iR5

R5 = iR3 - iCC = iL - iR2

Подставим iC и получим iR5 = iR3 - iL + iR2

С другой стороны iR5 можно найти через соотношение

R4 = iR2 + iR3R5 = iR4 - iLR4 = -UR3 - UR5 = -iR3R3 - iR5R5

 (*)

В уравнении не известно iR3 - найдем его.

C = iR3 - iR5R1 = UR2 - UR3 - UC

Откуда выразим iC

=>(1)

В этом уравнении неизвестно iR2

R2 = iR3 - iR4

 (2)

подставим (2) в (1)

 (3)

подставим (3) в (*)


Обозначим  через Z1

Обозначим  через Z2


Найдем iC

C = iR3 - iR5 =


Найдем iL

L = E - UR4 - UR2 = E + UR3 + UR5 - UR2R4 = - UR3 - UR5


Обозначим функция от R перед UC как К1 и К2, а перед iL как К3 и К4. Тогда:


Где


Представим данную систему уравнений в матричной форме:

Представим математическую модель в матричной форме

,

или учитывая характер задающего напряжения:


где -вектор переменных состояния;

 - квадратная матрица второго порядка постоянных коэффициентов при переменных состояния в уравнениях модели;

- векторы внешнего воздействия.

Выражение для определения заданной выходной переменной через переменные состояния имеет вид:


. Поиск периодического решения

При реализации математических моделей электрических цепей проблема стационарных решений систем дифференциальных уравнений одна из центральных. Это объясняется тем, что стационарные решения описывают установившиеся состояния, которые для электрических цепей являются обычными состояниями функционирования.

Аналитический метод

Определение периодического решения аналитическим методом производится с помощью процедур procedure Def_An, procedure Def_An_t.

procedure Def_An_t(t:real);Y:Vector;:=Dc;_Vect_Sc(n,Y,cos(w*t));_Vect(n,D0,Y,D);:=Ds;_Vect_Sc(n,Y,sin(w*t));_Vect(n,D,Y,D);;

Непосредственный метод

Для определения периодического решения непосредственным методом применяется процедура procedure Def_Nep.

Def_nep(var X:Vector);Z1,Z2:Matrix;:Vector;[1]:=0;y[2]:=0;i:=1 to M do:=i*h;_B_t(t);_Kut_4(A,B,h,X);;_L(A,Lam,def);_Exp(n,A,TT,Z1);_Matr_Sc(n,Z1,-1);_Matr(n,Z2);_Matr(n,Z1,Z2,Z2);_Matr(Z2,Z1);_Matr_Vect(n,Z1,Y,X);;

Метод установления

Процедура procedure Ust реализует поиск периодического решения методом установления и построение временных зависимостей переменных состояния и выходной переменной в переходном режиме.

Ust(P:Vect);_A_B(P);[1]:=0;x[2]:=0;:=0;:=j+1;:=X;i:=1 to M do:=i*h;_B_t(t);_Kut_4(A,B,h,X);;:=true;i:=1 to n doabs(x[i]-x1[i])-delt*abs(x[i]+x1[i])/2>=0 then def:=false;def;;:=(GetMaxX-X0-10)/TT/j;:=120/50;:=120/200;:=-100/2;[1]:=0;x[2]:=0;;:=X0;y11:=Y01;y21:=Y02;y31:=Y03;k:=0 to j-1 doi:=1 to M do:=i*h+k*TT;_B_t(t);_Kut_4(A,B,h,X);:=X0+round(kx*t);:=Y01-round(ky1*x[1]);:=Y02-round(ky2*x[2]);:=Y03-round(ky3*U5(X));(Red);(xx1,y11,xx,y1);(xx1,y21,xx,y2);(xx1,y31,xx,y3);:=xx;y11:=y1;y21:=y2;y31:=y3;;;;;

 

4. Параметрическая оптимизация электрической цепи


Цель параметрического синтеза - определение числовых значений параметров элементов. Синтез носит название оптимизации, если определяются наилучшие в заданном смысле структуры и значения параметров. Задачу выбора оптимальной структуры называют структурной оптимизацией, а расчет оптимальных значений параметров при заданной структуре - параметрической оптимизацией.

В общем случае решение задачи параметрической оптимизации осуществляется путем перебора определенным образом выбираемых вариантов значений параметров, сравнения их между собой и выбора наилучшего варианта. Алгоритм выбора очередного варианта значений параметров носит название стратегии поиска.

Чаще всего решение задачи параметрической оптимизации проводится в несколько этапов. На первом этапе выделяют области параметров, в которых целевая функция является унимодальной, на втором - уточняют положения точек локального минимума в областях унимодальности, а затем среди точек локального минимума выбирают точку глобального минимума. При этом наиболее сложным и не поддающимся строгой алгоритмизации и формализации является первый этап. Для реализации второго этапа применяют специальные итерационные численные методы поиска экстремумов унимодальных функций.

Параметрическая оптимизация осуществляется в пространстве двух варьируемых параметров методом координатного спуска в соответствии с алгоритмом:

Koord(var Pmin:Vect; var Kpmin:real);i:byte;,PL:Vect;:boolean;i:=1 to s do[i]:=(pl[i]+pp[i])/2;:=P;i:=1 to s do[i]:=Gold(P,i);;:=true;i:=1 to s doabs(p[i]-pl[i])-delt*abs(p[i]+pl[i])/2>=0 then def:=false;def;i:=1 to s do[i]:=(p[i]+pl[i])/2;:=Kp_nep(Pmin);;

5. Результаты работы программы


Список используемой литературы

Четвергов К.В. Информатика. Часть 3. Учебное пособие для студентов специальности "Промышленная электроника" дистанционной формы обучения. - Томск: ТУСУР 1998. - 55с.

Листинг программы

kurs;Crt, Graph;N=2; E0=110;Ec=50;Es=50; L=0.0001; C=0.000001; R1=1; R2=1; R3=R2; R4=100;R5=R4;delt=0.01;TT=0.01;w=2*pi/TT;M=100;h=TT/M;s=2; Pl:array[1..s] of real=(1e-4,1e-6);:array[1..s] of real=(1e-1,1e-2); Type Matrix=array[1..N,1..N] of real;=array[1..N] of real;Vect=array[1..s] of real;A:Matrix;,Bc,Bs,B,D0,Dc,Ds,D,Lam,X,X1:Vector;:Vect;,kpmax,Z1,Z2,K1,K2,K3,K4:real;,grmd,i,j,k:integer; X0,Y01,Y02,Y03,xx,xx1,y1,y11,y2,y21,y3,y31,y4,y41,y5,y51,y6,y61:integer; kx,ky1,ky2,ky3:real;

def:boolean;

{********************Процедура сложения двух матриц A_sum=A1+A2}

Procedure Add_Matr(n:byte;A1,A2:Matrix; var A_rez:Matrix);i,j:byte;i:=1 to n doj:=1 to n do_rez[i,j]:=a1[i,j]+a2[i,j];

{******************Процедура сложения двух векторов B_sum=B1+B2} Procedure Add_Vect(n:byte;B1,B2:Vector; var B_rez:Vector);i:byte;i:=1 to n do_rez[i]:=b1[i]+b2[i];

{*******************Процедура умножения двух матриц A_rez=A1*A2} Procedure Mult_Matr_Matr(n:byte;A1,A2:Matrix; var A_rez:Matrix);i,j,k:byte;i:=1 to n doj:=1 to n do_rez[i,j]:=0;k:=1 to n do a_rez[i,j]:=a_rez[i,j]+a1[i,k]*a2[k,j];;;

{*******************Процедура умножения матрицы на вектор Y=A*X} Procedure Mult_Matr_Vect(n:byte;A:Matrix; X:Vector; var Y:Vector);

{******Процедура умножения матрицы на вещественное число A:=A*c} Procedure Mult_Matr_Sc(n:byte; var A:Matrix; Sc:real);i,j:byte;i:=1 to n doj:=1 to n do[i,j]:=Sc*a[i,j];;

{******Процедура умножения вектора на вещественное число B:=B*c} Procedure Mult_Vect_Sc(n:byte; var B:Vector; Sc:real);i:byte;i:=1 to n do b[i]:=Sc*b[i];

end;

{************* Формирование матриц А,B0,Bc,Bs математической модели }

Procedure Def_A_B(P:Vect);:=1+R1*R3/(R4*R1+R4*R3-R2*R4-R3*R2);:=R4*R1+R4*R3-R2*R4-R3*R2; K1:=r4/z2*r3/z1*r1*r3/z2-r3*r4/z2+r4/z2*r3*r5/z1-r3/z2*(r4+r3)/z1*r1/z2+(r4+r3)/z2-r5/z2*r3/(r4+r5)*1/z1; K3:=r4/z1*r1*r3/z2+r4/(r4+r5)*r5/z1+r1/z2*(r3+r4)/z1+r5/(r4+r5)*1/z1; K2:=r4/z2*r3/z1*r1/z2-r4/z2-r4/z2*r3/(r4+r5)*1/z1;:=r4/z1*r1/z2-r4/(r4+r5)*1/z1;[1,1]:=-k3/p[1];[1,2]:=k1/p[1];[2,1]:=-k4/p[2];[2,2]:=k2/p[2];[1]:=1/p[1];b0[2]:=0;[1]:=1/p[1];bc[2]:=0;[1]:=1/p[1];bs[2]:=0;;

{******Процедура формирования вектора B(t)=B0+Bc*cos(wt)+Bs*sin(wt)**}Def_B_t(t:real);[1]:=b0[1]+bc[1]*cos(w*t)+bs[1]*sin(w*t);[2]:=b0[2]+bc[2]*cos(w*t)+bs[2]*sin(w*t);

end;

{****** Функция определения выходной переменной***************}

function U5(X:Vector):real;:=-r4/(r4+r5)*r5/z1*x[1]+r4/z2*r3/(r4+r5)*r5/z1*x[2];

end;

{********Процедура вычисления обратной матрицы второго порядка }

Procedure Obr_Matr(A:Matrix; var A_obr:Matrix);det:real;:=a[1,1]*a[2,2]-a[1,2]*a[2,1];_obr[1,1]:=a[2,2]/det;_obr[1,2]:=-a[1,2]/det;_obr[2,1]:=-a[2,1]/det;_obr[2,2]:=a[1,1]/det;

end;

{********************Процедура формирования единичной матрицы E}

Procedure E_Matr(n:byte; var E:Matrix);i,j:byte;i:=1 to n doj:=1 to n do[i,j]:=0;[i,i]:=1;;;

{Процедура вычисления собственных чисел матрицы А второго порядка }

Procedure Det_L(A:Matrix; var L:Vector; var comp:boolean);p0,p1,D:real;:=-(a[1,1]+a[2,2]);:=a[1,1]*a[2,2]-a[1,2]*a[2,1];:=p1*p1-4*p0;D>=0 then:=false;[1]:=(-p1+sqrt(D))/2;[2]:=(-p1-sqrt(D))/2;

else begin:=true;[1]:=-p1/2;[2]:=sqrt(-D)/2;

end;

{**определение векторов D0,Dc,Ds для аналитического метода***} procedure Def_An;

var Z1,Z2:Matrix;,Y2:Vector;_Matr(A,Z1);_Matr_Vect(n,Z1,B0,D0);_Vect_Sc(n,D0,-1);_Matr_Matr(n,A,A,Z1);_Matr(n,Z2);_Matr_Sc(n,Z2,4*pi*pi/TT/TT);_Matr(n,Z1,Z2,Z2);_Matr(Z2,Z1);_Matr_Vect(n,A,Bc,Y1);:=Bs;_Vect_Sc(n,Y2,w);_Vect(n,Y1,Y2,Y1);_Matr_Vect(n,Z1,Y1,Dc);_Vect_Sc(n,Dc,-1);:=Bc;_Vect_Sc(n,Y1,w);_Matr_Vect(n,A,Bs,Y2);_Vect_Sc(n,Y2,-1);_Vect(n,Y1,Y2,Y1);_Matr_Vect(n,Z1,Y1,Ds);;

{**определение аналитического решения D9t)=D0+Dc*cos(wt)+Ds*sin(wt)***} procedure Def_An_t(t:real);:Vector;:=Dc;_Vect_Sc(n,Y,cos(w*t));_Vect(n,D0,Y,D);:=Ds;_Vect_Sc(n,Y,sin(w*t));_Vect(n,D,Y,D);;

{******************** Численная схема трапеции }Trapec(n:integer; A:Matrix; B:Vector; h:real; var X:Vector);Z1,Z2,Z3:Matrix;,Y2:Vector;_Matr(n,Z1);_Matr_Sc(n,Z1,2);:=A;_Matr_Sc(n,Z2,h);_Matr(n,Z1,Z2,Z3);_Matr_Vect(n,Z3,X,Y1);:=B;_Vect_Sc(n,Y2,2*h);_Vect(n,Y1,Y2,Y1);_Matr_Sc(n,Z2,-1);_Matr(n,Z1,Z2,Z3);_Matr(Z3,Z1);_Matr_Vect(n,Z1,Y1,X);

end;

{*******инициализация графического режима******** }

Procedure Init;:=VGA;:=VGAHi; {инициализация графического режима} InitGraph(grdr,grmd,'d:\bp\bgi');

X0:=15;:=150;:=300;:=450;(X0,5,X0,GetMaxY-5);(X0-5,Y01,GetMaxX-5,Y01);(X0-5,Y02,GetMaxX-5,Y02);(X0-5,Y03,GetMaxX-5,Y03);(X0+5,5,'x1');(X0+5,Y01+10,'x2');(X0+5,Y02+10,'U4');(GetMaxX-10,Y01+5,'t');(GetMaxX-10,Y02+5,'t');(GetMaxX-10,Y03+5,'t');;

{*******Вычисление нормы матрицы************************** }Norm(n:byte; A:Matrix):real;,j:byte;,sum:real;:=abs(a[1,1]);j:=1 to n do:=0;i:=1 to n do:=sum+abs(a[i,j]);sum>max then max:=sum;;:=max;;

{****************Процедура вычисления экспоненциальной матрицы } Procedure M_Exp(n:byte; A:Matrix; t:real; var Exp_M:Matrix);,s:byte;,Z2,Z3:Matrix;:real;:=Norm(n,A);:=round(ln(10*t*ss)/ln(2));_Matr(n,Z1);:=Z1;Z3:=Z2;i:=1 to s do_Matr_Matr(n,A,Z2,Z3); Mult_Matr_Sc(n,Z3,t/exp(s*ln(2))/i); Add_Matr(n,Z1,Z3,Z1);:=Z3;;i:=1 to s do_Matr_Matr(n,Z1,Z1,Z2);:=Z2;;_M:=Z1;

end;

{*Определение периодического решения непосредственным методом********} Procedure Def_nep(var X:Vector);

var Z1,Z2:Matrix;:Vector;[1]:=0;y[2]:=0;i:=1 to M do:=i*h;_B_t(t);(n,A,B,h,X);;_L(A,Lam,def);_Exp(n,A,TT,Z1);_Matr_Sc(n,Z1,-1);_Matr(n,Z2);_Matr(n,Z1,Z2,Z2);_Matr(Z2,Z1);_Matr_Vect(n,Z1,Y,X);

end;

{***********Построение графика периодического решения ****************} Procedure Per_Solve(P:Vect);

begin_A_B(P);_An;_nep(X);;:=(GetMaxX-X0-10)/TT;

ky1:=120/50;:=120/200;

ky3:=-100/2;_An_t(0);:=X0;:=Y01-round(ky1*x[1]);:=Y02-round(ky2*x[2]);:=Y01-round(ky1*d[1]);:=Y02-round(ky2*d[2]);:=Y03-round(ky3*U5(X));:=Y03-round(ky3*U5(D));i:=1 to M do:=i*h;_An_t(t);_B_t(t);(n,A,B,h,X);:=X0+round(kx*t);:=Y01-round(ky1*x[1]);:=Y02-round(ky2*x[2]);:=Y01-round(ky1*d[1]);:=Y02-round(ky2*d[2]);:=Y03-round(ky3*U5(X));:=Y03-round(ky3*U5(D));(Red);(xx1,y11,xx,y1);(xx1,y21,xx,y2);(xx1,y51,xx,y5);(Green);(xx1,y31,xx,y3);(xx1,y41,xx,y4);(xx1,y61,xx,y6); xx1:=xx;y11:=y1;y21:=y2;y31:=y3;y41:=y4;y51:=y5;y61:=y6;;;;;

{****************************Метод установления****************}Ust(P:Vect);_A_B(P);[1]:=0;x[2]:=0;:=0;:=j+1;:=X;i:=1 to M do:=i*h;_B_t(t);(n,A,B,h,X);;:=true;i:=1 to n doabs(x[i]-x1[i])-delt*abs(x[i]+x1[i])/2>=0 then def:=false; until def;;:=(GetMaxX-X0-10)/TT/j;:=120/50;:=120/200;:=-100/2;[1]:=0;x[2]:=0;;:=X0;y11:=Y01;y21:=Y02;y31:=Y03;k:=0 to j-1 doi:=1 to M do:=i*h+k*TT;_B_t(t);(n,A,B,h,X);:=X0+round(kx*t);:=Y01-round(ky1*x[1]);:=Y02-round(ky2*x[2]);:=Y03-round(ky3*U5(X));(Red);(xx1,y11,xx,y1);(xx1,y21,xx,y2);(xx1,y31,xx,y3);:=xx;y11:=y1;y21:=y2;y31:=y3;;;;;

{*Определение коэффициента пульсаций по решению непосредственным методом} function Kp_nep(P:Vect):real;Usr,Umax,Umin:real;_A_B(P);_nep(X);:=0;Umin:=U5(X);Umax:=Umin;i:=1 to M do:=i*h;_B_t(t);(n,A,B,h,X);:=Usr+U5(X);U5(X)>Umax then Umax:=U5(X);U5(X)<Umin then Umin:=U5(X); end;_nep:=(Umax-Umin)*M/Usr/2;;

{***************Метод золотого сечения }Gold(P:Vect;i:byte):real;

const g=0.618034;r,xl,xp:real;,X2:Vect;:=pp[i];xl:=pl[i];X1:=P;X2:=P;r:=g*(xp-xl);x1[i]:=xl+r;x2[i]:=xp-r;kp_nep(X1)<kp_nep(X2) then xp:=x1[i] else xl:=x2[i]abs(xp-xl)-delt*abs(xp+xl)/2<0;:=(xp+xl)/2;;

{*************** Метод координатного спуска } Procedure Koord(var Pmin:Vect; var Kpmin:real);i:byte;,PL:Vect;:boolean;i:=1 to s do[i]:=(pl[i]+pp[i])/2;:=P;i:=1 to s do[i]:=Gold(P,i);;:=true;i:=1 to s doabs(p[i]-pl[i])-delt*abs(p[i]+pl[i])/2>=0 then def:=false; until def;i:=1 to s do[i]:=(p[i]+pl[i])/2;:=Kp_nep(Pmin);;

{************************ Управляющая программа *********** };(P,kpmax);{оптимизация методом координатного спуска} Def_A_B(P);{формирование матриц А,В математической модели} Det_L(A,Lam,def);{определение собственных чисел}('Оптимальная точка:'); writeln('p[1]=',p[1],'p[2]=',p[2],'kpmax=',kpmax); writeln('Собственные числа:'); {вывод собственных чисел на экран} if not def then

begin('l[1]=',lam[1]);writeln('l[2]=',lam[2]); writeln('Постоянные времени:'); writeln('tau1=',1/abs(lam[1]));writeln('tau2',1/abs(lam[2])); end

else('l[1]=',lam[1],'+j',lam[2]);writeln('l[1]=',lam[1],'-j',lam[2]); writeln('Постоянная времени: tau=',1/abs(lam[1]));('Собственная частота: fc=',lam[2]/2/pi);;;(P);{определение периодического решения методом установления} Per_Solve(P);{определение периодического решения непосредственным методом}.

Похожие работы на - Проектирование электрической цепи

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!