Obsah:

PID regulátor VHDL: 10 krokov
PID regulátor VHDL: 10 krokov

Video: PID regulátor VHDL: 10 krokov

Video: PID regulátor VHDL: 10 krokov
Video: Lecture 73: Digital PID Control Implementation using Verilog HDL Programming 2024, November
Anonim
PID regulátor VHDL
PID regulátor VHDL
PID regulátor VHDL
PID regulátor VHDL

Tento projekt bol mojím posledným projektom na dokončenie bakalárskeho titulu Honors z Cork Institute of Technology. Tento návod je rozdelený do dvoch sekcií, prvá bude pokrývať hlavnú časť kódu PID, čo je hlavným účelom projektu, a druhá časť bude zahŕňať prepojenie kódu, ktorý bol implementovaný na vývojovej doske Basys 3 a potom prepojený s pingpongovou loptou. levitačná súprava. Teoretická a zostrojená zostava je zobrazená na priložených obrázkoch.

Zásoby

Simulácia

Suita Vivado Design Suite

Implementácia (v zátvorkách je to, čo bolo použité pre môj projekt)

  • Doska FPGA, ktorá môže vstupovať a vystupovať z digitálnych/analógových signálov (základy 3)
  • systém, ktorý je ovládateľný jediným zdrojom spätnej väzby (Ping Pong Ball Levitation Rig)

Zostava

  • Polykarbonátová trubica
  • 5V ventilátor
  • IR senzor
  • 3D tlačená základňa (Tento tutoriál dokumentuje konštrukciu zariadenia, do ktorého bol pridaný senzor, aby poskytoval spätnú väzbu, ale zariadenie bolo vo všeobecnosti rovnaké)
  • 1k odpory
  • Breadboard s 5V a GND lištou

Krok 1: Základná teória ovládania

Teória základného riadenia
Teória základného riadenia

Myslel som si, že pridanie základnej teórie ovládania poskytne každému, kto by sa chcel pokúsiť implementovať tento kód, dobrý základ, od ktorého môže začať.

Priložený diagram je rozložením jednosmyčkového regulátora.

r- Je referencia. To určuje, kam sa má ovládač dostať.

e-je chyba. Toto je rozdiel medzi hodnotou na vašom senzore a vašou referenciou. napr. e = r- (d+výstup senzora).

K-Toto je ovládač. Ovládač sa môže skladať z troch pojmov. Tieto výrazy sú P, I a D. Všetky tri výrazy majú multiplikátory nazývané Kp, Ki a Kd. Tieto hodnoty určujú odozvu regulátora.

  • P-proporcionálne. Striktne regulátor P bude mať výstup úmerný aktuálnej chybe. Regulátor P sa ľahko implementuje a pracuje rýchlo, ale nikdy nedosiahne vami nastavenú hodnotu (referencia).
  • I-Integral. Prísne integrálny regulátor zhrnie predchádzajúcu chybu, ktorá nakoniec dosiahne požadovanú referenciu. Tento ovládač je vo všeobecnosti príliš pomalý na implementáciu. Pridaním výrazu P sa skráti čas potrebný na dosiahnutie referencie. Musí sa vziať do úvahy čas, z ktorého sa vstup vzorkuje. Integrovaný termín je integrovaný vzhľadom na čas.
  • D-derivát. Derivačný termín bude mať výstup, ktorý závisí od rýchlosti zmeny chyby. Tento termín sa spravidla používa s výrazom P alebo s výrazom PI. Pretože je to úmerné rýchlosti zmeny chýb, hlučný singel bude mať zosilnený hluk, čo môže spôsobiť, že systém bude nestabilný. Je tiež potrebné vziať do úvahy čas, pretože odvodený výraz je tiež vzhľadom na čas.

U- Toto je riadiaci signál. Tento signál je vstupom do súpravy. V prípade tohto projektu u je vstup signálu PWM do ventilátora na zmenu rýchlosti.

