Меню

Программный код пид регулятор

PID РЕГУЛЯТОР НА ARDUINO

ПИД регулятор – мощный инструмент, позволяющий удерживать заданную величину (температура, скорость вала, положение) при помощи управляющего устройства (обогреватель, контроллер мотора, линейный привод). Вот отличная статья по теории, что такое ПИД регулятор, как он работает и как его настроить. А я предлагаю свою библиотеку для работы с PID на Arduino.

ПИД регулятор выдаёт на выходе сигнал для плавного управления управляющим устройством (диммер, транзистор), если вам нужно реле – используйте библиотеку GyverRelay.

Алгоритм ПИД регулятора выглядит так, можете использовать его напрямую в скетче:

БИБЛИОТЕКА GYVERPID

GyverPID v3.0

Библиотека классического PID регулятора для Arduino

  • Быстрая и лёгкая библиотека
  • Время одного расчёта около 70 мкс
  • Режим работы по величине или по её изменению (для интегрирующих процессов)
  • На выбор целочисленная или float модель вычисления
  • Возвращает результат по встроенному таймеру или в ручном режиме

Поддерживаемые платформы: все Arduino (используются стандартные Wiring-функции)

Версии

Версия 1.1 – убраны дефайны
Версия 1.2 – возвращены дефайны
Версия 1.3 – вычисления ускорены, библиотека облегчена
Версия 2.0 – логика работы чуть переосмыслена, код улучшен, упрощён и облегчён
Версия 2.1 – integral вынесен в public
Версия 2.2 – оптимизация вычислений
Версия 2.3 – добавлен режим PID_INTEGRAL_WINDOW
Версия 2.4 – реализация внесена в класс
Версия 3.0
– Добавлен режим оптимизации интегральной составляющей (см. доку)
– Добавлены автоматические калибровщики коэффициентов (см. примеры и доку)
Версия 3.1 – исправлен режиме ON_RATE, добавлено автоограничение инт. суммы

ДОКУМЕНТАЦИЯ

Документация

Логика работы

ПИД регулятор принимает на вход две величины:

  • Входной сигнал input – сигнал с датчика: температура, скорость, положение, и т.д;
  • Установку setpoint – величина, к которой регулятор будет стараться регулировать входной сигнал (температуру, скорость, положение…)

С ПИД регулятора выходит выходной (управляющий) сигнал output – безразмерная величина, которая подаётся на управляющее устройство. Это может быть транзистор с ШИМ сигналом, диммер, сервопривод, и т.д. Выходной сигнал должен влиять на входной сигнал: нагреватель нагревает объект с датчиком температуры, мотор крутится и даёт значения для датчика оборотов, и т.д.

Закон управления регулятора устанавливается при помощи коэффициентов Kp , Ki и Kd .

  • Kp – пропорциональный коэффициент, выходная величина будет увеличиваться пропорционально разнице входного сигнала и установки.
  • Ki – коэффициент интегрирующей составляющей, отвечает за накапливающуюся ошибку, позволяет сгладить пульсации и нивелировать маленькую ошибку.
  • Kd – коэффициент дифференциальной составляющей, отвечает за скорость изменения величины, позволяет уменьшить раскачку системы.

Инициализация

Можно инициализировать объект тремя способами:

  • GyverPID regulator; // инициализировать без настроек (всё по нулям, dt 100 мс)
  • GyverPID regulator(kp, ki, kd); // инициализировать с коэффициентами. dt будет стандартно 100 мс
  • GyverPID regulator(kp, ki, kd, dt); // инициализировать с коэффициентами и dt (в миллисекундах)

Режимы и настройки

Направление регулирования: зависит от того, в какую сторону направляется управляемая величина input при увеличении управляющего сигнала output . Например: охлаждение или нагрев, разгон или торможение, и т.д. По умолчанию стоит NORMAL – регулятор считает, что увеличение управляющего сигнала output увеличит входной сигнал input . Устанавливается командой

setDirection(dir); // dir – NORMAL или REVERSE

