Моделирование типовых статических и динамических элементов САУ. Структурная схема модели

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

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ ИМЕНИ П.О.СУХОГО

Факультет автоматизированных и информационных систем

Кафедра «Автоматизированный электропривод»

Лабораторная работа №1

по “Моделированию в электроприводах”

«Моделирование типовых статических и динамических элементов САУ»

Исполнитель:    студент гр. ЭП-31                                                                                                            

Руководитель:   

Гомель, 2006

  Цель работы

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

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

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

Задание

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

Рис. 1.1 Структурная схема модели

Входные воздействия:                                     

скачок X1 = 1     

Параметры звеньев:

1.  К1 = 1;X01=0,2;Y01=0.4;        Интервал расчёта -0,5 с

2.  T2= 0,07;                                Шаг расчета-0,005 с

3.  К3 = 1, Т3 = 0,05;

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

1.  В соответствии со схемой модели согласно задания составляем нелинейную смешанную систему уравнений.


2.Программа при структурном моделировании в соответствии с заданным методом численного решения (Усовершенствованный метод Эйлера).

Program Laba1;

{Выполнил ст. гр ЭП-31 }

Type

DArray = array [1..10] of double;

Var

Y, Yp,                 {Переменные модели}

lK, lT,ly0,lx0: DArray; {Параметры звеньев и входных воздействий}

tk, dt, t: double;       {Интервал и шаг расчета, текущее время}

i,                       {Счетчик - номер шага расчета}

N: integer;              {Количество шагов расчета}

f: text;                 {Файл вывода}

filename: string;        {Имя файла}

{Расчет значений входных воздействий}

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

begin

if t >= 0 then x[1]:=1

else x[1] := 0;

end;

{Вычитатель}

Function Sub (x1,x2:double):double;

begin

Sub:=x1-x2;

end;

{ Звено с ограничением}

Function Lim (x,k,y0,x0:double):double;

var

y:double;

begin

y:=0;

if x>x0 then y:=k*(x-x0)

else if x<-x0 then y:=k*(x+x0);

if y>y0 then y:=y0

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

Lim:=y;

end;

{Интегрирующее звено}

Function Int (x,Yp,dt,T:double):double;

begin

Int:=Yp+dt*x/T;

end;

{ Апереодическое звено}

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

var

Bp:double;

begin

Bp:=Yp+dt*(k*x-Yp)/T;

Ap:=Yp+0.5*dt*((k*x-Yp)/T+(k*x-Bp)/T);

end;

{Подпрограмма расчета сигналов на текущем шаге}

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

var

x:DArray;

begin

cX(t,x);

Y[1]:=Sub(x[1],Y[3]);

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

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

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

end;

{Подпрограмма ввода исходных данных}

Procedure pIn;

var

f: text; {Файл ввода}

begin

write('Введите имя файла ввода ');

readln(filename);

assign(f, filename);

reset(f);

write('Введите имя файла вывода ');

readln(f, filename);

write('Введите постоянную времени интегратора T2 ');

readln(f, lT[2]);

write('Введите коэффициент передачи апериодического звена K1 ');

readln(f, lK[1]);

write('Введите постоянную времени апериодического звена T3 ');

readln(f, lT[3]);

write('Введите коэффициент передачи звена с ограничением K3 ');

readln(f, lK[3]);

write('Введите уровень ограничения y0[1] ');

readln(f,ly0[1]);

write('Введите уровень ограничения x0[1] ');

readln(f,lx0[1]);

write('Введите интервал расчета ');

readln(f, tk);

write('Введите шаг расчета ');

readln(f, dt);

close(f);

end;

Begin

pIn;                         {Ввод исходных данных}

assign(f, filename);         {Открытие файла вывода}

rewrite(f);

fillchar(Y, sizeof(Y), 0);   {Задание нулевых начальных условий}

fillchar(Yp, sizeof(Yp), 0);

t := 0;

{Вывод значений в момент времени t=0}

writeln(f, t:13:5, Y[3]:13:5, Y[4]:13:5);

N := round(tk/dt);           {Определение количества шагов расчета}

for i := 1 to N do           {Цикл по шагам расчета}

begin

t := dt*i;               {Определение текущего времени}

CY(Yp,t,dt,Y);     {Расчет значений перменных на текущем шаге}

{Вывод рассчитанных значений}

writeln(f, t:13:5, Y[3]:13:5, Y[4]:13:5);

Yp := Y;                 {Перенос значений на шаг назад}

end;

close(f);                    {Закрытие файла вывода}

End.

Таблица соответствия переменных

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

Назначение

Программа

Y, Yp

Массив значений переменных на текущем шаге расчета; Массив значений  переменных на предыдущем шаге расчета

lK, lT, lx0,ly0

Параметры звеньев: коэффициент передачи, постоянная времени, ширина зоны нечувствительности и уровень ограничения, соответственно

xm,

Параметры входных переменных: величина скачка (амплитуда)

tk, dt

Интервал и шаг расчета

I

Счетчик –номер текущего шага расчета

N

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

F

Текстовый файл для ввода исходных данных и вывода результатов

filename

Имя файла вывода

Процедура ввода исходных данных pIn

lK, lT,lx0,ly0,  xm, tk, dt, filename

То же, что и в программе

F

Файл ввода

Процедура расчета значений входных воздействий CX

t

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

x

Рассчитываемые значения

Функция расчета вычитателя Sub

x1,x2

Входной сигнал и сигнал, который вычитается

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

Yp,x,dt,lt

То же, что и в программе

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

Yp,x,dt,lT,lk

То же, что и в программе

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

X,lk,ly0,lx0

То же, что и в программе

 

Процедура реализации модели CY

 

Yp,t,dt,Y

То же, что и в программе

 

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

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