Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая работа / КУРСАЧ (3).doc
Скачиваний:
32
Добавлен:
22.02.2014
Размер:
282.62 Кб
Скачать

Заключение

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

Cписок литературы

  1. Автоматическое регулирование двигателей летательных аппаратов. Труды ЦИАМ, № 761, вып. 17, 1977 (стр. 144-154).

  2. Макаров И. И., Менский Б. М. Линейные автоматические системы. М., Машиностроение, 1982 – 504 с.

  3. Смит Дж. М. Математическое и цифровое моделирование для инженеров и исследователей. М., Машиностроение, 1980.

Приложение Листинг программ

********Программа идентификации САУ

Program TAU;

Uses graph,crt;

Const

hmax=2;

Var

sigm,h:array [0..2501] of single;

I1,I2,I3,I4:array [0..2501] of single;

GD,GM:integer;

fj,Ij:array[1..4] of single;

ha:char;

temp,y,x,f,n,i,j:integer;

dt,t:real;

k,b1,a1,a2,a3:single;

s:string[5];

Begin

Clrscr;

dt:=0.005;

N:=2000;

t:=0;

{randomize;}

For i:=0 to N do Begin

t:=i*dt;

h[i+1]:=48*exp(-1/0.4*t)-50*exp(-1/0.3*t)-46.666666667*t*exp(-1/0.3*t)+2

end;

{Вычисляем подинтергальные значения I1,I2,I3,I4}

For i:=1 to N do sigm[i]:=h[i]/hmax;

t:=0;

for i:=1 to N do Begin

t:=(i-1)*dt;

I1[i]:=1-sigm[i];

I2[i]:=(1-sigm[i])*t;

I3[i]:=(1-sigm[i])*t*t;

I4[i]:=(1-sigm[i])*t*t*t;

end;

{Вычисление непосредственно самих I1,I2,I3,I4}

For j:=1 to 4 do Ij[j]:=0;

For i:=1 to N-1 do Begin

Ij[1]:=Ij[1]+(I1[i]+I1[i+1])/2*dt;

Ij[2]:=Ij[2]+(I2[i]+I2[i+1])/2*dt;

Ij[3]:=Ij[3]+(I3[i]+I3[i+1])/2*dt;

Ij[4]:=Ij[4]+(I4[i]+I4[i+1])/2*dt;

end;

{Находим Fj}

Fj[1]:=Ij[1];

Fj[2]:=Ij[1]*Ij[1]-Ij[2];

Fj[3]:=Ij[1]*Ij[1]*Ij[1]-2*Ij[1]*Ij[2]+0.5*Ij[3];

Fj[4]:=-Ij[4]/6+0.5*Ij[1]*Ij[3]+Fj[3]*Ij[1]-Fj[2]*Ij[2];

b1:=-Fj[4]/Fj[3];

a1:=b1+Fj[1];

a2:=Fj[2]+b1*Fj[1];

a3:=Fj[3]+b1*Fj[2];

K:=h[N+1];

Writeln ('a1=',a1:6:4,', a2=',a2:6:4,', a3=',a3:6:4,', b1=',b1:6:4,', K=',K:6:4,', n=',n, ', dt=',dt:0:4);

Readkey;

GD:=Detect; GM:=2;

Initgraph (GD,GM,'C:\BP\BGI');

SetBkColor(White);

j:=1;

Setcolor(9);

For i:=1 to 6 do Line(20+60*i,450,20+60*i,450-400);

For i:=0 to 4 do Begin {Условие надписи на оси Y}

str(i,s);

Setcolor(1);

OuttextXY(10,450-100*i,s);

Setcolor(9);

Line (20,450-100*i,620,450-100*i);

end;

Setcolor(9);

Line(20,50,20,450);

Line(20,450,620,450);

moveto(20,450);

for i:=0 to 600 do Begin {Построение графика}

setcolor(4);

y:=round(100*h[j]);

x:=i;

SetLineStyle(0,0,3);

Lineto(x+20,450-y);

SetLineStyle(0,0,1);

j:=j+3;

if (i=0) or (i mod 60 = 0) then Begin {Условие надписи на оси X}

setcolor(9);

temp:=round(i/60);

str(temp,s);

Line(20+i,450,20+i,450-400);

setcolor(1);

Moveto(20+i,460);

Outtext(s);

setcolor(4);

moveto(20+x,450-y);

end;

End;

Readkey;

CloseGraph;

end.

**********Программа, моделирующая САУ по передаточным функциям замкнутой системы.

Program TAU;

Uses graph,crt;

label

m1;

Const

hmax=2;

Var

x:array[1..3000] of real;

x1,x2,x3,x4,x5,x6,x7,x8:real;

temp,y,x111,gd,gm,n,i,j:integer;

g,dt:real;

s:string;

text:string;

c:char;

prosto:boolean;

Begin

Clrscr;

dt:=0.00333;

N:=3000;

{t:=0;}

x1:=0;x2:=0;x3:=0;x4:=0;x5:=0;x6:=0;x7:=0;x8:=0;

g:=1;

prosto:=true;

For i:=0 to N-1 do Begin

x1:=x1+dt*x2;

x2:=x2+dt*x3;

x3:=x3+dt*x4;

x4:=x4+dt*x5;

x5:=x5+dt*x6;

x6:=x6+dt*x7;

x7:=x7+dt*x8;

x8:=x8+dt*(-1155*x1-3130*x2-3952*x3-3014*x4-1522*x5-523.6*x6-120.7*x7-16.87*x8+0.7114);

x[i+1]:=x1*1155+3373*x2+4440*x3+3399*x4+1646*x5+503.4*x6+88.06*x7+6.02*x8;

Writeln('x[',i+1,']=',x[i+1]);

If prosto=true then Begin

c:=Readkey;

Case c of

'c':exit;

'r':prosto:=false;

end;

end;

end;

str(x[n]:6:6,text);

GD:=Detect; GM:=2;

Initgraph (GD,GM,'C:\BP\BGI');

SetBkColor(White);

j:=1;

Setcolor(9);

For i:=1 to 6 do Line(20+60*i,450,20+60*i,450-400);

For i:=0 to 4 do Begin {Условие надписи на оси Y}

str(i,s);

Setcolor(1);

OuttextXY(10,450-100*i,s);

Setcolor(9);

Line (20,450-100*i,620,450-100*i);

end;

Setcolor(9);

Line(20,50,20,450);

Line(20,450,620,450);

moveto(20,450);

for i:=0 to 600 do Begin {Построение графика}

setcolor(4);

y:=round(140*x[j]);

x111:=i;

SetLineStyle(0,0,3);

Lineto(x111+20,450-y);

SetLineStyle(0,0,1);

{If i mod 2=0 then j:=j+1;}

j:=j+4;

if (i=0) or (i mod 60 = 0) then Begin {Условие надписи на оси X}

setcolor(9);

temp:=round(i/60);

str(temp,s);

Line(20+i,450,20+i,450-400);

setcolor(1);

Moveto(300,240);

Outtext(text);

Moveto(20+i,460);

Outtext(s);

setcolor(4);

moveto(20+x111,450-y);

end;

End;

Readkey;

CloseGraph;

end.

17

Соседние файлы в папке курсовая работа