Моделирование статических элементов систем автоматического управления

Страницы работы

Содержание работы

Цель работы:

- ознакомиться с алгоритмами моделирования статических элементов                                                                                                                       систем автоматического управления;

- ознакомиться с приемами моделирования динамических элементов;

- получить практические навыки составления программ моделирования.

Задание лабораторной работы:

 


X1=sin(31.4·t),

K1=0.7, Y01=0.5,

T2=0.4,

K3=1, T3=0.015.

Интервал расчета 0.5, шаг расчета 0.005.

Структурное моделирование. Усовершенствованный Эйлера.

Порядок выполнения работы

Составим на основе усовершенствованного метода Эйлера подпрограммы-функции расчета значения выходного сигнала звена на текущем шаге для всех типов звеньев, входящих в состав модели:

 

1.  Множительное звено.

Множительное звено описывается выражением:

                                                        y=x1*x2

2.  Звено с ограничением

                                                Звено с ограничением описывается      выражением

y=K*x

3. Интегрирующее звено

                                    Интегрирующее звено описывается выражением

y(p)=x(p)/T*p

4.Апериодическое звено

   Выходной сигнал звена в операторной           форме                                             y(p)=K*x(p)/(T*p+1)

                                     ДУ:

Применив усовершенствованного метода Эйлера к данному уравнению, получим

Y1 :=Yp+dt*(K*x-Yp)/T;

  Y2:=Yp+(dt/2)*((K*x-Yp)/T+(K*x-Y1)/T);

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

Название переменной

Назначение

Программа

Y

Вектор значений выходных сигналов звеньев на текущем шаге расчета

Yp

Вектор значений выходных сигналов звеньев на предыдущем шаге расчета

lk

Коэффициент передачи звеньев

lt

Постоянные времени звеньев

ly0

Уровни ограничения звеньев

xm

Амплитуда входных воздействий

tk

Интервал расчета

dt

Шаг расчета

t

Текущее время

i

Счетчик шагов расчета

N

Количество шагов расчета

Процедура расчета входного воздействия cX

t

Текущее время

x

Входной сигнал на текущем шаге

Множительное звено

X1,X2

Перемножающиеся сигналы

Функция расчета первого звена

X

Входной сигнал на текущем шаге

k

Коэффициент передачи

y0

Уровень ограничения

Функция расчета второго звена

X

Входной сигнал на текущем шаге

Yp

Выходной сигнал звена на предыдущем шаге

T

Постоянная времени

dt

Шаг расчета

Функция расчета третьего звена

x

Входной сигнал

Yp

Выходной сигнал звена на предыдущем шаге

k

Коэффициент передачи

T

Постоянная времени

dt

Шаг расчета

Текст программы

procedure TForm1.Button1Click(Sender: TObject);

Var

   Y,

   Yp,

   lk,

   lt,ly0,

   xm:DArray;

   tk,dt,t:double;

   i,N:integer;

Procedure Cx(t: double; var x: DArray);

begin

  if t>0 then x[1]:=xm[1]*(sin(31.4*t)) else x[1]:=0;

end;

function Lim(X, k, y0:double):double;

var y:double;

begin

  y:=k*X;

  if y>y0 then y:=y0 else if y<-y0 then y:=-y0;

  Lim:=y;

end;

function Int(X, Yp, T, dt:double):double;

begin

  Int:=Yp + dt*X/T;

end;

function Ap(x,Yp, k, T, dt:double):double;

var

   Y1:double;

begin

  y1 :=yp+dt*(k*x-yp)/t;

  ap:=yp+(dt/2)*((k*x-yp)/t+(k*x-y1)/t);

end;

function Mul(X1, X2:double):double;

begin

  Mul:=X1*X2;

end;

Procedure Cy(Yp:DArray; t, dt:double; var Y:DArray);

var x:DArray;

begin

  Cx(t,x);

  Y[1]:=Mul(X[1],X[1]);

  Y[2]:= Lim(Y[1], lk[1], ly0[1]);

  Y[3]:= Int(Y[2], Yp[3], lt[2], dt);

  Y[4]:= Ap(Y[3], Yp[4], lk[3], lt[3], dt);

end;

begin

xm[1]:=strtofloat(X1.text);

lk[1]:=strtofloat(K1.text);

lk[3]:=strtofloat(K3.text);

lt[2]:=strtofloat(T2.text);

lt[3]:=strtofloat(T3.text);

ly0[1]:=strtofloat(Y01.text);

tk:=strtofloat(ETk.text);

dt:=strtofloat(Edt.text);

Fillchar(Y, sizeof(Y),0);

Fillchar(Yp, sizeof(Yp),0);

Form2.Chart1LineSeries1.clear;

Form2.Chart1LineSeries2.clear;

Form2.Chart1LineSeries3.clear;

Form2.Chart1LineSeries4.clear;

t:=0;

Form2.Chart1LineSeries1.AddXY(t,Y[1]);

Form2.Chart1LineSeries2.AddXY(t,Y[2]);

Form2.Chart1LineSeries3.AddXY(t,Y[3]);

Form2.Chart1LineSeries4.AddXY(t,Y[4]);

N:=round(tk/dt);

for i:=1 to N do begin

      t:=i*dt;

      Cy(Yp,t,dt,Y);

      Form2.Chart1LineSeries1.AddXY(t,Y[1]);

      Form2.Chart1LineSeries2.AddXY(t,Y[2]);

      Form2.Chart1LineSeries3.AddXY(t,Y[3]);

      Form2.Chart1LineSeries4.AddXY(t,Y[4]);

      Yp:=Y;

 end;

 Button2.Enabled:=true;

end;

end.

Главное окно программы:


Окно вывода графика функции:

Вывод: В результате выполнения данной лабораторной работы, ознакомились с алгоритмами моделирования статических элементов систем автоматического управления, ознакомились с приёмами моделирования динамических элементов и получили практические навыки составления программы структурного моделирования.

Похожие материалы

Информация о работе