Задание. Для каждого варианта, кроме первого:

1. Смоделировать систему управления: (управляемый объект и регулятор (субъект управления)).

2. Провести эксперименты: подать ступенчатое задание и возмущение.

3. Построить графики переходных процессов.

4. Рассчитать и проанализировать прямые показатели качества.

 Рекомендуется использовать библиотеки: numpy, scipy.signal, matplotlib.pyplot, control (пакет python-control необходимо установить: pip install control).

 

Вариант 1. Система первого порядка с П-регулятором

П-регулятор - пропорциональный регулятор:

u(t) = Kp * e(t),

где

u(t) – управляющее воздействие

e(t) = r(t) – y(t) – ошибка между заданным и текущим значением

K(t) – коэффициент пропорциональности

Объект управления: Двигатель постоянного тока или нагревательный элемент. Передаточная функция: W_obj(s) = K / (T*s + 1), где K=2, T=5 сек.

Задание:

1. Задайте передаточную функцию объекта.

2. Спроектируйте П-регулятор W_reg(s) = Kp. Подберите коэффициент Kp так, чтобы статическая ошибка e_ss была меньше 0.1 при g=1 (желаемое значение). Используйте формулу для замкнутой системы: e_ss = 1 / (1 + K*Kp).

3. Смоделируйте замкнутую систему с отрицательной единичной обратной связью.

4. Получите и постройте переходную характеристику (реакцию на ступеньку g=1). Подпишите оси, добавьте сетку и легенду.

5. Рассчитайте показатели качества:

-         t_pp — время переходного процесса (до входа в 5%-ю зону).

-         e_ss — статическая ошибка (установившееся отклонение).

-         overshoot — перерегулирование (в %).

6. Проанализируйте, как изменение Kp в 2 раза в большую и меньшую сторону влияет на эти показатели. Сделайте выводы.

 

Вариант 2. Система второго порядка (осциллятор) с П-регулятором

 

Объект управления: Пружинно-массовая система или электрический колебательный контур. Передаточная функция: W_obj(s) = 1 / (s² + 2*xi*omega*s + omega²), где omega=1 (собственная частота), xi=0.2 (коэффициент демпфирования, малое значение).

 

Задание:

 

1. Задайте передаточную функцию объекта.

2. Используйте П-регулятор W_reg(s) = Kp. Начните с Kp=1.

3. Получите переходную характеристику замкнутой системы для g=1.

4. Рассчитайте показатели качества:

-       overshoot (%) — ожидается значительное.

-       t_pp (сек).

-       t_max — время достижения первого максимума.

-       Количество колебаний до успокоения.

5. Исследование: Подберите Kp так, чтобы перерегулирование составило примерно 10%. Как при этом изменились t_pp и быстродействие? Сделайте вывод о влиянии усиления на колебательность системы.

 

Вариант 3. Астатическая система (с интегратором) и ПИ-регулятор

 

Объект управления: Привод постоянной скорости (например, конвейер). Передаточная функция: W_obj(s) = 1 / s. Это интегрирующее звено.

 

Задание:

 

1. Задайте передаточную функцию объекта.

2. Сначала используйте П-регулятор (Kp=1). Смоделируйте систему. Объясните, почему выход никогда не достигает установившегося значения при g=1 (статическая ошибка не уменьшается до нуля).

3. Теперь спроектируйте ПИ-регулятор: W_reg(s) = Kp + Ki/s. Начните с Kp=1, Ki=0.5.

4. Получите переходную характеристику для g=1.

5. Ключевой вопрос: Чему теперь равна статическая ошибка e_ss? Объясните физический смысл интегральной составляющей.

6. Исследуйте влияние коэффициентов: увеличьте Ki в 2 раза. Как изменилась скорость устранения ошибки и характер переходного процесса (появились ли колебания)?

 

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

 

Объект управления: Цепь из трёх инерционных звеньев. Передаточная функция: W_obj(s) = 1 / ((s+1)*(0.5s+1)*(0.2s+1)).

 

Задание:

 

