Jak wykorzystać zmierzoną odpowiedź krokową do systemu kontroli dostrajania

17

W jaki sposób wykorzystuje się zmierzoną odpowiedź krokową, aby dostroić schemat PID lub schemat kontroli splotu?

Zainspirowany tą odpowiedzią * , interesuje mnie bardziej szczegółowe wyjaśnienie, jak wdrożyć system sterowania oparty na zmierzonej odpowiedzi krokowej.

Nie próbowałbym odgadnąć wszystkich efektów. Prawdopodobnie dzieje się coś nieoczywistego i nie możesz znać wszystkich parametrów.

Zmierzyłbym odpowiedź krokową. Znajdź dwa ustawienia pompy, które powodują, że kula znajduje się w mierzalnym zakresie w rurze. Następnie sterownik nagle przełącza się z jednego ustawienia do drugiego otwartej pętli. Tymczasem mierz, co robi piłka w czasie. To jest odpowiedź krokowa. Możesz wziąć pochodną tego i uzyskać odpowiedź impulsową. Na podstawie odpowiedzi impulsowej można przewidzieć ruch kuli dla dowolnej historii ustawień pompy, zakładając, że jest to układ liniowy. Prawdopodobnie jest wystarczająco liniowy w małym zakresie ustawień, aby utrzymać piłkę w normalnym zakresie.

Możesz użyć tego jako podstawy symulacji do znalezienia parametrów dla starej kontroli PID. Lub możesz użyć odpowiedzi impulsowej bezpośrednio do kontroli splotu. Musisz odpowiednio filtrować dolnoprzepustowy sygnał wejściowy sterowania, aby jądro splotu nie było ujemne, chyba że twoja pompa jest rzeczywiście odwracalna i może zassać piłkę z powrotem.

Jak dokładnie to działa? Strojenie PID jest trudne ; Zakładam, że „kontrola splotu” polega na użyciu bieguna zerowego lub funkcji przenoszenia, ale nie wiem dokładnie, jak uzyskać parametry.

ZWIĄZANE: Modelowanie systemu dla systemów sterowania
* funkcja przenoszenia modelowania lewitacji piłki ping pongowej w rurce jako amortyzator

tyblu
źródło

Odpowiedzi:

23

Wprowadzenie

Po pierwsze, musimy zastanowić się, co to dokładnie nazywa się odpowiedzią impulsową systemu i co to oznacza. Jest to abstrakcyjna koncepcja, której wizualizacja wymaga nieco myślenia. Nie zamierzam wdawać się w rygorystyczną matematykę. Chodzi mi o to, aby spróbować dać intuicję, co to za rzecz, co prowadzi do tego, jak można z niej skorzystać.

Przykład problemu kontrolnego

Wyobraź sobie, że miałeś duży rezystor mocy z zamontowanym czujnikiem temperatury. Wszystko zaczyna się w temperaturze otoczenia. Po włączeniu zasilania wiesz, że temperatura na czujniku ostatecznie wzrośnie i ustabilizuje się, ale dokładne równanie byłoby bardzo trudne do przewidzenia. Powiedzmy, że system ma stałą czasową około 1 minuty, chociaż „stała czasowa” nie ma pełnego zastosowania, ponieważ temperatura nie rośnie w ładnym wykładniczym przypadku, jak w systemie z jednym biegunem, a zatem z jedną stałą czasową . Powiedzmy, że chcesz dokładnie kontrolować temperaturę i sprawić, by zmieniła się na nowy poziom i pozostała tam znacznie szybciej niż to, co zrobiłbyś, gdybyś po prostu włączył się na odpowiednim poziomie mocy i czekał.

Zasadniczo masz problem z systemem sterowania. Odpowiedź w otwartej pętli jest dość powtarzalna i istnieje równanie, które modeluje ją wystarczająco dobrze, ale problem polega na tym, że istnieje zbyt wiele niewiedzy, aby można było wyprowadzić to równanie.

Kontrola PID

Jednym z klasycznych sposobów rozwiązania tego problemu jest regulator PID. W plejstocenie, kiedy trzeba było to zrobić w analogowej elektronice, ludzie byli sprytni i wymyślili schemat, który działał dobrze z dostępnymi możliwościami analogowymi. Schemat ten nazwano „PID” dla proporcjonalnego , całkowego i pochodnego .

