Интегральная ошибка
Cтраница 1
Интегральная ошибка определяется как площадь, ограниченная кривой изменения регулируемого параметра и его заданным значением. Интегральная ошибка является одним из общепринятых критериев оценки качества регулирования. Так как возникающее при изменении нагрузки рассогласование в конце концов становится рав — х ным нулю, то в любом устойчивом контуре регулирования интегральная ошибка приближается к некоторому конечному значению.
[1]
Интегральные ошибки этих трех переходных процессов равны, так как настройки диапазона пропорциональности и времени изо-дрома регулятора во всех случаях одинаковы. Интегральная квадратичная ошибка последнего переходного процесса меньше, чем у первых двух, так как он имеет меньшую динамическую ошибку.
[3]
Большая интегральная ошибка при регулировании состава продукта приводит к значительному понижению качества последнего, поэтому для регулирования процесса ректификации целесообразно применение контуров с прямой связью. Иногда не представляется возможным автоматический анализ состава продукта на выходе из колонны, что также делает невозможным использование контуров регулирования с обратными связями. Кроме того, если реальные регулируемые параметры характеризуют собой экономику процесса, то, используя контуры регулирования с прямой связью, можно построить системы оптимального регулирования. Таким образом, при регулировании процессов ректификации целесообразно использовать контуры регулирования по возмущению.
[4]
Тогда условием получения минимальной интегральной ошибки при наилучшем варианте является уменьшение интервала регулирования, а при наихудшем — уменьшение дискретного интервала. Установлено, что длительность дискретного интервала должна превышать Td Дгс.
[6]
Хотя половина максимального коэффициента усиления обеспечивает минимум интегральной ошибки при ступенчатом изменении нагрузки ( см. гл.
[7]
Другой интегральной оценкой является оценка по квадратичной интегральной ошибке / г. Идея применения И.
[8]
Качество компенсации системы не может быть определено только по величине относительной интегральной ошибки регулирования.
[10]
Полученная формула может служить основой для выбора параметров системы, оптимизирующих интегральную ошибку при заданных ограничениях на эти параметры и на начальное состояние системы.
[11]
Полученный результат показывает, что дополнительная положительная обратная связь регулятора значительно уменьшает абсолютную интегральную ошибку и время регулирования.
[12]
Любая система регулирования, удовлетворяющая перечисленным требованиям, будет также иметь и минимальную интегральную ошибку. Регулирующее устройство обычно выбирают исходя из степени сложности объекта регулирования.
[13]
Преимущества предлагаемого метода заключаются в том, что деятельность летчика оценивается-объективно по показателю интегральной ошибки управления, шкала которого практически неограничена, поэтому возможен анализ качества пилотирования на любой стадии тренировки. Значения интегрального показателя могут быть выражены по общепринятой 5-балльной шкале оценок.
[14]
В системах, у которых числитель передаточной функции — постоянная величина, при минимизации квадратичной интегральной ошибки процессы обычно имеют значительную колебательность. Это связано с тем, что минимизация / о равносильна стремлению максимально приблизить процесс к ступенчатой функции, что требует довольно энергичных воздействий на систему и приводит к перерегулированиям.
[15]
Страницы:
1
2
3
Термином ПЛК обозначают устройства, осуществляющие преобразование, обработку, хранение информации и выработку команд управления или управляющих/регулирующих воздействий, реализованные на базе микропроцессорной техники и являющиеся по сути специализированными управляющими вычислительными комплексами для работы в локальных и распределенных системах управления в реальном масштабе времени (рис.1.1).
Основная функция ПЛК – это формирование сигнала рассогласования между регулируемой величиной и ее заданным значением, а также динамическое преобразование сигнала рассогласования по типовым алгоритмам (законам) регулирования.
Одними из основных эксплуатационных требований, которым должны удовлетворять ПЛК, являются:
1. Безударность:
— при переходе с одного из режимов управления на другой (например, с режима ручного управления на автоматический и обратно) она обеспечивается, в частности, наличием интегрирующего устройства, состоящего из двух интеграторов: например, второй интегратор, используемый при ручном управлении, отслеживает выход узла (интегратора), обеспечивающего динамическое преобразование; при переключении в режим ручного управления выходной сигнал интегрирующего устройства формируется вторым интегратором, а первый интегратор отключается от входа и переводится одновременно в режим слежения за выходным сигналом;
— при переходе с одного из источников задания на другой в режиме автоматического управления также должен осуществляться безударно, например, с внешнего источника задания на внутренний (ручное задание, на программное изменение задания);
2. Ограничение выходного сигнала ПЛК по верхнему и нижнему уровням и сигнализация о предельных значениях этих уровней; при достижении соответствующего уровня ограничения интегрирующее устройство отключается от источника входного сигнала, благодаря этому регулятор работает всегда в зоне линейности.
Выполнение требований 1 и 2 осуществляется посредством управления операциями интегрирования, входящими в соответствующие алгоритмы (функциональные блоки): а) при переключениях с одного из режимов на другой управление сводится к отключению интегратора и формированию для него других начальных условий, соответствующих новому режиму (иногда эти процедуры называют «обратным счетом»), именно это обеспечивает безударность; б) при выходе значений сигнала за предельные (например, yMIN или yMAX), управление сводится к запрету операции интегрирования и ее запуску после возвращения значений сигнала в рабочий диапазон.
3. Гальваническое разделение входных и выходных цепей (эта задача решается на уровне соответствующих устройств сопряжения с объектом (УСО));
4. Связь с управляющими комплексами верхних уровней иерархии;
5. Автоподстройка и настройка (адаптивность) динамических параметров регулятора (адаптивные регуляторы).
Всякий процесс регулирования (управления) предполагает наличие двух подсистем (рис.1.2): управляемой системы, т.е. одного или нескольких объектов управления и управляющей или регулирующей системы (регулятора), которые в совокупности образуют систему автоматического регулирования (САР).
Объект управления (ОУ). Любой технический объект (ТО) или технологический процесс (ТП): станок, печь для термообработки, двигатель, технологический агрегат и т.д., для обеспечения нормального функционирования которого строится система автоматического (или автоматизированного) управления, носит название объекта управления или управляемого объекта. Другими словами, объект управления — это основной элемент САР, требуемый режим которого должен поддерживаться регуляторами (одним или несколькими). Объект управления выполняет определенные технические операции над материальными и/или информационными компонентами.
Исполнительный механизм (ИМ) — это устройство, с помощью которого в САР непосредственно осуществляется изменение режима объекта управления; обычно это часть объекта управления ‘ вентили паросиловых установок, обмотки возбуждения электрических машин, рули самолета и т.д.
Всякий объект управления, обладающий массой (в электротехнике и электронике — это наличие емкостей и индуктивностей), является динамическим, поскольку под действием внешних сил и моментов (конечной величины) со стороны объекта управления возникает соответствующая реакция и его положение (или состояние) не может быть изменено мгновенно.
Основная функция ПЛК (регулятора) — вырабатывать управляющие (регулирующие) воздействия, которые обеспечивают выполнение объектом требуемых функций.
Для построения САР необходимо знать математическое описание (математическую модель) объекта управления, т.е. зависимость, связывающую между собой его параметры.
На рис.1.3 приведена структурная схема одноконтурной САР, используемая при расчетах.
Физическую величину x(t), подлежащую регулированию, называют регулируемой или выходной величиной.
Воздействие g(t), которое характеризует требуемое (желаемое) значение регулируемой величины, называют задающим воздействием (в некоторых задачах его называют уставкой).
Разность ε(t) между заданным g(t) и фактическим x(t) значением регулируемой величины называют ошибкой или рассогласованием.
Воздействие u(t), вырабатываемое регулятором для осуществления требуемого закона изменения регулируемой величины, называют регулирующим воздействием.
Воздействие f(t), стремящееся нарушить требуемую функциональную связь между задающим воздействием и регулируемой величиной, называют возмущающим воздействием.
Таким образом, можно сказать, что в процессе автоматического регулирования осуществляется преобразование задающего воздействия в регулируемую величину.
В общем случае как задающее воздействие, так и регулируемая величина могут состоять из совокупности различных физических сигналов, т.е. иметь векторный характер. В этом случае система является многомерной и должна описываться в терминах пространства состояний.
Обратная связь, замыкающая систему, передает результат измерения выходной величины на вход системы.
Задача системы состоит в том, чтобы возможно точнее воспроизводить на выходе x(t) задаваемый (на входе) закон изменения g(t) и возможно полнее подавлять влияние возмущающего воздействия f(t), а также других внешних и внутренних помех, если они имеются. Выходная величина x(t) сравнивается с входной величиной g(t). Для этих целей используется соответствующий датчик (измеритель) .
На выходе сравнивающего устройства формируется рассогласование (ошибка)
Рассогласование ε служит источником воздействия на систему, причем система работает на уничтожение или сведение к допустимому малому значению величины этого рассогласования.
1.1. КЛАССИФИКАЦИИ САР
По виду задающего воздействия.
В общем случае задающее воздействие может изменяться произвольно. По виду задающего воздействия САР классифицируют следующим образом:
1) при g(t) = const САР называют собственно системами автоматического регулирования ‘ они работают на поддержание постоянного значения регулируемой величины (например, уровня жидкости в баке/котле, скорости вращения вала двигателя, температуры в некотором замкнутом объеме и т.п.). Это типичные системы регулирования по заданной настройке/уставке регулятора.
Такие системы называют также системами стабилизации (например, стабилизации напряжения на клеммах генератора, крена самолета и т.п.).
2) при g(t), заранее заданной во времени, т.е. когда задана программа (закон) изменения этого воздействия, говорят о программном автоматическом регулировании и о системах программного регулирования.
При этом выходная/регулируемая величина должна следовать заданной программе/закону изменения во времени.
3) при g(t), изменяющейся случайным/произвольным образом, САР называют следящей системой.
Законы регулирования, реализуемые ПЛК, могут быть получены на основе известных в теории автоматического регулирования методов коррекции, когда желаемые динамические характеристики системы достигаются с помощью последовательных и параллельных корректирующих устройств и обратных связей. В современных ПЛК это реализуется программно. В некоторых задачах исполнительные механизмы также участвуют в формировании закона регулирования (например, в импульсных регуляторах).
По виду регулируемого параметра автоматические регуляторы подразделяются на регуляторы температуры, давления, влажности, разряжения, расхода, состава и т. п.
По характеру изменения регулирующего воздействия автоматические регуляторы подразделяются на регуляторы с линейными и нелинейными законами регулирования.
Примером регуляторов с нелинейным законом регулирования могут служить двухпозиционные регуляторы температуры в холодильных машинах. В трехпозиционных дискретных системах выходной сигнал может принимать три значения: –1, 0, +1, т.е. “меньше”, “норма”, больше”. Качество работы таких САР выше, хотя их надежность ниже.
Регуляторы с линейным законом регулирования по математической зависимости между входными и выходными сигналами подразделяются на следующие основные виды:
— пропорциональные (П-регуляторы);
— пропорционально-интегральные (ПИ-регуляторы);
— пропорционально-дифференциальные (ПД-регуляторы);
— пропорционально-интегрально-дифференциальные (ПИД-регуляторы).
Для подавления помех и пульсаций сумма П- и Д-составляющих часто демпфируется фильтром с регулируемой постоянной времени.
При импульсном регулировании формирование ПИ’закона регулирования осуществляется совместно с интегрирующим исполнительным механизмом постоянной скорости.
В зависимости от вида используемой энергии регуляторы подразделяются на электрические (электромеханические, электронные), пневматические, гидравлические и комбинированные.
Наиболее часто используемыми в различных отраслях промышленности являются электрические регуляторы. Пневматические и гидравлические регуляторы, как правило, применяются во взрыво’ и пожароопасных зонах.
В зависимости от задающего воздействия и параметров объекта регулирования подбирают регулятор с определенной характеристикой Wр . Изменение Wр адекватно ведет к изменению коэффициентов дифференциального уравнения общего передаточного звена (регулятор’объект) и тем самым достигается необходимое качество регулирования. В промышленных регуляторах эти величины называются параметра ми настройки. Параметрами настройки являются: коэффициент усиления, зона нечувствительности, постоянная времени интегрирования, постоянная времени дифференцирования и т. д. Для изменения параметров настройки в регуляторах имеются органы настройки (управления).
Кроме органов настройки основных параметров, регуляторы имеют также органы настройки, косвенно влияющие на эти коэффициенты или режимы его работы, например, органы настройки, изменяющие чувствительность регулятора, демпфирование входного сигнала и др.
Исходя из характера протекания процесса управления требования к системе формируются по следующим показателям:
1.2. КОРРЕКЦИЯ ДИНАМИЧЕСКИХ СИСТЕМ И ЗАКОНЫ РЕГУЛИРОВАНИЯ
— точность;
— устойчивость;
— качество переходного процесса.
Точность системы задается и определяется в установившихся режимах. Устойчивость гарантирует затухание переходного процесса, после чего обеспечивается желаемое качество затухающего переходного процесса.
В тех случаях, когда САР оказывается неустойчивой или когда качество ее работы не удовлетворяет поставленным требованиям, улучшение ее динамических свойств и повышение устойчивости в ряде случаев может быть достигнуто путем введения в систему последовательно со звеньями прямой цепи дополнительных функциональных блоков или же местных (локальных) обратных связей (ОС), которые обеспечивали бы получение управляющего сигнала в виде суммы сигнала рассогласования с дополнительными сигналами, характеризующими его производную, интеграл или иную функцию. Такие функциональные блоки называют корректирующими устройствами. Следует отметить, что наряду с формированием управляющего сигнала по ошибке может использоваться и внешнее воздействие (тоже с использованием соответствующих интегралов и производных).
Можно указать следующие общие пути обеспечения заданного качества работы САР в переходном и установившемся режимах:
— введение в прямую цепь усилителя с таким коэффициентом усиления, который рационально влиял бы на качество как в переходном, так и в установившемся режимах;
— введение в прямую цепь интеграторов для обеспечения заданной точности работы САР в установившемся режиме:
— введение в прямую и обратную цепи системы дифференцирующих звеньев для обеспечения заданного качества работы в переходном режиме.
При использовании ПЛК чаще всего предполагается, что для коррекции применяются только те преобразования, которые заложены в типовые регуляторы («библиотечные» алгоритмы, функциональные блоки).
Если библиотечные алгоритмы не позволяют осуществить те или иные законы регулирования (виды коррекции), то нужно использовать дополнительные преобразования. Речь идет о введении дополнительных функциональных преобразователей и включении их либо последовательно с основными звеньями контура регулирования, либо параллельно некоторым из них, либо комбинировании этих способов. Приведенные ниже сведения из теории автоматического регулирования позволяют использовать для коррекции системы преобразования, не входящие в состав стандартных регуляторов.
1.3. ВКЛЮЧЕНИЕ ФУНКЦИОНАЛЬНЫХ ПРЕОБРАЗОВАТЕЛЕЙ В ПРЯМУЮ ЦЕПЬ
Изменение общего коэффициента передачи/усиления (Кп) разомкнутой системы .
Увеличение Кп – это способ повышения точности системы, при этом уменьшаются все виды установившихся ошибок системы.
Однако нужно помнить, что увеличение Кп ведет к ухудшению условия устойчивости, а значит, и качества переходного процесса. При некотором Кп > Ккр (критическое значение) система становится неустойчивой.
Поэтому увеличение Кп целесообразно делать одновременно с введением производной (рис.1.4).
Введение производной от ошибки (как в чистом виде, так и с инерционностью) представляет собой простейший способ улучшения качества переходного процесса.
Из-за наличия дифференцирующего звена (см. рис.1,4) регулятор формирует сигнал управления u(t) с прогнозом: если амплитуда ε(t) увеличивается, производная ε'(t) положительна и значение сигнала u(t) увеличивается. С момента уменьшения сигнала ε(t) сигнал ε'(t) и сигнал u(t) интенсивно уменьшается (рис.1.5).
Чаще всего производная вводится не в чистом виде, а с инерционностью, например, в виде звена с передаточной функции
где s – символ комплексной переменной преобразования Лапласа.
При введении воздействия по производной осуществляется положительный сдвиг по фазе, увеличивая тем самым запас устойчивости и улучшая качество переходного процесса.
Для подавления помех и пульсаций сумма П- и Д-составляющих может быть задемпфирована фильтром с регулируемой постоянной времени Тф.
В случае неидеального дифференцирования (с инерционностью) этот эффект несколько уменьшается количественно, но качественно сохраняется.
Пусть имеется астатическая система с интегрирующим и апериодическим звеньями, причем требуется уменьшить динамические ошибки этой системы и повысить ее быстродействие. Если просто увеличить усиление системы, то это может привести к уменьшению запаса устойчивости или полной потере устойчивости системы.
Иной результат будет достигнут при дополнительном воздействии по производной сигнала рассогласования, осуществимом посредством последовательного включения в контур регулирования дифференцирующего звена.
Построив амплитудно-фазовые характеристики исходной системы и той же астатической системы с последовательно включенным дифференцирующим звеном, можно установить, что добавление производной сигнала рассогласования приводит к повышению запаса устойчивости системы по фазе при одновременном снижении инерционности ее звеньев. Это позволяет значительно увеличить коэффициент усиления, сохранив прежний запас устойчивости, или обратить неустойчивую систему в устойчивую. Кроме того, динамические ошибки системы уменьшатся, а ее быстродействие возрастет.
В статических САР введение дополнительного воздействия по производной сигнала рассогласования также улучшает качество работы системы, т.к. ее инерционность уменьшается.
Введение интеграла от ошибки представляет собой метод повышения порядка астатизма системы, а значит, и увеличения ее точности. Однако при этом осуществляется отставание (отрицательный сдвиг) по фазе на –90 град., что ухудшает условия устойчивости и качество переходного процесса.
Если регулирование с воздействием по производной сигнала рассогласования снижает динамические ошибки системы, то введение дополнительного воздействия по интегралу сигнала рассогласования приводит к уменьшению статических ошибок систем. Для осуществления коррекции последовательно со звеньями системы включают интеграторы.
Построив логарифмические АФЧХ исходной системы и той же системы с последовательно включенным интегрирующим звеном, можно убедиться, что регулирование с воздействием по интегралу сигнала рассогласования увеличивает коэффициент усиления системы, особенно на низких частотах при одновременном снижении статических ошибок. Однако при этом уменьшается быстродействие системы и ее запас устойчивости. Для устранения этого недостатка применяют комбинированную коррекцию с воздействием по интегралу и по производной сигнала рассогласования.
Введение изодромной коррекции вида
— объединяет в себе введение интеграла и производной. Оно позволяет избежать недостатков предыдущей коррекции и получать необходимый порядок астатизма системы, сохраняя устойчивость и качество системы в переходном режиме. Следовательно, если в случае простого введения интеграла регулирование в системе производится не по величине ошибки, а только по интегралу от нее, то при изодромном устройстве мы получаем регулирование по ошибке и по интегралу (аналогично тому, как это было показано при регулировании по ошибке и по ее производной).
1.4. ВКЛЮЧЕНИЕ ФУНКЦИОНАЛЬНЫХ ПРЕОБРАЗОВАТЕЛЕЙ ПАРАЛЛЕЛЬНО НЕКОТОРЫМ ЗВЕНЬЯМ КОНТУРА РЕГУЛИРОВАНИЯ – МЕСТНЫЕ ОБРАТНЫЕ СВЯЗИ (ОС)
Основные виды ОС:
Местные жесткие ОС (ЖОС) применяют для повышения устойчивости системы. ЖОС действует на систему как в переходном, так и установившемся режимах: цепь ЖОС содержит только безынерционные элементы (обозначим коэффициент ОС как Кос), благодаря которым выходной сигнал этой цепи (звена 4 на рис.1.6) в любом режиме работы системы всегда прямо пропорционален выходному сигналу звена, охваченного этой связью (звено 2).
Рассмотрим два случая введения ЖОС:
1) ЖОС охватывает интегрирующее звено
В этом случае частотная характеристика звена, охваченного ЖОС, имеет вид:
Отсюда следует, что интегрирующее звено, охваченное ЖОС, приобретает свойства апериодического звена с постоянной времени
и коэффициентом передачи
Данное обстоятельство используется для подавления автоколебаний, возникающих в системах, содержащих два интегратора. Применение ЖОС превращает одно из них в апериодическое, в результате чего фазовый сдвиг в системе на низких частотах уменьшается и система из структурно неустойчивой становится устойчивой.
2) ЖОС охватывает апериодическое звено
Отсюда следует, что ЖОС уменьшает постоянную времени апериодического звена, снижая тем самым инерционность всей системы в целом.
Рассмотренные примеры показывают, что введение внутренних ЖОС сопровождается соответствующим понижением коэффициента передачи системы, что неблагоприятно сказывается на ее статической точности. Это объясняется тем, что ЖОС действуют не только в переходном, но и в установившемся режиме работы системы.
В случае, когда апериодическое звено охватывается положительной ЖОС, осуществляется увеличение Кп; однако, одновременно с этим увеличивается и постоянная времени, т.е. инерционность звена (охватываемого), оно может стать неустойчивым.
В отличие от ЖОС действие гибких ОС (ГОС) проявляется только в переходном режиме работы системы. Выходной сигнал ГОС (звено 4 на рис. 1.6) зависит не от величины выходного сигнала охватываемого звена (2), а от скорости его изменения. Поэтому к моменту достижения системой нового установившегося значения действие цепи ГОС прекращается. Можно показать, что постоянная времени апериодического и затухание колебательного звеньев возрастут, если их охватить ГОС.
Это обстоятельство используют для повышения запаса устойчивости статических систем и для подавления колебаний.
В астатических системах гибкой ОС охватывают участок, содержащий интегрирующее и апериодическое звенья, чем достигается существенное уменьшение инерционности этого участка, а следовательно, и всей системы в целом.
1.5. ВКЛЮЧЕНИЕ ФУНКЦИОНАЛЬНЫХ БЛОКОВ, ОСУЩЕСТВЛЯЮЩИХ ПРЕОБРАЗОВАНИЕ ВНЕШНЕГО ВОЗДЕЙСТВИЯ
Если наряду с формированием управляющего сигнала по ошибке вводится еще коррекция по внешнему воздействию, то получается комбинированное регулирование – по ошибке и по внешнему воздействию (тоже с использованием соответствующих интегралов и производных).
Обычно рассматривают два типа коррекции: 1) по задающему воздействию; 2) по возмущающему воздействию.
Напомним, что задающие воздействия система должна воспроизводить, а возмущающие – нейтрализовать.
Поэтому во втором случае возникают существенные трудности, заключающиеся в том, что возмущающие воздействия, в отличие от задающих, далеко не всегда можно измерить и подать на вход корректирующего устройства.
1.6. ПРОПОРЦИОНАЛЬНЫЕ РЕГУЛЯТОРЫ
Структурная схема САР представлена на рис.1.7.
Для системы регулирования, показанной на рис.1.7а, амплитудно-фазовая частотная характеристика (АФЧХ) определяется выражением W(jω) = Wp(jω) . Wоб(jω), где Wp(jω) – АФЧХ регулятора, Wоб(jω) – АФЧХ объекта регулирования.
Если комплексная частотная характеристика регулятора будет
Wp(jω) = kр,
то АФЧХ всей системы запишется в виде
W (jω) = kр Wоб(jω).
Следовательно, при подключении к объекту пропорционального регулятора АФЧХ системы на каждой частоте увеличивается в kр раз.
Пропорциональные регуляторы и имеют один параметр настройки – коэффициент передачи kр.
Переходные процессы в П-регуляторе описываются выражением
u = kр ∗ ε.
Здесь ε – входное воздействие на регулятор, равное отклонению регулируемой величины от заданного значения; u – воздействие регулятора на объект, направленное на ликвидацию отклонения регулируемой величины от заданного значения.
На рис.1.8. приведен пример контура регулирования температуры приточного воздуха в канальном кондиционере.
Температура воздуха поддерживается водяным калорифером, через который пропускается теплоноситель. Воздух, проходя через калорифер, нагревается. Температура воздуха после водяного калорифера измеряется датчиком (Т), далее эта величина поступает на устройство сравнения (УС) измеренного значения температуры (Тизм) и заданного (Tзад). В зависимости от разности между температурой уставки и измеренным значением температуры регулятор (Р) вырабатывает сигнал, воздействующий на исполнительный механизм (М – электропривод трехходового клапана). Электропривод открывает или закрывает трехходовой клапан до положения, при котором ошибка
ε = Tзад – Тизм будет стремиться к нулю.
Выходным сигналом регулятора может быть напряжение в определенном диапазоне (например, постоянное напряжение в диапазоне от 0 до 10 В, ток 0–20мА и т. д).
Диапазон изменения выходного сигнала называется диапазоном регулирования (рис.1.9).
Диапазон изменения сигнала ошибки называют пропорциональным диапазоном.
В П-регуляторах имеется возможность изменять диапазон регулирования и пропорциональный диапазон.
Из графика на рис.1.9. видно, что чем меньше пропорциональный диапазон, тем круче характеристика регулирования. Кривая (1) соответствует диапазону изменения температуры 0–10 °С, а кривая (2) – диапазону 0–4°С.
Величина kр = есть коэффициент регулирования. В первом случае kр = 1, а во втором kр ΔU/ε= 2,5.
При больших значениях kp в контуре регулирования могут возникнуть колебания (рис.1.10).
Так, если во время включения системы температура воздуха Тизм ниже заданной температуры Tзад, устройство управления выдает большой сигнал на открытие трехходового клапана. Температура водяного калорифера и приточного воздуха начнет повышаться.
Когда температура приточного воздуха после водяного калорифера достигает Tзад, устройство управления выдает команду на закрытие трехходового клапана (точка t1 на рис. 1.10).
Однако из-за того, что калорифер разогрет, температура приточного воздуха до момента t2 еще будет расти, а затем начнет снижаться. Этот процесс имеет вид затухающих колебаний, и через определенное время (t3) процесс стабилизируется.
После стабилизации из-за инерционности системы всегда будет существовать статическая ошибка Δст = Tзад – Тизм.
Сигнал на выходе регулятора будет иметь вид
u(t) = U0 + kp ∗ε,
где U0 – сигнал на выходе устройства управления при ε = 0.
Чем большим выбран пропорциональный диапазон регулирования, тем большей будет величина статической ошибки. При малой величине пропорционального диапазона увеличивается время переходных процессов, и при некоторых условиях может возникнуть автоколебательный (незатухающий) процесс в контуре регулирования.
Путем выбора параметров регулирования П-регулятора можно существенно уменьшить установившуюся ошибку регулирования, однако ее полное устранение не представляется возможным даже теоретически.
Из рис.1.8 видно, что в цепочке регулирования в реальном регуляторе установлено еще одно звено – исполнительный механизм (М). В данном случае – это электродвигатель привода трехходового клапана. Электрический привод является интегрирующим звеном и его влияние по возможности уменьшают, используя обратные связи. Это связано с тем, что динамические свойства участка, охваченного обратной связью, не зависят от динамических свойств прямого участка, а определяются в основном динамическими свойствами звена обратной связи. Эта особенность широко используется на практике при разработке автоматических регуляторов. Исходя из этого, для устранения влияния исполнительного механизма его необходимо охватить отрицательной обратной связью. Для повышения коэффициента передачи прямого канала отрицательной обратной связью нужно охватить и усилительное звено регулятора. Такие П-регуляторы, называемые позиционерами, можно представить в виде последовательного соединения собственно П-регулятора и некоторого балластного звена с постоянной времени Тб.
На рис.1.11 представлена структурная схема П-регулятора, а на рис.1.12 – реализуемый ею закон регулирования.
Параметром настройки регулятора является коэффициент передачи устройства обратной связи kос. Коэффициент передачи регулятора kп тем больше, чем меньше kос. Однако следует иметь в виду, что чем больше kп, тем больше постоянная времени балластного звена и тем больше искажается идеальный закон П-регулирования.
1.7. ПРОПОРЦИОНАЛЬНО-ИНТЕГРАЛЬНЫЕ РЕГУЛЯТОРЫ
Статическую ошибку, возникающую при пропорциональном регулировании, можно исключить, если кроме пропорционального ввести еще и интегральное звено. Последнее образуется путем постоянного суммирования ε за определенный промежуток времени и формирования сигнала управления, пропорционального полученной величине.
Математически этот процесс может быть описан следующей зависимостью:
где ku=1/Тu – коэффициент пропорциональности интегральной составляющей, а Тu — постоянная времени интегрирования, параметр настройки регулятора.
Если ku не равно 0, то даже при незначительных отклонениях регулируемой величины сигнал со временем может достичь любой величины, что приведет к перемещению регулирующего органа до момента, пока ε не станет равным 0.
Рассмотрим физический смысл постоянной времени интегрирования. Предположим, что на вход регулятора поступил сигнал ε = ε0, а пропорциональная составляющая отсутствует (kп = 0). При этом выходной сигнал будет меняться по закону
u= ε0 ∗ t/Tu.
По истечении времени t = Tu значение выходного сигнала будет равно u = ε0 (рис.1.13а).
Таким образом, постоянная времени интегрирования в И’регуляторе равна времени, в течение которого с момента поступления на вход регулятора постоянного сигнала сигнал на выходе регулятора достигнет значения, равного значению входного сигнала.
Переходной процесс в И-регуляторе показан на рис.1.13б. Устраняя статическую ошибку интегральный регулятор, однако, ухудшает качество переходного процесса. Поэтому на практике применяют комбинированные ПИ-регуляторы.
При этом используется как параллельное соединение пропорционального и интегрального звена (рис.1.14а), так и последовательное соединение (рис.1.14б).
ПИ-регулятор оказывает воздействие на регулирующий орган пропорционально отклонению и интегралу от отклонения регулируемой величины
Для схемы на рис.1.14а частотная характеристика ПИ-регулятора имеет вид
При скачкообразном изменении регулируемой величины на значение ε0 ПИ-регулятор со скоростью, определяемой быстродействием привода, перемещает исполнительный механизм на величину (kp∗ ε0), после чего исполнительный механизм дополнительно перемещается в ту же сторону со скоростью ε0/Ти, пропорциональной отклонению регулируемой величины. Следовательно, в ПИ’регуляторе при отклонении регулируемой величины от заданного значения мгновенно срабатывает пропорциональная (статическая) составляющая регулятора, а затем постепенно увеличивается интегральная (астатическая) составляющая регулятора.
Переходная характеристика ПИ-регулятора для параллельного соединения на рис.1.14а показана на рис.1.15(прямая 1).
Параметрами настойки являются независящие друг от друга коэффициенты усиления kp и постоянная времени интегрирования Ти.
Схема на рис.1.15б реализует закон регулирования
где Тиз – постоянная времени изодрома.
Частотная характеристика ПИ’регулятора по схеме рис.1.15б имеет вид:
Таким образом, ПИ-регулятор со структурной схемой, приведенной на рис.1.15б, имеет взаимосвязанные параметры настройки статической и астатической частей по коэффициенту kp. Так, при настройке коэффициента усиления kp будет изменяться и постоянная времени интегрирования:
Рассмотрим физический смысл постоянной времени изодрома Тиз. Предположим, что на вход регулятора поступил постоянный сигнал ε0. Тогда
u = kp ε0(1+t/T).
При поступлении на вход регулятора сигнала ε0 в начальный момент сработает пропорциональная составляющая и на выходе регулятора появится сигнал u1=kpε0. В дальнейшем линейно начинает нарастать выходной сигнал от интегральной составляющей и при t= Tиз достигнет значения u2=2kpε0. Тиз – это время, в течение которого от начала действия интегральной (астатической) составляющей регулятора пропорциональная (статическая) составляющая удваивается. Переходной процесс при ПИ-регулировании показан на рис.1.16.
ПИ-регулятор обеспечивает нулевую ошибку в установившемся состоянии.
Варианты структурных схем промышленных ПИ-регуляторов приведены на рис.1.17.
Выбирая ту или иную схему, можно подобрать наиболее подходящую структуру для Вашей задачи.
1.8. ПРОПОРЦИОНАЛЬНО-ИНТЕГРАЛЬНО-ДИФФЕРЕНЦИАЛЬНЫЕ (ПИД) РЕГУЛЯТОРЫ
Пропорциональные и пропорционально’интегральные регуляторы не могут упреждать ожидаемое отклонение регулируемой величины, реагируя только на уже имеющееся отклонение. Возникает необходимость в регуляторе, который вырабатывал бы дополнительное регулирующее воздействие, пропорциональное скорости отклонения регулируемой величины от заданного значения
Такое регулирующее воздействие используется в дифференциальных и ПИД-регуляторах.
ПИД-регуляторы воздействуют на объект пропорционально отклонению ε регулируемой величины, интегралу от этого отклонения и скорости изменения регулируемой величины:
По своим возможностям ПИД-регуляторы являются наиболее универсальными. Используя их, можно получить любой закон регулирования. Структурная схема и закон регулирования идеального или параллельного ПИД-регулятора приведены на рис.1.18.
При скачкообразном изменении регулируемой величины ПИД-регулятор в начальный момент времени оказывает мгновенное бесконечно большое воздействие на объект регулирования, затем величина воздействия резко падает до значения, определяемого пропорциональной составляющей, после чего постепенно начинает оказывать влияние интегральная составляющая регулятора. Переходной процесс при этом (рис.1.19) имеет минимальные отклонения по амплитуде и по времени.
Параметрами настройки ПИД-регуляторов являются коэффициент пропорциональности регулятора
Вместо введения
Системы автоматического управления (САУ) предназначены для автоматического изменения одного или нескольких параметров объекта управления с целью установления требуемого режима его работы. САУ обеспечивает поддержание постоянства заданных значений регулируемых параметров или их изменение по заданному закону либо оптимизирует определенные критерии качества управления. Например, к таким системам относятся:
- системы стабилизации,
- системы программного управления,
- следящие системы
Это достаточно широкий класс систем, которые можно найти где угодно. Но какое это отношение имеет к Unity3D и вероятно к играм в частности? В принципе прямое: в любой игре так или иначе использующей симуляцию как элемент геймплея реализуются САУ, к таким играм относятся, например, Kerbal Space Programm, Digital Combat Simulator (бывший Lock On), Strike Suit Zero и т.д. (кто знает еще примеры — пишите в комментариях). В принципе любая игра, моделирующая реальные физические процессы, в том числе и просто кинематику с динамикой движения, может реализовывать те или иные САУ — этот подход проще, естественнее, а у разработчика уже есть есть набор готовых инструментов, предоставленных всякими Вышнеградскими, Ляпуновыми, Калманами, Чебышевами и прочими Коломогоровами, поэтому можно обойтись без изобретения велосипеда, т.к. его уже изобрели, да так, что получилась отдельная наука: Теория автоматического управления. Главное тут не переусердствовать. Одна тут только проблема: рассказывают про ТАУ не везде, не всем, зачастую мало и не очень понятно.
Немножко теории
Классическая система автоматического управления представленная на следующем рисунке:
Ключевым элементом любой САУ является регулятор представляющий из себя устройство, которое следит за состоянием объекта управления и обеспечивает требуемый закон управления. Процесс управления включает в себя: вычисление ошибки управления или сигнала рассогласования e(t) как разницы между желаемой уставкой (set point или SP) и текущей величиной процесса (process value или PV), после чего регулятор вырабатывает управляющие сигналы (manipulated value или MV).
Одной из разновидностью регуляторов является пропорционально-интегрально-дифференцирующий (ПИД) регулятор, который формирует управляющий сигнал, являющийся суммой трёх слагаемых: пропорционального, интегрального и дифференциального.
Где, ошибка рассогласования, а также, — пропорциональная, — интегральная, — дифференциальная составляющие (термы) закона управления, который в итоговом виде описывается следующими формулами
Пропорциональная составляющая P — отвечает за т.н. пропорциональное управление, смысл которого в том, что выходной сигнал регулятора, противодействует отклонению регулируемой величины (ошибки рассогласования или еще это называют невязкой) от заданного значения. Чем больше ошибка рассогласования, тем больше командное отклонение регулятора. Это самый простой и очевидный закон управления. Недостаток пропорционального закона управления заключается в том, что регулятор никогда не стабилизируется в заданном значении, а увеличение коэффициента пропорциональности всегда приводит к автоколебаниям. Именно поэтому в довесок к пропорциональному закону управления приходиться использовать интегральный и дифференциальный.
Интегральная составляющая I накапливает (интегрирует) ошибку регулирования, что позволяет ПИД-регулятору устранять статическую ошибку (установившуюся ошибку, остаточное рассогласование). Или другими словами: интегральное звено всегда вносит некоторое смещение и если система подвержена некоторыми постоянным ошибкам, то оно их компенсирует (за счет своего смещения). А вот если же этих ошибок нет или они пренебрежительно малы, то эффект будет обратным — интегральная составляющая сама будет вносить ошибку смещения. Именно по этой причине её не используют, например, в задачах сверхточного позиционирования. Ключевым недостатком интегрального закона управления является эффект насыщения интегратора (Integrator windup).
Дифференциальная составляющая D пропорциональна темпу изменения отклонения регулируемой величины и предназначена для противодействия отклонениям от целевого значения, которые прогнозируются в будущем. Примечательно то, что дифференциальная компонента устраняет затухающие колебания. Дифференциальное регулирование особенно эффективно для процессов, которые имеют большие запаздывания. Недостатком дифференциального закона управления является его неустойчивость к воздействую шумов (Differentiation noise).
Таким образом, в зависимости от ситуации могут применятся П-, ПД-, ПИ- и ПИД-регуляторы, но основным законом управления в основном является пропорциональный (хотя в некоторых специфических задачах и могут использоваться исключительно только звенья дифференциаторов и интеграторов).
Казалось бы, вопрос реализации ПИД-регуляторов уже давно избит и здесь на Хабре есть парочка неплохих статей на эту тему в том числе и на Unity3D, также есть неплохая статья PID Without a PhD (перевод) и цикл статей в журнале «Современные технологии автоматизации» в двух частях: первая и вторая. Также к вашим услугам статья на Википедии (наиболее полную читайте в английском варианте). А на форумах коммьюнити Unity3D нет-нет, да и всплывет PID controller как и на gamedev.stackexchange
При вопрос по реализации ПИД-регуляторов несколько глубже чем и кажется. Настолько, что юных самоделкиных, решивших, реализовать такую схему регулирования ждет немало открытий чудных, а тема актуальная. Так что надеюсь сей опус, кому-нибудь да пригодиться, поэтому приступим.
Попытка номер раз
В качестве примера попытаемся реализовать схему регулирования на примере управления поворотом в простенькой космической 2D-аркаде, по шагам, начиная с самого начала (не забыли, что это туториал?).
Почему не 3D? Потому что реализация не измениться, за исключением того, что придется воротить ПИД-регулятор для контроля тангажа, рысканья и крена. Хотя вопрос корректного применения ПИД-регулирования вместе с кватернионами действительно интересный, возможно в будущем его и освящу, но даже в NASA предпочитают углы Эйлера вместо кватернионов, так что обойдемся простенькой моделью на двухмерной плоскости.
Для начала создадим сам объект игровой объект космического корабля, который будет состоять из собственно самого объекта корабля на верхнем уровне иерархии, прикрепим к нему дочерний объект Engine (чисто спецэффектов ради). Вот как это выглядит у меня:
А на сам объект космического корабля накидаем в инспекторе всяческих компонент. Забегая вперед, приведу скрин того, как он будет выглядеть в конце:
Но это потом, а пока в нем еще нет никаких скриптов, только стандартный джентльменский набор: Sprite Render, RigidBody2D, Polygon Collider, Audio Source (зачем?).
Собственно физика у нас сейчас самое главное и управление будет осуществляться исключительно через неё, в противном случае, применение ПИД-регулятора потеряло бы смысл. Масса нашего космического корабля оставим также в 1 кг, а все коэффициенты трения и гравитации равны нулю — в космосе же.
Т.к. помимо самого космического корабля есть куча других, менее умных космических объектов, то сначала опишем родительский класс BaseBody, который в себе будет содержать ссылки на на наши компоненты, методы инициализации и уничтожения, а также ряд дополнительных полей и методов, например для реализации небесной механики:
BaseBody.cs
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace Assets.Scripts.SpaceShooter.Bodies
{
[RequireComponent(typeof(SpriteRenderer))]
[RequireComponent(typeof(AudioSource))]
[RequireComponent(typeof(Rigidbody2D))]
[RequireComponent(typeof(Collider2D))]
public class BaseBody : MonoBehaviour
{
readonly float _deafultTimeDelay = 0.05f;
[HideInInspector]
public static List<BaseBody> _bodies = new List<BaseBody>();
#region RigidBody
[HideInInspector]
public Rigidbody2D _rb2d;
[HideInInspector]
public Collider2D[] _c2d;
#endregion
#region References
[HideInInspector]
public Transform _myTransform;
[HideInInspector]
public GameObject _myObject;
/// <summary>
/// Объект, который появляется при уничтожении
/// </summary>
public GameObject _explodePrefab;
#endregion
#region Audio
public AudioSource _audioSource;
/// <summary>
/// Звуки, которые проигрываются при получении повреждения
/// </summary>
public AudioClip[] _hitSounds;
/// <summary>
/// Звуки, которые проигрываются при появлении объекта
/// </summary>
public AudioClip[] _awakeSounds;
/// <summary>
/// Звуки, которые воспроизводятся перед смертью
/// </summary>
public AudioClip[] _deadSounds;
#endregion
#region External Force Variables
/// <summary>
/// Внешние силы воздйствующие на объект
/// </summary>
[HideInInspector]
public Vector2 _ExternalForces = new Vector2();
/// <summary>
/// Текущий вектор скорости
/// </summary>
[HideInInspector]
public Vector2 _V = new Vector2();
/// <summary>
/// Текущий вектор силы гравитации
/// </summary>
[HideInInspector]
public Vector2 _G = new Vector2();
#endregion
public virtual void Awake()
{
Init();
}
public virtual void Start()
{
}
public virtual void Init()
{
_myTransform = this.transform;
_myObject = gameObject;
_rb2d = GetComponent<Rigidbody2D>();
_c2d = GetComponentsInChildren<Collider2D>();
_audioSource = GetComponent<AudioSource>();
PlayRandomSound(_awakeSounds);
BaseBody bb = GetComponent<BaseBody>();
_bodies.Add(bb);
}
/// <summary>
/// Уничтожение персонажа
/// </summary>
public virtual void Destroy()
{
_bodies.Remove(this);
for (int i = 0; i < _c2d.Length; i++)
{
_c2d[i].enabled = false;
}
float _t = PlayRandomSound(_deadSounds);
StartCoroutine(WaitAndDestroy(_t));
}
/// <summary>
/// Ждем некоторое время перед уничтожением
/// </summary>
/// <param name="waitTime">Время ожидания</param>
/// <returns></returns>
public IEnumerator WaitAndDestroy(float waitTime)
{
yield return new WaitForSeconds(waitTime);
if (_explodePrefab)
{
Instantiate(_explodePrefab, transform.position, Quaternion.identity);
}
Destroy(gameObject, _deafultTimeDelay);
}
/// <summary>
/// Проигрывание случайного звука
/// </summary>
/// <param name="audioClip">Массив звуков</param>
/// <returns>Длительность проигрываемого звука</returns>
public float PlayRandomSound(AudioClip[] audioClip)
{
float _t = 0;
if (audioClip.Length > 0)
{
int _i = UnityEngine.Random.Range(0, audioClip.Length - 1);
AudioClip _audioClip = audioClip[_i];
_t = _audioClip.length;
_audioSource.PlayOneShot(_audioClip);
}
return _t;
}
/// <summary>
/// Получение урона
/// </summary>
/// <param name="damage">Уровень урона</param>
public virtual void Damage(float damage)
{
PlayRandomSound(_hitSounds);
}
}
}
Вроде описали все что надо, даже больше чем нужно (в рамках этой статьи). Теперь отнаследуем от него класс корабля Ship, который должен уметь двигаться и поворачивать:
SpaceShip.cs
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace Assets.Scripts.SpaceShooter.Bodies
{
public class Ship : BaseBody
{
public Vector2 _movement = new Vector2();
public Vector2 _target = new Vector2();
public float _rotation = 0f;
public void FixedUpdate()
{
float torque = ControlRotate(_rotation);
Vector2 force = ControlForce(_movement);
_rb2d.AddTorque(torque);
_rb2d.AddRelativeForce(force);
}
public float ControlRotate(Vector2 rotate)
{
float result = 0f;
return result;
}
public Vector2 ControlForce(Vector2 movement)
{
Vector2 result = new Vector2();
return result;
}
}
}
Пока в нем нет ничего интересно, на текущий момент это просто класс-заглушка.
Также опишем базовый(абстрактный) класс для всех контроллеров ввода BaseInputController:
BaseInputController.cs
using UnityEngine;
using Assets.Scripts.SpaceShooter.Bodies;
namespace Assets.Scripts.SpaceShooter.InputController
{
public enum eSpriteRotation
{
Rigth = 0,
Up = -90,
Left = -180,
Down = -270
}
public abstract class BaseInputController : MonoBehaviour
{
public GameObject _agentObject;
public Ship _agentBody; // Ссылка на компонент логики корабля
public eSpriteRotation _spriteOrientation = eSpriteRotation.Up; //Это связано с нестандартной
// ориентации спрайта "вверх" вместо "вправо"
public abstract void ControlRotate(float dt);
public abstract void ControlForce(float dt);
public virtual void Start()
{
_agentObject = gameObject;
_agentBody = gameObject.GetComponent<Ship>();
}
public virtual void FixedUpdate()
{
float dt = Time.fixedDeltaTime;
ControlRotate(dt);
ControlForce(dt);
}
public virtual void Update()
{
//TO DO
}
}
}
И наконец, класс контроллера игрока PlayerFigtherInput:
PlayerInput.cs
using UnityEngine;
using Assets.Scripts.SpaceShooter.Bodies;
namespace Assets.Scripts.SpaceShooter.InputController
{
public class PlayerFigtherInput : BaseInputController
{
public override void ControlRotate(float dt)
{
// Определяем позицию мыши относительно игрока
Vector3 worldPos = Input.mousePosition;
worldPos = Camera.main.ScreenToWorldPoint(worldPos);
// Сохраняем координаты указателя мыши
float dx = -this.transform.position.x + worldPos.x;
float dy = -this.transform.position.y + worldPos.y;
//Передаем направление
Vector2 target = new Vector2(dx, dy);
_agentBody._target = target;
//Вычисляем поворот в соответствии с нажатием клавиш
float targetAngle = Mathf.Atan2(dy, dx) * Mathf.Rad2Deg;
_agentBody._targetAngle = targetAngle + (float)_spriteOrientation;
}
public override void ControlForce(float dt)
{
//Передаем movement
_agentBody._movement = Input.GetAxis("Vertical") * Vector2.up
+ Input.GetAxis("Horizontal") * Vector2.right;
}
}
}
Вроде бы закончили, теперь наконец можно перейти к тому, ради чего все это затевалось, т.е. ПИД-регуляторам (не забыли надеюсь?). Его реализация кажется простой до безобразия:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Assets.Scripts.Regulator
{
[System.Serializable] // Этот атрибут необходим для того что бы поля регулятора
// отображались в инспекторе и сериализовывались
public class SimplePID
{
public float Kp, Ki, Kd;
private float lastError;
private float P, I, D;
public SimplePID()
{
Kp = 1f;
Ki = 0;
Kd = 0.2f;
}
public SimplePID(float pFactor, float iFactor, float dFactor)
{
this.Kp = pFactor;
this.Ki = iFactor;
this.Kd = dFactor;
}
public float Update(float error, float dt)
{
P = error;
I += error * dt;
D = (error - lastError) / dt;
lastError = error;
float CO = P * Kp + I * Ki + D * Kd;
return CO;
}
}
}
Значения коэффициентов по умолчанию возьмем с потолка: это будет тривиальный единичный коэффициент пропорционального закона управления Kp = 1, небольшое значение коэффициента для дифференциального закона управления Kd = 0.2, который должен устранить ожидаемые колебания и нулевое значение для Ki, которое выбрано потому, что в нашей программной модели нет никаких статичных ошибок (но вы всегда можете их внести, а потом героически побороться с помощью интегратора).
Теперь вернемся к нашему классу SpaceShip и попробуем заюзать наше творение в качестве регулятора поворота космического корабля в методе ControlRotate:
public float ControlRotate(Vector2 rotate)
{
float MV = 0f;
float dt = Time.fixedDeltaTime;
//Вычисляем ошибку
float angleError = Mathf.DeltaAngle(_myTransform.eulerAngles.z, targetAngle);
//Получаем корректирующее ускорение
MV = _angleController.Update(angleError, dt);
return MV;
}
ПИД-регулятор будет осуществлять точное угловое позиционировая космического корабля только за счет крутящего момента. Все честно, физика и САУ, почти как в реальной жизни.
И без этих ваших Quaternion.Lerp
if (!_rb2d.freezeRotation)
rb2d.freezeRotation = true;
float deltaAngle = Mathf.DeltaAngle(_myTransform.eulerAngles.z, targetAngle);
float T = dt * Mathf.Abs( _rotationSpeed / deltaAngle);
// Трансформируем угол в вектор
Quaternion rot = Quaternion.Lerp(
_myTransform.rotation,
Quaternion.Euler(new Vector3(0, 0, targetAngle)),
T);
// Изменяем поворот объекта
_myTransform.rotation = rot;
Получившейся исходный код Ship.cs под спойлером
using UnityEngine;
using Assets.Scripts.Regulator;
namespace Assets.Scripts.SpaceShooter.Bodies
{
public class Ship : BaseBody
{
public GameObject _flame;
public Vector2 _movement = new Vector2();
public Vector2 _target = new Vector2();
public float _targetAngle = 0f;
public float _angle = 0f;
[Header("PID")]
public SimplePID _angleController = new SimplePID();
public void FixedUpdate()
{
float torque = ControlRotate(_targetAngle);
Vector2 force = ControlForce(_movement);
_rb2d.AddTorque(torque);
_rb2d.AddRelativeForce(force);
}
public float ControlRotate(float rotate)
{
float MV = 0f;
float dt = Time.fixedDeltaTime;
_angle = _myTransform.eulerAngles.z;
//Вычисляем ошибку
float angleError = Mathf.DeltaAngle(_angle, rotate);
//Получаем корректирующее ускорение
MV = _angleController.Update(angleError, dt);
return MV;
}
public Vector2 ControlForce(Vector2 movement)
{
Vector2 MV = new Vector2();
//Кусок кода спецэффекта работающего двигателя ради
if (movement != Vector2.zero)
{
if (_flame != null)
{
_flame.SetActive(true);
}
}
else
{
if (_flame != null)
{
_flame.SetActive(false);
}
}
MV = movement;
return MV;
}
}
}
Все? Расходимся по домам?
WTF! Что происходит? Почему корабль поворачивается как-то странно? И почему он так резко отскакивает от других объектов? Неужели этот глупый ПИД-регулятор не работает?
Без паники! Давайте попробуем разобраться что происходит.
В момент получения нового значения SP, происходит резкий (ступенчатый) скачок рассогласования ошибки, которая, как мы помним, вычисляется вот так: соответственно происходит резкий скачок производной ошибки , которую мы вычисляем в этой строчке кода:
D = (error - lastError) / dt;
Можно, конечно, попробовать другие схемы дифференцирования, например, трехточечную, или пятиточечную, или… но все равно это не поможет. Ну вот не любят производные резких скачков — в таких точках функция не является дифференцируемой. Однако поэкспериментировать с разными схемами дифференцирования и интегрирования стоит, но потом и не в этой статье.
Думаю что настал момент построить графики переходного процесса: ступенчатое воздействие от S(t) = 0 в SP(t) = 90 градусов для тела массой в 1 кг, длинной плеча силы в 1 метр и шагом сетки дифференцирования 0.02 с — прям как в нашем примере на Unity3D (на самом деле не совсем, при построении этих графиков не учитывалось, что момент инерции зависит от геометрии твердого тела, поэтому переходный процесс будет немножко другой, но все же достаточно похожий для демонстрации). Все величены на грифике приведены в абсолютных значениях:
Хм, что здесь происходит? Куда улетел отклик ПИД-регулятора?
Поздравляю, мы только что столкнулись с таким явлением как «удар» (kick). Очевидно, что в момент времени, когда процесс еще PV = 0, а уставка уже SP = 90, то при численном дифференцировании получим значение производной порядка 4500, которое умножится на Kd=0.2 и сложится с пропорциональным теромом, так что на выходе мы получим значение углового ускорения 990, а это уже форменное надругательство над физической моделью Unity3D (угловые скорости будут достигать 18000 град/с… я думаю это предельное значение угловой скорости для RigidBody2D).
- Может стоит подобрать коэффициенты ручками, так чтобы скачок был не таким сильным?
- Нет! Самое лучше чего мы таким образом сможем добиться — небольшая амплитуда скачка производной, однако сам скачок как был так и останется, при этом можно докрутиться до полной неэффективности дифференциальной составляющей.
Впрочем можете поэкспериментировать.
Попытка номер два. Сатурация
Логично, что привод (в нашем случае виртуальные маневровые двигатели SpaceShip), не может отрабатывать сколько угодно большие значения которые может выдать наш безумный регулятор. Так что первое что мы сделаем — сатурируем выход регулятора:
public float ControlRotate(Vector2 rotate, float thrust)
{
float CO = 0f;
float MV = 0f;
float dt = Time.fixedDeltaTime;
//Вычисляем ошибку
float angleError = Mathf.DeltaAngle(_myTransform.eulerAngles.z, targetAngle);
//Получаем корректирующее ускорение
CO = _angleController.Update(angleError, dt);
//Сатурируем
MV = CO;
if (MV > thrust) MV = thrust;
if (MV< -thrust) MV = -thrust;
return MV;
}
А очередной раз переписанный класс Ship полностью выглядит так
namespace Assets.Scripts.SpaceShooter.Bodies
{
public class Ship : BaseBody
{
public GameObject _flame;
public Vector2 _movement = new Vector2();
public Vector2 _target = new Vector2();
public float _targetAngle = 0f;
public float _angle = 0f;
public float _thrust = 1f;
[Header("PID")]
public SimplePID _angleController = new SimplePID(0.1f,0f,0.05f);
public void FixedUpdate()
{
_torque = ControlRotate(_targetAngle, _thrust);
_force = ControlForce(_movement);
_rb2d.AddTorque(_torque);
_rb2d.AddRelativeForce(_force);
}
public float ControlRotate(float targetAngle, float thrust)
{
float CO = 0f;
float MV = 0f;
float dt = Time.fixedDeltaTime;
//Вычисляем ошибку
float angleError = Mathf.DeltaAngle(_myTransform.eulerAngles.z, targetAngle);
//Получаем корректирующее ускорение
CO = _angleController.Update(angleError, dt);
//Сатурируем
MV = CO;
if (MV > thrust) MV = thrust;
if (MV< -thrust) MV = -thrust;
return MV;
}
public Vector2 ControlForce(Vector2 movement)
{
Vector2 MV = new Vector2();
if (movement != Vector2.zero)
{
if (_flame != null)
{
_flame.SetActive(true);
}
}
else
{
if (_flame != null)
{
_flame.SetActive(false);
}
}
MV = movement * _thrust;
return MV;
}
public void Update()
{
}
}
}
Итоговая схема нашего САУ тогда станет уже вот такой
При этом уже становится понятно, что выход контроллера CO(t) немного не одно и тоже, что управляемая величина процесса MV(t).
Собственно с этого места можно уже добавлять новую игровую сущность — привод, через которую и будет осуществляться управление процессом, логика работы которой может быть более сложной, чем просто Mathf.Clamp(), например, можно ввести дискретизацию значений (дабы не перегружать игровую физику величинами идущими шестыми после запятой), мертвую зону (опять таки не имеет смысл перегружать физику сверхмалыми реакциями), ввести задержку в упраление и нелинейность (например, сигмоиду) привода, после чего посмотреть, что из этого получится.
Запустив игру, мы обнаружим, что космический корабль стал наконец управляемым:
Если построить графики, то можно увидеть, что реакция контроллера стала уже вот такой:
Здесь уже используются нормированные величены, углы поделены на значение SP, а выход контроллера отнормирован относительно максимального значения на котором уже происходит сатурация.
Теперь на графике видно наличие ошибки перерегулирования (overshooting) и затухающие колебания. Уменьшая Kp и увеличивая Kd можно добиться уменьшения колебаний, но зато увеличится время реакции контроллера (скорость поворота корабля). И наоборот, увеличивая Kp и уменьшая Kd — можно добиться увеличения скорости реакции контроллера, но появятся паразитные колебания, которые при определенных (критических) значениях, перестанут быть затухающими.
Ниже приведена известна таблица влияния увеличения параметров ПИД-регулятора (как уменьшить шрифт, а то таблица безе переносов не лезет?):
А общий алгоритм ручной настройки ПИД-регулятора следующий:
- Подбираем пропорциональный коэффициенты при отключенных дифференциальных и интегральных звеньях до тех пор пока не начнутся автоколебания.
- Постепенно увеличивая дифференциальную составляющую избавляемся от автоколебаний
- Если наблюдается остаточная ошибка регулирования (смещение), то устраняем её за счет интегральной составляющей.
Каких-то общих значений параметров ПИД-регулятора нет: конкретные значения зависят исключительно от параметров процесса (его передаточной характеристики): ПИД-регулятор отлично работающий с одним объектом управления окажется неработоспособным с другим. Более того, коэффициенты при пропорциональной, интегральной и дифференциальной составляющих еще и взаимозависимы.
В общем не будем о грустном, дальше нас ждет самое интересное…
Попытка номер три. Еще раз производные
Приделав костыль в виде ограничения значений выхода контроллера мы так и не решили самую главную проблему нашего регулятора — дифференциальная составляющая плохо себя чувствует при ступенчатом изменении ошибки на входе регуляторе. На самом деле есть множество других костылей, например, в момент скачкообразного изменения SP «отключать» дифференциальную составляющую или же поставить фильтры нижних частот между SP(t) и операцией за счет которого будет происходить плавное нарастание ошибки, а можно совсем развернуться и впендюрить самый настоящий фильтр Калмана для сглаживания входных данных. В общем костылей много, и добавить наблюдателя конечно хотелось бы, но не в этот раз.
Поэтому снова вернемся к производной ошибки рассогласования и внимательно на неё посмотрим:
Ничего не заметили? Если хорошенько присмотреться, то можно обнаружить, что вообще-то SP(t), не меняется во времени (за исключением моментов ступенчатого изменения, когда регулятор получает новую команду), т.е. её производная равна нулю:
тогда
Иными словами, вместо производной ошибки, которая дифференцируема не везде мы можем использовать производную от процесса, который в мире классической механики как правило непрерывен и дифференцируем везде, а схема нашей САУ уже приобретет следующий вид:
Модифицируем код регулятора:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Assets.Scripts.Regulator
{
[System.Serializable]
public class SimplePID
{
public float Kp, Ki, Kd;
private float P, I, D;
private float lastPV = 0f;
public SimplePID()
{
Kp = 1f;
Ki = 0f;
Kd = 0.2f;
}
public SimplePID(float pFactor, float iFactor, float dFactor)
{
this.Kp = pFactor;
this.Ki = iFactor;
this.Kd = dFactor;
}
public float Update(float error, float PV, float dt)
{
P = error;
I += error * dt;
D = -(PV - lastPV) / dt;
lastPV = PV;
float CO = Kp * P + Ki * I + Kd * D;
return CO;
}
}
}
И немного изменим метод ControlRotate:
public float ControlRotate(Vector2 rotate, float thrust)
{
float CO = 0f;
float MV = 0f;
float dt = Time.fixedDeltaTime;
//Вычисляем ошибку
float angleError = Mathf.DeltaAngle(_myTransform.eulerAngles.z, targetAngle);
//Получаем корректирующее ускорение
CO = _angleController.Update(angleError, _myTransform.eulerAngles.z, dt);
//Сатурируем
MV = CO;
if (CO > thrust) MV = thrust;
if (CO < -thrust) MV = -thrust;
return MV;
}
И-и-и-и… если запустить игру, то обнаружиться, что на самом деле ничего ничего не изменилось с последней попытки, что и требовалось доказать. Однако, если убрать сатурацию, то график реакции регулятора будет выглядеть вот так:
Скачок CO(t) по прежнему присутствует, однако он уже не такой большой как был в самом начале, а самое главное — он стал предсказуемым, т.к. обеспечивается исключительно пропорциональной составляющей, и ограничен максимально возможной ошибкой рассогласования и пропорциональным коэффициентом ПИД-регулятора (а это уже намекает на то, что Kp имеет смысл выбрать все же меньше единицы, например, 1/90f), но не зависит от шага сетки дифференцирования (т.е. dt). В общем, я настоятельно рекомендую использовать именно производную процесса, а не ошибки.
Думаю теперь никого не удивит, но таким же макаром можно заменить на , однако останавливаться на этом мы не будем, можете сами поэкспериментировать и рассказать в комментариях, что из этого получилось (самому интересно)
Попытка номер четыре. Альтернативные реализации ПИД-регулятор
Помимо описанного выше идеального представления ПИД-регулятора, на практике часто применяется стандартная форма, без коэффициентов Ki и Kd, вместо которых используются временные постоянные.
Такой подход связан с тем, что ряд методик настройки ПИД-регулятора основан на частотных характеристиках ПИД-регулятора и процесса. Собственно вся ТАУ и крутится вокруг частотных характеристик процессов, поэтому для желающих углубиться, и, внезапно, столкнувшихся с альтернативной номенклатурой, приведу пример т.н. стандартной формы ПИД-регулятора:
где, — постоянная дифференцирования, влияющая на прогнозирование состояния системы регулятором,
— постоянная интегрирования, влияющая на интервал усреднения ошибки интегральным звеном.
Основные принципы настройки ПИД-регулятора в стандартной форме аналогичны идеализированному ПИД-регулятору:
- увеличение пропорционального коэффициента увеличивает быстродействие и снижает запас устойчивости;
- с уменьшением интегральной составляющей ошибка регулирования с течением времени уменьшается быстрее;
- уменьшение постоянной интегрирования уменьшает запас устойчивости;
- увеличение дифференциальной составляющей увеличивает запас устойчивости и быстродействие
Исходный код стандартной формы, вы можете найти под спойлером
namespace Assets.Scripts.Regulator
{
[System.Serializable]
public class StandartPID
{
public float Kp, Ti, Td;
public float error, CO;
public float P, I, D;
private float lastPV = 0f;
public StandartPID()
{
Kp = 0.1f;
Ti = 10000f;
Td = 0.5f;
bias = 0f;
}
public StandartPID(float Kp, float Ti, float Td)
{
this.Kp = Kp;
this.Ti = Ti;
this.Td = Td;
}
public float Update(float error, float PV, float dt)
{
this.error = error;
P = error;
I += (1 / Ti) * error * dt;
D = -Td * (PV - lastPV) / dt;
CO = Kp * (P + I + D);
lastPV = PV;
return CO;
}
}
}
В качестве значений по умолчанию, выбраны Kp = 0.01, Ti = 10000, Td = 0.5 — при таких значениях корабль поворачивается достаточно быстро и обладает некоторым запасом устойчивости.
Помимо такой формы ПИД-регулятора, часто используется т.н. реккурентная форма:
Не будем на ней останавливаться, т.к. она актуальна прежде всего для хардверных программистов, работающих с FPGA и микроконтроллерами, где такая реализация значительно удобнее и эффективнее. В нашем же случае — давайте что-нибудь сваям на Unity3D — это просто еще одна реализация ПИД-контроллера, которая ни чем не лучше других и даже менее понятная, так что еще раз дружно порадуемся как хорошо программировать в уютненьком C#, а не в жутком и страшном VHDL, например.
Вместо заключения. Куда бы еще присобачить ПИД-регулятор
Теперь попробуем немного усложнить управление корабля используя двухконтурное управление: один ПИД-регулятор, уже знакомый нам _angleController, отвечает по прежнему за угловое позиционирование, а вот второй — новый, _angularVelocityController — контролирует скорость поворота:
public float ControlRotate(float targetAngle, float thrust)
{
float CO = 0f;
float MV = 0f;
float dt = Time.fixedDeltaTime;
_angle = _myTransform.eulerAngles.z;
//Контроллер угла поворота
float angleError = Mathf.DeltaAngle(_angle, targetAngle);
float torqueCorrectionForAngle =
_angleController.Update(angleError, _angle, dt);
//Контроллер стабилизации скорости
float angularVelocityError = -_rb2d.angularVelocity;
float torqueCorrectionForAngularVelocity =
_angularVelocityController.Update(angularVelocityError, -angularVelocityError, dt);
//Суммарный выход контроллера
CO = torqueCorrectionForAngle + torqueCorrectionForAngularVelocity;
//Дискретизируем с шагом 100
CO = Mathf.Round(100f * CO) / 100f;
//Сатурируем
MV = CO;
if (CO > thrust) MV = thrust;
if (CO < -thrust) MV = -thrust;
return MV;
}
Назначение второго регулятора — гашение избыточных угловых скоростей, за счет изменения крутящего момента — это сродни наличию углового трения, которое мы отключили еще при создании игрового объекта. Такая схема управления [возможно] позволит получить более стабильное поведение корабля, и даже обойтись только пропорциональными коэффициентами управления — второй регулятор будет гасить все колебания, выполняя функцию, аналогичную дифференциальной составляющей первого регулятора.
Помимо этого, добавим новый класс ввода игрока — PlayerInputCorvette, в котором повороты буду осуществляться уже за счет нажатия клавиш «вправо-влево», а целеуказание с помощью мыши мы оставим для чего-нибудь более полезного, например, для управления турелью. Заодно у нас теперь появился такой параметр как _turnRate — отвечающий за скорость/отзывчивость поворота (не понятно только куда его поместить лучше в InputCOntroller или все же Ship).
public class PlayerCorvetteInput : BaseInputController
{
public float _turnSpeed = 90f;
public override void ControlRotate()
{
// Находим указатель мыши
Vector3 worldPos = Input.mousePosition;
worldPos = Camera.main.ScreenToWorldPoint(worldPos);
// Сохраняем относительные координаты указателя мыши
float dx = -this.transform.position.x + worldPos.x;
float dy = -this.transform.position.y + worldPos.y;
//Передаем направление указателя мыши
Vector2 target = new Vector2(dx, dy);
_agentBody._target = target;
//Вычисляем поворот в соответствии с нажатием клавиш
_agentBody._rotation -= Input.GetAxis("Horizontal") * _turnSpeed * Time.deltaTime;
}
public override void ControlForce()
{
//Передаем movement
_agentBody._movement = Input.GetAxis("Vertical") * Vector2.up;
}
}
Также для наглядности накидаем на коленках скрипт для отображения отладочной информации
namespace Assets.Scripts.SpaceShooter.UI
{
[RequireComponent(typeof(Ship))]
[RequireComponent(typeof(BaseInputController))]
public class Debugger : MonoBehaviour
{
Ship _ship;
BaseInputController _controller;
List<SimplePID> _pids = new List<SimplePID>();
List<string> _names = new List<string>();
Vector2 _orientation = new Vector2();
// Use this for initialization
void Start()
{
_ship = GetComponent<Ship>();
_controller = GetComponent<BaseInputController>();
_pids.Add(_ship._angleController);
_names.Add("Angle controller");
_pids.Add(_ship._angularVelocityController);
_names.Add("Angular velocity controller");
}
// Update is called once per frame
void Update()
{
DrawDebug();
}
Vector3 GetDiretion(eSpriteRotation spriteRotation)
{
switch (_controller._spriteOrientation)
{
case eSpriteRotation.Rigth:
return transform.right;
case eSpriteRotation.Up:
return transform.up;
case eSpriteRotation.Left:
return -transform.right;
case eSpriteRotation.Down:
return -transform.up;
}
return Vector3.zero;
}
void DrawDebug()
{
//Направление поворота
Vector3 vectorToTarget = transform.position
+ 5f * new Vector3(-Mathf.Sin(_ship._targetAngle * Mathf.Deg2Rad),
Mathf.Cos(_ship._targetAngle * Mathf.Deg2Rad), 0f);
// Текущее направление
Vector3 heading = transform.position + 4f * GetDiretion(_controller._spriteOrientation);
//Угловое ускорение
Vector3 torque = heading - transform.right * _ship._Torque;
Debug.DrawLine(transform.position, vectorToTarget, Color.white);
Debug.DrawLine(transform.position, heading, Color.green);
Debug.DrawLine(heading, torque, Color.red);
}
void OnGUI()
{
float x0 = 10;
float y0 = 100;
float dx = 200;
float dy = 40;
float SliderKpMax = 1;
float SliderKpMin = 0;
float SliderKiMax = .5f;
float SliderKiMin = -.5f;
float SliderKdMax = .5f;
float SliderKdMin = 0;
int i = 0;
foreach (SimplePID pid in _pids)
{
y0 += 2 * dy;
GUI.Box(new Rect(25 + x0, 5 + y0, dx, dy), "");
pid.Kp = GUI.HorizontalSlider(new Rect(25 + x0, 5 + y0, 200, 10),
pid.Kp,
SliderKpMin,
SliderKpMax);
pid.Ki = GUI.HorizontalSlider(new Rect(25 + x0, 20 + y0, 200, 10),
pid.Ki,
SliderKiMin,
SliderKiMax);
pid.Kd = GUI.HorizontalSlider(new Rect(25 + x0, 35 + y0, 200, 10),
pid.Kd,
SliderKdMin,
SliderKdMax);
GUIStyle style1 = new GUIStyle();
style1.alignment = TextAnchor.MiddleRight;
style1.fontStyle = FontStyle.Bold;
style1.normal.textColor = Color.yellow;
style1.fontSize = 9;
GUI.Label(new Rect(0 + x0, 5 + y0, 20, 10), "Kp", style1);
GUI.Label(new Rect(0 + x0, 20 + y0, 20, 10), "Ki", style1);
GUI.Label(new Rect(0 + x0, 35 + y0, 20, 10), "Kd", style1);
GUIStyle style2 = new GUIStyle();
style2.alignment = TextAnchor.MiddleLeft;
style2.fontStyle = FontStyle.Bold;
style2.normal.textColor = Color.yellow;
style2.fontSize = 9;
GUI.TextField(new Rect(235 + x0, 5 + y0, 60, 10), pid.Kp.ToString(), style2);
GUI.TextField(new Rect(235 + x0, 20 + y0, 60, 10), pid.Ki.ToString(), style2);
GUI.TextField(new Rect(235 + x0, 35 + y0, 60, 10), pid.Kd.ToString(), style2);
GUI.Label(new Rect(0 + x0, -8 + y0, 200, 10), _names[i++], style2);
}
}
}
}
Класс Ship также претерпел необратимые мутации и теперь должен выглядеть вот так:
namespace Assets.Scripts.SpaceShooter.Bodies
{
public class Ship : BaseBody
{
public GameObject _flame;
public Vector2 _movement = new Vector2();
public Vector2 _target = new Vector2();
public float _targetAngle = 0f;
public float _angle = 0f;
public float _thrust = 1f;
[Header("PID")]
public SimplePID _angleController = new SimplePID(0.1f,0f,0.05f);
public SimplePID _angularVelocityController = new SimplePID(0f,0f,0f);
private float _torque = 0f;
public float _Torque
{
get
{
return _torque;
}
}
private Vector2 _force = new Vector2();
public Vector2 _Force
{
get
{
return _force;
}
}
public void FixedUpdate()
{
_torque = ControlRotate(_targetAngle, _thrust);
_force = ControlForce(_movement, _thrust);
_rb2d.AddTorque(_torque);
_rb2d.AddRelativeForce(_force);
}
public float ControlRotate(float targetAngle, float thrust)
{
float CO = 0f;
float MV = 0f;
float dt = Time.fixedDeltaTime;
_angle = _myTransform.eulerAngles.z;
//Контроллер угла поворота
float angleError = Mathf.DeltaAngle(_angle, targetAngle);
float torqueCorrectionForAngle =
_angleController.Update(angleError, _angle, dt);
//Контроллер стабилизации скорости
float angularVelocityError = -_rb2d.angularVelocity;
float torqueCorrectionForAngularVelocity =
_angularVelocityController.Update(angularVelocityError, -angularVelocityError, dt);
//Суммарный выход контроллера
CO = torqueCorrectionForAngle + torqueCorrectionForAngularVelocity;
//Дискретизируем с шагом 100
CO = Mathf.Round(100f * CO) / 100f;
//Сатурируем
MV = CO;
if (CO > thrust) MV = thrust;
if (CO < -thrust) MV = -thrust;
return MV;
}
public Vector2 ControlForce(Vector2 movement, float thrust)
{
Vector2 MV = new Vector2();
if (movement != Vector2.zero)
{
if (_flame != null)
{
_flame.SetActive(true);
}
}
else
{
if (_flame != null)
{
_flame.SetActive(false);
}
}
MV = movement * thrust;
return MV;
}
public void Update()
{
}
}
}
А вот, собственно заключительное видео того, что должно получиться:
К сожалению получилось охватить не все, что хотелось бы, в частности почти не затронут вопрос настройки ПИД-регулятора и практически не освящена интегральная составляющая — фактически приведен пример только для ПД-регулятора. Собственно изначально планировалось несколько больше примеров (круиз-контроль, вращение турели и компенсация вращательного момента), но статья итак уже разбухла, да и вообще:
Немного ссылок
- Годная статья на английской вики
- PID tutorial
- ПИД-регуляторы: вопросы реализации. Часть 1
- ПИД-регуляторы: вопросы реализации. Часть 2
- PID Without a PhD
- PID Without a PhD. Перевод
- Derivative Action and PID Control
- Control System Lab: PID
- ПИД-регулятор своими руками
- Корректная реализация разностной схемы ПИД регулятора
- Программируем квадрокоптер на Arduino (часть 1)
- Виртуальный квадрокоптер на Unity + OpenCV (Часть 1)
- Поляков К.Ю. Теория автоматического управления для чайников
- PID control system analysis, design, and technology
- Aidan O’Dwyer. Handbook of PI and PID Controller Tuning Rules (3rd ed.)
- PID process control, a “Cruise Control” example
- https://www.mathworks.com/discovery/pid-control.html
- http://scilab.ninja/study-modules/scilab-control-engineering-basics/module-4-pid-control/
- https://sourceforge.net/p/octave/control/ci/default/tree/inst/optiPID.m
Еще немного ссылок на другие примеры
http://luminaryapps.com/blog/use-a-pid-loop-to-control-unity-game-objects/
http://www.habrador.com/tutorials/pid-controller/3-stabilize-quadcopter/
https://www.gamedev.net/articles/programming/math-and-physics/pid-control-of-physics-bodies-r3885/
https://ksp-kos.github.io/KOS/tutorials/pidloops.html
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Хлеба и зрелищ
31.01%
Таки давайте попробуем прикрутить нейросеть к Unity3D
40
24.81%
Алгоритмы самонаведения ракет в Unity3D
32
19.38%
Так как же настраивать этот ПИД-регулятор? Желательно автоматически пока я ем зефирки с кофе
25
10.85%
Мы хотим больше всяких разных регуляторов, например, линейно-квадратичный
14
3.1%
МНК, градиентный спуск, квази-ньютоновские методы. Куда это можно впихнуть в Unity3D?
4
1.55%
Может в Unity3D найдется место для цифровой фильтрации?
2
3.1%
Изложение не достаточно формальное. Больше математики богу математики!
4
6.2%
Кинуть в автора куриным яйцом
8
Проголосовали 129 пользователей.
Воздержались 23 пользователя.
Глава 8. Типовые законы регулирования. Одноконтурные САР
8.1. Основные типы автоматических регуляторов
Регулятор на основе усилительного звена называется П-регулятором (пропорциональный). Его положительной характеристикой является высокое быстродействие: при отклонении регулируемой величины от заданного значения регулятор выдает регулирующее воздействие, пропорциональное величине отклонения x, что обеспечивает быструю компенсацию возмущения. Существенным недостатком П-регулятора является наличие статической ошибки в переходном процессе АСР с П-регулятором (рис. 37). Статическая ошибка возникает потому, что у П-регулятора между регулируемой величиной x и регулирующим воздействием xр существует зависимость, однозначно определяемая коэффициентом K. Поэтому генерировать регулирующее воздействие xр для компенсации возмущения xв П-регулятор может только путем изменения регулируемой величины x, что и создает статическую ошибку.
Регулятор на основе интегрирующего звена (48) называется И‑регулятором:
Если xвых усилительного звена (П-регулятор) однозначно определяется величиной правой части уравнения, что является причиной возникновения статической погрешности в АСР с П-регулятором, то правая часть уравнения (48) интегрирующего звена (И-регулятор) определяет не величину, а скорость изменения xвых. Величина xвых будет изменяться до тех пор, пока правая часть уравнения (48) не станет равна нулю, т. е. пока регулируемая величина x при наличии возмущения xв не вернется к заданному значению. Следовательно, в АСР с И-регулятором не возникает статическая погрешность.
Однако у И-регулятора имеется свой недостаток сравнительно с П-регулятором: в случае возникновения возмущения регулирующее воздействие П-регулятора меняется быстрее, чем у И-регулятора с его конечной скоростью, что замедляет процесс компенсации возмущения и ухудшает критерии качества регулирования (рис. 40).
Рис. 40. Переходные процессы в АСР с П- и И-регуляторами
Таким образом, П-регулятор обеспечивает высокое быстродействие (что уменьшает динамическую ошибку), но не может обеспечить при наличии возмущения заданное значение регулируемой величины (статическая ошибка). И-регулятор, наоборот, не создает статическую ошибку, но вследствие относительно медленного изменения xр имеет большую динамическую ошибку.
Сравнивая характеристики П- и И-регуляторов можно сделать вывод: если включить усилительное и интегрирующие звенья параллельно, то автоматический регулятор будет лишен указанных недостатков. Такой регулятор называется ПИ-регулятором (рис. 41).
Рис. 41. Принципиальная схема АСР с ПИ-регулятором
Действительно, быстродействие ПИ-регулятора обеспечивает усилительное звено, а статическую ошибку снимает интегрирующее звено. Для управления производственными процессами чаще всего используются ПИ-регуляторы.
Кривая разгона идеального ПИ-регулятора показана на рис. 42 .
Уравнение ПИ-регулятора при нулевых начальных условиях имеет вид:
Отношение коэффициентов Kp1/Kp определяет степень влияния интегрирующей части, и его обратная величина называется временем изодрома Tи.
Время изодрома – это время, в течение которого интегрирующее звено изменяет регулирующее воздействие xр ПИ-регулятора на величину Dxр, равную предварительному изменению Dxр усилительного звена (рис. 42). Поэтому иногда время изодрома называют временем удвоения.
Рис. 42. График кривой разгона идеального ПИ-регулятора:
а – скачкообразное изменение входного воздействия x;
б – реакция (кривая разгона) ПИ-регулятора xр
Уравнение ПИ-регулятора можно записать как
откуда передаточная функция
Амплитудно-фазовая характеристика:
В том случае, если рассмотренные регуляторы не обеспечивают требуемое качество регулирования, необходимо увеличить интенсивность процесса компенсации возмущения. Этого можно достигнуть увеличением регулирующего воздействия, которое в свою очередь определяется коэффициентом усиления автоматического регулятора Kp
. Однако ниже будет показано, что увеличение коэффициента усиления регулятора в АСР приводит к тому, что в системе начинают генерироваться незатухающие колебания.
В связи с этим представляет интерес рассмотреть алгоритм, который реализует дифференцирующее звено.
Входной величиной любого регулятора является кривая разгона регулируемой величины (рис. 27), которая определяется величиной возмущения и передаточной функцией объекта регулирования (9). В свою очередь, регулирующее воздействие xp (рис. 27) определяется кривой разгона x и передаточной функцией регулятора.
На рис. 43 показана реакция дифференцирующего звена (Д‑регулятора) на входное воздействие в виде кривой разгона в соответствии с уравнением (51).
Рис. 43. Реакция дифференцирующего звена на кривую разгона
а –изменение входного воздействия x в виде кривой разгона;
б – реакция xр дифференцирующего звена
Из рис. 43,а следует, что дифференцирующее звено обеспечивает большее регулирующее воздействие в начале переходного процесса. Это означает, что дифференцирующий регулятор активно компенсирует возмущение и исключает возникновение незатухающих колебаний.
Если включить дифференцирующее звено параллельно ПИ‑регулятору (рис. 44), то получим ПИД-регулятор, обеспечивающий интенсивную компенсацию возмущений. При этом недостаток дифференцирующего звена (при Хвх = const, Хвых = 0 ) компенсируется усилительным и интегрирующим звеньями.
Рис. 44. Принципиальная схема АСР с ПИД-регулятором
На рис. 45 показана кривая разгона ПИД-регулятора.
Рис. 45. Кривая разгона ПИД-регулятора
На рис. 46 показаны переходные процессы на с различными регуляторами. ПИД-регулятор уменьшает динамическую ошибку сравнительно с ПИ-регулятором на 25–30%. Также можно объединить дифференцирующее звено с усилительным звеном и улучшить показатели П-регулятора, получив ПД-регулятор.
Все пять типов рассмотренных автоматических регуляторов имеют общую особенность своего функционирования – обеспечивают стабилизацию регулируемой величины после окончания переходного процесса.
8.2. Критерии качества регулирования
Качество процесса регулирования в АСР характеризуют следующие показатели (критерии) (рис. 16):
Рис. 16. Показатели качества регулирования:
1 – переходной процесс без статической ошибки;
2 – переходной процесс со статической ошибкой
1. Максимальное отклонение в процессе регулирования от заданного значения (динамическая ошибка) ΔХдин.
2. Статическая ошибка ΔХст — возможные отклонения от заданного значения по окончании переходного процесса при использовании некоторых типов регуляторов (подробнее такие АСР рассмотрены ниже).
3. Длительность переходного процесса Тр – период времени с момента начала отклонения регулируемого параметра от задания до возвращения его к заданному значению с определенной степенью точности регулирования ±Δ.
Например, если ±Δ=±25%, это означает, что для заданного значения температуры в 100 °С процесс регулирования будет завершен при достижении диапазона (100 ± 2,5) °С.
4. Степень затухания показывает характер затухания переходного процесса регулирования:
Для того, чтобы переходный процесс затухал за 2 ¸ 3 периода колебаний, степень затухания должна быть равна
5. Степень колебательности процесса m определяет характер колебательности процесса и равна отношению действительной части корня характеристического уравнения к коэффициенту при его мнимой части. Степень колебательности связана со степенью затухания следующим соотношением:
6. Интегральный квадратичный критерий – критерий, определяющий площадь под кривой переходного процесса, возведенной в квадрат (рис. 17):
Уменьшение интегрального критерия соответствует ускорению процесса регулирования.
Рис. 17. Интегральный квадратичный критерий качества регулирования
Однако все приведенные шесть критериев качества не определяют величину потерь производства при отклонениях регулируемой величины от оптимального значения в переходных процессах регулирования. Для определения таких потерь можно использовать экономический критерий.
7. Экономический критерий рассмотрим на примере, регулирования температуры химического реактора θ, когда степень превращения Q в реакторе определяется температурой (рис. 18а).
Разделим переходной процесс на равные интервалы времени Δt и запишем значения θ
в этих точках по графику (18, б). На графике (18, а) для этих температур определим уменьшение степени превращения вследствие отклонения от оптимального режима, а затем сделаем расчет потерь исходных продуктов для каждого интервала Δθ, суммируем эти потери для всего переходного процесса и представим потери в денежном выражении.
Рис. 18. Экономический критерий качества регулирования:
а – зависимость степени превращения Q от температуры θ;
б – переходный процесс регулирования температуры
Совместно со специалистом по технологии или по его заданию необходимо определить, какой из указанных критериев для рассматриваемой АСР является превалирующим, и задать максимально допустимую величину этого критерия, т. е. определить, какое качество регулирования должна обеспечить проектируемая АСР.
8.3. Выбор закона регулирования
При выборе регулятора следует определиться с группой регулирующих устройств – непрерывного, релейного или импульсного действия. Такой выбор ориентировочно может быть сделан по величине отношения запаздывания к постоянной времени объекта τ/Tоб:
· при отношении τ/Tоб меньше 0.2 целесообразно использовать регулятор релейного действия;
· если отношение τ/Tоб от 0.2 до 1.0, то нужно использовать регулятор непрерывного действия;
· при отношении τ/Tоб больше единицы можно использовать регулятор импульсного действия, или специальные регуляторы, например, регулятор («предиктор») Смита.
Затем необходимо определиться с типом регулятора, т.е. выбрать определенный закон регулирования: П-, И-, ПИ-, ПД- или ПИД-закон
8.4. Методы расчета одноконтурных САР
Как указывалось выше, качество автоматического регулирования определяется свойствами системы в целом, т. е. суммарными свойствами объекта и регулятора. Поскольку объект обычно является неизменяемой частью системы, то обеспечить определенные свойства системы, а следовательно и заданное качество регулирования, можно соответствующим подбором свойств автоматического регулятора, что зависит от параметров его настройки. В свою очередь, параметры настройки являются коэффициентами передачи в уравнении автоматического регулятора.
Таким образом, параметры настройки автоматического регулятора определяются свойствами объекта регулирования, т. е. величинами τоб, Тоб, Коб.
8.4.1. Расчет по «приближенным» формулам
Приближенные формулы для расчета параметров настройки автоматических регуляторов (Kр – коэффициент усиления; Tи – время изодрома; Тд – время дифференцирования) сведены в следующую таблицу:
Таблица 8.1. Формулы для приближенного расчета
параметров настройки регуляторов
Формулы сгруппированы в столбцы в зависимости от характера переходного процесса, который желательно получить, используя рассчитанный таким образом регулятор: апериодический или с перерегулированием в 20 %. В формулы входят следующие свойства объекта регулирования: Коб – коэффициент усиления; Тоб – постоянная времени; τоб – время запаздывания (полного).
Рис. 53. Кривые разгона:
1 – фактическая кривая разгона промышленного объекта;
2 – аппроксимированная (приближенная) кривая разгона
Необходимо отметить, что для пневматических регуляторов требуется определять не Kp, а диапазон дросселирования:
Рассмотрим методику более точного определения параметров настройки на примере расчета наиболее «популярного» регулятора – ПИ-регулятора.
8.4.2. Метод незатухающих колебаний
(метод Циглера-Никольса)
При использовании метода незатухающих колебаний [6], который иногда также называется по именам авторов методом Циглера-Никольса, поиск оптимальных параметров настройки осуществляется по величине критического коэффициента усиления П-регулятора и величине периода автоколебательного процесса.
Рис. 54. К поиску параметров настройки методом Циглера-Никольса
Расчет параметров настройки регуляторов проводится в два этапа.
1. На исследуемом объекте устанавливается П-регулятор и, последовательно увеличивая коэффициент усиления (уменьшая диапазон дросселирования), АСР выводится в режим незатухающих колебаний (автоколебаний на границе устойчивости). При этом фиксируется величина коэффициента усиления П-регулятора Ккрр и период незатухающих автоколебаний Т (рис. 54).
2. На втором этапе по величинам Кркр и Т определяются параметры настройки П-, ПИ- и ПИД-регуляторов:
Метод незатухающих колебаний не требует сложных вычислений, но имеет свои характерные недостатки:
· получить Кркр и Т можно только на действующем объекте, оснащенном АСР с П-регулятором;
· не все объекты химической технологии допускают режим автоколебаний;
· практически трудно уловить момент начала автоколебаний.
Данные недостатки имеют место лишь при настройке регулятора методом Циглера-Никольса непосредственно на действующем объекте. Если заменить реальный объект его математической моделью, данный метод лишается указанных недостатков, кроме того, моделирование позволяет на порядок ускорить процесс поиска параметров настройки. Но для выполнения моделирования требуется достаточно точное математическое описание объекта регулирования, а получить его удается не всегда.
8.4.3. Метод расширенных частотных характеристик
Уравнение ПИ-регулятора (65) или (66):
Передаточная функция ПИ-регулятора:
Знак «минус» указывает, что действие регулятора направлено против возмущения.
Из передаточной функции получаем амплитудно-фазовую характеристику ПИ-регулятора путем замены p на iw:
Так как по формуле Эйлера
с затуханием за три периода
Заменив iw на комплексную переменную (-mw+iw), получаем расширенную амплитудно-фазовую характеристику (РАФХ)Ю
Расширенными такие характеристики называются потому, что они как бы «расширены» по отношению к обычной АФХ (рис. 56).
Предположим, что объект регулирования имеет передаточную функцию второго порядка следующего вида:
Для дальнейшего математического моделирования АСР передаточную функцию необходимо преобразовать:
Рис. 56. АФХ объекта регулирования с самовыравниванием:
1 – обычная; 2 – расширенная
Расширенная амплитудно-фазовая характеристика объекта регулирования при замене p на (-mw+iw) будет иметь вид:
Где Rоб(m,w) -расширенная амплитудно-частотная характеристика объекта; Fоб(m,w) -расширенная фазочастотная харктеристика объекта. Величина 40w в выражении для Fоб (m,w) опеделяет угол в радианах и для пересчета в градусы неоходимо 40w умножить на 57,3
Условием нахождения замкнутой АСР на границе устойчивости является уравнение:
Аналогично, исходным уравнением для получения заданной степени колебательности m, а следовательно, определенной степени затухания y, является соотношение:
Это соотношение двух комплексных чисел возможно в том случае, если произведение модулей РАФХ равно единице, а аргументы (фазы) равны между собой, т. е.
Решая эти уравнения относительно S0 и Kp, получаем:
Обычно принимают степень колебательности m = 0,221, что соответствует степени затухания ψ=0,75 и обеспечивает затухание процесса регулирования примерно за три периода. Тогда
Уравнения для определения параметров настройки ПИ-регулятора можно преобразовать:
Подставляя в приведенные уравнения численные значения частоты w от 0 до значения, когда S0 становится отрицательной величиной, строим на плоскости параметров настройки кривую равной степени колебательности
Пример кривых равной степени колебательности в плоскости параметров настройки ПИ-регулятора показан на рис. 57. Графики процессов регулирования с различными параметрами настройки ПИ-регулятора при m = 0,221 показаны на рис. 58. Все процессы регулирования, показанные на рис. 58, реализованы ПИ-регулятором с параметрами настройки, полученными по кривой равной степени колебательности в точках 1, 2, 3, 4 (рис. 57), и все имеют m = 0,221, т. е. затухают примерно за три периода, но обладают существенно различным характером.
В связи с этим возникает задача определения оптимальных параметров настройки на кривой равной степени колебательности.
Рис. 57. Кривые равной степени колебательности
В качестве критерия оптимальности выбираем продолжительность переходного процесса – время регулирования (т. е. быстродействие АСР) и отсутствие постоянной или врéменной статической ошибки. Это исключает из рассмотрения параметры настройки в точке 4 (параметры настройки П-регулятора) и в точке 3 (врéменная статическая ошибка) (рис. 58).
Рис. 58. Графики процессов регулирования для ПИ-регулятора
с различными параметрами настройки в точках 1, 2, 3 и 4
при степени колебательности m =0,221
Быстродействие автоматического регулятора прежде всего зависит от величины регулирующего воздействия, которое для ПИ-регулятора, как следует из уравнения (65), прямо пропорционально величине коэффициента усиления Kp и обратно пропорционально времени изодрома Tи. Расчеты показывают, что если двигаться по кривой равной степени колебательности вправо, то величина регулирующего воздействия при прочих равных условиях сначала возрастает и достигает максимального значения на кривой равной степени колебательности вблизи ее вершины, когда
а затем начинает уменьшаться в связи с резким увеличением Tи (рис. 57).
Рис. 59. Выбор оптимальных параметров настройки
Таким образом, оптимальные параметры настройки ПИ-регулятора находятся в точке 2 на кривой равной степени колебательности (рис. 59).
Источник
Плютто В. П., Дубровский И. И. Элементы теории управления химико-технологическими процессами и системами. Конспект лекций: Учеб. пособие – М.: РХТУ им. Д. И. Менделеева, 2003. – 127 с.
Термином ПЛК обозначают устройства, осуществляющие преобразование, обработку, хранение информации и выработку команд управления или управляющих/регулирующих воздействий, реализованные на базе микропроцессорной техники и являющиеся по сути специализированными управляющими вычислительными комплексами для работы в локальных и распределенных системах управления в реальном масштабе времени (рис.1.1).
Основная функция ПЛК – это формирование сигнала рассогласования между регулируемой величиной и ее заданным значением, а также динамическое преобразование сигнала рассогласования по типовым алгоритмам (законам) регулирования.
Одними из основных эксплуатационных требований, которым должны удовлетворять ПЛК, являются:
1. Безударность:
— при переходе с одного из режимов управления на другой (например, с режима ручного управления на автоматический и обратно) она обеспечивается, в частности, наличием интегрирующего устройства, состоящего из двух интеграторов: например, второй интегратор, используемый при ручном управлении, отслеживает выход узла (интегратора), обеспечивающего динамическое преобразование; при переключении в режим ручного управления выходной сигнал интегрирующего устройства формируется вторым интегратором, а первый интегратор отключается от входа и переводится одновременно в режим слежения за выходным сигналом;
— при переходе с одного из источников задания на другой в режиме автоматического управления также должен осуществляться безударно, например, с внешнего источника задания на внутренний (ручное задание, на программное изменение задания);
2. Ограничение выходного сигнала ПЛК по верхнему и нижнему уровням и сигнализация о предельных значениях этих уровней; при достижении соответствующего уровня ограничения интегрирующее устройство отключается от источника входного сигнала, благодаря этому регулятор работает всегда в зоне линейности.
Выполнение требований 1 и 2 осуществляется посредством управления операциями интегрирования, входящими в соответствующие алгоритмы (функциональные блоки): а) при переключениях с одного из режимов на другой управление сводится к отключению интегратора и формированию для него других начальных условий, соответствующих новому режиму (иногда эти процедуры называют «обратным счетом»), именно это обеспечивает безударность; б) при выходе значений сигнала за предельные (например, yMIN или yMAX), управление сводится к запрету операции интегрирования и ее запуску после возвращения значений сигнала в рабочий диапазон.
3. Гальваническое разделение входных и выходных цепей (эта задача решается на уровне соответствующих устройств сопряжения с объектом (УСО));
4. Связь с управляющими комплексами верхних уровней иерархии;
5. Автоподстройка и настройка (адаптивность) динамических параметров регулятора (адаптивные регуляторы).
Всякий процесс регулирования (управления) предполагает наличие двух подсистем (рис.1.2): управляемой системы, т.е. одного или нескольких объектов управления и управляющей или регулирующей системы (регулятора), которые в совокупности образуют систему автоматического регулирования (САР).
Объект управления (ОУ). Любой технический объект (ТО) или технологический процесс (ТП): станок, печь для термообработки, двигатель, технологический агрегат и т.д., для обеспечения нормального функционирования которого строится система автоматического (или автоматизированного) управления, носит название объекта управления или управляемого объекта. Другими словами, объект управления — это основной элемент САР, требуемый режим которого должен поддерживаться регуляторами (одним или несколькими). Объект управления выполняет определенные технические операции над материальными и/или информационными компонентами.
Исполнительный механизм (ИМ) — это устройство, с помощью которого в САР непосредственно осуществляется изменение режима объекта управления; обычно это часть объекта управления ‘ вентили паросиловых установок, обмотки возбуждения электрических машин, рули самолета и т.д.
Всякий объект управления, обладающий массой (в электротехнике и электронике — это наличие емкостей и индуктивностей), является динамическим, поскольку под действием внешних сил и моментов (конечной величины) со стороны объекта управления возникает соответствующая реакция и его положение (или состояние) не может быть изменено мгновенно.
Основная функция ПЛК (регулятора) — вырабатывать управляющие (регулирующие) воздействия, которые обеспечивают выполнение объектом требуемых функций.
Для построения САР необходимо знать математическое описание (математическую модель) объекта управления, т.е. зависимость, связывающую между собой его параметры.
На рис.1.3 приведена структурная схема одноконтурной САР, используемая при расчетах.
Физическую величину x(t), подлежащую регулированию, называют регулируемой или выходной величиной.
Воздействие g(t), которое характеризует требуемое (желаемое) значение регулируемой величины, называют задающим воздействием (в некоторых задачах его называют уставкой).
Разность ε(t) между заданным g(t) и фактическим x(t) значением регулируемой величины называют ошибкой или рассогласованием.
Воздействие u(t), вырабатываемое регулятором для осуществления требуемого закона изменения регулируемой величины, называют регулирующим воздействием.
Воздействие f(t), стремящееся нарушить требуемую функциональную связь между задающим воздействием и регулируемой величиной, называют возмущающим воздействием.
Таким образом, можно сказать, что в процессе автоматического регулирования осуществляется преобразование задающего воздействия в регулируемую величину.
В общем случае как задающее воздействие, так и регулируемая величина могут состоять из совокупности различных физических сигналов, т.е. иметь векторный характер. В этом случае система является многомерной и должна описываться в терминах пространства состояний.
Обратная связь, замыкающая систему, передает результат измерения выходной величины на вход системы.
Задача системы состоит в том, чтобы возможно точнее воспроизводить на выходе x(t) задаваемый (на входе) закон изменения g(t) и возможно полнее подавлять влияние возмущающего воздействия f(t), а также других внешних и внутренних помех, если они имеются. Выходная величина x(t) сравнивается с входной величиной g(t). Для этих целей используется соответствующий датчик (измеритель) .
На выходе сравнивающего устройства формируется рассогласование (ошибка)
Рассогласование ε служит источником воздействия на систему, причем система работает на уничтожение или сведение к допустимому малому значению величины этого рассогласования.
1.1. КЛАССИФИКАЦИИ САР
По виду задающего воздействия.
В общем случае задающее воздействие может изменяться произвольно. По виду задающего воздействия САР классифицируют следующим образом:
1) при g(t) = const САР называют собственно системами автоматического регулирования ‘ они работают на поддержание постоянного значения регулируемой величины (например, уровня жидкости в баке/котле, скорости вращения вала двигателя, температуры в некотором замкнутом объеме и т.п.). Это типичные системы регулирования по заданной настройке/уставке регулятора.
Такие системы называют также системами стабилизации (например, стабилизации напряжения на клеммах генератора, крена самолета и т.п.).
2) при g(t), заранее заданной во времени, т.е. когда задана программа (закон) изменения этого воздействия, говорят о программном автоматическом регулировании и о системах программного регулирования.
При этом выходная/регулируемая величина должна следовать заданной программе/закону изменения во времени.
3) при g(t), изменяющейся случайным/произвольным образом, САР называют следящей системой.
Законы регулирования, реализуемые ПЛК, могут быть получены на основе известных в теории автоматического регулирования методов коррекции, когда желаемые динамические характеристики системы достигаются с помощью последовательных и параллельных корректирующих устройств и обратных связей. В современных ПЛК это реализуется программно. В некоторых задачах исполнительные механизмы также участвуют в формировании закона регулирования (например, в импульсных регуляторах).
По виду регулируемого параметра автоматические регуляторы подразделяются на регуляторы температуры, давления, влажности, разряжения, расхода, состава и т. п.
По характеру изменения регулирующего воздействия автоматические регуляторы подразделяются на регуляторы с линейными и нелинейными законами регулирования.
Примером регуляторов с нелинейным законом регулирования могут служить двухпозиционные регуляторы температуры в холодильных машинах. В трехпозиционных дискретных системах выходной сигнал может принимать три значения: –1, 0, +1, т.е. “меньше”, “норма”, больше”. Качество работы таких САР выше, хотя их надежность ниже.
Регуляторы с линейным законом регулирования по математической зависимости между входными и выходными сигналами подразделяются на следующие основные виды:
— пропорциональные (П-регуляторы);
— пропорционально-интегральные (ПИ-регуляторы);
— пропорционально-дифференциальные (ПД-регуляторы);
— пропорционально-интегрально-дифференциальные (ПИД-регуляторы).
Для подавления помех и пульсаций сумма П- и Д-составляющих часто демпфируется фильтром с регулируемой постоянной времени.
При импульсном регулировании формирование ПИ’закона регулирования осуществляется совместно с интегрирующим исполнительным механизмом постоянной скорости.
В зависимости от вида используемой энергии регуляторы подразделяются на электрические (электромеханические, электронные), пневматические, гидравлические и комбинированные.
Наиболее часто используемыми в различных отраслях промышленности являются электрические регуляторы. Пневматические и гидравлические регуляторы, как правило, применяются во взрыво’ и пожароопасных зонах.
В зависимости от задающего воздействия и параметров объекта регулирования подбирают регулятор с определенной характеристикой Wр . Изменение Wр адекватно ведет к изменению коэффициентов дифференциального уравнения общего передаточного звена (регулятор’объект) и тем самым достигается необходимое качество регулирования. В промышленных регуляторах эти величины называются параметра ми настройки. Параметрами настройки являются: коэффициент усиления, зона нечувствительности, постоянная времени интегрирования, постоянная времени дифференцирования и т. д. Для изменения параметров настройки в регуляторах имеются органы настройки (управления).
Кроме органов настройки основных параметров, регуляторы имеют также органы настройки, косвенно влияющие на эти коэффициенты или режимы его работы, например, органы настройки, изменяющие чувствительность регулятора, демпфирование входного сигнала и др.
Исходя из характера протекания процесса управления требования к системе формируются по следующим показателям:
1.2. КОРРЕКЦИЯ ДИНАМИЧЕСКИХ СИСТЕМ И ЗАКОНЫ РЕГУЛИРОВАНИЯ
— точность;
— устойчивость;
— качество переходного процесса.
Точность системы задается и определяется в установившихся режимах. Устойчивость гарантирует затухание переходного процесса, после чего обеспечивается желаемое качество затухающего переходного процесса.
В тех случаях, когда САР оказывается неустойчивой или когда качество ее работы не удовлетворяет поставленным требованиям, улучшение ее динамических свойств и повышение устойчивости в ряде случаев может быть достигнуто путем введения в систему последовательно со звеньями прямой цепи дополнительных функциональных блоков или же местных (локальных) обратных связей (ОС), которые обеспечивали бы получение управляющего сигнала в виде суммы сигнала рассогласования с дополнительными сигналами, характеризующими его производную, интеграл или иную функцию. Такие функциональные блоки называют корректирующими устройствами. Следует отметить, что наряду с формированием управляющего сигнала по ошибке может использоваться и внешнее воздействие (тоже с использованием соответствующих интегралов и производных).
Можно указать следующие общие пути обеспечения заданного качества работы САР в переходном и установившемся режимах:
— введение в прямую цепь усилителя с таким коэффициентом усиления, который рационально влиял бы на качество как в переходном, так и в установившемся режимах;
— введение в прямую цепь интеграторов для обеспечения заданной точности работы САР в установившемся режиме:
— введение в прямую и обратную цепи системы дифференцирующих звеньев для обеспечения заданного качества работы в переходном режиме.
При использовании ПЛК чаще всего предполагается, что для коррекции применяются только те преобразования, которые заложены в типовые регуляторы («библиотечные» алгоритмы, функциональные блоки).
Если библиотечные алгоритмы не позволяют осуществить те или иные законы регулирования (виды коррекции), то нужно использовать дополнительные преобразования. Речь идет о введении дополнительных функциональных преобразователей и включении их либо последовательно с основными звеньями контура регулирования, либо параллельно некоторым из них, либо комбинировании этих способов. Приведенные ниже сведения из теории автоматического регулирования позволяют использовать для коррекции системы преобразования, не входящие в состав стандартных регуляторов.
1.3. ВКЛЮЧЕНИЕ ФУНКЦИОНАЛЬНЫХ ПРЕОБРАЗОВАТЕЛЕЙ В ПРЯМУЮ ЦЕПЬ
Изменение общего коэффициента передачи/усиления (Кп) разомкнутой системы .
Увеличение Кп – это способ повышения точности системы, при этом уменьшаются все виды установившихся ошибок системы.
Однако нужно помнить, что увеличение Кп ведет к ухудшению условия устойчивости, а значит, и качества переходного процесса. При некотором Кп > Ккр (критическое значение) система становится неустойчивой.
Поэтому увеличение Кп целесообразно делать одновременно с введением производной (рис.1.4).
Введение производной от ошибки (как в чистом виде, так и с инерционностью) представляет собой простейший способ улучшения качества переходного процесса.
Из-за наличия дифференцирующего звена (см. рис.1,4) регулятор формирует сигнал управления u(t) с прогнозом: если амплитуда ε(t) увеличивается, производная ε'(t) положительна и значение сигнала u(t) увеличивается. С момента уменьшения сигнала ε(t) сигнал ε'(t) и сигнал u(t) интенсивно уменьшается (рис.1.5).
Чаще всего производная вводится не в чистом виде, а с инерционностью, например, в виде звена с передаточной функции
где s – символ комплексной переменной преобразования Лапласа.
При введении воздействия по производной осуществляется положительный сдвиг по фазе, увеличивая тем самым запас устойчивости и улучшая качество переходного процесса.
Для подавления помех и пульсаций сумма П- и Д-составляющих может быть задемпфирована фильтром с регулируемой постоянной времени Тф.
В случае неидеального дифференцирования (с инерционностью) этот эффект несколько уменьшается количественно, но качественно сохраняется.
Пусть имеется астатическая система с интегрирующим и апериодическим звеньями, причем требуется уменьшить динамические ошибки этой системы и повысить ее быстродействие. Если просто увеличить усиление системы, то это может привести к уменьшению запаса устойчивости или полной потере устойчивости системы.
Иной результат будет достигнут при дополнительном воздействии по производной сигнала рассогласования, осуществимом посредством последовательного включения в контур регулирования дифференцирующего звена.
Построив амплитудно-фазовые характеристики исходной системы и той же астатической системы с последовательно включенным дифференцирующим звеном, можно установить, что добавление производной сигнала рассогласования приводит к повышению запаса устойчивости системы по фазе при одновременном снижении инерционности ее звеньев. Это позволяет значительно увеличить коэффициент усиления, сохранив прежний запас устойчивости, или обратить неустойчивую систему в устойчивую. Кроме того, динамические ошибки системы уменьшатся, а ее быстродействие возрастет.
В статических САР введение дополнительного воздействия по производной сигнала рассогласования также улучшает качество работы системы, т.к. ее инерционность уменьшается.
Введение интеграла от ошибки представляет собой метод повышения порядка астатизма системы, а значит, и увеличения ее точности. Однако при этом осуществляется отставание (отрицательный сдвиг) по фазе на –90 град., что ухудшает условия устойчивости и качество переходного процесса.
Если регулирование с воздействием по производной сигнала рассогласования снижает динамические ошибки системы, то введение дополнительного воздействия по интегралу сигнала рассогласования приводит к уменьшению статических ошибок систем. Для осуществления коррекции последовательно со звеньями системы включают интеграторы.
Построив логарифмические АФЧХ исходной системы и той же системы с последовательно включенным интегрирующим звеном, можно убедиться, что регулирование с воздействием по интегралу сигнала рассогласования увеличивает коэффициент усиления системы, особенно на низких частотах при одновременном снижении статических ошибок. Однако при этом уменьшается быстродействие системы и ее запас устойчивости. Для устранения этого недостатка применяют комбинированную коррекцию с воздействием по интегралу и по производной сигнала рассогласования.
Введение изодромной коррекции вида
— объединяет в себе введение интеграла и производной. Оно позволяет избежать недостатков предыдущей коррекции и получать необходимый порядок астатизма системы, сохраняя устойчивость и качество системы в переходном режиме. Следовательно, если в случае простого введения интеграла регулирование в системе производится не по величине ошибки, а только по интегралу от нее, то при изодромном устройстве мы получаем регулирование по ошибке и по интегралу (аналогично тому, как это было показано при регулировании по ошибке и по ее производной).
1.4. ВКЛЮЧЕНИЕ ФУНКЦИОНАЛЬНЫХ ПРЕОБРАЗОВАТЕЛЕЙ ПАРАЛЛЕЛЬНО НЕКОТОРЫМ ЗВЕНЬЯМ КОНТУРА РЕГУЛИРОВАНИЯ – МЕСТНЫЕ ОБРАТНЫЕ СВЯЗИ (ОС)
Основные виды ОС:
Местные жесткие ОС (ЖОС) применяют для повышения устойчивости системы. ЖОС действует на систему как в переходном, так и установившемся режимах: цепь ЖОС содержит только безынерционные элементы (обозначим коэффициент ОС как Кос), благодаря которым выходной сигнал этой цепи (звена 4 на рис.1.6) в любом режиме работы системы всегда прямо пропорционален выходному сигналу звена, охваченного этой связью (звено 2).
Рассмотрим два случая введения ЖОС:
1) ЖОС охватывает интегрирующее звено
В этом случае частотная характеристика звена, охваченного ЖОС, имеет вид:
Отсюда следует, что интегрирующее звено, охваченное ЖОС, приобретает свойства апериодического звена с постоянной времени
и коэффициентом передачи
Данное обстоятельство используется для подавления автоколебаний, возникающих в системах, содержащих два интегратора. Применение ЖОС превращает одно из них в апериодическое, в результате чего фазовый сдвиг в системе на низких частотах уменьшается и система из структурно неустойчивой становится устойчивой.
2) ЖОС охватывает апериодическое звено
Отсюда следует, что ЖОС уменьшает постоянную времени апериодического звена, снижая тем самым инерционность всей системы в целом.
Рассмотренные примеры показывают, что введение внутренних ЖОС сопровождается соответствующим понижением коэффициента передачи системы, что неблагоприятно сказывается на ее статической точности. Это объясняется тем, что ЖОС действуют не только в переходном, но и в установившемся режиме работы системы.
В случае, когда апериодическое звено охватывается положительной ЖОС, осуществляется увеличение Кп; однако, одновременно с этим увеличивается и постоянная времени, т.е. инерционность звена (охватываемого), оно может стать неустойчивым.
В отличие от ЖОС действие гибких ОС (ГОС) проявляется только в переходном режиме работы системы. Выходной сигнал ГОС (звено 4 на рис. 1.6) зависит не от величины выходного сигнала охватываемого звена (2), а от скорости его изменения. Поэтому к моменту достижения системой нового установившегося значения действие цепи ГОС прекращается. Можно показать, что постоянная времени апериодического и затухание колебательного звеньев возрастут, если их охватить ГОС.
Это обстоятельство используют для повышения запаса устойчивости статических систем и для подавления колебаний.
В астатических системах гибкой ОС охватывают участок, содержащий интегрирующее и апериодическое звенья, чем достигается существенное уменьшение инерционности этого участка, а следовательно, и всей системы в целом.
1.5. ВКЛЮЧЕНИЕ ФУНКЦИОНАЛЬНЫХ БЛОКОВ, ОСУЩЕСТВЛЯЮЩИХ ПРЕОБРАЗОВАНИЕ ВНЕШНЕГО ВОЗДЕЙСТВИЯ
Если наряду с формированием управляющего сигнала по ошибке вводится еще коррекция по внешнему воздействию, то получается комбинированное регулирование – по ошибке и по внешнему воздействию (тоже с использованием соответствующих интегралов и производных).
Обычно рассматривают два типа коррекции: 1) по задающему воздействию; 2) по возмущающему воздействию.
Напомним, что задающие воздействия система должна воспроизводить, а возмущающие – нейтрализовать.
Поэтому во втором случае возникают существенные трудности, заключающиеся в том, что возмущающие воздействия, в отличие от задающих, далеко не всегда можно измерить и подать на вход корректирующего устройства.
1.6. ПРОПОРЦИОНАЛЬНЫЕ РЕГУЛЯТОРЫ
Структурная схема САР представлена на рис.1.7.
Для системы регулирования, показанной на рис.1.7а, амплитудно-фазовая частотная характеристика (АФЧХ) определяется выражением W(jω) = Wp(jω) . Wоб(jω), где Wp(jω) – АФЧХ регулятора, Wоб(jω) – АФЧХ объекта регулирования.
Если комплексная частотная характеристика регулятора будет
Wp(jω) = kр,
то АФЧХ всей системы запишется в виде
W (jω) = kр Wоб(jω).
Следовательно, при подключении к объекту пропорционального регулятора АФЧХ системы на каждой частоте увеличивается в kр раз.
Пропорциональные регуляторы и имеют один параметр настройки – коэффициент передачи kр.
Переходные процессы в П-регуляторе описываются выражением
u = kр ∗ ε.
Здесь ε – входное воздействие на регулятор, равное отклонению регулируемой величины от заданного значения; u – воздействие регулятора на объект, направленное на ликвидацию отклонения регулируемой величины от заданного значения.
На рис.1.8. приведен пример контура регулирования температуры приточного воздуха в канальном кондиционере.
Температура воздуха поддерживается водяным калорифером, через который пропускается теплоноситель. Воздух, проходя через калорифер, нагревается. Температура воздуха после водяного калорифера измеряется датчиком (Т), далее эта величина поступает на устройство сравнения (УС) измеренного значения температуры (Тизм) и заданного (Tзад). В зависимости от разности между температурой уставки и измеренным значением температуры регулятор (Р) вырабатывает сигнал, воздействующий на исполнительный механизм (М – электропривод трехходового клапана). Электропривод открывает или закрывает трехходовой клапан до положения, при котором ошибка
ε = Tзад – Тизм будет стремиться к нулю.
Выходным сигналом регулятора может быть напряжение в определенном диапазоне (например, постоянное напряжение в диапазоне от 0 до 10 В, ток 0–20мА и т. д).
Диапазон изменения выходного сигнала называется диапазоном регулирования (рис.1.9).
Диапазон изменения сигнала ошибки называют пропорциональным диапазоном.
В П-регуляторах имеется возможность изменять диапазон регулирования и пропорциональный диапазон.
Из графика на рис.1.9. видно, что чем меньше пропорциональный диапазон, тем круче характеристика регулирования. Кривая (1) соответствует диапазону изменения температуры 0–10 °С, а кривая (2) – диапазону 0–4°С.
Величина kр = есть коэффициент регулирования. В первом случае kр = 1, а во втором kр ΔU/ε= 2,5.
При больших значениях kp в контуре регулирования могут возникнуть колебания (рис.1.10).
Так, если во время включения системы температура воздуха Тизм ниже заданной температуры Tзад, устройство управления выдает большой сигнал на открытие трехходового клапана. Температура водяного калорифера и приточного воздуха начнет повышаться.
Когда температура приточного воздуха после водяного калорифера достигает Tзад, устройство управления выдает команду на закрытие трехходового клапана (точка t1 на рис. 1.10).
Однако из-за того, что калорифер разогрет, температура приточного воздуха до момента t2 еще будет расти, а затем начнет снижаться. Этот процесс имеет вид затухающих колебаний, и через определенное время (t3) процесс стабилизируется.
После стабилизации из-за инерционности системы всегда будет существовать статическая ошибка Δст = Tзад – Тизм.
Сигнал на выходе регулятора будет иметь вид
u(t) = U0 + kp ∗ε,
где U0 – сигнал на выходе устройства управления при ε = 0.
Чем большим выбран пропорциональный диапазон регулирования, тем большей будет величина статической ошибки. При малой величине пропорционального диапазона увеличивается время переходных процессов, и при некоторых условиях может возникнуть автоколебательный (незатухающий) процесс в контуре регулирования.
Путем выбора параметров регулирования П-регулятора можно существенно уменьшить установившуюся ошибку регулирования, однако ее полное устранение не представляется возможным даже теоретически.
Из рис.1.8 видно, что в цепочке регулирования в реальном регуляторе установлено еще одно звено – исполнительный механизм (М). В данном случае – это электродвигатель привода трехходового клапана. Электрический привод является интегрирующим звеном и его влияние по возможности уменьшают, используя обратные связи. Это связано с тем, что динамические свойства участка, охваченного обратной связью, не зависят от динамических свойств прямого участка, а определяются в основном динамическими свойствами звена обратной связи. Эта особенность широко используется на практике при разработке автоматических регуляторов. Исходя из этого, для устранения влияния исполнительного механизма его необходимо охватить отрицательной обратной связью. Для повышения коэффициента передачи прямого канала отрицательной обратной связью нужно охватить и усилительное звено регулятора. Такие П-регуляторы, называемые позиционерами, можно представить в виде последовательного соединения собственно П-регулятора и некоторого балластного звена с постоянной времени Тб.
На рис.1.11 представлена структурная схема П-регулятора, а на рис.1.12 – реализуемый ею закон регулирования.
Параметром настройки регулятора является коэффициент передачи устройства обратной связи kос. Коэффициент передачи регулятора kп тем больше, чем меньше kос. Однако следует иметь в виду, что чем больше kп, тем больше постоянная времени балластного звена и тем больше искажается идеальный закон П-регулирования.
1.7. ПРОПОРЦИОНАЛЬНО-ИНТЕГРАЛЬНЫЕ РЕГУЛЯТОРЫ
Статическую ошибку, возникающую при пропорциональном регулировании, можно исключить, если кроме пропорционального ввести еще и интегральное звено. Последнее образуется путем постоянного суммирования ε за определенный промежуток времени и формирования сигнала управления, пропорционального полученной величине.
Математически этот процесс может быть описан следующей зависимостью:
где ku=1/Тu – коэффициент пропорциональности интегральной составляющей, а Тu — постоянная времени интегрирования, параметр настройки регулятора.
Если ku не равно 0, то даже при незначительных отклонениях регулируемой величины сигнал со временем может достичь любой величины, что приведет к перемещению регулирующего органа до момента, пока ε не станет равным 0.
Рассмотрим физический смысл постоянной времени интегрирования. Предположим, что на вход регулятора поступил сигнал ε = ε0, а пропорциональная составляющая отсутствует (kп = 0). При этом выходной сигнал будет меняться по закону
u= ε0 ∗ t/Tu.
По истечении времени t = Tu значение выходного сигнала будет равно u = ε0 (рис.1.13а).
Таким образом, постоянная времени интегрирования в И’регуляторе равна времени, в течение которого с момента поступления на вход регулятора постоянного сигнала сигнал на выходе регулятора достигнет значения, равного значению входного сигнала.
Переходной процесс в И-регуляторе показан на рис.1.13б. Устраняя статическую ошибку интегральный регулятор, однако, ухудшает качество переходного процесса. Поэтому на практике применяют комбинированные ПИ-регуляторы.
При этом используется как параллельное соединение пропорционального и интегрального звена (рис.1.14а), так и последовательное соединение (рис.1.14б).
ПИ-регулятор оказывает воздействие на регулирующий орган пропорционально отклонению и интегралу от отклонения регулируемой величины
Для схемы на рис.1.14а частотная характеристика ПИ-регулятора имеет вид
При скачкообразном изменении регулируемой величины на значение ε0 ПИ-регулятор со скоростью, определяемой быстродействием привода, перемещает исполнительный механизм на величину (kp∗ ε0), после чего исполнительный механизм дополнительно перемещается в ту же сторону со скоростью ε0/Ти, пропорциональной отклонению регулируемой величины. Следовательно, в ПИ’регуляторе при отклонении регулируемой величины от заданного значения мгновенно срабатывает пропорциональная (статическая) составляющая регулятора, а затем постепенно увеличивается интегральная (астатическая) составляющая регулятора.
Переходная характеристика ПИ-регулятора для параллельного соединения на рис.1.14а показана на рис.1.15(прямая 1).
Параметрами настойки являются независящие друг от друга коэффициенты усиления kp и постоянная времени интегрирования Ти.
Схема на рис.1.15б реализует закон регулирования
где Тиз – постоянная времени изодрома.
Частотная характеристика ПИ’регулятора по схеме рис.1.15б имеет вид:
Таким образом, ПИ-регулятор со структурной схемой, приведенной на рис.1.15б, имеет взаимосвязанные параметры настройки статической и астатической частей по коэффициенту kp. Так, при настройке коэффициента усиления kp будет изменяться и постоянная времени интегрирования:
Рассмотрим физический смысл постоянной времени изодрома Тиз. Предположим, что на вход регулятора поступил постоянный сигнал ε0. Тогда
u = kp ε0(1+t/T).
При поступлении на вход регулятора сигнала ε0 в начальный момент сработает пропорциональная составляющая и на выходе регулятора появится сигнал u1=kpε0. В дальнейшем линейно начинает нарастать выходной сигнал от интегральной составляющей и при t= Tиз достигнет значения u2=2kpε0. Тиз – это время, в течение которого от начала действия интегральной (астатической) составляющей регулятора пропорциональная (статическая) составляющая удваивается. Переходной процесс при ПИ-регулировании показан на рис.1.16.
ПИ-регулятор обеспечивает нулевую ошибку в установившемся состоянии.
Варианты структурных схем промышленных ПИ-регуляторов приведены на рис.1.17.
Выбирая ту или иную схему, можно подобрать наиболее подходящую структуру для Вашей задачи.
1.8. ПРОПОРЦИОНАЛЬНО-ИНТЕГРАЛЬНО-ДИФФЕРЕНЦИАЛЬНЫЕ (ПИД) РЕГУЛЯТОРЫ
Пропорциональные и пропорционально’интегральные регуляторы не могут упреждать ожидаемое отклонение регулируемой величины, реагируя только на уже имеющееся отклонение. Возникает необходимость в регуляторе, который вырабатывал бы дополнительное регулирующее воздействие, пропорциональное скорости отклонения регулируемой величины от заданного значения
Такое регулирующее воздействие используется в дифференциальных и ПИД-регуляторах.
ПИД-регуляторы воздействуют на объект пропорционально отклонению ε регулируемой величины, интегралу от этого отклонения и скорости изменения регулируемой величины:
По своим возможностям ПИД-регуляторы являются наиболее универсальными. Используя их, можно получить любой закон регулирования. Структурная схема и закон регулирования идеального или параллельного ПИД-регулятора приведены на рис.1.18.
При скачкообразном изменении регулируемой величины ПИД-регулятор в начальный момент времени оказывает мгновенное бесконечно большое воздействие на объект регулирования, затем величина воздействия резко падает до значения, определяемого пропорциональной составляющей, после чего постепенно начинает оказывать влияние интегральная составляющая регулятора. Переходной процесс при этом (рис.1.19) имеет минимальные отклонения по амплитуде и по времени.
Параметрами настройки ПИД-регуляторов являются коэффициент пропорциональности регулятора
Показатели качества регулирования
Чаще всего входящие
воздействие изменяется ступенчато и
реакция системы на это воздействие при
нулевых н.у. является переходным
процессом. Если н.у. нулевые только для
производных и ступенчатое воздействие
не единичное, график реакции системы
или объекта называют кривой разгона.
1 – аппериодические
процессы.
2 – затухающие
колебательные процессы.
В качестве
показателей качества регулирования из
переходного процесса рассчитывают
следующие показатели
1.Время регулирования
— время, по истечении которого кривая
переходного
процесса заходит
в
— окрестность установившегося значения
и больше не выходит за пределы
окрестности).
-обычно
равно 3,5,10% от установившегося значения
( hуст – предельное значение к которому
стремится переходной процесс при t
стремящемся к бесконечности):
.
2.Установившаяся
ошибка: еуст=hз-hуст
.
Чем меньше ошибка,
тем точнее отрабатывается задание в
установившемся режиме.
3. Перерегулирование
.
Для систем, величина
перерегулирования допустима 20-35%, может
быть 0%.
4. Период колебаний,
т.е. расстояние между соседними максимумами
или минимумами.
Декремент затухания
Помимо прямых
показателей качества используются
достаточно часто интегральные показатели:
e(t)=hзад-h(t).
Линейный интегральный
показатель: i =1, квадратичный интегральный
показатель ошибки: i=2,
и т.д. Чаще всего применяют квадратичный
показатель т.к. если переходные процессы
колебательные, то ошибка меняет знак и
интеграл от знакопеременного процесса
может оказаться малым, хотя амплитуда
колебаний достаточно большая.
Помимо этих
показателей, для того чтобы выделить
влияние отдельных участков переходного
процесса используют интегральные
показатели с весовыми функциями
,
где f(t)
– весовая функция времени. В простейшем
случае f(t)=t,
что ослабляется влияние начального
участка, но усиливается влияние конечного
участка интегрирования.
Синтез замкнутых систем управления по ошибке при заданной структуре системы.
Предполагается
что передаточные функции всех элементов
системы, в том числе формирователя
управляющего воздействия известны, но
для формирователя известна общая формула
передаточной функции, а конкретнее
значения коэффициента подлежат
определению в зависимости от поставленных
требований к системе. В качестве
формирователя управляющего воздействия
достаточно часто используется ПИД –
регулятор с передаточной функцией
,
,
,
— коэффициенты
передачи пропорциональной, интегрирующей
и дифференцирующей составляющей
регулятора.
Управляющее
воздействие на выходе регулятора
Выбор составляющих
регулятора определяется из следующих
соображений:
— пропорциональная
часть формирует управляющие воздействие
пропорционально величине ошибки (
)
и она убирает
основную часть ошибки;
— интегральная
составляющая необходима для сведения
ошибки к 0 в установившемся режиме, т.к.
какая бы не была мала ошибка, интеграл
со временем может стать достаточно
большим. Эта же составляющая накапливает
некоторое постоянное (номинальное)
значение в управлении, соответствующее
номинальному значению задания;
— дифференциальная
составляющая упреждает нарастание
ошибки, поскольку она пропорциональна
скорости и даже при малых значениях
ошибки, когда первые две составляющие
незначительны, скорость может быть
большая, и если не упредить нарастание
ошибки, то она также может возрасти до
больших значений.
Задача синтеза
заключается в определении
,
,
.
Они могут подбираться
путем анализа частотных характеристик,
либо чаще всего рассчитываются из
условия достижения экстремума некоторых
показателей качества регулирования:
минимума времени переходного процесса
при ограничении на величину управляющего
воздействия, величину перерегулирования,
минимума интегральной квадратичной
ошибки при ограничениях на прямые
показатели и т.д.
Для того, чтобы
решить задачу поиска коэффициентов, а
именно определить minI(K)(вектор
коэффициентов К) из области допустимых
значений, обеспечиваемых минимум
критерия J необходимо выразить этот
критерий как функцию от
,
,
а затем записать
и решить относительно этих коэффициентов
систему уравнений:
Если найденный
вектор попадает в область допустимых
значений и выполняются все ограничения
– задача решена. Чаще задачу решают
численным методом, поскольку выразить
аналитически критерий через коэффициенты
Ки , Кд и Кп достаточно сложно, точка
экстремума может находиться вне области
допустимых значений коэффициентов,
экстремальные коэффициенты не обеспечивают
выполнение ограничений.
Чтобы решить задачу
численным методом необходимо записать
систему уравнений для всех элементов
системы уравнения, включая объект,
датчик, исполнительный механизм,
передатчик и регулятор, преобразовать
в конечно- разностную форму дифференциальные
уравнения, задать начальные значения
коэффициентов, решить систему уравнений
для интервала времени (0;t),
в течение которого переходный процесс
с погрешностью ∆ сходиться к установившемуся
значению, и вычислить значение критерия
I.
Например, для
средней квадратичной ошибки
Изменяя значения
коэффициентов
,
,
в соответствии с
выбранным методом поиска экстремума,
вычисляя новые значения критерия и
сравнивая с предыдущими, находим набор
коэффициентов, обеспечивающий
экстремальное значение критерия и
выполнение ограничений.
Алгоритм для метода
покоординатного спуска
1.Задаем начальные
значения Кп, Ки, Кд, начальный шаг
изменения коэффициентов ∆К, допустимую
погрешность поиска экстремума едоп,
вычисляем I.
2. Изменяем Кп=Кп+∆К.
Вычисляем критерий, сравниваем с
предыдущим. Если критерий уменьшился
– снова изменяем Кп, вычисляем I,
сравниваем с предыдущим и так до тех
пор пока не произошло увеличение критерия
или значение коэффициента не вышло за
допустимую область, тогда переходим к
следующему пункту; если же на первом
шаге критерий увеличился или значение
коэффициента вышло за допустимую
область, изменяем знак ∆К, вычисляем
Кп=Кп+2∆К, находим значение критерия и
сравниваем с предыдущим. Если критерий
не изменился, или увеличился, или значение
коэффициента вышло за допустимую область
– переходим к п.3, если уменьшился,
повторяем вычисления Кп=Кп+∆К и I
до тех пор, пока не произойдет увеличение
или значение коэффициента не выйдет
за допустимую область, тогда переходим
к следующему пункту.
3. Возвращаем
предыдущее значение Кп, т.е. Кп=Кп-∆К, и
предыдущее значение критерия (наименьшее
из найденных)
4. Аналогично п.2,
3 изменяем Ки и Кд. Проще всего при
программной реализации индексировать
коэффициенты (К1,
К2,
К3)
и изменять индекс в цикле.
5. Если при прохождении
п.2, 3, 4 критерий улучшался, возвращаемся
к п.2, если же улучшения не было, то
уменьшаем шаг ∆К (обычно в 2 раза) и
возвращаемся к п.2. Уменьшение шага
производится до тех пор, пока он не
станет меньше заданной погрешности
оценки экстремума ∆К<едоп.
После расчёта
коэффициентов необходимо построить
переходный процесс, функцию ошибки и
управления чтобы проверить выполнение
ограничений.
Оценка
показателей качества регулирования
Расчёт реакции
системы на типовое воздействие в
установившемся режиме
1.
.
Необходимо найти
g(t)
e(t)
у(t)
Wп(p)
e(t)=g(t)-y(t)=g(t)-Wn(р)*e(t)
.
Так как изображение
по Лапласу единичной ступенчатой функции
равно
,
то
.
Если
,
то
Как известно, по
правилу предельного перехода
,
тогда
Чем больше Кп, тем
меньше величина установившейся ошибки,
но она не будет равна 0 и она называется
статической. Для того чтобы установившаяся
ошибка была равна нулю, нужно чтобы в
числителе последнего выражения был
множитель s
или знаменатель передаточной функции
прямой цепи имел множителем s
в какой либо степени, не равной нулю:
.
В этом случае
установившаяся ошибка
.
Такая система
называется астатической с порядком
астатизма ν. Для того, что бы система
была астатической надо, чтобы прямая
цепь содержала ν интегрирующих звеньев.
Коэффициент |
называют коэффициентом
статической ошибки.
2. Входное воздействие
линейно зависит от t:
Тогда:
Если
,
то ошибка стремится к бесконечности.
Если
,
то ошибка равна
,
а коэффициент
скоростной ошибки равен
.
Если
=2,
то
=0.
Если записать
Е(s)=Wge(s)*G(s)
и разложить Wge(s)
в ряд Тейлора по переменной s
в окрестности 0
,
то
…
.
Для того, что бы
уменьшить установившуюся ошибку –
необходимо увеличить порядок астатизма
системы, но стоит учитывать что это
ведет к ухудшению устойчивости.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #