Задание к лр1
Задание. Для каждого варианта, кроме первого:
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% без перерегулирования. П-регулятор не может полностью устранить статическую ошибку, для этого требуется интегральная составляющая."