// Определение исходных данных, введенных пользователем
S_NUL:='Введите параметры объекта';
If (Edit1.Text='') or (Edit2.Text='')or (Edit3.Text='') Then
Begin //
MessageDlg(S_NUL,mtError,[mbok],0);
Exit;
end;
K:=StrToFloat(Edit1.Text);
T:=StrToFloat(Edit2.Text);
E:=StrToFloat(Edit3.Text);
N:=StrToInt(ComboBox1.Text);
S_NUL:='Значение "Т" должно быть '#13+' БОЛЬШЕ НУЛЯ!!! ';
If T<=0 Then
Begin//
MessageDlg(S_NUL,mtError,[mbok],0);
ActiveControl:=Edit2;
Exit;
end;
S_NUL:='Значение "E" должно быть '#13+' 0<E<0.707!!!';
If (E<=0) or (E>=0.707) Then
Begin//
MessageDlg(S_NUL,mtError,[mbok],0);
ActiveControl:=Edit3;
Exit;
end;
//Расчет вспомогательных переменных
Max:=(1/T)*sqrt(1-2*sqr(E));
step1:=Max/15;
step2:=Max/20;
//Задание начальных условий
W:=-step1;
//Расчет по алгоритму выходных переменных
For I:=1 To N Do
begin //2
If W<=Max Then
step:=step1
Else
step:=step2;
W:=W+step;
A:=abs(K)/sqrt(sqr(1-sqr(W)*sqr(T))+4*sqr(E)*sqr(W)*sqr(T));
//Отражение расчета в визуальных элементах
With StringGrid1 Do
begin //3
Cells[0,I]:=FloatToStrF(W,ffFixed,8,4);
Cells[1,I]:=FloatToStrF(A,ffFixed,8,4);
RowCount:=RowCount+1;
end;//3
Series1.AddXY(W,A,'',ClTeeColor);
end;//2
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
With StringGrid1 Do
begin //
Cells[0,0]:=' Частота';
Cells[1,0]:='Амплитуда';
RowCount:=2;
end;//
end;
//Обнуление элементов вывода
procedure TForm1.Edit1Change(Sender: TObject);
Var
N,I:Integer;
begin
Series1.Clear;
N:=StrToInt(ComboBox1.Text);
For I:=1 To N Do
With StringGrid1 Do
begin //2
Cells[0,I]:='';
Cells[1,I]:='';
RowCount:=2;
end;//2
end;
procedure TForm1.Button2Click(Sender: TObject);
Var
F:TextFile;
NameFile:string;
I,N:Integer;
begin//1
//Проверка существования расчета
If StringGrid1.Cells[0,1]='' then
Begin//2
MessageDlg ('Нет расчета амплитудной частотной характеристики',mtError,[mbok],0);
Exit;
end;//2
N:=StrToInt(ComboBox1.Text);
If OpenDialog1.Execute then
begin//3
NameFile:=OpenDialog1.FileName;
AssignFile(F,NameFile);//Назначение файлу имени файловой переменной F
//Открытие файла для записи
Rewrite(F);
Writeln(F,' Амплитудная частотная характеристика колебательного звена');
Writeln(F);
Writeln(F,' Параметры звена: ');
Writeln(F,' Коэффициент передачи К = ',Edit1.Text);
Writeln(F,' Постоянная времени Т = ',Edit2.Text);
Writeln(F,' Коэффициент затухания Е = ',Edit3.Text);
Writeln(F);
Writeln(F,' Частота ','Амплитуда');
With StringGrid1 Do
For I:=1 To N Do
Writeln(F,' ',Cells[0,I],' ',Cells[1,I]);
//Закрытие файла
CloseFile(F);
//Сообщение о завершении операции записи
MessageDlg ('Амплитудная частотная характеристика записана в файл',mtInformation,[mbok],0);
end;//3
end;//1
end.
Пример расчета АЧХ:
Текстовый файл:
Параметры звена:
Коэффициент передачи К = 5
Постоянная времени Т = 20
Коэффициент затухания Е = 0,4
Частота Амплитуда
0,0000 5,0000
0,0027 5,0103
0,0055 5,0412
0,0082 5,0932
0,0110 5,1665
0,0137 5,2618
0,0165 5,3796
0,0192 5,5198
0,0220 5,6820
0,0247 5,8641
0,0275 6,0620
0,0302 6,2677
0,0330 6,4683
0,0357 6,6446
0,0385 6,7711
0,0412 6,8193
0,0440 6,7643
0,0460 6,6472
0,0481 6,4663
0,0502 6,2293
0,0522 5,9484
0,0543 5,6381
0,0563 5,3125
0,0584 4,9840
0,0605 4,6619
0,0625 4,3529
0,0646 4,0612
0,0667 3,7888
0,0687 3,5364
0,0708 3,3038
0,0728 3,0902
0,0749 2,8943
0,0770 2,7149
0,0790 2,5506
0,0811 2,4000
0,0831 2,2618
0,0852 2,1349
0,0873 2,0181
0,0893 1,9106
0,0914 1,8113
0,0935 1,7196
0,0955 1,6347
0,0976 1,5559
0,0996 1,4828
0,1017 1,4147
0,1038 1,3513
0,1058 1,2921
0,1079 1,2367
0,1099 1,1849
0,1120 1,1363
0,1141 1,0907
0,1161 1,0479
0,1182 1,0075
0,1203 0,9695
0,1223 0,9337
0,1244 0,8998
0,1264 0,8678
0,1285 0,8375
0,1306 0,8087
0,1326 0,7815
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.