Realizacja regulatora PID w układzie FPGA

Realizacja regulatora PID w układzie FPGA

 

Zbigniew Kulesza, Andrzej Koszewnik

REALIZACJA REGULATORA PID-KONFERENCJA

1. Wstęp

Programowalnymi układami logicznymi (ang. PLD – Programmable Logic Device) nazywane są układy scalone, których właściwości funkcjonalne są definiowane nie przez producenta, lecz przez końcowego użytkownika [1]. Układy PLD odgrywają coraz większą rolę w opracowaniu specjalizowanych układów cyfrowych. Ich atrakcyjność wynika z połączenia takich walorów, jak: szybkość działania, pojemność, wygoda programowania. Dzięki tym właściwościom projektowanie złożonych układów i systemów cyfrowych sprowadza się do pisania programów komputerowych.

Układy FPGA (ang. Field Programmable Gate Arrays) stanowią jedną z grup układów PLD. Są to złożone układy programowalne w których ścieżki połączone są w trakty poziome i pionowe, a bloki logiczne są rozmieszczone matrycowo. Obszarem zastosowań układów FPGA są wszelkiego rodzaju układy logiczne przeznaczone do łączenia standardowych elementów (procesory, pamięci, interfejsy sygnałów) w system elektroniczny. Przetwarzanie sygnałów następuje w sposób sprzętowy, a zatem znacznie szybciej niż w rozwiązaniach programowych. Są to układy o wysokiej wydajności, atrakcyjne cenowo i z dnia na dzień stają się coraz większą konkurencją dla tradycyjnych układów ASIC. Wśród uznanych producentów tych układów należy wymienić przede wszystkim firmy: Xilinx, Altera i Lattice.

2. Projekt regulatora PID w układzie FPGA

W oparciu o dotychczasową wiedzę z zakresu wykorzystania regulatorów w przemyśle, podjęliśmy się zadania opracowania i zaimplementowania algorytmu typowego regulatora PID w układzie FPGA. Rozwiązanie takie jest uzasadnione w przypadku wymagania krótkiego czasu reakcji układu regulacji na szybko zmieniające się sygnały wejściowe, lub zakłócenia. Regulator PID zrealizowany w układzie FPGA może znaleźć zastosowanie w takich gałęziach techniki, jak sterowanie pracą wysokoobrotowych turbin, wirników, sterowanie pracą układów antypoślizgowych ABS w układach hamulcowych pojazdów itp.

Z literatury znane są dwa algorytmy regulatora cyfrowego typu PID: podstawowy i przyrostowy [5]. W algorytmie podstawowym sygnał wyjściowy ui regulatora w i-tym kroku jest obliczany następująco:

wzor1(1)

W algorytmie przyrostowym sygnał ui oblicza się następująco:

wzor2

(2)

W obu przypadkach przyjmuje się ograniczenia sygnału wyjściowego udo wartości minimalnej umin i maksymalnej umax, tzn.:

wzor3

(3)

W powyższych wzorach przyjęto następujące oznaczenia:

uiui-1 – aktualna i poprzednia wartość sygnału wyjściowego,

uminumax – minimalna i maksymalna dopuszczalna wartość sygnału wyjściowego,

eiei-1,ei-2 – aktualna i poprzednie wartości uchybu (sygnału wejściowego regulatora),

kpki, kd  – parametry regulatora PID (współczynnik wzmocnienia, stała akcji całkującej oraz stała akcji różniczkującej).

W naszym rozwiązaniu zostanie wykorzystany algorytm przyrostowy, gdyż wymaga on mniej elementów pamięciowych (rejestrów) i daje większe możliwości swobodnego odwzorowania wejście-wyjście. Na podstawie zależności (2) opracowano schemat blokowy przyrostowego regulatora PID, przedstawiony na rysunku 1.

image010

Rys.1. Schemat blokowy przyrostowego regulatora PID

