МИНИСТЕРСТВО ОБРАЗОВАНИЯ РФ
Санкт-Петербургский Государственный Технологический
Университет Растительных Полимеров
Кафедра АТЭП
РАСЧЁТНО-ГРАФИЧЕСКАЯ РАБОТА
На тему: «Имитационное моделирование Весовой функции колебательного звена с запаздыванием»
Выполнил: студент гр.542
Проверил:
2003
Математическое описание задачи:
Передаточная функция :
Переходная функция :
Сомножитель 1[t-t] указывает на то, что при значении времени меньше запаздывания значение переходной функции равно нулю. график моделируемой функции
График имеет плавный характер. Т.к. функция имеет запаздывание τ , то выбираю шаги :
Step 1 : τ / 3
Step 2 : p/10l
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
ComboBox1: TComboBox;
StringGrid1: TStringGrid;
Chart1: TChart;
Series1: TLineSeries;
OpenDialog1: TOpenDialog;
Label7: TLabel;
Edit4: TEdit;
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure DannChange(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button3Click(Sender: TObject);
begin
Close
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Время';
StringGrid1.Cells[1,0]:='Переходная функция';
end;
procedure TForm1.Button1Click(Sender: TObject);
Var //описание переменных
K,T,tzap,Vr,L,Q,ksi,Step,Step1,Step2,w:real;
N,I:integer;
S_Nul:string;
begin
//определение исходных данных введенных пользователем
K:=StrToFloat(Edit1.Text);
T:=StrToFloat(Edit2.Text);
ksi:=StrToFloat(Edit4.Text);
S_Nul:='Значение "T" должно быть'#13+' больше нуля!';
If T<=0 then
begin
MessageDlg(S_Nul,mtError,[mbOK],0);
ActiveControl:=Edit2;
Exit;
end;
// Проверка знака ksi
If ksi<0 Then
begin
MessageDlg('Внимание!Значение ksi должно быть от 0 до 1!',mtError,[mbOk],0);
ActiveControl:=Edit3;
Exit;
end;
If ksi>1 Then
begin
MessageDlg('Внимание!Значение ksi должно быть от 0 до 1!',mtError,[mbOk],0);
ActiveControl:=Edit3;
Exit;
end;
tzap:=StrToFloat(Edit3.Text);
N:=StrToInt(ComboBox1.Text);
// Расчет дополнительных переменны
Q:=1/T;
L:=Q*sqrt(1-(ksi*ksi));
//расчет вспомогательных переменных
Step1:=tzap/3;
Step2:=3.14/(10*l);
//задание начальных условий
Vr:=-step1;
//расчет выходных переменных по алгоритму
For I:=1 To N Do
begin //1
IF Vr<=tzap then
step:=step1
else step:=step2;
Vr:=Vr+step;
IF Vr<=tzap then w:=0
else w:=((k*sqr(q)*exp(-ksi*(vr-tzap)))/l)*sin(l*(vr-tzap));
//отражение расчета в визуальных элементах
With StringGrid1 Do
begin //2
Cells [0,I]:=FloatToStrF(Vr,ffFixed,8,4);
Cells [1,I]:=FloatToStrF(w,ffFixed,8,4);
RowCount:=RowCount+1;
end; //2
Series1.AddXY(Vr,w,'',clTeeColor);
end; //1
end;
procedure TForm1.DannChange(Sender: TObject);
Var
N,I:Integer;
begin
N:=StrToInt(ComboBox1.Text);
Series1.Clear;
For I:=1 To N Do
With StringGrid1 Do
begin //1
Cells [0,I]:='_';
Cells [1,I]:='_';
RowCount:=2;
end; //2
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
Var
N,I:Integer;
begin
N:=StrToInt(ComboBox1.Text);
For I:=1 To N Do
With StringGrid1 Do
begin //1
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,' Коэффициент передачи K = ',Edit1.Text);
Writeln(F,' Постоянная времени T = ',Edit2.Text);
Writeln(F,' Такт запаздывания tzap = ',Edit3.Text);
Writeln(F,' Затухание ksi = ',Edit4.Text);
Writeln(F,' Число точек расчета N = ',ComboBox1.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.
ПЕРЕХОДНАЯ ФУНКЦИЯ КОЛЕБАТЕЛЬНОГО ЗВЕНА С ЗАПАЗДЫВАНИЕМ
Параметры звена:
Коэффициент передачи K = 5
Постоянная времени T = 5
Такт запаздывания tzap = 5
Затухание ksi = 0,05
Число точек расчета N = 60
Время Переходная функция
0,0000 0,0000
1,6667 0,0000
3,3333 0,0000
5,0000 0,0000
6,6667 0,3010
8,2386 0,5133
9,8106 0,6453
11,3826 0,6961
12,9545 0,6726
14,5265 0,5879
16,0985 0,4590
17,6704 0,3047
19,2424 0,1436
20,8144 -0,0079
22,3863 -0,1365
23,9583 -0,2334
25,5303 -0,2937
27,1022 -0,3170
28,6742 -0,3065
30,2462 -0,2680
31,8181 -0,2094
33,3901 -0,1392
34,9621 -0,0658
36,5340 0,0033
38,1060 0,0619
39,6780 0,1061
41,2499 0,1337
42,8219 0,1444
44,3939 0,1397
45,9658 0,1222
47,5378 0,0955
49,1098 0,0636
50,6817 0,0301
52,2537 -0,0013
53,8257 -0,0281
55,3976 -0,0483
56,9696 -0,0608
58,5416 -0,0658
60,1135 -0,0636
61,6855 -0,0557
63,2574 -0,0436
64,8294 -0,0290
66,4014 -0,0138
67,9733 0,0005
69,5453 0,0127
71,1173 0,0219
72,6892 0,0277
74,2612 0,0300
75,8332 0,0290
77,4051 0,0254
78,9771 0,0199
80,5491 0,0133
82,1210 0,0063
83,6930 -0,0002
85,2650 -0,0058
86,8369 -0,0100
88,4089 -0,0126
89,9809 -0,0136
91,5528 -0,0132
93,1248 -0,0116
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.