Termin P.

Zaczynasz mierzyć błąd. Jest to tylko zmierzona reakcja systemu (temperatura w naszym przypadku zgłaszana przez czujnik) minus wejście sterujące (żądane ustawienie temperatury). Zwykle można je ustawić jako sygnały napięciowe, więc znalezienie błędu było tylko różnicą analogową, co jest dość łatwe. Możesz pomyśleć, że to łatwe. Wszystko, co musisz zrobić, to poprowadzić rezystor z większą mocą, tym wyższy jest błąd. To automatycznie spróbuje uczynić go cieplejszym, gdy jest zbyt zimnym i zimniejszym, gdy jest zbyt gorącym. To działa. Należy pamiętać, że ten schemat wymaga błędu, aby spowodować niezerowe wyjście sterujące (moc napędzająca rezystor). W rzeczywistości oznacza to, że im wyższa wymagana moc, tym większy jest błąd, ponieważ jest to jedyny sposób na uzyskanie dużej mocy. Teraz możesz powiedzieć, że wszystko, co musisz zrobić, to podkręcić wzmocnienie, aby błąd był akceptowalny nawet przy dużej mocy. W końcu to właściwie podstawa do tego, jak opampy są używane w wielu obwodach. Masz rację, ale prawdziwy świat zazwyczaj nie pozwala ci tego uniknąć. Może to działać w przypadku niektórych prostych systemów sterowania, ale gdy reakcje są różnego rodzaju subtelne zmarszczki i kiedy może to zająć dużo czasu, kończy się coś, co oscyluje, gdy wzmocnienie jest zbyt wysokie. Innymi słowy, system staje się niestabilny. ale kiedy reakcje są różnego rodzaju subtelne zmarszczki i kiedy może to zająć dużo czasu, kończy się coś, co oscyluje, gdy wzmocnienie jest zbyt wysokie. Innymi słowy, system staje się niestabilny. ale kiedy reakcje są różnego rodzaju subtelne zmarszczki i kiedy może to zająć dużo czasu, kończy się coś, co oscyluje, gdy wzmocnienie jest zbyt wysokie. Innymi słowy, system staje się niestabilny.

To, co opisałem powyżej, to P (proprotional) część PID. Tak, jak możesz, aby wyjście było proporcjonalne do sygnału błędu, możesz także dodawać terminy proporcjonalne do pochodnej czasowej i całki błędu. Każdy z tych sygnałów P, I i D ma swój odrębny zysk przed zsumowaniem w celu wytworzenia wyjściowego sygnału sterującego.

Ja termin

Termin I pozwala na wyzerowanie błędu w czasie. Dopóki wystąpi jakikolwiek błąd dodatni, warunek I będzie się kumulował, ostatecznie podnosząc wynik sterowania do punktu, w którym ogólny błąd zniknie. W naszym przykładzie, jeśli temperatura będzie stale niska, będzie stale zwiększać moc rezystora, aż temperatura wyjściowa nie będzie już niska. Mamy nadzieję, że zauważysz, że może to stać się niestabilne nawet szybciej niż tylko wysoki termin P. Samo pojęcie AI może łatwo powodować przeregulowania, które łatwo stają się oscylacjami.

Termin D.

Termin D jest czasem pomijany. Podstawowym zastosowaniem terminu D jest dodanie pewnej stabilności, aby warunki P i I mogły być bardziej agresywne. Termin D w zasadzie mówi, że jeśli już zmierzam we właściwym kierunku, zwolnij trochę gazu, ponieważ wydaje mi się, że teraz to tam doprowadzam .

Tuning PID

Podstawy sterowania PID są dość proste, ale poprawne określenie P, I i D nie jest właściwe. Zwykle odbywa się to z dużą ilością eksperymentów i poprawek. Ostatecznym celem jest uzyskanie ogólnego systemu, w którym sygnał wyjściowy reaguje tak szybko, jak to możliwe, ale bez nadmiernego przeregulowania lub dzwonienia, i oczywiście musi być stabilny (nie zacząć samodzielnie oscylować). Napisano wiele książek na temat sterowania PID, jak dodawać małe zmarszczki do równań, a szczególnie jak je „dostroić”. Strojenie odnosi się do wyznaczenia optymalnych wzmocnień P, I i D.

