procedure Button4Click(Sender: TObject);
procedure DChange(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
Label L1;//описание меток
Var//описание переменных
//описание параметров системы
d,C0,Cf1,K,T,Tau,Kf1,Tf1,K1,K2,Kro,Kim,Kdat,C1,C2,B1,B2,B11,B22: real;
//описание сигналов
Yf1,Y,Y1,R,f2,S: real;
X,U,Y0: array[1..100] of real;
//описание режимных показателей
T0,Vr: real;
N1,m,mmax,I,n: integer;
begin//перех.пр.по заданию
//считывание данных с визуальных элементов
C0:=StrToFloat(Edit5.Text);
Cf1:=StrToFloat(Edit6.Text);
K:=StrToFloat(Edit7.Text);
T:=StrToFloat(Edit8.Text);
Tau:=StrToFloat(Edit9.Text);
Kf1:=StrToFloat(Edit10.Text);
Tf1:=StrToFloat(Edit11.Text);
K1:=StrToFloat(Edit12.Text);
K2:=StrToFloat(Edit13.Text);
Kro:=StrToFloat(Edit16.Text);
Kim:=StrToFloat(Edit14.Text);
Kdat:=StrToFloat(Edit15.Text);
C1:=StrToFloat(Edit1.Text);
C2:=StrToFloat(Edit2.Text);
B1:=StrToFloat(Edit3.Text);
B2:=StrToFloat(Edit4.Text);
T0:=StrToInt(ComboBox1.Text);
N1:=StrToInt(ComboBox2.Text);
//проверка коэффициента датчика
if Kdat=0 then
begin//Kdat
messagedlg('Введите К датчика!',mtError,[mbOK],0);
Exit;
end;//Kdat
//проверка коэффициента исполнительного механизма
if Kim=0 then
begin//Kim
messagedlg('Введите К исполнительного механизма!',mtError,[mbOK],0);
Exit;
end;//Kim
//проверка коэффициента регулирующего органа
if Kro=0 then
begin//Kro
messagedlg('Введите К регулирующего органа',mtError,[mbOK],0);
Exit;
end;//Kro
//Рассчет линейной или нелинейной системы
if RadioButton1.Checked=true then
begin//lin
C1:=1000;
C2:=-1000;
B1:=0;
B2:=0;
goto L1;
end//lin
else
if RadioButton1.Checked=false then goto L1;
L1:
//расчет переменных
m:=round(Tau/T0);
mmax:=m;
d:=exp(-T0/T);
B11:=(C1+B1*Kro)/Kro;
B22:=(C2+B2*Kro)/Kro;
//задание начальных условий
n:=mmax;
R:=0;
Cf1:=0;
Vr:=-T0;
//обнуление массивов
For I:=1 To n do
begin//nul
X[I]:=0;
U[I]:=0;
Y0[I]:=0;
end;//nul
n:=n+1;
//заголовок таблицы
With StringGrid1 do
begin//Заголовок таблицы
Cells[0,0]:='Время';
Cells[1,0]:='Задание';
Cells[2,0]:='Система';
RowCount:=2;
end;//zag_tabl_1
//основной цикл расчета
Vr:=Vr+T0;
for I:=0 to N1 do
begin//rab_cikl
y0[n]:=U[n-m-1]*T*k-U[n-m-2]*T0*k*d-U[n-m-1]*T*k+U[n-m-1]*d*k*T+U[n-m-2]*T*k-U[n-m-2]*d*k*T+y0[n-1]*d+y0[n-1]-y0[n-2]*d;
Yf1:=Cf1*Kf1*(1-exp(-I*T0/Tf1));
Y:=Y0[n]+Yf1;
Y1:=Kdat*Y;
X[n]:=Kdat*C0-Y1;
R:=R+X[n]*K1-X[n-1]*K2;
S:=Kim*R;
if S<B22 then U[n]:=C2
else
if S>B11 then U[n]:=C1
else
if (S>B22) and (S<B2) then U[n]:=Kro*(S-B2)
else
if (S>B1) and (S<B11) then U[n]:=Kro*(S-B1)
else
U[n]:=0;
//отражение расчета в таблице
With StringGrid1 do
begin//1
cells[0,I+1]:=FloatToStrF(Vr,ffFixed,3,0);
cells[1,I+1]:=FloatToStrF(C0,ffFixed,8,4);
cells[2,I+1]:=FloatToStrF(Y,ffFixed,8,4);
RowCount:=RowCount+1;
end;//1
//построение графиков
if RadioButton1.Checked=true then
Begin
Series3.AddXY(Vr,Y);
Series2.AddXY(Vr,C0);
End;
if RadioButton2.Checked=true then
begin//in & out
Series1.AddXY(Vr,Y);
Series2.AddXY(Vr,C0);
end;//in & out
Vr:=Vr+T0;
n:=n+1;
end;//rab_cikl
end;//перех.пр.по заданию
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button4Click(Sender: TObject);
Label L2;
Var//описание переменных
//описание параметров системы
d,C0,Cf1,K,T,Tau,Kf1,Tf1,K1,K2,Kro,Kim,Kdat,C1,C2,B1,B2,B11,B22: real;
//описание сигналов
Yf1,Y,Y1,R,S: real;
X,U,Y0: array[1..100] of real;
//описание режимных показателей
T0,Vr: real;
N2,m,mmax,I,n: integer;
begin//перех.пр.по возмущению
//считывание данных с визуальных элементов
C0:=StrToFloat(Edit5.Text);
Cf1:=StrToFloat(Edit6.Text);
K:=StrToFloat(Edit7.Text);
T:=StrToFloat(Edit8.Text);
Tau:=StrToFloat(Edit9.Text);
Kf1:=StrToFloat(Edit10.Text);
Tf1:=StrToFloat(Edit11.Text);
K1:=StrToFloat(Edit12.Text);
K2:=StrToFloat(Edit13.Text);
Kro:=StrToFloat(Edit16.Text);
Kim:=StrToFloat(Edit14.Text);
Kdat:=StrToFloat(Edit15.Text);
C1:=StrToFloat(Edit1.Text);
C2:=StrToFloat(Edit2.Text);
B1:=StrToFloat(Edit3.Text);
B2:=StrToFloat(Edit4.Text);
T0:=StrToInt(ComboBox3.Text);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.