KULAX.Series[8].AddXY(log10(1/tau1),min);
KULAX.Series[8].AddXY(log10(1/tau1),max);
KULAX.Series[9].AddXY(log10(1/tau2),min);
KULAX.Series[9].AddXY(log10(1/tau2),max);
end;
//----------- Для построения точной лах разомкнутой системы------------
// функция вычисляющая значение фазы разомкнутой ПФ для исходной системы
function TForm1.PhiRazomkn(Ts, tau1, tau2, w :real):real;
begin
Result:=-90-arctan(w*Ts)*180.0/pi-arctan(w*tau1)*180.0/pi-arctan(w*tau2)*180.0/pi;
end;
// функция вычисляющая значение амплитуды разомкнутой ПФ для исходной системы
function TForm1.ARazomkn(Kw, Ts, tau1, tau2, w :real):real;
begin
Result:=Kw/( w * sqrt((Ts*Ts*w*w+1)*(tau1*tau1*w*w+1)*(tau2*tau2*w*w+1)) );
end;
// Построение исходной ЛАХ
procedure TForm1.LaxRazomkn(Kw, Ts, tau1, tau2 :real);
var lgw, startlgw, endlgw, L, phi: real;
begin
startlgw:=-1.5;
endlgw:=5;
lgw:=startlgw;
while lgw<=endlgw do
begin
L:=20*log10(ARazomkn(Kw, Ts, tau1, tau2, pow(10,lgw)));
phi:=PhiRazomkn(Ts, tau1, tau2, pow(10,lgw));
LAX.Series[3].AddXY(lgw,L);
LAX.Series[4].AddXY(lgw,-phi-180.0);
lgw:=lgw+0.001;
end;
end;
//------------------------------------------------------------------------
//----------- Для построения точной желаемой лах системы------------
// функция вычисляющая значение амплитуды желаемой ПФ системы
function TForm1.AZhelaem(Kw, T1, T2, T3, tau1, tau2, w :real; vibor: byte):real;
begin
case vibor of
// 1/T3 < 1/tau1
1: Result:=Kw*sqrt(T2*T2*w*w+1)/(w * sqrt((T1*T1*w*w+1)*(T3*T3*w*w+1)*(tau1*tau1*w*w+1)*(tau2*tau2*w*w+1)));
// 1/tau1 <= 1/T3 < 1/tau2
2: Result:=Kw*sqrt(T2*T2*w*w+1)/(w * sqrt((T1*T1*w*w+1)*(T3*T3*w*w+1)*(T3*T3*w*w+1)*(tau2*tau2*w*w+1)));
// 1/T3 > 1/tau2
3,4: Result:=Kw*sqrt(T2*T2*w*w+1)/(w * sqrt((T1*T1*w*w+1)*(T3*T3*w*w+1)*(T3*T3*w*w+1)*(T3*T3*w*w+1)));
end;
end;
// функция вычисляющая значение фазы желаемой ПФ системы
function TForm1.PhiZhelaem(T1, T2, T3, tau1, tau2, w :real; vibor: byte) : real;
begin
case vibor of
// 1/T3 < 1/tau1
1: Result:=-90+arctan(w*T2)*180.0/pi-arctan(w*T1)*180.0/pi-arctan(w*T3)*180.0/pi-arctan(w*tau1)*180.0/pi-arctan(w*tau2)*180.0/pi;
// 1/tau1 <= 1/T3 < 1/tau2
2: Result:=-90+arctan(w*T2)*180.0/pi-arctan(w*T1)*180.0/pi-2*arctan(w*T3)*180.0/pi-arctan(w*tau2)*180.0/pi;
// 1/T3 > 1/tau2
3,4: Result:=-90+arctan(w*T2)*180.0/pi-arctan(w*T1)*180.0/pi-3*arctan(w*T3)*180.0/pi;
end;
end;
// Построение желаемой ЛАХ
procedure TForm1.LAXZhelaem(Kw, T1, T2, T3, tau1, tau2 :real; vibor: byte);
const
n = 300; // Число разбиений при построении запретной зоны для ЛФЧХ
eps = 0.1; // Точность при построении запретной зоны для ЛФЧХ
var lgw, startlgw, endlgw, L, phi: real;
begin
startlgw:=-1.5;
endlgw:=5;
lgw:=startlgw;
while lgw<=endlgw do
begin
L:=20*log10(AZhelaem(Kw, T1, T2, T3, tau1, tau2, pow(10,lgw), vibor));
phi:=PhiZhelaem(T1, T2, T3, tau1, tau2, pow(10,lgw), vibor);
LAX.Series[5].AddXY(lgw,L);
LAX.Series[6].AddXY(lgw,-phi-180);
lgw:=lgw+0.001;
end;
end;
//------------------------------------------------------------------------
//----------- Для построения лах корректирующего устройства --------------
procedure TForm1.LaxKU(KwUp, Kw, T1, T2, T3, tau1, tau2 :real; vibor: byte);
var lgw, startlgw, endlgw, L, A_ku: real;
begin
startlgw:=-1.5;
endlgw:=5;
lgw:=startlgw;
while lgw<=endlgw do
begin
A_ku := AZhelaem(Kw, T1, T2, T3, tau1, tau2, pow(10,lgw), vibor)/ARazomkn(KwUp, Ts, tau1, tau2, pow(10,lgw));
L:=20*log10(A_ku);
LAX.Series[14].AddXY(lgw,L);
KULAX.Series[10].AddXY(lgw,L); // строим график ЛАХ КУ на на другом chart-те
lgw:=lgw+0.001;
end;
end;
//------------------------------------------------------------------------
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.