Systemy sterowania PID działają, a na pewno jest wiele wiedzy i sztuczek, aby działały dobrze. Jednak sterowanie PID nie jest jedyną właściwą odpowiedzią dla systemu sterowania. Wydaje się, że ludzie zapomnieli, dlaczego PID został wybrany przede wszystkim, co miało więcej wspólnego z ograniczeniami elektroniki analogowej niż jako rodzaj uniwersalnego optymalnego schematu sterowania. Niestety, zbyt wielu inżynierów dzisiaj utożsamia „system sterowania” z PID, który jest niczym innym jak małomyślną reakcją szarpnięcia kolanem. To nie sprawia, że ​​kontrola PID jest zła w dzisiejszym świecie, ale tylko jeden z wielu sposobów ataku na problem kontroli.

Poza PID

Dzisiaj system sterowania w pętli zamkniętej dla czegoś takiego jak przykład temperatury zostałby wykonany w mikrokontrolerze. Mogą to zrobić znacznie więcej niż tylko wziąć pochodną i całkę wartości błędu. W procesorze możesz wykonywać podziały, pierwiastki kwadratowe, przechowywać historię ostatnich wartości i wiele więcej. Możliwych jest wiele schematów sterowania innych niż PID.

Odpowiedź impulsowa

Zapomnij więc o ograniczeniach elektroniki analogowej i cofnij się i zastanów się, jak możemy kontrolować system powracający do pierwszych zasad. Co by było, gdybyśmy dla każdego najmniejszego wyjścia sterującego wiedzieli, co zrobi system. Ciągły sygnał wyjściowy kontroli jest więc sumą wielu małych kawałków. Ponieważ wiemy, jaki jest wynik każdego elementu, możemy wiedzieć, jaki jest wynik dowolnej wcześniejszej historii wyjść sterujących. Zauważ teraz, że „mały kawałek” wyjścia sterującego ładnie pasuje do sterowania cyfrowego. Zamierzasz obliczyć, jakie powinno być wyjście sterujące i ustawić go na tym, a następnie wrócić i ponownie zmierzyć dane wejściowe, obliczyć nowe dane wyjściowe sterowania i ustawić je ponownie, itd. Algorytm sterowania jest uruchamiany w pętli, i mierzy dane wejściowe i ustawia na nowo wyjście sterujące dla każdej iteracji pętli. Wejścia są „próbkowane” w dyskretnych momentach, a dane wyjściowe są również ustawiane na nowe wartości w ustalonych odstępach czasu. Tak długo, jak możesz to zrobić wystarczająco szybko, możesz myśleć o tym, że dzieje się to w sposób ciągły. W przypadku nagrzewania rezystora, który zwykle trwa kilka minut, z pewnością kilka razy na sekundę jest o wiele szybszy, niż system nieodłącznie reaguje w znaczący sposób, że aktualizacja wyjścia na powiedzmy 4 Hz będzie wyglądać na ciągłą w systemie. Jest to dokładnie to samo, co cyfrowo nagrana muzyka, która zmienia wartość wyjściową w dyskretnych krokach w zakresie 40-50 kHz i jest tak szybka, że ​​nasze uszy jej nie słyszą i brzmi nieprzerwanie jak oryginał. możesz myśleć o tym, że dzieje się to w sposób ciągły. W przypadku nagrzewania rezystora, który zwykle trwa kilka minut, z pewnością kilka razy na sekundę jest o wiele szybszy, niż system nieodłącznie reaguje w znaczący sposób, że aktualizacja wyjścia na powiedzmy 4 Hz będzie wyglądać na ciągłą w systemie. Jest to dokładnie to samo, co cyfrowo nagrana muzyka, która zmienia wartość wyjściową w dyskretnych krokach w zakresie 40-50 kHz i jest tak szybka, że ​​nasze uszy jej nie słyszą i brzmi nieprzerwanie jak oryginał. możesz myśleć o tym, że dzieje się to w sposób ciągły. W przypadku nagrzewania rezystora, który zwykle trwa kilka minut, z pewnością kilka razy na sekundę jest o wiele szybszy, niż system nieodłącznie reaguje w znaczący sposób, że aktualizacja wyjścia na powiedzmy 4 Hz będzie wyglądać na ciągłą w systemie. Jest to dokładnie to samo, co cyfrowo nagrana muzyka, która zmienia wartość wyjściową w dyskretnych krokach w zakresie 40-50 kHz i jest tak szybka, że ​​nasze uszy jej nie słyszą i brzmi nieprzerwanie jak oryginał. z pewnością kilka razy na sekundę jest o wiele szybsze niż system nieodłącznie reaguje w znaczący sposób, że aktualizacja wyjścia przy powiedzmy 4 Hz będzie wyglądać na ciągłą w systemie. Jest to dokładnie to samo, co cyfrowo nagrana muzyka, która zmienia wartość wyjściową w dyskretnych krokach w zakresie 40-50 kHz i jest tak szybka, że ​​nasze uszy jej nie słyszą i brzmi nieprzerwanie jak oryginał. z pewnością kilka razy na sekundę jest o wiele szybsze niż system nieodłącznie reaguje w znaczący sposób, że aktualizacja wyjścia przy powiedzmy 4 Hz będzie wyglądać na ciągłą w systemie. Jest to dokładnie to samo, co cyfrowo nagrana muzyka, która zmienia wartość wyjściową w dyskretnych krokach w zakresie 40-50 kHz i jest tak szybka, że ​​nasze uszy jej nie słyszą i brzmi nieprzerwanie jak oryginał.

