Міністерство освіти і науки України
Національний університет "Львівська політехніка"
Кафедра : комп'ютеризовані системи,
та автоматика
Курсова робота
з курсу
"Комп'ютерні методи дослідження систем керування"
на тему:
"Система статичного слідкування за швидкістю задаючого вала"
Тема 4, варіант 10
Львів 2007Зміст
Зав дання 3
Опис роботи схеми 4
Виведення системи диференціальних рівнянь 4
Метод Рунге-Кутта-Мерсона 5
Модифікований метод Ейлера 5
Реалізація автоматичного кроку 7
Блок-схеми алгоритмів. 8
Тексти програм 9
Результати 14
Графічні результати 19
Висновок 20
Література 20Зав дання 3
Опис роботи схеми 4
Виведення системи диференціальних рівнянь 4
Метод Рунге-Кутта-Мерсона 5
Модифікований метод Ейлера 5
Реалізація автоматичного кроку 7
Блок-схеми алгоритмів. 8
Тексти програм 9
Результати 14
Графічні результати 19
Висновок 20
Література 20Опис роботи схемиЗавдання
За даним методом розрахувати з заданою точністю процес реакції заданої системи автоматичного керування (САК) на одиничний стрибок вхідного сигналу.
Розрахунок здійснити для свого варіанту САК, параметрів САК, параметрів перехідного процесу і параметрів процесу чисельного інтегрування.
Чисельний метод: Рунге-Кутта.
Точність розрахунку не нижча 0.001, початкові умови – нульові.
1. Схема системи статичного слідкування за швидкістю задаючого вала.
2. Рівняння ланок
a) рівняння тахогенераторів
,
b) вимірювальна схема
c) електронний підсилювач
d) обмотка збудження ЕМП (електромашинного підсилювача)
e) короткозамкнута обмотка ЕМП
f) двигун
3. Завдання
Tm (сек)
0,005
КЕМП
10
T1 (сек)
0,3
КЕП
2
T2 (сек)
0,015
к1 (в∙с/рад)
1,01
С (рад/в∙с)
3
к2 (в∙с/рад)
1
Опис роботи схеми
На вхід електронного підсилювача подається різниця напруг U1 та U2 які є пропорційними величинам вхідного і вихідного сигналів відповідно. Сигнал, підсилений електронним, а потім електромашинним підсилювачами, подається на двигун, який обертає ротор тахогенератора ТГ2.
У рівноважному стані Wвх = Wвих, на вході електронного підсилювача нульова напруга. При появі , припиненні чи зміні Wвх на вході електронного підсилювача (ЕП) виникає напруга: Uвх=U1-U2 . Підсилена в Кu разів різниця напруг подається на обмотку збудження електромашинного підсилювача (ЕМП), який керує двигуном. Під дією цієї напруги в залежності від знаку зміни вхідного сигналу збільшується або зменшується швидкість обертання двигуна. Вал двигуна з'єднаний з тахогенератором, який генерує напругу, що подається на вимірювальну схему. Цей процес буде тривати доти , доки Uвх не стане рівне нулю , тобто Wвх = Wвих .
Виведення системи диференціальних рівнянь
З рівняння двигуна виражаємо Up :
і підставляємо його в рівняння короткозамкненої обмотки ЕМП, звідки знаходимо Uk:
.
Підставивши вираз для Uk, а також рівняння електронного підсилювача, вимірювальної схеми і тахогенераторів в рівняння обмотки збудження ЕМП, отримаємо:
Позначимо :
тоді .
Тепер, з отриманого лінійного диф. рівняння третього порядку можна скласти систему з трьох диф. рівнянь першого порядку:
Метод Рунге-Кутта
Метод Рунге-Кутта 4 порядку настільки широко розповсюджений, що його часто називають просто метод Рунге-Кутта.
Розглянемо задачу Коші . Тоді значення в наступній точці обчислюється за такою формулою:
де
h — крок по часу.
Цей метод має 4 порядок, тобто похибка на кожному кроці укладає O(h5), а сумарна похибка на кінцевому інтервалі інтегрування O(h4).
Реалізація автоматичного кроку
Для методу Рунге-Кутта немає потреби робити перерахунок з кроком h/2, похибка обчислюється на кожному кроці. Якщо похибка більше е, h зменшуюється в два рази. Так послідовно зменшується крок до тих пір, коли похибка стане менше е.
Значення функції в точці t+h обчислено. Якщо ж похибка менша е/30, аналогічно збільшують крок.
Блок-схема алгоритму.
Текст програми
Метод Рунге-Кутта
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
#define Tm 0.005
#define T1 0.3
#define T2 0.015
#define C 3.0
#define Kemp 10.0
#define Kep 2.0
#define K1 1.01
#define K2 1.0
#define Win 1.0
#define fileName "rkm.dat"
#define eps 1e-3
#define hp 0.0001
#define n 3
#define tStart 0.0
#define tEnd 1.0
double y_old[n],
y1[n],
y2[n];
double poh;
double F(int k,double *y)
{ switch(k)
{ case 0 : return y[1];
case 1 : return y[2];
case 2 : return (C*Kemp*Kep*(K1*Win-K2*y[0])-y[0]-(T1+T2+Tm)*y[1]-(T1*T2+T1*Tm+T2*Tm)*y[2])/T1/T2/Tm;
}
}
void rkm(double *y0,double *yn,double h)
{
int i;
double k0[n],k1[n],k2[n],k3[n],k4[n],tm[n];
for(i=0;i<n;i++) k0[i]=h*F(i,y0);
for(i=0;i<n;i++) tm[i]=y0[i]+k0[i]/3;
for(i=0;i<n;i++) k1[i]=h*F(i,tm);
for(i=0;i<n;i++) tm[i]=y0[i]+k0[i]/6+k1[i]/6;
for(i=0;i<n;i++) k2[i]=h*F(i,tm);
for(i=0;i<n;i++) tm[i]=y0[i]+k0[i]/8+3*k2[i]/8;
for(i=0;i<n;i++) k3[i]=h*F(i,tm);
for(i=0;i<n;i++) tm[i]=y0[i]+k0[i]/2-3*k2[i]/2+2*k3[i];
for(i=0;i<n;i++) k4[i]=h*F(i,tm);
for(i=0;i<n;i++) yn[i]=y0[i]+(k0[i]+4*k3[i]+k4[i])/6;
for(i=0;i<n;i++) y2[i]=(-2*k0[i]+9*k2[i]-8*k3[i]+k4[i])/30;
}
void constStep()
{
int i;
poh=0;
rkm(y_old,y1,hp);
for(i=0;i<n;i++) if(fabs(y2[i])>poh) poh=fabs(y2[i]);
}
void main()
{ int i,driver,drmode,grerror;
double t;
int xc,yc;
double kx,ky;
char s[10];
int skip=50;
int k=skip;
FILE *fp;
kx=500; ky=166.6;
driver=9; drmode=2;
initgraph(&driver,&drmode,"");
grerror=graphresult();
if(grerror!=0)
{ printf("Error :%s\n",grapherrormsg(grerror));
printf("Press eny key...");
getch();
return;
}
xc=35; yc=getmaxy()-100;
fp=fopen(fileName,"w");
setlinestyle(1,0,1);
setcolor(15);
line(xc,yc-ky,getmaxx()-40,yc-ky);
setcolor(7);
for(i=xc+25;i<getmaxx()-60;i+=25)
{ sprintf(s,"%3.2lf",(i-xc)/kx);
line(i,yc-4,i,yc+4);
if(!((i-xc)%50)) outtextxy(i-10,yc+4,s);
}
for(i=yc-25;i>30;i-=25)
{ sprintf(s,"%3.2lf",(yc-i)/ky);
line(xc-4,i,xc+4,i);
if(!((yc-i)%50)) outtextxy(0,i-2,s);
}
setlinestyle(0,0,1);
line(xc-4,yc,getmaxx()-34,yc);
line(getmaxx()-34,yc,getmaxx()-44,yc-3);
line(getmaxx()-34,yc,getmaxx()-44,yc+3);
line(xc,yc+4,xc,20);
line(xc,20,xc-3,30);
line(xc,20,xc+3,30);
outtextxy(getmaxx()-50,yc-15,"t,c");
outtextxy(42,18,"Wout");
outtextxy(xc-10,yc+5,"0");
for(i=0;i<n;i++) y_old[i]=0;
t=tStart;
setcolor(15);
setlinestyle(0,0,3);
moveto(xc,yc);
setcolor(2);
while(t<=tEnd && !kbhit()){
constStep();
lineto(xc+t*kx,yc-y_old[0]*ky);
if (k==skip) {
fprintf(fp,"t=%lf Wout=%lf Poh=%lf\n",t,y_old[0],poh);
k=1;
} else k++;
t+=hp;
for(i=0;i<n;i++) y_old[i]=y1[i];
}
getch();
closegraph();
fclose(fp);
return;
}
Результат програми
t=0.000000 Wout=0.000000 Poh=0.000000
t=0.005000 Wout=0.026882 Poh=0.000000
t=0.010000 Wout=0.163002 Poh=0.000000
t=0.015000 Wout=0.417845 Poh=0.000000
t=0.020000 Wout=0.748140 Poh=0.000000
t=0.025000 Wout=1.090770 Poh=0.000000
t=0.030000 Wout=1.383001 Poh=0.000000
t=0.035000 Wout=1.576269 Poh=0.000000
t=0.040000 Wout=1.644543 Poh=0.000000
t=0.045000 Wout=1.587233 Poh=0.000000
t=0.050000 Wout=1.426949 Poh=0.000000
t=0.055000 Wout=1.203137 Poh=0.000000
t=0.060000 Wout=0.963197 Poh=0.000000
t=0.065000 Wout=0.752974 Poh=0.000000
t=0.070000 Wout=0.608440 Poh=0.000000
t=0.075000 Wout=0.550003 Poh=0.000000
t=0.080000 Wout=0.580220 Poh=0.000000
t=0.085000 Wout=0.685035 Poh=0.000000
t=0.090000 Wout=0.837965 Poh=0.000000
t=0.095000 Wout=1.006172 Poh=0.000000
t=0.100000 Wout=1.157140 Poh=0.000000
t=0.105000 Wout=1.264641 Poh=0.000000
t=0.110000 Wout=1.312984 Poh=0.000000
t=0.115000 Wout=1.298899 Poh=0.000000
t=0.120000 Wout=1.230954 Poh=0.000000
t=0.125000 Wout=1.126845 Poh=0.000000
t=0.130000 Wout=1.009251 Poh=0.000000
t=0.135000 Wout=0.901173 Poh=0.000000
t=0.140000 Wout=0.821657 Poh=0.000000
t=0.145000 Wout=0.782653 Poh=0.000000
t=0.150000 Wout=0.787490 Poh=0.000000
t=0.155000 Wout=0.831083 Poh=0.000000
t=0.160000 Wout=0.901677 Poh=0.000000
t=0.165000 Wout=0.983658 Poh=0.000000
t=0.170000 Wout=1.060800 Poh=0.000000
t=0.175000 Wout=1.119322 Poh=0.000000
t=0.180000 Wout=1.150199 Poh=0.000000
t=0.185000 Wout=1.150374 Poh=0.000000
t=0.190000 Wout=1.122749 Poh=0.000000
t=0.195000 Wout=1.075083 Poh=0.000000
t=0.200000 Wout=1.018093 Poh=0.000000
t=0.205000 Wout=0.963192 Poh=0.000000
t=0.210000 Wout=0.920318 Poh=0.000000
t=0.215000 Wout=0.896237 Poh=0.000000
t=0.220000 Wout=0.893598 Poh=0.000000
t=0.225000 Wout=0.910838 Poh=0.000000
t=0.230000 Wout=0.942874 Poh=0.000000
t=0.235000 Wout=0.982377 Poh=0.000000
t=0.240000 Wout=1.021337 Poh=0.000000
t=0.245000 Wout=1.052615 Poh=0.000000
t=0.250000 Wout=1.071169 Poh=0.000000
t=0.255000 Wout=1.074791 Poh=0.000000
t=0.260000 Wout=1.064239 Poh=0.000000
t=0.265000 Wout=1.042816 Poh=0.000000
t=0.270000 Wout=1.015518 Poh=0.000000
t=0.275000 Wout=0.987946 Poh=0.000000
t=0.280000 Wout=0.965217 Poh=0.000000
t=0.285000 Wout=0.951065 Poh=0.000000
t=0.290000 Wout=0.947283 Poh=0.000000
t=0.295000 Wout=0.953577 Poh=0.000000
t=0.300000 Wout=0.967823 Poh=0.000000
t=0.305000 Wout=0.986629 Poh=0.000000
t=0.310000 Wout=1.006087 Poh=0.000000
t=0.315000 Wout=1.022543 Poh=0.000000
t=0.320000 Wout=1.033244 Poh=0.000000
t=0.325000 Wout=1.036766 Poh=0.000000
t=0.330000 Wout=1.033145 Poh=0.000000
t=0.335000 Wout=1.023731 Poh=0.000000
t=0.340000 Wout=1.010818 Poh=0.000000
t=0.345000 Wout=0.997123 Poh=0.000000
t=0.350000 Wout=0.985250 Poh=0.000000
t=0.355000 Wout=0.977218 Poh=0.000000
t=0.360000 Wout=0.974141 Poh=0.000000
t=0.365000 Wout=0.976114 Poh=0.000000
t=0.370000 Wout=0.982291 Poh=0.000000
t=0.375000 Wout=0.991128 Poh=0.000000
t=0.380000 Wout=1.000740 Poh=0.000000
t=0.385000 Wout=1.009278 Poh=0.000000
t=0.390000 Wout=1.015268 Poh=0.000000
t=0.395000 Wout=1.017848 Poh=0.000000
t=0.400000 Wout=1.016867 Poh=0.000000
t=0.405000 Wout=1.012848 Poh=0.000000
t=0.410000 Wout=1.006822 Poh=0.000000
t=0.415000 Wout=1.000094 Poh=0.000000
t=0.420000 Wout=0.993974 Poh=0.000000
t=0.425000 Wout=0.989533 Poh=0.000000
t=0.430000 Wout=0.987430 Poh=0.000000
t=0.435000 Wout=0.987831 Poh=0.000000
t=0.440000 Wout=0.990422 Poh=0.000000
t=0.445000 Wout=0.994516 Poh=0.000000
t=0.450000 Wout=0.999212 Poh=0.000000
t=0.455000 Wout=1.003586 Poh=0.000000
t=0.460000 Wout=1.006861 Poh=0.000000
t=0.465000 Wout=1.008538 Poh=0.000000
t=0.470000 Wout=1.008460 Poh=0.000000
t=0.475000 Wout=1.006809 Poh=0.000000
t=0.480000 Wout=1.004040 Poh=0.000000
t=0.485000 Wout=1.000771 Poh=0.000000
t=0.490000 Wout=0.997654 Poh=0.000000
t=0.495000 Wout=0.995250 Poh=0.000000
t=0.500000 Wout=0.993934 Poh=0.000000
t=0.505000 Wout=0.993846 Poh=0.000000
t=0.510000 Wout=0.994883 Poh=0.000000
t=0.515000 Wout=0.996748 Poh=0.000000
t=0.520000 Wout=0.999017 Poh=0.000000
t=0.525000 Wout=1.001231 Poh=0.000000
t=0.530000 Wout=1.002988 Poh=0.000000
t=0.535000 Wout=1.004007 Poh=0.000000
t=0.540000 Wout=1.004170 Poh=0.000000
t=0.545000 Wout=1.003529 Poh=0.000000
t=0.550000 Wout=1.002280 Poh=0.000000
t=0.555000 Wout=1.000710 Poh=0.000000
t=0.560000 Wout=0.999141 Poh=0.000000
t=0.565000 Wout=0.997862 Poh=0.000000
t=0.570000 Wout=0.997081 Poh=0.000000
t=0.575000 Wout=0.996896 Poh=0.000000
t=0.580000 Wout=0.997283 Poh=0.000000
t=0.585000 Wout=0.998116 Poh=0.000000
t=0.590000 Wout=0.999199 Poh=0.000000
t=0.595000 Wout=1.000308 Poh=0.000000
t=0.600000 Wout=1.001235 Poh=0.000000
t=0.605000 Wout=1.001827 Poh=0.000000
t=0.610000 Wout=1.002007 Poh=0.000000
t=0.615000 Wout=1.001781 Poh=0.000000
t=0.620000 Wout=1.001229 Poh=0.000000
t=0.625000 Wout=1.000484 Poh=0.000000
t=0.630000 Wout=0.999703 Poh=0.000000
t=0.635000 Wout=0.999033 Poh=0.000000
t=0.640000 Wout=0.998587 Poh=0.000000
t=0.645000 Wout=0.998426 Poh=0.000000
t=0.650000 Wout=0.998553 Poh=0.000000
t=0.655000 Wout=0.998916 Poh=0.000000
t=0.660000 Wout=0.999426 Poh=0.000000
t=0.665000 Wout=0.999975 Poh=0.000000
t=0.670000 Wout=1.000458 Poh=0.000000
t=0.675000 Wout=1.000791 Poh=0.000000
t=0.680000 Wout=1.000928 Poh=0.000000
t=0.685000 Wout=1.000862 Poh=0.000000
t=0.690000 Wout=1.000625 Poh=0.000000
t=0.695000 Wout=1.000276 Poh=0.000000
t=0.700000 Wout=0.999892 Poh=0.000000
t=0.705000 Wout=0.999545 Poh=0.000000
t=0.710000 Wout=0.999298 Poh=0.000000
t=0.715000 Wout=0.999185 Poh=0.000000
t=0.720000 Wout=0.999215 Poh=0.000000
t=0.725000 Wout=0.999368 Poh=0.000000
t=0.730000 Wout=0.999605 Poh=0.000000
t=0.735000 Wout=0.999874 Poh=0.000000
t=0.740000 Wout=1.000122 Poh=0.000000
t=0.745000 Wout=1.000305 Poh=0.000000
t=0.750000 Wout=1.000396 Poh=0.000000
t=0.755000 Wout=1.000387 Poh=0.000000
t=0.760000 Wout=1.000288 Poh=0.000000
t=0.765000 Wout=1.000128 Poh=0.000000
t=0.770000 Wout=0.999940 Poh=0.000000
t=0.775000 Wout=0.999763 Poh=0.000000
t=0.780000 Wout=0.999629 Poh=0.000000
t=0.785000 Wout=0.999557 Poh=0.000000
t=0.790000 Wout=0.999555 Poh=0.000000
t=0.795000 Wout=0.999618 Poh=0.000000
t=0.800000 Wout=0.999726 Poh=0.000000
t=0.805000 Wout=0.999856 Poh=0.000000
t=0.810000 Wout=0.999982 Poh=0.000000
t=0.815000 Wout=1.000081 Poh=0.000000
t=0.820000 Wout=1.000137 Poh=0.000000
t=0.825000 Wout=1.000143 Poh=0.000000
t=0.830000 Wout=1.000105 Poh=0.000000
t=0.835000 Wout=1.000032 Poh=0.000000
t=0.840000 Wout=0.999942 Poh=0.000000
t=0.845000 Wout=0.999852 Poh=0.000000
t=0.850000 Wout=0.999780 Poh=0.000000
t=0.855000 Wout=0.999737 Poh=0.000000
t=0.860000 Wout=0.999729 Poh=0.000000
t=0.865000 Wout=0.999752 Poh=0.000000
t=0.870000 Wout=0.999801 Poh=0.000000
t=0.875000 Wout=0.999863 Poh=0.000000
t=0.880000 Wout=0.999926 Poh=0.000000
t=0.885000 Wout=0.999979 Poh=0.000000
t=0.890000 Wout=1.000011 Poh=0.000000
t=0.895000 Wout=1.000020 Poh=0.000000
t=0.900000 Wout=1.000006 Poh=0.000000
t=0.905000 Wout=0.999974 Poh=0.000000
t=0.910000 Wout=0.999931 Poh=0.000000
t=0.915000 Wout=0.999887 Poh=0.000000
t=0.920000 Wout=0.999849 Poh=0.000000
t=0.925000 Wout=0.999824 Poh=0.000000
t=0.930000 Wout=0.999816 Poh=0.000000
t=0.935000 Wout=0.999824 Poh=0.000000
t=0.940000 Wout=0.999845 Poh=0.000000
t=0.945000 Wout=0.999875 Poh=0.000000
t=0.950000 Wout=0.999906 Poh=0.000000
t=0.955000 Wout=0.999933 Poh=0.000000
t=0.960000 Wout=0.999952 Poh=0.000000
t=0.965000 Wout=0.999959 Poh=0.000000
t=0.970000 Wout=0.999955 Poh=0.000000
t=0.975000 Wout=0.999941 Poh=0.000000
t=0.980000 Wout=0.999920 Poh=0.000000
t=0.985000 Wout=0.999898 Poh=0.000000
t=0.990000 Wout=0.999879 Poh=0.000000
t=0.995000 Wout=0.999865 Poh=0.000000t=1.000000 Wout=0.999859 Poh=0.000000
Графічний результат
Графік, отриманий методом Рунге-Кутта
Висновок
Перехідний процес відбувається із затухаючими коливаннями. Амплітуда коливань з часом спадає, а напруга на виході асимптотично наближається до рівня сигналу, поданого на вхід, і приблизно через 0,8 секунди після подачі на вхід сигналу в система переходить в усталений режим.
Література
1.М.А.Гаврилюк , Л.В.Мороз та iн. "Прикладні програми i лабораторний практикум для персонального комп'ютера." 1988 Київ УМКВО.
2. Л.О. Новіков, А.Ф. Обшта, "Чисельні та наближені методи прикладної математики. Лекції" 1998 Львів