1. Задайте ПФ объекта.

2. Используйте П-регулятор W_reg(s) = Kp.

3. Проведите моделирование для трех значений Kp: 1, 5 и 15.

4. Для каждого случая постройте переходную характеристику на одном графике.

5. Анализ:

-       При каком Kp система становится неустойчивой (выход расходится)?

-       Определите критический коэффициент усиления Kp_cr (граница устойчивости) методом подбора.

-       Опишите, как с ростом Kp до критического значения меняются: быстродействие, колебательность, перерегулирование.

6. Сделайте вывод о компромиссе между усилением (быстродействием) и устойчивостью.

 

Вариант 5. Исследование компенсации возмущения

 

Объект управления: Два последовательных инерционных звена. W_obj(s) = 2 / ((3s+1)*(s+1)).

Регулятор: П-регулятор с подобранным коэффициентом Kp=2.

 

Задание:

 

1. Смоделируйте обычную замкнутую систему (с единичной обратной связью) без возмущения. Постройте переходную характеристику при g=1. Зафиксируйте установившееся значение y_ust.

2. Моделирование возмущения: Считайте, что на вход объекта действует ступенчатое возмущение f(t). Его можно смоделировать, подав дополнительный сигнал перед объектом, но после регулятора. Пусть f(t) = -0.3 (отрицательное ступенчатое воздействие, начинающееся в момент времени t=10 сек).

3. Постройте график реакции системы y(t) на совместное воздействие: задание g=1 (с t=0) и возмущение f(t) (с t=10).

4. Анализ качества:

-       Как возмущение f повлияло на выход y в установившемся режиме? Измерить новое установившееся значение.

-       Рассчитайте статическую ошибку по возмущению.

-       Какой регулятор (П, ПИ, ПИД) мог бы полностью скомпенсировать постоянное возмущение? Ответ обоснуйте.

5. Увеличьте коэффициент Kp регулятора в 2 раза. Повторите п.3. Улучшилась ли компенсация возмущения? Как изменился переходный процесс?

 

Приложение для всех вариантов:

import numpy as np

import matplotlib.pyplot as plt

import control as ct

 

# 1. Параметры системы и регулятора

Kp = 1.0   # Коэффициент П-регулятора (подбирается)

# ... другие параметры по варианту ...

 

# 2. Создание моделей

# Объект (пример для Варианта 1)

num_obj = [2]       # Коэффициенты числителя: [K]

den_obj = [5, 1]    # Коэффициенты знаменателя: [T, 1] -> T*s + 1

sys_obj = ct.tf(num_obj, den_obj)

 

# Регулятор (П)

sys_reg = ct.tf([Kp], [1])

 

# 3. Формирование замкнутой системы с отрицательной ООС

sys_closed = ct.feedback(sys_reg * sys_obj, 1)

 

# 4. Моделирование реакции на ступеньку (задание g=1)

t, y = ct.step_response(sys_closed, T=np.linspace(0, 20, 1000))

r = np.ones_like(t)  # Задание для построения

 

# 5. Построение графиков

plt.figure(figsize=(10, 6))

plt.plot(t, r, 'k--', label='Задание (g=1)')

plt.plot(t, y, 'b', linewidth=2, label='Выход (y)')

plt.xlabel('Время, с')

plt.ylabel('Выходная величина')

plt.title('Переходная характеристика замкнутой системы')

plt.grid(True, which='both', linestyle='--', alpha=0.6)

plt.legend()

plt.show()

 

# 6. Расчет показателей качества (упрощенный, для понимания)

# Нахождение установившегося значения и статической ошибки

y_steady = y[-1]

e_ss = 1 - y_steady  # для задания = 1

print(f"Установившееся значение: {y_steady:.4f}")

print(f"Статическая ошибка e_ss: {e_ss:.4f}")

 

# Поиск времени переходного процесса (вход в 5% зону)

y_target = y_steady

indices = np.where(np.abs(y - y_target) > 0.05 * y_target)[0]

