//------------------ Построение и разбиение точной лах КУ-------------------
procedure TForm1.AssimKULax(Kw, KwUp, Ts, tau1, tau2, T1, T2, T3: real; vibor : byte);
// Построение лах КУ на заданном участке
// flag - для построения 1-го звена если KwUp > Kw
// UpT,DownT - верхняя и нижняя постоянные времени
// GrafNum - номер графика
procedure KU(flag: boolean; UpT,DownT : real; GrafNum : byte);
var
A_ku,L,lgw : real;
begin
lgw:=-1.5;
while lgw<=5 do
begin
A_ku := sqrt(sqr(UpT*pow(10,lgw)) + 1)/sqrt(sqr(DownT*pow(10,lgw)) + 1);
if flag then A_ku := A_ku*(Kw/KwUp);
L:=20*log10(A_ku);
KULAX.Series[GrafNum].AddXY(lgw,L);
lgw:=lgw+0.001;
end;
end;
begin
// Строим в зависимости от случая расположения T3
/// if T1<>T3 then !!! Случай T1 близко T3
KU(true,Ts,T1,0); // так же далее в 1 ненадо
KU(false,T2,T3,1);
case vibor of
1 : begin // 1/T3 левее 1/tau1
end;
2,3 : begin // 1/tau1 < 1/T3 < 1/tau2
KU(false,tau1,T3,2);
end;
4 : begin // 1/T3 правее 1/tau2
KU(false,tau1,T3,2);
KU(false,tau2,T3,3);
end;
end; // case vibor of
end;
//------------------------------------------------------------------------
// Построение запретной зоны для ЛАХ в области низких частот
procedure TForm1.LowDenyZone(Kw,T1 : real);
var
lgw20,lgw40,y : real;
begin
// левее 1/T1 наклон 20
lgw20 := -1.5;
y := -20*lgw20 + 20*log10(Kw);
LAX.Series[2].AddXY(lgw20,y);
// точка 1/T1
lgw20 := log10(1/T1);
y := -20*lgw20 + 20*log10(Kw);
LAX.Series[2].AddXY(lgw20,y);
// правее 1/T1 наклон 40
lgw40 := lgw20 + y/40;
y := 0;
LAX.Series[2].AddXY(lgw40,y);
end;
// Построение ассимптотической ЛАХ разомкнутой системы
procedure TForm1.AssimRaspLax(Kw,taus,tau1,tau2 : real);
var
y, lgw20, lgw40, lgw60, lgw80 : real;
begin
// левее taus
lgw20 := -1.5;
y := -20*lgw20 + 20*log10(Kw);
LAX.Series[0].AddXY(lgw20,y);
// точка taus
lgw20 := log10(1/Ts);
y := -20*lgw20 + 20*log10(Kw);
LAX.Series[0].AddXY(lgw20,y);
// правее taus - наклон 40, точка tau1
lgw40 := log10(1/(vars[8]*0.001));
y := -40*lgw40 + y + 40*lgw20;
LAX.Series[0].AddXY(lgw40,y);
// правее tau1 - наклон 60, точка tau2
lgw60 := log10(1/(vars[9]*0.001));
y := -60*lgw60 + y + 60*lgw40;
LAX.Series[0].AddXY(lgw60,y);
// правее tau2 - наклон 80, точка 5
lgw80 := 5;
y := -80*lgw80 + y + 80*lgw60;
LAX.Series[0].AddXY(lgw80,y);
end;
// Построение ассимптотической желаемой ЛАХ системы
procedure TForm1.AssimZLax(Kw,T1,T2,T3 : real);
var
y, lgw20, lgw40,lgw60,lgw80 : real;
begin
// левее 1/T1 наклон 20
lgw20 := -1.5;
y := -20*lgw20 + 20*log10(Kw);
LAX.Series[1].AddXY(lgw20,y);
// точка 1/T1, правее наклон 40
lgw20 := log10(1/T1);
y := -20*lgw20 + 20*log10(Kw);
LAX.Series[1].AddXY(lgw20,y);
// точка 1/T2, правее наклон 20
lgw40 := log10(1/T2);
y := -40*lgw40 + y + 40*lgw20;
LAX.Series[1].AddXY(lgw40,y);
// точка 1/T3, правее наклон по выюору
lgw20 := log10(1/T3);
y := -20*lgw20 + y + 20*lgw40;
LAX.Series[1].AddXY(lgw20,y);
// точка правее T3 - "-5"
case State of
1 : begin // наклон на 40, на tau1 на 60, на tau2 на 80
// точка 1/T3
lgw40 := log10(1/(vars[8]*0.001));
y := -40*lgw40 + y + 40*lgw20;
LAX.Series[1].AddXY(lgw40,y);
// точка 1/tau2
lgw60 := log10(1/(vars[9]*0.001));
y := -60*lgw60 + y + 60*lgw40;
LAX.Series[1].AddXY(lgw60,y);
// правее 1/tau2
lgw80 := 5;
y := -80*lgw80 + y + 80*lgw60;
LAX.Series[1].AddXY(lgw80,y);
end;
2 : begin // наклон на 60, затем на tau2 на 80
// точка 1/tau2
lgw60 := log10(1/(vars[9]*0.001));
y := -60*lgw60 + y + 60*lgw20;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.