Obsah:

PID řadič VHDL: 10 kroků
PID řadič VHDL: 10 kroků

Video: PID řadič VHDL: 10 kroků

Video: PID řadič VHDL: 10 kroků
Video: BI-SAP - 04. proseminář, 29.03.2021, 16:15 2024, Listopad
Anonim
PID řadič VHDL
PID řadič VHDL
PID řadič VHDL
PID řadič VHDL

Tento projekt byl mým závěrečným projektem k dokončení bakalářského titulu Honors z Cork Institute of Technology. Tento výukový program je rozdělen na dvě části, první bude pokrývat hlavní část kódu PID, což je hlavní účel projektu, a druhá část bude zahrnovat propojení kódu, který byl implementován na vývojové desce Basys 3 a poté propojen s ping pongovým míčem levitační souprava. Teoretická a stavěná souprava je zobrazena na přiložených obrázcích.

Zásoby

Simulace

Vivado Design Suite

Implementace (v závorce je to, co bylo použito pro můj projekt)

  • Deska FPGA, která umožňuje vstup a výstup digitálních/analogových signálů (základy 3)
  • systém, který je ovladatelný jediným zdrojem zpětné vazby (Ping Pong Ball Levitation Rig)

Souprava

  • Polykarbonátová trubice
  • 5V ventilátor
  • IR senzor
  • 3D tištěná základna (Tento tutoriál dokumentuje konstrukci soupravy, do které byl přidán senzor, aby poskytoval zpětnou vazbu, ale souprava byla obecně stejná)
  • 1k odpory
  • Breadboard s 5V a GND Rail

Krok 1: Základní teorie řízení

Teorie základního ovládání
Teorie základního ovládání

Myslel jsem, že přidání nějaké základní teorie ovládání by dalo každému, kdo by se chtěl pokusit implementovat tento kód, dobrou základnu pro začátek.

Přiložený diagram je rozložení řadiče s jednou smyčkou.

r- Je reference. To určuje, kam se má ovladač dostat.

e-Je chyba. Toto je rozdíl mezi hodnotou na vašem senzoru a vaší referencí. např. e = r- (d+výstup senzoru).

K-Toto je ovladač. Řadič se může skládat ze tří termínů. Tyto termíny jsou P, I a D. Všechny tři termíny mají multiplikátory zvané Kp, Ki a Kd. Tyto hodnoty určují odezvu ovladače.

  • P-proporcionální. Striktně P regulátor bude mít výstup úměrný aktuální chybě. Regulátor P se snadno implementuje a pracuje rychle, ale nikdy nedosáhne vámi nastavené hodnoty (reference).
  • I-Integral. Striktně integrální řadič shrne předchozí chybu, která nakonec dosáhne požadované reference. Tento řadič je obecně příliš pomalý na implementaci. Přidáním výrazu P se zkrátí doba potřebná k dosažení reference. Je třeba vzít v úvahu čas, ze kterého je vstup vzorkován, integrovaný termín je integrován s ohledem na čas.
  • D-derivát. Derivační výraz bude mít výstup, který závisí na rychlosti změny chyby. Tento termín se obecně používá s termínem P nebo s termínem PI. Protože je to úměrné rychlosti změny chyby, hlučný singl bude mít zesílený hluk, což může způsobit nestabilitu systému. Je také třeba vzít v úvahu čas, protože odvozený termín je také s ohledem na čas.

U- Toto je řídicí signál. Tento signál je vstupem do soupravy. V případě tohoto projektu u je signál PWM vstup do ventilátoru pro změnu rychlosti.

G- Toto je systém, který je řízen. Tento systém lze modelovat matematicky v doméně S nebo Z. Systémy mohou být n -tého řádu, ale pro někoho, kdo začíná s ovládáním, by pravděpodobně měl být předpokládán systém prvního řádu, protože to je mnohem jednodušší vypočítat. Toto je Plethora informací o modelovacím systému, které lze nalézt online. V závislosti na době vzorkování senzoru je model systému buď diskrétní nebo spojitý. To má drastický účinek na ovladač, takže doporučujeme prozkoumat oba.

d- Toto je porucha, která je přidána do systému. Porucha je vnějšími silami, se kterými model systému nepočítá. Jednoduchým příkladem by mohl být dron, který byste chtěli vznášet na 5 metrech, přijde vítr a spadne z dronu o 1 metr, ovladač po přemístění dron přemístí. Toto je známé jako rušení, protože vítr je neopakovatelný, takže to nelze modelovat.

Na vyladění ovladače je příliš mnoho pravidel, abychom je pojmenovali, ale některá dobrá, se kterými jsem začínal, jsou Cohen Coon a Zieger Nichols.

