Яка перевага реалізації PID-перетворення, отриманого Z-перетворенням?


29

Я бачив багато статей PID, таких як ця , що використовують перетворення Z узагальненого рівняння PID, щоб отримати деяке шалене рівняння різниці, яке потім може бути реалізовано в програмному забезпеченні (або в цьому випадку FPGA). Моє запитання полягає в тому, яка перевага від такого впровадження порівняно з традиційним та набагато більш інтуїтивним PID без кандидата науктип реалізації? Друге здається легшим для розуміння та реалізації. Термін P - це пряме множення, інтеграл використовує поточну суму, а похідна оцінюється шляхом віднімання попереднього зразка з поточного зразка. Якщо вам потрібно додати таку функцію, як інтегральний захист Windup, це алгебра прямого руху. Намагаючись додати інтегральний захист Windup або інші функції до алгоритму різницького типу, наприклад, пов'язаного вище, здається, що це було б набагато складніше. Чи є якась причина використовувати таку реалізацію, окрім типу «Я поганий дупу, яка любить робити Z-перетворення для задоволення», а також вихвалятися правами вихваляння?

EDIT: PID без статті PHD, яку я пов’язав, є прикладом більш простої реалізації, яка використовує поточну суму для інтегрального терміна та різниці між послідовними вибірками для похідного терміна. Він може бути реалізований з математикою з фіксованою точкою детерміновано і може включати в розрахунок постійну інформацію в режимі реального часу, якщо потрібно. Я в основному шукаю практичну перевагу методу Z перетворення. Я не бачу, як це може бути швидше або використовувати менше ресурсів. Замість того, щоб зберігати поточну суму інтеграла, метод Z, як видається, використовує попередній вихід і віднімає попередні компоненти P і D (щоб отримати обчислювальну суму шляхом обчислення). Тож, якщо хтось не вкаже на щось, чого мені не вистачає, я прийму коментар AngryEE, що вони по суті однакові.

ЗАКЛЮЧНА РЕДАКТА: Дякую за відповіді. Я думаю, що я трохи дізнався про кожного, але, врешті-решт, подумайте, що Сердиться правильно, що це лише питання переваги. Дві форми:

e(k-2)=e(k-1),

