ВУЗ: Новосибирский государственный технический университет
Категория: Решение задач
Дисциплина: Основы теории управления
Добавлен: 15.02.2019
Просмотров: 333
Скачиваний: 6
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение
Новосибирский государственный технический университет
Кафедра Автоматизированных систем управления
Расчетно-графическая работа
По дисциплине: Основы теории управления
Вариант 2
Группа: АВТ-412 Преподаватель: Достовалов Д. Н.
Студентка: Васенкова Ю. В.
Новосибирск, 2016
Цель работы
Анализ системы автоматического управления и исследование реакций системы на различные входные и возмущающие воздействия методом компьютерного моделирования.
Задание
Уравнения, описывающие процессы в системе автоматического управления:
где – выходная (регулируемая) координата системы;
V – входное воздействие;
Z – возмущающее воздействие;
– переменные состояния системы;
– передаточные коэффициенты решающего блока и ветви обратной связи системы;
– передаточные коэффициенты;
– постоянные времени, рассчитываемые в секундах.
Первые два уравнения в (1) описывают объект управления (рис.1). Третье уравнение в (1) соответствует усилителю мощности. Четвертое уравнение описывает решающий блок. Пятое уравнение – уравнение замыкания (обратно связи (ОС)) системы.
Рис.1. Обобщенная структура системы
Исходные данные
Таблица 1. Значения параметров звеньев исходной системы
Номер варианта |
Z0 |
||||||||
2 |
40 |
0.5 |
0,4 |
2,5 |
1 |
0.082 |
1 |
20 |
0.5 |
kРБ = 1
T0 = 2
T3 = 4
Ход работы
-
Построение структурной схемы исходной системы по заданной системе уравнений.
Рис.2. Структурная схема исходной системы
Рис.3. Структурная схема исходной системы (с рассчитанными параметрами)
-
Определение передаточных функций отдельных структурных частей системы и системы в целом.
Рис.4. Передаточные функции отдельных частей и системы в целом
-
Анализ устойчивости объекта управления и системы в целом по критерию Гурвица и Рауса.
Для устойчивости системы необходимо, чтобы все коэффициенты характеристического полинома были положительными, но положительность коэффициентов не является достаточным условием устойчивости.
0,08s4 + 1,18s3 + 3,29s2 + 2,75s + 16,5 = 0
Необходимое усл. устойчивости выполняется.
Критерий Гурвица (алгебраический критерий)
Составим определитель Гурвица по след. правилам:
-
Главная диагональ содержит коэффициенты c an-1 по a0;
-
Над гл. диагональю – коэффициенты, индекс которых уменьшается на 1;
-
Под гл. диагональю – коэффициенты, индекс которых увеличивается на 1;
Для устойчивости линейной системы необходимо и достаточно, чтобы были положительными n гл. определителей матрицы Гурвица.
Проверка устойчивости всей системы:
Где matrix – матрица Гурвица.
Для устойчивости линейной системы необходимо и достаточно, чтобы n гл. определителей матрицы Гурвица были положительными.
Исходя из вычислений, можно сделать вывод, что система не устойчивая, так как определитель 3 порядка является отрицательным.
Проверка устойчивости объекта управления:
0,08s2 + s + 1= 0
Где matrix2 – матрица Гурвица.
Исходя из вычислений, можно сделать вывод, что объект управления устойчивый, так как все определители матрицы Гурвица положительные.
Критерий Рауса (алгебраический критерий)
Заполним специальную таблицу по алгоритму ниже:
-
В первой строке таблицы записываются коэффициенты характеристического уравнения, начиная с an, через один, по убыванию индекса;
-
Во второй строке таблицы записываются коэффициенты характеристического уравнения, начиная с an-1, через один, по убыванию индекса;
-
Для построения третьей и последующих строк вычисляется величина ri по формуле: ri = сi-2,1 / ci-1,1;
-
Записывается третья и последующие строки, элементы которых вычисляются по формуле: сij = сi-2,j+1 – ri * ci-1,j+1.
Число строк в таблице должно быть равно n+1.
|
1 |
2 |
3 |
ri |
1 |
c11 = an |
c12 = an-2 |
c13 = an-4 |
- |
2 |
c21 = an-1 |
c22 = an-3 |
c23 = an-5 |
- |
3 |
c31 = c12-r3*c22 |
c32 = c13-r3*c23 |
c33 = c14-r3*c24 |
r3 = c11 / c21 |
4 |
c41 = c22-r4*c32 |
c42 = c23-r4*c33 |
c43 = c24-r4*c34 |
r4 = c21 / c31 |
5 |
c51 = c32-r5*c42 |
c52 = c33-r5*c43 |
c53 = c34-r5*c44 |
r5 = c31 / c41 |
Проверка устойчивости всей системы:
|
1 |
2 |
3 |
ri |
1 |
0,08 |
3,29 |
16,5 |
- |
2 |
1,18 |
2,75 |
0 |
- |
3 |
3,103 |
16,5 |
- |
0,068 |
4 |
-3,52 |
- |
- |
0,38 |
Для
устойчивости линейной системы необходимо
и достаточно, чтобы коэффициенты первого
столбца таблицы Рауса были одного знака
(положительными).
Система не устойчивая, т. к. с41 = -3,52 (коэффициент отрицательный), а так как мы уже нашли отрицательный коэффициент вычисление в таблице можно прекратить.
Проверка устойчивости объекта управления:
|
1 |
2 |
ri |
1 |
0,08 |
1 |
- |
2 |
1 |
0 |
- |
3 |
1 |
- |
0,08 |
Объект управления устойчивый, т. к. все элементы первого столбца одного знака (положительные).
-
Анализ устойчивости системы автоматического управления по критерию Найквиста.
Рис.5. Передаточная функция разомкнутой системы
Критерий применим для систем с отрицательной обратной связью.
Критерий позволяет определить устойчивость замкнутой системы по амплитудно-фазовой характеристике и устойчивости разомкнутой системы.
-
Если система в разомкнутом состоянии устойчива, то для устойчивости замкнутой системы необходимо и достаточно, чтобы амплитудно-фазовая характеристика разомкнутой системы при изменении частоты от 0 до +∞ не охватывала точку комплексной плоскости с координатами (−1, j0).
-
Если система в разомкнутом состоянии неустойчива и её характеристическое уравнение имеет k правых корней, то для устойчивости замкнутой системы необходимо и достаточно, чтобы частотная характеристика разомкнутой системы при изменении частоты от 0 до +∞ охватывала точку комплексной плоскости с координатами (−1, j0) k/2 раз.
Проверим устойчивость разомкнутой системы методом Гурвица:
Система в разомкнутом состоянии устойчива.
Рис.6. Амплитудно-фазовая характеристика разомкнутой системы
Замкнутая система не устойчива, так как годограф охватывает точку (-1; j0).
-
Расчет статического режима системы.
Уравнения необходимо приравнять к 0, подставить заданные значения и вычислить:
В результате значения будут следующими:
6) Используя MATLAB/Simulink, получить переходные характеристики объекта управления и системы автоматического управления при отсутствии возмущающего воздействия.
Рис.7. Переходная характеристика системы
Рис.8. Переходная характеристика объекта управления
7) Используя MATLAB/Simulink, получить временные диаграммы для переменных при условии, что входное воздействие изменяется по закону , а возмущающее – .
Рис.9. Структурная схема
Рис.10. Временная диаграмма
Рис.11. Временная диаграмма
Рис.12. Временная диаграмма
Рис.13. Временная диаграмма
8) Написать программу для численного решения задачи (1) и получить временные диаграммы для переменных при тех же воздействиях.
Рис.14. Временная диаграмма
Рис.15. Временная диаграмма
Рис.16. Временная диаграмма
Рис.17. Временная диаграмма
Выводы
Целью расчётно-графической работы был анализ системы автоматического управления и исследование реакций системы на различные входные и возмущающие воздействия методом компьютерного моделирования. В результате проделанной работы можно утверждать, что заданная система автоматического управления неустойчивая. Такой вывод был получен с помощью нескольких критериев: критерий Гурвица, Рауса, Найквиста, а также это можно определить по переходным характеристикам системы. Также была выявлена устойчивость объекта управления, найдены значения переменных x1,x2,x3,xРБ в статическом режиме системы, переходные характеристики объекта управления, системы автоматического управления при отсутствии возмущающего воздействия и при условии, что входное воздействие изменяется по закону , а возмущающее – .
Листинг программы, написанной в п.8.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace RGR
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<double> x1 = new List<double>();
List<double> x2 = new List<double>();
List<double> x3 = new List<double>();
List<double> x4 = new List<double>();
List<double> t = new List<double>();
double x1max = 0;
double x2max = 0;
double x3max = 0;
double x4max = 0;
double x1min = 0;
double x2min = 0;
double x3min = 0;
double x4min = 0;
double Z(double t)
{
return 0.2 * Math.Sin(5 * t * 3.14 / 180);
}
double V(double t)
{
return 0.3 / (t + 0.6);
}
double f1(double x2, double z)
{
return x2 - z;
}
double f2(double x1, double x2, double x3)
{
return (0.4 / 0.082) * (x3 - 2.5 * x1) - x2 / 0.082;
}
double f3(double x3, double x4)
{
return 40 * x4 / 0.5 - x3 / 0.5;
}
double f4(double x1, double x4, double v)
{
return 0.5 * (v - x1) - x4 / 4;
}
void Runge_Kutt(double h)
{
int j = 1;
double K1 = 0, K2 = 0, K3 = 0, K4 = 0;
int N = (int)(10 / h) + 1;
x1.Clear();
x2.Clear();
x3.Clear();
x4.Clear();
t.Clear();
x1.Add(0);
x2.Add(0);
x3.Add(0);
x4.Add(0);
t.Add(0);
t[0] = 0;
x1max = 0;
x2max = 0;
x3max = 0;
x4max = 0;
x1min = 0;
x2min = 0;
x3min = 0;
x4min = 0;
for (double i = h; i <= 25; i += h)
{
t.Add(i);
K1 = f1(x2[j - 1], Z(t[j - 1]));
K2 = f1(x2[j - 1] + h * K1 / 2, Z(t[j - 1] + h / 2));
K3 = f1(x2[j - 1] + h * K2 / 2, Z(t[j - 1] + h / 2));
K4 = f1(x2[j - 1] + h * K3, Z(t[j - 1] + h));
x1.Add(x1[j - 1] + h * (K1 + 2 * K2 + 2 * K3 + K4) / 6);
K1 = f2(x1[j - 1], x2[j - 1], x3[j - 1]);
K2 = f2(x1[j - 1] + h * K1 / 2, x2[j - 1] + h * K1 / 2, x3[j - 1] + h * K1 / 2);
K3 = f2(x1[j - 1] + h * K2 / 2, x2[j - 1] + h * K2 / 2, x3[j - 1] + h * K2 / 2);
K4 = f2(x1[j - 1] + h * K3, x2[j - 1] + h * K3, x3[j - 1] + h * K3);
x2.Add(x2[j - 1] + h * (K1 + 2 * K2 + 2 * K3 + K4) / 6);
K1 = f3(x3[j - 1], x4[j - 1]);
K2 = f3(x3[j - 1] + h * K1 / 2, x4[j - 1] + h * K1 / 2);
K3 = f3(x3[j - 1] + h * K2 / 2, x4[j - 1] + h * K2 / 2);
K4 = f3(x3[j - 1] + h * K3, x4[j - 1] + h * K3);
x3.Add(x3[j - 1] + h * (K1 + 2 * K2 + 2 * K3 + K4) / 6);
K1 = f4(x1[j - 1], x4[j - 1], V(t[j - 1]));
K2 = f4(x1[j - 1] + h * K1 / 2, x4[j - 1] + h * K1 / 2, V(t[j - 1] + h / 2));
K3 = f4(x1[j - 1] + h * K2 / 2, x4[j - 1] + h * K2 / 2, V(t[j - 1] + h / 2));
K4 = f4(x1[j - 1] + h * K3, x4[j - 1] + h * K3, V(t[j - 1] + h));
x4.Add(x4[j - 1] + h * (K1 + 2 * K2 + 2 * K3 + K4) / 6);
if (j == 1 || x1[j] > x1max)
{
x1max = x1[j];
}
if (j == 1 || x2[j] > x2max)
{
x2max = x2[j];
}
if (j == 1 || x3[j] > x3max)
{
x3max = x3[j];
}
if (j == 1 || x4[j] > x4max)
{
x4max = x4[j];
}
if (j == 1 || x1[j] < x1min)
{
x1min = x1[j];
}
if (j == 1 || x2[j] < x2min)
{
x2min = x2[j];
}
if (j == 1 || x3[j] < x3min)
{
x3min = x3[j];
}
if (j == 1 || x4[j] < x4min)
{
x4min = x4[j];
}
j++;
}
}
private void button1_Click(object sender, EventArgs e)
{
chart1.Series[0].Points.Clear();
chart1.Series[1].Points.Clear();
chart1.Series[2].Points.Clear();
chart1.Series[3].Points.Clear();
Runge_Kutt(Convert.ToDouble(textBox1.Text));
for (int i = 0; i < t.Count; i++)
{
chart1.Series[0].Points.AddXY(t[i], x1[i]);
}
}
private void button2_Click(object sender, EventArgs e)
{
chart1.Series[0].Points.Clear();
chart1.Series[1].Points.Clear();
chart1.Series[2].Points.Clear();
chart1.Series[3].Points.Clear();
Runge_Kutt(Convert.ToDouble(textBox1.Text));
for (int i = 0; i < t.Count; i++)
{
chart1.Series[1].Points.AddXY(t[i], x2[i]);
}
}
private void button3_Click(object sender, EventArgs e)
{
chart1.Series[0].Points.Clear();
chart1.Series[1].Points.Clear();
chart1.Series[2].Points.Clear();
chart1.Series[3].Points.Clear();
Runge_Kutt(Convert.ToDouble(textBox1.Text));
for (int i = 0; i < t.Count; i++)
{
chart1.Series[2].Points.AddXY(t[i], x3[i]);
}
}
private void button4_Click(object sender, EventArgs e)
{
chart1.Series[0].Points.Clear();
chart1.Series[1].Points.Clear();
chart1.Series[2].Points.Clear();
chart1.Series[3].Points.Clear();
Runge_Kutt(Convert.ToDouble(textBox1.Text));
for (int i = 0; i < t.Count; i++)
{
chart1.Series[3].Points.AddXY(t[i], x4[i]);
}
}
private void button5_Click(object sender, EventArgs e)
{
chart1.Series[0].Points.Clear();
chart1.Series[1].Points.Clear();
chart1.Series[2].Points.Clear();
chart1.Series[3].Points.Clear();
Runge_Kutt(Convert.ToDouble(textBox1.Text));
for (int i = 0; i < t.Count; i++)
{
chart1.Series[0].Points.AddXY(t[i], x1[i]);
chart1.Series[1].Points.AddXY(t[i], x2[i]);
chart1.Series[2].Points.AddXY(t[i], x3[i]);
chart1.Series[3].Points.AddXY(t[i], x4[i]);
}
}
private void button6_Click(object sender, EventArgs e)
{
chart1.Series[0].Points.Clear();
chart1.Series[1].Points.Clear();
chart1.Series[2].Points.Clear();
chart1.Series[3].Points.Clear();
}
}
}