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

      else no.Caption:='Двигатель не подходит '+#10+#13+'по перегрузке';

exit;

    end;

    // Отключаем временно кнопки

    Button1.Enabled := False;

    Button7.Enabled := False;

  end //if Button5.Caption = 'Проверить'

  else begin  //  Кнопка дальше

    // !!!<тест 3>

if test_res[3].right<5 then

    begin

      Form1.Enabled:=false;

      Form2.SetTest(3);

      Form2.Show;

    end

    else begin

      PageControl1.ActivePageIndex:=3;

      SensorGrid.Enabled := True; // Таблица с ЧЭ активна для выбора

      // Вывод информации по выбору ЧЭ

      mmChEl.Clear;

      mmChEl.Lines.Add('Для выработки сигнала рассогласования необходимо выбрать чувствительный элемент.'+

        ' Принято считать, что половина статической ошибки следящей системы приходится на чувствительный элемент.'+

        ' Поэтому для выполнения требований по статической точности ошибка чувствительного элемента не должна превышать половину статической ошибки системы.');

      mmChEl.Lines.Add('Выберите чувствительный элемент и нажмите кнопку "Проверить".');

      mmChEl.Lines.Add('Коэффициент передачи вращающегося трансформатора вычисляется по формуле: Kч.э. = Uп*Kтр^2.');

      Button8.Enabled := False; // Кнопка Далее в ЧЭ не активна

// Включаем кнопки

      Button1.Enabled := True;

      Button7.Enabled := True;

      Button5.Caption := 'Проверить';

      yes.Visible:=false;

      no.Visible:=false;

    end; // else begin

  end; // else

end;

procedure TForm1.Edit15Change(Sender: TObject);

begin

  PeredGrid.RowCount:=StrToInt(Edit15.Text)+1; // число ступеней

  ClearTable(DiameterGrid);

  DiameterGrid.RowCount:=2;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

  Form3.Show;

end;

procedure TForm1.SensorGridSelectCell(Sender: TObject; ACol, ARow: Integer;

  var CanSelect: Boolean);

begin

 selected_ch:=ARow;

end;

procedure TForm1.Button2Click(Sender: TObject);

const  fn='./help/helper.html';

begin

  if FileExists(fn) then

  ShellExecute(Handle,'open',fn,NIL,NIL,SW_RESTORE)

  else MessageBox(Handle,'Файл справки не найден','Справка',MB_OK or MB_ICONWARNING);

end;

//----------------------------------------------------------------

function TForm1.AKU(T1, T2, T3,Ts, tau1, tau2, w :real): real;

begin

  Result:= ( sqrt(sqr(T2*w)+1)*sqrt(sqr(tau1*w)+1)*sqrt(sqr(Ts*w)+1) ) / (sqrt(sqr(T1*w)+1)*sqrt(sqr(tau2*w)+1)*sqrt(sqr(T3*w)+1));

end;

function TForm1.PhiKU(tau1, tau2, T2, w :real) : real; //Желаемая ЛФЧХ

begin

  Result:=arctan(w*T2)*180.0/pi+arctan(w*tau1)*180.0/pi-arctan(w*tau2)*180.0/pi-arctan(w*tau2)*180.0/pi;

end;

//----------------------------------------------------------------

///////////////////////////////////////////////////////////////////////////////

procedure TForm1.DrawVerticals(T1,T2,T3,Ts:real);

const min=-300; max=200;

begin

  // T1

  LAX.Series[8].AddXY(log10(1/T1),min);

  LAX.Series[8].AddXY(log10(1/T1),max);

  // T2

  LAX.Series[9].AddXY(log10(1/T2),min);

  LAX.Series[9].AddXY(log10(1/T2),max);

  // T3

  LAX.Series[10].AddXY(log10(1/T3),min);

  LAX.Series[10].AddXY(log10(1/T3),max);

  // taus

  LAX.Series[11].AddXY(log10(1/Ts),min);

  LAX.Series[11].AddXY(log10(1/Ts),max);

  // tau1

  LAX.Series[12].AddXY(log10(1/(vars[8]*0.001)),min);

  LAX.Series[12].AddXY(log10(1/(vars[8]*0.001)),max);

  // tau2

  LAX.Series[13].AddXY(log10(1/(vars[9]*0.001)),min);

  LAX.Series[13].AddXY(log10(1/(vars[9]*0.001)),max);

end;

procedure TForm1.DrawVerticalsKU(T1,T2,T3,Ts,tau1,tau2:real);

const min=-60; max=60;

begin

  KULAX.Series[4].AddXY(log10(1/T1),min);

  KULAX.Series[4].AddXY(log10(1/T1),max);

  KULAX.Series[5].AddXY(log10(1/T2),min);

  KULAX.Series[5].AddXY(log10(1/T2),max);

  KULAX.Series[6].AddXY(log10(1/T3),min);

  KULAX.Series[6].AddXY(log10(1/T3),max);

  KULAX.Series[7].AddXY(log10(1/Ts),min);

  KULAX.Series[7].AddXY(log10(1/Ts),max);