Режим работы: режим регулирования по ошибке входного сигнала ON_ERROR или по изменению входного сигнала ON_RATE . По умолчанию стоит ON_ERROR , его рекомендуется использовать в большинстве случаев, потому что большинство процессов – самоустанавливающиеся (температура нагревателя сама установится в своём максимуме, скорость мотора – тоже). Режим ON_RATE рекомендуется использовать в интегрирующих процессах, в которых выходная величина влияет на скорость изменения входной величины, например положение моторизированного слайдера, который не остановится при управляющем сигнале, отличном от нуля. Таким процессом будет проще управлять в режиме ON_RATE . Устанавливается командой

setMode(mode); // mode – ON_ERROR или ON_RATE

Подробнее про этот режим смотри в самом конце документации, в разделе оптимизации интегральной суммы.

Пределы выхода: ограничение значения выходного сигнала, по умолчанию: 0-255 (для 8 бит ШИМ). Может быть установлено 0-180 для угла сервопривода, и т.д. Устанавливается командой

setLimits(min, max); // установить пределы

Время итерации: время итерации можно изменить в процессе работы (не знаю, зачем, но возможность есть). Время устанавливается в миллисекундах и влияет на функцию getResultTimer() , которая с этим периодом делает новый расчёт управляющего сигнала. Также это время входит в расчёт управляющего сигнала (в И и Д составляющей). Устанавливается командой

setDt(dt); // установка времени итерации в мс

Установка/чтение параметров

Основные величины регулятора можно менять в любом месте программы любым удобным способом (кнопки, энкодер, передача через UART/GSM/WiFi, как угодно). Коэффициенты регулятора Kp , Ki и Kd можно устанавливать и читать напрямую как члены класса, например

Время итерации меняется при помощи метода setDt() (см. выше).

Величины регулятора (вход, установка, выход) также являются членами класса и к ним можно обратиться напрямую для чтения и записи:

Тип вычислений

Библиотека имеет режим целочисленных вычислений. Скорость вычислений особо не меняется, но код занимает меньше места и всё-таки должен выполняться быстрее. По умолчанию стоит режим чисел с плавающей точкой, в заголовочном файле библиотеки смотрите ключевое слово datatype , datatype будет float или int в зависимости от настройки: это некоторые переменные и функции. Настройка осуществляется дефайном перед подключением библиотеки:

Как работать с библиотекой?

Нужно скормить регулятору текущее значение величины в input , нужное значение в setpoint , провести расчёт при помощи getResult() или getResultTimer() , и после этого выходную величину output подать на управляющее устройство. Делать это нужно часто для быстрых процессов (стабилизация частоты оборотов шпинделя станка под нагрузкой: dt берём около 10-50 мс), и не очень часто для медленных процессов (удержание заданной температуры бойлера: dt можно взять пару секунд, процесс очень инерционный). Функция getResult() делает расчёт в каждый свой вызов и возвращает output , а getResultTimer() делает расчёт только при срабатывании встроенного таймера. То есть getResult() нужно вызывать по своему таймеру (для продвинутых пользователей), а getResultTimer() нужно вызывать как можно чаще, он посчитает только тогда, когда это будет нужно по своему таймеру. После расчёта можно подавать управляющий сигнал (выходную величину output ) на управляющее устройство. Смотрите пример!

Читайте также:  Регулятор печки газель 2008

Как настроить коэффициенты?

Подбор коэффициентов ПИД регулятора – индивидуальная задача, зависящая от конкретных условий и “железа”. Можно почитать статьи на эту тему: например эту, вот эту попроще, и вот эту посложнее. Первым делом нужно установить dt – об этом я писал выше. Маленький dt для быстрых процессов и побольше для медленных (инертных). Dt влияет на расчёты при неизменных коэффициентах, поэтому dt лучше не менять во время настройки, чтобы не пришлось пересчитывать все остальные коэффициенты. Диапазон коэффициентов: 0.01 – 100, т.е. довольно широк и зависит напрямую от инертности системы и выбранного времени dt. Коэффициенты должны быть положительные, противоположное направление регулирования задаётся в setDirection() .

В версии 3.0 появился автоматический тюнер коэффициентов, читай ниже.

Оптимизация интегральной суммы (экспериментально)