Co więc moglibyśmy zrobić, gdybyśmy mieli ten magiczny sposób wiedzieć, co system będzie robił w czasie z powodu jednej próbki wyjściowej kontroli? Ponieważ rzeczywista odpowiedź kontrolna jest tylko sekwencją próbek, możemy dodać odpowiedź ze wszystkich próbek i wiedzieć, jaka będzie wynikowa odpowiedź systemu. Innymi słowy, możemy przewidzieć odpowiedź systemu na dowolny przebieg odpowiedzi o dowolnej kontroli.

To fajne, ale samo przewidywanie reakcji systemu nie rozwiązuje problemu. Jednak i tutaj jest chwila aha, możesz to odwrócić i znaleźć wyjście sterujące, które zajęłoby uzyskanie pożądanej odpowiedzi systemu. Zauważ, że to dokładnie rozwiązuje problem sterowania, ale tylko wtedy, gdy możemy w jakiś sposób poznać reakcję systemu na pojedynczą próbkę wyjściową dowolnego sterowania.

Prawdopodobnie myślisz, że to proste, po prostu daj mu duży puls i zobacz, co robi. Tak, działałoby to teoretycznie, ale w praktyce zwykle nie. Wynika to z faktu, że każda próbka kontrolna, nawet duża, jest tak mała w ogólnym schemacie rzeczy, że system prawie nie ma mierzalnej odpowiedzi. I pamiętajcie, każda próbka kontrolna musi być mała w schemacie rzeczy, aby sekwencja próbek kontrolnych była ciągła w systemie. Nie chodzi więc o to, że ten pomysł nie zadziała, ale że w praktyce reakcja systemu jest tak mała, że ​​jest zakopana w szumie pomiarowym. W przykładzie rezystora uderzenie w rezystor o mocy 100 W przez 100 ms nie spowoduje wystarczającej zmiany temperatury do zmierzenia.

Odpowiedź krokowa

Ale wciąż istnieje sposób. Chociaż umieszczenie pojedynczej próbki kontrolnej w systemie dałoby nam odpowiedź bezpośrednio na poszczególne próbki, nadal możemy wnioskować o niej, umieszczając znaną i kontrolowaną sekwencję odpowiedzi kontrolnych w systemie i mierząc jej odpowiedź na te. Zwykle odbywa się to poprzez wprowadzenie kroku kontrolnegow. Tak naprawdę chcemy reakcji na mały moment, ale odpowiedź na pojedynczy krok jest tylko jej integralną częścią. W przykładzie rezystora możemy upewnić się, że wszystko jest stabilne przy 0 W, a następnie nagle włączyć zasilanie i włożyć 10 W do rezystora. To ostatecznie spowoduje przyjemnie mierzalną zmianę temperatury na wyjściu. Pochodna tego z odpowiednim skalowaniem mówi nam odpowiedź na indywidualną próbkę kontrolną, nawet jeśli nie mogliśmy tego bezpośrednio zmierzyć.