Modelování systému je obecně nejdůležitější částí bez přesného modelu, který ovladač, který byl navržen, nebude reagovat podle potřeby.

Zde by mělo být k dispozici dostatek informací k pochopení toho, jak řadič funguje, spolu s určitým individuálním průzkumem a níže uvedeným kódem lze implementovat ovladač s libovolnou kombinací tří termínů.

Krok 2: Psaní PID kódu

Zápis PID kódu
Zápis PID kódu

Základní princip kódu, který najdete na následujícím odkazu, byl převzat a upraven, protože tento kód nefungoval, ale měl mnoho správných zásad, které poskytly dobrý výchozí bod. Původní PID Kód měl několik chyb, jako např

  • Nepřetržitý provoz - řadič je ze své podstaty diskrétní, takže ovladač musel být nastaven tak, aby vypočítával pouze všechny 3 výrazy, když byl k dispozici nový vstup. Úkolem této simulace bylo zkontrolovat, zda se vstup od posledního času změnil. funguje to pouze pro simulaci správného fungování kódu.
  • Čas vzorku neměl žádný vliv na integrální a derivační termín - Řadič také nezohlednil čas, ve kterém byl vzorek převzat, takže byla přidána hodnota nazývaná dělič času, aby se zajistilo, že integrální a derivační termíny fungují správně časový úsek.
  • Chyba mohla být pouze postivní - při výpočtu chyby byl také problém, protože chyba nikdy nemohla být záporná, což znamená, že když signál zpětné vazby překročil referenční hodnotu, regulátor bude nadále zvyšovat výstup, když by měl být snižován.
  • Hodnoty zisku pro 3 termíny byly celá čísla - podle mých zkušeností jsem vždy zjistil, že hodnoty pro 3 termíny v regulátoru budou vždy čísla s pohyblivou řádovou čárkou, protože Basys 3 nemá číslo s pohyblivou řádovou čárkou, hodnotám musí být přiřazena hodnota čitatele a hodnota jmenovatele, která by sloužila jako řešení tohoto problému.

Kód je připojen níže, tam je hlavní část kódu a testovací stůl pro simulaci kódu. Složka zip obsahuje kód a testbench již ve Vivadu, takže je lze otevřít a ušetřit čas. existuje také simulovaný test kódu, který ukazuje výstup sledující referenci, což dokazuje, že kód funguje tak, jak měl.

Krok 3: Jak upravit váš systém

Za prvé, ne všechny systémy jsou stejné, jeden musí analyzovat vstupy a výstupy systému. V mém případě byl výstup z mé soupravy, který mi dal hodnotu polohy, analogový signál a vstup ze systému byl signál PWM. To znamená, že byla nutná konverze ADC. Naštěstí má Basys 3 vestavěný ADC, takže to nebyl problém, výstup IR senzoru musel být zmenšen na 0V-1V, protože to je maximální dosah palubního ADC. To bylo provedeno pomocí obvodu děliče napětí, který byl vyroben z odporů 1k nastavených jako odpor 3k v sérii s odporem 1k. Analogový signál byl nyní v dosahu ADC. Vstup PWM do ventilátoru je schopen přímo řídit výstup portu PMOD na Basys 3.

Krok 4: Využití výhod I/O na základnách 3

Na Basys 3 existuje řada I/O, které umožňovaly snadnější ladění, když byl spuštěn kód. I/O byl nastaven jako následující.

  • Seven Segment Display - Toto bylo použito k zobrazení hodnoty reference a hodnoty na ADC ve voltech. První dvě číslice sedmisegmentového displeje zobrazují dvě číslice za desetinným místem hodnoty ADC, protože hodnota je mezi 0-1V. Číslice tři a čtyři na sedmisegmentovém displeji ukazují referenční hodnotu ve voltech, to také ukazuje první dvě číslice za desetinným místem, protože rozsah je také mezi 0-1V.
  • 16 LED diod - LED diody byly použity k zobrazení hodnoty výstupu, aby se zajistilo, že výstup bude saturační a výstup se bude správně měnit.

Krok 5: Hluk na výstupu IR senzoru

Na výstupu senzoru byl šum, aby se tento problém vyřešil, a byl zaveden průměrující blok, protože to bylo dostatečné a vyžadovalo velmi málo práce k dokončení.

Krok 6: Celkové rozvržení kódu

Celkové rozvržení kódu
Celkové rozvržení kódu

Existuje jeden kus kódu, o kterém se ještě nemluvilo. Tento kód je dělič hodin nazývaný spoušť. tento kousek kódu spouští ukázkový kód ADC. dokončení kódu ADC trvá maximálně 2us, takže aktuální vstup a předchozí vstup jsou zprůměrovány. 1us po tomto zprůměrování regulátor vypočítá P, I a D termíny. celkové rozložení kódu a rozhraní je zobrazeno v provizorním schématu připojení.