В реальной системе интегральная сумма может перенасыщаться и стать причиной неадекватного поведения регулятора, “заклинивания” его в крайних положениях. Библиотека предлагает несколько автоматических способов оптимизации интегральной суммы, остальную теорию можно почитать здесь.

С версии 3.1 в библиотеке работает автоматическое ограничение интегральной суммы по выходным лимитам регулятора.

Ручная оптимизация

В версии 2.1 интегральная сумма вынесена в публичный доступ как член класса, к ней можно обратиться как regulator.integral (где regulator – ваше имя объекта). Интегральная составляющая суммирует ошибку по времени, и при слишком сильном накоплении может приводить к перерегулированию (например для инерционных систем, таких как обогреватель). Для наблюдения за её состоянием можно прочитать integral , и при необходимости, например, ограничить её диапазон ( regulator.integral = constrain(regulator.integral, -500, 500); каждый раз после вызова getResult() ) или даже обнулить ( regulator.integral = 0; ) по условию.

Режим интегрального окна

В версии 2.3 появился режим интегрального окна, как один из вариантов оптимизации интегральной суммы, может быть полезен для некоторых систем. В этом режиме интегральная сумма складывается из последних N измерений, где N задаётся при помощи дефайна PID_INTEGRAL_WINDOW . Для использования этого режима нужно прописать в скетче дефайн с указанием размера окна до подключения библиотеки.

Будьте внимательны, внутри библиотеки будет создан массив указанного размера и займёт память! Используйте только в том случае, если понимаете как это работает и для чего оно нужно, а также есть возможность наблюдать за графиком и делать выводы!

Режим оптимизации интегральной суммы

В версии 3.0 появился новый режим автоматической оптимизации интегральной суммы: она автоматически ограничивается так, чтобы выходной сигнал не превышал установленные в setLimits() пределы, то есть инт. сумма не будет бесконечно расти или уменьшаться. В то же время резкие скачки значения с датчика (вход регулятора) вблизи пределов могут приводить к обнулению интегральной суммы, поэтому входной сигнал рекомендуется фильтровать. Для активации режима оптимизации интегральной суммы нужно прописать в скетче дефайн #define PID_OPTIMIZED_I до подключения библиотеки.

Режим “пропорционально скорости”

Выше была описана смена режима работы при помощи setMode(mode); , в режиме ON_RATE регулятор лучше справляется с интегрирующими процессами (например позиция вала мотора), но иногда хорошо работает и с нагревателями, уменьшая переполнение интегральной суммы и перерегулирование в целом. В этом режиме коэффициенты ведут себя иначе и их оптимальные значения отличаются от обычного режима, логика ручной настройки также отличается: коэффициент Kp теперь работает только в паре с Ki и настраивать их нужно вместе, причём в некоторых процессах Kp не даёт никакого эффекта при нулевом Ki, либо работает неадекватно. Смотри пример simulation_linear, в котором симулируется идеальный интегрирующий процесс.

Реализация режима взята отсюда, там же есть теоретическое обоснование.

Автоматический тюнер коэффициентов 1

Тюнер тип 1

Автоматический калибровщик коэффициентов ПИД регулятора, метод “реле” http://auto-controls.blogspot.com/2009/10/pid-controllers-auto-tuning-relay.html. Данный тюнер лучше настраивает коэффициенты для удержания величины и парирования внешних возмущений.

Примечание: тюнер позволяет найти более-менее приемлемые коэффициенты, при которых система будет работать. Эти коэффициенты не являются идеальными и их всё равно придётся покрутить вручную.

Примечание: тюнер выдаёт коэффициенты для ПИ и ПИД регулятора. ПИ регулятор подразумевает, что коэффициент Д будет равен 0.

Как это работает?

  1. Тюнер подаёт управляющий сигнал и ждёт стабилизации значения с датчика
  2. Тюнер изменяет сигнал на некоторую величину (ступеньку)
  3. Ждёт заданное время, затем меняет сигнал на ту же ступеньку, но в другую сторону
  4. Начинается раскачка системы: при прохождении значения с датчика через значение стабилизации сигнал снова переключается
  5. Производится анализ периода раскачки и её амплитуды, на основании этих данных вычисляются рекомендуемые коэффициенты

