Logika rozmyta
| TechnikaLogika rozmyta stanowi rozszerzenie tradycyjnej logiki binarnej i pozwala na opisywanie zjawisk fizycznych w sposób bardziej naturalny dla człowieka, a zarazem zrozumiały dla układów sterowania maszynami. Jej użycie obejmuje coraz częściej również automatykę przemysłową, gdzie służyć ona może do kontroli złożonych procesów i sterowania różnymi układami. W artykule przedstawiamy podstawy teoretyczne logiki rozmytej i możliwości wykorzystania zamiast tradycyjnej logiki binarnej, posługując się przykładem programowania sterowników PLC.
Logika rozmyta cz.1
Logika rozmyta w sterowaniu i regulacji
Opis różnych zjawisk w życiu codziennym zazwyczaj nie opiera się na ścisłym określaniu ich parametrów. Rzadko spotykane są wyrażenia typu: "człowiek ma 1,81 metra wzrostu" albo "dzisiaj jest 28,3°C". W języku codziennym używane są raczej określenia typu "ten człowiek jest wysoki" i "dziś jest ciepło". Taki sposób postrzegania świata pozwala ludziom myśleć w sposób bardziej abstrakcyjny i ciągle decyduje o przewadze człowieka nad maszynami. Jednak wraz z rozwojem logiki rozmytej (fuzzy logic), o której pierwsza wzmianka pojawiła się w 1965 roku, sytuacja szybko zaczęła ulegać zmianie. W artykule opisano ideę wnioskowania w układach bazujących na logice rozmytej oraz zasadnicze różnice w stosunku do systemów działających w oparciu o logikę binarną.
PRZYKŁAD PROGRAMOWANIA
Istnieją różne metody programowania sterowników PLC. Jednym ze sposobów znanych każdemu automatykowi jest wykorzystanie języka drabinkowego. Stał on się niezwykle popularny głównie ze względu na intuicyjne podejście do programowania, gdyż umożliwia zapis zależności logicznych w sposób podobny do rzeczywistych schematów elektrycznych. Poszczególne komponenty są umieszczane na szczeblach pomiędzy dwoma liniami symbolizującymi szyny zasilające (patrz rys. 1), przy czym każdy szczebel definiuje funkcję logiczną określającą stan wyjścia, czyli ostatniego symbolu po prawej stronie w zależności od stanu wejść, a więc elementów z lewej strony.
W ten sposób realizowana jest instrukcja typu if...then, gdzie argumentem jest wartość logicznego wyrażenia reprezentowanego przez odpowiednie połączenie elementów po prawej stronie szczebla. Symbol po lewej reprezentuje działanie wykonywane w zależności od wartości logicznej tego wyrażenia.
Zasadnicze elementy graficzne występujące w języku drabinkowym to styki rozwarte i zwarte, czyli tzw. styki normalnie otwarte lub normalnie zamknięte oraz cewka normalna i cewka negująca (patrz legenda do rys. 1). Podstawowe instrukcje języka drabinkowego to właśnie instrukcje stykowe, które umożliwiają realizację funkcji logicznych. Argumentami tych funkcji są wartości zmiennych wejściowych, a stan styków przekazywany jest do elementów dołączonych po prawej stronie szczebla. Zapewnia to komunikację między wejściami i wyjściami sterownika. Dwie najczęściej realizowanie funkcje logiczne to OR i AND. W pierwszym przypadku styki łączone są równolegle, a w drugim – szeregowo.
MODELOWANIE SYSTEMU Z WYKORZYSTANIEM LOGIKI BINARNEJ
Wykorzystanie logiki binarnej omówić można na przykładzie układu z elementem grzejnym. Na rys. 1 przedstawiony został schemat drabinkowy, który można wykorzystać do zaprogramowania sterownika grzałki. W tym przypadku możliwe są trzy rodzaje sterowania elementu wykonawczego – zasilanie z pełną mocą, wyłączenie go lub zasilanie z niepełną mocą. Każdemu z tych stanów przypisano zmienną określającą efekt, jaki wywoła pojawienie się sygnału na tym wyjściu.
Stąd symbolom po prawej stronie zostały przypisane zmienne o nazwach: grzałka. zimna, grzałka.ciepła i grzałka.gorąca. Logika binarna umożliwia zapis funkcji logicznych w sposób pozwalający na sterowanie elementem grzejnym w zależności od różnych danych wejściowych. Stan wyjść jest w związku z tym określany na podstawie informacji z czujników, w tym wypadku czujnika temperatury (zmienna temp) i ciśnienia (zmienna ciśn).
Należy zaznaczyć, że pierwszy szczebel odpowiada funkcji logicznej OR. Zmienna o nazwie grzałka.zimna przyjmuje logiczną wartość 1, co oznacza odłączenie zasilania od grzałki w przypadku gdy albo ciśnienie jest wysokie, albo temperatura jest wysoka. Również w przypadku, gdy oba parametry mają dużą wartość, grzałka zostanie wyłączona. W analogiczny sposób można prześledzić realizację funkcji logicznych w dwóch pozostałych szczeblach. W tym przypadku szeregowe połączenie styków realizuje funkcję logiczną AND.
DWA TYPY LOGIKI
Aby zrealizować powyżej opisany system sterowania, należy najpierw odpowiednio sklasyfikować dane wejściowe pochodzące z czujników. Oznacza to konieczność ustalenia progu wartości temperatury, którego przekroczenie będzie oznaczało, że temperatura jest niska lub wysoka. Analogicznie wartość progową należy ustalić dla ciśnienia. W przypadku logiki rozmytej nie istnieje ostra granica podziału między poszczególnymi stanami, a wartość progowa jest zazwyczaj przedstawiana w postaci specjalnej funkcji. W pewnych sytuacjach pozwala to rozwiązać zagadnienia, które są problematyczne do zdefiniowania i zamodelowania w języku drabinkowym opartym o logikę binarną.
Zasadnicze różnice między logiką binarną i rozmytą można wyjaśnić na podstawie pomiarów temperatury, np. w pewnym procesie przemysłowym. Załóżmy, że wyznaczono ścisłe granice, przyjmując temperaturę powyżej 50°C za wysoką, temperaturę od 10°C do 50°C za średnią, a poniżej 10°C za niską. Taki podział w łatwy sposób może zostać zaimplementowany przy użyciu logiki binarnej – np. temperatura 40°C według tego kryterium uznana zostanie za średnią.
Tymczasem logika rozmyta pozwala na modelowanie stanu rzeczywistego bez wprowadzania tak ścisłego podziału. W tym przypadku temperatura 40°C zostałaby scharakteryzowana jako "bardziej wysoka" niż średnia. Granice przynależności tracą wyrazistość, a dana wartość w większym lub w mniejszym stopniu jest zaliczana do określonego przedziału. Temperatura 40°C może zostać uznana zarówno za średnią, jak i wysoką, w większym stopniu zbliżając się do przedziału drugiego. Jest to podejście bliższe rozumowaniu człowieka i często lepiej odzwierciedla rzeczywiste zjawiska.
FUNKCJA PRZYNALEŻNOŚCI I FUZYFIKACJA
Logika rozmyta bazuje na pojęciu zbiorów rozmytych, czyli takich, które nie mają ściśle zdefiniowanych granic. O tym, w jakim stopniu dany element można zaliczyć do konkretnego zbioru, decyduje tzw. funkcja przynależności (membership function) przypisująca poszczególnym argumentom wartość z zakresu od 0 do 1. Przetwarzanie sygnałów z wykorzystaniem logiki rozmytej podzielić można na kilka zasadniczych etapów, wśród których najważniejsze to fuzyfikacja i defuzyfikacja.
Proces fuzyfikacji, czyli etap przypisywania danych wejściowych do określonych zbiorów rozmytych, przedstawiono na rys. 2. Dane z czujników analizowane są na podstawie zdefiniowanych wcześniej funkcji przynależności. Na rysunku przedstawione są trzy funkcje o nazwach: niskie, średnie i wysokie. Argumentami tych funkcji są wartości temperatury i ciśnienia, przy czym, aby zachować czytelność rysunku, na osi odciętej naniesiono jedynie wartości temperatury. W przykładzie założono, że zmierzona została temperatura o wartości 170°C. Odpowiada to wartości 0,8 na wykresie funkcji przynależności do temperatur wysokich i wartości 0,2 dla funkcji przynależności do temperatur średnich.
Innymi słowy, w przyjętym podziale zmierzoną temperaturę uznaje się za "bardziej wysoką" niż średnią. Z kolei dane pomiarowe z czujnika ciśnienia pozwalają uznać aktualną wartość ciśnienia jako "bardziej średnią", a w mniejszym stopniu "niską". Wynika to stąd, że zmierzone ciśnienie odpowiada wartości 0,9 na wykresie funkcji przynależności do ciśnienia średniego i wartości 0,1 na wykresie funkcji przynależności do ciśnienia niskiego. Wartości odczytane z funkcji przynależności na etapie fuzyfikacji zostały umieszczone na rys. 3 przedstawiającym schemat układu sterowania elementem grzejnym w oparciu o zasady logiki rozmytej.
BAZA REGUŁ
Kolejnym elementem systemu jest blok odpowiedzialny za przetwarzanie danych uzyskanych w procesie fuzyfikacji. Na tym etapie, określanym często jako wnioskowanie, na podstawie przyjętego zestawu kryteriów ustala się wypadkową wartość wyjściową dla każdego szczebla w schemacie sterowania. Wynika stąd, że podstawową sprawą w tworzeniu systemu sterowania w oparciu o logikę rozmytą, jest stworzenie bazy zasad. Powstaje ona zazwyczaj na podstawie doświadczeń związanych z konkretnym zjawiskiem, a praca całego układu sterowania zależy od tego, w jakim stopniu jego twórcy odwzorują rzeczywiste zależności między poszczególnymi parametrami.
Zbiór kryteriów stanowią zazwyczaj instrukcje warunkowe, dla których tablice prawdy są wyznaczane na bazie spostrzeżeń ekspertów zajmujących się danym zjawiskiem. W analizowanym przykładzie wykorzystano, analogiczne jak w logice binarnej, funkcje OR i AND. Tablice prawdy tych funkcji zastosowane w tym przypadku są przedstawione na rys. 4. Wynika z nich, że w przypadku funkcji AND wartości wyjściowej odpowiada najmniejsza wartość zmiennej wejściowej, a w funkcji OR zmienna wyjściowa przyjmuje wartość największej zmiennej wejściowej.
DEFUZYFIKACJA
Wnioskując intuicyjnie na podstawie schematu z rys. 3, można stwierdzić, że grzejnik powinien zostać wyłączony, gdyż zmienna grzałka.zimna ma największą wartość. Aby jednak formalnie wyznaczyć wartość wypadkowej zmiennej wyjściowej, przeprowadza się proces zwany defuzyfikacją. Jednym ze sposobów stosowanych na tym etapie jest metoda średniej ważonej. W tym celu niezbędne jest przypisanie wag poszczególnym składnikom równania.
Jest to jedno z możliwych rozwiązań i istnieje jeszcze wiele innych metod wyznaczania wyjściowej wartości wypadkowej. Dlatego, nie wchodząc w szczegóły przyjętych wzorów, załóżmy, że na podstawie wartości zmiennych wyjściowych z rys. 4, czyli: grzałka.zimna = 0,8, grzałka.ciepła = 0,2 i grzałka.gorąca = 0, wyznaczono wypadkową wartość wyjściową równą 0,1. Odpowiada to mocy dostarczonej do grzałki o wartości 10% mocy maksymalnej.
Załóżmy, że następnie wartości danych z czujników pomiarowych zmienią się w sposób, który będzie skutkował następującymi wartościami zmiennych wyjściowych: grzałka.zimna = 0,3, grzałka.ciepła = 0,7 i grzałka.gorąca = 0. Wypadkowa wartość wyjściowa wyznaczona w analogiczny sposób dla nowych wartości tych zmiennych wyniesie 0,35. Oznacza to zwiększenie mocy dostarczonej do grzałki do 35% wartości mocy maksymalnej.
PŁYNNE STEROWANIE I REGULACJA
W przypadku sterowania lub regulacji w oparciu o logikę binarną, w zależności od wartości zmierzonych parametrów możliwe były jedynie trzy sposoby kontroli urządzenia wykonawczego – doprowadzenie pełnej mocy do elementu grzejnego, wyłączenie go lub doprowadzenie mocy niepełnej. W przypadku wykorzystania logiki rozmytej uzyskać można płynność sterowania procesem. Wynika to z faktu, że wypadkowa wartość wyjściowa wyznaczona dla każdego szczebla wpływa na sposób i stopień regulacji.
Użycie regulatora bazującego na logice rozmytej jest szczególnie zalecane w układach, gdzie na stan wyjścia wpływają dwa lub trzy zasadniczo różne parametry wejściowe, dodatkowo wzajemnie na siebie oddziałujące. Przykładem takiej aplikacji może być układ regulacji, w skład którego wchodzi zbiornik z wodą, grzałka, czujnik temperatury, czujnik ciśnienia i przepływomierz (rys. 5). Ostatni element układu mierzy prędkość gorącej wody wypływającej ze zbiornika.
Poziom cieczy jest stały dzięki uzupełnianiu zawartości zbiornika zimną wodą. Jest to przykład podobny do analizowanego wcześniej, z tym że dodatkową zmienną jest w tym wypadku prędkość przepływu wody. Parametr ten nie wpływa bezpośrednio na temperaturę wody, ale gdy woda odpływa ze zbiornika z dużą prędkością, element grzejny powinien jednocześnie pracować z większą mocą, ponieważ w tym samym czasie duża ilość zimnej wody dopływa do zbiornika i go ochładza.
DODATKOWE REGUŁY
W przykładzie przedstawionym na wstępie artykułu obowiązywały trzy reguły, które zaimplementowane były w postaci funkcji logicznych. Z rys. 1 odczytać można, że wysokie ciśnienie lub wysoka temperatura są równoznaczne z wyłączeniem grzałki, średnie wartości obu parametrów oznacza ją średnią wartość mocy doprowadzonej do grzałki, a niskie ciśnienie i niska temperatura wymuszają dostarczenie mocy maksymalnej.
W omówionym w poprzednim rozdziale układzie z przepływomierzem należy dodać czwarty warunek w następującej postaci: "jeżeli prędkość przepływu jest duża i ciśnienie niskie, wskazane jest maksymalne zwiększenie mocy doprowadzonej do grzałki". Wynika stąd, że element grzejny sterowany jest na podstawie trzech parametrów wejściowych i czterech warunków. Oczywiście jeżeli odpływ wody zostanie zatrzymany, czwarty warunek nie będzie wpływał na wypadkową wartość wyjściową.
APLIKACJE TYPOWE I NIETYPOWE
Wykorzystanie logiki rozmytej obejmuje coraz więcej układów sterowania i regulacji w przemyśle, w tym nieraz nietypowe aplikacje. Przykładem tych ostatnich jest sterowanie w produkcji napojów, które wymagają fermentacji – np. sake. Proces fermentacji, w wyniku którego powstaje ten alkohol, wymaga ścisłej kontroli różnych parametrów, głównie temperatury i wilgotności. Tradycyjnie sake wytwarzana jest na podstawie ścisłych wskazówek przekazywanych z pokolenia na pokolenie, a kluczowe decyzje dla przebiegu procesu fermentacji podejmują zazwyczaj osoby specjalizujące się w tej dziedzinie. Inżynierom udało się jednak stworzyć system działający w oparciu o logikę rozmytą, który regulował proces fermentacji w sposób umożliwiający produkcję alkoholu o jakości porównywalnej do sake wytwarzanej w sposób tradycyjny.
Innym często opisywanym przykładem zastosowania logiki rozmytej jest ABS. System ten został wprowadzony do użytku około 1970 roku, a celem było uniezależnienie sposobu hamowania pojazdu od warunków zewnętrznych i umiejętności kierowcy. Początkowo trudności techniczne i wysoki koszt ograniczały szerokie wdrażanie tego systemu, z czasem sytuacja uległa zmianie. Najważniejsze komponenty układu ABS to jednostka sterująca, czujniki prędkości kół oraz modulator siły hamowania. Sterowanie procesem hamowania jest bardzo złożone i wymaga jednoczesnej analizy wielu parametrów, dlatego do jego realizacji coraz częściej wykorzystuje się logikę rozmytą (patrz ramka).
Wracając do systemu przedstawionego w poprzednim rozdziale, stwierdzić można, że opisywany układ regulacyjny nie jest łatwy w implementacji. Przykład analizowany w pierwszej części artykułu można oczywiście w prosty sposób zrealizować bez uciekania się do metody opartej o elementy logiki rozmytej. Włączanie jednak kolejnych parametrów komplikuje standardowe systemy sterowania i regulacji. W wielu przypadkach złożony układ nie będzie pracował równie wydajnie, jak stosunkowo prosty układ regulacji zbudowany w oparciu o zasady logiki rozmytej. Dotyczy to zwłaszcza takich systemów, gdzie wiele zmiennych ma wpływ na stan wyjścia, a jednocześnie wielkości te oddziałują na siebie wzajemnie. W tych przypadkach użycie logiki rozmytej jest uzasadnione, a czasami nawet konieczne.
Logika rozmyta cz.2
Projekt systemu sterowania procesem mycia z wykorzystaniem RSLogix5000 FuzzyDesigner
Zadaniem linii technologicznej przedstawionej na rys. 1 jest czyszczenie jaj kurzych przed ich kontrolą i pakowaniem. Proces ten jest typową sytuacją, gdzie można zastosować sterowanie w oparciu o logikę rozmytą. Pozwala to na utrzymanie określonej wydajności procesu przy zachowaniu czystości jaj na odpowiednim poziomie.
Dotychczas linie tego typu nadzorowane były zazwyczaj przez operatora, a jego interwencja wymagana była w różnych sytuacjach – np. gdy czujniki zarejestrują duże zabrudzenie powierzchni jaj, a strumień wody jest zbyt słaby. Należało wówczas zwiększać jej przepływ, ustawiając odpowiednio zawór i, ewentualnie, zmienić szybkość przesuwu taśmociągu. Zależności tego rodzaju można w prosty sposób zamodelować, wykorzystując logikę rozmytą.
ETAPY PROCESU
Jaja przesyłane są taśmociągiem, pierwszym etapem procesu jest ich mycie gorącą wodą przy użyciu szczotek. Kolejny etap to kontrola czystości za pomocą odpowiednio skalibrowanego systemu wizyjnego. W dalszej kolejności jaja są osuszane, a następnie spryskiwane olejem mineralnym. Ten etap jest niezbędny, ponieważ w czasie mycia pozbawiane są one naturalnej powłoki ochronnej, która zabezpiecza je przed wnikaniem bakterii. Jeżeli jednak jaja są zbyt brudne, wracają do ponownego mycia bez spryskania olejem. W przeciwnym wypadku, po spryskaniu olejem, przechodzą kolejne etapy takie jak: detekcja pęknięć skorupki, ważenie, paczkowanie.
SYSTEM STEROWANIA
Wyróżnić można cztery zmienne, które pojawiają się na wejściu sterownika całego procesu:
- stopień zanieczyszczenia jaj (egg_dirt),
- prędkość taśmociągu (conveyor_speed),
- natężenie przepływu gorącej wody (water_flow_rate),
- natężenie przepływu oleju mineralnego (oil_flow_rate).
Na rys. 2 przedstawione zostały przykładowe funkcje przynależności dwóch zmiennych wejściowych. Sygnały sterujące na wyjściu sterownika są z kolei następujące:
- zmiana prędkości taśmociągu (conveyor_speed_dif),
- zmiana nastaw zaworu regulującego dopływ gorącej wody (water_valve_position_dif),
- zmiana nastaw zaworu regulującego dopływ oleju mineralnego (oil_vale_position_dif).
TWORZENIE BAZY REGUŁ
Dla powyższych sygnałów stworzona została następująca baza reguł (po lewej stronie od strzałki znajduje się warunek, po prawej wynik). Dla sterowania prędkością taśmociągu i natężeniem przepływu gorącej wody są to:
- stopień zabrudzenia jaj jest duży i strumień wody jest słaby › zwiększ strumień wody, otwierając nieco zawór i nie zmieniaj prędkości taśmy,
- stopień zabrudzenia jaj jest duży, strumień wody jest silny i taśma przesuwa się z dużą prędkością › nie zmieniaj natężenia strumienia wody i zmniejsz prędkość taśmociągu,
- stopień zabrudzenia jaj jest niski i strumień wody jest silny › zmniejsz natężenie strumienia wody, zamykając nieco zawór,
- stopień zabrudzenia jaj jest niski i strumień wody jest słaby › zwiększ prędkość taśmociągu (w ten sposób można zwiększyć wydajność linii),
- stopień zabrudzenia jaj jest dopuszczalny › nie zmieniaj niczego.
Z kolej dla sterowania natężeniem przepływu oleju mineralnego można stworzyć następującą bazę reguł:
- stopień zabrudzenia jaj jest bardzo wysoki › zamknij zawór doprowadzający olej mineralny (pozwoli to zaoszczędzić olej, a bardzo zabrudzone jaja zostaną przeniesione taśmą powrotną do ponownego umycia),
- prędkość taśmociągu jest duża i strumień oleju jest słaby › zwiększ natężenie przepływu oleju, otwierając nieco zawór,
- prędkość taśmociągu jest mała, strumień wody jest silny, strumień oleju jest słaby › zwiększ natężenie przepływu oleju, otwierając nieco zawór,
- prędkość taśmociągu jest mała, strumień wody jest słaby i strumień oleju jest silny › zmniejsz natężenie przepływu oleju, zamykając nieco zawór,
- prędkość taśmociągu jest mała, strumień wody jest słaby i strumień oleju jest słaby › nie zmieniaj natężenia przepływu oleju,
- prędkość taśmociągu jest duża i strumień oleju jest silny › nie zmieniaj natężenia przepływu oleju,
- strumień wody jest silny i strumień oleju jest silny › nie zmieniaj natężenia przepływu oleju.
WYZNACZANIE WARTOŚCI ZMIENNEJ
Na rys. 3 przedstawiony został szczegółowy schemat wyznaczania wartości zmiennej water_valve_position_dif. Dla uproszczenie przyjęto zestaw pięciu reguł w następującej postaci:
- stopień zabrudzenia jaj jest niski i strumień wody jest słaby › nie zmieniaj pozycji zaworu wody,
- stopień zabrudzenia jaj jest niski i strumień wody jest silny › zakręć zawór,
- stopień zabrudzenia jaj jest dopuszczalny › nie zmieniaj pozycji zaworu,
- stopień zabrudzenia jaj jest wysoki i strumień wody jest słaby › zwiększ natężenie przepływu wody,
- stopień zabrudzenia jaj jest wysoki i strumień wody jest silny › nie zmieniaj pozycji zaworu wody.
W przykładzie założono następujące wartości zmiennych wejściowych: egg_dirt = 0,12 i water_flow_rate = 0,4. Na rys. 3 można prześledzić proces wyznaczania wartości zmiennej water_valve_position_dif w oparciu o przedstawiony zestaw reguł. Ostatecznie wartość tej zmiennej wynosi –0,00962, co powoduje nieznaczne zamknięcie zaworu doprowadzającego wodę.
W PRAKTYCE: RSLOGIX5000 FUZZYDESIGNER
Na rys. 4 przedstawiony został kompletny schemat systemu sterowania zrealizowany przy użyciu oprogramowania RSLogix 5000 FuzzyDesigner. Jest to aplikacja, która umożliwia zaprogramowanie sterowników z rodziny Allen-Bradley Logix. FuzzyDesigner zawiera bibliotekę elementów, które pozwalają zaprojektować kompleksowy system sterowania z wykorzystaniem logiki rozmytej. Hierarchiczna struktura pozwala projektantowi podzielić złożony system sterowania na mniejsze i mniej skomplikowane części.
W ten sposób można uprościć proces projektowania, co umożliwia na lepszą kontrolę poprawności działania systemu. FuzzyDesigner oferuje również kilka metod analizy systemów sterowania z logiką rozmytą. Dostępne są m.in. grafiki 2D i 3D oraz tryb symulacji, który pozwala na analizę wpływu poszczególnych wartości zmiennych. Innym udogodnieniem oferowanym przez to oprogramowanie jest możliwość eksportowania projektu systemu sterowania. Służy do tego funkcja Add-On Instruction (AOI) (rys.5). Pozwala ona na zapis projektu w taki sposób, że może on zostać odtworzony i zmodyfikowany w dowolnym języku programowania, np. drabinkowym, lub udostępniony przez Internet.
Monika Jaworowska