Podsumowując, możemy umieścić dane wejściowe sterowania krokowego w nieznanym systemie i zmierzyć wynikowy wynik. To się nazywa odpowiedź krokowa . Następnie bierzemy pochodną czasową tego, co nazywa się odpowiedzią impulsową . Wyjście systemu wynikające z dowolnej próbki wejściowej kontroli jest po prostu odpowiedzią impulsową odpowiednio skalowaną do siły tej próbki kontrolnej. Odpowiedź systemu na całą historię próbek kontrolnych stanowi całą masę odpowiedzi impulsowych zsumowanych, skalowanych i pochylonych w czasie dla każdego wejścia kontrolnego. Ta ostatnia operacja pojawia się bardzo często i ma specjalną nazwę konwolucji .

Kontrola konwolucji

Więc teraz powinieneś być w stanie wyobrazić sobie, że dla dowolnego pożądanego zestawu wyjść systemowych możesz wymyślić sekwencję wejść sterujących, które spowodują to wyjście. Jest jednak gotcha. Jeśli staniesz się zbyt agresywny w stosunku do tego, co chcesz z systemu, wejścia sterujące, aby to osiągnąć, będą wymagały nieosiągnięcia wysokich i niskich wartości. Zasadniczo, im szybciej oczekuje się reakcji systemu, tym większe muszą być wartości kontrolne w obu kierunkach. W przykładzie rezystora możesz matematycznie powiedzieć, że chcesz natychmiast przejść do nowej temperatury, ale osiągnięcie tego wymagałoby nieskończonego sygnału sterującego. Im wolniej pozwolisz na zmianę temperatury na nową wartość, tym niższa maksymalna moc potrzebna do zrzucenia do rezystora. Kolejną zmarszczką jest to, że czasami moc w rezystorze również musi spaść. Możesz'

Jednym ze sposobów rozwiązania tego problemu jest filtrowanie dolnoprzepustowego sygnału wejściowego sterowania przez użytkownika przed użyciem go wewnętrznie. Wyobraź sobie, że użytkownicy robią to, co chcą. Pozwól im szybko zatrzasnąć dane wejściowe. Wewnętrznie filtr dolnoprzepustowy, aby go wygładzić i spowolnić do najszybszego, jaki znasz, biorąc pod uwagę maksymalną i minimalną moc, jaką możesz włożyć do rezystora.

Przykład z prawdziwego świata

Oto częściowy przykład z wykorzystaniem danych ze świata rzeczywistego. To z wbudowanego systemu w prawdziwy produkt, który między innymi musi kontrolować kilkadziesiąt grzejników, aby utrzymać różne zbiorniki chemiczne w określonych temperaturach. W tym przypadku klient zdecydował się na sterowanie PID (z tym czuł się komfortowo), ale sam system nadal istnieje i można go zmierzyć. Oto surowe dane z napędzania jednego z grzejników z wejściem krokowym. Czas iteracji pętli wynosił 500 ms, co jest wyraźnie bardzo krótkim czasem, biorąc pod uwagę, że system nadal wyraźnie osiada na tym wykresie skali po 2 godzinach.

W tym przypadku widać, że grzejnik był napędzany krokiem o wielkości około 0,35 (wartość „Out”). Dłuższe wprowadzenie pełnego kroku 1.0 spowodowałoby zbyt wysoką temperaturę. Początkowe przesunięcie można usunąć, a wynik przeskalować, aby uwzględnić mały krok wejściowy, aby wywnioskować odpowiedź kroku jednostkowego:

Można by pomyśleć, że odejmowanie kolejnych odpowiedzi krokowych w celu uzyskania odpowiedzi impulsowej byłoby odejmowanie. Teoretycznie jest to poprawne, ale w praktyce uzyskuje się głównie szum pomiaru i kwantyzacji, ponieważ system zmienia się tak mało w 500 ms:

Zwróć także uwagę na małą skalę wartości. Odpowiedź impulsowa jest skalowana przez 10 6 .

Wyraźnie duże różnice między poszczególnymi lub nawet kilkoma odczytami są po prostu szumem, więc możemy filtrować dolnoprzepustowy, aby pozbyć się wysokich częstotliwości (szumu losowego), co, mam nadzieję, pozwala nam zobaczyć wolniejszą odpowiedź leżącą u podstaw. Oto jedna próba:

