Вступление
Во-первых, нам нужно рассмотреть, что именно эта вещь называется импульсным откликом системы и что это значит. Это абстрактная концепция, для визуализации которой нужно немного подумать. Я не собираюсь углубляться в строгую математику. Моя цель состоит в том, чтобы попытаться дать некоторую интуицию, что это за вещь, которая затем приводит к тому, как вы можете использовать ее.
Пример контрольной задачи
Представьте, что у вас большой толстый силовой резистор с установленным на нем датчиком температуры. Все начинается и при температуре окружающей среды. Когда вы включаете питание, вы знаете, что температура на датчике в конечном итоге повысится и стабилизируется, но точное уравнение будет очень сложно предсказать. Допустим, система имеет постоянную времени около 1 минуты, хотя «постоянная времени» не совсем применима, поскольку температура не растет в виде хорошей экспоненты, как это было бы в системе с одним полюсом и, следовательно, с одной постоянной времени , Допустим, вы хотите точно контролировать температуру и сделать так, чтобы она перешла на новый уровень и оставалась там стабильно значительно быстрее, чем это было бы, если бы вы просто включили на соответствующем уровне мощности и ждали.
По сути, у вас проблема с системой управления. Отклик в разомкнутом контуре разумно повторяется, и есть где-то уравнение, которое достаточно хорошо его моделирует, но проблема в том, что вы слишком много не знаете, чтобы вывести это уравнение.
ПИД-контроль
Одним из классических способов решения этой проблемы является использование ПИД-регулятора. Еще в плейстоцене, когда это должно было быть сделано в аналоговой электронике, люди стали умнее и придумали схему, которая хорошо работала с имеющимися аналоговыми возможностями. Эта схема называлась «PID» для Пропорциональной , Интегральной и Производной .
П термин
Вы начинаете измерять ошибку. Это просто измеренный отклик системы (температура, сообщаемая датчиком в нашем случае) минус управляющий вход (требуемая настройка температуры). Обычно они могут быть организованы так, чтобы быть доступными в виде сигналов напряжения, поэтому обнаружение ошибки было просто аналоговой разницей, что достаточно просто. Вы можете подумать, что это легко. Все, что вам нужно сделать, это подключить резистор с большей мощностью, тем выше ошибка. Это автоматически попытается сделать его горячим, когда станет слишком холодно, и холодным, когда станет слишком жарко. Это работает, вроде. Обратите внимание, что эта схема нуждается в некоторой ошибке, чтобы вызвать любой ненулевой управляющий выход (мощность, управляющая резистором). Фактически это означает, что чем выше требуемая мощность, тем больше ошибка, поскольку это единственный способ получить высокую мощность. Теперь вы можете сказать, что все, что вам нужно сделать, это увеличить усиление, чтобы ошибка была приемлемой даже при высокой мощности. В конце концов, это в значительной степени основа того, как операционные усилители используются во многих цепях. Вы правы, но реальный мир обычно не позволяет вам сойти с рук. Это может работать для некоторых простых систем управления, но когда на реакцию реагируют всевозможные тонкие складки, и когда это может занять значительное время, вы получите нечто, что колеблется, когда усиление слишком велико. Другими словами, система становится нестабильной. но когда на реакцию реагируют всевозможные тонкие складки и когда это может занять значительное время, вы в конечном итоге получаете что-то, что колеблется, когда усиление слишком велико. Другими словами, система становится нестабильной. но когда на реакцию реагируют всевозможные тонкие складки и когда это может занять значительное время, вы в конечном итоге получаете что-то, что колеблется, когда усиление слишком велико. Другими словами, система становится нестабильной.
То, что я описал выше, было P (пропорциональной) частью PID. Так же, как вы можете сделать выходной сигнал пропорциональным сигналу ошибки, вы также можете добавить слагаемые, пропорциональные производной по времени и интегралу от ошибки. Каждый из этих сигналов P, I и D имеет свое отдельное усиление перед суммированием для получения выходного сигнала управления.
Я срок
Термин I позволяет ошибке обнуляться с течением времени. До тех пор, пока существует какая-либо положительная ошибка, член I будет накапливаться, в конечном итоге повышая выходной сигнал управления до точки, где общая ошибка исчезнет. В нашем примере, если температура постоянно низкая, она будет постоянно увеличивать мощность на резисторе, пока выходная температура, наконец, не станет больше низкой. Надеемся, что вы можете видеть, что это может стать нестабильным даже быстрее, чем просто с высоким P-термином. Сам термин AI может легко вызвать выбросы, которые легко превращаются в колебания.
D термин
Термин D иногда опускается. Основное использование термина D состоит в том, чтобы добавить немного стабильности, чтобы термины P и I могли быть более агрессивными. Термин D в основном гласит: если я уже движусь в правильном направлении, немного откажитесь от газа, так как то, что я сейчас имею, похоже, приводит нас туда .
Tuning PID
Основы PID-управления довольно просты, но получить правильные термины P, I и D совсем не так. Это обычно делается с большим количеством экспериментов и настроек. Конечная цель состоит в том, чтобы получить общую систему, в которой выход реагирует как можно быстрее, но без чрезмерного перерегулирования или звонка, и, конечно, он должен быть стабильным (не начинать колебаться самостоятельно). Было написано много книг о ПИД-контроле, о том, как добавить небольшие морщины в уравнения, но особенно о том, как их «настроить». Настройка относится к определению оптимальных коэффициентов усиления P, I и D.
Системы ПИД-регулирования работают, и, безусловно, есть много знаний и приемов, чтобы заставить их работать хорошо. Однако ПИД-контроль не является единственным правильным ответом для системы управления. Люди, кажется, забыли, почему PID был выбран в первую очередь, что больше связано с ограничениями аналоговой электроники, чем с какой-то универсальной оптимальной схемой управления. К сожалению, слишком много инженеров сегодня приравнивают «систему управления» к PID, что является ничем иным, как легкомысленной реакцией на коленный рефлекс. Это не делает ПИД-контроль неправильным в современном мире, а лишь одним из многих способов решения проблемы контроля.
Вне PID
Сегодня система управления с замкнутым контуром для чего-то вроде примера температуры была бы реализована в микроконтроллере. Они могут сделать гораздо больше, чем просто взять производную и интегральную величину ошибки. В процессоре вы можете делать деления, квадратные корни, вести историю последних значений и многое другое. Возможны многие схемы управления, кроме PID.
Импульсивный ответ
Так что забудьте об ограничениях аналоговой электроники и сделайте шаг назад и подумайте, как мы можем контролировать систему, возвращаясь к первым принципам. Что если бы для каждого маленького кусочка контрольного выхода мы знали, что будет делать система. Выход непрерывного контроля - это просто суммирование множества маленьких кусочков. Так как мы знаем, каков результат каждой части, мы можем знать, каков результат любой предыдущей истории управляющих выходов. Теперь обратите внимание, что «маленький кусочек» управляющего выхода прекрасно сочетается с цифровым управлением. Вы собираетесь вычислить, каким должен быть управляющий выход, и установить его на него, затем вернуться назад и снова измерить входные данные, вычислить новые выходные данные управления и установить их снова и т. Д. Вы запускаете алгоритм управления в цикле, и он измеряет входы и заново устанавливает управляющий выход на каждой итерации цикла. Входные данные «дискретизируются» в дискретные моменты времени, а выходные данные также устанавливаются на новые значения с фиксированным интервалом. Пока вы можете делать это достаточно быстро, вы можете думать, что это происходит непрерывно. В случае нагрева резистора, для которого обычно требуется несколько минут, безусловно, несколько раз в секунду происходит намного быстрее, чем сама система реагирует осмысленно, так что обновление выходного сигнала, скажем, 4 Гц, будет выглядеть непрерывным для системы. Это точно так же, как музыка, записанная в цифровом формате, фактически изменяющая выходное значение дискретными шагами в диапазоне 40-50 кГц, и такая быстрая, что наши уши не слышат ее, и она звучит непрерывно, как оригинал. Вы можете думать, что это происходит в непрерывном процессе. В случае нагрева резистора, для которого обычно требуется несколько минут, безусловно, несколько раз в секунду происходит намного быстрее, чем сама система реагирует осмысленно, так что обновление выходного сигнала, скажем, 4 Гц, будет выглядеть непрерывным для системы. Это точно так же, как музыка, записанная в цифровом формате, фактически изменяющая выходное значение дискретными шагами в диапазоне 40-50 кГц, и такая быстрая, что наши уши не слышат ее, и она звучит непрерывно, как оригинал. Вы можете думать, что это происходит в непрерывном процессе. В случае нагрева резистора, для которого обычно требуется несколько минут, безусловно, несколько раз в секунду происходит намного быстрее, чем сама система реагирует осмысленно, так что обновление выходного сигнала, скажем, 4 Гц, будет выглядеть непрерывным для системы. Это точно так же, как музыка, записанная в цифровом формате, фактически изменяющая выходное значение дискретными шагами в диапазоне 40-50 кГц, и такая быстрая, что наши уши не слышат ее, и она звучит непрерывно, как оригинал. конечно, несколько раз в секунду намного быстрее, чем система по существу реагирует осмысленно, так что обновление выходного сигнала, скажем, 4 Гц, будет выглядеть непрерывным для системы. Это точно так же, как музыка, записанная в цифровом формате, фактически изменяющая выходное значение дискретными шагами в диапазоне 40-50 кГц, и такая быстрая, что наши уши не слышат ее, и она звучит непрерывно, как оригинал. конечно, несколько раз в секунду намного быстрее, чем система по существу реагирует осмысленно, так что обновление выходного сигнала, скажем, 4 Гц, будет выглядеть непрерывным для системы. Это точно так же, как музыка, записанная в цифровом формате, фактически изменяющая выходное значение дискретными шагами в диапазоне 40-50 кГц, и такая быстрая, что наши уши не слышат ее, и она звучит непрерывно, как оригинал.
Итак, что мы могли бы сделать, если бы у нас был такой волшебный способ узнать, что система будет делать со временем из-за какой-то одной контрольной выходной выборки? Поскольку фактический контрольный ответ - это просто последовательность выборок, мы можем сложить ответ от всех выборок и узнать, каков будет конечный ответ системы. Другими словами, мы можем предсказать отклик системы для любого произвольного сигнала отклика управления.
Это круто, но простое предсказание реакции системы не решает проблему. Тем не менее, и вот этот момент, вы можете перевернуть это и найти управляющий выход, который потребовался бы для получения любого желаемого отклика системы. Обратите внимание, что это точно решает проблему управления, но только если мы можем каким-то образом узнать реакцию системы на одну произвольную выборку контрольного выхода.
Так что вы, наверное, думаете, это легко, просто дайте ему большой импульс и посмотрите, что он делает. Да, это будет работать в теории, но на практике это обычно не работает. Это связано с тем, что любая контрольная выборка, даже большая, настолько мала в общей схеме вещей, что система практически не имеет измеримого отклика. И помните, каждый контрольный образец должен быть малы по схеме вещей так, чтобы последовательность контрольных образцов чувствует непрерывную систему. Таким образом, дело не в том, что эта идея не сработает, а в том, что на практике отклик системы настолько мал, что он погружен в шум измерений. В примере с резистором, удар по резистору мощностью 100 Вт в течение 100 мс не приведет к достаточному изменению температуры для измерения.
Переходная
Но есть еще способ. Хотя введение единой контрольной пробы в систему дало бы нам ее отклик на отдельные пробы напрямую, мы все же можем вывести ее, поместив известную и контролируемую последовательность контрольных откликов в систему и измерив ее реакцию на них. Обычно это делается путем установки контрольного шагав. То, что мы действительно хотим, это ответ на небольшое сообщение, но ответ на один шаг является лишь неотъемлемой частью этого. В примере с резистором мы можем убедиться, что все находится в устойчивом состоянии при 0 Вт, затем внезапно включить питание и подать 10 Вт в резистор. Это в конечном итоге приведет к хорошо измеряемому изменению температуры на выходе. Производная от этого с правильным масштабированием говорит нам ответ на отдельный контрольный образец, хотя мы не могли измерить это непосредственно.
Таким образом, чтобы подвести итог, мы можем поместить входные данные пошагового управления в неизвестную систему и измерить полученный результат. Это называется пошаговым ответом . Затем мы берем временную производную того, что называется импульсным откликом . Выход системы, полученный из любой одной контрольной выборки, представляет собой просто импульсную характеристику, соответствующим образом масштабированную до уровня этой контрольной выборки. Реакция системы на всю историю контрольных выборок представляет собой целую кучу импульсных откликов, суммированных, масштабированных и искаженных во времени для каждого управляющего входа. Эта последняя операция часто встречается и имеет специальное название свертка .
Контроль свертки
Так что теперь вы должны иметь возможность представить, что для любого желаемого набора системных выходов вы можете придумать последовательность управляющих входов, чтобы вызвать этот выход. Тем не менее, есть гоча. Если вы слишком агрессивны в отношении того, что вы хотите от системы, для достижения управляющих входов это потребует нескончаемых высоких и низких значений. По сути, чем быстрее вы ожидаете, что система отреагирует, тем больше должны быть контрольные значения в обоих направлениях. В примере с резистором вы можете математически сказать, что хотите, чтобы он немедленно перешел на новую температуру, но для этого потребовался бы бесконечный управляющий сигнал. Чем медленнее вы позволите температуре измениться на новое значение, тем ниже будет максимальная мощность, которую вам нужно будет подать на резистор. Еще одна проблема заключается в том, что иногда на резистор тоже нужно отключать питание. Вы можете'
Одним из способов решения этой проблемы является то, что система управления пропускает низкочастотный фильтр ввода пользовательского управления перед его внутренним использованием. Пользователи рисунка делают то, что хотят пользователи. Позвольте им быстро захлопнуть вход. Внутренне вы используете фильтр нижних частот, который сглаживает и замедляет его до максимально быстрой скорости, которую вы можете реализовать, учитывая максимальную и минимальную мощность, которую вы можете вставить в резистор.
Пример из реального мира
Вот частичный пример использования данных реального мира. Это из встроенной системы в реальном продукте, которая помимо прочего должна управлять парой дюжин нагревателей, чтобы поддерживать различные химические резервуары при определенных температурах. В этом случае заказчик выбрал ПИД-контроль (это то, что ему было удобно), но сама система все еще существует и ее можно измерить. Вот необработанные данные от управления одним из нагревателей с пошаговым вводом. Время итерации цикла составляло 500 мс, что, очевидно, является очень коротким временем, учитывая, что система все еще заметно находится на этом графике шкалы через 2 часа.
В этом случае вы можете видеть, что нагреватель приводился в действие с шагом около 0,35 (значение «Out»). Установка полного шага 1.0 в течение длительного времени привела бы к слишком высокой температуре. Начальное смещение может быть удалено, а результат масштабирован для учета небольшого шага ввода, чтобы вывести отклик единичного шага:
Исходя из этого, можно подумать, что для получения импульсного отклика будет просто вычитаться значение последовательного шага. Это правильно в теории, но на практике вы получаете в основном шум измерений и квантования, так как система так мало меняется за 500 мс:
Обратите внимание также на небольшую шкалу значений. Импульсный отклик показан в масштабе 10 6 .
Очевидно, что большие различия между отдельными значениями или даже несколькими показаниями являются просто шумом, поэтому мы можем отфильтровать этот фильтр нижних частот, чтобы избавиться от высоких частот (случайного шума), что, как мы надеемся, позволит нам увидеть более медленный базовый отклик. Вот одна попытка:
Это лучше и показывает, что на самом деле есть значимые данные, которые нужно иметь, но все равно слишком много шума. Вот более полезный результат, полученный при более низкочастотной фильтрации необработанных импульсных данных:
Теперь это то, с чем мы действительно можем работать. Оставшийся шум невелик по сравнению с общим сигналом, поэтому не должен мешать. Сигнал, кажется, все еще там в значительной степени нетронутым. Один из способов увидеть это состоит в том, чтобы заметить пик 240 примерно сразу после быстрой визуальной проверки и фильтрации глазного яблока предыдущего графика.
Так что теперь остановитесь и подумайте, что на самом деле означает этот импульсный отклик. Во-первых, обратите внимание, что он отображается раз 1M, поэтому пик на самом деле составляет 0,000240 от полной шкалы. Это означает, что теоретически, если бы система приводилась в действие одним полноразмерным импульсом только для одного из временных интервалов 500 мс, это была бы результирующая температура относительно нее, оставленная в покое. Вклад от любого периода 500 мс очень мал, что имеет смысл интуитивно. Это также, почему измерение импульсной характеристики напрямую не работает, так как 0,000240 от полной шкалы (около 1 части на 4000) ниже нашего уровня шума.
Теперь вы можете легко вычислить реакцию системы на любой управляющий входной сигнал. Для каждой выборки контрольного выхода 500 мс добавьте одну из этих импульсных характеристик, масштабированных по размеру этой контрольной выборки. Время 0 вклада этого импульсного отклика в конечный выходной сигнал системы соответствует времени его контрольной выборки. Следовательно, выходной сигнал системы представляет собой последовательность этих импульсных характеристик, смещенных на 500 мс друг от друга, каждая из которых масштабируется до уровня контрольной выборки в это время.
Системный отклик - это свертка управляющего входа с этим импульсным откликом, рассчитанным для каждой контрольной выборки, которая в этом примере составляет каждые 500 мс. Чтобы сделать систему управления из этого, вы работаете в обратном направлении, чтобы определить управляющий вход, который приводит к желаемому выходу системы.
Этот импульсный отклик все еще весьма полезен, даже если вы хотите использовать классический ПИД-регулятор. Настройка ПИД-регулятора требует много экспериментов. Каждая итерация в реальной системе займет час или два, что делает итеративную настройку очень и очень медленной. С помощью импульсного отклика вы можете смоделировать отклик системы на компьютере за доли секунды. Теперь вы можете попробовать новые значения PID так же быстро, как вы можете изменить их, и вам не придется ждать час или два, пока реальная система покажет вам свой ответ. Конечные значения, конечно, всегда должны проверяться в реальной системе, но большую часть работы можно выполнить с помощью симуляции за меньшее время. Это то, что я имел в виду под «Вы можете использовать это как базу для моделирования, чтобы найти параметры для старомодного ПИД-регулятора» в отрывке, который вы цитировали в своем вопросе.