Є кілька моментів, чому форма 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 [], так що ваше калібрування (налаштування) контролера PID тепер не залежить від швидкості управління. Ви можете змусити його працювати в десять разів швидше, викрутити математику [] & b [], і PID-контролер матиме стабільну продуктивність.
Природним результатом використання FDE є те, що алгоритм неявно "безслідкий". Ви можете змінювати приріст (Kp / Ki / Kd) під час руху під час роботи, і це добре поводиться - залежно від реалізації часової області це може бути погано.
Багато часу витрачається на PID-контролери часу, щоб запобігти інтегральному завершенню роботи. Існує простий трюк з формою FDE, який змушує PID вести себе добре, ви можете зафіксувати його значення в буфері історії. Я не зробив математики, щоб побачити, як це впливає на поведінку фільтра (щодо параметрів Kp / Ki / Kd), але емпіричний результат полягає в тому, що він "гладкий". Це використовує "безглуздий" характер форми FDE. Модель подачі вперед сприяє запобіганню інтегрального завершення, а використання терміна D допомагає збалансувати I термін. PID дійсно не працює за призначенням із посиленням D. (Увімкнення встановлених значень - ще одна ключова особливість для запобігання надмірного завивання.)
Нарешті, Z-перетворення - це тема, що не є "докторантом". Вам слід було б дізнатися про них у Комплексному аналізі. Тут знаходиться ваш університет, викладач, який ви маєте, і зусилля, які ви докладете до вивчення математики та навчитися користуватися наявними інструментами, можуть істотно змінити вашу здатність працювати у галузі. (Мій клас комплексного аналізу був жахливим.)
Інструментом дефакто-промисловості є Simulink (якому не вистачає комп'ютерно-алгебричної системи, CAS, тому вам потрібен інший інструмент, щоб витягнути загальні рівняння). MathCAD або wxMaxima - це символьні рішення, які можна використовувати на ПК, і я навчився робити це за допомогою калькулятора TI-92. Я думаю, що у TI-89 також є система CAS.
Ви можете шукати рівняння z-домену або laplace-домену у wikipedia для 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
А це FDE 2p2z:
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 має лише множення і додавання (не множення і віднімання), тому ви можете бачити заперечення, скручене в коефіцієнти []. Додайте більше b для більше полюсів, додайте більше a для більше нулів.