G- Toto je systém, ktorý je kontrolovaný. Tento systém je možné matematicky modelovať v doméne S alebo Z. Systémy môžu byť n -tého poriadku, ale pre niekoho, kto začína s ovládaním, by sa mal pravdepodobne domnievať, že ide o systém prvého rádu, pretože je oveľa jednoduchšie ho vypočítať. Toto je súhrn informácií o modelovom systéme, ktoré nájdete na internete. V závislosti od času vzorkovania senzora je model systému buď diskrétny alebo kontinuálny. To má drastický vplyv na ovládač, preto sa odporúča skúmať oba.

d- Ide o poruchu, ktorá sa pridáva do systému. Porucha je vonkajšími silami, s ktorými model systému nepočíta. Jednoduchým príkladom by bol dron, ktorý by ste chceli vznášať v 5 metroch, pričom príde nárazový vietor a spustí dron o 1 meter. Ovládač premiestni dron potom, čo dôjde k rušeniu. Toto je známe ako rušenie, pretože vietor je neopakovateľný, takže to nemožno modelovať.

Na vyladenie ovládača je príliš veľa pravidiel na pomenovanie, ale niektoré dobré, s ktorými som začal, sú Cohen Coon a Zieger Nichols.

Modelovanie systému je vo všeobecnosti najdôležitejšou súčasťou bez presného modelu, ktorý ovládač, ktorý bol navrhnutý, nebude reagovať podľa potreby.

Tu by malo byť dostatok informácií na pochopenie toho, ako kontrolér funguje, spolu s individuálnym prieskumom a nižšie uvedeným kódom je možné implementovať ovládač s ľubovoľnou kombináciou troch výrazov.

Krok 2: Napíšte kód PID

Písanie PID kódu
Písanie PID kódu

Základný princíp kódu, ktorý sa nachádza na nasledujúcom odkaze, bol prevzatý a upravený, pretože tento kód nefungoval, ale mnohé zásady boli správne, čo poskytlo dobrý východiskový bod. Pôvodný PID Kód mal niekoľko chýb ako napr

  • Nepretržitá prevádzka - regulátor je inherentne diskrétny, takže regulátor musel byť nastavený tak, aby počítal všetky 3 výrazy iba vtedy, keď bol k dispozícii nový vstup. Úlohou tejto simulácie bolo skontrolovať, či sa vstup od posledného času zmenil. toto funguje iba na simuláciu správneho fungovania kódu.
  • Čas vzorky nemal žiadny vplyv na integrálny a derivačný výraz - kontrolér tiež nezohľadnil čas, v ktorom sa vzorka preberala, takže bola pridaná hodnota nazývaná delič času, aby sa zaistilo, že integrálne a derivačné termíny fungujú správne. interval.
  • Chyba mohla byť iba postuitívna - pri výpočte chyby bol tiež problém, pretože chyba nikdy nemohla byť záporná, čo znamená, že keď signál spätnej väzby prekročil referenčnú hodnotu, regulátor bude naďalej zvyšovať výstup, aj keď by sa mal znižovať.
  • Ziskové hodnoty pre 3 termíny boli celé čísla - podľa mojich skúseností som vždy zistil, že hodnoty pre 3 termíny v regulátore majú byť vždy čísla s pohyblivou rádovou čiarkou, pretože základy 3 nemajú číslo s pohyblivou rádovou čiarkou, hodnotám musí byť priradená hodnota čitateľa a hodnota menovateľa, ktorá by slúžila ako riešenie tohto problému.

Kód je priložený nižšie, tam je hlavná časť kódu a testovací stôl na simuláciu kódu. Priečinok zip obsahuje kód a testovací stôl, ktoré už sú vo Vivado, takže ho môžete otvoriť, aby ste ušetrili čas. existuje aj simulovaný test kódu, ktorý ukazuje výstup sledujúci referenciu, čo dokazuje, že kód funguje tak, ako mal.

