Создание обучающей системы автоматизированного проектирования маломощных электромеханических следящих систем, страница 56

  Label43.Caption:='T3 = '+FloatToStrF(T3,ffFixed,10,5)+' сек';

  label32.Caption:='tau1 = '+FloatToStrF(vars[8]*0.001,ffFixed,10,5)+' сек';

  label33.Caption:='tau2 = '+FloatToStrF(vars[9]*0.001,ffFixed,10,5)+' сек';

  Label53.Caption := '1/taus='+FloatToStrF(1/Ts,ffFixed,10,5)+' 1/сек';

  Label54.Caption := '1/tau1='+FloatToStrF(1000/vars[8],ffFixed,10,5)+' 1/сек';

  Label55.Caption := '1/tau2='+FloatToStrF(1000/vars[9],ffFixed,10,5)+' 1/сек';

  Label56.Caption := '1/T1='+FloatToStrF(1/T1,ffFixed,10,5)+' 1/сек';

  Label57.Caption := '1/T2='+FloatToStrF(1/T2,ffFixed,10,5)+' 1/сек';

  Label58.Caption := '1/T3='+FloatToStrF(1/T3,ffFixed,10,5)+' 1/сек';

  // Прокручиваем вверх поле изменения и ПФ

SendMessage(MmEvent.Handle, WM_VSCROLL, SB_TOP, 0);

// ПОСТРОЕНИЕ АССИМПТОТИЧЕСКОЙ ЛАХ РАЗОМКНУТОЙ СИСТЕМЫ

  AssimRaspLax(KwUp,Ts,vars[8]*0.001,vars[9]*0.001);

// ПОСТРОЕНИЕ ПОЛЮСОВ.

  DrawVerticals(T1,T2,T3,Ts);

// ПОСТРОЕНИЕ АССИМПТОТИЧЕСКОЙ ЖЕЛАЕМОЙ ЛАХ

  AssimZLax(Kw,T1,T2,T3);

// ПОСТРОЕНИЕ ЗАПРЕТНОЙ ЗОНЫ ДЛЯ ЛАХ В ОБЛАСТИ НИЗКИХ ЧАСТОТ

  LowDenyZone(Kw,T1);

// ПОСТРОЕНИЕ ИСХОДНЫХ ЛАХ И ЛФЧХ

LaxRazomkn(Kw,Ts,vars[8]*0.001,vars[9]*0.001);

// ПОСТРОЕНИЕ ЖЕЛАЕМЫХ ЛАХ И ЛФЧХ

  LAXZhelaem(Kw,T1,T2,T3,vars[8]*0.001,vars[9]*0.001,State);

// ПОСТРОЕНИЕ ЛАХ КОРРЕКТИРУЮЩЕГО УСТРОЙСТВА

  LaxKU(KwUp,Kw,T1,T2,T3,vars[8]*0.001,vars[9]*0.001,State);

// ВЫВОД ПЕРЕДАТОЧНЫХ ФУНКЦИЙ

  WritePf(Kw,KwUp,Ts,vars[8]*0.001,vars[9]*0.001,T1,T2,T3,State);

SendMessage(MmPf.Handle, WM_VSCROLL, SB_TOP, 0); // Прокрутка вверх

// ПОСТРОЕНИЕ ТОЧНОЙ ЛАХ КОРРЕКТИРУЮЩЕГО УСТРОЙСТВА

  AssimKULax(Kw,KwUp,Ts,vars[8]*0.001,vars[9]*0.001,T1,T2,T3,State);

  DrawVerticalsKU(T1,T2,T3,Ts,vars[8]*0.001,vars[9]*0.001);

end;

// Выбор постоянной времени T3

function TForm1.TestT3: Byte;

const

  s1 = 'Сопрягающая частота (1/T3) меньше частоты (1/tau1), поэтому желаемая ЛАХ имеет'+

    ' вид 1-2-1-2-3-4, корректирующее устройство будет физически реализуемо, и дополнительных изменений не требуется.';

  s2 = 'Так как сопрягающая частота (1/T3) лежит в интервале частот [(1/tau1);(1/tau2)], необходимо уменьшить постоянную времени'+

    ' T3 в два раза, иначе желаема ЛФЧХ попадёт в запретную область, и коррекция будет невозможна. Постоянная времени T3 была уменьшена в 2 раза,'+

    ' корректирующее устройство физически реализуемо, ЛАХ имеет вид 1-2-1-3-4.';

  s3 = 'Так как сопрягающая частота (1/T3) больше частоты (1/tau2), необходимо уменьшить постоянную времени'+

    ' T3 в три раза, иначе желаема ЛФЧХ попадёт в запретную область, и коррекция будет невозможна. Постоянная времени T3 была уменьшена в 3 раза,'+

    ' корректирующее устройство сложно физически реализовать,  ЛАХ имеет вид 1-2-1-4.';

  s4 = 'Для упрощения физической реализации корректирующего устройства можно изменить некоторые характеристики усилителя и исходной системы, так чтобы'+

    ' постоянная премени tau2, стала равной T3, тогда корректирующее устройство будет иметь более простой вид.';

  s5 = 'При пересчёте постоянной времени T3 (уменьшении в 2 раза), сопрягающая частота (1/T3)попадает за частоту(1/tau2), следовательно необходимо'+

   ' ещё раз пересчитать постоянную времени T3, уменьшив её в три раза.';

var

  W0 : Real;

begin

  W0 := sqrt(Kw/T1); //!!! Вместо T1 было Ts ошибка в курсовых

T3 := sqrt(vars[7]*(vars[7]-1))/(W0*(vars[7]+1));

  // T3 левее tau1

  if (1/T3) < (1/(vars[8]*0.001)) then

  begin

    State := 1;

    MmEvent.Lines.Add(s1);

  end;

  // T3 правее tau1 и левее tau2

if ((1/T3) >= (1/(vars[8]*0.001))) and ((1/T3) < (1/(vars[9]*0.001)) ) then

  begin

    T3 := sqrt(vars[7]*(vars[7]-1))/(2*W0*(vars[7]+1));

    if (1/T3) < (1/(vars[9]*0.001)) then

    begin    // после пересчёта тот же случай

State := 2;

      MmEvent.Lines.Add(s2);

      MmEvent.Lines.Add('(1/T3) = '+FloatToStrF((1/T3), ffFixed, 6,3)+'.');

    end