Имитационное моделирование Весовой функции колебательного звена с запаздыванием. Определение исходных данных введенных пользователем

Страницы работы

Содержание работы

                        МИНИСТЕРСТВО ОБРАЗОВАНИЯ РФ

Санкт-Петербургский Государственный Технологический

Университет Растительных Полимеров

Кафедра АТЭП

РАСЧЁТНО-ГРАФИЧЕСКАЯ РАБОТА

По дисциплине: «Моделирование систем»

На тему: «Имитационное моделирование Весовой функции колебательного  звена с запаздыванием»

Выполнил:                                            студент гр.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

Похожие материалы

Информация о работе