SensorGrid.Cells[2,2]:='400';
SensorGrid.Cells[3,2]:='27';
SensorGrid.Cells[4,2]:='1';
SensorGrid.Cells[5,2]:='25';
//3-й ЧЭ
SensorGrid.Cells[0,3]:='СКТ-6465-Д';
SensorGrid.Cells[1,3]:='1,00';
SensorGrid.Cells[2,3]:='400';
SensorGrid.Cells[3,3]:='36';
SensorGrid.Cells[4,3]:='1';
SensorGrid.Cells[5,3]:='36';
end;
// Кнопка проверить редуктор
procedure TForm1.Button5Click(Sender: TObject);
var i: integer;
var res, plotn, J1, b, Jred, Jdv, Mnom, M_max_priv, M_eqv_priv, gamma_eqv, gamma_per: real;
begin
if Button5.Caption = 'Проверить' then
begin
if (Edit18.Text = '') then
begin
MessageBox(Handle,'Введите отношение J/J1!','Ошибка',MB_OK or MB_ICONERROR);
exit;
end;
for i:=1 to PeredGrid.RowCount-2 do
try
StrToFloat(PeredGrid.Cells[1,i]);
except
begin
MessageBox(Handle,'Данные введены неверно','Ошибка',MB_OK or mb_ICONERROR);
exit;
end;
end;
for i:=1 to PeredGrid.RowCount-2 do
if (StrToFloat(PeredGrid.Cells[1,i])>7.0) or (StrToFloat(PeredGrid.Cells[1,i])<=0.0) then
begin
MessageBox(Handle,'Передаточное число ступени должно лежать в интервале (0;7)!','Ошибка',MB_OK or MB_ICONERROR);
exit;
end;
// Расчёт передаточного числа последней ступени
res:=pch(); // Расчёт передаточного числа
for i:=1 to PeredGrid.RowCount-2 do
res:=res/StrToFloat(PeredGrid.Cells[1,i]);
PeredGrid.Cells[1,PeredGrid.RowCount-1] := FloatToStrF(res,ffFixed,8,6);
if (StrToFloat(PeredGrid.Cells[1,PeredGrid.RowCount-1])>7.0) or (StrToFloat(PeredGrid.Cells[1,PeredGrid.RowCount-1])<=0.0) then
begin
MessageBox(Handle,'Передаточное число ступени должно лежать в интервале (0;7)!','Ошибка',MB_OK or MB_ICONERROR);
exit;
end;
DiameterGrid.RowCount:=PeredGrid.RowCount*2-1;
ClearTable(DiameterGrid);
for i:=0 to PeredGrid.RowCount do
DiameterGrid.Cells[1,2*i+1]:='10';
for i:=1 to PeredGrid.RowCount-1 do
DiameterGrid.Cells[1,2*i]:=FloatToStrF(10*StrToFloat(PeredGrid.Cells[1,i]),ffFixed,5,4);
//Расчёт отношения J/J1.
plotn:=StrToFloat(Edit16.Text)*1000.0;
b:=StrToFloat(Edit17.Text)/1000.0;
J1:=pi*plotn*(0.00000001)*b/32;
// Проверка Jred
try
Jred:=J1*StrToFloat(Edit18.Text);
except
begin
MessageBox(Handle, 'Определите отношение J/J1 по номограмме','Ошибка',MB_OK or MB_ICONERROR);
exit;
end;
end;
// Проверка гамма эквивалентного и перегрузки
Jdv:=StrToFloat(EngineGrid.Cells[11,selected])*0.000000001;
Mnom:=StrToFloat(EngineGrid.Cells[6,selected])*0.00001;
M_max_priv := vars[1]/(vars[10]*pch()) + (Jred+Jdv+vars[2]/(pch()*pch()) )*vars[4]*pch();
M_eqv_priv := sqrt( 0.5*sqr(Jred+Jdv+vars[2]/(pch()*pch()))*sqr(vars[4]*pch()) + sqr(vars[1]/(vars[10]*pch())) );
gamma_eqv := Mnom/M_eqv_priv; //Overheat coefficient
gamma_per := M_max_priv/Mnom; //Overload coefficient
// Вывод значений кожффициентов и Jred
Edit19.Text := FloatToStr(Jred);
Edit11.Text := FloatToStr(gamma_eqv);
Edit12.Text := FloatToStr(gamma_per);
if (gamma_eqv>=0.7) and (gamma_per<=2.8) and (gamma_per>=1.3) then
begin
yes.Visible:=true;
Button5.Caption := 'Дальше >>';
mmRedu.Lines.Add('Двигатель подходит, для дальнейшего рассчёта нажмите кнопку "Дальше >>"');
end
else begin
no.Visible:=true;
mmRedu.Lines.Add('Двигатель не подходит, выберите другой двигатель.');
if not(gamma_eqv >= 0.7) then no.Caption:='Двигатель не подходит '+#10+#13+'по перегреву'
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.