Лабораторная работа №3. Устойчивость автоматических систем.
С помощью критерия Гурвица нам нужно найти kкр при котором система будет: устойчива, неустойчива и на границе устойчивости.
Раскрываем скобки и получаем:
По критерию Гурвица мы должны взять знаменатель передаточной функции
Если все определители матрицы > 0, то система устойчива.
Если хотя бы один определитель = 0, то система на границе устойчивости.
Если хотя бы один определитель матрицы < 0, то система не устойчива.
Вводим C
Мы нашли kкр при котором график будет на грани устойчивости
Нужно исследовать функцию на экстремум
Решаем аналитическим путем.
C3 - константа. (как мы помним , производная константы это 0)
C2 - Это функция по которой мы дифференцируем. Ищем частную производную.
Разбиваем выражения на множители:
Подставляем в формулу для kкр, находим экстремум
Далее нам нужно проверить правильно ли мы посчитали для kкр. Проверять мы будем с помощью критериев устойчивости: Рауса, Найквиста и Михайлова
Критерий Рауса
| Вспомогательный | № строки | 1 | 2 | 3 |
|---|---|---|---|---|
| $$-$$ | $$1$$ | $$ C_{11} = a_0 = T_1T_2T_3 $$ | $$ C_{12} = a_2 = T_1+T_2+T_3$$ | $$ C_{13} = a_4 = 0 $$ |
| $$-$$ | $$2$$ | $$ C_{21} = a_1 = T_1T_2 + T_2T3 + T_1T_3 $$ | $$ C_{22} = a_3 = 1+k $$ | $$ C_{23} = a_5 = 0 $$ |
| $$ r_3 = {C_{11} \over C_{21}} = {a_0 \over a_1} $$ | $$3$$ | $$ C_{31} = a_2-r_3a_3 $$ | $$ C_{32} = C_{13} - r_3 C_{23} = 0 $$ | $$ C_{33} = C_{14} - r_3 C_{24} = 0 $$ |
| $$ r_4 = {C_{21} \over C_{31}} $$ | $$4$$ | $$ C_{41} = C_{22} - r_4C_{32} $$ | $$ C_{42} = C_{23} - r_4C_{33} = 0 $$ | $$ C_{43} = C_{24} - r_4C_{34} = 0 $$ |
Если все элементы первого столбца > 0, то система устойчива
Если хотя бы один элемент первого столбца = 0, то система на границе устойчивости
Если хотя бы один элемент первого столбца < 0, то система не устойчива
Нужно будет посчитать 3 разных таблицы Рауса
- k = kкр. В первом столбце должен быть хоть один 0. (этот пример)
- k < kкр Все элементы первого столбца должны быть положительны
- k > kкр Один элемент должен быть меньше 0
Частотные критерии устойчивости(Критерий устойчивости Михайлова)
- Берем знаменатель той системы, которую мы исследуем, все что в числителе нас не интересует.
- Этот критерий частотный, мы переходим заменой p на jw в частотную область.
- Этот критерий - графоаналитический.
1) k > kкр Система не устойчива. Если последовательность квадрантов нарушена, то система не устойчива.
2) k = kкр Система на границе устойчивости. Если система проходит через точку с координатами 0, то система на границе устойчивости.
3) k < kкр Система устойчива. Система устойчива, в том случае, если кривая Михайлова проходит последовательно n квадратов. У нас система третьего порядка, поэтому кривая должна пройти 3 квадранта.
Частотные критерии устойчивости(Критерий устойчивости Найквиста )
Критерий устойчивости Найквиста , это единственный критерий, который подходит для исследований систем с запаздыванием
Об устойчивости замкнутой системы, мы судим по АФЧХ(Амплитудно-фазовая частотная характеристика) разомкнутой системы. При этом саму разомкнутую систему нельзя проверить этим критерием.
$$ \text{Переходим к частотной передаточной функции заменяя: } p \rightarrow j\omega $$
$$ \text{Во всей передаточной функции, не только в знаменателе.}$$
Выделяем действительную и мнимую части.
Каноническая форма комплексного числа:
Показательная форма комплексного числа:
Вектор длины А поворачивается на угол фи и то и другое зависит от частоты.
По 4 формулам строим графики для 3 случаев.
- k > kкр Система неустойчива
- k = kкр Система на границе устойчивости
- k < kкр Система устойчива
1) Если АФЧХ разомкнутой системы не охватывает точку с координатами -1,0j, то замкнутая система будет устойчива.
2) Если АФЧХ разомкнутой системы проходит через точку с координатами -1,0j, то система будет на границе устойчивости
3) Если АФЧХ разомкнутой системы охватывает точку с координатами -1,0j, то замкнутая система будет неустойчива
Пример выполнения
Передаточная функция трех последовательно соединенных звеньев имеет вид:
Передаточная функция замкнутой системы имеет вид:
Запишем характеристическое уравнение:
Введем замену
Используя критерий Гурвица найдем коэффициент усиления kкр при котором система находится на границе устойчивости. Для этого составим квадратную матрицу коэффициентов, содержащую 3 строки и 3 столбца
$$ \left[ \begin{matrix} a_1 & a_3 & a_5 & 0\\ a_0 & a_2 & a_4 & 0\\ a_{-1} & a_1 & a_3 & 0 \\ \end{matrix} \right] \Rightarrow \left[ \begin{matrix} a_1 & a_3 & 0 \\ a_3 & a_2 & 0 \\ 0 & a_1 & a_3 \end{matrix} \right] $$Критерий устойчивости сводится к тому, что при a0 > 0 должны быть больше нуля все 3 определителя, получаемых из квадратной матрицы коэффициентов. Определители составляются по следующему правилу
$$\Delta_1 = a_1 > 0 $$ $$\Delta_2 = \left[ \begin{matrix} a_1 & a_3 \\ a_0 & a_2 \\ \end{matrix} \right] = a_1a_2 - a_3a_0 > 0 $$ $$\Delta_3 = a_3\Delta_2 = (a_1a_2 - a_3a_0)a_3 = a_1a_2a_3 - a_0a_3^2 > 0 $$В устойчивой системе предпоследний определитель должен быть положителен. Поэтому условие положительности последнего определителя сводится к условию a3 > 0 , т.е. к положительности свободного члена характеристического уравнения. Условие нахождения системы на границе устойчивости можно получить, приравнивая нулю последний определитель: $$ \Delta_3 = a_3 * \Delta_2 \text{т.е.} a_3 = 0 \text{ или } \Delta_2 = 0 \text{ по условию } a_3 \neq 0 \Rightarrow \Delta_2 = 0. \text{ Найдем значение } k_{кр} \text{ используя } \Delta_2 = 0$$
Разделим на T1T2T3
Построим кривую kкр = f(C2) при C3 = 5
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript">google.charts.load('current', {'packages':['corechart']}); google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart(){ var dt=0.1; var c2=2.24; var c3=5; g=1; var y, c2; var A=new Array(['X', 'Переходная функция']); c2=0; y=0; var i=1; while(c2 < 10){ c2=c2+dt; y=1/c3+1/c2+c2+c3+c2/c3+c3/c2+2; A[i]=[c2,y]; i++; } var data = google.visualization.arrayToDataTable(A); var options = { curveType: 'function', legend: { position: 'bottom' } }; var chart = new google.visualization.LineChart(document.getElementById('KkpC3_5Expample')); chart.draw(data, options); } </script> <div id="KkpC3_5Expample" style="width: 575px; height: 400px"></div>
Определение с помощью kкр = kкр(C2, C3) численное значение kкр min Численное значение kкр min найдем из условия, что функция kкр = f(C2) имеет минимум в одной точке. Для нахождения координаты C2 используем условие f '(C2) = 0
Находим частную производную
Для нахождения kкр min подставим значения C2 = 2.24 и C3 = 5 в выражение kкр = kкр(C2, C3) и получим kкр min = 12.56657
Таблица Рауса.
| Вспомогательный | № строки | 1 | 2 | 3 |
|---|---|---|---|---|
| $$-$$ | $$1$$ | $$ C_{11} = a_0 = T_1T_2T_3 $$ | $$ C_{12} = a_2 = T_1+T_2+T_3$$ | $$ C_{13} = a_4 = 0 $$ |
| $$-$$ | $$2$$ | $$ C_{21} = a_1 = T_1T_2 + T_2T3 + T_1T_3 $$ | $$ C_{22} = a_3 = 1+k $$ | $$ C_{23} = a_5 = 0 $$ |
| $$ r_3 = {C_{11} \over C_{21}} = {a_0 \over a_1} $$ | $$3$$ | $$ C_{31} = a_2-r_3a_3 $$ | $$ C_{32} = C_{13} - r_3 C_{23} = 0 $$ | $$ C_{33} = C_{14} - r_3 C_{24} = 0 $$ |
| $$ r_4 = {C_{21} \over C_{31}} $$ | $$4$$ | $$ C_{41} = C_{22} - r_4C_{32} $$ | $$ C_{42} = C_{23} - r_4C_{33} = 0 $$ | $$ C_{43} = C_{24} - r_4C_{34} = 0 $$ |
Для устойчивой системы необходимо, чтобы все элементы первого столбца имели одинаковый знак; при наличии отрицательных элементов система неустойчива; если хотя бы один элемент первого столбца равен нулю – система на грани устойчивости.
Таблица Рауса для k = kкр min
| Вспомогательный | № строки | 1 | 2 | 3 |
|---|---|---|---|---|
| $$-$$ | $$1$$ | $$ 0.0112 $$ | $$ 0.824 $$ | $$ 0 $$ |
| $$-$$ | $$2$$ | $$ 0.1844 $$ | $$ 13.56657 $$ | $$ 0 $$ |
| $$ 0.060738 $$ | $$3$$ | $$ 0 $$ | $$ 0 $$ | $$ 0 $$ |
| $$ 0 $$ | $$4$$ | $$ 13.56657 $$ | $$ 0 $$ | $$ 0 $$ |
Поскольку C31 = 0 , система на грани устойчивости.
Таблица Рауса для k > kкр min(k=14)
| Вспомогательный | № строки | 1 | 2 | 3 |
|---|---|---|---|---|
| $$-$$ | $$1$$ | $$ 0.0112 $$ | $$ 0.824 $$ | $$ 0 $$ |
| $$-$$ | $$2$$ | $$ 0.1844 $$ | $$ 15 $$ | $$ 0 $$ |
| $$ 0.060738 $$ | $$3$$ | $$ -0.02633 $$ | $$ 0 $$ | $$ 0 $$ |
| $$ -7.00465 $$ | $$4$$ | $$ 15 $$ | $$ 0 $$ | $$ 0 $$ |
Поскольку C31 = -7.00465 < 0, то система неустойчива.
Таблица Рауса для k = kкр min
| Вспомогательный | № строки | 1 | 2 | 3 |
|---|---|---|---|---|
| $$-$$ | $$1$$ | $$ 0.0112 $$ | $$ 0.824 $$ | $$ 0 $$ |
| $$-$$ | $$2$$ | $$ 0.1844 $$ | $$ 9 $$ | $$ 0 $$ |
| $$ 0.060738 $$ | $$3$$ | $$ 0.277362 $$ | $$ 0 $$ | $$ 0 $$ |
| $$ 0.664835 $$ | $$4$$ | $$ 9 $$ | $$ 0 $$ | $$ 0 $$ |
Поскольку C31 = 0.664835 > 0, то система устойчива.
Критерий устойчивости Михайлова.
Передаточная функция замкнутой системы имеет вид
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript">google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart(){ var dt=0.001; var c2=2.24; var c3=5; var km=8; var kkp=12.56657; var kb=14; var L=8; var t1=0.1; var t2=0.224; var t3=0.5; g=1; var x, x1, x2,y, c2; var A=new Array(['X', 'Устойчивая']); var B=new Array(['X', 'Граница устойчивости']); var C=new Array(['X', 'Не устойчивая']); c2=0; y=0; var w = 0; var i=1; while(w < 10){ x=-(t1*t2+t2*t3+t1*t3)*w*w+km+1; y=-(t1*t2*t3)*w*w*w+(t1+t2+t3)*w; A[i]=[x,y]; x1=-(t1*t2+t2*t3+t1*t3)*w*w+kkp+1; B[i]=[x1,y]; x2=-(t1*t2+t2*t3+t1*t3)*w*w+kb+1; C[i]=[x2,y]; w=w+dt; i++; } var data2 = new google.visualization.DataTable(); data2.addColumn('number', 'Chart 1'); data2.addColumn('number', 'Chart 2'); data2.addColumn('number', 'Chart 3'); var dt1 = google.visualization.arrayToDataTable(A); var dt2 = google.visualization.arrayToDataTable(B); var dt3 = google.visualization.arrayToDataTable(C); var joinedData = google.visualization.data.join(dt1, data2, 'full', [[0, 0]], [1], [1]); var joinedData1 = google.visualization.data.join(joinedData, dt2, 'full', [[0, 0]], [1,2], [1]); var joinedData2 = google.visualization.data.join(joinedData1, dt3, 'full', [[0, 0]], [1,3], [1]); var options = { curveType: 'function', legend: { position: 'bottom' } }; var chart = new google.visualization.LineChart(document.getElementById('mihaylovExample')); chart.draw(joinedData2, { height: 400, width: 700, interpolateNulls: true }); } </script> <div id="mihaylovExpample" style="width: 575px; height: 400px"></div>
Из графика видно, что при k < kкр min(k=8) система устойчива т.к. график (синяя линия) последовательно проходит три квадранта, при k > kкр min(k=14) система неустойчива т.к. график (оранжевая) последовательно не проходит три квадранта и при k = kкр min система на границе устойчивости и график (красная линия) проходит через начало координат.
Амплитудно-фазовые частотные характеристики разомкнутой автоматической системы.
Передаточная функция без обратной связи имеет вид
Подставим в эту функцию чисто мнимое значение
Результирующая амплитуда:
Результирующая фаза:
Найти:
Графики амплитудно-фазовой частотной характеристики разомкнутой автоматической системы.
Из графика видно, что при k < kкр min(k=8) система устойчива т.к. график (красная линия) пересекает вещественную ось при координате >-1; при k > kкр min(k=14) система неустойчива т.к. график (синяя линия) пересекает вещественную ось при координате <-1;и при k = kкр min система на границе устойчивости и график (зеленая линия) проходит через точку (-1,0).
Графики моделируемой системы.
Графики моделируемых функций доказывают аналитические выводы относительно устойчивости автоматической системы в зависимости от коэффициента усиления. При k < kкр min(k=8) система устойчива, в случае k = kкр min(k=12.56657) система находится на границе устойчивости, при k > kкр min(k=14) система неустойчива.Cистема неустойчива(k > kкр min(k=14))
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"> </script> <script type="text/javascript">google.charts.load('current', {'packages':['corechart']}); google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart(){
var k,y,y1,y2,z,z1,z2,std,x;
const dt=0.001; c2=2.24; c3=5; Km=8;
Kkp=12.56657; Kb=14; L=8;
t1=0.1;t2=0.224; t3=0.5; g=1;
k=Kb;
y=0; y1=0; y2=0;
z=0; z1=0; z2=0; std=0;
var A=new Array(['X', 'Переходная функция']);
var i=1;
while(std < 15){
x=g-y;
y1=z1;
z1=z1+(k/t1*x-y1/t1)*dt;
y2=z2;
z2=z2+(y1/t2-y2/t2)*dt;
y=z;
z=z+(y2/t3-y/t3)*dt;
A[i]=[std,y];
std=std+dt;
i++;
}
var data = google.visualization.arrayToDataTable(A);
var options = {
title: 'Моделирование заданного типового звена',
curveType: 'function',
legend: { position: 'bottom' }
};
var chart = new google.visualization.LineChart(document.getElementById('NotSustSystemExample'));
chart.draw(data, options);
}
</script> <div id="NotSustSystemExample"></div>
Система на границе устойчивости(k = kкр min(k=12.56657))
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"> </script> <script type="text/javascript">google.charts.load('current', {'packages':['corechart']}); google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart(){
var k,y,y1,y2,z,z1,z2,std,x;
const dt=0.0001; c2=2.24; c3=5; Km=8;
Kkp=12.56657; Kb=14; L=8;
t1=0.1;t2=0.224; t3=0.5; g=1;
k=Kkp;
y=0; y1=0; y2=0;
z=0; z1=0; z2=0; std=0;
var A=new Array(['X', 'Переходная функция']);
var i=1;
while(std < 5){
x=g-y;
y1=z1;
z1=z1+(k/t1*x-y1/t1)*dt;
y2=z2;
z2=z2+(y1/t2-y2/t2)*dt;
y=z;
z=z+(y2/t3-y/t3)*dt;
A[i]=[std,y];
std=std+dt;
i++;
}
var data = google.visualization.arrayToDataTable(A);
var options = {
title: 'Моделирование заданного типового звена',
curveType: 'function',
legend: { position: 'bottom' }
};
var chart = new google.visualization.LineChart(document.getElementById('BorderOfStabilExample'));
chart.draw(data, options);
}
</script > <div id="BorderOfStabilExample"></div>
Система устойчива(k < kкр min(k=8))
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"> </script> <script type="text/javascript">google.charts.load('current', {'packages':['corechart']}); google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart(){
var k,y,y1,y2,z,z1,z2,std,x;
const dt=0.001; c2=2.24; c3=5; Km=8;
Kkp=12.56657; Kb=14; L=8;
t1=0.1;t2=0.224; t3=0.5; g=1;
k=Km;
y=0; y1=0; y2=0;
z=0; z1=0; z2=0; std=0;
var A=new Array(['X', 'Переходная функция']);
var i=1;
while(std < 6){
x=g-y;
y1=z1;
z1=z1+(k/t1*x-y1/t1)*dt;
y2=z2;
z2=z2+(y1/t2-y2/t2)*dt;
y=z;
z=z+(y2/t3-y/t3)*dt;
A[i]=[std,y];
std=std+dt;
i++;
}
var data = google.visualization.arrayToDataTable(A);
var options = {
title: 'Моделирование заданного типового звена',
curveType: 'function',
legend: { position: 'bottom' }
};
var chart = new google.visualization.LineChart(document.getElementById('SustSystemExample'));
chart.draw(data, options);
}
</script> <div id="SustSystemExample"></div>