Как пользоваться библиотекой?

1. Инициализация и настройка

tuner.setParameters(направление, сигнал, ступенька, период, точность стабилизации, продолж. импульса, период итерации);

  1. Направление :
    – NORMAL : увеличение выходного сигнала увеличивает сигнал с датчика (например обогреватель, мотор)
    – REVERSE : увеличение выходного сигнала уменьшает сигнал с датчика (например холодильник, тормоз)
  2. Cигнал : базовый сигнал на управляющее устройство. Система будет ждать стабилизации по величине этого сигнала, и от него будет откладываться ступенька
  3. Ступенька : величина, на которую будет изменяться сигнал в обе стороны от базового
  4. Период : период опроса в ожидании стабилизации
  5. Точность стабилизации : скорость изменения значения с датчика, ниже которой система будет считаться стабильной
  6. Продолж. импульса : время в миллисекундах на первую раскачку
  7. Период итерации : dt системы в мс, желательно должно совпадать с периодом ПИД регулятора

Пример: tuner.setParameters(NORMAL, 130, 40, 2000, 1, 2000, 30);

Калибруем нормальный процесс (увеличение сигнала увеличивает значение с датчика), базовый сигнал 130, ступенька 40 (в процессе калибровки сигнал будет меняться от 130-40 до 130+40, сразу думаем о том, чтобы это не превысило допустимый максимум), на этапе стабилизации хотим, чтобы система считалась стабильной при изменении сигнала с датчика менее, чем на 1 (условная величина датчика) за 2000 миллисекунд. На этапе первоначальной раскачки мы задали длину импульса 2000 мс, период работы всей системы – 30 мс.

2. Структура цикла
Библиотека сделана универсальной для любого датчика и управляющего устройства, цикл тюнинга организуется вот так:

3. Отладка и получение значений
3.1 Во время работы тюнера можно вызвать tuner.getAccuracy() – чем ближе его значение к 100, тем стабильнее на данный момент качается система и
тем вычисляемые коэффициенты будут более близки к идеальным
3.2 Для наблюдения за тюнером через Serial есть готовые методы:
– tuner.debugText() выводит текстовые данные (смотри скриншот в папке docs библиотеки)
– tuner.debugPlot() выводит данные для построения графика через плоттер Arduino IDE (смотри скриншот в папке docs библиотеки)
3.3 Чтобы получить коэффициенты внутри программы (без Serial) желательно задать условие if (tuner.getAccuracy() > 95) и при наступлении этого условия получить коэффициенты:

Читайте также:  Ремонт регулятора утюга vitek

Смотрите примеры в examples/autotune

Автоматический тюнер коэффициентов 2

Тюнер тип 2

Автоматический калибровщик коэффициентов ПИД регулятора, метод Cohen-Coon https://pages.mtu.edu/

tbco/cm416/cctune.html. Данный тюнер лучше настраивает коэффициенты для переходного процесса, например разогрев с одной температуры до другой.

Примечание: тюнер позволяет найти более-менее приемлемые коэффициенты, при которых система будет работать. Эти коэффициенты не являются идеальными и их всё равно придётся покрутить вручную.

Примечание: тюнер выдаёт коэффициенты для ПИ и ПИД регулятора. ПИ регулятор подразумевает, что коэффициент Д будет равен 0.

Как это работает?

  1. Тюнер подаёт стартовый управляющий сигнал и ждёт стабилизации значения с датчика
  2. Тюнер запоминает минимальное значение и подаёт конечный сигнал, ждёт стабилизации
  3. Тюнер запоминает максимальное значение, снова подаёт начальный сигнал и ждёт стабилизации
  4. Тюнер снова подаёт конечный сигнал
  5. Зная полное время процесса, тюнер измеряет сигнал в определённых точках и по специальным формулам считает коэффициенты

Как пользоваться библиотекой?

1. Инициализация и настройка

