Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 138; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.50.71 (0.006 с.) |