Krok 3: Ako upraviť váš systém

Po prvé, nie všetky systémy sú rovnaké, jeden musí analyzovať vstupy a výstupy systému. V mojom prípade bol výstup z môjho zariadenia, ktorý mi dal hodnotu polohy, analógový signál a vstup zo systému bol signál PWM. To znamená, že bola potrebná konverzia ADC. Našťastie Basys 3 má vstavaný ADC, takže to nebol žiadny problém. Výstup IR senzora musel byť zmenšený na 0V-1V, pretože to je maximálny rozsah palubného ADC. To sa uskutočnilo pomocou obvodu deliča napätia, ktorý bol vyrobený z 1k odporov nastavených ako 3k odpor v sérii s 1k odporom. Analógový signál bol teraz v dosahu ADC. Vstup PWM do ventilátora je schopný priamo ovládať výstup z portu PMOD na Basys 3.

Krok 4: Využitie výhod I/O na základniach 3

Existuje niekoľko I/O na základniach 3, ktoré umožňovali jednoduchšie ladenie pri spustenom kóde. I/O bol nastavený nasledovne.

  • Sedemsegmentový displej - Toto sa používa na zobrazenie hodnoty referencie a hodnoty na ADC vo voltoch. Prvé dve číslice sedemsegmentového displeja zobrazujú dve číslice za desatinným miestom hodnoty ADC, pretože hodnota je v rozsahu 0-1V. Číslice tri a štyri na sedemsegmentovom displeji zobrazujú referenčnú hodnotu vo voltoch, čo tiež ukazuje prvé dve číslice za desatinným miestom, pretože rozsah je tiež medzi 0-1V.
  • 16 LED diód - LED diódy slúžili na zobrazenie hodnoty výstupu, aby sa zabezpečilo, že výstup bude nasýtený a výstup sa zmení správne.

Krok 5: Hluk na výstupe infračerveného senzora

Na vyriešení tohto problému bol hluk na výstupe snímača, pričom bol zavedený priemerovací blok, pretože to bolo dostatočné a na dokončenie bolo potrebné veľmi málo práce.

Krok 6: Celkové rozloženie kódu

Celkové rozloženie kódu
Celkové rozloženie kódu

Existuje jeden kus kódu, o ktorom sa ešte nehovorilo. Tento kód je oddeľovač hodín nazývaný spúšťač. tento kúsok kódu spustí vzorkovanie kódu ADC. dokončenie kódu ADC trvá maximálne 2us, takže súčasný a predchádzajúci vstup sa spriemerujú. 1us po tomto spriemerovaní regulátor vypočíta P, I a D termíny. celkové rozloženie kódu a rozhrania je zobrazené v provizórnom diagrame pripojenia.

Krok 7: Testovanie

Testovanie
Testovanie

Kód bol nasadený na základni 3 a bola zaznamenaná nasledujúca odpoveď. referencia sa zmenila medzi 2 hodnotami. čo je prípad v priloženom kóde projektu. Priložené video ukazuje túto reakciu v reálnom čase. Oscilácie sa v hornej časti trubice rozkladajú rýchlejšie, pretože regulátor bol navrhnutý pre túto oblasť, ale regulátor nefunguje tak dobre v trubici, pretože systém je nelineárny.

Krok 8: Úpravy na zlepšenie projektu

Projekt fungoval podľa plánu, ale došlo k niekoľkým úpravám, ktoré by som urobil, keby bolo možné projekt predĺžiť.

  • Implementujte digitálny filter na úplné zníženie hluku
  • nastavte kód ADC, priemerný kód a integračný kód na postupné spúšťanie.
  • použite iný snímač na spätnú väzbu, pretože nelineárna odozva tohto senzora spôsobila celý rad problémov s týmto projektom, ale to je viac na strane ovládania, nie na strane kódovania.