tuner.setParameters(направление, начальный сигнал, конечный сигнал, период, точность, время стабилизации, период итерации)

  1. Направление :
    – NORMAL : увеличение выходного сигнала увеличивает сигнал с датчика (например обогреватель, мотор)
    – REVERSE : увеличение выходного сигнала уменьшает сигнал с датчика (например холодильник, тормоз)
  2. Начальный сигнал : стартовый сигнал на управляющее устройство
  3. Конечный сигнал : конечный сигнал на управляющее устройство
  4. Период : период опроса в ожидании стабилизации
  5. Точность стабилизации : скорость изменения значения с датчика, ниже которой система будет считаться стабильной
  6. Период итерации : dt системы в мс, желательно должно совпадать с периодом ПИД регулятора

Пример: tuner.setParameters(NORMAL, 150, 200, 1000, 1, 50);

Калибруем нормальный процесс (увеличение сигнала увеличивает значение с датчика), начальный сигнал 150, конечный 200, на этапе стабилизации хотим, чтобы система считалась стабильной при изменении сигнала с датчика менее, чем на 1 (условная величина датчика) за 1000 миллисекунд. Период работы всей системы – 50 мс.

2. Структура цикла
Библиотека сделана универсальной для любого датчика и управляющего устройства, цикл тюнинга организуется вот так:

3. Отладка и получение значений
3.1 Во время работы тюнера можно вызвать tuner.getState() – вернёт номер текущего этапа работы. На 7-ом этапе можно забирать коэффициенты
3.2 Для наблюдения за тюнером через Serial есть готовые методы:
– tuner.debugText() выводит текстовые данные (смотри скриншот в папке docs библиотеки)
– tuner.debugPlot() выводит данные для построения графика через плоттер Arduino IDE (смотри скриншот в папке docs библиотеки)
3.3 Чтобы получить коэффициенты внутри программы (без Serial) желательно задать условие if (tuner.getState() == 7) и при наступлении этого условия получить коэффициенты:

Смотрите примеры в examples/autotune2

Источник



Программный код пид регулятор

August 21st, 2015, 09:56 am

ПИД ( Пропорционально-интегро-дифференцирующий) регулятор — один из простейших методов управления. Полезная штука, для тех, например, кто хочет сделать хороший термостат, обратный маятник или автопилот для летательного аппарата, но ленится залазить в дебри теории управления. Его простота в том, что он имеет всего три параметра, которые можно настроить эмпирически.
Представлю нашего героя. Это формула выходного сигнала регулятора (то есть величина поправки):

e(t) — величина ошибки регулирования. Просто разница между заданным состоянием, к которому ведет нашу систему регулятор и текущим состоянием системы.
Также учитываются интеграл от e(t) — в дискретном случае сумма всех величин ошибки до текущего шага работы. И производная от ошибки — в дискретном случае просто разность между значением ошибки на текущем и значением ошибки на предыдущем шаге.
В дискретном случае формула выглядит примерно так:
u(t) = P (t) + I (t) + D (t);
P (t) = Kp * e (t);
I (t) = I (t — 1) + Ki * e (t);
D (t) = Kd * (e (t) — e (t — 1));
Коэффициенты Kp, Ki, Kd и есть те самые три параметра алгоритма. Их смысл понятен из формул и из названия. Kp — пропорциональный коэффициент. Определяет какую долю ошибки мы пытаемся скомпенсировать. Ki — коэффициент при интегрирующей части — грубо говоря, скорость накопления статической ошибки. То есть, если за каждый промежуток времени система стремиться изменить свое состояние на определенную постоянную величину, то интегрирующая часть стремиться это скомпенсировать. А коэффициент Ki определяет скорость этого стремления. Коэффициент Kd задает пропорциональность дифференцирующей составляющей темпу изменения отклонения регулируемой величины. Противодействует внешним возмущениям или запаздыванию воздействия регулятора на систему.
Используя с++ и библиотеку Qt накидал простейший пример, где можно покрутить все параметры регулятора и величины статической ошибки и ошибки измерения. Цель регулятора удерживать маленький кружочек в центре большого. Для простоты, регулятор управляет напрямую координатами кружочка. Чтобы было интереснее, величина максимального воздействия регулятора на систему ограничена. Статическая ошибка задается положением бегунков. Ошибка измерения задается случайным отклонением положения на каждом шагу.