у(к)=у(к-1)+Кp(е(к)-е(к-1)+КiТiе(к)+КгТi(е(к)-2е(к-1)+е(к-2))
u ( k - 1 ) = u ( k )
е(к-2)=е(к-1),е(к-1)=е(к)
у(к-1)=у(к)

або

u ( k ) = K p e ( k ) + K i T iсума + K d

сума=сума+е(к)
e(k-1)=e(k)
у(к)=Кpе(к)+КiТiсума+КгТi(е(к)-е(к-1))
е(к-1)=е(к)

буде оцінювати по суті те саме. Деякі згадують, що перший може бути реалізований у DSP або FPGA швидше, але я цього не купую. Будь-яке може бути векторизованим. Перший вимагає двох поштових операцій, другий вимагає однієї попередньої та однієї операції після публікації, тому, здається, вирівнюється. Перший також вимагає ще 1 множення у фактичному обчисленні.


Ви мали на увазі "Диференціальне рівняння"?
Кевін Вермер

Я, мабуть, неправильно зрозумів ваші коментарі, виходячи з цього відгуку, який я зробив принаймні. Я видалю свій коментар!
Кортук

1
Перейдіть на сторінку dsp.stackexchange.com
Jason S

Відповіді:


7

Ви здивовані з усієї фантазії Z-перетворення. Два підходи принципово однакові - PID без PHD підходу просто менше підписок. Вони виконують ту саму основну функцію і використовують ту саму основну математику.

Єдина основна різниця між двома, які я бачу, - це те, що PID без PHD не враховує час вибірки. Для того, щоб робити все, що може бути нестабільним, час вибірки є дуже важливим фактором. Перевага підходу Z-трансформації в цьому випадку полягає в тому, що ви не можете використовувати його без врахування часу вибірки - це змушує вас показати свою роботу і допомагає вам створити більш стабільну систему.

Схоже, тематичне дослідження, яке ви знайшли, застосовуючи підхід Z-трансформації, було розроблене як дуже детермінований. Це пояснює їхнє використання FPGA - розрахунки завжди займуть однакову кількість часу. PID без реалізації PHD, очевидно, не детермінований. Використання подвійних як змінних замість реалізації з фіксованою точкою, безумовно, спричиняє недетерміновану поведінку на будь-якому мікроконтролері без одиниці з плаваючою комою (і, ймовірно, на UC з FPU). Тематичне дослідження працює на зовсім іншому рівні складності порівняно з підходом PID без PHD.

Таким принципом, математичний та контрольний підхід є однаковим, але тематичний та теоретично обґрунтований підхід до дослідження Z / трансформації. Підхід PID без PHD працюватиме лише для дуже простої, не критичної за часом системи, яка є відносно стабільною.


PID без статті PHD - лише приклад простішої реалізації, в якій використовується поточна сума для інтеграла та різниця між послідовними вибірками для похідної. У статті зазначено, що час вибірки повинен бути послідовним. Час вибірки легко можна додати до розрахунків I та D, але в більшості випадків це не робиться в фактичному розрахунку. Графічний інтерфейс контролера (або інший інтерфейс) представляє користувачеві терміни I і D протягом секунд, виходячи з часу циклу.
bt2

@ bt2, це здається, що у вас є дуже специфічний випадок, коли доктор філософських наук з доктором наук є найкращим підходом. У більшості систем жодним чином не відображаються I та D терміни. Це результат PID-контролера, який має певні зміни в системі в цілому, а потім петлюється на собі. Якщо ви просто показуєте користувачеві, то насправді немає причин турбуватися про стабільність.
Kellenjb

"Підхід PID без PHD працюватиме лише для дуже простого", - я не згоден. Ви точно можете оптимізувати цифрові системи управління за допомогою аналізу Z-перетворення, але зворотний бік полягає в тому, що ви можете потрапити в моделювання вашої системи настільки точно, що ви пропустите ліс за деревами.
Jason S

10

Метод Z-перетворення проектування PID-контролера з часом дасть набагато ефективнішу реалізацію. Це дуже важливо, якщо ви розробляєте найменший FPGA / DSP / мікроконтролер для вашої програми.

Згаданий "PID без PHD" - це, мабуть, найпростіший підхід до реалізації PID-контролю в програмному забезпеченні, але він стає громіздким при більшій частоті вибірки.

Крім того, Z-перетворення піддається дизайну в дискретному (цифровому) домені. Традиційний (трансформація Лапласа) метод проектування більше для постійного часу. Існує кілька способів перетворення між двома (затримка нульового замовлення, лінійна інтерполяція, розміщення полюсів, білінеар / тустін), кожен з яких має свої сильні сторони та недоліки щодо стабільності та реакції системи. Зазвичай просто простіше зробити весь дизайн в окремій області.

Коротше кажучи, якщо ви використовуєте відносно «повільну» систему (всі основні способи поведінки відбуваються значно при 100 кГц або близько того), то перша конструкція, ймовірно, просто чудова. Ви можете реалізувати його на мікроконтролері або ПК і зробити це з ним. Оскільки системи стають швидшими, можливо, вам доведеться скористатися методом Z-перетворення, щоб отримати необхідні швидкості (стаття згадує 9,5 МГц, якщо припустити, що у вас є A / D і ЦАП, які можуть іти в ногу).


1
Однакова кількість математичних операцій, різне представлення чисел. Подвійні - набагато складніше представлення чисел, ніж метод з фіксованою точкою, який використовується у прикладі. Менш складний означає менше операцій (на кремнію).
AngryEE

2
@ bt2, я б сказав, більш ефективний у тому сенсі, що чіпи DSP створені для наборів інструкцій SIMD (Single Instruction, Multiple Data). Хоча це однакова кількість математичних операцій, перетворення Z дозволяє виконувати всі множення за один цикл інструкцій, а потім підсумовувати всі елементи результуючого вектора за один цикл (залежно від платформи). Отже, хоча математика однакова, складність у часі значно нижча, що призводить до більш високих швидкостей.
mjcarroll

1
@ bt2 z-форма піддається реалізації як різницеве ​​рівняння, яке залежить лише від минулих результатів та поточного вводу, не вимагаючи поточної суми, яка в якийсь момент переповниться (або переллється). ЦСП призначені для ефективної реалізації цифрових фільтрів за допомогою рівняння різниці. Дивіться en.wikipedia.org/wiki/Digital_filter esp. прямі форми - ось для чого оптимізовано DSP.
простір

1
Я думаю, тобі щось не вистачає. При звичайних обставинах поточна сума ніколи не буде переповнена. Фільтри IIR не завжди насичують, а у випадку PID-контролю це нормально не буде. Скажіть, що це буде з одним алгоритмом, але не буде з іншим, помилково. Аналогічна сума базується на попередніх результатах. Якщо один викликає переповнення, вони обидва будуть. Подумайте про це так, 2-а імплантація ІСЕ перша, з деякою математикою розроблено ... u (k-1) - kp (e (k-1) - kd / Ti (e (k-1) - e ( k-2) == (
поточна

1
-1: Z-перетворення не дають більш ефективної реалізації. Насправді, якщо порівняти 1-полюсний фільтр низьких частот, використовуючи "наївний" цифровий метод, до 1-полюсного низькочастотного фільтра з використанням білінеарного перетворення, ви отримаєте дещо менш ефективну реалізацію при такому підході. Незалежно від похідного фільтра, однакові # змінні стану = приблизно однакова ефективність реалізації. Здебільшого це незалежна кількість від того, як був сконструйований фільтр.
Jason S

5

Ось угода, на мій досвід:

  • Z перетворення допомагають для аналізу: теорія дискретних вибіркових систем найкраще моделюється через Z перетворення.
  • Проектування PID-контролерів або низькочастотних фільтрів може бути виконано як через перетворення Z, так і класичний аналіз, з одним з декількох наближень, що використовуються для перетворення похідних / інтегралів від безперервного часу до дискретного часу. Якщо ваші полюси і нулі знаходяться на низькій частоті порівняно зі швидкістю вибірки, це не має значення. Дотримуйтесь будь-якого підходу, до якого ви почуваєтеся найбільш впевнено.
  • Виведення перетворень із фільтрів та контролерів часто затіняє фізичний зміст параметрів цих фільтрів та контролерів. Якщо у мене є цикл PID з інтегральним коефіцієнтом посилення, пропорційним посиленням та диференційним посиленням, я знаю, що робить кожен із цих параметрів безпосередньо. Якщо я використовую Z-перетворення, це просто числа, які мені довелося якось вивести.
  • Реалізація фільтрів та контролерів може або не приховувати фізичний сенс параметрів цих фільтрів та контролерів. Ця якість значною мірою не залежить від попереднього пункту: Якщо я маю дизайн на основі Z-перетворення, я можу перетворити його на класичну реалізацію, і навпаки. Ваш приклад під FINAL EDIT є хорошим, оскільки друга реалізація тримає інтегратор (" sum") окремим у своїй змінній стану. Ця змінна стан має значення. Перша реалізація зберігає змінну стану як минулу історію помилки; це має сенс, але він дає менший огляд на мою думку.

Нарешті, є й інші проблеми, пов’язані з нелінійністю або аналізом, які часто змушують вас вибрати одну реалізацію над іншою (для мене це завжди класичний підхід для контролерів, для фільтрів FIR - це Z-перетворення, а для 1-і або 2-полюсних IIR-фільтрів це звичайно класичний підхід):

  • Для контролерів я завжди зберігаю інтегратор як змінну стану, а не минулі зразки помилок. Причина полягає в тому, що реальні системи часто вимагають антивідтворення, де вам доведеться затиснути інтеграл, щоб перейти занадто позитивно або занадто негативно. (І якщо ви реалізуєте у фіксованій точці, ви все одно повинні це зробити, тому що умова обгортки, коли ви стикаєтеся з переповненням, спричинить погану поведінку вашого контуру управління)

  • З тієї ж причини я також завжди обчислюю інтегратор у вихідному способі: наприклад, sum += Ki*error; out = stuff + sumа не sum += error; out = stuff + Ki*sum. При другому підході, якщо ви зміните коефіцієнт посилення Ki, це масштабує вплив інтегратора на вихід та вгору та вниз, що, ймовірно, не те, що ви хочете, і межа змінюється залежно від посилення. Якщо ви помножите помилку на Ki перед інтеграцією, ваші одиниці інтегратора є такими ж, як одиниці виходу циклу управління, і це має більш очевидний фізичний сенс.

(оновлення: я написав запис у блозі на цю тему детальніше.)


4

Редагувати :

Використання Z-перетворення полегшує комбінування та спрощення систем LTI для аналізу . Наприклад, каскадна серія k систем LTI з функціями передачі H1, H2, ..., Hk об'єднається як простий продукт H = H1*H2*...*Hk. Також функцією передачі негативного циклу зворотного зв’язку є T = G/(1 + G*H), де H знаходиться на шляху зворотного зв'язку. Отримавши загальну функцію передачі, ви можете проаналізувати стабільність (розташування полюсів) та продуктивність (перехідні, стаціонарна помилка), додавши додаткові фільтри та зворотній зв'язок для оптимізації дизайну.

Для підсистем вищого порядку можна розділити системну функцію та реалізувати її у вигляді серії каскадних біквад (тобто пар нулів і полюсів, таких як складні кон'югати або повторні корені), що зменшує нестабільність, викликану квантуванням. Канонічна форма бікваду:

розділ біквад


Ваша відповідь звучить вражаюче, але я майже не знаю, що ви сказали. Що таке стабільність квантування, наприклад, і наскільки вона краща для однієї форми рівняння, ніж інша?
bt2

1
Передавальна функція H (z) - це раціональна функція B (z) / A (z). Кожен многочлен в z є коефіцієнтом N нулів для системи N-го порядку. Нулі A (z), що знаходяться в знаменнику, називаються полюсами (це шлях зворотного зв’язку). Для коефіцієнта постійного масштабування система лінійної інваріантності часу (LTI) описується своїми нулями та полюсами.
Ерик Вс

1
Система LTI дискретного часу є стабільною, якщо всі її полюси знаходяться всередині одиничного кола на площині z. Але квантування з обмеженою цифровою точністю вносить шум, який може призвести до того, що система буде незначно стабільною, нестабільною або зникає в нестабільності з часом. Шляхом розподілення H (z) на продуктову квадратику (біквади) цей вид помилок зводиться до мінімуму.
Ерик Вс

2
Біквад є кращим мінімальним розділом, оскільки нулі многочлена з реальними коефіцієнтами є дійсними або парами складних кон'югатів. Біквад B (z) / A (z) є (b0 + b1z ^ -1 + b2z ^ -2) / (a0 + a1z ^ -1 + a2z ^ -2).
Ерік Нд

Я додав, а потім вилучив приклад для шуму квантування, порівнюючи каскадний квадратик з прямим політом 4-го порядку. Але це було занадто багато. Мені потрібно трохи поспати. Вибачте, тиблу.
Ерік Нд

3

Важкою частиною PID-контролера є не сам код. Проблеми насправді виникають при спробі оптимізації контролера. Впевнені, що ви можете робити пробну помилку та помилку та отримати досить пристойний контролер, але деякі системи є надто складними, щоб метод проб і помилок був легким у виконанні. Ці ж системи, як правило, потрібні дуже хороший контролер, а не пристойний. У цьому випадку Z-перетворення набагато простіше проаналізувати.

Інша річ, про яку слід задуматися, - це стабільність системи. Можливо, ви маєте справу з системою, в якій досить складно стати нестабільною, або навіть якщо вона нічого не шкодить. Але є багато систем, які можуть мати катастрофічні результати, якщо контролер змушує його нестабільно. Трансформація Z - ще одне місце, де набагато простіше визначити, чи будуть проблеми.

І 1 заключна записка. Аналізуючи систему в цілому, вам доведеться отримати рівняння для всіх компонентів вашої системи. Впевнені, що ви можете отримати його від PID без доктора наук, але якщо ви вже працювали з ним у методі Z-трансформації, то набагато менше роботи назад і назад вам належить виконати.

Зараз, як особисті переваги, я завжди використовую метод PID без доктора. Це лише тому, що я просто використовую мікроконтролери із системами, які не дуже залежать від контролера.


2

Є кілька моментів, чому форма 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 для більше нулів.


1

Краще використовувати метод перетворення Z в цілому, оскільки цим ви зберігаєте точну поведінку еквівалентної аналогової системи. Існують відомі методи настройки, такі як Ziegler-Nichols, які працюють в аналоговій області так само, як і опубліковані. Якщо ви використовуєте метод перетворення Z, у вас є математично суворе очікування того, що ваш контролер у результаті зробить те ж саме для тих самих значень посилення P, I і D, що він буде робити в аналоговій області, враховуючи ці посилення. Крім того, ви можете намалювати дискретний кореневий локус для системи та передбачити стабільність для заданого набору виграшів, що не може зробити, якщо створити спеціальний контролер безпосередньо в коді.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.