Міністерство освіти і науки України
Національний університет “Львівська політехніка ”
Кафедра КСА
РОЗРАХУНКОВА РОБОТА
з дисципліни
“ДИНАМІЧНІ ЕЛЕМЕНТИ СИСТЕМ КЕРУВАННЯ”
Тема 4
Варіант 8
Вхідна дія 14
Львів 2011
Варіант 8
Tm=0,003 сек;
Т1=0,3 сек;
Т1=0,02 сек;
С=3 рад/в.сек;
Кемп=15;
Кеп=2;
К1=1,01 в.сек /рад;
К2=1 в.сек /рад;
КІ=5;
КІІ=3;
Вхідна дія, ɷвх:
де а=0.1 секунда.
Технічне завдання.
1. Нарисувати структурну схему системи.
2. Визначити передатні функції елементів системи.
3. Визначити передатну функцію системи.
4. Визначити частотні характеристики системи ДЧХ, УЧХ, АЧХ, ФЧХ.
5. Написати програму табуляції частотних характеристик.
6. Результати табуляції записати у текстовий файл.
7. Нарисувати частотні характеристики АФХ, АЧХ, ФЧХ.
8. Записати диференціальні рівняння системи в нормальній формі Коші.
9. Написати програму розрахунку 4 періодів перехідного процесу системи методом Рунге-Кутта з постійним кроком інтегрування.
10. Результати розрахунку записати у текстовий файл.
11. Навести список основних ідентифікаторів програми.
12. Нарисувати криві 4 періодів перехідного процесу системи для вихідної величини і помилки системи.
13. За результатами розрахунків зробити висновки про роботу системи.
Структурна схема системи
ɷвх U1 Uвх Uвих Uк Uр
ɷвих
U1 ɷвих
Програма табуляції частотних характеристик і розрахунку 4 періодів перехідного процесу системи методом Рунге-Кутта з постійним кроком інтегрування
#include "iostream"
#include "math.h"
#include "fstream"
using namespace std;
void P(double A, double B, double C, double D, double w, double &P_w);
void Q(double A, double B, double C, double D, double w, double &Q_w);
void H(double P, double Q, double &H_w);
void FI(double P, double Q, double &fi_w);
//Runhe_________________________________________________________________________
void W_vx(double a, double T, double t, double n, double &Wvx);
void poxidni(double k1[],double k2[],double k3[],double c[],double x[],double dx[]);
void k00(double k1[],double k2[],double k3[]);
void main()
{
fstream file;
file.open("resultCH.txt",ios_base::out|ios_base::trunc);
double P_w,Q_w,H_w,FI_w=0;
double H_w_fest,H_w_end;
double _A,_B,_C,_D;
double w=0,a0,b3,b2,b1,b0,h=1;
double T_m=0.003, T_1=0.3, T_2=0.02, C=3, K_emp=15, K_ep=2, K_1=1.01, K_2=1,K_I=5, K_II=3;
a0=K_1*K_ep*K_I*K_II*C;
b3=T_1*T_2*T_m;
b2=T_1*T_2+T_2*T_m+T_1*T_m;
b1=T_1+T_2+T_m;
b0=1+K_2*K_ep*K_I*K_II*C;
int n=0;
file<<"w P(w) Q(w) H(w) FI(w)"<<endl;
do
{
_A=a0;
_B=0;
_C=b0-b2*w*w;
_D=w*(b1-b3*w*w);
P( _A, _B, _C, _D, w, P_w);
Q( _A, _B, _C, _D, w, Q_w);
H( P_w, Q_w, H_w);
FI(P_w, Q_w, FI_w);
file<<w<<" "<<P_w<<" "<<Q_w<<" "<<H_w<<" "<<FI_w<<endl;
if (n==0)H_w_fest=H_w,H_w_end=H_w; else H_w_end=H_w;
n++;
w=w+h;
}while(20*H_w_end > H_w_fest);
file.close();
//Runhe_________________________________________________________________________
file.open("resultRunhe.txt",ios_base::out|ios_base::trunc);
n=0;
double a=0.1,T=4*a;
double x[3],dx[3]={0,0,0},c[7],Wvx=0,k1[3],k2[3],k3[3],k4[3];
double Up=0,Uk=0,Wvux=0,U1=0,U2=0,Uvx=0,Uvux=0;
c[0]=T_1;
c[1]=K_I;
c[2]=Uvux;
c[3]=T_2;
c[4]=K_II;
c[5]=T_m;
c[6]=C;
h=T/1000;
x[0]=Uk; x[1]=Up; x[2]=Wvux;
file<<"t Wvx U1 Uvx Uvux Uk Up Wvux U2"<<endl;
int m=0;
for (n=0;n<4;n++)
for(double t=0+n*T;t<T+n*T;)
{
if((m/10)*10==m)
file<<t<<" "<<Wvx<<" "<<U1<<" "<<Uvx<<" "<<c[2]<<" "<<x[0]<<" "<<x[1]<<" "<<x[2]<<" "<<U2<<endl; else ;
W_vx(a,T,t,n,Wvx);
U1=K_1*Wvx;
U2=K_2*x[2];
Uvx=U1-U2;
c[2]=K_ep*Uvx;
poxidni(k1,k2,k3,c,x,dx);
for(int i=0;i<3;i++)
{
k1[i]=h*dx[i];
}
t=t+h/2;
W_vx(a,T,t,n,Wvx);
U1=K_1*Wvx;
U2=K_2*x[2];
Uvx=U1-U2;
c[2]=K_ep*Uvx;
x[0]=x[0]+k1[0]/2;
x[1]=x[1]+k1[1]/2;
x[2]=x[2]+k1[2]/2;
poxidni(k1,k2,k3,c,x,dx);
for(int i=0;i<3;i++)
{
k2[i]=h*dx[i];
}
x[0]=x[0]-k1[0]/2+k2[0]/2;
x[1]=x[1]-k1[1]/2+k2[1]/2;
x[2]=x[2]-k1[2]/2+k2[2]/2;
poxidni(k1,k2,k3,c,x,dx);
for (int i=0;i<3;i++)
{
k3[i]=h*dx[i];
}
t=t+h/2;
W_vx(a,T,t,n,Wvx);
U1=K_1*Wvx;
U2=K_2*x[2];
Uvx=U1-U2;
c[2]=K_ep*Uvx;
x[0]=x[0]-k2[0]/2+k3[0]/2;
x[1]=x[1]-k2[1]/2+k3[1]/2;
x[2]=x[2]-k2[2]/2+k3[2]/2;
poxidni(k1,k2,k3,c,x,dx);
for (int i=0;i<3;i++)
{
k4[i]=h*dx[i];
}
x[0]=x[0]-k3[0]/2;
x[1]=x[1]-k3[1]/2;
x[2]=x[2]-k3[2]/2;
for (int i=0;i<3;i++)
{
x[i]=x[i]+(k1[i]+2*k2[i]+2*k3[i]+k4[i])/6;
}
m++;
}
file.close();
system("pause");
}
//vunctions_________________________________________________________________
void P(double A, double B, double C, double D, double w, double &P_w)
{
P_w=(A*C+B*D)/(C*C+D*D);
}
void Q(double A, double B, double C, double D, double w, double &Q_w)
{
Q_w=(B*C-A*D)/(C*C+D*D);
}
void H(double P, double Q, double &H_w)
{
H_w=pow(P*P+Q*Q,0.5);
}
void FI(double P, double Q, double &fi_w)
{
fi_w=atan(Q/P);
if (P<0) fi_w=fi_w-3.141592653589793238; else ;
}
//Runhe_________________________________________________________________________
void W_vx(double a, double T, double t, double n, double &Wvx)
{
if(t>=0+n*T && t<a+n*T) Wvx=5*(t-n*T)+0.5;else ;
if(t>=a+n*T && t<2*a+n*T) Wvx=-5*(t-n*T-a)+1;else ;
if(t>=2*a+n*T && t<=4*a+n*T) Wvx=-2.5*(t-n*T-2*a)+0.5;else ;
}
void poxidni(double k1[],double k2[],double k3[],double c[],double x[],double dx[])
{
dx[0]=(c[1]*c[2]-x[0])/c[0];
dx[1]=(c[4]*x[0]-x[1])/c[3];
dx[2]=(c[6]*x[1]-x[2])/c[5];
}
Амплітудно-фазова характеристика системи (АФХ)
y=Q; x=P;
Амплітудно-частотна характеристика системи (АЧХ)
y=H; x=ɷ;
Фазо-частотна характеристика системи (ФЧХ)
y=φ; x=ɷ;
Вхідна дія ɷ(t)
U1(t)
Uvx(t)
Uvux(t)
Uk(t)
Up(t)
Вихідна дія ɷвих(t)
U2(t)
Список основних ідентифікаторів програми
P_w, Q_w, H_w, FI_w – частотні характеристики;
P( ) - функція обчилення дійсно-частотної характеристики;
Q( ) - функція обчилення уявно-частотної характеристики;
H( ) - функція обчилення амплітудно-частотної характеристики;
FI( ) - функція обчилення фазо-частотної характеристики;
W_vx( ) - функція обчислення вхідного сигналу;
poxidni( ) - функція обчислення значень похідних в методі Рунге-Кутта;
с[ ] - масив, за допомогою якого у функцію poxidni( ) передаються значення необхідної невідомої Uвих і константи, які входять в систему рівнянь;
х[ ] - масив невідомих, які шукаються за методом Рунге-Кутта;
Wvx – вхідний сигнал;
Wvux – вихідний сигнал;
Up,Uk,U1,U2,Uvx,Uvux – проміжні сигнали;
Т – період;
h – крок табуляції.