Источник

ПИД-регулятор. Основные задачи, применение и методика настройки

Пропорционально-интегрально-дифференциальный регулятор или ПИД-регулятор — устройство, с обратной связью, применяемое в автоматических системах управления для поддержания заданного значения параметра. Благодаря своей универсальности они широко применяются в различных технологических процессах.

Выходной сигнал регулятора u(t) определяется по следующей формуле:

  • P — пропорциональная составляющая;
  • I — интегрирующая составляющая;
  • D — дифференцирующая составляющая;
  • Kp — пропорциональный коэффициент;
  • Ki — интегральный коэффициент;
  • Kd — дифференциальный коэффициент;
  • e(t) — ошибка рассогласования.

Задачи ПИД-регулятора в системах АСУ ТП

Основная задача ПИД-регулятора состоит в поддержании определенного значения параметра технологического процесса на заданном уровне. То есть, говоря простым языком, задача ПИД-регулятора заключается в том, чтобы учитывая полученные значения с датчиков (обратная связь), воздействовать на объект управления, плавно подводя регулируемое значение к заданным уставкам. Применение ПИД-регуляторов целесообразно, а зачастую, и единственно возможно в процессах, где необходима высокая точность переходных процессов, непрерывный контроль и регулирование заданных параметров, а также там, где недопустимы значительные колебания в системе.

Читайте также:  Рено сценик 2 реле регулятор замена

Сравнение ПИД —регулятора с позиционным регулированием

В системах АСУ ТП наибольшее распространение получили два типа регуляторов — двухпозиционный и ПИД.

Двухпозиционный регулятор наиболее простой в использовании и широко распространенный. Он сравнивает значение входной величины с заданным параметром уставки. Если значение измеренной величины ниже заданного значения уставки, регулятор включает исполнительное устройство; при превышении заданного значения, исполнительное устройство выключается. Для предотвращения слишком частого срабатывания устройства вследствие колебаний системы и, следовательно, изменении значений, задается минимальный и максимальный порог срабатывания — гистерезис, или по-другому — зона нечувствительности, мертвая зона, дифференциал. Например, нам необходимо поддерживать температуру в 15 °С. Если гистерезис задан 2°, то регулятор будет включать нагрев при 14 и отключать соответственно при 16.

Чем меньше значение гистерезиса, тем точнее будет процесс регулирования, но увеличивается частота срабатывания ,что, в конечном итоге, приводит к износу коммутационных аппаратов. Увеличение гистерезиса уменьшит частоту переключений, но при этом увеличивается амплитуда колебаний регулируемого параметра, что приведет к ухудшению точности регулирования.

Так или иначе, при таком типе регулирования происходят незатухающие колебания, частота и амплитуда которых зависит от параметров системы. Поэтому данный метод обеспечивает хороший результат в системах, обладающих инерционностью и малым запаздыванием. В частности, такой метод широко применяется при регулировании температуры в нагревательных печах.

В отличие от двухпозиционного, с помощью ПИД-регулятора удается свести колебания системы к минимуму, благодаря тому, что при таком методе регулирования учитываются различные значения системы:

  • фактическая величина,
  • заданное значение,
  • разность,
  • скорость.

Это позволяет стабилизировать систему и добиться повышения точности в десятки раз по сравнению с двухпозиционным методом. Конечно, здесь многое зависит от правильно подобранных коэффициентов ПИД-регулятора.

Для того, чтобы правильно выбрать необходимый тип регулятора необходимо хотя бы приблизительно знать характеристики управляемого объекта, требования к точности регулирования и характер возмущений, воздействующих на объект регулирования.

Составляющие ПИД-регулятора

В стандартном ПИД-регуляторе есть три составляющие и каждая из них по своему воздействует на управление.

Пропорциональная P(t)=Kp*e(t)

Учитывает величину рассогласования заданного значения и фактического. Чем больше отклонения значения, тем больше будет выходной сигнал, то есть, пропорциональная составляющая пытается компенсировать эту разницу.

Однако пропорциональный регулятор не способен компенсировать полностью ошибку рассогласования. Всегда будет присутствовать так называемая статическая ошибка, которая равна такому отклонению регулируемой величины, которое обеспечивает выходной сигнал, стабилизирующий выходную величину именно на этом значении. При увеличении коэффициента пропорциональности Kp статическая ошибка уменьшается, но могут возникнуть автоколебания и снижение устойчивости системы.

Интегральная I(t)=Ki ∫e(t)dt

Интегральная составляющая используется для устранения статической ошибки. Она складывает значение предыдущих ошибок рассогласования и компенсирует их. Можно сказать — учится на предыдущих ошибках. То есть, ошибка рассогласования умножается на коэффициент интегрирования и прибавляется к предыдущему значению интегрирующего звена. При выходе системы на заданный режим, интегральная составляющая перестает изменяться и не оказывает какого-либо серьезного воздействия на систему. Физически интегральная составляющая представляет задержку реакции регулятора на изменение величины рассогласования, внося в систему некоторую инерционность, что может быть полезно для управления объектами c большой чувствительностью.

Дифференциальная D(t)=Kd de(t)/dt

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

На практике какая-либо из составляющих может не использоваться (чаще всего Д-дифференциальная) и тогда мы получаем П- и ПИ-регулятор.

Методика настройки ПИД-регулятора

Выбор алгоритма управления и его настройка является основной задачей в процессе проектирования и последующего удовлетворительного запуска агрегата в промышленную или иную эксплуатацию. В основе методики лежит закон Циглера-Никольса, являющийся эмпирическим и основанным на использовании данных, полученных экспериментально на реальном объекте. В результате ознакомления с методикой, а также при близком рассмотрении объектов регулирования, были выбраны формулы и коэффициенты, ближе всего подходящие к реальному объекту регулирования.

Объект регулирования — камерная электрическая печь. Число зон регулирования от 24 до 40. Каждая зона есть набор электронагревателей. Материал нагревателей нихром. Тип — проволочные, навитые на керамические трубки. Требование: поддержание температуры по зонам печи ±5 °C.

Настройка пропорциональной компоненты (X p)

Перед настройкой зоны пропорциональности интегральная и дифференциальная компоненты отключаются:

  • Постоянная интегрирования устанавливается минимально возможной (Т и=0).
  • Постоянная дифференцирования минимально возможной (Т д=0).
  • Т ο — начальная температура в системе;
  • Т sp — заданная температура (уставка);
  • ∆T — размах колебаний температуры;
  • ∆t — период колебаний температуры.

Меняем значение пропорциональной составляющей X p от минимума (0) до момента, пока не появятся устойчивые колебания системы с периодом ∆t. Система должна находится в постоянном колебательном процессе, притом колебательный процесс незатухающий, где ∆T — характеристика колебания, равная значению величины рассогласования (±10 °C, или как по заданию). Колебания должны быть одинаковы от Т sp.

После получения данной кривой на нашем объекте, засекаем время периода колебаний ∆t — полный период. Данное время — характеристика системы, оборудования.

Используя полученные параметры, рассчитываем Т и и Т д.

Зона пропорциональности Коэффициент передачи Постоянная времени интегрирования Постоянная времени дифференцирования
П-регулятор 2⋅PBs 0.5⋅X p
ПИ-регулятор 2.2⋅PBs 0.45⋅X p 0.83⋅ ∆T
ПИД-регулятор 1.67⋅PBs 0.6⋅X p 0.5⋅ ∆T 0.125⋅ ∆T

Цифры в формулах для расчета коэффициентов ПИД-регулирования скорректированы на основе запуска камерной электрической печи в опытно-промышленную эксплуатацию. И, конечно, в зависимости от типа объекта регулирования, могут незначительно меняться.

Вывод

Благодаря достаточно высоким получаемым результатам ПИД-регуляторы нашли широкое применение в системах автоматического управления. При этом важно подчеркнуть, что настройка ПИД-регулятора является процессом довольно трудоемким и требует определенных знаний и индивидуального подхода для различных объектов управления.

Источник

Adblock
detector