Есть несколько моментов, почему форма Z-преобразования имеет большую полезность.
Спросите любого, кто продвигает основанный на времени / простой / sans-PHD подход, для чего установлен их термин Kd. Они, скорее всего, ответят «ноль» и скажут, что D нестабильно (без фильтра нижних частот). До того, как я узнал, как все это складывается, я бы сказал и говорил такие вещи.
Настройка Kd затруднена во временной области. Когда вы видите передаточную функцию (Z-преобразование подсистемы PID), вы можете легко увидеть, насколько она стабильна. Вы также можете легко увидеть, как термин D влияет на контроллер по сравнению с другими параметрами. Если ваш параметр Kd добавляет 0,00001 к коэффициентам z-полинома, но ваш член Ki составляет 10,5, то ваш член D слишком мал, чтобы оказать реальное влияние на систему. Вы также можете увидеть баланс между терминами Kp & Ki.
DSP предназначены для расчета конечно-разностных уравнений (FDE). У них есть коды операций, которые будут умножать коэффициент, суммировать с накопителем и сдвигать значение в буфере за один цикл команд. Это использует параллельную природу FDE. Если у машины нет этого кода операции ... это не DSP. Встроенные PowerPC (MPC) имеют периферийное устройство, предназначенное для расчета FDE (они называют это блоком децимации). DSP предназначены для вычисления FDE, потому что преобразовать передаточную функцию в FDE тривиально. 16-битный динамический диапазон не вполне достаточен, чтобы легко квантовать коэффициенты. По этой причине многие ранние DSP фактически имели 24-битные слова (я считаю, что 32-битные слова сегодня распространены).
IIRC, так называемое билинейное преобразование принимает передаточную функцию (z-преобразование контроллера временной области) и превращает ее в FDE. Доказать, что это «сложно», использовать его для получения результата тривиально - вам просто нужна расширенная форма (умножьте все), а полиномиальные коэффициенты - это коэффициенты FDE.
Контроллер PI не является хорошим подходом - лучший подход заключается в построении модели поведения вашей системы и использовании PID для исправления ошибок. Модель должна быть простой и основываться на базовой физике того, что вы делаете. Это прямая связь с блоком управления. Затем блок PID исправляет ошибку, используя обратную связь от контролируемой системы.
Если вы используете нормализованные значения, [-1 .. 1] или [0 ... 1], для заданного значения (задания), обратной связи и прямой связи, то вы можете реализовать один 2-полюсный 2-нулевой алгоритм в оптимизированная сборка DSP, и вы можете использовать ее для реализации любого фильтра 2-го порядка, который включает в себя PID и самый базовый фильтр нижних частот (или верхних частот). Вот почему у DSP есть коды операций, которые предполагают нормализованные значения, например, тот, который будет выводить оценку обратного квадратного корня для диапазона (0..1). Вы можете поместить два фильтра 2p2z в ряд и создать фильтр 4p4z, это позволяет чтобы вы могли использовать свой код DSP 2p2z, скажем, для реализации фильтра Баттерворта с 4 касаниями.
Большинство реализаций во временной области преобразуют термин dt в параметры PID (Kp / Ki / Kd). Большинство реализаций z-домена этого не делают. dt вводится в уравнения, которые принимают Kp, Ki и Kd и превращают их в коэффициенты [] и b [], так что ваша калибровка (настройка) ПИД-регулятора теперь не зависит от скорости управления. Вы можете заставить его работать в десять раз быстрее, используя математические вычисления a [] и b [], и ПИД-регулятор будет иметь стабильную производительность.
Естественным результатом использования FDE является то, что алгоритм неявно «без сбоев». Вы можете изменять усиления (Kp / Ki / Kd) на лету во время работы, и это хорошо ведет себя - в зависимости от реализации во временной области это может быть плохо.
Как правило, много усилий затрачивается на ПИД-контроллеры во временной области, чтобы предотвратить интегральный запуск. Есть простая хитрость с формой FDE, которая заставляет PID вести себя хорошо, вы можете зафиксировать его значение в буфере истории. Я не делал математики, чтобы увидеть, как это влияет на поведение фильтра (в отношении параметров Kp / Ki / Kd), но эмпирический результат заключается в том, что он «гладкий». Это эксплуатирует «безотказную» природу формы FDE. Модель прямой связи помогает предотвратить интегральное свертывание, а использование термина D помогает сбалансировать термин I. PID действительно не работает как задумано с усилением D. (Заданные значения поворота - еще одна ключевая функция, предотвращающая чрезмерное наматывание.)
И, наконец, Z-преобразования - это тема для студентов, а не «доктор философии». Вы должны были узнать все о них в комплексном анализе. Это то место, где вы учитесь в университете, у вас есть преподаватель, а усилия, которые вы вкладываете в изучение математики и изучение доступных инструментов, могут существенно повлиять на вашу способность работать в промышленности. (Мой комплексный анализ был ужасным.)
Промышленный инструмент де-факто - Simulink (в нем отсутствует система компьютерной алгебры, CAS, поэтому вам нужен еще один инструмент для получения общих уравнений). MathCAD или wxMaxima - это решатели символов, которые вы можете использовать на ПК, и я узнал, как это сделать с помощью калькулятора TI-92. Я думаю, что TI-89 также имеет систему CAS.
Вы можете посмотреть уравнения z-области или области Лапласа в Википедии для PID и фильтров нижних частот. Здесь есть шаг, который я не придумываю, я полагаю, что вам нужна форма PID контроллера в дискретной временной области, а затем нужно выполнить его z-преобразование. Преобразование Лапласа должно быть очень похоже на z-преобразование и задано как PID {s} = Kp + Ki / s + Kd · s. Я думаю, что z-преобразование лучше учитывает Dt в следующих уравнениях. Dt - это delta-t [ime], я использую Dt, чтобы не путать эту константу с производной 'dt'.
b[0] = Kp + (Ki*Dt/2) + (Kd/Dt)
b[1] = (Ki*Dt/2) - Kp - (2*Kd/Dt)
b[2] = Kd/Dt
a[1] = -1
a[2] = 0
И это 2p2z FDE:
y[n] = b[0]·x[n] + b[1]·x[n-1] + b[2]·x[n-2] - a[1]·y[n-1] - a[2]·y[n-2]
DSP, как правило, имели только умножение и сложение (не умножение и вычитание), поэтому вы можете увидеть отрицание, свернутое в коэффициенты a []. Добавьте больше b для большего числа полюсов, добавьте больше a для большего числа нулей.