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);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.