КТПСА_ЛАБ5_Черкашин
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ХАРЬКОВСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ РАДИОЭЛЕКТРОНИКИ
Кафедра СТ
Отчет по лабораторной работе № 5 по дисциплине: «Компьютерные технологии проектирования систем автоматики»
Выполнил: Проверил:
Ст. гр. АКТСИу-17-1 доцент каф. СТ
Черкашин В.А. Ребезюк Л.Н.
Харьков 2020
5 Проектирование дискретного ПИД-регулятора
с применением инструментария системы блочного моделирования
5.1 Цель работы
Приобретение навыков проектирования дискретного ПИД-регулятора с применением инструментария системы блочного моделирования VisSim.
5.2 входные данные
Дано:
- ПФ объекта управления - двигателя постоянного тока, управляемого по цепи якорь:
где:
kду - коэффициент передачи двигателя по цепи управления (якоря) при регулировании скорости,
kду = 0.1 · (10 + nсп) + 0,25 = 2,25 [об / (сек • В)];
Tя- электромагнитная постоянная времени цепи якоря,
Tя= 0.01 · (6 + 0.33 · nсп) = 0,093 с;
tм - механической постоянной времени двигателя,
tм = 0.1 · (6 + 0.5 · nсп) - 0,02 = 1,08 с;
nсп = 10.
- принцип управления - по отклонению:
- закон управления: ПИД-регулятор, передаточная функция которого
- g (t) = 1 (t).
Необходимо:
-
спроектировать дискретный ПИД-регулятор;
-
исследовать качество управления системой до и после проектирования.
5.3 Ход работы
В ходе выполнения работы, оптимальная настройка проводилось для шага моделирования Step = 0,01.
5.3.1 Параметрический синтез ПФ непрерывного ПИД-регулятора
Во входной системе установили блок ПФ объекта управления в соответствии с индивидуальной вариантой и запустили оптимальная настройка ПИД-регулятора. Структурная схема изображена на рисунке 5.1.
Рисунок 5.1 - Структурная схема модели. После настройки коэффициенты ПИД-регулятора были занесены в параметров его П
5.3.2 Переход к эквивалентной ПФ ПИД-регулятора
Осуществили замену модели непрерывного ПИД-регулятора (построенного на элементарных блоках) с функцией передачи
одним эквивалентным блоком "transferFunction", то есть с дробной передаточной функцией отношения полиномов числителя и знаменателя.
Для этого получили информацию о его ПФ (см. Рисунок 5.2) и создали блок на базе значений с ПФ (см. Рисунок 5.3).
Рисунок 5.2 - Информация о ПФ ПИД-регулятора
Рисунок 5.3 - эквивалентный блок ПИД-регулятора для данного обьеекта управления
Данный блок установили в схема вместо ПИД-регулятора (см. Рисунок 5.4) и сравнили переходные характеристики до и после изменения в схеме (см. Рисунок 5.5).
Рисунок 5.4 - Структурная схема с установленным эквивалентным блоком
Рисунок 5.5 - Переходные характеристики ПИД-регулятора и эквивалентного ему блока
Как видим, даже при точном переносе значений по информации о ПФ к блоку, переходный процесс оказался не идентичным. Колебательность системы немного уменьшилась.
5.3.3 Переход к дискретной ПФ ПИД-регулятора
Выполнили Z-преобразование для эквивалентного блока ПИД-регулятора (см. 5.3), с периодом, равным шагу моделирования, как показано на рисунке 5.6.
В результате получили соответствующий блок преобразования, изображенный на рисунке 5.7.
Рисунок 5.6 - Процесс Z-преобразования (Convert S-> Z)
Рисунок 5.7 - Блок Z-преобразование
5.3.4 Выбор структурной схемы (алгоритма программы) и получения РУ цифрового ПИД-регулятора
Из трех широко распространенных алгоритмов программ, реализующих z-ПФ, выбрали "непосредственный". Определились с его модификацией, которая использует два буфера, как наиболее наглядной. Поскольку непосредственный алгоритм не требует расписаний z-ПФ, сразу записали разностное уравнение (РУ) для оригиналов и привели соответствующую схему, изображенную на рисунке 5.8.
y [n] = [133.243193310774 * (1 * x [n] - 1.9083132600716 * x [n-1] + 0 90984800850007 * x [n-2]) - (-1.3333333333333 * y [n-1] + 0. 33333333333333 * y [n-2])] / 1
Рисунок 5.8 - Схема для разностного уравнения цифрового ПИД-регулятора
5.3.5 Написание программы ПИД-регулятора для ЦВМ
В ходе выполнения работы написали программу рекурсивного цифрового фильтра второго порядка, код которого приведен в приложении А.
Процесс настройки изображен на рисунке 5.9.
Рисунок 5.9 - Процесс настройки дискретного ПИД-регулятора
5.3.6 Проверка работоспособности спроектированного цифрового ПИД-регулятора
Структурная схема модели с дискретным ПИД-регулятором и переходным процессом изображена на рисунке 5.10.
Рисунок 5.10 - Структурная схема системы с дискретным ПИД-регулятором
Как видим, переходная характеристика схожа с теми, что были при использовании непрерывного ПИД-регулятора и эквивалентном ему блоке. Это свидетельствует об успешные проектирования дискретного ПИД-регулятора.
Теперь остается проверить качество управления системой для обоих типов ПИД-регулятора.
5.3.7 Исследование качества управления системами до и после изменений
Переходный процесс системы с непрерывным ПИД регулятором (см. рисунок 5.1) и обозначенным временем переходного процесса изображена на рисунке 5.11.
Рисунок 5.11 - Переходный процесс системы с непрерывным ПИД-регулятором
ЛАЧХ и ЛФЧХ с обозначенными запасами устойчивости по амплитуде и фазе изображены на рисунке 5.12.
Рисунок 5.12 - ЛАЧХ и ЛФЧХ входной модели с обозначенными запасами устойчивости
ЛАЧХ системы с обозначенными частотами среза и полосы пропускания представлена на рисунке 5.13.
Рисунок 5.13 - Нули и полюсы замкнутой системы
Измеренные параметры оценки качества управления занесены в таблицу 5.1.
Таблица 5.1 - Значения параметров оценки качества управления
№ н / п |
Наименование параметра |
непрерывный ПОД |
дискретный ПОД |
|
запас устойчивости |
||
1. |
Запас по амплитуда L (A), dB |
99,40 |
98,16 |
ω (-180º) |
15273 |
17946 |
|
2. |
Запас по фазе , Град. |
71 |
70 |
Частота среза (ω С), рад / с. |
37,47 |
39,47 |
|
3. |
Частота полосы пропускания (ωП), рад / с. |
50,75 |
49 |
|
корневые оценки |
||
4. |
Степень устойчивости системы автоматического управления |
||
5. |
колебательность системы автоматического управления |
0 |
|
|
точность |
||
6. |
Ошибка в установленном режиме |
0.0094 |
0.012 |
|
быстродействие |
||
7. |
Время переходного процесса tП (Δ = ± 2%), с. |
0,3146 |
0,19 |
Переходный процесс системы с дискретным ПИД-регуялтором (см. Рисунок 5.10) и обозначенным временем переходного процесса изображена на рисунке 5.15.
Рисунок 5.14 - Переходный процесс системы с непрерывным ПИД-регулятором
ЛАЧХ и ЛФЧХ с обозначенными запасами устойчивости по амплитуде и фазе изображены на рисунке 5.16.
Рисунок 5.15 - ЛАЧХ и ЛФЧХ входной модели с обозначенными запасами устойчивости
ЛАЧХ системы с обозначенными частотами среза и полосы пропускания представлена на рисунке 5.17.
По значениям нулей и полюсов (см. Рис. 5.18) определили степень устойчивости ξ и колебательность μ системы автоматического управления по формулам:
Рисунок 5.16 - Нули и полюсы замкнутой системы
Измеренные параметры оценки качества управления занесены в таблицу 5.1.
ВЫВОДЫ
Во время выполнения лабораторной работы булв проведено исследование модели с ПФ второго порядка и непрерывным ПИД-регулятором, спроектированный дискретный ПИД-регулятор и сравнима качество управления соответствующих моделей.
В ходе выполнения работы, выполнили оптимальная настройка ПИД-регулятора, вывели эквивалентный ему блок, состоящий из полинома, получили его дискретную ПФ с помощью Z-преобразования, сформировали его разностное уравнение и конфигурировали дискретный ПИД-регулятор.
Сравнение качеств управления системами выявило почти полную сходство по корневым оценкам и запасами устойчивости, но дискретный ПИД-регулятор обладает большим быстродействием, что наверняка связано с неточной информацией о ПФ непрерывного ПИД-регулятора (см. рисунок 5.5).
В цифровой технике цифровой ПИД-регулятор - это программа на Си, реализующая разностное уравнение, обычно исчисляется цифровых сопроцессора.
Приложение А. Код программы
Таблица 5.1 - код программы на С ++
файл pid.cpp |
#include <math.h> #include <condefs.h> #pragma hdrstop # define EXPORT32 __declspec (dllexport) // ------------------------------------------------ --------------------------- struct z_TF_INFO {double k; // коэффициент усиления double b0, b1, b2; // коэффициенты полинома числителем double a0, a1, a2; // коэффициенты полинома знаменателя}; // ------------------------------------------------ --------------------------- extern "C" {double buffer_x [2] = {0,0}, buffer_y [] = {0,0}; double c, help_y; // ************ Функция размещения параметров ******************************** / / ************ вызывается VisSim-ом при создание блока ********************** EXPORT32 long WINAPI zWPA (short FAR * ppCount) {* ppCount = 7; // число записываемых в файл vsm параметров модели пользователя return sizeof (z_TF_INFO);} // ************ Процедура инициализации параметров *************************** // **** ******** вызывается VisSim-ом после PA функции ************************ EXPORT32 void WINAPI zWPI (z_TF_INFO * zTF) {zTF-> k = 133.243193310774; zTF-> b0 = 1; zTF-> b1 = -1.9083132600716; zTF-> b2 = 0. 90984800850007; zTF-> a0 = 1; zTF-> a1 = -1.3333333333333; zTF-> a2 = 0.33333333333333;} // ************ Функция изменения параметров ********************************* // ************ вызывается VisSim-ом при нажатии правой клавиши мыши ********* EXPORT32 LPSTR WINAPI zWPC (z_TF_INFO * zTF) {return "k; b0; b1; b2; a0; a1; a2";} // ************ Процедура Simulation Start ********************************* ** // ************ вызывается VisSim-ом на первом шаге моделирования ************ EXPORT32 long WINAPI zWSS (z_TF_INFO * zTF, long * runCount) {buffer_x [0] = 0; buffer_x [1] = 0; buffer_y [0] = 0; buffer_y [1] = 0; help_y = 0 c = 0; return 0;} // ************ Процедура Simulation End ********************************* **** // ************ вызывается VisSim-ом на последнем шаге моделирования ********* EXPORT32 long WINAPI zWSE (z_TF_INFO * zTF, long * runCount) {return 0;} // ************ Это базовая процедура в DLL ******************************* *** // ************ вызывается VisSim-ом на каждом шаге моделирования ************ EXPORT32 void WINAPI zW (z_TF_INFO * zTF, double FAR x [] double FAR y []) {if (x [0] == 1 && c == 0) { // Непосредственный алгоритм с двумя буферами help_y = (zTF-> k * (x [1] * zTF-> b0 + buffer_x [0] * zTF-> b1 + buffer_x [1] * zTF-> b2) - (buffer_y [0] * zTF-> a1 + buffer_y [1] * zTF-> a2)) / zTF-> a0; buffer_x [1] = buffer_x [0]; buffer_x [0] = x [1]; buffer_y [1] = buffer_y [0]; buffer_y [0] = help_y; // Непосредственный алгоритм с одним буфером / * double help; help = (x [1] - (buffer_x [0] * zTF-> a1 + buffer_x [1] * zTF-> a2)) / zTF-> a0; help_y = (help * zTF-> b0 + buffer_x [0] * zTF-> b1 + buffer_x [1] * zTF-> b2) * zTF-> k; buffer_x [1] = buffer_x [0]; buffer_x [0] = help; * / } Y [0] = help_y; c = x [0]; // организованна синхронизация блока по фронту}; // ------------------------------------------------ --------------------------- } // end extern "C" { // ------------------------------------------------ --------------------------- int WINAPI DllEntryPoint (HINSTANCE hinst, unsigned long reason, void *) {return 1;} |