Структурная схема моделируемой системы управления. Система управления, структурная схема. Математическое описание исходных данных, страница 4

pageControl1.TabIndex := 1;

ActiveControl:=Edit2;

exit;

end;

if T2=0 then begin

messagedlg('Введите постоянную времени объекта. T2', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit3;

exit;

end;

if T1<0 then begin

messagedlg('Постоянная времени объекта Т1 должна быть больше нуля!!!', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit2;

exit;

end;

if T1<0 then begin

messagedlg('Постоянная времени объекта Т2 должна быть больше нуля!!!', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit3;

exit;

end;

if T1<T2 then begin

messagedlg('Постоянная времени объекта Т1 должна быть больше постоянной времени объекта Т2 !!!', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit3;

exit;

end;

if Tau=0 then begin

messagedlg('Введите запаздывание объекта. Tau', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit4;

exit;

end;

if Tau<0 then begin

messagedlg('Запаздывание объекта должно быть больше нуля!!!', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit2;

exit;

end;

if kd=0 then begin

messagedlg('Введите коэффициент передачи датчика. кд', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit5;

exit;

end;

if k1=0 then begin

messagedlg('Введите настройки регулятора. к1', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit6;

exit;

end;

if k2=0 then begin

messagedlg('Введите настройки регулятора. к2', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit7;

exit;

end;

if kim=0 then begin

messagedlg('Введите коэффициент передачи исполнительного механизма. ким', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit9;

exit;

end;

if kro=0 then begin

messagedlg('Введите коэффициент передачи регулирующего органа. кро', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit10;

exit;

end;

if kf=0 then begin

messagedlg('Введите коэффициент передачи объекта по каналу возмущения.Kf', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit13;

exit;

end;

if Tf=0 then begin

messagedlg('Введите постоянную времени объекта по каналу возмущения. Tf', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit14;

exit;

end;

if Tf<0 then begin

messagedlg('Постоянная времени объекта по возмущению Тf должна быть больше нуля!!!', mterror,[mbok],0);

pageControl1.TabIndex := 1;

ActiveControl:=Edit2;

exit;

end;

// очистка элементов предыдущего расчета

for i:=1 to n+1 do

begin

with stringgrid2 do begin

cells[0,i]:=' ';

cells[1,i]:=' ';

cells[2,i]:=' ';

cells[3,i]:=' ';

cells[4,i]:=' ';

rowcount:=2;

end;

series5.Clear;

series6.Clear;

series7.Clear;

end;

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

setlength(y0, n+1);

setlength(x, n+1);

setlength(yro, n+1);

//обнуление параметров

R:=0;

yd:=0;

yim:=0;

G:=0;

y:=0;

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

d1 := exp(-T0/T1);

d2 := exp(-T0/T2);

a := -T1/(T1-T2);

b := T2/(T1-T2);

m := trunc(tau/T0);

vr := -T0;

//расчет переходного процесса

for i:=0 to n do

begin

vr := vr + T0;

y0[i] := y0[i-1]*d1 + y0[i-1]*d2 - y0[i-2]*d1*d2 + yro[i-m]*k - yro[i-m-1]*k*d1 - yro[i-m-1]*k*d2 + yro[i-m-2]*k*d1*d2 + yro[i-m]*a*k - yro[i-m-1]*a*k - yro[i-m-1]*a*k*d2 + yro[i-m-2]*a*k*d2 + yro[i-m]*b*k - yro[i-m-1]*b*k - yro[i-m-1]*b*k*d1 + yro[i-m-2]*b*k*d1;

if (Y<=C2) or (Y>=C1) then

yd:=kd*y

else

Yd:=0;

x[i]:=G*kd-yd;

R:=R+k1*x[i]-k2*x[i-1];

yim:=R*kim;

yro[i]:=yim*kro;

Yf:=Kf*Gf;

if i=0 then Y:=Y0[i] else

Y:=Y0[i]+Yf;

//вывод данных в таблицу

with stringgrid2 do begin

cells[0,i+1]:=floattostrf(i,fffixed,3,0);

cells[1,i+1]:=floattostrf(vr,fffixed,3,0);

cells[2,i+1]:=floattostrf(Gf,fffixed,8,4);

cells[3,i+1]:=floattostrf(Y,fffixed,8,4);

cells[4,i+1]:=floattostrf(Yd,fffixed,8,4);

rowcount:=rowcount+1

end;

//вывод данных на график

Series5.AddXY(i,Y,'',clteecolor);

series6.AddXY(i,Gf,'',clteecolor);

series7.AddXY(i,Yd,'',clteecolor);

end;

//освобождение памяти