Документация Engee
Notebook

Построение и анализ логарифмических амплитудно-фазовых частотных характеристик

Введение

Логарифмические амплитудно-фазовые частотные характеристики (ЛАФЧХ) являются одним из ключевых инструментов анализа и синтеза линейных систем. Они позволяют наглядно оценить устойчивость, быстродействие и качество регулирования, а также исследовать влияние отдельных звеньев на поведение системы в целом. В современной инженерной практике автоматизация построения ЛАФЧХ с помощью вычислительных средств значительно ускоряет процесс проектирования и анализа.

В данном примере представлена реализация алгоритма построения ЛАФЧХ с помощью библиотеки ControlSystems, позволяющего оперативно исследовать частотные свойства различных типовых звеньев и их комбинаций.

Импорт библиотек

Присоединим необходимые библиотеки. Для построения ЛАФЧХ, нам понадобится библиотека ControlSystems.

In [ ]:
#EngeePkg.purge()
#import Pkg
#Pkg.add("ControlSystems")
using ControlSystems

Функция для построения ЛАФЧХ

Передаточная функция (дробное выражение с коэффициентами) формируется при помощи функции tf(); вектор амплитуд, фазовых сдвигов и циклических частот формируется с помощью функции bode() из библиотеки ControlSystems. Построение ЛАФЧХ осуществляется на основе таких данных, как:

  • начальная частота
  • конечная частота
  • коэффициенты полинома числителя
  • коэффициенты полинома знаменателя.

Создадим функцию для построения ЛАФЧХ, в которой вычислим оптимальный для отображения на графиках диапазон частот и обозначим тип шкалы как логарифмический.

In [ ]:
gr()
function ЛАФЧХ(Числитель, Знаменатель, Нч, Кч)
    A, Ф, ω = bode(tf(Числитель, Знаменатель), 2π.*range(Нч, Кч, length = Int64(20*Кч/Нч)))
    АЧХ = plot(ω./2π, 20 .* log10.(vec(A)), xscale = :log10, ylabel = "Амплитуда, дБ", title = "АЧХ")
    ФЧХ = plot(ω./2π, vec(Ф), xscale = :log10, title = "ФЧХ", xlabel = "Частота, Гц", ylabel = "Фаза, °")
    АФЧХ = plot(АЧХ, ФЧХ, layout=(2, 1), legend = false, lw = 2)
    display(АФЧХ)
end
Out[0]:
ЛАФЧХ (generic function with 1 method)

Построение ЛАФЧХ

Передаточная функция это один из способов математического описания системы. Коэффициенты передаточной функции перечисляются в числовом векторе как множители полинома от наибольшей степени оператора передаточной функции к наименьшей. Последний (или единственный) коэффициент будет являться множителем оператора в нулевой степени (единицы). Определим коэффициенты числителя и коэффициенты знаменателя.

In [ ]:
Числитель = [1, 5, 50, 500]
Знаменатель = [1000, 100, 10, 1]

При данных коэффициентах, передаточная функция будет иметь следующий вид:

Определим начальную и конечную частоты и построим ЛАФЧХ.

In [ ]:
Нч = 1
Кч = 60
ЛАФЧХ(Числитель, Знаменатель, Нч, Кч)
No description has been provided for this image

Рассмотрим ЛАФЧХ различных типовых элементарных звеньев.

Пропорциональное:

При передаточной функции равной единице:

получим ЛАФЧХ пропорционального звена.

In [ ]:
# пропоциональное
Числитель = [1]
Знаменатель = [1]
Нч = 1
Кч = 1000
ЛАФЧХ(Числитель, Знаменатель, Нч, Кч)
No description has been provided for this image

Идеально интегрирующее:

Если передаточная функция обратно-пропорциональна оператору :

получим характеристику идеально интегрирующего звена.

In [ ]:
# идеально интегрирующее
Числитель = [1]
Знаменатель = [1; 0]
Нч = 1
Кч = 1000
ЛАФЧХ(Числитель, Знаменатель, Нч, Кч)
No description has been provided for this image

Идеально дифференцирующее:

При передаточной функции равной оператору :

получим характеристику идеально дифференцирующего звена.

In [ ]:
# идеально дифференцирующее
Числитель = [1; 0]
Знаменатель = [1]
Нч = 1
Кч = 1000
ЛАФЧХ(Числитель, Знаменатель, Нч, Кч)
No description has been provided for this image

Рассмотрим звенья с наиболее сложными формами ЛАФЧХ.

Апериодическое:

In [ ]:
# апериодическое
Числитель = [1]
Знаменатель = [0.01; 1]
Нч = 1
Кч = 1000
ЛАФЧХ(Числитель, Знаменатель, Нч, Кч)
No description has been provided for this image

Периодическое:

In [ ]:
# периодическое
Числитель = [1]
Знаменатель = [0.0001; 0.001; 1]
Нч = 1
Кч = 1000
ЛАФЧХ(Числитель, Знаменатель, Нч, Кч)
No description has been provided for this image

Неустойчивое апериодическое:

In [ ]:
# неустойчивое апериодическое
Числитель = [1]
Знаменатель = [0.01; -1]
Нч = 1
Кч = 1000
ЛАФЧХ(Числитель, Знаменатель, Нч, Кч)
No description has been provided for this image

Дифференцирующее первого порядка:

In [ ]:
# дифференцирующее 1-го порядка
Числитель = [0.01; 1]
Знаменатель = [1]
Нч = 1
Кч = 1000
ЛАФЧХ(Числитель, Знаменатель, Нч, Кч)
No description has been provided for this image

Форсирующее второго порядка:

In [ ]:
# форсирующее 2-го порядка
Числитель = [0.0001; -0.002; 1]
Знаменатель = [1]
Нч = 1
Кч = 1000
ЛАФЧХ(Числитель, Знаменатель, Нч, Кч)
No description has been provided for this image

Заключение

Представленный пример демонстрирует эффективный подход к построению и анализу ЛАФЧХ линейных систем с помощью современных инструментов разработки. Использование библиотеки ControlSystems обеспечивает высокую скорость вычислений, гибкость настройки и наглядность результатов. Функция построения ЛАФЧХ является основой для создания интерактивных приложений (цифровых стендов), которые позволят выявлять ключевые особенности систем и оценивать их динамическую устойчивость в широком диапазоне частот. Рассмотренные примеры охватывают основные типы элементарных звеньев, что позволяет применять предложенный подход для решения широкого круга задач в теории автоматического управления и смежных областях.