W układzie zastosowano 7 rejestrów 12-bitowych, 1 rejestr 25-bitowy,2 komparatory 25-bitowe oraz 6 sumatorów i 3 układy mnożące. Trzy rejestry 12-bitowe (oznaczone e1e2 i e3) wykorzystywane są do zapamiętania aktualnej oraz poprzednich wartości uchybu regulacji e. Kolejne trzy rejestry 12-bitowe (oznaczone tdtikp), przeznaczone są do zapamiętania wartości parametrów regulatora, tzn. wartości współczynnika wzmocnienia kp, stałej akcji całkującej ki oraz stałej akcji różniczkującejkd. Ostatni rejestr 12-bitowy (oznaczony un) służy do przechowywania aktualnej wartości 12-bitowego sygnału wyjściowego u regulatora. Komparatory wykorzystywane są do ograniczenia wartości sygnału wyjściowego u do przedziału (uminumax). Funkcje sumatorów oraz układów mnożących są oczywiste i wynikają z algorytmu regulatora wyrażonego za pomocą zależności (2).

Sygnały wejściowe regulatora stanowią:

clk (ang. clock) – 1-bitowy sygnał taktujący zegara,

rst (ang. reset) – 1-bitowy sygnał kasujący wartości parametrów zapisanych w rejestrach,

we (ang. write enable) – 1-bitowy sygnał zezwolenia zapisu parametru pardo rejestru,

cs (ang. chip select) – 2-bitowy sygnał wyboru rejestru, w którym zastanie zapisany parametr par,

par (ang. parameter) – 12-bitowy sygnał wartości parametru par,

sp (ang. set point) – 12-bitowy sygnał wartości zadanej,

pv (ang. preset value) – 12-bitowy sygnał wartości mierzonej.

Sygnałem wyjściowym jest u, tzn. 12-bitowy sygnał wyjściowy regulatora obliczony zgodnie z zależnością (2).

Sygnał wartości mierzonej pv pochodzi z przetwornika analogowo-cyfrowego (nie pokazany na rysunku 1). W naszym rozwiązaniu przyjęliśmy, że będzie to przetwornik 12-bitowy i stąd wynika szerokość (liczba bitów) sygnału pv. Podobnie sygnał wyjściowy regulatora będzie kierowany na przetwornik cyfrowo-analogowy o liczbie bitów równej 12. Sygnał wartości zadanej sp pochodzi z zadajnika cyfrowego (nie pokazany na rysunku 1).

Sygnały wecs oraz par wykorzystywane są przy wprowadzaniu wartości parametrów (kpkikd) do rejestrów regulatora. Wprowadzenie wartości np. parametru kp przebiega w ten sposób, że za pomocą zadajnika (nie pokazany na rysunku 1) należy ustawić odpowiednią wartość sygnału wejściowego par oraz za pomocą sygnału cs należy dokonać wyboru rejestru, w którym zostanie zapisana wartość wprowadzanego parametru (w tym przypadku, należy podać sygnał cs równy „11”). Następnie należy ustawić wysoką („1”) wartość sygnału zezwolenia zapisu we. W tym momencie nastąpi wpisanie wartości sygnału wejściowego par, do rejestrukp. Podobnie przebiega zapis wartości pozostałych parametrów, tzn. ki i kdw rejestrach ki oraz kd. Taki sposób wprowadzania parametrów do rejestrów regulatora wymaga mniejszej liczby zadajników cyfrowych oraz linii sygnałowych.

Omawiany regulator PID został zrealizowany w języku VHDL. Opis regulatora w języku VHDL zrealizowano w programie WebPack ISE firmy Xilinx. Program ten jest wyposażony w symulator o nazwie ModelSim, umożliwiający przeprowadzenie symulacji działania projektowanego układu. W programie tym wykonano symulację działania omawianego regulatora PID. Na rysunku 2 przedstawiono okno programu ModelSim z wynikami symulacji

image012