t_pp = t[indices[-1]] if indices.size > 0 else t[0]

print(f"Время переходного процесса (5%): {t_pp:.2f} с")

 

Выполнение работы состоит из 4 ключевых шагов:

1. Моделируем объект — создаём математическое описание реального устройства

2. Добавляем регулятор —который принимает решения

3. Анализируем поведение — смотрим, как система реагирует на команды

4. Оцениваем качество — проверяем, хорошо ли работает система

 

2. Ключевые понятия:

 

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

 

Регулятор:

1. Сравнивает желаемое значение с текущим (получает ошибку)

2. Вычисляет управляющее воздействие

3. Подаёт команду на объект

 

Типы регуляторов:

-       П (пропорциональный) — Kp * ошибка

Проще, но есть постоянная ошибка

-       ПИ (пропорционально-интегральный) — Kp*ошибка + Ki*∫ошибки

Устраняет постоянную ошибку

-       ПИД (пропорционально-интегрирующий-дифференцирующий регулятор) — добавляет производную для прогноза

 

Показатели качества – характеризуют работу системы

 

ПРИМЕР. ВАРИАНТ 1.

 

Шаг 1: Объект управления: Двигатель постоянного тока или нагревательный элемент. Передаточная функция:

W_obj(s) = K / (T*s + 1), где K=2, T=5 сек.

 -     K=2 — если подадим 1 Вольт, температура вырастет на 2°C

-       T=5 — нагревается медленно (постоянная времени 5 секунд)

-       Объект является инерционным звеном – объект не реагирует мгновенно на управляющее воздействие

Дифференциальное уравнение:
T * dy/dt + y(t)= K * u(t)

y(t) – выход (измеряемая величина)

u(t) – вход (объект управления)

T – постоянная времени

К – коэффициент усиления ( во сколько раз усиливается сигнал)

Передаточная функция (описывает реакцию объекта на входные воздействия):

W(S) = K / T*s +1,

где s – комплексная переменная Лапласа.

Преобразование Лапласа применяется к дифференциальному уравнению, описывающему систему для преобразования его в алгебраическую форму.

Например:

T * (dy/dt) + y = K *u -> y/u = K / (T* s +1) (получилось при замене d/dt  на s)

 

Шаг 2: Создаём систему в Python

import numpy as np

import control as ct

import matplotlib.pyplot as plt

 

# 1. Создаём объект (нагреватель)

# Передаточная функция: 2 / (5s + 1)

sys_obj = ct.tf([2], [5, 1])  # [K] / [T, 1]

 

# 2. Создаём П-регулятор

Kp = 0.5  # Пока наугад

sys_reg = ct.tf([Kp], [1])  # Просто Kp

 

# 3. Собираем замкнутую систему

# Регулятор и объект последовательно, с обратной связью

sys_closed = ct.feedback(sys_reg * sys_obj, 1)

 

# Посмотрим, что получилось

print("Объект:", sys_obj)

Передаточная функция объекта управления:

2 – коэффициент усиления K=2

5s+1:  T =5

Это инерционное звено  с усилением 2  и постоянной времени 5 сек.

print("Регулятор:", sys_reg)

- W_reg = 0,5,  регулятор умножает ошибку на 0,5

print("Замкнутая система:", sys_closed)

- передаточная функция всей замкнутой системы, которая получена по формуле для систем с обратной связью

1 – коэффициент усиления K=1

Используем формулу обратной связи для замкнутых систем:
W_closed(s) = (W_reg(s) * W_obj(s)) / (1+ W_reg(s) * W_obj(s)),

где

W_reg – регулятор,

 W_obj – объект

W_reg * W_obj – сигнал обратной связи

(1+ W_reg * W_obj) – коррекция с учетом обратной связи

1 – прямая связь от входа

W_closed(s) – взаимодействие регулятора и объекта через обратную связь


Шаг 3: Проводим эксперимент

# Моделируем реакцию на ступеньку (резко ставим цель 1°C)

t, y = ct.step_response(sys_closed, T=20)  # Наблюдаем 20 секунд

 

