Skocz do zawartości

Jak zaimplementować regulator PID dla silnika z enkoderem?


Pomocna odpowiedź

(edytowany)

Poczytałem trochę teorii i mi się nieco rozjaśniło.  Błędnie zinterpretowałem współczynnik przy całce (to nie jest czas całkowania). Pozostaje jednak pytanie: jaki praktyczny sens ma całkowanie od początku działania regulatora? Wcześniej czy później nastąpi przekroczenie zakresu czyli wystąpi "nasycenie". Czy nie lepiej jest ograniczyć całkowanie w czasie? 

Edytowano przez RomekAtomek
  • 2 tygodnie później...

@RomekAtomek czas całkowania zawarty jest we wzmocnieniu członu całkującego k_i, tak samo okres próbkowania. To jest typowe przekształcenie przy implementacji PID w kodzie. A te limity są właśnie, żeby nie było overflowa. Ma to nawet swoją nazwę w teorii: anti-windup

  • Lubię! 1
  • 1 rok później...
(edytowany)

Wiem, że temat jest już dosyć stary, ale może ktoś z Was będzie w stanie mi pomóc 🙂 Otóż przeanalizowałem cały artykuł, programy itd. i nie rozumiem jednej rzeczy - mianowicie co macie na myśli mówiąc "tick enkodera w okresie próbkowania"? Skąd wzięła się wartość okresu próbkowania 5 ms i jak uzyskać liczbę tych ticków (w artykule 11/12 dla wypełnienia równego 50% - z pliku "output001.txt").

Z góry dzięki za cierpliwe i dokładne wyjaśnienie

Edytowano przez gapcio15
  • 8 miesiące później...
(edytowany)
Dnia 12.04.2020 o 00:53, RomekAtomek napisał:

W tekście możemy przeczytać: "e_sum to suma wszystkich wartości uchybu od początku sterowania". Pytanie do autora: dlaczego przyjęto takie rozwiązanie?

Bo tak się przyjmuje, błędy narastające pid ma skompensować, kompensuje też w ten sposób stałe błędy które się nakładają na sterowanie.

Chyba stała Ki ustala ile tego 'błedu' ma byc w końcowym wyniku pid-u.

Dnia 12.04.2020 o 00:53, RomekAtomek napisał:

Funkcja pid_calculate zawiera warunki:



if (pid_params.err_sum > ERR_SUM_MAX) {
        pid_params.err_sum = ERR_SUM_MAX;
    } else if (pid_params.err_sum < -ERR_SUM_MAX) {
        pid_params.err_sum = -ERR_SUM_MAX;
    }

przy niekończącym się sumowaniu uchybu może nastąpić "przekręcenie" wartości ale zastosowanie tych warunków może wprowadzać dodatkowe błędy w sterowaniu. 

Zawsze się zabezpiecza wyniki pośrednie żeby nie wyszły poza zakres i tak tutaj tez jest, błedy teretycznie przy dobrze dobranych współczynnikach nie powinny wystąpić, dlatego właśnie pid-a się stroi, czyli dobiera kp, Ki, kd.

Edytowano przez Janusz_k
pomyłka

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...