![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Распечатка текста основного программного модуля.Содержание книги
Поиск на нашем сайте
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; просмотров: 142; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.220.255 (0.009 с.) |