Rys.2. Widok okna symulatora ModelSim z wynikami symulacji regulatora PID

W celu lepszego zobrazowania, wyniki symulacji zapisano w pliku tekstowym. W pliku zapisano wartości sygnałów wejściowych i wyjściowych regulatora w kolejnych chwilach czasowych. Następnie plik wynikowy odczytano w programie Matlab, gdzie wykonano wykres przebiegów sygnałów regulatora w czasie. Przebiegi te przedstawiono na rysunku 3. Linią ciągłą oznaczono sygnał wyjściowy u, a linią przerywaną – sygnał uchybu e regulatora. Na osi poziomej przedstawiono kolejne chwile czasowe realizowane za pomocą sygnału taktującego clk regulatora. Czas trwania pojedynczego taktu zależy od częstotliwości zewnętrznego sygnału taktującego, pochodzącego np. z rezonatora kwarcowego

image014

Rys.3. Przebiegi uchybu i sygnału sterującego w Matlabie

Symulacje przeprowadzono następująco. W 20. i 70. kroku symulacji wykonano skokowe zmiany sygnału wejściowego e (odpowiednio skokowy wzrost i skokowy spadek sygnału e). Na te zmiany regulator zareagował błyskawicznym zwiększeniem/zmniejszeniem sygnału wyjściowego u, dzięki prawidłowemu działaniu akcji różniczkującej. Następnie następował powolny wzrost/spadek sygnału u, wywołany działaniem akcji całkującej. Dodatkowo w 50. i 100. kroku symulacji wykonano zmianę stałej akcji całkującej ki, co przejawiło się prawidłową zmianą nachylenia wzrostu/spadku sygnału wyjściowego. W przebiegu sygnału u widoczne jest także jego ograniczenie do wartości 1024, stanowiącej maksymalną dopuszczalną wartość umax, co świadczy o prawidłowym działaniu komparatorów.

Jak widać reakcja układu na zakłócenia skokowe następuje w przeciągu zaledwie kilku taktów generatora zegarowego. Należy się zatem spodziewać, że w przypadku taktowania układu FPGA sygnałem o częstotliwości np. 50 MHz, czas reakcji układu powinien być rzędu  s.

3. Wnioski

Wyniki symulacji świadczą o prawidłowym działaniu regulatora, a zatem jego poprawnym opisie zrealizowanym w języku VHDL. W dalszym etapie prac planowana jest realizacja przedstawionego opisu regulatora w rzeczywistym układzie FPGA oraz przeprowadzenie testów sprawdzających poprawność tej realizacji w prawdziwym układzie sterowania. Będzie to możliwe po zakupie programowalnego układu FPGA. Planowany jest zakup układu serii Virtex II firmy Xilinx.

4. Literatura

 1.      Zbysiński P., Pasierbiński J.: „Układy programowalne – pierwsze kroki”, Wydawnictwo BTC, Warszawa 2002.

2.      Zwierzchowski B., Jasiński K., Łuba T.: „Specjalizowane układy cyfrowe w strukturach PLD i FPGA”, WKiŁ, Warszawa 1997.

3.      http://www.microtech.com.pl/m/pl/electronic_technology_fpga.asp – 10.03.2006

4.      http://www.elektronik.com.pl/fpga.php – 10.03.2006

5.      Kołek K.: „Realizacja sterowników w technologii FPGA”, Katedra Automatyki AGH, Kraków 2002.

A PID CONTROLLER REALIZATION IN A FPGA CHIP

Abstract: A method of the digital PID controller realization in a FPGA chip is presented. The velocity algorithm of the PID controller has been used. The architecture of the controller has been described in the VHDL language. A simulation of the controller performance in Xilinx ModelSim program has been made. The results of the simulation showed the correctness of the controller algorithm realization. The described implementation may find its application in these technology fields, where the short response time of the control system for fast-changing input or disturbance signals is required.

Dodaj komentarz