To lepiej i pokazuje, że naprawdę trzeba mieć znaczące dane, ale wciąż za dużo hałasu. Oto bardziej użyteczny wynik uzyskany dzięki bardziej filtrowaniu dolnoprzepustowemu surowych danych impulsowych:

Teraz jest to coś, z czym właściwie możemy pracować. Pozostały szum jest niewielki w porównaniu do ogólnego sygnału, więc nie powinien przeszkadzać. Wydaje się, że sygnał nadal jest tam prawie nienaruszony. Jednym ze sposobów na to jest zauważenie, że szczyt 240 jest tuż po szybkiej kontroli wizualnej i filtrowaniu gałki ocznej z poprzedniego wykresu.

Zatrzymaj się więc i zastanów się, co tak naprawdę oznacza ta odpowiedź impulsowa. Po pierwsze, zwróć uwagę, że jest wyświetlany razy 1M, więc szczyt to tak naprawdę 0,000240 pełnej skali. Oznacza to, że teoretycznie, gdyby układ był napędzany pojedynczym impulsem pełnej skali tylko dla jednego z przedziałów czasowych 500 ms, byłaby to wynikowa temperatura względem niego pozostawiona sama. Wkład z dowolnego okresu 500 ms jest bardzo mały, co ma intuicyjny sens. Dlatego też pomiar odpowiedzi impulsowej bezpośrednio nie działa, ponieważ 0,000240 pełnej skali (około 1 część na 4000) jest poniżej naszego poziomu hałasu.

Teraz możesz łatwo obliczyć odpowiedź systemu dla dowolnego wejściowego sygnału sterującego. Do każdej próbki wyjściowej kontrolnej 500 ms dodaj jedną z tych odpowiedzi impulsowych skalowanych według wielkości tej próbki kontrolnej. Czas 0 udziału odpowiedzi impulsowej w końcowym sygnale wyjściowym systemu jest w momencie jego próbki kontrolnej. Dlatego systemowy sygnał wyjściowy stanowi ciąg tych odpowiedzi impulsowych przesuniętych względem siebie o 500 ms, z których każda jest skalowana do poziomu próbki kontrolnej w tym czasie.

Odpowiedź systemu to splot wejścia sterującego z tą odpowiedzią impulsową, obliczoną dla każdej próbki kontrolnej, co w tym przykładzie wynosi co 500 ms. Aby stworzyć z tego system sterowania, należy wykonać operację wstecz, aby określić wejście sterowania, które skutkuje pożądanym wyjściem systemu.

Ta odpowiedź impulsowa jest nadal bardzo przydatna, nawet jeśli chcesz zrobić klasyczny kontroler PID. Strojenie regulatora PID wymaga wielu eksperymentów. Każda iteracja zajęłaby godzinę lub dwie w prawdziwym systemie, co spowodowałoby bardzo powolne strojenie iteracyjne. Za pomocą odpowiedzi impulsowej możesz symulować reakcję systemu na komputerze w ułamku sekundy. Możesz teraz wypróbować nowe wartości PID tak szybko, jak możesz je zmienić i nie musisz czekać godzinę lub dwie, aż prawdziwy system pokaże ci odpowiedź. Ostateczne wartości należy oczywiście zawsze sprawdzać w rzeczywistym systemie, ale większość pracy można wykonać za pomocą symulacji w ułamku czasu. Właśnie to miałem na myśli: „Możesz użyć tego jako podstawy symulacji do znalezienia parametrów dla starej kontroli PID” w fragmencie, który zacytowałeś w swoim pytaniu.

Olin Lathrop
źródło
4
Nie. zbyt. brudny.
NickHalden,
4
Myślę, że niektóre nagłówki sekcji mogą być tutaj bardzo cenne. Ale niesamowite.
Kortuk
Spóźniam się na przyjęcie, ale wciąż: imponująca odpowiedź, Olin! :)
bitsmack,
7

Filtry FIR i IIR, jak wspomniano Jon, są filtrami cyfrowymi, które bezpośrednio implementują splot odpowiedzi impulsowej, jak sama nazwa wskazuje (Finite \ Infinite Impulse Response).

Konwertowanie odpowiedzi impulsowej na sygnał (w dziedzinie czasu) jest dokładnie tym samym, co zwielokrotnienie funkcji przenoszenia do transformacji sygnału (w dziedzinie częstotliwości); i zasadniczo polega na pomnożeniu odpowiedzi impulsowej filtra na przetłumaczoną wersję sygnału (pomyśl o tym, że odpowiedź filtra jest ustalona w czasie, a sygnał zmienia się w czasie w sposób ciągły).

W filtrach cyfrowych odpowiedź impulsowa jest zredukowana do stałej liczby współczynników, które zwielokrotniają sygnał w pewnym punkcie; punkty są oddzielone opóźnieniami, uzyskując, że 0 zwielokrotnia chwilową wartość sygnału, zaś k zwielokrotnia ten sam sygnał po k jednostek opóźnień.

wprowadź opis zdjęcia tutaj

Rysunek pokazuje odpowiedź impulsową filtra ogólnego (w tym przypadku dolnoprzepustowego), w którym uzyskuje się współczynniki dla filtra FIR 13-tap (liczba opóźnień).

Aby uzyskać niektóre funkcje przesyłania, filtr FIR wymagałby nieskończonej liczby współczynników: w takich przypadkach do uzyskania filtrów IIR (Infinite Impulse Response) wykorzystuje się sprzężenie zwrotne. Te filtry pozwalają uzyskać lepsze funkcje przenoszenia (np. Węższe przejście między pasmem przepustowym a pasmem tłumionym w filtrach), ale mogą generować niestabilność, podczas gdy filtry FIR są stabilne konstrukcyjnie.

Tego rodzaju filtry mogą być zaprojektowane z obwodami analogowymi, ale wymagają dokładnych wzmacniaczy dostrojonych do współczynników i dokładnych obwodów opóźniających, a także mają ogromny wzrost sprzętu przy zwiększaniu liczby zaczepów. Częściej filtry te są implementowane w procesorach DSP, w których operacje wykonywane są na sygnałach cyfrowych w znacznie łatwiejszy sposób.

Tak więc, aby bezpośrednio odpowiedzieć na twoje pytanie : strojenie filtrów cyfrowych odbywa się po prostu ustawiając współczynniki na dyskretną odpowiedź impulsową.

Aktualizacja

OP zapytał o odpowiedź krokową i impulsową; Cóż, jak powiedzieli Olin i Jon, odpowiedź impulsowa jest pochodną odpowiedzi krokowej i oczywiście odpowiedź skokowa jest całką odpowiedzi impulsowej.

Odpowiedź krokowa jest szeroko stosowana w systemach sterowania, ponieważ pokazuje najważniejsze rzeczy na ich temat: jak szybko reagują na szybkie zmiany na wejściu oraz czy są stabilne i są w stanie zminimalizować błąd w czasie.

Ale odpowiedź impulsowa jest bardzo ważna, ponieważ może być wykorzystana do obliczenia, co sygnał wejściowy w pewnym momencie spowoduje na wyjściu, dzięki czemu można uzyskać kompletny sygnał wyjściowy zestawiając wynik odpowiedzi impulsowej pomnożonej do sygnału wejściowego: to to splot i tam, gdzie dzieje się twoja magia. Tak, ponieważ odpowiedź impulsowa jest niczym innym jak anty-transformatą Fouriera funkcji przenoszenia regulatora.

Taka jest siła filtrów cyfrowych: bezpośrednio realizują odpowiedź impulsową i niezależnie od tego, czy chcemy odtworzyć odpowiedź skokową (w przypadku systemu sterowania), czy funkcję przenoszenia (w przypadku filtra), musimy tylko wyprowadzić odpowiedź impulsową i wyodrębnić współczynniki dla FIR.

clabacchio
źródło
Świetna odpowiedź! Aby go ukończyć, czy możesz podać, jak uzyskać odpowiedź impulsową z kroku? (Widzę to w odpowiedzi @ JonWatte.)
tyblu,
4

