Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Распечатка текста основного программного модуля.

Поиск

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, jpeg, ComCtrls, TabNotBk, Grids, TeeProcs,

TeEngine, Chart, Series;

 

type

TForm1 = class(TForm)

TabbedNotebook1: TTabbedNotebook;

Image1: TImage;

Label1: TLabel;

Panel1: TPanel;

GroupBox1: TGroupBox;

Label2: TLabel;

Label3: TLabel;

Image2: TImage;

Edit1: TEdit;

Edit2: TEdit;

GroupBox2: TGroupBox;

Image5: TImage;

Label4: TLabel;

Label5: TLabel;

Edit3: TEdit;

GroupBox3: TGroupBox;

Image6: TImage;

Label6: TLabel;

Label7: TLabel;

Edit4: TEdit;

GroupBox5: TGroupBox;

Image7: TImage;

Label8: TLabel;

Label10: TLabel;

Edit5: TEdit;

Edit7: TEdit;

GroupBox4: TGroupBox;

Image3: TImage;

Label11: TLabel;

Label12: TLabel;

Edit8: TEdit;

Edit9: TEdit;

GroupBox6: TGroupBox;

Image4: TImage;

Label13: TLabel;

Label14: TLabel;

Edit10: TEdit;

Edit11: TEdit;

GroupBox7: TGroupBox;

Label15: TLabel;

Edit12: TEdit;

GroupBox8: TGroupBox;

Label16: TLabel;

Edit13: TEdit;

GroupBox9: TGroupBox;

Label17: TLabel;

Edit14: TEdit;

Label9: TLabel;

Label18: TLabel;

Edit6: TEdit;

Edit15: TEdit;

Panel3: TPanel;

Panel4: TPanel;

Label19: TLabel;

Label20: TLabel;

ComboBox2: TComboBox;

Label21: TLabel;

Label22: TLabel;

ComboBox1: TComboBox;

Panel5: TPanel;

Label23: TLabel;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

Label24: TLabel;

RadioButton3: TRadioButton;

RadioButton4: TRadioButton;

Panel6: TPanel;

Button2: TButton;

Chart1: TChart;

StringGrid1: TStringGrid;

Series1: TLineSeries;

Series2: TLineSeries;

Series3: TLineSeries;

Button3: TButton;

OpenDialog1: TOpenDialog;

Button1: TButton;

Series4: TLineSeries;

Series5: TLineSeries;

procedure Button2Click(Sender: TObject);

procedure ComboBox2Change(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

//описание переменных системы

d,C0,Cf,K,Tau,Kf,Tf,K1,K2,Kpo,Kim,Kd,b1,b2,C1,C2,g: real;

//описание сигналов

Yf,Y1,Y,S: real;

// описание сигналов в виде массива

X,U,R,Y0: array of real;

//описание режимных показателей

T0,Vr: real;

N1:integer;

m:integer;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.ComboBox2Change(Sender: TObject);

var

i:integer;

begin

X:=NIL;

Y0:=NIL;

U:=NIL;

R:=NIL;

Series1.clear;

Series2.clear;

Series3.clear;

Series4.clear;

Series5.clear;

For I:=1 to N1 do

with StringGrid1 do

begin

Cells[0,i]:='';

Cells[1,i]:='';

Cells[2,i]:='';

Cells[3,i]:='';

Cells[4,i]:='';

Cells[5,i]:='';

RowCount:=2;

end;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

var

n,i:integer;

begin

// процедура очистки

X:=NIL;

Y0:=NIL;

U:=NIL;

R:=NIL;

N1:=1;

Series1.clear;

Series2.clear;

Series3.clear;

Series4.clear;

Series5.clear;

For I:=1 to N1 do

with StringGrid1 do

begin

Cells[0,i]:='';

Cells[1,i]:='';

Cells[2,i]:='';

Cells[3,i]:='';

Cells[4,i]:='';

Cells[5,i]:='';

RowCount:=2;

end;

//процедура инициализации переменных и задания начальных значений

C0:=StrToFloat(Edit3.Text);

Cf:=StrToFloat(Edit4.Text);

K:=StrToFloat(Edit5.Text);

Tau:=StrToFloat(Edit7.Text);

Kf:=StrToFloat(Edit8.Text);

Tf:=StrToFloat(Edit9.Text);

K1:=StrToFloat(Edit10.Text);

K2:=StrToFloat(Edit11.Text);

Kpo:=StrToFloat(Edit14.Text);

Kim:=StrToFloat(Edit12.Text);

Kd:=StrToFloat(Edit13.Text);

C1:=StrToFloat(Edit6.Text);

C2:=StrToFloat(Edit15.Text);

b1:=StrToFloat(Edit2.Text);

b2:=StrToFloat(Edit1.Text);

T0:=StrToInt(ComboBox2.Text);

N1:=StrToInt(ComboBox1.Text);

N1:=N1+1;

//задание размерности массивов

Setlength(X,N1+1);

Setlength(U,N1+1);

Setlength(Y0,N1+1);

Setlength(R,N1+1);

//задание начальных условий

X[0]:=0;

U[0]:=0;

R[0]:=0;

Y0[0]:=0;

Y:=0;

g:=0;

Yf:=0;

Y1:=0;

S:=0;

Vr:=-T0;

m:=trunc(Tau/T0);

// процедура проверки допустимости введеных значений

//проверка коэффициента датчика

if Kd=0 then

begin

messagedlg('Введите К датчика!',mtError,[mbOK],0);

Exit;

end;

//проверка коэффициента исполнительного механизма

if Kim=0 then

begin

messagedlg('Введите К исполнительного механизма!',mtError,[mbOK],0);

Exit;

end;

//проверка коэффициента регулирующего органа

if Kpo=0 then

begin

messagedlg('Введите К регулирующего органа!',mtError,[mbOK],0);

Exit;

end;

//проверка b1

if b1<=0 then

begin

messagedlg('Введите b1 больше нуля!',mtError,[mbOK],0);

Exit;

end;

//проверка b2

if (b2>=0) or (b2>b1) then

begin

messagedlg('Введите b2 меньше нуля!',mtError,[mbOK],0);

Exit;

end;

//проверка C1

if C1<=0 then

begin

messagedlg('Введите C1 больше 0!',mtError,[mbOK],0);

Exit;

end;

//проверка C2

if C2>=0 then

begin

messagedlg('Введите C2 меньше 0!',mtError,[mbOK],0);

Exit;

end;

//проверка C0

if C0=0 then

begin

messagedlg('Введите C0 не равное нулю!',mtError,[mbOK],0);

Exit;

end;

//проверка Cf

if Cf=0 then

begin

messagedlg('Введите Cf не равное нулю!',mtError,[mbOK],0);

Exit;

end;

//проверка К

if K<=0 then

begin

messagedlg('Введите K больше нуля!',mtError,[mbOK],0);

Exit;

end;

//проверка tau

if tau<=0 then

begin

messagedlg('Введите tau больше нуля!',mtError,[mbOK],0);

Exit;

end;

//проверка Кf

if K<=0 then

begin

messagedlg('Введите Kf больше нуля!',mtError,[mbOK],0);

Exit;

end;

//проверка Tf

if tau<=0 then

begin

messagedlg('Введите Tf больше нуля!',mtError,[mbOK],0);

Exit;

end;

// процедура формирования таблицы

StringGrid1.FixedRows:=1;

if (RadioButton1.Checked=true) then //Линейная система по заданию

with StringGrid1 do

begin

cells[0,0]:= ' Время ';

cells[1,0]:= ' Задание G(t) ';

cells[2,0]:= ' Возмущение f(t)';

cells[3,0]:= ' Система Y(t)';

cells[4,0]:='';

cells[5,0]:='';

RowCount:=2;

end;

 

if (RadioButton2.Checked=true) then //Линейная система по возмущению

with StringGrid1 do

begin

cells[0,0]:= ' Время ';

cells[1,0]:= ' Возмущение f(t) ';

cells[2,0]:= ' Yf(t)';

cells[3,0]:= ' Система Y(t)';

cells[4,0]:='';

cells[5,0]:='';

RowCount:=2;

end;

 

if (RadioButton3.Checked=true) then //Нелинейная система по заданию

with StringGrid1 do

begin

cells[0,0]:= ' Время ';

cells[1,0]:= ' Задание G(t)';

cells[2,0]:= ' Вход рег.орг S(t)';

cells[3,0]:= ' Выход рег.орг U(t)';

cells[4,0]:= ' Возмущение f(t)';

cells[5,0]:= ' Система Y(t)';

RowCount:=2;

end;

 

if (RadioButton4.Checked=true) then //Нелинейная система по возмущению

with StringGrid1 do

begin

cells[0,0]:= ' Время ';

cells[1,0]:= ' Возмущение f(t)';

cells[2,0]:= ' Yf(t)';

cells[3,0]:= ' Вход рег.орг S(t)';

cells[4,0]:= ' Выход рег.орг U(t)';

cells[5,0]:= ' Система Y(t)';

RowCount:=2;

end;

 

if (RadioButton1.Checked=true) or (RadioButton3.Checked=true) then

Cf:=0;

if (RadioButton2.Checked=true) or (RadioButton4.Checked=true) then

C0:=0;

 

for n:=1 to N1 do

begin

Vr:=Vr+T0;

X[n]:=Kd*C0-Y1;

R[n]:=R[n-1]+X[n]*K1-X[n-1]*K2;

S:=Kim*R[n];

//Определение величины U[n]

if (RadioButton1.Checked=true) or (RadioButton2.Checked=true) then

U[n]:=S*Kpo;

if (RadioButton4.Checked=true) or (RadioButton3.Checked=true) then

begin

if (S>b2) and (S<b1) then

U[n]:=0;

if S>=b1 then

begin

g:=(S-b1)*Kpo;

if g<C1 then

U[n]:=g

else

U[n]:=C1;

end;

if S<=b2 then

begin

g:=(S-b2)*Kpo;

if g>C2 then

U[n]:=g

else

U[n]:=C2;

end;

end;

Y0[n]:=Y0[n-1]+U[n-m-1]*K*T0;

Yf:=Cf*Kf*(1-exp(-(n*T0)/Tf));

Y:=Y0[n]+Yf;

Y1:=Kd*Y;

// процедура сохранения таблицы

if (RadioButton1.Checked=true) then //Линейная система по заданию

with StringGrid1 do

begin

cells[0,n]:=FloatToStrF(Vr,fffixed,8,2);

cells[1,n]:=FloatToStrF(C0,fffixed,8,4);

cells[2,n]:=FloatToStrF(Cf,fffixed,8,4);

cells[3,n]:=FloatToStrF(Y,fffixed,8,4);

RowCount:=RowCount+1;

end;

 

if (RadioButton2.Checked=true) then //Линейная система по возмущению

with StringGrid1 do

begin

cells[0,n]:=FloatToStrF(Vr,fffixed,8,2);

cells[1,n]:=FloatToStrF(Cf,fffixed,8,4);

cells[2,n]:=FloatToStrF(Yf,fffixed,8,4);

cells[3,n]:=FloatToStrF(Y,fffixed,8,4);

RowCount:=RowCount+1;

end;

 

if (RadioButton3.Checked=true) then //Нелинейная система по заданию

with StringGrid1 do

begin

cells[0,n]:=FloatToStrF(Vr,fffixed,8,2);

cells[1,n]:=FloatToStrF(C0,fffixed,8,4);

cells[2,n]:=FloatToStrF(S,fffixed,8,4);

cells[3,n]:=FloatToStrF(U[n],fffixed,8,4);

cells[4,n]:=FloatToStrF(Cf,fffixed,8,4);

cells[5,n]:=FloatToStrF(Y,fffixed,8,4);

RowCount:=RowCount+1;

end;

 

if (RadioButton4.Checked=true) then //Нелинейная система по возмущению

with StringGrid1 do

begin

cells[0,n]:=FloatToStrF(Vr,fffixed,8,2);

cells[1,n]:=FloatToStrF(Cf,fffixed,8,4);

cells[2,n]:=FloatToStrF(Yf,fffixed,8,4);

cells[3,n]:=FloatToStrF(S,fffixed,8,4);

cells[4,n]:=FloatToStrF(U[n],fffixed,8,4);

cells[5,n]:=FloatToStrF(Y,fffixed,8,4);

RowCount:=RowCount+1;

end;

Series1.AddXY(Vr,C0);

Series2.AddXY(Vr,Y);

Series3.AddXY(Vr,Cf);

Series4.AddXY(Vr,S);

Series5.AddXY(Vr,U[n]);

end;

end;

 

// ЗАПИСЬ

procedure TForm1.Button3Click(Sender: TObject);

Var

//Описание переменных

f:TextFile;

NameFile:string;

n:integer;

 

begin// Запись в файл

//проверка существования расчета

if stringgrid1.Cells[0,1]=''then

begin//2

messagedlg('Нет расчета переходного процесса!',mtError,[mbOK],0);

exit;

end;//2

N1:=StrToInt(ComboBox1.text);

if OpenDialog1.execute then

begin//3

NameFile:=OpenDialog1.FileName;

AssignFile(f,NameFile);

Append(f);

Writeln(f,' РЕЗУЛЬТАТЫ МОДЕЛИРОВАНИЯ ПЕРЕХОДНОГО ПРОЦЕССА');

 

if RadioButton1.Checked=true then//Лин сист по заданию

begin//лин по зад

writeln(f,' ПО ЗАДАЮЩЕМУ ВОЗДЕЙСТВИЮ');

writeln(f,' *ЛИНЕЙНАЯ СИСТЕМА*');

end;//лин по зад

 

if RadioButton2.Checked=true then//Лин сист по возм f1

begin//лин f1

writeln(f,' ПО ВОЗДЕЙСТВИЮ f');

writeln(f,' *ЛИНЕЙНАЯ СИСТЕМА*');

end;//лин f1

 

if RadioButton3.Checked=true then//Нелин сист по заданию

begin//нелин по зад

writeln(f,' ПО ЗАДАЮЩЕМУ ВОЗДЕЙСТВИЮ');

writeln(f,' *НЕЛИНЕЙНАЯ СИСТЕМА*');

end;//нелин по зад

 

if RadioButton4.Checked=true then//Нелин сист по возм f1

begin//нелин f1

writeln(f,' ПО ВОЗДЕЙСТВИЮ f');

writeln(f,' *НЕЛИНЕЙНАЯ СИСТЕМА*');

end;//нелин f1

 

Writeln(f);

Writeln(f,' Передаточная функция объекта:');

Writeln(f);

Writeln(f,' K*exp(-p*Tau) ');

Writeln(f,' Wo(p)=------------------');

Writeln(f,' p');

Writeln(f);

Writeln(f,' где:');

Writeln(f,' коэффициент передачи К=',Edit5.text);

Writeln(f);

Writeln(f,'********************************************************************************************');

Writeln(f);

Writeln(f,' Передаточная функция звена по каналу возмущения f1:');

Writeln(f);

Writeln(f,' Kf ');

Writeln(f,' Wf1(p)=-------');

Writeln(f,' 1+Tf*p');

Writeln(f);

Writeln(f,' где:');

Writeln(f,' коэффициент передачи Кf=',Edit8.text);

Writeln(f,' постоянная времени Тf=',Edit9.text);

Writeln(f);

Writeln(f,'********************************************************************************************');

Writeln(f);

Writeln(f,' Настройки регулятора:');

Writeln(f,' К1=',Edit10.text);

Writeln(f,' К2=',Edit11.text);

Writeln(f);

Writeln(f,'********************************************************************************************');

Writeln(f);

Writeln(f,' Задающее воздействие - ступенчатеое = ',edit3.text);

Writeln(f);

Writeln(f,'********************************************************************************************');

Writeln(f);

Writeln(f,' Коэффициенты передачи элементов системы:');

Writeln(f,' регулирующий орган Кро=',Edit14.text);

Writeln(f,' исполнительный механизм Ким=',Edit12.text);

Writeln(f,' датчик Кдат=',Edit13.text);

Writeln(f);

Writeln(f,'********************************************************************************************');

Writeln(f);

Writeln(f,' Дискретность работы системы Т0=',ComboBox2.text);

Writeln(f);

Writeln(f,'********************************************************************************************');

if (RadioButton3.Checked=true) or (RadioButton4.Checked=true) then

begin//1

Writeln(f);

Writeln(f,' Коэффициенты нелинейности регулирующего органа:');

Writeln(f,' C1=',Edit2.text);

Writeln(f,' C2=',Edit1.text);

Writeln(f,' b1=',Edit6.text);

Writeln(f,' b2=',Edit15.text);

Writeln(f);

Writeln(f,'********************************************************************************************');

end;//1

 

//ТАБЛИЦА

if (RadioButton1.Checked=true) then

begin

Writeln(f);

Writeln(f,' Время Задание G(t) Возмущение f(t) Система Y(t) ');

With StringGrid1 do

For n:=1 to N1 do

Writeln(f,' ',cells[0,n],' ',cells[1,n],' ',cells[2,n],' ',cells[3,n]);

Writeln(f);

Writeln(f,'###########################################################################################');

Writeln(f);

CloseFile(f);

MessageDlg('Сохранено!',mtInformation,[mbOK],0);

exit;

end;

 

if (RadioButton2.Checked=true) then

begin

Writeln(f);

Writeln(f,' Время Возмущение f(t) Yf(t) Система Y(t) ');

With StringGrid1 do

For n:=1 to N1 do

Writeln(f,' ',cells[0,n],' ',cells[1,n],' ',cells[2,n],' ',cells[3,n]);

Writeln(f);

Writeln(f,'###########################################################################################');

Writeln(f);

CloseFile(f);

MessageDlg('Сохранено!',mtInformation,[mbOK],0);

exit;

end;

 

if (RadioButton3.Checked=true) then

begin

Writeln(f);

Writeln(f,' Время Задание G(t) Вход рег.орг S(t) Выход рег.орг U(t) Возмущение f(t) Система Y(t) ');

With StringGrid1 do

For n:=1 to N1 do

Writeln(f,' ',cells[0,n],' ',cells[1,n],' ',cells[2,n],' ',cells[3,n],' ',cells[4,n],' ',cells[5,n]);

Writeln(f);

Writeln(f,'###########################################################################################');

Writeln(f);

CloseFile(f);

MessageDlg('Сохранено!',mtInformation,[mbOK],0);

exit;

end;

 

if (RadioButton4.Checked=true) then

begin

Writeln(f);

Writeln(f,' Время Возмущение f(t) Yf(t) Вход рег.орг S(t) Выход рег.орг U(t) Система Y(t) ');

With StringGrid1 do

For n:=1 to N1 do

Writeln(f,' ',cells[0,n],' ',cells[1,n],' ',cells[2,n],' ',cells[3,n],' ',cells[4,n],' ',cells[5,n]);

Writeln(f);

Writeln(f,'###########################################################################################');

Writeln(f);

CloseFile(f);

MessageDlg('Сохранено!',mtInformation,[mbOK],0);

exit;

end;

 

end;//3

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

close;

end;

 

end.

 



Поделиться:


Последнее изменение этой страницы: 2016-12-13; просмотров: 138; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.50.71 (0.006 с.)