Krok 7: Testování

Testování
Testování

Kód byl nasazen na Basys 3 a byla zaznamenána následující reakce. reference se změnila mezi 2 hodnotami. což je případ přiloženého kódu projektu. Přiložené video ukazuje tuto reakci v reálném čase. Oscilace se v horní části trubice rozpadají rychleji, protože regulátor byl navržen pro tuto oblast, ale ovladač nefunguje tak dobře po trubici, protože systém je nelineární.

Krok 8: Úpravy ke zlepšení projektu

Projekt fungoval podle plánu, ale došlo k několika změnám, které bych provedl, kdyby bylo možné projekt prodloužit.

  • Implementujte digitální filtr pro úplné snížení hluku
  • nastavte kód ADC, průměrný kód a integrační kód pro postupné spouštění.
  • použijte jiný snímač pro zpětnou vazbu, protože nelineární odezva tohoto senzoru způsobila celou řadu problémů s tímto projektem, ale to je spíše na straně ovládání, ne na straně kódování.

Krok 9: Práce navíc

V průběhu léta jsem napsal kód pro kaskádový řadič a implementoval úpravy, které jsem doporučil pro jednosmyčkový PID regulátor.

Úpravy provedené na běžném PID regulátoru

· Šablona filtru FIR implementována koeficienty musí být změněny, aby se dosáhlo požadované mezní frekvence. Aktuální implementací je jedle filtr na 5 klepnutí.

· Načasování kódu bylo nastaveno tak, aby filtr šířil nový vzorek a když je výstup připraven, spustí se integrální termín, což znamená, že kód lze upravit tak, aby fungoval v různých časových intervalech s menším úsilím o změnu kód.

· Hlavní smyčka for, která řídí program, byla také snížena, protože tato smyčka trvala dříve 7 cyklů, což zpomalilo maximální provozní rychlost ovladače, ale snížením stavů for loop t 4 to znamená, že hlavní blok kódu může fungovat do 4 hodinových cyklů.

Testování

Tento ovladač byl testován a proveden podle očekávání. Tento důkaz jsem nevyfotil, protože tato část projektu byla jen proto, aby byla mysl aktivní. Zde bude k dispozici kód pro testování i testovací stůl, takže si můžete program před implementací vyzkoušet.

Proč používat kaskádový ovladač

Kaskádový ovladač ovládá dvě části systému. V tomto případě by kaskádový ovladač měl vnější smyčku, což je ovladač, který má zpětnou vazbu od IR senzoru. Vnitřní smyčka má zpětnou vazbu v podobě času mezi impulsy z tachometru, který určuje rychlost otáčení ventilátoru. Implementací kontroly lze ze systému dosáhnout lepší odezvy.

Jak funguje kaskádový ovladač?

Vnější smyčka ovladače přenese hodnotu pro čas mezi pules do ovladače vnitřní smyčky. Tento regulátor pak zvýší nebo sníží pracovní cyklus, aby dosáhl požadovaného času mezi impulsy.

Implementace úprav na plošině

Bohužel se mi nepodařilo implementovat tyto úpravy na zařízení, protože jsem k němu neměl přístup. Testoval jsem revidovaný řadič s jednou smyčkou, který funguje tak, jak měl. Kaskádový ovladač jsem zatím netestoval. Jsem si jistý, že ovladač bude fungovat, ale může vyžadovat určité drobné úpravy, aby fungoval podle očekávání.

Testování

Nepodařilo se mi otestovat ovladač, protože bylo obtížné simulovat dva vstupní zdroje. Jediný problém, který na kaskádním ovladači vidím, je ten, že když se vnější smyčka pokouší zvýšit požadovanou hodnotu dodávanou do vnitřní smyčky, že větší požadovaná hodnota je ve skutečnosti nižší RPS pro ventilátor, ale to lze snadno opravit. vezměte požadovanou hodnotu z maximální hodnoty signálu požadované hodnoty (4095 - požadovaná hodnota - výsledek tacho).

Krok 10: Závěr

Celkově projekt funguje tak, jak jsem zamýšlel, když projekt začínal, takže jsem s výsledkem spokojen. Děkuji, že jste si udělal čas na přečtení mého pokusu o vývoj PID regulátoru ve VHDL. Pokud se někdo pokouší implementovat nějakou variaci tohoto systému a vyžaduje určitou jistotu pro pochopení kódu, kontaktujte mě, odpovím co nejdříve. Kdokoli, kdo zkouší práci navíc, která byla zpracována, ale nebyla implementována, kontaktujte mě pro jakoukoli ruku. Velmi bych ocenil, kdyby mi někdo, kdo ho implementuje, dal vědět, jak to probíhá.

Doporučuje: