Новости

Статьи


Все о ПИД-регуляторах

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

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

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


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


ПИД-регулятор - пропорционально-интергально-дифференциальный регулятор. ПИД-регулятор состоит соответственно из пропорционального (Кп), интегрального (Ки/s) и дифференциального (Кдs) звена, у каждого из них свой коэффициент усиления (рис. 1).



Рис. 1. Структурная схема системы управления с ПИД-регулятором.

Здесь: s - оператор Лапласа (иногда его обозначают, как p). Если абстрагироваться от преобразований Лапласа, то записи Кп, Ки/s и Кдs следует воспринимать лишь как обозначения соответствующего звена, а не как к математическое выражение. И уж точно не стоит искать значение s, потому что, как уже было сказано, это оператор, а не переменная.


В системе с ПИД-регулятором реальная скорость V(t) двигателя измеряется с помощью датчика.

На вход системы поступает заданное значение скорости Vзад(t) в тех же единицах, что и реальная скорость.

Сумматор обратной связи вычитает из сигнала задания на скорость Vзад(t) сигнал реальной скорости V(t) и формирует на выходе сигнал ошибки e(t):

Сигнал ошибки поступает на пропорциональное, интегральное и дифференциальное звенья ПИД-регулятора.

Пропорциональное звено производит умножение сигнала ошибки e на коэффициент Kп и формирует выходной сигнал yп.

Интегральное звено производит интегрирование сигнала e(t) по времени, умножает на коэффициент Kи и формирует выходной сигнал yи.

Дифференциальное звено производит дифференцирование сигнала ошибки по времени e(t), умножения результата на число Kд и формирование выходного сигнала yд.


Сумматор ПИД-регулятора суммирует сигналы yп(t), yи(t) и yд(t) и формирует выходной сигнал y(t):

ШИМ и силовой ключ предназначены для передачи на двигатель рассчитанного выходного сигнала y(t).


Расчет коэффициентов ПИД-регулятора

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


Структура и параметры объекта управления

С точки зрения теории автоматического управления двигатель постоянного тока приближенно описывается: двумя апериодическими звеньями с электрической постоянной  времени Tэ и механической постоянной времени Тм. Общий коэффициент усиления двигателя Kдв (рис. 2). На самом деле, структурная схема двигателя намного сложнее, но нам это в данном случае не так важно.



Рис. 2. Структурная схема двигателя с точки зрения теории автоматического управления.


Передаточная функция двигателя, записанная через оператор Лапласа s, следующая:

Коэффициент усиления двигателя Kдв определяет пропорциональность между скоростью вращения вала двигателя на холостых оборотах и поданным на вход напряжением. Проще говоря, коэффициент равен отношению скорости холостого хода Vхх и номинального напряжения двигателя Uн.

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

Если для формирования напряжения на двигателе используется 7-битный ШИМ (см. ниже), то для расчета Kдв величина номинального напряжения равна 128 условных единиц напряжения.

Скорость холостого хода wхх, заданную в паспортных данных двигателя, следует перечитать в условные единицы скорости Vхх, определяемые способом реализации датчика скорости.


Например, пусть для измерения скорости используется инкрементный датчик, расположенный на валу двигателя, и имеющий 512 меток на оборот. Пусть скорость в условных единицах измеряется как количество меток за такт расчета Dt. Пусть такт расчета, полученный путем оценки производительности алгоритма будет равен 0.001 сек. Пусть скорость холостого хода двигателя wхх=5000 об/мин.

Переведем обороты двигателя в метки датчика, получаем: 5000x512 = 2560000 меток/мин. Переведем минуты в такты расчета:

Если же параметры двигателя неизвестны, то скорость холостого хода определяют экспериментально. Для этого на холостом ходу подают на двигатель максимальное напряжение и снимают показания с датчика скорости Vхх.


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

Для этого на двигатель при его номинальной нагрузки скачком подают максимальное напряжение и снимают переходной процесс изменения скорости V(t).


Скорость снимается с датчика скорости в дискретные моменты времени, записывается в ОЗУ микропроцессора, после чего передается на персональный компьютер. Персональный компьютер восстанавливает график изменения скорости V(t) (рис. 3).


Рис. 3. Переходный процесс в двигателе постоянного тока.

По графику переходного процесса можно определить, во-первых, скорость холостого хода Vхх, а во-вторых, время регулирования tр. Время регулирования определяется временем окончания переходного процесса (время, когда кривая переходного процесса отличается меньше чем на 1% от установившегося значения).


Если пренебречь небольшим влиянием электрической постоянной времени Tэ, обычно на порядок меньшей, чем механическая постоянная времени Tм, то переходной процесс в двигателе постоянного тока можно считать апериодическим с постоянной Tм.


Известно, что время апериодического переходного процесса в пять раз длиннее его постоянной времени. Т.е.:

Отсюда для нашего случая получаем:

В нашем случае время регулирования tр, судя по графику, равно 1.5 сек. Тогда механическая постоянная времени Tм = 1.5/5 = 0.3 сек.

Таким образом, построив график переходного процесса, мы находим механическую постоянную времени Tм.


Электрическая постоянная времени Tэ определяет инерционность намагничивания якоря двигателя и равняется отношению индуктивности якоря двигателя к сопротивлению его обмотки:

На практике параметры индуктивности якоря сложно измерить, и тогда принимают электрическую постоянную времени на порядок меньше, чем механическая постоянная времени:

Для большинства двигателей это справедливо.

 

 

Расчет коэффициентов ПИД-регулятора.

Чтобы рассчитать коэффициенты ПИД-регулятора следует решить обратную задачу динамики. Для этого абстрагируемся от ПИД-регулятора. Будем полагать, что структура регулятора, т.е. его передаточная функция Wр(s), нам неизвестна. За то известна передаточная функция объекта управления Wдв(s) (рис. 4).


Рис. 4. Исходная схема для расчета регулятора для двигателя постоянного тока.

Запишем передаточную функцию замкнутой системы Wз(s):


Определим, какой переходной процесс в системе нас бы устроил? Нас вполне устраивает апериодический переходный процесс в системе. Именно так система должна реагировать на изменение скорости и нагрузки.

Пусть желаемая постоянная времени переходного процесса Tж будет примерно равна Tм. Т.е. передаточная функция желаемой системы Wж(s) равна:

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

Путем простых математических преобразований, выразим отсюда выражение для передаточной функции регулятора Wр(s):

Подставим значение Wдв(s):


Введем коэффициенты:

Получаем:

Не сложно заметить, что мы получили просто коэффициент C1, коэффициент перед интегральным звеном С2 и коэффициент перед дифференцирующим звеном C3. Т.е. мы получили классическую структуру ПИД-регулятора с параметрами Kп=С1, Ки=C2 и Kд=C3:



Реализация ПИД-регулятора на цифровом микропроцессоре

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


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


Скорость может измеряться следующими датчиками:

  • Инкрементным датчиком (encoder)

  • В этом случае реальная скорость в условных единицах рассчитывается как количество меток (m), прошедших за такт времени Dt.


    V[у.е.] =m

    Обычно, такт времени Dt отсчитывает внутрипроцессорный таймер, и подбирается так, чтобы оно было чуть больше, чем время расчета всего алгоритма вычисления.

    В случае, когда максимальное число меток за такт (с запасом) больше, чем 127, то подбирают коэффициент пропорциональности K, который приводит скорость в у.е. к диапазону от -127 до 127:

    Для простоты реализации вместо деления на K применяют правый арифметический сдвиг на b бит (правый сдвиг обозначают ">>"), что соответствует делению на 2b.

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

    Где: Kv - коэффициент пропорциональности, который подбирается таким образом, чтобы скорость с запасом была в диапазон от -127 до 127.

  • Потенциометрическим датчиком

    В этом случае с помощью АЦП измеряется положение вала двигателя. Обычно используется 12-битное АЦП (4096 дискрет положения) или 10-битное АЦП (1024 дискреты положения), встроенное в микропроцессор или внешнее. Реальная скорость в этом случае измеряется как изменение положения за такт времени Dt:

    Где: P - показание АЦП, P0 - показание АЦП на предыдущем такте. Если разница по модулю больше, чем 127, то следует принять скорость равную 127.

  • Тахогенератором

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

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


Сумматор обратной связи вычитает из заданной скорости Vзад реальную скорость V и получает, так называемый, сигнал ошибки e:

Учитывая, что скорость Vзад и V являются целыми числами в пределах -127 до 127, на целочисленном микропроцессоре эта операция реализуется достаточно просто. Следует следить за тем, чтобы результат <не перевернулся через голову>. Если e<-127, то e=127, а если e>127, то e=127.


Сигнал ошибки e поступает на вход ПИД-регулятора, т.е. на пропорциональное звено, интегральное и дифференциальное.


Пропорциональное звено формирует выходной сигнал yп путем умножения мгновенного сигнала ошибки на коэффициент Kп.

Коэффициент Kп обычно представляет нецелое значение в диапазоне от 0.5 до 2. Поэтому для умножения целого однобайтного числа e на этот коэффициент используют таблицу KП,i, которую заранее рассчитывают:

   для   i = -127...127

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

Программистам следует понимать, что процессор рассматривает знакового число i как беззнаковый индекс таблицы, поэтому элементы таблицы с индексами от -128 до -1 реально будут находиться в диапазоне индексов от 128 от 255.

Тогда, умножение на коэффициент Kп заменяется выбором элемента таблицы KП,i с индексом e:

Таблица обычно рассчитывается на персональном компьютере и прошивается в память микропроцессора.


Интегральное звено формирует выходной сигнал yи путем интегрирования сигнала ошибки e по времени и умножения на коэффициент Kи.

Здесь: T - время от начала работы.

Цифровой микропроцессор вычисляет интеграл путем пошагового интегрирования с шагом, равному такту работы таймера Dt. Таким образом, для дискретного случая формула заменяется на:

