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

          LAX.Series[1].AddXY(lgw60,y);

          // правее 1/tau2

          lgw80 := 5;

          y := -80*lgw80 + y + 80*lgw60;

          LAX.Series[1].AddXY(lgw80,y);

        end;

    3 : begin // случай tau2 := T3

          // правее 1/T3

          lgw80 := 5;

          y := -80*lgw80 + y + 80*lgw20;

          LAX.Series[1].AddXY(lgw80,y);

        end;

    4 : begin // случай T3 правее tau2

          // правее 1/T3

          lgw80 := 5;

          y := -80*lgw80 + y + 80*lgw20;

          LAX.Series[1].AddXY(lgw80,y);

        end;

  end;

end;

// Вычисление Ts и выбор вычисления Kw

procedure TForm1.CalcForDraw();

const st = 'Первая постоянная времени T1 меньше постоянной времени системы менее , чем на 10 с. '+

      'Можно выбрать постоянную времени T1 равную tau системы, тем самым упростив вид корретирующего устройства. '+

      'Благоприятным условием будет так же, то что добротность по скорости будет иметь минимальную величину, '+

      'однако добротность по ускорению будет больше минимального возможного значения и вся ЛАХ будет сдвигаться '+

      'в область более высоких частот, что затрудняет демпфирование.';

var Tdv, Jred, Jdv, Wk, WTs: real;

var betha, Nxx, Mp: real;

begin

  //Рассчёт.

  Tdv   := StrToFloat(EngineGrid.Cells[10,selected])*0.001;

  Jred  := StrToFloat(Edit19.Text);

  Jdv   := StrToFloat(EngineGrid.Cells[11,selected])*0.000000001;

  //Постоянная времени двигателя с учётом нагрузки на валу

Ts    := Tdv*( 1 + Jred/Jdv + vars[2]/(Jdv*pch()*pch()) );

  Nxx   := StrToFloat(EngineGrid.Cells[9,selected]);

  Mp    := StrToFloat(EngineGrid.Cells[7,selected])*0.00001;

  betha := (2*pi*Nxx)/(60*vars[10]*Mp*pch()*pch());

  Wk := vars[4]/vars[3];  // Частота качки

  WTs := 1/Ts; // Частота для tao системы

  T1 := 1 / Wk;  // Первая постоянная времени для построения ЖЛАХ

Kw := sqrt(2)*(sqrt(2)*vars[3]+betha*vars[1])/(pi*vars[5]/180.0/60.0);

  // Вывод численных значений

  Label22.Caption:='b = '+FloatToStrF(betha,ffFixed,10,5)+' рад/(сек*кг)'; // Вывод значения betha

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

  Label72.Caption:='L(Wk) = '+FloatToStrF(20*log10(Kw/Wk),ffFixed,10,5); // Вывод значения betha

  // Случай если Wk больше WTs

  if WTs < Wk then

  begin

    MmEvent.Lines.Add('Частота системы (1/taus) меньше, чем частота качки Wk,'+

     'для увеличения точности исходной системы необходимо увеличить добротность системы, иначе точность');

    MmEvent.Lines.Add(' будет достигнута только с помощью корректирующего устройства.');

    Form1.Enabled := False;

    FmChoose.Caption := 'Выбор первой постоянной времени для построения желаемой ЛАХ';

fmChoose.Show;        // выбираем Kw

  end

  else // WTs > Wk

  begin

   { //!!! Случай если WTs близко и больше к Wk

if Ts-T1 < 10 then

      if Application.MessageBox(st,'Выбор постоянной времени T1',MB_YESNO or MB_ICONASTERISK)=mrYes then

      begin

        T1 := Ts; // этим мы избегаем коррекции

        MmEvent.Lines.Add('Постоянная времени T1 была изменена, для упрощения вида ЛАХ корректирующего устройства, '+

          'T1 равна постоянной времени системы.');

      end;                 }

    // Стандартный вариант

    KwUp := Kw;      // Расчёт KwUp

TestT3; // Выбор T3

  end;

end;

// Вывод передаточных функций

procedure TForm1.WritePf(Kw, KwUp, Ts, tau1, tau2, T1, T2, T3: real; vibor: byte);

var

  ftau1,ftau2 :real;

  st1,st2,st3,stdown : string;

begin

  MmPf.Font.Size := 10; // Размер шрифта

  MmPf.Clear;

  // ПФ двигателя

  MmPf.Lines.Add('Передаточная функция двигателя:');

  MmPf.Lines.Add('');

  MmPf.Lines.Add('                      '+FloatToStrF(Kdvi, ffFixed, 5, 2));

MmPf.Lines.Add('W(p) = -----------------------');

  MmPf.Lines.Add('                p*('+FloatToStr(StrToFloat(EngineGrid.Cells[10,selected])*0.001)+'*p+1)');

  MmPf.Lines.Add('');