'выбора схожих по требуемой мощности двигателей, проводится полный расчёт для каждого двигателя '+
'и определяются коэффициенты переграва и перегрузки двигателей. Если коэффициенты удовлетворяют '+
'следующим требованиям, то двигатель считается подходящим: ');
mmBase.Lines.Add('1,3 < Коэффициент перегрузки < 2,8; Коэффициент перегрева > 0,7.');
mmBase.Lines.Add('При полном расчёте двигателей пользуйтесь расчётными формулами №1.');
mmBase.Lines.Add('Момент инерции редуктора при полном расчёте двигателя, берётся равным моменту инерции двигателя.');
imFormuls.Show; // Показываем формулы <если пройден тест> !!!
// Включение кнопок
Button7.Enabled := True; // Включаем кнопку расчёта двигателей
Button7.Caption := 'Полный расчёт';
Button7.SetFocus;
Button1.Caption := 'Начать расчёт'; // Меняем заголовок кнопки
bbVar.Enabled := True;
end; // else begin
end; // else if Button1.Caption := 'Дальше >>' then
end;
procedure TForm1.OpenDatabase();
var
i : integer;
Path : String;
begin
//Подключаем таблицу
try
// Получам путь к базе данных
Path:=Application.ExeName; // полный путь и название запущенной программы
Path:=ExtractFileDir(Path); // отбрасываем название программы. Остается путь.
if Path[Length(Path)]<>'\' then Path:=Path+'\'; // если последний символ не \ то добавить его
{Последняя строка нужна для присвоения последнего символа '\',
потому что при обрезке файла 'C:\PROG.EXE' получим 'C:\',
а при обрезке 'C:\WINDOWS\PROG.EXE' получим 'C:\WINDOWS' }
Table1.DataBaseName := Path; // Путь к БД
Table1.Active:=true;
except
begin
{Если нельзя открыть таблицу - закрываем программу}
Table1.Active:=false;
Application.MessageBox('Не могу подключить базу с двигателями.','Ошибка базы данных.',MB_OK or MB_ICONERROR);
exit;
end;
end;
//Выравниваем ширину столбцов в таблице
for i:=2 to 5 do
DBGrid1.Columns[i].Width:=50;
for i:=6 to DBGrid1.Columns.Count-3 do
DBGrid1.Columns[i].Width:=70;
DBGrid1.Columns[0].Width:=15;
DBGrid1.Columns[1].Width:=100;
DBGrid1.Columns[DBGrid1.Columns.Count-2].Width:=75;
DBGrid1.Columns[DBGrid1.Columns.Count-1].Width:=75;
end;
procedure TForm1.CloseDatabase();
begin
Table1.Active:=false;
end;
// Вычисление гамма_экспуатации и гамма_перегрузки
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
var Omega_dv, i, M_max_priv, M_eqv_priv, Jred, Jdv, gamma_per, gamma_eqv :real;
begin
//Memo1.Lines.Add(Table1.FieldByName('Engine').AsString);
Omega_dv := Table1.FieldByName('Nn').AsInteger*2*pi/60.0;
//Memo1.Lines.Add('Omega_dv ='+FloatToStr(Omega_dv));
i := Omega_dv/vars[3]; // можно отбросить дробную часть
//Memo1.Lines.Add('i = '+FloatToStr(Omega_dv)+'/'+FloatToStr(vars[3])+' = '+FloatToStr(i));
Jdv:=Table1.FieldByName('J').AsFloat*0.000000001;
Jred:=Jdv;
//Memo1.Lines.Add('Jred ='+FloatToStr(Jred));
// Рассчёт моментов
M_max_priv := vars[1]/(vars[10]*i) + (Jred+Jdv+vars[2]/(i*i) )*vars[4]*i;
M_eqv_priv := sqrt( 0.5*sqr(Jred+Jdv+vars[2]/(i*i))*sqr(vars[4]*i) + sqr(vars[1]/(vars[10]*i)) );
//Memo1.Lines.Add('M_max_priv ='+FloatToStr(M_max_priv));
//Memo1.Lines.Add('M_eqv_priv ='+FloatToStr(M_eqv_priv));
gamma_eqv := (Table1.FieldByName('Mnom').AsFloat*0.00001)/M_eqv_priv; //Overheat coefficient
gamma_per := M_max_priv/(Table1.FieldByName('Mnom').AsFloat*0.00001); //Overload coefficient
//Memo1.Lines.Add('gamma_eqv ='+FloatToStr(gamma_eqv));
//Memo1.Lines.Add('gamma_per ='+FloatToStr(gamma_per));
//Заполняем калькулируемое поле таблицы.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.