Здесь k - количество тактов вычисления, прошедших от начала работы.

Рассмотрим сумму всех ek. По сути, это просто сумма всех значений e, получаемых на каждом такте. Эту сумму называют интегральной суммой S (не путать с s - оператором Лапласа). Интегральную сумму реализуют в виде глобальной переменной и на каждом такте увеличивают на текущее значение сигнала ошибки e:

При расчете ПИД-регулятора коэффициент Kи обычно составляет от 0.05 до 2. Такт расчета Dt составляет от 0.0001 до 0.002 сек. Таким образом, коэффициент KиDt составляет от 5·10-6 до 4·10-3. Т.к. этот коэффициент на много меньше 1, то возникает проблема целочисленного умножения на него, т.к. после умножения всегда будет получаться ноль.

Для решения этой проблемы попробуем умножить коэффициент KиDt на какое-нибудь большое число A, а интегральную сумму поделим на это же число:

Обозначим произведение KиDt·A через коэффициент B:

Выберем такое число A, кратное 256x, чтобы коэффициент B был в диапазоне от 0.05 до 5.


Для того чтобы вычислить отношение S/A, расширим знак числа S:

  • реализуем 16-битный расчет S, если A=256;

  • реализуем 24-битный расчет S, если A=2562;

  • реализуем 32-битный расчет S, если A=2563.

Не сложно реализовать добавление к 16, 24 или 32-битному знаковому числу S знаковое 8-битное число e. Не забывайте, что, если e положительное, то при расширении знака старшие биты заполняются нулями, а если отрицательное, то старшие биты заполняются единицами. Для ограничения накопления интегральной суммы, реализуем верхний и нижний предел. Обычно это делается следующим образом: если старший (знаковый) бит не равен предпоследнему биту, то рост интегральной суммы следует приостановить.


Вспомним, что деление любого числа на число 256x эквивалентно правому сдвигу на x байт вправо. Воспользуемся этим правилом. Возьмем только старший байт интегральной суммы S: в случае 16-битного счета это эквивалентно сдвигу на один байт, в случае 24-битного счета - на два байта, в случае 32-битного счета - на три байта.

Таким образом:

Где: Sстарший - старший байт числа S.

Умножение на коэффициент B реализуем в виде таблицы Bi, аналогично расчету коэффициента пропорционального звена:


Дифференциальное звено

Дифференциальное звено производит расчет выходного сигнала yд путем дифференцирования сигнала e по времени и умножения результата на коэффициент Kд:

В случае вычисления этого выражения числовым способом на микропроцессоре выражение заменяется на:

Если принять во внимание, что De это разница между значениями e на текущем и e0 на предыдущем такте, то:

Заменим отношение Kд/Dt константой C.

В этом случае получаем:

Умножение константы C на величину e-e0 реализуем в виде таблицы Ci, как при расчете пропорционального звена:

Сумматор ПИД-регулятора

Сумматор, стоящий после ПИД-регулятора складывает мгновенные значения сигналов yп, yи и yд и формирует выходной сигнал y:

При суммировании следует следить за тем, чтобы результат оказался в диапазон от -127 до +127, реализовав, например, 16-битное суммирование. Если результат больше 127, его нужно принять равным 127, а если меньше -127, то равным -127.

ШИМ

Сигнал ШИМ формируется микропроцессорами AVR автоматически. Один микропроцессор способен формировать до 3 аппаратных сигналов ШИМ. Кроме того, сигнал ШИМ можно формировать программно по таймеру.

Удобно формировать 7-битный ШИМ. В этом случае управляющий силовой ключ можно подключить по схеме, изображенной на рис. 4.


Рис. 4. Способ подключения силового ключа к выходу ШИМ.


Старший (знаковый) бит результата y выводится через любой I/O пин на один из входов силового ключа, а оставшиеся 7 бит (последний бит зануляется) безо всякого преобразования можно загружать в регистр формирования отсечки для ШИМ.

Докажем это.

  • В случае, когда y>0, знаковый бит равен 0, а сигнал 7-битного ШИМ формируется со скважностью g, пропорциональной величине y.

    Т.к. на I/O-пине при этом формируется <0>, то эффективное значение ШИМ следует оценивать относительно "земли". Поэтому двигатель крутится в прямую сторону под управлением ШИМ с эффективной скважностью g..

  • В случае, когда y<0, знаковый бит равен 1. Само же число y хранится в дополнительном коде. Если в этом числе занулить старший бит, то получится беззнаковое число z:

    (проверьте эту закономерность экспериментально, подставляя отрицательные значения y от -1 до -127).

    Поэтому относительно "земли" на выходе будет формироваться ШИМ со скважностью g<0>:

    Т.к. на I/O-пине сигнал <1>, то эффективное значение скважности должно оцениваться относительно <питания>. Скважность относительно <питания> g<1> будет равняться:

    При этом двигатель будет вращаться в обратную сторону под управлением ШИМ с эффективность скважностью g<1>.

Что и требовалось доказать.



[ Назад ]

Дизайн ООО "ДинСофт"