# Рисуем график

plt.figure(figsize=(10, 5))

plt.plot(t, y, 'b-', linewidth=2, label='Температура')

plt.axhline(y=1, color='r', linestyle='--', label='Цель: 1°C')

plt.xlabel('Время (секунды)')

plt.ylabel('Температура (°C)')

plt.title('Как нагреватель достигает заданной температуры')

plt.grid(True)

plt.legend()

plt.show()


Шаг 4: Анализируем результаты

 

Кривая:

1. Медленно поднимается (инерция 5 секунд)

2. Останавливается НИЖЕ цели 1°C (статическая ошибка!)

3. Не колеблется (нет перерегулирования)

У нас имеется ошибка.  П-регулятор не может её устранить полностью.

 

Шаг 5: #Улучшаем систему

Подберём Kp по формуле для статической ошибки:

e_ss = 1 / (1 + K*Kp)

#Пусть желаемая e_ss < 0.1 (ошибка меньше 10%):

0.1 > 1 / (1 + 2*Kp)

1 + 2*Kp > 10

Kp > 4.5

Kp = 5.0  # Увеличили коэффициент

sys_reg = ct.tf([Kp], [1])

sys_closed = ct.feedback(sys_reg * sys_obj, 1)

 

# Снова моделируем и сравниваем на одном графике

t1, y1 = ct.step_response(sys_closed, T=20)

plt.plot(t1, y1, 'g-', label=f'Kp={Kp} (улучшенный)')

plt.show()


-       Ошибка уменьшилась, но появилось стремление к перерегулированию  (кривая может подняться выше установленного значения (1) и потом опуститься)

 

4. Проведем исследование

Эксперимент 1: Изменение Kp

for Kp in [1, 3, 10]:

    sys_reg = ct.tf([Kp], [1])

    sys_closed = ct.feedback(sys_reg * sys_obj, 1)

    t, y = ct.step_response(sys_closed, T=20)

    plt.plot(t, y, label=f'Kp={Kp}')

plt.show()



Наблюдаем закономерности:

-       Маленький Kp → большая ошибка, медленная система

-       Большой Kp → маленькая ошибка, но возможны колебания

-       Слишком большой Kp → система проявляет неустойчивость)

Эксперимент 2: Воздействие помех

# Симуляция скачка напряжения (помеха)

t = np.linspace(0, 40, 1000)

u = np.ones_like(t)  # Основная команда    

u[500:] = 1.2  # С 20-й секунды помеха +20%

 

# Моделируем с помехой

t, y, _ = ct.forced_response(sys_closed, t, u)

plt.plot(t, y, label='С помехой')

plt.axvline(x=20, color='gray', linestyle=':', label='Начало помехи')

plt.show()


Серая пунктирная линия (значение 20 по оси времени) означает начало помехи

5. Типичные проблемы и их причины

 

Проблема на графике

Возможная причина

Возможное действие

Система не достигает цели

Слишком маленький Kp

Увеличить Kp

 

Сильные колебания

Слишком большой Kp

Уменьшить Kp

 

Очень медленный отклик

Большая инерция объекта или маленький Kp

Увеличить Kp, добавить интегральную составляющую

 

Система неустойчива

Kp выше критического

Значительно уменьшить Kp

 

 

6. Структура отчёта

1. Цель работы — что изучаем

2. Модель системы — формулы и параметры

3. Исходный код — с комментариями

4. Графики — с подписями и выводами

5. Таблица результатов — показатели качества

6. Выводы — что узнали, какие закономерности

 

Пример вывода для Варианта 1:

 

"Исследована система первого порядка с П-регулятором. Установлено, что увеличение коэффициента усиления Kp уменьшает статическую ошибку, но может привести к колебаниям. Оптимальное значение Kp=4.5 обеспечивает ошибку менее 10% без перерегулирования. П-регулятор не может полностью устранить статическую ошибку, для этого требуется интегральная составляющая."


Последнее изменение: понедельник, 19 января 2026, 20:40