Konwolucja jest zwykle filtrem FIR, a nie IIR, jak w przypadku biegunów i zer w tradycyjnym filtrze rekurencyjnym. Teraz, jeśli masz odpowiedź krokową, możesz to odwrócić i przez to wstępnie splotć sygnał odpowiedzi. Efektem końcowym jest to, że cały system wykazuje dokładnie krokową odpowiedź. Jednak w ogólnym przypadku wprowadza to opóźnienie grupowe, ponieważ trzeba „wstępnie załadować” odwrotną odpowiedź. W systemie sterowania może to prowadzić do niepożądanych opóźnień.

Jon Watte
źródło
@JohWatte, przykład?
Kortuk
1
Albo to, co zrobiłem, to zastosować filtr dolnoprzepustowy do sygnału sterującego. Idealnie krok w krok daje krok w przód, ale nie jest to fizycznie możliwe, ponieważ wynik musiałby być nieskończony. Filtrujesz wejście sterujące, aby wejście krokowe zamieniało się w coś, co możesz zrealizować, co oznacza, że ​​wartości splotu nigdy nie przekraczają tego, co może wytworzyć napęd wyjściowy. W szczególności wartości ujemne często nie są możliwe. Na przykład, jeśli regulujesz temperaturę za pomocą grzejnika rezystancyjnego, nie możesz wytwarzać ciepła ujemnego (z Peltierem możesz, a wtedy wartości mogą być ujemne).
Olin Lathrop,
Jak odwrócić odpowiedź krokową? Czy „sygnał odpowiedzi” jest pożądanym wyjściem?
tyblu,
W skrócie, jeśli dobrze pamiętam: konwertujesz odpowiedź krokową na odpowiedź impulsową. Następnie odejmujesz odpowiedź impulsową (z wyjętym impulsem) splecioną z sygnałem wejściowym z sygnału wyjściowego. To właśnie ten splot powoduje opóźnienie grupowe (opóźnienie). Pamiętam, jak widziałem dobre referencje kilkanaście lat temu w odniesieniu do modelowania mikrofonu i pomieszczenia w DSP audio.
Jon Watte
2

Odwróciłbym to i powiedziałbym, że jeśli jesteś w stanie zmierzyć reakcję krokową swojego systemu, możesz skrócić wiele teorii i przystąpić do optymalizacji parametrów sterowania. Zamiast mierzyć odpowiedź w otwartej pętli i próbować obliczyć idealne parametry kontrolne (chociaż jest to pomocne w znalezieniu dobrego punktu wyjścia do optymalizacji), można dostroić system, mierząc odpowiedź w zamkniętej pętli.

Główną ideą jest to, że pomiar reakcji krokowej pozwoli ci zobaczyć (z grubsza), czy system sterowania jest niedostatecznie tłumiony, nadmiernie tłumiony lub krytycznie tłumiony (idealny przypadek).

Jeśli zmierzysz odpowiedź krokową i zobaczysz dzwonienie, wiesz, że nie jesteś w pełni tłumiony. Jeśli zmierzysz odpowiedź krokową, a wynik dojdzie powoli do wartości końcowej, wiesz, że nie jesteś w pełni tłumiony. Jeśli możesz dostroić kontroler podczas wielokrotnego pomiaru odpowiedzi krokowej, możesz po prostu dostosować go, aby uzyskać najszybszą odpowiedź bez dzwonienia i wiedzieć, że jesteś bliski reakcji najlepszego przypadku.

Możesz zacząć od użycia terminu P. Jeśli wyniki nie są zadowalające, dodaj warunki I i D. Termin I pomaga pozbyć się długich ogonów w odpowiedzi lub przypadków, w których wynik nigdy nie osiąga pożądanej wartości. Termin D jest pomocny w przyspieszeniu odpowiedzi poprzez „przewidywanie”, gdzie dane wejściowe pójdą dalej. (Sądzę, że chociaż nie jestem ekspertem w dziedzinie kontroli, to że warunek P można optymalizować w wartościach bezwzględnych, ale najlepszy wybór terminów I i D będzie zależał nie tylko od reakcji twojego kontrolowanego systemu, ale także od cechy, takie jak zawartość częstotliwości i amplituda sygnału wejściowego)

Gdy uzyskasz najszybszą reakcję, jaką możesz uzyskać bez dzwonienia, a następnie dostrój ją do nieco nadmiernie tłumionego, aby zmiana temperatury lub cokolwiek innego nie doprowadziło systemu do oscylacji.

The Photon
źródło