procedure AssimRaspLax(Kw,taus,tau1,tau2 : real); // Построение ассимптотической ЛАХ исх. сист.
procedure AssimZLax(Kw,T1,T2,T3 : real); // Построение ассимптотической желаемой ЛАХ системы
procedure LowDenyZone(Kw,T1 : real); // Построение запретной зоны для ЛАХ в области низких частот
procedure WritePf(Kw, KwUp, Ts, tau1, tau2, T1, T2, T3: real; vibor: byte); // Вывод передаточных функций
procedure AssimKULax(Kw, KwUp, Ts, tau1, tau2, T1, T2, T3: real; vibor : byte); // Ассимптотическая ЛАХ КУ
// procedure WMSize(var Msg: TWMSize); message WM_SIZE;// Обработка сообщений Windows: WM_SIZE
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
vars: array [1..10] of real; //Исходные данные, вводимые пользователем.
power: real; //Мощность двигателя - глобальная.
Ts,Kw,KwUp,T1,T2,T3 : real; // Постоянные для построения ЛАХ
State : Byte; // Вариант постоения ЖЛах после T3
Kdvi: real; // КОэффициент усиления двигателя!!!
selected, selected_ch: integer;
curDM, curU, curUCol: integer;
implementation
uses Unit2, Unit3, Unit4, Unit5, Unit6;
{$R *.dfm}
function pow(x,y:real):real;
begin
Result:= exp(y*ln(x));
end;
function TForm1.pch(): real;
begin
Result := StrToFloat(EngineGrid.Cells[8,selected])*2*pi/60.0/vars[3];
end;
procedure TForm1.ClearTable(Grid: TStringGrid);
var i,j:integer;
begin
for i:=1 to Grid.RowCount-1 do
for j:=1 to Grid.ColCount-1 do
Grid.Cells[j,i]:='';
end;
procedure TForm1.CopyAppropriate();
var i,j:integer;
begin
EngineGrid.ColCount := Table1.FieldCount;
EngineGrid.Cells[EngineGrid.ColCount-2,0]:='Peregrev';
EngineGrid.Cells[EngineGrid.ColCount-1,0]:='Peregruzka';
//Вписываем имена столбцов.
for j:=1 to Table1.FieldCount-3 do EngineGrid.Cells[j,0] := Table1.Fields[j].DisplayName;
Table1.First;
for i:=1 to Table1.RecordCount do
begin
{УСЛОВИЕ ОТБОРА ЗАПИСЕЙ ИЗ ТАБЛИЦЫ!!!}
if (Table1.FieldByName('Peregrev').AsFloat>=0.7) and (Table1.FieldByName('Peregruzka').AsFloat<=2.8) and
(Table1.FieldByName('Peregruzka').AsFloat>=1.3) then
begin
//Делаем номер записи.
EngineGrid.Cells[0,EngineGrid.RowCount-1]:=IntToStr(EngineGrid.RowCount-1);
//Копируем запись в таблицу.
for j:=1 to Table1.FieldCount-3 do EngineGrid.Cells[j, EngineGrid.RowCount-1] := Table1.Fields[j].AsString;
//Добавляем запись из невидимых столбцов.
EngineGrid.Cells[EngineGrid.ColCount-2,EngineGrid.RowCount-1]:=FloatToStrF(Table1.FieldByName('Peregrev').AsFloat,ffFixed,5,4);
EngineGrid.Cells[EngineGrid.ColCount-1,EngineGrid.RowCount-1]:=FloatToStrF(Table1.FieldByName('Peregruzka').AsFloat,ffFixed,5,4);
//Увеличиваем кол-во рядов.
EngineGrid.RowCount:=EngineGrid.RowCount+1;
end;
Table1.Next;
end;
Table1.First;
//Удаляем лишний ряд.
if EngineGrid.RowCount>2 then EngineGrid.RowCount:=EngineGrid.RowCount-1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
// Выключение кнопок временное
Button7.Enabled := False; // Выключаем кнопку расчёта двигателей
Button5.Enabled := False; // Кнопка редуктора
bbVar.Enabled := False; // Кнопка выбора данных
if Button1.Caption = 'Начать расчёт' then
begin
//Подготавливаем всё для расчёта.
Label18.Caption:='';
CloseDatabase();
EngineGrid.RowCount:=2;
for i:=0 to EngineGrid.ColCount do EngineGrid.Cells[i,1]:='';
for i:=1 to UpDown1.Max do PeredGrid.Cells[1,i]:=''; UpDown1.Position:=1;
{Проверяем корректность введённых данных}
try {Пытаемся преобразовать строки в числа}
vars[1]:=StrToFloat(Edit1.Text);
vars[2]:=StrToFloat(Edit2.Text);
vars[3]:=StrToFloat(Edit3.Text);
vars[4]:=StrToFloat(Edit4.Text);
vars[5]:=StrToFloat(Edit5.Text);
vars[6]:=StrToFloat(Edit6.Text);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.