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

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

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

Министерство образования Республики Беларусь

Учреждение образования «Гомельский государственный

технический университет имени П. О. Сухого»

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

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

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

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

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

Силивончик А. М.

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

Захаренко В.С.

Гомель 2005

Цель работы:

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

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

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

Задание:

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

X1=sin(31.4·t), X2=1,

K1=1, Y01=0.5,

T2=0.5,

K3=1, T3=0.4,

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

Метод Эйлера.

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

1)В соостветствии со схемой модели согласно задания составить нелинейную смешанную систему алгебраических и дифференциальных уравнений.

2)Написать программу моделирования по системе уравнений в соответствии с заданным методом численного решения систем дифференциальных уравнений и составленной системой уравнений.

3)Используя заданные параметры входных воздействий и звеньев модели с помощью составленной программы рассчитать переходной процесс.

4)Построить в программе MathCAD диаграммы переходных процессов.

Ход работы

Составляем систему алгебраических и дифференциальных уравнений:

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

Y, Yp  Значения переменных модели, для которых есть дифференциальные уравнения, на текущем и предыдущем шагах расчета, соответственно    

Z         Значения переменных модели, для которых есть алгебраические уравнения, на текущем шаге расчета      

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

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

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

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

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

f           Файл вывода

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

f           Файл ввода   

Yp, t, dt, Y, Z То же, что и в программе   

F         Рассчитываемые значения правых частей дифференциальных уравнений     

j           Счетчик дифференциальных уравнений 

Y         Значения переменных модели (для которых есть дифференциальные уравнения), по которым рассчитываются правые части дифференциальных уравнений      

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

Z         Рассчитываемые значения алгебраических уравнений 

F         Рассчитываемые значения правых частей дифференциальных уравнений     

x          Значения входных воздействий    

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

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

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

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

Program L1Example;

{Metod Ejlera}

Type

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

Procedure pX(xm, w: DArray; tt: double; var x: DArray);

begin

  if tt > 0 then x[2] := xm[2] else x[2] := 0;

end;

Procedure pF(Y, K, T, x0, y0, xm, w: DArray; tt: double; var Z, F: DArray);

var

  x: DArray;

begin

  pX(xm, w, tt, x);

  x[1]:=sin(31.4*tt);

  F[1] := X[2]/T[2];

  F[2] := (K[3]*Y[1] - Y[2])/T[3];

  Z[1] := K[1]*X[1];

  if Z[1] > y0[1] then Z[1] := y0[1]

  else if Z[1] < -y0[1] then Z[1] := -y0[1];

  Z[2] := Z[1] * Y[2];

end;

Procedure pY(Yp, K, T, x0, y0, xm, w: DArray; tt, dt: double;

  var Y, Z: DArray);

var

  F: DArray;

  i: integer;

begin

  pF(Yp, K, T, x0, y0, xm, w, tt-dt, Z, F);

  for i := 1 to 2 do

    Y[i] := Yp[i] + dt*F[i];

end;

Procedure pIn(var K, T, x0, y0, xm, w: DArray; var tk, dt: double;

  var filename: string);

var

  f: text;

begin

  write('Vvedite imja fajla vvoda ');

  readln(filename);

  assign(f, filename);

  reset(f);

  write('Vvedite imja fajla vivoda ');

  readln(f, filename);

  write('X2 ');

  readln(f, xm[2]);

  write('T2 ');

  readln(f, T[2]);

  write('K1 ');

  readln(f, K[1]);

  write('T3 ');

  readln(f, T[3]);

  write('K3 ');

  readln(f, K[3]);

  write('y01 ');

  readln(f, y0[1]);

  write('t ');

  readln(f, tk);

  write('dt ');

  readln(f, dt);

  close(f);

 end;

Var

  Y, Yp, Z, K, T, x0, y0, xm, w: DArray;

  tk, dt, tt: double;

  i, N: integer;

  f: text;

  filename: string;

Begin

  pIn(K, T, x0, y0, xm, w, tk, dt, filename);

  assign(f, filename);

  rewrite(f);

  fillchar(Y, sizeof(Y), 0);

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

  fillchar(Z, sizeof(Z), 0);

  tt := 0;

  writeln(f, tt:13:5, Y[1]:13:5, Y[2]:13:5, Z[2]:13:5);

  N := round(tk/dt);

  for i := 1 to N do

    begin

      tt := dt*i;

      pY(Yp, K, T, x0, y0, xm, w, tt, dt, Y, Z);

      writeln(f, tt:13:5, Y[1]:13:5, Y[2]:13:5, Z[2]:13:5);

      Yp := Y;

    end;

  close(f);

End.

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

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