Krok 9: Práca navyše

V lete som napísal kód pre kaskádový regulátor a implementoval som úpravy, ktoré som odporučil pre jednosmyčkový PID regulátor.

Úpravy vykonané na bežnom PID regulátore

· Implementovaná šablóna filtra FIR koeficienty musia byť zmenené, aby sa dosiahla požadovaná medzná frekvencia. Aktuálnou implementáciou je jedľový filter s 5 klepnutiami.

· Načasovanie kódu bolo nastavené tak, aby filter šíril novú vzorku a keď je výstup pripravený, spustí sa integrálny termín, čo znamená, že kód je možné upraviť tak, aby pracoval v rôznych časových intervaloch s menším úsilím o zmenu. kód.

· Bola znížená aj hlavná slučka for, ktorá poháňa program, pretože táto slučka predtým trvala 7 cyklov, čím sa spomalila maximálna prevádzková rýchlosť ovládača, ale znížením stavov for loop t 4 to znamená, že hlavný blok kódu môže fungovať do 4 hodinových cyklov.

Testovanie

Tento ovládač bol testovaný a vykonaný podľa plánu. Tento dôkaz som nevyfotil, pretože táto časť projektu slúžila iba na udržanie aktívnej mysle. Tu bude k dispozícii kód na testovanie aj testovací stôl, aby ste si mohli program pred implementáciou vyskúšať.

Prečo používať kaskádový ovládač

Kaskádový ovládač ovláda dve časti systému. V tomto prípade by kaskádový regulátor mal vonkajšiu slučku, ktorou je regulátor so spätnou väzbou od infračerveného senzora. Vnútorná slučka má spätnú väzbu vo forme času medzi impulzmi z tachometra, ktorý určuje rýchlosť otáčania ventilátora. Implementáciou kontroly je možné zo systému dosiahnuť lepšiu odozvu.

Ako funguje kaskádový regulátor?

Vonkajšia slučka regulátora privedie hodnotu času medzi pulami do regulátora vnútornej slučky. Tento regulátor potom zvýši alebo zníži pracovný cyklus, aby sa dosiahol požadovaný čas medzi impulzmi.

Implementácia úprav na súprave

Tieto úpravy sa mi bohužiaľ nepodarilo implementovať na súpravu, pretože som k nej nemal prístup. Otestoval som revidovaný jednosmyčkový ovládač, ktorý funguje podľa plánu. Kaskádový ovládač som ešte netestoval. Som si istý, že ovládač bude fungovať, ale môže vyžadovať určité mierne úpravy, aby fungoval podľa plánu.

Testovanie

Nepodarilo sa mi otestovať ovládač, pretože bolo ťažké simulovať dva vstupné zdroje. Jediný problém, ktorý na kaskádovom ovládači vidím, je ten, že keď sa vonkajšia slučka pokúša zvýšiť žiadanú hodnotu dodávanú do vnútornej slučky, že väčšia požadovaná hodnota je v skutočnosti nižší RPS pre ventilátor, ale dá sa to ľahko opraviť. vezmite požadovanú hodnotu z maximálnej hodnoty signálu požadovanej hodnoty (4095 - požadovaná hodnota - výsledok tacho).

Krok 10: Záver

Celkovo projekt funguje tak, ako som chcel, keď sa projekt začal, takže som s výsledkom spokojný. Ďakujem, že ste si našli čas na prečítanie môjho pokusu o vývoj PID regulátora vo VHDL. Ak sa niekto pokúša implementovať nejakú variáciu tohto systému a vyžaduje istotu v porozumení kódu, kontaktujte ma, čo najskôr. Každý, kto vyskúša prácu navyše, ktorá bola vykonaná, ale nebola implementovaná, kontaktujte ma pre akúkoľvek ruku. Veľmi by som ocenil, keby mi ktokoľvek, kto ho implementuje, dal vedieť, ako to prebieha.

Odporúča: