Projekt 3

Strona: SEZAM - System Edukacyjnych Zasobów Akademickich i Multimedialnych
Kurs: Integracja Technik Sztucznej Inteligencji
Książka: Projekt 3
Wydrukowane przez użytkownika: Gość
Data: czwartek, 15 stycznia 2026, 16:30

Opis

Rozmyte przełączanie nastaw regulatora PID

1. Zadanie

Celem zadania jest uruchomienie regulatora PID, którego parametry będą przełączane płynnie, np. przy zastosowaniu modelu rozmytego typu TSK, w zależności od aktualnego punktu pracy.

2. Realizacja

Należy wykonać następujące kroki:

  1. Dobrać nastawy regulatora PID dla różnych punktów pracy: wartości domyślnej oraz dla skrajnych wartości (małe i duże) SP.
  2. Zaprojektować mechanizm płynnego przełączania nastaw przy wykorzystaniu logiki rozmytej.
  3. Ocenić jakość działania układu regulacji we wszystkich rozważanych punktach pracy. Porównać otrzymane rezultaty z tymi z kroku 1, skomentować wyniki.

3. Założenia

  • Jako domyślny punkt pracy przyjąć \( PV_{PP}=0.2 [m] \).

4. Uwagi

  • Dla domyślnego punktu pracy można zastosować nastawy z projektu 1. Można także wykorzystać przygotowane rozwiązanie z projektu 2 do doboru nastaw dla skrajnych punktów pracy.
  • Do płynnego przełączania nastaw można zastosować.
  • Do aplikacji wnioskowania rozmytego można zastosować rozwiązania przygotowane w ramach projektu 2, oczywiście po stosownych modyfikacjach.
  • W zależności od sposobu realizacji zadania, wygodne może być zastosowanie symulacji wsadowej lub krokowej.

5. Przykłady

W przykładzie wykorzystano proste przełączanie progowe (nie rozmyte – płynne) nastawy \( k_p \). Założono, że dla skrajnych wartości SP (<0.1 i >0.3) wartość \( k_p=5 \), a dla pozostałego zakresu \( k_p=10 \). Symulację uruchomiono w trybie krokowym. W każdym kroku, w zależności od aktualnej wartości SP ustawiana jest stosowna wartość \( k_p \). Kod zapisano w notebooku Jupyter-a project_3.ipynb.

Listing: Ustawienie wartości wzmocnienia w trybie pracy krokowej

for i in range(int(tend / tp) + 1):
    ...
    # Ustawienie wartości kp
    if sp < 0.1 or sp > 0.3:
        k = 5
    else:
        k = 10
    system.in_var_val('kp', k)
    kp.append(k)
    # Krok symulacji
    rval = system.simulation_step(True)
    ...
    

Na rysunku poniżej pokazano podsumowanie działania tak zaprojektowanego układu regulacji. Na wykresie linią żółtą symbolicznie oznaczono zakres zmienności \( k_p \). Na dodatkowym przebiegu widać jak zmienia się wartość wzmocnienia \( k_p \). Jak widać, układ działa, chociaż jakość regulacji pozostawia sporo do życzenia.

Przykład działania regulatora PID dla zmiennej wartości wzmocnienia
Przykład działania regulatora PID dla zmiennej wartości wzmocnienia
Przykład działania regulatora PID dla zmiennej wartości wzmocnienia \( k_p \)