Infolinia serwis +48 537 776 655
4.9 Algorytm regulacji on/off z korekcją PID .
Rys.26. Struktura uniwersalnego regulatora PID [4]
Regulator jest urządzeniem porównującym wielkość regulowaną z wartością zadaną tej wielkości, które wytwarza na wyjściu sygnał zależny od ich różnicy. Przy praktycznym wykorzystaniu ogólnej struktury regulacji PID przedstawionej na rysunku 26 należy uwzględnić dodatkowo następujące zagadnienia [4]:
1) wpływ okresu próbkowania Tp na nastawy algorytmu PID;
2) wybór formy algorytmu (pozycyjny, prędkościowy) w zależności od rodzaju mechanizmu wykonawczego;
3) wprowadzenie ograniczenia na sygnał wyjściowy regulatora z jednoczesnym modyfikowaniem działania części całkującej (windup);
4) użycie filtru formującego wartość zadaną bądź modyfikacja struktury regulatora.
Algorytm PID w komputerowych systemach sterowania musi być realizowany przez szczególną postać regulatora (rys. 27). Cechą charakterystyczną takiego regulatora jest praca ze stałym okresem próbkowania Tp. Układ próbkowania sygnału wyjściowego obiektu regulacji na podstawie sygnału y(t) wyznacza ciąg wartości dyskretnych y(k). Algorytm regulacji na podstawie ciągu wartości dyskretnych uchybu regulacji e(k) = yzd(k) - y(k) określa ciąg dyskretnych wartości sygnału sterującego (k) dla k = 0, 1, 2, 3, ... Na wyjściu regulatora cyfrowego znajduje się układ ekstrapolacji, który na podstawie tego ciągu wartości dyskretnych wypracowuje sygnał sterujący obiektem u(t) określony dla każdej chwili czasu t[4].
Rys.27. Struktura uniwersalnego regulatora PID [4]
Dyskretyzacja algorytmu regulacji PID [4]
[4]
polega na wprowadzeniu dyskretnych wartości sygnału uchybu regulatora oraz zastąpieniu całki sumą, a pochodnej - różnicą pierwszego rzędu
(5)
Oznaczając
(6)
i przyjmując
lub
(7)
dla struktury równoległej po przekształceniach
(8)
Rys.28. Schemat blokowy dla struktury równoległej dyskretnego algorytmu PID [4]
Rys.29. Schemat blokowy dla struktury szeregowej dyskretnego algorytmu PID [4]
Struktura równoległa (rys. 28) realizuje wyłącznie tzw. postać pozycyjną algorytmu PID przydatną do zastosowania tam, gdzie mechanizm wykonawczy sterowany z regulatora ma charakter wzmacniacza, którego sygnał wyjściowy jest proporcjonalny do sygnału wyjściowego regulatora u(k). Struktura szeregowa (rys. 29) może być natomiast stosowana w dwóch postaciach - pozycyjnej i prędkościowej, zależnie od tego czy sygnałem wyjściowym procedury regulacyjnej jest sygnał u(k) czy jedynie przyrost tego sygnału tzn.
u(k) [4].
Przy tworzeniu kodu programu odpowiedzialnego za regulację PID, musiałem rozwiązać problem całkowania i różniczkowania numerycznego. Całkowanie można wykonać na kilka sposobów. Bardzo dobrym rozwiązaniem okazało się zastosowanie metody trapezów, odzwierciedlającej z wystarczającą dokładnością obliczane całki (rys. 30).
<Rys.30. Całkowanie numeryczne: metoda trapezów [19]
Metoda całkowania przedstawiona na rysunku 30 polega na aproksymacji pola powierzchni pod funkcją za pomocą sumy pól powierzchni trapezów o wysokości równej Tp. Wartości funkcji f(x0), f(x1),… f(xk) tworzące podstawy trapezów są wartościami uchybu e(t) mierzonego przez regulator w odstępach czasu Tp. Sposób obliczania całki metodą trapezów zawarty jest na poniższym listingu:
…
I = ki * ( Tp * 5e-3 ) * ( e + x.eminus1 ) / 2 + x.Iminus1;
…
gdzie:
ki – wzmocnienie członu całkującego;
Tp – okres próbkowania;
e – aktualna wartość uchybu regulacji;
x.eminus1 – wartość uchybu z poprzedniego kroku;
x.Iminus1 – wartość całki z poprzedniego kroku
Różniczkowanie funkcji uchybu okazało się mniej skomplikowane od całkowania i polegało jedynie na wyznaczaniu różnicy uchybów: aktualnego oraz tego z poprzedniego kroku, zasada jest przedstawiona w poniższym fragmencie kodu programu:
…
de= kd * ( e - x.eminus1 ) / ( Tp * 5e-3 ) ;
…
gdzie:
kd – wzmocnienie członu różniczkującego;
Tp – okres próbkowania;
e – aktualna wartość uchybu regulacji;
x.eminus1 – wartość uchybu z poprzedniego kroku;
W dobrych regulatorach PID ich działanie powinno być modyfikowane, gdy sygnał wyjściowy regulatora osiąga poziom ograniczenia . Powyższe struktury nie nadają się w takiej postaci do bezpośredniego zastosowania w praktyce, gdyż przy wystąpieniu zewnętrznego ograniczenia sygnału wyjściowego regulatora u(k) nie chronią przed niepożądanym zjawiskiem nadmiernego wzrostu wartości sygnałów wewnętrznych związanych z całkowaniem (ang. windup efect), przyczyniając się do dłuższego niż potrzeba pozostawania sygnału sterującego na ograniczeniu i wywołując przez to niepożądane przeregulowanie w przebiegu sygnału wyjściowego obiektu, a także wydłużenie czasu regulacji [4].
W literaturze spotyka się rożne metody przeciwdziałania wpływowi działania członu całkującego regulatora w chwili, gdy układ znajduje się w stanie nasycenia. Większość z nich działa tylko w przypadku ograniczenia amplitudy sygnału wyjściowego z regulatora, gdyż to ograniczenie występuje prawie zawsze [18]. Jednym ze sposobów ograniczenia szkodliwych skutków tego zjawiska jest zatrzymywanie działania części całkującej regulatora PID w chwili, gdy jego sygnał wyjściowy osiąga ograniczenie [4] (rys. 31).
Rys.31. Regulator z wyłączaniem działania całkującego [18]
Inna metoda polega na wyłączeniu działania całkującego regulatora w chwili, gdy sygnał części całkującej regulatora dochodzi do ograniczenia. Rysunek 32 przedstawia ideę tego rozwiązania.
Rys.32. Regulator z wyłączaniem działania całkującego sygnałem członu całkującego [18]
Kolejna metoda polega na uruchomieniu silnego ujemnego sprzężenia zwrotnego w torze działania całkującego w chwili, gdy sygnał wyjściowy regulatora dojdzie do ograniczenia. Schemat takiego układu przedstawiony jest na rysunku 33.
Rys. 33. Regulator z oddziaływaniem na udział składowej całkowej [18]
Szkodliwy wpływ zjawiska windup można zmniejszyć również w wypadku, gdy dojście sygnału wyjściowego z regulatora do ograniczenia powoduje powstanie silnego ujemnego sprzężenia zwrotnego oddziaływującego na wszystkie składowe regulatora. Schemat układu realizującego taką strukturę przedstawia rysunek 34.
Rys. 34. Regulator z oddziaływaniem na udział wszystkich składowych [18]
Do budowy cyfrowego regulatora, wykorzystałem sposób eliminacji efektu „windup”, którego idea została przedstawiona na rysunku 31. Programowy odpowiednik działania tego schematu zamieściłem w poniższym kodzie, zawierającym cały algorytm regulatora PID.
PID_state_grzanie regulator_PID_grzanie(void)
{
xdata float e; //deklaracja uchybu
PID_state_grzanie x; //wskaźnik do struktury z danymi PID
x.mes_x=tmp; //próbkowana wartość mierzona
x.x0=temp_nast; //wartość zadana
e=x.x0-x.mes_x; //uchyb
if(I_t
{
I_t=(ki*(Tp*5e-3)*(e+x.eminus1))/2+x.Iminus1;
}
else
{
I_t=x.Iminus1;
}
de_t=kd*(e-x.eminus1)/(Tp*5e-3); //pochodna
x.eminus1=e; //zapis uchybu
y_t=kp*(e+de_t+I_t); //wartość wyjściowa regulatora
if((y_t>y_max_t)||(y_t
{
if(y_t>y_max_t)
{
y_t=y_max_t;
}
else if(y_t
{
y_t=y_min_t;
}
}
else
{
x.Iminus1=I_t;
}
}
Stworzony algorytm zapewnia ograniczenia zmian wielkości sygnału na wyjściu regulatora, w pewnych określonych przez program zakresach od y_min do y_max np. od 0 do 100 %. Załączanie przekaźników jest sterowane poziomem sygnału regulatora i następuje gdy wartość na wyjściu jest mniejsza od ustawionej granicy u1(k), wyłączenie następuje po przekroczeniu ustawionej drugiej granicy sygnału wyjściowego u2(k), przy czym u1(k)< u2(k). Rozwiązanie programowe przedstawiam poniżej:
void reg_temp(void)
{
if(y_t>z_start_t)
{
GRZANIE=1;
}
else
{
if(y_t
{
GRZANIE=0;
}
}
}